pax_global_header00006660000000000000000000000064122031435350014510gustar00rootroot0000000000000052 comment=4071eeec04facaabdc4c0576fe11659887bb50ed tiemu-3.03-nogdb+dfsg/000077500000000000000000000000001220314353500145665ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/ABOUT-NLS000066400000000000000000002333401220314353500160220ustar00rootroot000000000000001 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. 1.1 Quick configuration advice ============================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. 1.2 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the included GNU `gettext' library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will, respectively, bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might not be desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages usually have many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.3 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. 1.4 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.5 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of October 2006. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo +----------------------------------------------------+ GNUnet | [] | a2ps | [] [] [] [] [] | aegis | () | ant-phone | () | anubis | [] | ap-utils | | aspell | [] [] [] [] [] | bash | [] [] [] | batchelor | [] | bfd | | bibshelf | [] | binutils | [] | bison | [] [] | bison-runtime | | bluez-pin | [] [] [] [] [] | cflow | [] | clisp | [] [] | console-tools | [] [] | coreutils | [] [] [] | cpio | | cpplib | [] [] [] | cryptonit | [] | darkstat | [] () [] | dialog | [] [] [] [] [] [] | diffutils | [] [] [] [] [] [] | doodle | [] | e2fsprogs | [] [] | enscript | [] [] [] [] | error | [] [] [] [] | fetchmail | [] [] () [] | fileutils | [] [] | findutils | [] [] [] | flex | [] [] [] | fslint | [] | gas | | gawk | [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] | gimp-print | [] [] [] [] | gip | [] | gliv | [] | glunarclock | [] | gmult | [] [] | gnubiff | () | gnucash | () () [] | gnucash-glossary | [] () | gnuedu | | gnulib | [] [] [] [] [] [] | gnunet-gtk | | gnutls | | gpe-aerial | [] [] | gpe-beam | [] [] | gpe-calendar | | gpe-clock | [] [] | gpe-conf | [] [] | gpe-contacts | | gpe-edit | [] | gpe-filemanager | | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] | gpe-package | | gpe-sketchbook | [] [] | gpe-su | [] [] | gpe-taskmanager | [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | | gphoto2 | [] [] [] [] | gprof | [] [] | gpsdrive | () () | gramadoir | [] [] | grep | [] [] [] [] [] [] | gretl | | gsasl | | gss | | gst-plugins | [] [] [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | () | gtkam | [] [] [] | gtkorphan | [] [] | gtkspell | [] [] [] [] | gutenprint | [] | hello | [] [] [] [] [] | id-utils | [] [] | impost | | indent | [] [] [] | iso_3166 | [] [] | iso_3166_2 | | iso_4217 | [] | iso_639 | [] [] | jpilot | [] | jtag | | jwhois | | kbd | [] [] [] [] | keytouch | | keytouch-editor | | keytouch-keyboa... | | latrine | () | ld | [] | leafpad | [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] | libextractor | [] | libgpewidget | [] [] [] | libgpg-error | [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | | libiconv | [] [] | libidn | [] [] | lifelines | [] () | lilypond | [] | lingoteach | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | [] | make | [] [] | man-db | [] () [] [] | minicom | [] [] [] | mysecretdiary | [] [] | nano | [] [] [] | nano_1_0 | [] () [] [] | opcodes | [] | parted | | pilot-qof | [] | psmisc | [] | pwdutils | | python | | qof | | radius | [] | recode | [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] [] [] [] [] [] | sed | [] [] [] | sh-utils | [] [] | shared-mime-info | [] [] [] [] | sharutils | [] [] [] [] [] [] | shishi | | silky | | skencil | [] () | sketch | [] () | solfege | | soundtracker | [] [] | sp | [] | stardict | [] | system-tools-ba... | [] [] [] [] [] [] [] [] [] | tar | [] | texinfo | [] [] [] | textutils | [] [] [] | tin | () () | tp-robot | [] | tuxpaint | [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] | vorbis-tools | [] [] [] [] | wastesedge | () | wdiff | [] [] [] [] | wget | [] [] | xchat | [] [] [] [] [] [] | xkeyboard-config | | xpad | [] [] | +----------------------------------------------------+ af am ar az be bg bs ca cs cy da de el en en_GB eo 10 0 1 2 9 22 1 42 41 2 60 95 16 1 17 16 es et eu fa fi fr ga gl gu he hi hr hu id is it +--------------------------------------------------+ GNUnet | | a2ps | [] [] [] () | aegis | | ant-phone | [] | anubis | [] | ap-utils | [] [] | aspell | [] [] [] | bash | [] [] [] | batchelor | [] [] | bfd | [] | bibshelf | [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] | cflow | [] | clisp | [] [] | console-tools | | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | cpplib | [] [] | cryptonit | [] | darkstat | [] () [] [] [] | dialog | [] [] [] [] [] [] [] [] | diffutils | [] [] [] [] [] [] [] [] [] | doodle | [] [] | e2fsprogs | [] [] [] | enscript | [] [] [] | error | [] [] [] [] [] | fetchmail | [] | fileutils | [] [] [] [] [] [] | findutils | [] [] [] [] | flex | [] [] [] | fslint | [] | gas | [] [] | gawk | [] [] [] [] | gbiff | [] | gcal | [] [] | gcc | [] | gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] | gip | [] [] [] | gliv | () | glunarclock | [] [] [] | gmult | [] [] [] | gnubiff | () () | gnucash | () () () | gnucash-glossary | [] [] | gnuedu | [] | gnulib | [] [] [] [] [] [] [] [] | gnunet-gtk | | gnutls | | gpe-aerial | [] [] | gpe-beam | [] [] | gpe-calendar | | gpe-clock | [] [] [] [] | gpe-conf | [] | gpe-contacts | [] [] | gpe-edit | [] [] [] [] | gpe-filemanager | [] | gpe-go | [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] [] [] | gpe-package | [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | gpsdrive | () () [] () | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] [] [] [] [] | gretl | [] [] [] | gsasl | [] [] | gss | [] | gst-plugins | [] [] [] | gst-plugins-base | [] [] | gst-plugins-good | [] [] [] | gstreamer | [] [] [] | gtick | [] | gtkam | [] [] [] [] | gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] | gutenprint | [] | hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] [] | impost | [] [] | indent | [] [] [] [] [] [] [] [] [] [] | iso_3166 | [] [] [] | iso_3166_2 | [] | iso_4217 | [] [] [] [] | iso_639 | [] [] [] [] [] | jpilot | [] [] | jtag | [] | jwhois | [] [] [] [] [] | kbd | [] [] | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | latrine | [] [] [] | ld | [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] | libextractor | [] | libgpewidget | [] [] [] [] [] | libgpg-error | | libgphoto2 | [] [] [] | libgphoto2_port | [] [] | libgsasl | [] [] | libiconv | [] [] | libidn | [] [] | lifelines | () | lilypond | [] | lingoteach | [] [] [] | lynx | [] [] [] | m4 | [] [] [] [] | mailutils | [] [] | make | [] [] [] [] [] [] [] [] | man-db | () | minicom | [] [] [] [] | mysecretdiary | [] [] [] | nano | [] [] [] [] [] [] | nano_1_0 | [] [] [] [] [] | opcodes | [] [] [] [] | parted | [] [] [] [] | pilot-qof | | psmisc | [] [] [] | pwdutils | | python | | qof | [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] | sed | [] [] [] [] [] | sh-utils | [] [] [] [] [] [] [] | shared-mime-info | [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] [] [] | shishi | | silky | [] | skencil | [] [] | sketch | [] [] | solfege | [] | soundtracker | [] [] [] | sp | [] | stardict | [] | system-tools-ba... | [] [] [] [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] | textutils | [] [] [] [] [] | tin | [] () | tp-robot | [] [] [] [] | tuxpaint | [] [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux | [] [] [] [] [] [] [] | vorbis-tools | [] [] | wastesedge | () | wdiff | [] [] [] [] [] [] [] [] | wget | [] [] [] [] [] [] [] [] | xchat | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | xpad | [] [] [] | +--------------------------------------------------+ es et eu fa fi fr ga gl gu he hi hr hu id is it 88 22 14 2 40 115 61 14 1 8 1 6 59 31 0 52 ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no +-------------------------------------------------+ GNUnet | | a2ps | () [] [] () | aegis | () | ant-phone | [] | anubis | [] [] [] | ap-utils | [] | aspell | [] [] | bash | [] | batchelor | [] [] | bfd | | bibshelf | [] | binutils | | bison | [] [] [] | bison-runtime | [] [] [] | bluez-pin | [] [] [] | cflow | | clisp | [] | console-tools | | coreutils | [] | cpio | | cpplib | [] | cryptonit | [] | darkstat | [] [] | dialog | [] [] | diffutils | [] [] [] | doodle | | e2fsprogs | [] | enscript | [] | error | [] | fetchmail | [] [] | fileutils | [] [] | findutils | [] | flex | [] [] | fslint | [] [] | gas | | gawk | [] [] | gbiff | [] | gcal | | gcc | | gettext-examples | [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | gimp-print | [] [] | gip | [] [] | gliv | [] | glunarclock | [] [] | gmult | [] [] | gnubiff | | gnucash | () () | gnucash-glossary | [] | gnuedu | | gnulib | [] [] [] [] | gnunet-gtk | | gnutls | | gpe-aerial | [] | gpe-beam | [] | gpe-calendar | [] | gpe-clock | [] [] [] | gpe-conf | [] [] | gpe-contacts | [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] | gpe-go | [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | [] | gphoto2 | [] [] | gprof | | gpsdrive | () () () | gramadoir | () | grep | [] [] [] [] | gretl | | gsasl | [] | gss | | gst-plugins | [] | gst-plugins-base | | gst-plugins-good | [] | gstreamer | [] | gtick | | gtkam | [] | gtkorphan | [] | gtkspell | [] [] | gutenprint | | hello | [] [] [] [] [] [] | id-utils | [] | impost | | indent | [] [] | iso_3166 | [] | iso_3166_2 | [] | iso_4217 | [] [] [] | iso_639 | [] [] | jpilot | () () () | jtag | | jwhois | [] | kbd | [] | keytouch | [] | keytouch-editor | | keytouch-keyboa... | | latrine | [] | ld | | leafpad | [] [] | libc | [] [] [] [] [] | libexif | | libextractor | | libgpewidget | [] | libgpg-error | | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | | libidn | [] [] | lifelines | [] | lilypond | | lingoteach | [] | lynx | [] [] | m4 | [] [] | mailutils | | make | [] [] [] | man-db | () | minicom | [] | mysecretdiary | [] | nano | [] [] [] | nano_1_0 | [] [] [] | opcodes | [] | parted | [] [] | pilot-qof | | psmisc | [] [] [] | pwdutils | | python | | qof | | radius | | recode | [] | rpm | [] [] | screem | [] | scrollkeeper | [] [] [] [] | sed | [] [] | sh-utils | [] [] | shared-mime-info | [] [] [] [] [] | sharutils | [] [] | shishi | | silky | [] | skencil | | sketch | | solfege | | soundtracker | | sp | () | stardict | [] [] | system-tools-ba... | [] [] [] [] | tar | [] [] [] | texinfo | [] [] [] | textutils | [] [] [] | tin | | tp-robot | [] | tuxpaint | [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] | vorbis-tools | [] | wastesedge | [] | wdiff | [] [] | wget | [] [] | xchat | [] [] [] [] | xkeyboard-config | [] | xpad | [] [] [] | +-------------------------------------------------+ ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no 52 24 2 2 1 3 0 2 3 21 0 15 1 97 5 1 nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta +------------------------------------------------------+ GNUnet | | a2ps | () [] [] [] [] [] [] | aegis | () () | ant-phone | [] [] | anubis | [] [] [] | ap-utils | () | aspell | [] [] | bash | [] [] [] | batchelor | [] [] | bfd | | bibshelf | [] | binutils | [] [] | bison | [] [] [] [] [] | bison-runtime | [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] [] | cflow | [] | clisp | [] | console-tools | [] | coreutils | [] [] [] [] | cpio | [] [] [] | cpplib | [] | cryptonit | [] [] | darkstat | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | diffutils | [] [] [] [] [] [] | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] [] | error | [] [] [] [] | fetchmail | [] [] [] | fileutils | [] [] [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] [] [] | fslint | [] [] [] [] | gas | | gawk | [] [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | gimp-print | [] [] | gip | [] [] [] [] | gliv | [] [] [] [] | glunarclock | [] [] [] [] [] [] | gmult | [] [] [] [] | gnubiff | () | gnucash | () [] | gnucash-glossary | [] [] [] | gnuedu | | gnulib | [] [] [] [] [] | gnunet-gtk | [] | gnutls | [] [] | gpe-aerial | [] [] [] [] [] [] [] | gpe-beam | [] [] [] [] [] [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] [] [] [] [] | gpe-conf | [] [] [] [] [] [] [] | gpe-contacts | [] [] [] [] [] | gpe-edit | [] [] [] [] [] [] [] [] | gpe-filemanager | [] [] | gpe-go | [] [] [] [] [] [] | gpe-login | [] [] [] [] [] [] [] [] | gpe-ownerinfo | [] [] [] [] [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] [] [] [] [] [] | gpe-su | [] [] [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] [] | gpe-todo | [] [] [] [] | gphoto2 | [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] | gretl | [] | gsasl | [] [] [] | gss | [] [] [] | gst-plugins | [] [] [] [] | gst-plugins-base | [] | gst-plugins-good | [] [] [] [] | gstreamer | [] [] [] | gtick | [] | gtkam | [] [] [] [] | gtkorphan | [] | gtkspell | [] [] [] [] [] [] [] [] | gutenprint | [] | hello | [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | impost | [] | indent | [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] [] [] [] | iso_639 | [] [] [] [] | jpilot | | jtag | [] | jwhois | [] [] [] [] | kbd | [] [] [] | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | latrine | [] [] | ld | [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] | libextractor | [] [] | libgpewidget | [] [] [] [] [] [] [] | libgpg-error | [] [] | libgphoto2 | [] | libgphoto2_port | [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] | libidn | [] [] () | lifelines | [] [] | lilypond | | lingoteach | [] | lynx | [] [] [] | m4 | [] [] [] [] [] | mailutils | [] [] [] [] | make | [] [] [] [] | man-db | [] [] | minicom | [] [] [] [] [] | mysecretdiary | [] [] [] [] | nano | [] [] [] | nano_1_0 | [] [] [] [] | opcodes | [] [] | parted | [] | pilot-qof | [] | psmisc | [] [] | pwdutils | [] [] | python | | qof | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | rpm | [] [] [] [] | screem | | scrollkeeper | [] [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] [] | sh-utils | [] [] [] | shared-mime-info | [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] | silky | [] | skencil | [] [] [] | sketch | [] [] [] | solfege | [] | soundtracker | [] [] | sp | | stardict | [] [] [] | system-tools-ba... | [] [] [] [] [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] [] | tin | () | tp-robot | [] | tuxpaint | [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] | vorbis-tools | [] [] | wastesedge | | wdiff | [] [] [] [] [] [] | wget | [] [] [] [] | xchat | [] [] [] [] [] [] [] | xkeyboard-config | [] [] | xpad | [] [] [] | +------------------------------------------------------+ nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta 0 2 3 58 30 54 5 73 72 4 40 46 11 50 128 2 tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu +---------------------------------------------------+ GNUnet | [] | 2 a2ps | [] [] [] | 19 aegis | | 0 ant-phone | [] [] | 6 anubis | [] [] [] | 11 ap-utils | () [] | 4 aspell | [] [] [] | 15 bash | [] | 11 batchelor | [] [] | 9 bfd | | 1 bibshelf | [] | 7 binutils | [] [] [] | 9 bison | [] [] [] | 19 bison-runtime | [] [] [] | 15 bluez-pin | [] [] [] [] [] [] | 28 cflow | [] [] | 5 clisp | | 6 console-tools | [] [] | 5 coreutils | [] [] | 16 cpio | [] [] [] | 9 cpplib | [] [] [] [] | 11 cryptonit | | 5 darkstat | [] () () | 15 dialog | [] [] [] [] [] | 30 diffutils | [] [] [] [] | 28 doodle | [] | 6 e2fsprogs | [] [] | 10 enscript | [] [] [] | 16 error | [] [] [] [] | 18 fetchmail | [] [] | 12 fileutils | [] [] [] | 18 findutils | [] [] [] | 17 flex | [] [] | 15 fslint | [] | 9 gas | [] | 3 gawk | [] [] | 15 gbiff | [] | 5 gcal | [] | 5 gcc | [] [] [] | 6 gettext-examples | [] [] [] [] [] [] | 27 gettext-runtime | [] [] [] [] [] [] | 28 gettext-tools | [] [] [] [] [] | 19 gimp-print | [] [] | 12 gip | [] [] | 12 gliv | [] [] | 8 glunarclock | [] [] [] | 15 gmult | [] [] [] [] | 15 gnubiff | [] | 1 gnucash | () | 2 gnucash-glossary | [] [] | 9 gnuedu | [] | 2 gnulib | [] [] [] [] [] | 28 gnunet-gtk | | 1 gnutls | | 2 gpe-aerial | [] [] | 14 gpe-beam | [] [] | 14 gpe-calendar | [] | 3 gpe-clock | [] [] [] [] | 21 gpe-conf | [] [] | 14 gpe-contacts | [] [] | 10 gpe-edit | [] [] [] [] | 20 gpe-filemanager | [] | 6 gpe-go | [] [] | 15 gpe-login | [] [] [] [] [] | 21 gpe-ownerinfo | [] [] [] [] | 21 gpe-package | [] | 6 gpe-sketchbook | [] [] | 16 gpe-su | [] [] [] | 20 gpe-taskmanager | [] [] [] | 20 gpe-timesheet | [] [] [] [] | 18 gpe-today | [] [] [] [] [] | 21 gpe-todo | [] | 7 gphoto2 | [] [] [] [] | 20 gprof | [] [] | 11 gpsdrive | | 4 gramadoir | [] | 7 grep | [] [] [] [] | 34 gretl | | 4 gsasl | [] [] | 8 gss | [] | 5 gst-plugins | [] [] [] | 15 gst-plugins-base | [] [] [] | 9 gst-plugins-good | [] [] [] [] [] | 20 gstreamer | [] [] [] | 17 gtick | [] | 3 gtkam | [] | 13 gtkorphan | [] | 7 gtkspell | [] [] [] [] [] [] | 26 gutenprint | | 3 hello | [] [] [] [] [] | 37 id-utils | [] [] | 14 impost | [] | 4 indent | [] [] [] [] | 25 iso_3166 | [] [] [] [] | 16 iso_3166_2 | | 2 iso_4217 | [] [] | 14 iso_639 | [] | 14 jpilot | [] [] [] [] | 7 jtag | [] | 3 jwhois | [] [] [] | 13 kbd | [] [] | 12 keytouch | [] | 4 keytouch-editor | | 2 keytouch-keyboa... | [] | 3 latrine | [] [] | 8 ld | [] [] [] [] | 8 leafpad | [] [] [] [] | 23 libc | [] [] [] | 23 libexif | [] | 4 libextractor | [] | 5 libgpewidget | [] [] [] | 19 libgpg-error | [] | 4 libgphoto2 | [] | 8 libgphoto2_port | [] [] [] | 11 libgsasl | [] | 8 libiconv | [] | 7 libidn | [] [] | 10 lifelines | | 4 lilypond | | 2 lingoteach | [] | 6 lynx | [] [] [] | 15 m4 | [] [] [] | 18 mailutils | [] | 8 make | [] [] [] | 20 man-db | [] | 6 minicom | [] | 14 mysecretdiary | [] [] | 12 nano | [] [] | 17 nano_1_0 | [] [] [] | 18 opcodes | [] [] | 10 parted | [] [] [] | 10 pilot-qof | [] | 3 psmisc | [] | 10 pwdutils | [] | 3 python | | 0 qof | [] | 4 radius | [] | 6 recode | [] [] [] | 25 rpm | [] [] [] [] | 14 screem | [] | 2 scrollkeeper | [] [] [] [] | 26 sed | [] [] [] | 22 sh-utils | [] | 15 shared-mime-info | [] [] [] [] | 24 sharutils | [] [] [] | 23 shishi | | 1 silky | [] | 4 skencil | [] | 7 sketch | | 6 solfege | | 2 soundtracker | [] [] | 9 sp | [] | 3 stardict | [] [] [] [] | 11 system-tools-ba... | [] [] [] [] [] [] [] | 37 tar | [] [] [] [] | 20 texinfo | [] [] [] | 15 textutils | [] [] [] | 17 tin | | 1 tp-robot | [] [] [] | 10 tuxpaint | [] [] [] | 16 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux | [] [] [] | 20 vorbis-tools | [] [] | 11 wastesedge | | 1 wdiff | [] [] | 22 wget | [] [] [] | 19 xchat | [] [] [] [] | 29 xkeyboard-config | [] [] [] [] | 11 xpad | [] [] [] | 14 +---------------------------------------------------+ 77 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu 170 domains 0 1 1 77 39 0 136 10 1 48 5 54 0 2028 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If October 2006 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. 1.6 Using `gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to the translation teams. tiemu-3.03-nogdb+dfsg/AUTHORS000066400000000000000000000033451220314353500156430ustar00rootroot00000000000000The TiEmu project is managed by the TiEmu team. The TiEmu team includes the following people: !!! For problems, questions, ... use the TiEmu mailing list: . Don't mail authors directly !!! Romain Lievin (roms): main developer, Win32 port ================================================ web: http://lpg.ticalc.org mail: roms@lievin.net Julien Blache (jb): GTK2 upgrade of TiEmu-I =========================================== web: http://jblache.org mail: jb@jblache.org Kevin Kofler (kkofler): gdb integration, fixed and patches ========================================================== web: http://tigcc.ticalc.org mail: Kevin@tigcc.ticalc.org Christian Walther (cw): Mac OS-X port ===================================== web: ?? mail: cwalther@gmx.ch Jaime Fernando Meza Meza (jf): icon & skin design ================================================= web: ? mail: jaimezacalcs@yahoo.com Packagers: ========== - Julien Blache : Linux/Debian - Romain Lievin : Win32 - Kevin Kofler : Linux/Fedora ? All the others who have contributed to ====================================== Some contributions have been brought about this software by people: - code: Kevin Kofler - help: Olivier Armand and Lionel Debroux - pedrom: Patrick Pelissier - logo: hibou (real name ?) *------------ Previous releases ----------------* Roms aka Romain Lievin web: http://www.lievin.net mail: roms@lievin.net Tom aka Thomas Corvazier web: http://lpg.ticalc.org/prj_tiemu mail: corvazier@yahoo.com The libti68k library is based on the Jonas Minnberg's emulator named (X)Tiger. He has recently released its emulator under GPL licence. See the LICENSES file for more informations.tiemu-3.03-nogdb+dfsg/BUGS000066400000000000000000000033241220314353500152530ustar00rootroot00000000000000List of known bugs to fix: SF.net's bug list ================= 2489443 Screen Elements Ignored by TiEmu 1891657 TiEmu can't find glib-2.0-0.dll from Glib 2.14.3 1649068 Keyboard layout under Linux 1569553 pc-TiEmu link 1555602 Missed key presses w/ TabletPC Stylus 1305067 "busy" flickers 1249087 Key mapping failed Kevin ===== * Il y a un bogue avec le débogueur et les touches: prends un AMS 2.0x ou 3.0x, mets un breakpoint sur le trap #11, lance un programme ASM (même Exec "4e750000" suffit), quitte le débogueur, appuie sur n'importe quelle touche, il réagit comme si c'était ENTER. Seulement après avoir désactivé le BP sur le trap 11 et appuyé sur ENTER une autre fois, TiEmu reprend son comportement normal. Ce problème est apparemment causée par le fait qu'une touche (ENTER) est appuyée au moment où on entre dans le débogueur. (Le BP sur le trap 11 s'active au moment où ENTER est encore appuyé.) * transferts lents Lionel ====== * Un bug bizarre, dont les instructions de reproduction semblent être: * utiliser un AMS "récent" (2.07+), sur une 92+ ou V200 (peut-être 89 aussi ?). * aller dans la fenêtre de debug, partie sélection des ROM_CALLs, sélectionner l'un d'entre eux (_bcd_math par exemple). * passer à un AMS 2.05 (testé: ROM dump de 89 avec certificate). * aller dans la fenêtre de debug: TIEmu est parti dans le décor, je ne sais pas s'il exécute ou pas roms ==== * MOVEA.W dis-assembled as MOVEA.L (HeapDeref) * pressing Ctrl+Alt+Supp makes emu unresponsive. Press Ctrl again. * CPU consumption may be high folco ===== * debugger crash when double-clicking stack value (http://yaronet.com/posts.php?s=115405) ------------- + done - in progress * to do... tiemu-3.03-nogdb+dfsg/COPYING000066400000000000000000000431231220314353500156240ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111 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 Appendix: 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) 19yy 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 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) 19yy 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. tiemu-3.03-nogdb+dfsg/ChangeLog000066400000000000000000002016411220314353500163440ustar00rootroot00000000000000SubVersion: $Id: ChangeLog 2842 2009-05-29 14:04:35Z roms $ - 12/02/2008, version 3.03: - [kevin] $2765: fixed crash when debugging TIGCC program with GDB with low-level debugger in dock mode - [kevin] $2766: fixed dock window enabling/disabling not to keep the engine running across the restart - [roms] $2768: fixed InnoSetup installer for use with GTK>=2.10.x - [roms] $2771: don't allow deleting of last RAM tab to avoid resizing of code/dock window - [kevin] $2773: fixed build with GCC 4.3 - [roms] $2781: don't shutdown screen when reading battery status (lionel) - [roms] $2782: don't resize code windows whenever cycle counter change - [roms] $2783: fixed disassembling of some FLINE instructions like 0xf800 (lionel) - [roms] $2784: fixed disassembling of BTST instruction (replaced by BRA) - [kevin] $2793: fixed keynames.c build on OS X - [kevin] $2794: link with g++ if --with-kde (fixes --with-kde build on OS X) - [kevin] $2797: fixed use of wrong free function (g_free where gtk_tree_path_free is required) causing crash with GTK+ 2.14 - [kevin] $2798: fixed builtin Tk not working when built against the latest X.Org X11 (Tk bug 2010422) - [roms] $2815: merged Lionel's patch about link logging: adding CR/LF every 16 chars; take into account buffer overflow - [roms] $2816: really clears link logging buffer when clicking the 'Clear' button - [roms] $2820: removed obsolete virtual link cable - [roms] $2821: merged Lionel's patch: allow mix-up of images created by TiEmu 32-bits and TiEmu 64-bits due to a bug in IMG_INFO structure - [roms] $2824: fixed Lionel's logging problem (missing values on linkport output due to a bad use of External Activity flag in linkport support) - [roms] $2826: added i18n support to some strings - [roms] $2827: fixed "libticables2 access violation" which appears when changing the link cable under some circumstances; due to random access on uninitialized dbus function pointers - [roms] $2829: allow automatic changing of link cable setting when requesting a direct file transfer - [roms] $2832: don't allow launching of debugger if preloading has not finished yet - [kevin] $2833: fix the "Default" button when importing a Titanium 89u (default to HW3 until we sort out HW4's actual speed, not HW2) - [roms] $2836: upgraded deprecated GTK+ code - [roms] $2838: if link cable reconfiguring fails, fallback to null cable & port - [roms] $2839: merged Lionel's patch: fix buffer overflow in the disasm routine - 16/09/2007, version 3.02: - [roms] $2646: screenshots can be copied into the clipboard - [roms] $2649: use fixed fonts for release and manpage dboxes - [roms] $2652: removed old GTK file selector because being deprecated with GTK+ 2.12 - [roms] $2653: added accelerator key: F6 in code window - [roms] $2654: added accelerator key: +/- in memory window - [kevin] $2656: fixed dirname+filename concatenation for KDE file selector - [kevin] $2657: fixed build with GTK+ 2.12 - [roms] $2658: dual-click in register window select the whole register value now; re-enabled popup menu (go to address). - [roms] $2659: mapped both CTRL keys to Diamond & both SHIFT keys to 2nd - [roms] $2660: added a popup menu with "View _memory" on any debugger window - [roms] $2661: unified displaying of hexadecimal values (removed '$' and ''0x' heading chars) in boxes - [roms] $2662: suppress leading zeros like VTi does - [roms] $2663: some instructions (trap, rts, reset...) was suffixed with .L which is not needed - [roms] $2664: fixed wrong disassembly offset of MOVEM.L instruction - [roms] $2665: fixed disassembly of MOVEP instruction - [roms] $2666: fixed disassembly of MOVEQ instruction - [roms] $2667: fixed disassembly of ori/andi/eori, addi/subi/cmpi, lea/rts instructions - [roms] $2668: fixed disassembly of BT.W and changed BT into BRA - [roms] $2669: added accelerator keys (F1..F8) in memory window - [roms] $2670: map numerical ENTER key to TIKEY_ENTER on ti89, too - [roms] $2672: moved UAE disassembler into disasm.c file - [roms] $2673: unified displaying of hexadecimal values in the disassembler('$', '[' and '==' heading chars); displayed offset as signed values - [roms] $2674: display "($42,a3),a3" instead of "(a3,$42),a3)" in disassembler - [roms] $2675: reject computed value [%lX] at end of line rather than in the middle of the instruction - [roms] $2676: in the bkpts window, the fifth toolbar button (go to address) is not restricted to code breakpoint any longer; it works on any breakpoint type. - [roms] $2678: replaced currently selected instruction in code windows by an icon (arrow) - [roms] $2679: reverted back rev. $2672 (disasm => UAE) and rev. $2668 (BRA => BT) - [roms] $2680: allow to change the font used in every debugger windows - [roms] $2681: fixed disassembly of ori/andi/eori, addi/subi/cmpi, moveq/addq/subq instructions in the UAE engine itself - [roms] $2682: optimized m68k-disasm front-end - [roms] $2683: fixed "movem.l #$unreadable_mask" - [kevin] $2685: fixed makeinfo version check in GDB - [kevin] $2686: fixed longjmp out of gtk_main in the engine in the GDB-enabled version which triggered an assert with GLib 2.14 - [kevin] $2689: fixed relocation of debugging information for kernel-based programs - [roms] $2704-2710: added debugging dock and option to choose between multi-window and dock - [roms] $2712: fixed one-shot breakpoints which was not displayed any longer - [roms] $2713: fixed old bug: the bkpt context displayed in the status bar is not erased when the debugger exits - [roms] $2718: fixed bug: one-shot breakpoint was never raised - [roms] $2719: fixed bug: gtk warning when opening popup menu while being in debugger - [kevin] $2721: don't show Insight's GDB console by default - [roms] $2722: decreased vertical space between cells to make window more compact - [roms] $2724: fixed keeping of previous folder with the multiple file selector (e.g. Send File) - [roms] $2728: removed ugly hack(s) in the code window (no V scrollbar any longer but shrinking allowed now) - [roms] $2729: fixed calculator window aspect ratio when used with no skin - [roms] $2730: fixed reloading of aspect ratio from tiemu.ini file - [roms] $2731: removed annoying tooltip in the calculator window - [kevin] $2733: fixed pclog_ptr handling not to overflow (fixes buffer underflow crashing TiEmu during long sessions) - [roms] $2734: memory window uses courier font when no font is selected (restored previous behaviour) - [roms] $2735: commit font change to all of the debugger windows - [roms] $2737: added accelerator keys to toggle sr flags in the regs window - [roms] $2738: register window uses courier font when no font is selected (restored previous behaviour) - [roms] $2744: (try and) fix bug about management of AI3 on HW2 under TiEmu - [kevin] $2750: made the "Clear RAM?" dialog box for "Reset calc" more intuitive - [kevin] $2753: added support for the alternate (KDE/M$) button order => released on 10/01/2008 - 07/09/2007, version 3.01b: - re-released due to missing USB drivers (libusb0.dll) => released on 07/09/2007 - 03/09/2007, version 3.01a: - re-released due to missing file in Windows Installer (dhahelper.sys) - includes latest ticables2 library with USB polling support - [kevin] $2642: fixed bit toggling in register window => released on 04/09/2007 - 20/06/2007, version 3.01: $2556: Merged changes from tiemu-3-sound branch: - [hypersonic] $2509-2513: implemented low-level SDL code for sound emulation - [kevin] $2515: added configure checks for SDL and --disable-sound configure option - [kevin] $2520: added "Emulate sound" checkbox to the popup menu - [kevin] $2527: cleaned up time handling (using gettimeofday everywhere, Win32 implementation taken from kdewin32, not incorrectly attempting to measure wall clock time with clock() anymore) - [kevin] $2531: filter out yet another junk parameter (LIBS=...) passed to subdir configure from yet another autoconf version upgrade (2.61) (fixes MinGW build with regenerated configure) - [kevin] $2537: implemented sound emulation in the CPU emulation loop - [kevin] $2538: only define _GNU_SOURCE in src/core/uae/sysdeps.h if not already defined Note: trunk forked into tiemu-3-sound branch at rev. $2507 - [roms] $2571: changed some function names (sound emulation) to follow TiEmu function naming scheme - [roms] $2572: changed one function in dbus.c to follow ticonv API changes. Major number requirements updated consequently. - [roms] $2591: speed-up displaying of code window by populating ROM calls early - [kevin] $2596: fixed coordinate saving for Win32 multi-monitor case - [kevin] $2598: fixed KDE path detection for multilib systems with both 32-bit and 64-bit libraries installed - [roms] $2600: clear _all_ bkpts in ti68k_bkpt_clear_all - [roms] $2601: added support for breakpoints on bit changes - [roms] $2602: data/bit change breakpoint is raised after instruction execution so fixed disassembly window to show one line before current PC. - [roms] $2603: fixed wrong disassembly offset of MOVEM.W instruction - [roms] $2604: optimized some refreshing parts of debugging windows; added refresh of heap window - [roms] $2611: optimized displaying of code window by refreshing ROM calls just once - [kevin] $2620: made zlib non-optional now that libtifiles2 requires it anyway - [roms] $2624: allow double-clicking of a ROM instead of selecting + pressing OK button - [kevin] $2629: fixed GDB build with the upcoming glibc 2.7 (patch from Fedora GDB by Jan Kratochvil) - [roms] $2630: added ability to send file from command line => released on 29/08/2007 - 16/03/2007, version 3.00 - [kevin] $2389: don't use \n in the breakpoint window status bar - [kevin] $2390: fixed default hardware version for Voyage 200 - [roms] $2409: added KDE desktop files & associations - [roms] $2415: allow to load saved states by DnD - [roms] $2417: allow to directly load ROM/TIB/SAV files from command line; maintained compatibility with older switches - [roms] $2420: fixed bug introduced in $2417 - [roms] $2421: fixed double-free when DnD files to send - [kevin] $2422: fixed errors (wrong case) in ROM_CALL list and added 2 new entries from TIGCC - [kevin] $2424: don't disassemble instructions invalid for the 68000 - [kevin] $2425: fixed handling of 4-byte F-Line jumps - [roms] $2431: added memory map menu to the memory window - [roms] $2434: added key press recording/playing - [roms] $2440: fixed bug in the Infos box: display skin version according to SkinInfos structure - [kevin] $2451: fixed aliasing violations in Win32 file dialog code - [kevin] $2456: detect *-apple-darwin* as OS X, not just powerpc-apple-darwin* - [kevin] $2457: fixed --disable-gdb builds failing due to missing intl/Makefile - [kevin] $2459: fixed Win32 file dialogs not setting fname to NULL when returning NULL - [kevin] $2462: filter -s from CFLAGS/CXXFLAGS/LDFLAGS on Darwin - [kevin] $2485: OLE Automation: set ret to NULL if IUnknown::QueryInterface fails => released on 14/05/2007 - 09/02/2007, version 2.81e - [kevin] $2348: delete the temporary file instead of erroring if the user cancels the receive file dialog - [kevin] $2349: fixed progress bar refresh referencing freed memory (#1529247) - [roms] $2350: send a group file as group, not as backup (bug #1529247) - [kevin] $2356: imported Insight 6.6 and merged TiEmu changes - [kevin] $2360: regenerated oleaut_i.c with WIDL again, this time fixing the include directives so it actually compiles - [roms] $2363: added and enabled i18n support - [roms] $2368: replaced unused/deprecated printl system by GLib logging functions (part 1/2) - [roms] $2372: replaced any occurence of printl by a tiemu_warning() call (part 2/2) => released on 13/03/2007 - 11/12/2006, version 2.81d - [roms] $2321: store *.sav files in the images folder rather than polluting the application top folder - [roms] $2322: updated to use API changes of tifiles2 v1.0.3 - [kevin] $2335: fixed the Tcl/Tk code in Insight so it can be debugged with the TclPro debugger - [kevin] $2337: add xdg-open in front of the list of browsers - 07/08/2006, version 2.81c - [kevin] $2202: fixed g_free of invalid pointers in state.c (#1471709) - [kevin] $2203: fixed ticalcs_cable_detach of NULL calc_handle when exiting TiEmu early (reported by hypersonic) - [kevin] $2211: imported Insight 6.5 and intl directory from Binutils 2.17 and merged TiEmu changes quote file name for add_symbol_file properly for the new add_symbol_file command parser in GDB 6.5 - [roms] $2216: replaced some hand-made GTK+ user boxes by standard GTK+ ones (look better) - [kevin] $2219: regenerated oleaut_i.c with WIDL now that this is supported - [kevin] $2223: force serial make in src/Makefile.in because the weirdness of the gdb subdir make breaks parallel make - [roms] $2224: reverted back OLE changes in oleaut_i.c: break MSVC compilation - [roms] $2225: fixed signed/unsigned warnings with MSVC - [kevin] $2231: fixed get_folder_list_handle failing - [kevin] $2232: fixed canceling KDE file dialog causing an "invalid file" error - [roms] $2233: new feature: 'Link Log' dialog box (part 1/3) - [roms] $2234: factorized code: PC logging has been moved from Ti68kBreakpoints structure to Ti68kLogging one. Please note this doesn't affect the SAV_REVISION flag (part 2/3). - [roms] $2235: fill dialog box with log and save to file(part 3/3) - [roms] $2236: improved link logger (print data blocks rather than single bytes) - [kevin] $2243: created a D-Bus interface - [kevin] $2245: register a service name for the D-Bus interface - [kevin] $2246: don't check for unneeded aRts and KDE documentation generation executables (request from Gentoo #112985) - [kevin] $2250: don't call CoInitialize and CoUninitialize in oleaut.cpp, GTK+ already does this (to use input methods) - [kevin] $2251: reverted changes to support 8 MB FlashROM, as HW4 actually only has 4 MB - [roms] $2254: display handle id as hex and dec (O. Armand feature request) - [tyler] $2256: fixed title in the Image Creation Wizard (was titled TiEmu II, actually TiEmu 3) - [kevin] $2257: reenabled OLE interface (tested by Tyler) (NOTE: does NOT work in WINE) - [kevin] $2262: don't crash when attempting to load 8 MB images from old TiEmu - [kevin] $2264: use kde-config to locate KDE instead of hardcoded directories which were missing /usr/lib64 - [kevin] $2265: fix --enable-shared-itcl so the shared libitcl and libitk are built with -fPIC - [kevin] $2269: remove special-casing of __MACOSX__ from some include paths which shouldn't be needed - [kevin] $2270: fixed memory leaks in config file handling - [kevin] $2271: fixed about dialog not closing when Close is clicked with GTK+ 2.10 - [kevin] $2274: don't proceed to ROM image wizard step 3 if importing the image failed - [roms] $2276: GDK_WINDOW_TYPE_HINT_ was set to NORMAL instead of DIALOG. Very annoying because this makes the window appears in the top of all others. - [roms] $2278: fixed window resizing which was disabled (but note that Windows resizing is an ugly hack because gtk_window_set_hints does not work properly under Windows). - [roms] $2280: set 'Debug file with TiEmu' unsensitive when build in no-gdb mode - [roms] $2282: added 'quick send' feature in -gdb version. This allows to by-pass the file selection box. - [roms] $2298: fixed memory leak in scroptions (folder name was not freed) - [roms] $2299: make 'quick send' options persistent - [roms] $2300: make 'quick send' feature available in both versions. Popup menu reworked. - [roms] $2303: output a message about OLE (un)registration - [roms] $2308: added DnD support for changing skin, sending files and importing images => Released on 08/12/2006 - 07/07/2006, version 2.81b - [kevin] $2128: HW4 has 8 MB of FlashROM - [kevin] $2130: complete HW4 images to 8 MB - [kevin] $2136: fixed NULL dereference in filesel.c - [roms] $2140: added TiGroup file support (in sending only) - [roms] $2142: fixed wrong timeout value (2 variables, 1 (mis-)used) - [roms] $2143: clean-up and overhaul in the progress bars - [roms] $2144: updated to rely on ticalcs2 progress bars data-base - [roms] $2146: fixed updating of third pbar counter. Fixed use of ticalcs2 pbar database. - [kevin] $2147: don't crash DCOP client program when running reset_calc through DCOP with the debugger running - [kevin] $2153: fixed warnings in TiEmu patches to GDB - [kevin] $2154: fixed warnings, fixed UAE to detect 64-bit integer types under glibc, fixed is_varname - [kevin] $2155: fixed warnings in the assembly-level debugger - [kevin] $2156: fixed more warnings and a few file descriptor leaks - [kevin] $2159: fixed "TIGCC" and "ticalc.org" bookmarks to use the respective official spelling - [kevin] $2162: only run Qt event hook (processing GTK+ events) when currently displaying a modal dialog (fixes DCOP hang after reset_calc with debugger running, due to the infinite loop protection) - [kevin] $2162: disable "Debug file with TiEmu" when the debugger is running - [kevin] $2162: added Seamonkey to the browser list, suggest Firefox instead of the obsolete Mozilla Suite - [kevin] $2163: clear command line in execute_command - [kevin] $2164: changed DCOP/OLE ready_for_transfers to really check if the emulated calculator is ready - [kevin] $2166: fixed FlashROM identifiers so the HW4 8 MB FlashROM gets detected properly by AMS 3.10 - [kevin] $2168: fixed recfile crash when receiving something which is not a valid variable - [kevin] $2168: fixed ti68k_linkport_ready to reset the link so TiEmu doesn't try to receive a "file" sometimes - [roms] $2177: fixed invalid keyval mask in keyboard press event routine removed Gdk_Caps_Lock capture (already capture by TI keyboard) added accelator key: Pause => Screenshot Now! - [roms] $2178: allow to select target folder for screenshots - [roms] $2179: fixed bug #1435183 (Error window when closing TI emu) - [roms] $2190: added BMP screenshot support and fixed frame spacing - [roms] $2191: reworked screenshot option dbox and prepared next step - [roms] $2194: added ability to take several screenshots (burst mode) => Released on ??? - 10/05/2006, version 2.81: - [roms] $2059: renamed 'code/source' window into 'disassembly' - [roms] $2052: build a tiemu2-like release when NO_GDB is enabled - [roms] $2053: enable and use UAE disassembler when NO_GDB is enabled - [roms] $2060: modified UAE disassembler to follow Motorola syntax Used to provide a replacement of the tiemu2 disassembler (license issues). - [kevin] $2081: removed excess spaces in disassemblers - [kevin] $2090: added --disable-gdb configure option - [roms] $2096: fixed bug #1490859 (enable OK button when selecting an image) - [roms] $2097: fixed bug #1471709 (crash on old state image) - [kevin] $2102: increased buffer size for the RELEASE viewer - [kevin] $2115: fixed splash.c saying "TiLP" instead of "TiEmu", updated version in configure.ac - [kevin] $2116: allocate metadata properly in send_file_and_debug_info - [kevin] $2118: fixed Insight preferences dialogs - [roms] $2119: fixed linking with NO_GDB (missing xmalloc) - [roms] $2121: fixed return value in engine_func for NO_GDB mode (stop engine) - [kevin] $2123: reset source ID when stopping the engine from engine_func (NO_GDB) => Released on 28/05/2006. - 25/08/2005, version 2.80: - [roms] $1689: fixed Titanium skin loading and fixed bug in skin loader - [roms] $1692: re-enabled transient mode for windows - [roms] $1694: set transient mode as option - [kevin] $1695: merge changes from tigcc-debugging-branch: * integrate the GDB source debugger (command-line interface) * fix include paths for systems without BFD and readline installed * reenable the debugger if it has previously been disabled (by GDB) * integrate Insight, a graphical frontend for GDB * enable and fix Insight for MinGW (Win32) and Darwin (OS X) * force static linking for TCL-related stuff on OS X * don't chdir to $HOME (fixes Insight's path detection when running TiEmu using a relative path) * allow .dbg files with spaces in the pathname and/or filename * fix libintl detection (fixes --enable-nls builds on OS X at least) * don't allow resetting while the debugger is busy * new Windows installer based on NSIS: GTK+ is downloaded and installed automatically (after user confirmation) if needed * new Fedora (Core 4) RPMs * add XPM version (48x48) of Jaime Fernando Meza Meza's icon and use it for the Fedora .desktop file. * support for BSS section debugging (_nostub only at the moment, TIGCC 0.96 Beta 5 required) * avoid link port access when browsing memory in the Insight memory window as well (see $1588 below) * disable fvisibility support if --enable-shared or --enable-shared-* because it is currently broken - [kevin] $1705: import PedroM (ld-tigcc build) 0.81 RC8 - [kevin] $1707: fix handling of handles (don't interpret NULL as end of heap table, don't dereference H_NULL in loops) - [kevin] $1708: disable window grouping (transient mode) by default - [kevin] $1710: fix size of archived handles under PedroM - [kevin] $1711: bump version number (2.00->2.80) and GTK+ requirement in configure.ac (2.4.0->2.6.0, GTK+ 2.4 won't work since the addition of the new about window) - [kevin] $1712: install prebuilt Manpage.txt if groff is not available - [kevin] $1713: fix RELEASE window (MinGW path, say "TiEmu" instead of "TiLP", not automatically shown so don't say it is) - [kevin] $1717: fix RELEASE file to display properly (use ASCII, not Latin1 which is not valid UTF-8) - [kevin] $1718: don't remove last 2 bytes of RELEASE and COPYING (only Manpage.txt needs that) - [kevin] $1719: fix patch to install prebuilt Manpage.txt without groff so it also works with groff available (can't put conditional around install-data-local) - [roms] $1727: fix bug in direct link access - [roms] $1739: update HTML manual - [kevin] $1741: update version number in popup-2.glade - [kevin] $1742: fix FlashROM writes: can't set bits from 0 to 1 - [roms] $1744: fixed FlashReadLong & FlashWriteLong (long access is just 2 word accesses) - [roms] $1748: don't allow operations on state while the debugger is opened (bug item #1250175). - [roms] $1757: fixed v200 skin (blank LCD) - [kevin] $1763: fix HeapTable detection on PedroM 0.81 RC9 (use ROM_CALL instead of hack for PedroM >=0.81) - [kevin] $1764: import PedroM (ld-tigcc build) 0.81 RC9 - [roms] $1768: merge changes from tiemu-3-libti2 branch: * switched to the TiLP-II framework * updated the communication/device dialog box * added a new pseudo-cable (internal linkport) * modified tiemu.ini parser consequently * changed getw/putw into get_w/put_w due to name conflict with stdio.h. * SilverLink cable is now working for both Linux & Windows. - [kevin] $1771: update NSIS installer, tarball script and Fedora RPM specs, require GTK+ 2.6.10 in the NSIS installer - [roms] $1781: loading of ??u upgrades was broken: fixed. - [kevin] $1785: import PedroM (ld-tigcc build) 0.81 RC10 - [roms] $1788: don't overwrite file received from TiEmu. Raises a overwrite/rename/skip box for now (imported TiLP-II file management unit). - [kevin] $1792: allow closing the debugger by closing the Insight window ("X" button) - [roms] $1793: fixed bug: timeout can be up to 600 on win32 but the glade file allows up to 60. fixed timeout issues with the device dbox: internal linkport timeout is now displayed/changed fine. - [roms] $1796: fixed bad memory allocation in the GTK+ 2.6 multiple file selector (bug #1294628). - [roms] $1801: fixed bug #1304338 (doesn't save skinless mode in .ini file) - [roms] $1803: fixed #1305054 (doesn't refresh vector bkpt state) - [kevin] $1811: optimized grayscale movem detection and added support for dirty-coded HW2/3 grayscale interrupts abusing the stack pointer to hold data (currently only the latest Grib is known to do that) - [kevin] $1812: import PedroM (ld-tigcc build) 0.81 release - [kevin] $1813: fix install-without-tcl-tk omitting the "misc" directory - [kevin] $1819: import Insight 6.4 and merge TiEmu changes - [kevin] $1826: improve configure argument filtering to make Fedora->MinGW cross builds work - [kevin] $1827: override C_INCLUDE_PATH and LIBRARY_PATH for UAE host object compilation - [kevin] $1828: set CFLAGS_FOR_BUILD to CFLAGS without the arch-specific defines - [kevin] $1832: allow setting $RC to something other than windres - [kevin] $1833: override C_INCLUDE_PATH and LIBRARY_PATH for cleaner.c compilation - [kevin] $1835: add .exe extension properly for MinGW (especially cross-MinGW) builds - [kevin] $1843: add install-without-tcl-tk-itcl make target - [roms] $1852: updated manpage - [kevin] $1855: fixed unclosed tag and ISO 8859-1 (non-ASCII, non-UTF-8) character in manpage changed manpage to Unix line endings so it displays properly in Konqueror - [kevin] $1857: by default, KDE-enabled builds now use the KDE file selector only when running KDE - [kevin] $1858: enable KDE support by default (except on MinGW) - [kevin] $1870: fix libtifiles2 0.0.5 charset problem on Win32 - [kevin] $1871: fix GDB crash when single-stepping - [kevin] $1872: adjust to libtifiles2 reversion to file names in locale charset actually honor locale for file names throughout - [kevin] $1875: plug Qt event loop into GTK+ main loop so we will actually be able to receive/process DCOP messages - [kevin] $1876: created a DCOP interface (currently empty) - [kevin] $1879: implemented image queries and file sending in the DCOP interface - [kevin] $1880: handle engine state properly when sending files through DCOP - [kevin] $1881: added ready_for_transfers() boolean query to the DCOP interface - [kevin] $1882: added reset_calc(bool clearmem) command to the DCOP interface DCOP operations now return true if TiEmu was ready and false if it wasn't (and rejected the operation) - [kevin] $1883: implemented execute_command in the DCOP interface - [kevin] $1886: added turn_calculator_on command to the DCOP interface - [kevin] $1889: adjust to libtifiles2 re-reversion to file names in glib filename charset - [kevin] $1890: implemented widechar versions of Win32 file dialogs - [kevin] $1891: partial implementation of OLE automation interface (no instances created yet) - [kevin] $1907: initialize and uninitialize OLE automation interface - [kevin] $1913: added 1 ms timeout to Qt processEvents to ensure 4% max CPU consumption - [kevin] $1914: slowed down typing (execute_command) a bit so the CHAR menu works properly - [kevin] $1915: fixed keycode of SIGMA on TI-89 - [roms] $1931: fixed segfault in the Win32 file selector when varname contains non-ASCII chars. - [roms] $1932: enabled tifiles2 library as UTF-8 for varnames. This allow good handling of non-ASCII chars. - [roms] $1933: added conversion of varnames with greek chars into useable filenames for disks with locale encoding. - [kevin] $1935: added OLE self registration support (/RegServer, /UnregServer) - [kevin] $1936: also filter CXX in the configure argument filtering (fixes MinGW build again) - [kevin] $1938: cleaned up OLE self registration support, fixing Win32 link failure - [kevin] $1943: register the TLB file during OLE self registration don't abuse assert for error checking in registry.cpp - [kevin] $1945: add regsvr makefile target for native MinGW compilations (using MSYS) - [kevin] $1953: experimental support for building tiemups.dll with MinGW - [roms] $1955: the '/RegServer' and '/UnregServer' must be case-unsensitive. Fixed compilation under MSVC. - [roms] $1957: added VB script for testing OLE/Automation. - [kevin] $1959: use RegisterActiveObject, not CoRegisterClassObject, for our singleton don't delete the singleton if the refcount reaches 0, let the cleanup on exit do it - [kevin] $1961: pass --disable-werror to the GDB configury - [roms] $1962: added MSVC project to oleautsdk and modified oletest to compile with a C90 compiler. - [kevin] $1964: moved initialization of buffer[2048] back down restored 2 spaces/level indentation in oletest.c - [roms] $1968: request #1430263: "better error handling" - [roms] $1972: bug #1388306 fixed: "can't send FLASH app" - [roms] $1978: skin is now scaled directly from JPEG image => no resolution lost - [kevin] $1980: added enter_debugger command to the DCOP interface - [kevin] $1981: added enter_debugger command to the OLE interface - [roms] $1987: fixing bug #1434625: display a better error message when attempting to load a state image targeted for another hand-held model (backported changes from TiEmu2 rev. 1986). - [roms] $1989: fixed bug #1434625: allow direct loading of a state image and associated image. - [roms] $1993: fixed bug in the single Win32 file selector (default folder was not properly set) - [roms] $1994: switched to ticonv library - [roms] $1999: fixed #1436138: V200 screen bigger than the skin - [kevin] $2003: fixed set_window->on_drawingarea1_configure_event->set_window feedback loop (see bugs #1227433, #1249087) - [roms] $2004: replaced gtk_idle_add (deprecated) by g_idle_add - [roms] $2007: accept TI92 files on Titanium and others - [kevin] $2009: imported UAE 0.8.25 - [roms] $2012: bug #1434600 => goes to HOME when calc is not ready - [kevin] $2021: fixed stray quotes breaking Insight build with latest bash (by Pavel Roskin, from http://sources.redhat.com/ml/insight/2006-q1/msg00043.html) - [roms] $2031: can load VTi skins - [kevin] $2033: commented out OLE installation in tiemu*.nsi and OLE initialization/cleanup in oleaut.cpp - OLE support will be reenabled when it will actually work - [roms] $2037: fixed to follow ticalcs2 API changes - [kevin] $2038: HW4 runs at 16 MHz - [roms] $2040: added HW4 support (user can choose imported FLASH upgrade as HW3 or HW4 for Titanium (like TI89/92+)) - [roms] $2048: fixed edition of values in the memory dbox Note: trunk forked into tiemu-debugging-branch at rev. $983 and has been merged back into the trunk at rev. $1695. For changes made in the tiemu-debugging-branch, see the RELEASE file starting at '20050806'. Note2: trunk forked into tiemu-3-libti2 branch at rev. $1720 and has been merged back into the trunk at rev. $1768. - 19/08/2005, version 2.00: - [kevin] $1662/1663: import V200 updates as HW2, not HW1 (and default TI-89/92+ updates to HW2) - [roms] $1666: use Titanium and V200 skins when available (else fallbacks) - [roms] $1667: fixed large column in the I/O port view - [roms] $1668: new function in the mem window (read address and dis-assemble at) - [roms] $1672: fixed 'Set PC to selection' command by adding a call to fill_prefetch_slow() - [roms] $1673: update ASCII column (dbg wnd) after cell editing - [roms] $1676: ask for 'Clear RAM' when reseting calc (O. Armand request) - [kevin] $1680/1681: fix buffer underflow in iodefs.c - 03/08/2005, version 2.00-rc8: - [roms] $1615: TiEmu retains the state of dbg windows (open/closed) now. - [kevin] $1623/1624: fixed: only first 32 bytes of ram_exec were restored from savestate - [kevin] $1625/1626: buffering grayscale planes to avoid blinking in double-buffered games - [roms] $1627: put all gscales extern into gscales.h - [roms] $1629: added new I/O ports window which let view/modify HW registers - [roms] $1648: fixed buffer overflow in RTC HW3 and disabled full screen mode (too slow) - 16/07/2005, version 2.00-rc7: - [roms] $1583: fixed PPhD's bug (no reload of ROM calls when upgrading) - [roms] $1585: fixed comm box (removed calc & autodetect because un-needed) - [roms] $1586: fixed file patterns in file selector (case sensitivity) - [roms] $1588: avoid linkport accesses when browsing memory from dbg window - [roms] $1590: fixed severe bug in linkport (the status register was reset whenever read like specified by TI but the int handler proves it's false). TiEmu does not run an infinite loop when transfer is interrupted. - [roms] $1593: previous bug fixed again for _all_ calcs - [roms] $1597: set link timeout to 60s for non-NT platforms, 1.5s for others - [roms] $1598: added a new function in the ticables library API (ticable_link_reset) for use by TiEmu. It allows to reset/flush the pipes of virtual linking when the DBus is reset (usually due to transmission error). Link is now resumable. - [roms] $1601: reimplemented HW3 RTC from latest/new O. Armand's information. - [roms] $1608: automatically bind TiEmu #2 on the second instance of TiEmu //- [roms] $1609: fixed wraparound of clock() in RTC hw2 support (~74 minutes). - 25/06/2005, version 2.00-rc6: - [roms] $1552: replaced my hand-made about box by the generic one provided with GTK 2.6 - [roms] $1560: TiEMu can be exited from the cross (WM) - [roms] $1564: fixed 'backing pixmap problem' (bug #1227433): the scale factor was not retrieved fine from .ini file when the ratio contains ',' instead of '.' - [kevin] $1572/1573: handle program entry breakpoints on _main for kernel/Fargo programs - [kevin] $1574/1575: implemented HW3 RTC - [roms] $1577: can choose HW1/HW2 when importing a tib file - [kevin] $1580/1581: fixed about box license display on MinGW - 23/06/2005, version 2.00-rc5: - [roms] $1525: merged Kevin's change in rev $1524 (recfile). //- [roms] $1526: cancel button - [roms] $1543: fixed 'Receive file' check item. - [roms] $1544: fixed bug #1227179 (screenshot). - 10/06/2005, version 2.00-rc4: - [roms] $1488: replaced current icon by Jaime's one - [roms] $1489: removed logo from about box - [jb] $1493: src/gui/calc.c: screenshot of the whole calc in BW is not supported, error out in this case. It'd be nice to pop an error message to the user. - [jb] $1493: src/misc/screenshot.c: enable BW screenshot in EPS and PDF; they're treated like color screenshots. - [roms] $1497: added hibou's logo - [roms] $1507: cleanup and little fixes in interrupt support of m68k - [roms] $1509: fixed behaviour of all keys and definitely fixed ON key - 01/06/2005, version 2.00-rc3: - [roms] $1462: fixed bug #1212619. - [roms] $1467: fixed ON key - [roms] $1470-76: don't restart the whole GUI when switching view mode. The main wnd can be resized by dragging it and its content is automatically scaled. - [roms] $1478: popup menu and tiemu.ini updated to support custom scaling factor. - [roms] $1480: changed logo for Kevin's one. - [roms] $1483: fixed full-screen mode - [kevin] $1485/1486: replaced TiLP logo in the HTML manual with my temporary TiEmu logo - [roms] $1487: fixed resized window with key positions (mouse) (bug #1217627) - 31/05/2005, version 2.00-rc2: - [kevin] $1357/1362: added support for disassembling ER_throw - [kevin] $1364/1365: link tiemu.rc in for MinGW - [roms] $1382: fixed HOME & CATALOG keys on Titanium (mouse only) - [jb] $1399: added EPS/PDF screenshot output - [roms] $1408: fixed check of Titanium skins (bug #1209813) - [roms] $1415: fixed debugger display under SawFish (patch #1209183) - [kevin] $1417/1418: fixed 0x600017 and implemented detection of Patrick Davidson's grayscale routine (bug #1207299) - [kevin] $1420/1421: when minimizing the main window, don't hide the others (patch #1209183) - [kevin] $1424/1425: fixed checkboxes in the program entry breakpoint dialog (a subtle 2-byte buffer overflow!) - [kevin] $1427/1428: RTC port triggers every 8192 seconds (correct), not every 4 (dbg code) - [kevin] $1430/1431: fixed resetting with the debugger open (closes the debugger rather than starting the engine with the debugger still expecting it to be stopped) - [kevin] $1432/1433: reenabled memory window refresh - [roms] $1434: fixed multiple check items in the popup menu (button group) - [roms] $1436: HW protection is enabled by default for now - [roms] $1440: tiemu.ini file loader/saver: slightly re-arranged sections and cleaned-up. - [roms] $1443: view mode is now saved in the config file. - [roms] $1444: view mode is restored at startup. - [roms] $1446: screenshot of TI89 is now clipped - [roms] $1447: B&W screenshot support added - [roms] $1448: fixed screenshot of full skin with LCD - [roms] $1449: timeout of direct file loading can be changed now - 16/05/2005, version 2.00-rc1 (3.9.1, 0.6.4, 4.5.9): - [kevin] $1337/1338: fix --with-kde for Debian and derivatives - [kevin] $1340/1341: add -Wl,--export-dynamic for all Linux targets to fix Ubuntu problem - [kevin] $1351/1352: implement undocumented flags for ABCD, SBCD, NBCD and CHK (source: 68knotes.txt by Bart Trzynadlowski) - [roms] $1358: first release candidate - 06/05/2005, version 1.80v: - [roms] $1248: changed rom_base from 0x20 to 0x200000 whenever applicable - [roms] $1249-1253: memory layout management rewritten - [roms] $1254: splitted I/O ports on HW3 - [roms] $1255: finished to use new memory layout; the memory window shows the exact memory mapping - [roms] $1263: hw_get_real_address is a function pointer which depends on the calculator type for now (part of memory management rewrite attempt) - [roms] $1278: completely removed old memory banking system (mem_tab & mem_msk) - [roms] $1293: fixed engine loop (every 30ms) - [roms] $1294: can change LCD rate from popup menu - 27/04/2005, version 1.80u: - [roms] $1191: popup menu can be raised by clicking on the LCD (iPAQ) - [roms] $1192: fixed logging domain support (printl) - [roms] $1195: some bug fixes by Christian Walther. - [roms] $1213: fixed contrast on Titanium - [roms] $1214: fixed range breakpoints (completely broken) and code bkpt - [roms] $1229: can exit emulator from cross (WM decorations) - [jb] $1230: fixed va_list in printl - [kevin] $1231: allow setting a range breakpoint on a single byte - [kevin] $1232: fixed range breakpoint (overlap) - [roms] $1233: fixed SSP/USP registers in registers.c - [roms] $1234: 'exit & save state' moved in popup menu - [roms] $1235: added accelator key to select & set PC on next line - [kevin] $1237/1238: don't clobber bkpts.id if we are already breaking - [kevin] $1239/1240: no FlashROM ghost space at 0x400000 on the TI-89 - [kevin] $1239/1240: fixed hardwareRevision in the HW parameter block - [kevin] $1241/1242: fixed reads from wrong offsets in the stack window - 20/04/2005, version 1.80t: - [roms] $1152: fixed RAM space on Titanium - [kevin] $1156: added detection for WinXP with classic theme. - [roms] $1161: fixed window position again (better fix-up) - [roms] $1162: save main window position - [roms] $1163: implementing receive file feature - [roms] $1166: merged Christian Walther's patch for Mac OS-X port. - [kevin] $1167: increased link timeout from 10 to 60s. - [roms] $1172: added receive of file - [roms] $1173: improved to support group files - [roms] $1176: show a dialog box when a file is received - [roms] $1177: file receiving can be disabled for games which uses linkport for sound - [roms] $1182: TI89 Titanium entry was missing in the communication box - [roms] $1183: glade callbacks were not found due to a missing --export-dynamic (iPAQ) - [roms] $1185: clean-up and improvements in the skin loader (no tmp file any longer) improvements in the skin loading (avoid multiple loading and load only when necessary) - [roms] $1188: removed flicker at startup, code slightly reworked - 11/04/2005, version 1.80s: - [roms] $1102: fixed old file selector - [kevin] $1112: fix incorrect shift of rom_base in handles.c. - [kevin] $1112: fix several HW protection bugs which prevented booting TI-89 Titanium AMS 3.01. - [kevin] $1112: fix and enable HW2/HW3 FlashROM execution protection. - [kevin] $1114: properly step over jsr _bcd_math calls. - [roms] $1116: don't use libtool and fixed UAE makefile for cross-compilign support. - [roms] $1137: fixed clock on HW2 - [roms] $1143: fixed preloading of debugger - [roms] $1145: can sort ROM calls by addr, name or id - [roms] $1146: fix-up window size/position with border size - [roms] $1147: fixed possible bad selection location in mem, stack and code windows Fixed source code window: scrolling was somewhat weird/broken. - 28/03/2005, version 1.80r: - [kevin] $1029: merged UAE 0.8.15 from tigcc-dbg branch - [roms] $1030: fixed MSVC compilation and support for new UAE Note: there is a post-build lock with gencpu. To fix... - [roms] $1032: added instruction cycle count support - [kevin] $1037: restrict to actual speed based on cycle count, not instruction count. - [roms] $1038: fixed Win32 multiple file selector - [roms] $1048: fixed calibration loop (updated on each engine restart) - [roms] $1059: added pgm_entry bkpt support in dbg_cause.c (merged from Kevin's branch) need to remove 1 pgm entry bkpt limitation - [kevin] $1079: don't start the engine when toggling "Restrict to actual speed" if it was stopped (crash fix). - [roms] $1081: TiEmu hang when using F10 instead of popup menu. Fixed. - [roms] $1082: use ShellExecute instead of g_spawn_async in go_to_bookmark (thx Kevin !). - [roms] $1084: use a list of browsers to get the good one under Linux - [kevin] $1092: trigger interrupts per cycle, not per instruction. Fix interrupt rates. Measure LCD exposure times in cycles rather than instructions to match the timers. - 19/03/2005, version 1.80q: - [roms] $985: updated copyright notice. - [roms] $990: set main window title (for TIGCC-IDE). - [roms] $993: switched to GTK+ 2.6.4 for Windows. - [roms] $994: removed GTK deprecated code (-DGTK_DISABLE_DEPRECATED), except for comm.c - [roms] $996: set default filename in file selectors - [roms] $997: more dissassembled lines of code in the debugger (resizeable). - [roms] $998: close the debugger when you press F5. - [roms] $1001: added scaling support for skin & lcd (beware: CPU intensive). - [roms] $1002: can send several TI files at once and added new file selectors. - [roms] $1008: implemented full-screen view. - [roms] $1009: improved CPU responsiveness of large view mode. - [roms] $1015: TiEmu don't use threads any longer. - 12/03/2005, version 1.80p: - [kevin] $933: increased link timeout from 1.5 to 10s. - [kevin] $934: fixed grayscale support. - [kevin] $935: fixed grayscale support with double buffering. - [kevin] $937: allow building with -mwindows -D_WINDOWS on MinGW. - [roms] $940: removed mutex at startup because we should be able to run 2 instances of TiEmu for virtual linking. - [roms] $941: fixed ghost of RAM in $100000 on TI89,92,92+,V200. - [roms] $943: fixed ghost of RAM in $000000 on Tinanium - [roms] $949: fixed timer incrementing/reloading (PPhd: loop freeze) - [roms] $950: can send all of 89?, 92?, 9x? and v2? to all the models - [roms] $951: clean-up in ti68k_scan_images (no more cache, useless now) - [roms] $952: can remove (=file delete) image from list - [roms] $954: fixed size for archived handles on PedRom - [roms] $958: fixed file pattern for Win32 file selector; fixed default path and pattern for the new GTK file selector. - [roms] $960: improved management of ALPHA key on TI89 (letter/number). - [roms] $962: factorized TI89/V200 & TI92+ code (memory). - [kevin] $966: added KDE file selector support. - [roms] $976: full hw1/2/3 protection support (89). - [roms] $980: overhaul of some parts in memory management and factorized hw protection code for all calcs. - [roms] $981: hw protection implemented for all calc models. - 25/02/2005, version 1.80o: roms - fixed bug in ti68k_get_hw_param_block (wrong search/replace) - fixed TAB char (0x09) pb in the dbg_mem window (Lionel) - handles are now displayed fine with PedRom - program entry breakpoint feature now useable with AMS >= 2.00 - improved dbg windows behaviour: save/restore size, position and state (hide/minimized); fixed ini file, too - updated manpage - command line improved and up-to-date - cleaned-up configure.ac script (CygWin & MinGW) - fixed Step Over - added Win32 file selector - fixed dependancy problem with tiemu&uae rule in src/Makefile.in - fixed bad use of sizeof in hw_io_init - fixed MinGW path with Kevin - fixed -mms-bitfields issue with UAE Makefile under MinGW (Kevin) - fixed out-of-range access with io_bit_tst in ports.c (Kevin) - fixed contrast on TI92+ - 18/02/2005, version 1.80n: roms - fixed FLASH writes with HW3 patch - fixed Step Over on the following FLINEs : 0xfff0, 0xfff2, 0xffee. - fixed Hardware Parameter Block when converting FLASH upgrade - the Windows(tm) MENU key raises the popup menu for now - fixed disassemblling of 0xffee and 0xffef FLINEs - changed engine_start/stop architecture to remove some menu locks/bugs - fix: ROM call combo box: does not jump to call when names contains '/' - fix: don't reload ROM calls when changing AMS without chaning calc type - show vector name rather than number - dis-assemble FLINE with __ld_entry_point - dis-assemble FLINE with _bcd_math followed by FPU pseudo-opcode - clean-up and improvements in the misc menu (help) - fixed status bar display in the bkpts dbox - some items of the popup menu are disabled when the engine is running - save FLASH segment which have been written/erased - added FPU dis-assembler - fixed/improved some endianess issues - pedrom tibs are now placed in the 'pedrom' folder. The wizard let you import them automatically. - fix problem of path with scan_images under Linux - fixed/improved mem allocation in images.c - added program entry breakpoint feature (AMS < 2.00 only) - 07/02/2005, version 1.80m: roms - dbus architecture improved (reset) - fixed and tested linkport support with real cables: GrayLink, BlackLink, VTi and TiEmu. - tested: TiLP/VTi (vti), VTi/TiEmu (vti), TiLP/TiEmu (tie). - SilverLink makes TiEmu crash. - 0x200000 and 0x400000 are ghost of 0x000000 (Titanium only) - added 0x7100xx ports and fixed LCD address on HW2/HW3 - real grayscale emulation for HW2/HW3 - removed VTi signature (buggy SR) - searching of data begins at the current tab address - fixed heap listing with AMS300 - fixed Step Over on TRAP - 21/01/2005, version 1.80l: roms - switched to GTK+ package 2.4-rc26 (2.4.14): compatible with GiMP and fixes toolbar tooltips - fixed size of handles in handle wnd - some improvements and fixes in the linkport support - fixed AI2 (need to be raised whenever a key is pressed) - main loop modified: main loop is restarted whenever a new ROM is loaded. - fixed main window which appears when the whole window is ready - fixed V200 and Titanium crash under Linux (buffer overflow). V200 transfers don't crash any more under Windows (probably same bug). - added kbd_dbg variable in tiemu.ini file to display keystrokes in console (useful for creating keymaps). - prevent Alt+ESC and Ctrl+ESC to disturb TiEmu (thanks to Kevin) - 20/01/2005, version 1.80k: roms - link port is now reset when error occurs: great improvement - added support of EA bit ($60000D:2): Titanium work - clean-up of linkport support (no more hack) - fixed linkport progress bars - boosted linkport speed (direct file) - 12/01/2005, version 1.80j: roms - rewrite of the m68k loop: * UAE fixed to handle multiple pending interrupts and some other fixes * idle mode and STOP improved but problems with ON key - fixed grayscale routines: they are now rock-stable ! - fixed grayscales with HW2 - implemented 'increment rate' of $600017 port - fixed RTC timer ($700014) and port $70001F (RTC enable and 1,2,3,5 irq inhibit). - fixed AI3: it was never raised because counter was never incremented - 03/01/2005, version 1.80i: roms - implemented new method for grayscale computing & management (idea from Kevin) - clean-up of popup menu (#colors menu removed) - grayscales pb with HW2... - 13/12/2004, version 1.80h: roms - simplified skin/keymap management (TI92+ => TI92, TI89t => TI89) - simplified ROM image/upgrade access - display ROM calls in RAM in the mem panel - fixed contrast with TI89 - fixed grayscale computing but grayscales are still flickering - switched to gtk-win32-devel-2.4-rc24.exe package: fix tooltips with toolbars - 15/11/2004, version 1.80g: roms - idle() fixed (port $600005) - erase FLASH whenever an OS upgrade is loaded. - fixed scrolling of instructions in code window - data bkpt at $0 are now caught - 'Run to cursor': work with far instructions - fixed incrementing of $700014 - removed "C:\\tiemu.log" empty file under Linux - added temporary breakpoint mode - breakpoints are now editable - fixed bugs with data breakpoints - fixed bug with 'Run': didn't run if a bkpt is on the current line - update stack frame when editing memory hex dump - don't list invalid ROM calls any more - added frame pointer window - stack & frame pointer window are now scrollable - remind folder when sending variable - allow cross-compatibility when sending TI files - switched to the new file selector (seems to be slow) - added heap window to show handles - fixed LCD address on all calculators - improved ROM call management - ROM call entry box has now auto-completion - refresh code window when removing code bkpt from bkpt window - don't save configuration any longer when upgrading calculator - removed bkpt cause dbox for status bar in the bkpt dbox - fixed TIB support for V200 & TI89Ti (libtifiles) - merge read & write bkpts as r/w bkpts - 08/11/2004, version 1.80f: roms - PedRom is now provided with TiEmu as default OS. - bug: 'unexpected Xlib async reply' (Linux) found and fixed. - improved LCD on/off and contrast - 02/11/2004, version 1.80e: roms Fixed various key binding bugs thanks to Kevin. - 24/10/2004, version 1.80d: roms - fixed bug: directory creation in $HOME - bug: 'unexpected Xlib async reply' (Linux) (not fixed yet) - fixed missing feature in the FLASH device: TI89 Titanium boots for now - 11/10/2004, version 1.80c: roms - applied patch from Christian Walther - fixed some Linux bugs - 14/09/2004, version 1.80b: roms - fixed HW3 support - fixed bug in LCD snoop range register: TI89 Titanium (patched) and V200 (patched) work. - fixed bug in FLASH emulation (algorithm) - fixed ROM size handling with TI89 Titanium & V200 - removed copying of vector table from FLASH to RAM at startup - added 'go to address' in the PC log window - implemented 'enable/disabled' breakpoint - added some missing HW ports - fixed TI89 Titanium RAM accesses - 28/08/2004, version 1.80a: roms - fixed vectors copy - bkpts window: can jump to bkpt address - code window: can jump to ROM call - fixed warnings - update stack frame when stepping - improved step over: don't stop at the first RTS/RTE - fixed disassembling of STOP instruction - highlight ROM call - fixed loading of ROM calls (load from FLASH) - ROM calls are sorted by name instead of by id - 20/08/2004, version 1.79: roms - LCD background is less dark - force mem window refresh when scrolling up/down - no ghost in 0x400000-0x5FFFFF on TI89 - stack frame display 1 word on 2 - fixed step over: works on DBcc - PC highlight lost when scrolling: fixed - restart engine when clicking outside of the popup menu - important bug: FLINE instructions were not executed ! - popup menu slowed down in non-restricted speed mode (fixed) - removed lock-ups at startup (start engine after splash screen) - when calc is OFF, CPU is now used at 3% instead of 100% and debugger can be launched - 13/08/2004, version 1.78: roms - changed keyboard mapping to pure VTi mapping - added ability to load keymaps from file - force code window refresh when maintaining F7 key pressed - accept ExtendeD's V200 ROM (patched) - 10/08/2004, version 1.77: roms - step over fixed again: stops on Bcc/DBcc, STOP, RTE, RTD, RTS, RTR, JMP. - FLINE > 5 was mis-disassembled - code window: don't reload source when setting a bkpt - check for image at startup and can select it - code window: show PC in the middle of the window and leave 3 isntructions at bottom - 07/08/2004, verison 1.76: roms - splitted memory mapping (init/exit) - SR/PC were not shown any longer with exception (fixed) - added refresh button to mem window - update regs when changing the Supervisor bit - clicking OK in the ROM version without selection makes box crash - bug fixes in the mem dbox searching - use Lionel's romcalls listing (N:func_name) - min/max window improved: hide windows like Glade and 1 app in the task bar - 27/07/2004, version 1.75: roms Olivier's suggestions: - synch Code/Window menu with state of other windows (show/hide) - minimize/maximize all windows when touching calc or code window. Could be better... - can't step after bkpt: fixed. - mem_dbox: show headers, removed stack, refreshed on step, tab refreshed when scrolling, - mem_dbox: improved scrolling and browsing - step over was buggy (no single step on insts other than jsr/bsr) - code_dbox: improved scrolling and browsing - avoid selection and green bar to be masked - code_dbox: can add mem tab at address - mem_dbox: can disasm at address and added popup menu - mem_dbox: can update multiple bytes at once - regs_dbox: can open a mem tab with register value - new window: stack - regs_dbox: added Status Register window (1 button per bit) - mem_dbox: replaced '+A' header by absolute address - mem_dbox: searching capability (find first & find next) - 14/07/2004, version 1.74: roms Fixes from Lionel, Kevin and Olivier's suggestions: - when scrolling down in the code window, the bar is now reset (hide first instruction). - reject some SAV images due to IMG_INFO structure (memcmp) - improved popup menu (slow down) - popup menu available when debugger is opened - rebuilt under Linux - fixed bug with SDCB in the VTi's disassembler - modified VTi's disasm to show F-Line ROM calls - completely rewritten debugging layer and added Step Out mode - 12/07/2004, version 1.73: roms SDL removed for GTK: screen and keyboard support rewritten from scratch ! Debugger raised on event from m68k thread: less CPU intensive but could be better. HW1 protection is emulated excepted for archive memory limit. - 07/07/2004, version 1.72: roms Error management connected and updated. Fixed 'restrict to current speed'. Synch item disabled for now. Fixed bugs in state image loading as well as in LCD initialization (no LCD updates after state image loading). Linkport reworked but seems to be buggy with HW2 ?! Fixed IMG_INFO structure: size was incorrect. Added new field to IMG_INFO: ROM base address. Navigate with arrow keys in the mem dbox. Save of breakpoints in the state image. Fixed code breakpoint which was buggy. Added symbolic debugger (replace address by name; take a look at 0x4f89fe on TI92+). - 30/06/2004, version 1.71: roms Lionel Debroux's suggestions: - debugger access is slow: improved by pre-loading windows. - can't scroll into the code window: fixed (VTi uses a fixed size list without scrollers) - window focus: fixed (list of the code window has default focus) - shortcuts (F2, G, ...): fixed - key mapping pb (EE, |): fixed - pb with Alpha key: fixed - no key auto-repeat: fixed - long names with the ROM version box: fixed - disasm listing is bad(): fixed * mv2sr (move xx,sr) at ?? (TI92 1.11) * mvmel (movem) at 0x24b90c (TI92 1.11) * trap# (trap #) at 0x20212e (TI92 1.11) - SR flags (VTi emulation): fixed Fixes: - disable menu access when debugger is opened. - I/O bits manipulation functions moved into bits.h and fixed (bit_set/clr buggy) but direct file loading is now broken. - fixed ON key (works and set on/off LCD screen). Improvements: - added VTi-style disassembly view - 05/05/2004, version 1.70: roms Rework in progress. =====> TiEmu II project re-starts here <===== - 02/07/2003, version 1.68: jb Removed GTK+ 1.2 to GTK+ 2.0. - 02/01/2003, version 1.68: Removed automake support in ./src. Switched to a pure autoconf support. Some warning removed. - 30/01/2003, version 1.67: Automake reworked and improved. Bu, I still have these ugly links. Compilable under MinGW for K. Kofler. - 01/11/2002, version 1.66: Automake/Autoconf does not support sub-dirs any longer -> file are linked now (ugly !). - 13/10/2002, version 1.65: Changed to support libticalcs v4.x.x. Compilation fixes. - 02/08/2002, version 1.64: Changed to support libticalcs v4.x.x. Compilation fixes. - 02/06/2002, version 1.63b: FLASH upgrade support works fine now. - 01/06/2002, version 1.63a: Beta release. - 01/06/2002, version 1.62q: GUI slightly modified (wizard, ROM version, ...) and FLASH upgrade management: support unified. - 31/05/2002, version 1.62p: Merge with Win32 port attempt. - 30/05/2002, version 1.62o: Linkport improved and cleaned-up. Fully works. A FLASH upgraded converted into a ROM image with TiLP works... - 30/05/2002, version 1.62m: HW memory support improved but it's still impossible to directly load a FLASH upgrade as a ROM image. - 29/05/2002, version 1.62l: Attemp to thread TiEmu and to remove suspend/unsuspend removed: failed. But, some clean-up has been done. - 29/05/2002, version 1.62k: Added the ability to change skin. - 28/05/2002, version 1.62j: Skin support updated for supporting TiEmu skins (imported skinops.c from JB's SkinEdit) FLASH upgrade support to improve (if we load directly an upgrade, this will not work but it works after a ROM image). GUI clean-up finished. - 27/05/2002, version 1.62i: find_pc function modified and FLASH upgrade support improved. Link box upgraded. Skin support to finish. - 26/05/2002, version 1.62h: find_pc function modified and FLASH upgrade support improved. - 22/05/2002, version 1.62g: ROM image overhaul. - 21/05/2002, version 1.62f: GUI clean-up. - 18/05/2002, version 1.62e: GUI clean-up. - 16/05/2002, version 1.62d: TI HW clean-up. - 15/05/2002, version 1.62c (1.64): TI HW clean-up. - 14/05/2002, version 1.62b (1.63): TI HW clean-up. - 13/05/2002, version 1.62a (1.62): TI HW clean-up. - 12/05/2002, version 1.61: GlobInf structure modified. - 11/05/2002, version 1.60: Clean-up finished. - 10/05/2002, version 1.59: Headers modified. Clean-up of files. - 09/05/2002, version 1.58: Project tree completely rebuilt: libti68k & tiemu are now a single package with sub-folders. --- Some explanations about the version number: the version number has this form: X.XX_X.XX where X is the major number and XX the minor one. An even number is a stable version whereas an odd number is an unstable/devel version. The first X.XX shows the version of the GtkTiEmu interface and the last X.XX shows the version of the libti68k used. --- - 07/05/2002, version 1.57_1.4.3: Scaling support finished (for displays with high resolution). - 20/04/2002, version 1.56b_1.4.3: Screenshot code rewritten according to the new rendering system. - 16/04/2002, version 1.56a_1.4.3: skn_loader.c: overhaul & clean-up. sdl_specific.c: rendering completely rewritten with pure SDL functions. Tested on a PC 233MHz: speed & mem use are slightly greater. - 20/02/2002, version 1.55_1.4.3: Libti68k & TiEmu modified for supporting the liticables-v3.x.x - 28/01/2002, version 1.54_1.4.2: Applied the JB's patch for compiling GtkTiEmu on Linux/PPC (problem of endian-ness with skins and some other stuffs). =====> TiEmu II project starts here <===== - 21/11/2001, version 1.53_1.4.2: Direct internal linkport with TiLP. Implemented but disabled. LCD: better gray scales/contrast management (no orange color !) - 19/11/2001, version 1.52_1.4.1: Compiled under Win32. Debugger has been re-enabled under Win32 since it works fine now. - 18/11/2001, version 1.51_1.4.0: Send file finished. Debugger dbox slightly improved (unsuspend). - 15/11/2001, version 1.50_1.3.9: Removed pthread support. Send file function in progress. - 14/11/2001, version 1.49_1.3.8: It it not necessary to restart emulator if we change the link cable type. Progress bar & Msgbox added. - 12/11/2001, version 1.48_1.3.5: Recompiled for supporting modified libti68k. - 11/11/2001, version 1.47_1.3.5: Cleanup of the debugger dbox. Hidden config files (~/.tiemu*) moved into the ~/.tiemu/ hidden directory. - 10/11/2001, version 1.46_1.3.5: Cleanup of dialog boxes: faster. Added a check for SDL in configure - 10/11/2001, version 1.45_1.3.5: Cleanup of headers. - 10/11/2001, version 1.44_1.3.5: Changed any malloc+strcat/cpy to g_strconcat: safer & shorter. - 05/11/2001, version 1.43_1.3.5: Upgrading to Automake/Autoconf v2.52 Upgrading to libticables-v2.x.x To do: GUI improved (faster, better display of boxes). RC file management updated & improved (sections). Link box upgraded. - 21/06/2001, version 1.42_1.3.3: Compiled under Win32. Skin/no skin resizing works (SDL does not crashes any longer). - 20/06/2001, version 1.41_1.3.2: Code source have been cleaned. Some improvements and minor bug fixes. - 19/06/2001, version 1.40_1.3.0: A ROM wizard has been added for an easy startup. - 18/06/2001, version 1.39_1.3.0: ROM management improved and fsel dboxes removed from callbacks.c Trying to implement skin/no skin but SDL crashes. About dbox updated and fixed. Implemented a ROM wizard at startup. A bug (Linux) in the inst_paths.base_dir fixed - 14/06/2001, version 1.38_1.2.9: a FLASH upgrade can be used at startup. - 13/06/2001, version 1.37_1.2.9: jpeg works under Win32 (HAVE_LIBJPEG !). menu item bug fixed (SkinXX) - 12/06/2001, version 1.36_1.2.9: Internationalization. - 11/06/2001, version 1.35_1.2.8: TI89 keyboard is now VTi compatible. - 10/06/2001, version 1.34_1.2.7: The update_keys function (SDL) did not return iKeyWasPressed. TI89 keymap fixed. - 09/06/2001, version 1.33_1.2.6: GtkTiEmu exits correctly now. Thanks to JB, my Debian packager, for the idea which allows me to circumvent the pb. - 05/06/2001, version 1.32_1.2.3: globInf struct format modified so that rom/ram/tibFile strings are unlimited in size. It is now possible to load a TIB file from the 'Set ROM' dbox. If GtkTiEmu does not find a ROM at startup, it display a fileselection dbox. - 02/06/2001, version 1.31_1.2.0: hardware emulation improved. Listing of available ROMs is now more efficient thanks to a cache file. - 01/06/2001, version 1.31_1.1.9: a FLASH upgrade can now be loaded. - 26/05/2001, version 1.30_1.1.8: 'Send file to GtkTiEmu' item implemented. Some bugs have been fixed in the debugger but it still crashes under Win32. - 25/05/2001, version 1.29_?.?.?: bug fix in the ROM version dialog box (fstat path). - 23/05/2001, version 1.28_?.?.?: the bug which crashes the debugger (Win32 version) has been insulated but not fixed yet. - 22/05/2001, version 1.27_1.1.5: command shell added. Load file capability to do/improve. - 21/05/2O01, version 1.26_?.?.?: Win32 version have pbs under WindowsNT4. Fixed. - 20/05/2001, version 1.25_1.1.4: finish to port GtkTiEmu under Win32. Screenshot pb under Win32 fixed but the debugger still does not work ! - 19/05/2001, version 1.24_1.1.4: screenshot options improved: the screenshot file can now be chosen and auto incremented. Scaling to do... - 19/05/2001, version 1.23_1.1.4: F9/F10 keys fixed in SDL version. TI89 screen works fine now as well as the skin redrawing (TI89 <->TI92 toggling). Nethertheless, LCD/Skin toggling does not work very well. Contrast fixed. Screenshot tested in both version, all formats, all depths and all calcs: it'a all right ! - 18/05/2001, version 1.22_1.1.4: BMP format added. I have tested all possible color depths (8/16/24 colors) for both the X11 and the SDL version. Screenshots have been tested with various file format, various screenshot size and various color depth. - 17/05/2001, version 1.21_1.1.4: screenshot implemented in SDL version. SDL version works now in 8 bit mode. - 16/05/2001, version 1.20_1.14: SDL version works fine in 24/32 planes. Gray scale management finished. - 15/05/2001, version 1.19_1.1.4: SDL version being improved for grey scale support. - 15/05/2001, version 1.18_1.1.4: minor bug fixes in X11 screenshots and different color planes tested (8, 16 and 24 bits per pixels). X11 version completely cleaned. - 14/05/2001, version 1.17_1.1.4: check/radio buttons in the popup menu works fine now. Screenshots works in LCD & WND and in XPM/PCX/JPG. - 13/05/2001, version 1.16_1.1.4: SDL version updated. - 12/05/2001, version 1.15_1.1.4: screenshot implemented in B&W for X11. Does not work in color mode. - 10/05/2001, version 1.14_1.1.4: little bug fix with the popup menu (ESC). Buttons in items still have to be fixed. - 08/05/2001, version 1.13_1.1.4: ti68k library headers files have changed their location - 07/05/2001, version 1.12_1.1.3: contrast added. - 06/05/2001, version 1.11_1.1.2: dumping of RAM/ROM added. - 06/05/2001, version 1.10_1.1.1: 'Set ROM version' function implemented. - 05/05/2001, version 1.09: Infos dbox improved. - 05/05/2001, version 1.08: reset calc works fine now. - 04/05/2001, version 1.07: pb with loadState fixed. Accelator keys added to all dialog boxes. - 01/05/2001, version 1.06: loadState does not work with TI89 calc. - ??/05/2000: version 1.00: start of project tiemu-3.03-nogdb+dfsg/INSTALL000066400000000000000000000172271220314353500156300ustar00rootroot00000000000000Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. tiemu-3.03-nogdb+dfsg/LICENSES000066400000000000000000000020701220314353500157150ustar00rootroot00000000000000*----------------- XTiger ----------------------* Original author of (X)tiger: Jonas Minnberg Homepage for Tiger: http://www.nada.kth.se/~md94-jmi/tiger/ License: GPL *------------------- UAE -----------------------* Original author of UAE: Bernd Schmidt Homepage for UAE: http://freiburg.linux.de/~uae/ License: GPL *----------------- PedRom ----------------------* Author: PpHd Homepage: http://www.timetoteam.fr.st License: GPL (version 2 or later) Fully-GPL version by Kevin Kofler: --------------- GDB / Insight ------------------* Copyright holder: Free Software Foundation Homepage for GDB: http://sourceware.org/gdb/ Homepage for Insight: http://sourceware.org/insight/ License: GPL (version 2 or later) -------------- Tcl / Tk / itcl -----------------* Copyright holders: Regents of the University of California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState Corporation, Cadence Design Systems, Inc. and other parties Homepage: http://tcl.tk License: Tcl/Tk License (GPL-compatible) tiemu-3.03-nogdb+dfsg/Makefile.am000066400000000000000000000025441220314353500166270ustar00rootroot00000000000000## Process this file with automake to produce Makefile.in # subdirectories to scan SUBDIRS = build glade help misc pedrom pixmaps po skins src if USE_GROFF SUBDIRS += man endif dist_pkgdata_DATA = COPYING RELEASE AUTHORS LICENSES EXTRA_DIST = BUGS README.* TODO docs desktop sdk po/copy.bat po/TRANSLATORS install.bat # install hook to install prebuilt Manpage.txt if groff is not available install-data-local: if !USE_GROFF $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) $(INSTALL_DATA) $(srcdir)/man/Manpage.txt $(DESTDIR)$(pkgdatadir)/Manpage.txt endif # custom targets install-without-tcl-tk: if NO_GDB $(MAKE) install DESTDIR="$(DESTDIR)" else if USE_GROFF $(MAKE) install SUBDIRS="build glade help misc pedrom pixmaps skins man" DESTDIR="$(DESTDIR)" else $(MAKE) install SUBDIRS="build glade help misc pedrom pixmaps skins" DESTDIR="$(DESTDIR)" endif cd src && $(MAKE) install-without-tcl-tk DESTDIR="$(DESTDIR)" endif install-without-tcl-tk-itcl: if NO_GDB $(MAKE) install DESTDIR="$(DESTDIR)" else if USE_GROFF $(MAKE) install SUBDIRS="build glade help misc pedrom pixmaps skins man" DESTDIR="$(DESTDIR)" else $(MAKE) install SUBDIRS="build glade help misc pedrom pixmaps skins" DESTDIR="$(DESTDIR)" endif cd src && $(MAKE) install-without-tcl-tk-itcl DESTDIR="$(DESTDIR)" endif regsvr: cd src && $(MAKE) regsvr DESTDIR="$(DESTDIR)" ACLOCAL_AMFLAGS = -I m4 tiemu-3.03-nogdb+dfsg/Makefile.in000066400000000000000000000634421220314353500166440ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @USE_GROFF_TRUE@am__append_1 = man subdir = . DIST_COMMON = README $(am__configure_deps) $(dist_pkgdata_DATA) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/config.h.in $(srcdir)/tiemu.lsm.in \ $(srcdir)/tiemu.spec.in $(top_srcdir)/configure \ $(top_srcdir)/src/Makefile.in ABOUT-NLS AUTHORS COPYING \ ChangeLog INSTALL NEWS TODO compile config.guess config.rpath \ config.sub depcomp install-sh ltmain.sh missing mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = src/Makefile tiemu.lsm tiemu.spec SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pkgdatadir)" dist_pkgdataDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_pkgdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = build glade help misc pedrom pixmaps po skins src man DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTODIRS = @AUTODIRS@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLADE_CFLAGS = @GLADE_CFLAGS@ GLADE_LIBS = @GLADE_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GROFF = @GROFF@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INCINTL = @INCINTL@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KDECONFIG = @KDECONFIG@ KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ KDE_INCLUDES = @KDE_INCLUDES@ KDE_LDFLAGS = @KDE_LDFLAGS@ KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@ KDE_MT_LIBS = @KDE_MT_LIBS@ KDE_RPATH = @KDE_RPATH@ LDFLAGS = @LDFLAGS@ LIBCOMPAT = @LIBCOMPAT@ LIBCRYPT = @LIBCRYPT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBOBJS = @LIBOBJS@ LIBPNG = @LIBPNG@ LIBPTHREAD = @LIBPTHREAD@ LIBRESOLV = @LIBRESOLV@ LIBS = @LIBS@ LIBSM = @LIBSM@ LIBSOCKET = @LIBSOCKET@ LIBTOOL = @LIBTOOL@ LIBUCB = @LIBUCB@ LIBUTIL = @LIBUTIL@ LIBXINERAMA = @LIBXINERAMA@ LIBZ = @LIBZ@ LIB_KAB = @LIB_KAB@ LIB_KDECORE = @LIB_KDECORE@ LIB_KDEPRINT = @LIB_KDEPRINT@ LIB_KDEUI = @LIB_KDEUI@ LIB_KFILE = @LIB_KFILE@ LIB_KFM = @LIB_KFM@ LIB_KHTML = @LIB_KHTML@ LIB_KIO = @LIB_KIO@ LIB_KPARTS = @LIB_KPARTS@ LIB_KSPELL = @LIB_KSPELL@ LIB_KSYCOCA = @LIB_KSYCOCA@ LIB_QPE = @LIB_QPE@ LIB_QT = @LIB_QT@ LIB_SMB = @LIB_SMB@ LIB_X11 = @LIB_X11@ LIB_XEXT = @LIB_XEXT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ QTE_NORTTI = @QTE_NORTTI@ QT_INCLUDES = @QT_INCLUDES@ QT_LDFLAGS = @QT_LDFLAGS@ RANLIB = @RANLIB@ RC = @RC@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TICABLES_CFLAGS = @TICABLES_CFLAGS@ TICABLES_LIBS = @TICABLES_LIBS@ TICALCS_CFLAGS = @TICALCS_CFLAGS@ TICALCS_LIBS = @TICALCS_LIBS@ TICONV_CFLAGS = @TICONV_CFLAGS@ TICONV_LIBS = @TICONV_LIBS@ TIFILES_CFLAGS = @TIFILES_CFLAGS@ TIFILES_LIBS = @TIFILES_LIBS@ UIC = @UIC@ UIC_TR = @UIC_TR@ USER_INCLUDES = @USER_INCLUDES@ USER_LDFLAGS = @USER_LDFLAGS@ USE_NLS = @USE_NLS@ USE_THREADS = @USE_THREADS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_INCLUDES = @X_INCLUDES@ X_LDFLAGS = @X_LDFLAGS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ all_includes = @all_includes@ all_libraries = @all_libraries@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ dbus = @dbus@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ kde = @kde@ kde_appsdir = @kde_appsdir@ kde_bindir = @kde_bindir@ kde_confdir = @kde_confdir@ kde_datadir = @kde_datadir@ kde_htmldir = @kde_htmldir@ kde_icondir = @kde_icondir@ kde_includes = @kde_includes@ kde_libraries = @kde_libraries@ kde_libs_htmldir = @kde_libs_htmldir@ kde_libs_prefix = @kde_libs_prefix@ kde_locale = @kde_locale@ kde_mimedir = @kde_mimedir@ kde_moduledir = @kde_moduledir@ kde_qtver = @kde_qtver@ kde_servicesdir = @kde_servicesdir@ kde_servicetypesdir = @kde_servicetypesdir@ kde_sounddir = @kde_sounddir@ kde_styledir = @kde_styledir@ kde_templatesdir = @kde_templatesdir@ kde_wallpaperdir = @kde_wallpaperdir@ kde_widgetdir = @kde_widgetdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ qt_includes = @qt_includes@ qt_libraries = @qt_libraries@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x_includes = @x_includes@ x_libraries = @x_libraries@ # subdirectories to scan SUBDIRS = build glade help misc pedrom pixmaps po skins src \ $(am__append_1) dist_pkgdata_DATA = COPYING RELEASE AUTHORS LICENSES EXTRA_DIST = BUGS README.* TODO docs desktop sdk po/copy.bat po/TRANSLATORS install.bat ACLOCAL_AMFLAGS = -I m4 all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 src/Makefile: $(top_builddir)/config.status $(top_srcdir)/src/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ tiemu.lsm: $(top_builddir)/config.status $(srcdir)/tiemu.lsm.in cd $(top_builddir) && $(SHELL) ./config.status $@ tiemu.spec: $(top_builddir)/config.status $(srcdir)/tiemu.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d $(distdir) || mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-data-local install-dist_pkgdataDATA install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_pkgdataDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ distclean distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local \ install-dist_pkgdataDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-dist_pkgdataDATA # install hook to install prebuilt Manpage.txt if groff is not available install-data-local: @USE_GROFF_FALSE@ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) @USE_GROFF_FALSE@ $(INSTALL_DATA) $(srcdir)/man/Manpage.txt $(DESTDIR)$(pkgdatadir)/Manpage.txt # custom targets install-without-tcl-tk: @NO_GDB_TRUE@ $(MAKE) install DESTDIR="$(DESTDIR)" @NO_GDB_FALSE@@USE_GROFF_TRUE@ $(MAKE) install SUBDIRS="build glade help misc pedrom pixmaps skins man" DESTDIR="$(DESTDIR)" @NO_GDB_FALSE@@USE_GROFF_FALSE@ $(MAKE) install SUBDIRS="build glade help misc pedrom pixmaps skins" DESTDIR="$(DESTDIR)" @NO_GDB_FALSE@ cd src && $(MAKE) install-without-tcl-tk DESTDIR="$(DESTDIR)" install-without-tcl-tk-itcl: @NO_GDB_TRUE@ $(MAKE) install DESTDIR="$(DESTDIR)" @NO_GDB_FALSE@@USE_GROFF_TRUE@ $(MAKE) install SUBDIRS="build glade help misc pedrom pixmaps skins man" DESTDIR="$(DESTDIR)" @NO_GDB_FALSE@@USE_GROFF_FALSE@ $(MAKE) install SUBDIRS="build glade help misc pedrom pixmaps skins" DESTDIR="$(DESTDIR)" @NO_GDB_FALSE@ cd src && $(MAKE) install-without-tcl-tk-itcl DESTDIR="$(DESTDIR)" regsvr: cd src && $(MAKE) regsvr DESTDIR="$(DESTDIR)" # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/NEWS000066400000000000000000000000451220314353500152640ustar00rootroot00000000000000See tiemu-3.03-nogdb+dfsg/README000066400000000000000000000011021220314353500154400ustar00rootroot00000000000000 ************* * TiEmu 3 * ************* List of text files: - AUTHORS: list of authors - COPYING: license - LICENSES: list of program included - README.linux: specific linux instructions - README.win32: specific windows instructions - RELEASE: what's changed in this release - TODO: work to do or planned Texas Instruments and TI are trademarks of Texas Instruments Incorporated. For more informations: This document has been written independantly of Texas Instruments.tiemu-3.03-nogdb+dfsg/README.linux000066400000000000000000000036461220314353500166150ustar00rootroot00000000000000 ***************** * TiEmu * * Linux version * ***************** REQUIREMENTS ------------ - A UNIX computer (Intel x86 or PPC) and C compiler (gcc) - X11 (X Window System) - GTK+ 2.6 from - ticables2, tifiles2 and ticalcs2 libraries from the TiLP 2 project INSTALLATION ------------ At first, you must have the ticables and ticalcs libraries installed. See the documentation of these libraries for the installation procedure. Untar the tiemu-X.XX.tar.gz archive (tar -xvzf), change directory to tiemu directory. Go the tiemu directory and type './configure' in order to be sure that all it is OK. If you want to use KDE file dialogs, run './configure --with-kde' instead. Next, type 'make' to make a binary for your machine. If you want does not want to use GDB as debugger or use the odl one (tiemu2), run './configure --disable-gdb'. If the compile suceeds without any errors, you can type 'make install' to install the binary in /usr/local/bin. This will also copy some necessary files to /usr/local/share/tiemu and will install the manpage and the help. If you already have some TiEmu images, you will have to manually copy them to the /usr/locale/share/tiemu/images directory. USAGE ----- Type 'tiemu' for using it. TiEmu accepts some command line parameters. Do 'tiemu --help' or read the manpage by 'man tiemu'. AVAILABILITY ------------ http://lpg.ticalc.org/prj_tiemu/index.html COPYRIGHT --------- TiEmu is Copyright (C) 2000-2009 by the TiEmu team Copying is allowed under the terms of GNU General Public License (LGPL). See the file COPYING for more details. --------------------------------------------------------------------------- Please report any bugs, questions, ... (please give us your platform, your calculator type (with ROM version) and your link cable model). The TiEmu team tiemu-3.03-nogdb+dfsg/README.win32000066400000000000000000000072101220314353500164070ustar00rootroot00000000000000 ***************** * TiEmu * * Win32 version * ***************** REQUIREMENTS ------------ - a PC with a 450MHz Pentium-class processor and 32MB of RAM - a Windows computer: Windows 95/98/Me or Windows NT4/2000/XP/Vista (better) - the GTK+ 2.6 libraries Location: Note: if you are using 'The GiMP', you may encounter DLL's problems... The GTK+ package (1) provided with the GiMP may not be fully compatible with one used by TiLP/TiEmu. On the other hand, the package (2) requested by TiLP/TiEmu is compatible with the GiMP. Thus, if you are using The GiMP, you are strongly encouraged to uninstall (1) and install (2). NOTES ----- 1°) This setup may download & install some extra libraries (GTK+ 2.6). The GTK+ package includes the Wimp (Windows IMPersonator) theme engine which gives Windows look & feel (includes XP theming). Is also included the GTK theme selector. You may need to use it on non-NT systems if you get a lot of warnings about a font. Simply disable the WiMP theme for another one. 2°) If anyone is getting one of these: - ** WARNING **: Couldn't load font "MS Sans Serif 8" falling back to "Sans 8" - ** ERROR **: file shape.c line 75: assertion failed: (glyphs->num_glyphs > 0) or any other warning or error message regarding fonts/glyphs, the fix is to open your C:\Program Files\Shared Files\Gtk\2.0\etc\gtk-2.0\gtkrc and to add this: style "user-font" { font_name="Arial" } widget_class "*" style "user-font" This forces GTK+ to use a compatible font (Arial) and reportedly fixes both the aforementioned problems, and probably others too. 3°) If you are getting any errors with DLLs, such as "The procedure entry point atk_relation_set_add_relation_by_type could not be located in the dynamic link library libatk-1.0-0.dll", make sure you have one and only ONE version of the GTK+ DLLs. If unsure, remove all GTK+ packages and install it again. 4°) This setup will: - copy USB drivers into C:\Program Files\{Common Files}\LPG Shared\drivers\usb, - and register them into the Plug&Play database. Simply plug your link cable: Windows should detect a new device and automatically install it. Please note these drivers are not compatible with Ti-Connnect(tm). 5°) This setup will install the DhaHelper driver for Windows NT4/2000/XP machines. This step may require an administrator account (at least for NT4). You may need to REBOOT your machine after installation (if you plan to use a parallel or serial link cable). DhaHelper is copyrighted (c) 2004 Sascha Sommer and released under GPL license. Source code is available from . 6°) The tiemu3-nogdb setup will install the GNU's 'wget' utility for download of GTK+ (http://xoomer.virgilio.it/hherold/). 7°) This setup will install/update the TiLP framework (libti* and drivers) which is installed as shared components since TiLP v1.07, TiEmu v3.01 or GFM v1.00. Any software using the TiLP framework will take advantage of this update. USAGE ----- The installer automatically creates program entries in the Windows Startup menu. AVAILABILITY ------------ http://lpg.ticalc.org/prj_tiemu COPYRIGHT --------- TiEmu is Copyright (C) 2000-2009 by the TiEmu team Copying is allowed under the terms of GNU General Public License (LGPL). See the file COPYING for more details. --------------------------------------------------------------------------- Please report any bugs, questions, ... (please give me your platform, your calculator type (with ROM version) and your link cable model). The TiEmu team. tiemu-3.03-nogdb+dfsg/RELEASE000066400000000000000000000056211220314353500155750ustar00rootroot00000000000000 [ Release notes for TiEmu3 ] Previous version: 3.02 (21/12/2007) Current version: 3.03 (08/05/2009) SubVersion (CVS) revision: $Id: RELEASE 2042 2006-05-07 07:46:23Z roms $ TiEmu is available for 3 platforms: Linux (GTK), Windows (GTK), Mac OS X (GTK) [ In order to use TI's BlackLink serial cables or home-made serial or parallel cables on any NT-based version of Windows (Windows NT 4, Windows 2000, Windows XP, Windows 2003 or any newer version of Windows), you'll need to install the DhaHelper driver. The installer for TiEmu 3 without GDB installs this driver automatically. The installer for TiEmu 3 with GDB currently doesn't. ] An easy way to install the above drivers is to install TiLP 2 for Windows. For the other link cables / operating systems, no driver is needed. New capabilities: ----------------- - none Improvements: ------------- - removed obsolete "virtual" link cable - allow automatic changing of link cable setting when requesting a direct file transfer - adding CR/LF every 16 chars in the link logging window - added i18n support to some strings Bug fixes: ---------- - fixed crash when debugging TIGCC program with GDB with low-level debugger in dock mode - fixed dock window enabling/disabling not to keep the engine running across the restart - fixed InnoSetup installer for use with GTK>=2.10.x - don't allow deleting of last RAM tab to avoid resizing of code/dock window - fixed build with GCC 4.3 - don't shutdown screen when reading battery status don't resize code windows whenever cycle counter change - fixed disassembling of some FLINE instructions like 0xf800 (lionel) - fixed disassembling of BTST instruction (replaced by BRA) - fixed keynames.c build on OS X - link with g++ if --with-kde (fixes --with-kde build on OS X) - fixed use of wrong free function (g_free where gtk_tree_path_free is required) causing crash with GTK+ 2.14 - fixed builtin Tk not working when built against the latest X.Org X11 (Tk bug 2010422) - merged Lionel's patch about link logging: ; take into account buffer overflow - really clears link logging buffer when clicking the 'Clear' button - merged Lionel's patch: allow mix-up of images created by TiEmu 32-bits and TiEmu 64-bits due to a bug in IMG_INFO structure - fixed Lionel's logging problem (missing values on linkport output - fixed "libticables2 access violation" which appears when changing the link cable under some circumstances - don't allow launching of debugger if preloading has not finished yet => crash - fix the "Default" button when importing a Titanium 89u (default to HW3 until we sort out HW4's actual speed, not HW2) - if link cable reconfiguring fails, fallback to null cable & port - merged Lionel's patch: fix buffer overflow in the disasm routine Notes: ------ - pressing Ctrl+Alt+Del makes TiEmu unresponsive. Press Ctrl again... tiemu-3.03-nogdb+dfsg/TODO000066400000000000000000000051271220314353500152630ustar00rootroot00000000000000Planned features: ----------------- * use the contrast field of skin * tracing/logging of mem access or others YaroNet forum: -------------- * = to do x = done 1) Topic : --------------------------------------------------------------- %%%%%%% post 001 (All): * Si on appuie sur F12 lors du chargement (preloading debugger), le menu des ROMs se présente, mais on peut choisir ce qu'on veut, ça ne change strictement rien, et le modèle de calc par défaut se charge. Le clignotement du curseur dans HOME est alors anormal (trop rapide), mais régulier. %%%%%%% post 297 (Pollux): - débuggeur ? F5 sur un breakpoint ne fait que relancer le debugger sans rien exécuter * F8 foire qd la fonction skippée contient un breakpoint (freeze jusqu'à ce qu'on fasse F11) 2) Topic : ------------------------------------------------- %%%%%%% post 215 (Pollux): << - ce serait bien que comme sous VTI les breakpoints ne soient pas perdus quand on restaure le Calculator State, typiquement si on a un plantage on veut examiner la mémoire, ajouter quelques breakpoints et recharger l'état précédent : c'est impossible de faire ça si les breakpoints sont restaurés :( panneau Breakpoints : - Add breakpoint : appuyer sur entrée =/> OK panneau Memory : - quand on fait Ctrl-A l'onglet courant se déplace d'un cran vers la gauche - il faut faire deux fois Ctrl-N pour passer au résultat suivant (la première sélectionne la ligne courante, et la deuxième passe effectivement à l'occurrence suivante) - ce serait sympa d'avoir Add data breakpoint dans le clic droit (avec si possible Word comme taille par défaut, comme ça dans 90% des cas il suffit de faire OK pour créer le breakpoint) - petit détail : si le clic du milieu pouvait fermer l'onglet ce serait pratique (actuellement pour fermer 3 tabs d'un coup il faut les activer puis les fermer chacun à leur tour) panneau Heap : - ce serait super, super, pratique de pouvoir cliquer sur la colonne Address pour trier par adresse croissante - ce serait pas mal aussi d'avoir un "View end of handle" pour voir où finit le handle (j'espère que je t'embête pas trop roms %) ) >> %%%%%%% post 216 (Folco): << Il y aurait les raccourcis claviers à rendre "globaux" surla fenêtre, parce que actuellement, il faut quand même prendre la souris pour sélectionner la partie avec laquelle on veut interragir, on perd donc 90% de l'intérêt des raccourcis >> 3) -- roms: il semblerait que le debugger s'ouvre plus vite avec un GTK récent qu'avec le 2.6, du moins sous Vista. Semble être le contraire sous XP. tiemu-3.03-nogdb+dfsg/acinclude.m4000066400000000000000000003707001220314353500167660ustar00rootroot00000000000000## -*- autoconf -*- dnl This file is part of the KDE libraries/packages dnl Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu) dnl (C) 1997,98,99 Stephan Kulow (coolo@kde.org) dnl Patches for TiEmu Copyright (C) 2005-2007 Kevin Kofler dnl This file is free software; you can redistribute it and/or dnl modify it under the terms of the GNU Library General Public dnl License as published by the Free Software Foundation; either dnl version 2 of the License, or (at your option) any later version. dnl This library is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl Library General Public License for more details. dnl You should have received a copy of the GNU Library General Public License dnl along with this library; see the file COPYING.LIB. If not, write to dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330, dnl Boston, MA 02111-1307, USA. dnl IMPORTANT NOTE: dnl Please do not modify this file unless you expect your modifications to be dnl carried into every other module in the repository. If you decide that you dnl really want to modify it, contact coolo@kde.org mentioning that you have dnl and that the modified file should be committed to every module. dnl dnl Single-module modifications are best placed in configure.in for kdelibs dnl and kdebase or configure.in.in if present. dnl ------------------------------------------------------------------------ dnl Forward compatibility macros (make autoconf 2.13 look like 2.50), dnl thanks to Raja R Harinath. dnl ------------------------------------------------------------------------ dnl ifdef([_AC_PATH_X_XMKMF],[], [AC_DEFUN([_AC_PATH_X_XMKMF],[AC_PATH_X_XMKMF])]) ifdef([AC_OUTPUT_SUBDIRS],[], [AC_DEFUN([AC_OUTPUT_SUBDIRS],[subdirs=$1; _AC_OUTPUT_SUBDIRS])]) # KDE_PATH_X_DIRECT dnl Internal subroutine of AC_PATH_X. dnl Set ac_x_includes and/or ac_x_libraries. AC_DEFUN([KDE_PATH_X_DIRECT], [if test "$ac_x_includes" = NO; then # Guess where to find include files, by looking for this one X11 .h file. test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h # First, try using that file with no special directory specified. AC_TRY_CPP([#include <$x_direct_test_include>], [# We can compile using X headers with no special include directory. ac_x_includes=], [# Look for the header file in a standard set of common directories. # Check X11 before X11Rn because it is often a symlink to the current release. for ac_dir in \ /usr/X11/include \ /usr/X11R6/include \ /usr/X11R5/include \ /usr/X11R4/include \ \ /usr/include/X11 \ /usr/include/X11R6 \ /usr/include/X11R5 \ /usr/include/X11R4 \ \ /usr/local/X11/include \ /usr/local/X11R6/include \ /usr/local/X11R5/include \ /usr/local/X11R4/include \ \ /usr/local/include/X11 \ /usr/local/include/X11R6 \ /usr/local/include/X11R5 \ /usr/local/include/X11R4 \ \ /usr/X386/include \ /usr/x386/include \ /usr/XFree86/include/X11 \ \ /usr/include \ /usr/local/include \ /usr/unsupported/include \ /usr/athena/include \ /usr/local/x11r5/include \ /usr/lpp/Xamples/include \ \ /usr/openwin/include \ /usr/openwin/share/include \ ; \ do if test -r "$ac_dir/$x_direct_test_include"; then ac_x_includes=$ac_dir break fi done]) fi # $ac_x_includes = NO if test "$ac_x_libraries" = NO; then # Check for the libraries. test -z "$x_direct_test_library" && x_direct_test_library=Xt test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" AC_TRY_LINK(, [${x_direct_test_function}()], [LIBS="$ac_save_LIBS" # We can link X programs with no special library path. ac_x_libraries=], [LIBS="$ac_save_LIBS" # First see if replacing the include by lib works. # Check X11 before X11Rn because it is often a symlink to the current release. for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \ /usr/X11/lib \ /usr/X11R6/lib \ /usr/X11R5/lib \ /usr/X11R4/lib \ \ /usr/lib/X11 \ /usr/lib/X11R6 \ /usr/lib/X11R5 \ /usr/lib/X11R4 \ \ /usr/local/X11/lib \ /usr/local/X11R6/lib \ /usr/local/X11R5/lib \ /usr/local/X11R4/lib \ \ /usr/local/lib/X11 \ /usr/local/lib/X11R6 \ /usr/local/lib/X11R5 \ /usr/local/lib/X11R4 \ \ /usr/X386/lib \ /usr/x386/lib \ /usr/XFree86/lib/X11 \ \ /usr/lib \ /usr/local/lib \ /usr/unsupported/lib \ /usr/athena/lib \ /usr/local/x11r5/lib \ /usr/lpp/Xamples/lib \ /lib/usr/lib/X11 \ \ /usr/openwin/lib \ /usr/openwin/share/lib \ ; \ do dnl Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl; do if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done]) fi # $ac_x_libraries = NO ]) dnl ------------------------------------------------------------------------ dnl Find a file (or one of more files in a list of dirs) dnl ------------------------------------------------------------------------ dnl AC_DEFUN([AC_FIND_FILE], [ $3=NO for i in $2; do for j in $1; do echo "configure: __oline__: $i/$j" >&AC_FD_CC if test -r "$i/$j"; then echo "taking that" >&AC_FD_CC $3=$i break 2 fi done done ]) dnl KDE_FIND_PATH(programm-name, variable-name, list of directories, dnl if-not-found, test-parameter) AC_DEFUN([KDE_FIND_PATH], [ AC_MSG_CHECKING([for $1]) if test -n "$$2"; then kde_cv_path="$$2"; else kde_cache=`echo $1 | sed 'y%./+-%__p_%'` AC_CACHE_VAL(kde_cv_path_$kde_cache, [ kde_cv_path="NONE" dirs="$3" kde_save_IFS=$IFS IFS=':' for dir in $PATH; do dirs="$dirs $dir" done IFS=$kde_save_IFS for dir in $dirs; do if test -x "$dir/$1"; then if test -n "$5" then evalstr="$dir/$1 $5 2>&1 " if eval $evalstr; then kde_cv_path="$dir/$1" break fi else kde_cv_path="$dir/$1" break fi fi done eval "kde_cv_path_$kde_cache=$kde_cv_path" ]) eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" fi if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then AC_MSG_RESULT(not found) $4 else AC_MSG_RESULT($kde_cv_path) $2=$kde_cv_path fi ]) AC_DEFUN([KDE_MOC_ERROR_MESSAGE], [ AC_MSG_ERROR([No Qt meta object compiler (moc) found! Please check whether you installed Qt correctly. You need to have a running moc binary. configure tried to run $ac_cv_path_moc and the test didn't succeed. If configure shouldn't have tried this one, set the environment variable MOC to the right one before running configure. ]) ]) AC_DEFUN([KDE_UIC_ERROR_MESSAGE], [ AC_MSG_WARN([No Qt ui compiler (uic) found! Please check whether you installed Qt correctly. You need to have a running uic binary. configure tried to run $ac_cv_path_uic and the test didn't succeed. If configure shouldn't have tried this one, set the environment variable UIC to the right one before running configure. ]) ]) AC_DEFUN([KDE_CHECK_UIC_FLAG], [ AC_MSG_CHECKING([whether uic supports -$1 ]) kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'` AC_CACHE_VAL(kde_cv_prog_uic_$kde_cache, [ cat >conftest.ui < EOT ac_uic_testrun="$UIC -$1 $2 conftest.ui >/dev/null" if AC_TRY_EVAL(ac_uic_testrun); then eval "kde_cv_prog_uic_$kde_cache=yes" else eval "kde_cv_prog_uic_$kde_cache=no" fi rm -f conftest* ]) if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then AC_MSG_RESULT([yes]) : $3 else AC_MSG_RESULT([no]) : $4 fi ]) dnl ------------------------------------------------------------------------ dnl Find the meta object compiler and the ui compiler in the PATH, dnl in $QTDIR/bin, and some more usual places dnl ------------------------------------------------------------------------ dnl AC_DEFUN([AC_PATH_QT_MOC_UIC], [ qt_bindirs="" for dir in $kde_qt_dirs; do qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc" done qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin" if test ! "$ac_qt_bindir" = "NO"; then qt_bindirs="$ac_qt_bindir $qt_bindirs" fi KDE_FIND_PATH(moc, MOC, [$qt_bindirs], [KDE_MOC_ERROR_MESSAGE]) if test -z "$UIC_NOT_NEEDED"; then KDE_FIND_PATH(uic, UIC, [$qt_bindirs], [UIC=""]) if test -z "$UIC" ; then KDE_UIC_ERROR_MESSAGE exit 1 elif test $kde_qtver = 3; then KDE_CHECK_UIC_FLAG(L,[/nonexistant],ac_uic_supports_libpath=yes,ac_uic_supports_libpath=no) KDE_CHECK_UIC_FLAG(nounload,,ac_uic_supports_nounload=yes,ac_uic_supports_nounload=no) if test x$ac_uic_supports_libpath = xyes; then UIC="$UIC -L \$(kde_widgetdir)" fi if test x$ac_uic_supports_nounload = xyes; then UIC="$UIC -nounload" fi fi else UIC="echo uic not available: " fi AC_SUBST(MOC) AC_SUBST(UIC) UIC_TR="i18n" if test $kde_qtver = 3; then UIC_TR="tr2i18n" fi AC_SUBST(UIC_TR) ]) AC_DEFUN([KDE_1_CHECK_PATHS], [ KDE_1_CHECK_PATH_HEADERS KDE_TEST_RPATH= if test -n "$USE_RPATH"; then if test -n "$kde_libraries"; then KDE_TEST_RPATH="-R $kde_libraries" fi if test -n "$qt_libraries"; then KDE_TEST_RPATH="$KDE_TEST_RPATH -R $qt_libraries" fi if test -n "$x_libraries"; then KDE_TEST_RPATH="$KDE_TEST_RPATH -R $x_libraries" fi KDE_TEST_RPATH="$KDE_TEST_RPATH $KDE_EXTRA_RPATH" fi AC_MSG_CHECKING([for KDE libraries installed]) ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS $all_libraries conftest.$ac_ext $LIBS -lkdecore $LIBQT $KDE_TEST_RPATH 1>&5' if AC_TRY_EVAL(ac_link) && test -s conftest; then AC_MSG_RESULT(yes) else AC_MSG_ERROR([your system fails at linking a small KDE application! Check, if your compiler is installed correctly and if you have used the same compiler to compile Qt and kdelibs as you did use now. For more details about this problem, look at the end of config.log.]) fi if eval `KDEDIR= ./conftest 2>&5`; then kde_result=done else kde_result=problems fi KDEDIR= ./conftest 2> /dev/null >&5 # make an echo for config.log kde_have_all_paths=yes KDE_SET_PATHS($kde_result) ]) AC_DEFUN([KDE_SET_PATHS], [ kde_cv_all_paths="kde_have_all_paths=\"yes\" \ kde_htmldir=\"$kde_htmldir\" \ kde_appsdir=\"$kde_appsdir\" \ kde_icondir=\"$kde_icondir\" \ kde_sounddir=\"$kde_sounddir\" \ kde_datadir=\"$kde_datadir\" \ kde_locale=\"$kde_locale\" \ kde_cgidir=\"$kde_cgidir\" \ kde_confdir=\"$kde_confdir\" \ kde_mimedir=\"$kde_mimedir\" \ kde_toolbardir=\"$kde_toolbardir\" \ kde_wallpaperdir=\"$kde_wallpaperdir\" \ kde_templatesdir=\"$kde_templatesdir\" \ kde_bindir=\"$kde_bindir\" \ kde_servicesdir=\"$kde_servicesdir\" \ kde_servicetypesdir=\"$kde_servicetypesdir\" \ kde_moduledir=\"$kde_moduledir\" \ kde_styledir=\"$kde_styledir\" \ kde_widgetdir=\"$kde_widgetdir\" \ kde_result=$1" ]) AC_DEFUN([KDE_SET_DEFAULT_PATHS], [ if test "$1" = "default"; then if test -z "$kde_htmldir"; then kde_htmldir='\${prefix}/share/doc/HTML' fi if test -z "$kde_appsdir"; then kde_appsdir='\${prefix}/share/applnk' fi if test -z "$kde_icondir"; then kde_icondir='\${prefix}/share/icons' fi if test -z "$kde_sounddir"; then kde_sounddir='\${prefix}/share/sounds' fi if test -z "$kde_datadir"; then kde_datadir='\${prefix}/share/apps' fi if test -z "$kde_locale"; then kde_locale='\${prefix}/share/locale' fi if test -z "$kde_cgidir"; then kde_cgidir='\${exec_prefix}/cgi-bin' fi if test -z "$kde_confdir"; then kde_confdir='\${prefix}/share/config' fi if test -z "$kde_mimedir"; then kde_mimedir='\${prefix}/share/mimelnk' fi if test -z "$kde_toolbardir"; then kde_toolbardir='\${prefix}/share/toolbar' fi if test -z "$kde_wallpaperdir"; then kde_wallpaperdir='\${prefix}/share/wallpapers' fi if test -z "$kde_templatesdir"; then kde_templatesdir='\${prefix}/share/templates' fi if test -z "$kde_bindir"; then kde_bindir='\${exec_prefix}/bin' fi if test -z "$kde_servicesdir"; then kde_servicesdir='\${prefix}/share/services' fi if test -z "$kde_servicetypesdir"; then kde_servicetypesdir='\${prefix}/share/servicetypes' fi if test -z "$kde_moduledir"; then if test "$kde_qtver" = "2"; then kde_moduledir='\${exec_prefix}/lib/kde2' else kde_moduledir='\${exec_prefix}/lib/kde3' fi fi if test -z "$kde_styledir"; then kde_styledir='\${exec_prefix}/lib/kde3/plugins/styles' fi if test -z "$kde_widgetdir"; then kde_widgetdir='\${exec_prefix}/lib/kde3/plugins/designer' fi KDE_SET_PATHS(defaults) else if test $kde_qtver = 1; then AC_MSG_RESULT([compiling]) KDE_1_CHECK_PATHS else AC_MSG_ERROR([path checking not yet supported for KDE 2]) fi fi ]) AC_DEFUN([KDE_CHECK_PATHS_FOR_COMPLETENESS], [ if test -z "$kde_htmldir" || test -z "$kde_appsdir" || test -z "$kde_icondir" || test -z "$kde_sounddir" || test -z "$kde_datadir" || test -z "$kde_locale" || test -z "$kde_cgidir" || test -z "$kde_confdir" || test -z "$kde_mimedir" || test -z "$kde_toolbardir" || test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" || test -z "$kde_bindir" || test -z "$kde_servicesdir" || test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" || test -z "$kde_styledir" || test -z "kde_widgetdir" test "x$kde_have_all_paths" != "xyes"; then kde_have_all_paths=no fi ]) AC_DEFUN([KDE_MISSING_PROG_ERROR], [ AC_MSG_ERROR([The important program $1 was not found! Please check whether you installed KDE correctly. ]) ]) AC_DEFUN([KDE_SUBST_PROGRAMS], [ kde_default_bindirs="`kde-config --prefix`/bin /usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin" if test -n "$KDEDIRS"; then kde_save_IFS=$IFS IFS=: for dir in $KDEDIRS; do kde_default_bindirs="$dir/bin $kde_default_bindirs " done IFS=$kde_save_IFS fi kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_default_bindirs" KDE_FIND_PATH(dcopidl, DCOPIDL, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl)]) KDE_FIND_PATH(dcopidl2cpp, DCOPIDL2CPP, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl2cpp)]) KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs]) DCOP_DEPENDENCIES='$(DCOPIDL)' AC_SUBST(DCOPIDL) AC_SUBST(DCOPIDL2CPP) AC_SUBST(DCOP_DEPENDENCIES) AC_SUBST(KDECONFIG) if test -x "$KDECONFIG"; then # it can be "compiled" kde_libs_prefix=`$KDECONFIG --prefix` if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then AC_MSG_ERROR([$KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs. This means it has been moved since you installed it. This won't work. Please recompile kdelibs for the new prefix. ]) fi kde_libs_htmldir=`$KDECONFIG --install html --expandvars` else kde_libs_prefix='$(prefix)' kde_libs_htmldir='$(kde_htmldir)' fi AC_SUBST(kde_libs_prefix) AC_SUBST(kde_libs_htmldir) ])dnl AC_DEFUN([AC_CREATE_KFSSTND], [ AC_REQUIRE([AC_CHECK_RPATH]) AC_MSG_CHECKING([for KDE paths]) kde_result="" kde_cached_paths=yes AC_CACHE_VAL(kde_cv_all_paths, [ KDE_SET_DEFAULT_PATHS($1) kde_cached_paths=no ]) eval "$kde_cv_all_paths" KDE_CHECK_PATHS_FOR_COMPLETENESS if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then # wrong values were cached, may be, we can set better ones kde_result= kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir= kde_datadir= kde_locale= kde_cgidir= kde_confdir= kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir= kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir= kde_have_all_paths= kde_styledir= kde_widgetdir= KDE_SET_DEFAULT_PATHS($1) eval "$kde_cv_all_paths" KDE_CHECK_PATHS_FOR_COMPLETENESS kde_result="$kde_result (cache overridden)" fi if test "$kde_have_all_paths" = "no"; then AC_MSG_ERROR([configure could not run a little KDE program to test the environment. Since it had compiled and linked before, it must be a strange problem on your system. Look at config.log for details. If you are not able to fix this, look at http://www.kde.org/faq/installation.html or any www.kde.org mirror. (If you're using an egcs version on Linux, you may update binutils!) ]) else rm -f conftest* AC_MSG_RESULT($kde_result) fi bindir=$kde_bindir KDE_SUBST_PROGRAMS ]) AC_DEFUN([AC_SUBST_KFSSTND], [ AC_SUBST(kde_htmldir) AC_SUBST(kde_appsdir) AC_SUBST(kde_icondir) AC_SUBST(kde_sounddir) AC_SUBST(kde_datadir) AC_SUBST(kde_locale) AC_SUBST(kde_confdir) AC_SUBST(kde_mimedir) AC_SUBST(kde_wallpaperdir) AC_SUBST(kde_bindir) dnl for KDE 2 AC_SUBST(kde_templatesdir) AC_SUBST(kde_servicesdir) AC_SUBST(kde_servicetypesdir) AC_SUBST(kde_moduledir) AC_SUBST(kde_styledir) AC_SUBST(kde_widgetdir) if test "$kde_qtver" = 1; then kde_minidir="$kde_icondir/mini" else # for KDE 1 - this breaks KDE2 apps using minidir, but # that's the plan ;-/ kde_minidir="/dev/null" fi dnl AC_SUBST(kde_minidir) dnl AC_SUBST(kde_cgidir) dnl AC_SUBST(kde_toolbardir) ]) AC_DEFUN([KDE_MISC_TESTS], [ AC_LANG_C dnl Checks for libraries. AC_CHECK_LIB(util, main, [LIBUTIL="-lutil"]) dnl for *BSD AC_SUBST(LIBUTIL) AC_CHECK_LIB(compat, main, [LIBCOMPAT="-lcompat"]) dnl for *BSD AC_SUBST(LIBCOMPAT) kde_have_crypt= AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"; kde_have_crypt=yes], AC_CHECK_LIB(c, crypt, [kde_have_crypt=yes], [ AC_MSG_WARN([you have no crypt in either libcrypt or libc. You should install libcrypt from another source or configure with PAM support]) kde_have_crypt=no ])) AC_SUBST(LIBCRYPT) if test $kde_have_crypt = yes; then AC_DEFINE_UNQUOTED(HAVE_CRYPT, 1, [Defines if your system has the crypt function]) fi AC_CHECK_SOCKLEN_T AC_LANG_C AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) if test $ac_cv_lib_dnet_dnet_ntoa = no; then AC_CHECK_LIB(dnet_stub, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) fi AC_CHECK_FUNC(inet_ntoa) if test $ac_cv_func_inet_ntoa = no; then AC_CHECK_LIB(nsl, inet_ntoa, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl") fi AC_CHECK_FUNC(connect) if test $ac_cv_func_connect = no; then AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", , $X_EXTRA_LIBS) fi AC_CHECK_FUNC(remove) if test $ac_cv_func_remove = no; then AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix") fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. AC_CHECK_FUNC(shmat, , AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc")) # Solaris 2.6 and others need -lresolv for res_init AC_CHECK_FUNCS(res_init, , [ kde_libs_safe="$LIBS" LIBS="$LIBS $X_EXTRA_LIBS -lresolv" AC_TRY_LINK( [ #include ], [ res_init(); ], LIBRESOLV="-lresolv" X_EXTRA_LIBS="$X_EXTRA_LIBS $LIBRESOLV" AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function]) ) LIBS=$kde_libs_safe ]) LIBSOCKET="$X_EXTRA_LIBS" AC_SUBST(LIBSOCKET) AC_SUBST(LIBRESOLV) AC_SUBST(X_EXTRA_LIBS) AC_CHECK_LIB(ucb, killpg, [LIBUCB="-lucb"]) dnl for Solaris2.4 AC_SUBST(LIBUCB) case $host in dnl this *is* LynxOS specific *-*-lynxos* ) AC_MSG_CHECKING([LynxOS header file wrappers]) [CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"] AC_MSG_RESULT(disabled) AC_CHECK_LIB(bsd, gethostbyname, [LIBSOCKET="-lbsd"]) dnl for LynxOS ;; esac KDE_CHECK_TYPES KDE_CHECK_LIBDL ]) dnl ------------------------------------------------------------------------ dnl Find the header files and libraries for X-Windows. Extended the dnl macro AC_PATH_X dnl ------------------------------------------------------------------------ dnl AC_DEFUN([K_PATH_X], [ AC_REQUIRE([KDE_MISC_TESTS])dnl AC_ARG_ENABLE( embedded, [ --enable-embedded link to Qt-embedded, don't use X], kde_use_qt_emb=$enableval, kde_use_qt_emb=no ) AC_ARG_ENABLE( qtopia, [ --enable-qtopia link to Qt-embedded, link to the Qtopia Environment], kde_use_qt_emb_palm=$enableval, kde_use_qt_emb_palm=no ) if test "$kde_use_qt_emb" = "no"; then AC_MSG_CHECKING(for X) AC_LANG_SAVE AC_LANG_C AC_CACHE_VAL(kde_cv_have_x, [# One or both of the vars are not set, and there is no cached value. if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then kde_x_includes=NO else kde_x_includes=$x_includes fi if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then kde_x_libraries=NO else kde_x_libraries=$x_libraries fi # below we use the standard autoconf calls ac_x_libraries=$kde_x_libraries ac_x_includes=$kde_x_includes KDE_PATH_X_DIRECT dnl AC_PATH_X_XMKMF picks /usr/lib as the path for the X libraries. dnl Unfortunately, if compiling with the N32 ABI, this is not the correct dnl location. The correct location is /usr/lib32 or an undefined value dnl (the linker is smart enough to pick the correct default library). dnl Things work just fine if you use just AC_PATH_X_DIRECT. dnl Solaris has a similar problem. AC_PATH_X_XMKMF forces x_includes to dnl /usr/openwin/include, which doesn't work. /usr/include does work, so dnl x_includes should be left alone. case "$host" in mips-sgi-irix6*) ;; *-*-solaris*) ;; *) _AC_PATH_X_XMKMF if test -z "$ac_x_includes"; then ac_x_includes="." fi if test -z "$ac_x_libraries"; then ac_x_libraries="/usr/lib" fi esac #from now on we use our own again # when the user already gave --x-includes, we ignore # what the standard autoconf macros told us. if test "$kde_x_includes" = NO; then kde_x_includes=$ac_x_includes fi # for --x-libraries too if test "$kde_x_libraries" = NO; then kde_x_libraries=$ac_x_libraries fi if test "$kde_x_includes" = NO; then AC_MSG_ERROR([Can't find X includes. Please check your installation and add the correct paths!]) fi if test "$kde_x_libraries" = NO; then AC_MSG_ERROR([Can't find X libraries. Please check your installation and add the correct paths!]) fi # Record where we found X for the cache. kde_cv_have_x="have_x=yes \ kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries" ])dnl eval "$kde_cv_have_x" if test "$have_x" != yes; then AC_MSG_RESULT($have_x) no_x=yes else AC_MSG_RESULT([libraries $kde_x_libraries, headers $kde_x_includes]) fi if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then X_INCLUDES="" x_includes="."; dnl better than nothing :- else x_includes=$kde_x_includes X_INCLUDES="-I$x_includes" fi if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE; then X_LDFLAGS="" x_libraries="/usr/lib"; dnl better than nothing :- else x_libraries=$kde_x_libraries X_LDFLAGS="-L$x_libraries" fi all_includes="$X_INCLUDES" all_libraries="$X_LDFLAGS" AC_SUBST(X_INCLUDES) AC_SUBST(X_LDFLAGS) AC_SUBST(x_libraries) AC_SUBST(x_includes) # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $X_LDFLAGS" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. AC_CHECK_LIB(ICE, IceConnectionNumber, [LIBSM="-lSM -lICE"], , $X_EXTRA_LIBS) AC_SUBST(LIBSM) LDFLAGS="$ac_save_LDFLAGS" AC_SUBST(X_PRE_LIBS) LIB_X11='-lX11 $(LIBSOCKET)' AC_SUBST(LIB_X11) AC_MSG_CHECKING(for libXext) AC_CACHE_VAL(kde_cv_have_libXext, [ kde_ldflags_safe="$LDFLAGS" kde_libs_safe="$LIBS" LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS" LIBS="-lXext -lX11 $LIBSOCKET" AC_TRY_LINK([ #include #ifdef STDC_HEADERS # include #endif ], [ printf("hello Xext\n"); ], kde_cv_have_libXext=yes, kde_cv_have_libXext=no ) LDFLAGS=$kde_ldflags_safe LIBS=$kde_libs_safe ]) AC_MSG_RESULT($kde_cv_have_libXext) if test "$kde_cv_have_libXext" = "no"; then AC_MSG_ERROR([We need a working libXext to proceed. Since configure can't find it itself, we stop here assuming that make wouldn't find them either.]) fi AC_MSG_CHECKING(for Xinerama) AC_ARG_WITH(xinerama, [ --with-xinerama enable support for Xinerama ], [ no_xinerama=no ], [ no_xinerama=yes ] ) kde_save_LDFLAGS="$LDFLAGS" kde_save_CFLAGS="$CFLAGS" kde_save_LIBS="$LIBS" LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS" CFLAGS="$CFLAGS -I$x_includes" LIBS="-lXinerama -lXext" if test "x$no_xinerama" = "xno"; then AC_CACHE_VAL(ac_cv_have_xinerama, [ AC_TRY_LINK([#include #include ], [XineramaIsActive(NULL);], [ac_cv_have_xinerama="yes"], [ac_cv_have_xinerama="no"]) ]) else ac_cv_have_xinerama=no; fi AC_MSG_RESULT($ac_cv_have_xinerama) LIBXINERAMA="" if test "$ac_cv_have_xinerama" = "yes"; then AC_DEFINE(HAVE_XINERAMA, 1, [Define if you want Xinerama support]) LIBXINERAMA="-lXinerama" fi AC_SUBST(LIBXINERAMA) LDFLAGS="$kde_save_LDFLAGS" CFLAGS="$kde_save_CFLAGS" LIBS="$kde_save_LIBS" LIB_XEXT="-lXext" QTE_NORTTI="" else dnl We're using QT Embedded CXXFLAGS="$CXXFLAGS -fno-rtti -DQWS" CFLAGS="$CFLAGS -DQWS" LDFLAGS="$LDFLAGS -DQWS" QTE_NORTTI="-fno-rtti -DQWS" X_PRE_LIBS="" LIB_X11="" LIB_XEXT="" LIBSM="" X_INCLUDES="" X_LDFLAGS="" x_includes="" x_libraries="" AC_SUBST(X_PRE_LIBS) AC_SUBST(LIB_X11) AC_SUBST(LIBSM) AC_SUBST(X_INCLUDES) AC_SUBST(X_LDFLAGS) AC_SUBST(x_includes) AC_SUBST(x_libraries) fi AC_SUBST(QTE_NORTTI) AC_SUBST(LIB_XEXT) AC_LANG_RESTORE ]) AC_DEFUN([KDE_PRINT_QT_PROGRAM], [ AC_REQUIRE([KDE_USE_QT]) cat > conftest.$ac_ext < #include EOF if test "$kde_qtver" = "2"; then cat >> conftest.$ac_ext < #include #include EOF if test $kde_qtsubver -gt 0; then cat >> conftest.$ac_ext < EOF fi fi if test "$kde_qtver" = "3"; then cat >> conftest.$ac_ext < #include #include EOF fi echo "#if ! ($kde_qt_verstring)" >> conftest.$ac_ext cat >> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <&AC_FD_CC cat conftest.$ac_ext >&AC_FD_CC fi rm -f conftest* CXXFLAGS="$ac_cxxflags_safe" LDFLAGS="$ac_ldflags_safe" LIBS="$ac_libs_safe" LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe" export LD_LIBRARY_PATH LIBRARY_PATH="$ac_LIBRARY_PATH" export LIBRARY_PATH AC_LANG_RESTORE ]) if test "$kde_cv_qt_direct" = "yes"; then AC_MSG_RESULT(yes) $1 else AC_MSG_RESULT(no) $2 fi ]) dnl ------------------------------------------------------------------------ dnl Try to find the Qt headers and libraries. dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed) dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed) dnl ------------------------------------------------------------------------ dnl AC_DEFUN([AC_PATH_QT_1_3], [ AC_REQUIRE([K_PATH_X]) AC_REQUIRE([KDE_USE_QT]) dnl ------------------------------------------------------------------------ dnl Add configure flag to enable linking to MT version of Qt library. dnl ------------------------------------------------------------------------ AC_ARG_ENABLE( mt, [ --disable-mt link to non-threaded Qt (deprecated)], kde_use_qt_mt=$enableval, [ if test $kde_qtver = 3; then kde_use_qt_mt=yes else kde_use_qt_mt=no fi ] ) USING_QT_MT="" dnl ------------------------------------------------------------------------ dnl If we not get --disable-qt-mt then adjust some vars for the host. dnl ------------------------------------------------------------------------ KDE_MT_LDFLAGS= KDE_MT_LIBS= if test "x$kde_use_qt_mt" = "xyes"; then KDE_CHECK_THREADING if test "x$kde_use_threading" = "xyes"; then CPPFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CPPFLAGS" KDE_MT_LDFLAGS="$USE_THREADS" KDE_MT_LIBS="$LIBPTHREAD" else kde_use_qt_mt=no fi fi AC_SUBST(KDE_MT_LDFLAGS) AC_SUBST(KDE_MT_LIBS) kde_qt_was_given=yes dnl ------------------------------------------------------------------------ dnl If we haven't been told how to link to Qt, we work it out for ourselves. dnl ------------------------------------------------------------------------ if test -z "$LIBQT_GLOB"; then if test "x$kde_use_qt_emb" = "xyes"; then LIBQT_GLOB="libqte.*" else LIBQT_GLOB="libqt.*" fi fi if test -z "$LIBQT"; then dnl ------------------------------------------------------------ dnl If we got --enable-embedded then adjust the Qt library name. dnl ------------------------------------------------------------ if test "x$kde_use_qt_emb" = "xyes"; then qtlib="qte" else qtlib="qt" fi kde_int_qt="-l$qtlib" else kde_int_qt="$LIBQT" kde_lib_qt_set=yes fi if test -z "$LIBQPE"; then dnl ------------------------------------------------------------ dnl If we got --enable-palmtop then add -lqpe to the link line dnl ------------------------------------------------------------ if test "x$kde_use_qt_emb" = "xyes"; then if test "x$kde_use_qt_emb_palm" = "xyes"; then LIB_QPE="-lqpe" else LIB_QPE="" fi else LIB_QPE="" fi fi dnl ------------------------------------------------------------------------ dnl If we got --enable-qt-mt then adjust the Qt library name for the host. dnl ------------------------------------------------------------------------ if test "x$kde_use_qt_mt" = "xyes"; then if test -z "$LIBQT"; then LIBQT="-l$qtlib-mt" kde_int_qt="-l$qtlib-mt" else LIBQT="$qtlib-mt" kde_int_qt="$qtlib-mt" fi LIBQT_GLOB="lib$qtlib-mt.*" USING_QT_MT="using -mt" else LIBQT="-l$qtlib" fi if test $kde_qtver != 1; then AC_REQUIRE([AC_FIND_PNG]) AC_REQUIRE([AC_FIND_JPEG]) LIBQT="$LIBQT $LIBPNG $LIBJPEG" fi if test $kde_qtver = 3; then AC_REQUIRE([KDE_CHECK_LIBDL]) LIBQT="$LIBQT $LIBDL" fi AC_MSG_CHECKING([for Qt]) if test "x$kde_use_qt_emb" != "xyes"; then LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET" fi ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO qt_libraries="" qt_includes="" AC_ARG_WITH(qt-dir, [ --with-qt-dir=DIR where the root of Qt is installed ], [ ac_qt_includes="$withval"/include ac_qt_libraries="$withval"/lib ac_qt_bindir="$withval"/bin ]) AC_ARG_WITH(qt-includes, [ --with-qt-includes=DIR where the Qt includes are. ], [ ac_qt_includes="$withval" ]) kde_qt_libs_given=no AC_ARG_WITH(qt-libraries, [ --with-qt-libraries=DIR where the Qt library is installed.], [ ac_qt_libraries="$withval" kde_qt_libs_given=yes ]) AC_CACHE_VAL(ac_cv_have_qt, [#try to guess Qt locations qt_incdirs="" for dir in $kde_qt_dirs; do qt_incdirs="$qt_incdirs $dir/include $dir" done qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include /usr/include/qt /usr/include/qt3 /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 $x_includes" if test ! "$ac_qt_includes" = "NO"; then qt_incdirs="$ac_qt_includes $qt_incdirs" fi if test "$kde_qtver" != "1"; then kde_qt_header=qstyle.h else kde_qt_header=qglobal.h fi AC_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir) ac_qt_includes="$qt_incdir" qt_libdirs="" for dir in $kde_qt_dirs; do qt_libdirs="$qt_libdirs $dir/lib $dir" done qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries" if test ! "$ac_qt_libraries" = "NO"; then qt_libdir=$ac_qt_libraries else qt_libdirs="$ac_qt_libraries $qt_libdirs" # if the Qt was given, the chance is too big that libqt.* doesn't exist qt_libdir=NONE for dir in $qt_libdirs; do try="ls -1 $dir/${LIBQT_GLOB}" if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi done fi ac_qt_libraries="$qt_libdir" AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_cxxflags_safe="$CXXFLAGS" ac_ldflags_safe="$LDFLAGS" ac_libs_safe="$LIBS" CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" LIBS="$LIBS $LIBQT $KDE_MT_LIBS" KDE_PRINT_QT_PROGRAM if AC_TRY_EVAL(ac_link) && test -s conftest; then rm -f conftest* else echo "configure: failed program was:" >&AC_FD_CC cat conftest.$ac_ext >&AC_FD_CC ac_qt_libraries="NO" fi rm -f conftest* CXXFLAGS="$ac_cxxflags_safe" LDFLAGS="$ac_ldflags_safe" LIBS="$ac_libs_safe" AC_LANG_RESTORE if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then ac_cv_have_qt="have_qt=no" ac_qt_notfound="" missing_qt_mt="" if test "$ac_qt_includes" = NO; then if test "$ac_qt_libraries" = NO; then ac_qt_notfound="(headers and libraries)"; else ac_qt_notfound="(headers)"; fi else if test "x$kde_use_qt_mt" = "xyes"; then missing_qt_mt=" Make sure that you have compiled Qt with thread support!" ac_qt_notfound="(library $qtlib-mt)"; else ac_qt_notfound="(library $qtlib)"; fi fi AC_MSG_ERROR([Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation! For more details about this problem, look at the end of config.log.$missing_qt_mt]) else have_qt="yes" fi ]) eval "$ac_cv_have_qt" if test "$have_qt" != yes; then AC_MSG_RESULT([$have_qt]); else ac_cv_have_qt="have_qt=yes \ ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries" AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT]) qt_libraries="$ac_qt_libraries" qt_includes="$ac_qt_includes" fi if test ! "$kde_qt_libs_given" = "yes"; then KDE_CHECK_QT_DIRECT(qt_libraries= ,[]) fi AC_SUBST(qt_libraries) AC_SUBST(qt_includes) if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then QT_INCLUDES="" else QT_INCLUDES="-I$qt_includes" all_includes="$QT_INCLUDES $all_includes" fi if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then QT_LDFLAGS="" else QT_LDFLAGS="-L$qt_libraries" all_libraries="$all_libraries $QT_LDFLAGS" fi test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS" AC_SUBST(QT_INCLUDES) AC_SUBST(QT_LDFLAGS) AC_PATH_QT_MOC_UIC KDE_CHECK_QT_JPEG if test "x$kde_use_qt_emb" != "xyes"; then LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBPNG) -lXext $(LIB_X11) $(LIBSM)' else LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBPNG)' fi test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS" AC_SUBST(LIB_QT) AC_SUBST(LIB_QPE) AC_SUBST(kde_qtver) ]) AC_DEFUN([AC_PATH_QT], [ AC_PATH_QT_1_3 ]) AC_DEFUN([KDE_CHECK_FINAL], [ AC_ARG_ENABLE(final, [ --enable-final build size optimized apps (experimental - needs lots of memory)], kde_use_final=$enableval, kde_use_final=no) KDE_COMPILER_REPO if test "x$kde_use_final" = "xyes"; then KDE_USE_FINAL_TRUE="" KDE_USE_FINAL_FALSE="#" else KDE_USE_FINAL_TRUE="#" KDE_USE_FINAL_FALSE="" fi AC_SUBST(KDE_USE_FINAL_TRUE) AC_SUBST(KDE_USE_FINAL_FALSE) AC_ARG_ENABLE(closure, [ --disable-closure don't delay template instantiation], kde_use_closure=$enableval, kde_use_closure=yes) if test "x$kde_use_closure" = "xyes"; then KDE_USE_CLOSURE_TRUE="" KDE_USE_CLOSURE_FALSE="#" # CXXFLAGS="$CXXFLAGS $REPO" else KDE_USE_CLOSURE_TRUE="#" KDE_USE_CLOSURE_FALSE="" fi AC_SUBST(KDE_USE_CLOSURE_TRUE) AC_SUBST(KDE_USE_CLOSURE_FALSE) ]) dnl ------------------------------------------------------------------------ dnl Now, the same with KDE dnl $(KDE_LDFLAGS) will be the kdeliblocation (if needed) dnl and $(kde_includes) will be the kdehdrlocation (if needed) dnl ------------------------------------------------------------------------ dnl AC_DEFUN([AC_BASE_PATH_KDE], [ AC_PREREQ([2.13]) AC_REQUIRE([AC_PATH_QT])dnl AC_CHECK_RPATH AC_MSG_CHECKING([for KDE]) if test "${prefix}" != NONE; then kde_includes=${prefix}/include ac_kde_includes=$prefix/include if test "${exec_prefix}" != NONE; then kde_libraries=${exec_prefix}/lib ac_kde_libraries=$exec_prefix/lib else kde_libraries=${prefix}/lib ac_kde_libraries=$prefix/lib fi else ac_kde_includes= ac_kde_libraries= kde_libraries="" kde_includes="" fi AC_CACHE_VAL(ac_cv_have_kde, [#try to guess kde locations if test "$kde_qtver" = 1; then kde_check_header="ksock.h" kde_check_lib="libkdecore.la" else kde_check_header="ksharedptr.h" kde_check_lib="libkio.la" fi if test -z "$1"; then test -n "$KDEDIR" || KDEDIR=`kde-config --prefix` kde_incdirs="$KDEDIR/include/kde3 $KDEDIR/include/kde $KDEDIR/include" kde_incdirs="$kde_incdirs $ac_kde_includes" AC_FIND_FILE($kde_check_header, $kde_incdirs, kde_incdir) ac_kde_includes="$kde_incdir" if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then AC_MSG_ERROR([ in the prefix, you've chosen, are no KDE headers installed. This will fail. So, check this please and use another prefix!]) fi kde_libdirs="$KDEDIR/lib`kde-config --libsuffix`" kde_libdirs="$kde_libdirs $ac_kde_libraries" AC_FIND_FILE($kde_check_lib, $kde_libdirs, kde_libdir) ac_kde_libraries="$kde_libdir" if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then AC_MSG_ERROR([ in the prefix, you've chosen, are no KDE libraries installed. This will fail. So, check this please and use another prefix!]) fi ac_kde_libraries="$kde_libdir" if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO; then ac_cv_have_kde="have_kde=no" else ac_cv_have_kde="have_kde=yes \ ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" fi else dnl test -z $1 ac_cv_have_kde="have_kde=no" fi ])dnl eval "$ac_cv_have_kde" if test "$have_kde" != "yes"; then if test "${prefix}" = NONE; then ac_kde_prefix="$ac_default_prefix" else ac_kde_prefix="$prefix" fi if test "$exec_prefix" = NONE; then ac_kde_exec_prefix="$ac_kde_prefix" AC_MSG_RESULT([will be installed in $ac_kde_prefix]) else ac_kde_exec_prefix="$exec_prefix" AC_MSG_RESULT([will be installed in $ac_kde_prefix and $ac_kde_exec_prefix]) fi kde_libraries="${ac_kde_exec_prefix}/lib" kde_includes=${ac_kde_prefix}/include else ac_cv_have_kde="have_kde=yes \ ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" AC_MSG_RESULT([libraries $ac_kde_libraries, headers $ac_kde_includes]) kde_libraries="$ac_kde_libraries" kde_includes="$ac_kde_includes" fi AC_SUBST(kde_libraries) AC_SUBST(kde_includes) if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes" || test "$kde_includes" = "/usr/include"; then KDE_INCLUDES="" else KDE_INCLUDES="-I$kde_includes" all_includes="$KDE_INCLUDES $all_includes" fi KDE_LDFLAGS="-L$kde_libraries" if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then all_libraries="$all_libraries $KDE_LDFLAGS" fi AC_SUBST(KDE_LDFLAGS) AC_SUBST(KDE_INCLUDES) AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) all_libraries="$all_libraries $USER_LDFLAGS" all_includes="$all_includes $USER_INCLUDES" AC_SUBST(all_includes) AC_SUBST(all_libraries) AC_SUBST(AUTODIRS) ]) AC_DEFUN([KDE_CHECK_EXTRA_LIBS], [ AC_MSG_CHECKING(for extra includes) AC_ARG_WITH(extra-includes, [ --with-extra-includes=DIR adds non standard include paths], kde_use_extra_includes="$withval", kde_use_extra_includes=NONE ) kde_extra_includes= if test -n "$kde_use_extra_includes" && \ test "$kde_use_extra_includes" != "NONE"; then ac_save_ifs=$IFS IFS=':' for dir in $kde_use_extra_includes; do kde_extra_includes="$kde_extra_includes $dir" USER_INCLUDES="$USER_INCLUDES -I$dir" done IFS=$ac_save_ifs kde_use_extra_includes="added" else kde_use_extra_includes="no" fi AC_SUBST(USER_INCLUDES) AC_MSG_RESULT($kde_use_extra_includes) kde_extra_libs= AC_MSG_CHECKING(for extra libs) AC_ARG_WITH(extra-libs, [ --with-extra-libs=DIR adds non standard library paths], kde_use_extra_libs=$withval, kde_use_extra_libs=NONE ) if test -n "$kde_use_extra_libs" && \ test "$kde_use_extra_libs" != "NONE"; then ac_save_ifs=$IFS IFS=':' for dir in $kde_use_extra_libs; do kde_extra_libs="$kde_extra_libs $dir" KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir" USER_LDFLAGS="$USER_LDFLAGS -L$dir" done IFS=$ac_save_ifs kde_use_extra_libs="added" else kde_use_extra_libs="no" fi AC_SUBST(USER_LDFLAGS) AC_MSG_RESULT($kde_use_extra_libs) ]) AC_DEFUN([KDE_1_CHECK_PATH_HEADERS], [ AC_MSG_CHECKING([for KDE headers installed]) AC_LANG_SAVE AC_LANG_CPLUSPLUS cat > conftest.$ac_ext < #endif #include #include "confdefs.h" #include int main() { printf("kde_htmldir=\\"%s\\"\n", KApplication::kde_htmldir().data()); printf("kde_appsdir=\\"%s\\"\n", KApplication::kde_appsdir().data()); printf("kde_icondir=\\"%s\\"\n", KApplication::kde_icondir().data()); printf("kde_sounddir=\\"%s\\"\n", KApplication::kde_sounddir().data()); printf("kde_datadir=\\"%s\\"\n", KApplication::kde_datadir().data()); printf("kde_locale=\\"%s\\"\n", KApplication::kde_localedir().data()); printf("kde_cgidir=\\"%s\\"\n", KApplication::kde_cgidir().data()); printf("kde_confdir=\\"%s\\"\n", KApplication::kde_configdir().data()); printf("kde_mimedir=\\"%s\\"\n", KApplication::kde_mimedir().data()); printf("kde_toolbardir=\\"%s\\"\n", KApplication::kde_toolbardir().data()); printf("kde_wallpaperdir=\\"%s\\"\n", KApplication::kde_wallpaperdir().data()); printf("kde_bindir=\\"%s\\"\n", KApplication::kde_bindir().data()); printf("kde_partsdir=\\"%s\\"\n", KApplication::kde_partsdir().data()); printf("kde_servicesdir=\\"/tmp/dummy\\"\n"); printf("kde_servicetypesdir=\\"/tmp/dummy\\"\n"); printf("kde_moduledir=\\"/tmp/dummy\\"\n"); printf("kde_styledir=\\"/tmp/dummy\\"\n"); printf("kde_widgetdir=\\"/tmp/dummy\\"\n"); return 0; } EOF ac_compile='${CXX-g++} -c $CXXFLAGS $all_includes $CPPFLAGS conftest.$ac_ext' if AC_TRY_EVAL(ac_compile); then AC_MSG_RESULT(yes) else AC_MSG_ERROR([your system is not able to compile a small KDE application! Check, if you installed the KDE header files correctly. For more details about this problem, look at the end of config.log.]) fi AC_LANG_RESTORE ]) AC_DEFUN([KDE_CHECK_KDEQTADDON], [ AC_MSG_CHECKING(for kde-qt-addon) AC_CACHE_VAL(kde_cv_have_kdeqtaddon, [ kde_ldflags_safe="$LDFLAGS" kde_libs_safe="$LIBS" kde_cxxflags_safe="$CXXFLAGS" LIBS="-lkde-qt-addon $LIBQT $LIBS" CXXFLAGS="$CXXFLAGS -I$prefix/include -I$prefix/include/kde $all_includes" LDFLAGS="$LDFLAGS $all_libraries $USER_LDFLAGS" AC_TRY_LINK([ #include ], [ QDomDocument doc; ], kde_cv_have_kdeqtaddon=yes, kde_cv_have_kdeqtaddon=no ) LDFLAGS=$kde_ldflags_safe LIBS=$kde_libs_safe CXXFLAGS=$kde_cxxflags_safe ]) AC_MSG_RESULT($kde_cv_have_kdeqtaddon) if test "$kde_cv_have_kdeqtaddon" = "no"; then AC_MSG_ERROR([Can't find libkde-qt-addon. You need to install it first. It is a separate package (and CVS module) named kde-qt-addon.]) fi ]) AC_DEFUN([KDE_CHECK_KIMGIO], [ AC_REQUIRE([AC_BASE_PATH_KDE]) AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) AC_REQUIRE([AC_FIND_TIFF]) AC_REQUIRE([AC_FIND_JPEG]) AC_REQUIRE([AC_FIND_PNG]) AC_REQUIRE([KDE_CREATE_LIBS_ALIASES]) if test "$1" = "existance"; then AC_LANG_SAVE AC_LANG_CPLUSPLUS kde_save_LIBS="$LIBS" LIBS="$LIBS $all_libraries $LIBJPEG $LIBTIFF $LIBPNG $LIBQT -lm" AC_CHECK_LIB(kimgio, kimgioRegister, [ LIBKIMGIO_EXISTS=yes],LIBKIMGIO_EXISTS=no) LIBS="$kde_save_LIBS" AC_LANG_RESTORE else LIBKIMGIO_EXISTS=yes fi if test "$LIBKIMGIO_EXISTS" = "yes"; then LIB_KIMGIO='-lkimgio' else LIB_KIMGIO='' fi AC_SUBST(LIB_KIMGIO) ]) AC_DEFUN([KDE_CREATE_LIBS_ALIASES], [ AC_REQUIRE([KDE_MISC_TESTS]) AC_REQUIRE([KDE_CHECK_LIBDL]) AC_REQUIRE([K_PATH_X]) if test $kde_qtver = 3; then LIB_KDECORE='-lkdecore' AC_SUBST(LIB_KDECORE) LIB_KDEUI='-lkdeui' AC_SUBST(LIB_KDEUI) LIB_KIO='-lkio' AC_SUBST(LIB_KIO) LIB_SMB='-lsmb' AC_SUBST(LIB_SMB) LIB_KAB='-lkab' AC_SUBST(LIB_KAB) LIB_KHTML='-lkhtml' AC_SUBST(LIB_KHTML) LIB_KSPELL='-lkspell' AC_SUBST(LIB_KSPELL) LIB_KPARTS='-lkparts' AC_SUBST(LIB_KPARTS) LIB_KDEPRINT='-lkdeprint' AC_SUBST(LIB_KDEPRINT) # these are for backward compatibility LIB_KSYCOCA='-lkio' AC_SUBST(LIB_KSYCOCA) LIB_KFILE='-lkio' AC_SUBST(LIB_KFILE) elif test $kde_qtver = 2; then LIB_KDECORE='-lkdecore' AC_SUBST(LIB_KDECORE) LIB_KDEUI='-lkdeui' AC_SUBST(LIB_KDEUI) LIB_KIO='-lkio' AC_SUBST(LIB_KIO) LIB_KSYCOCA='-lksycoca' AC_SUBST(LIB_KSYCOCA) LIB_SMB='-lsmb' AC_SUBST(LIB_SMB) LIB_KFILE='-lkfile' AC_SUBST(LIB_KFILE) LIB_KAB='-lkab' AC_SUBST(LIB_KAB) LIB_KHTML='-lkhtml' AC_SUBST(LIB_KHTML) LIB_KSPELL='-lkspell' AC_SUBST(LIB_KSPELL) LIB_KPARTS='-lkparts' AC_SUBST(LIB_KPARTS) LIB_KDEPRINT='-lkdeprint' AC_SUBST(LIB_KDEPRINT) else LIB_KDECORE='-lkdecore -lXext $(LIB_QT)' AC_SUBST(LIB_KDECORE) LIB_KDEUI='-lkdeui $(LIB_KDECORE)' AC_SUBST(LIB_KDEUI) LIB_KFM='-lkfm $(LIB_KDECORE)' AC_SUBST(LIB_KFM) LIB_KFILE='-lkfile $(LIB_KFM) $(LIB_KDEUI)' AC_SUBST(LIB_KFILE) LIB_KAB='-lkab $(LIB_KIMGIO) $(LIB_KDECORE)' AC_SUBST(LIB_KAB) fi ]) AC_DEFUN([AC_PATH_KDE], [ AC_BASE_PATH_KDE AC_ARG_ENABLE(path-check, [ --disable-path-check don't try to find out, where to install], [ if test "$enableval" = "no"; then ac_use_path_checking="default" else ac_use_path_checking="" fi ], [ if test "$kde_qtver" = 1; then ac_use_path_checking="" else ac_use_path_checking="default" fi ] ) AC_CREATE_KFSSTND($ac_use_path_checking) AC_SUBST_KFSSTND KDE_CREATE_LIBS_ALIASES ]) dnl obsolete AC_DEFUN([AC_CHECK_SETENV], [ AC_OBSOLETE([$0], [; instead use AC_CHECK_FUNCS([setenv unsetenv])])dnl AC_CHECK_FUNCS([setenv unsetenv]) ]) AC_DEFUN([AC_CHECK_GETDOMAINNAME], [ AC_MSG_CHECKING(for getdomainname) AC_CACHE_VAL(ac_cv_func_getdomainname, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS save_CXXFLAGS="$CXXFLAGS" kde_safe_LIBS="$LIBS" LIBS="$LIBS $X_EXTRA_LIBS" if test "$GCC" = "yes"; then CXXFLAGS="$CXXFLAGS -pedantic-errors" fi AC_TRY_COMPILE([ #include #include ], [ char buffer[200]; getdomainname(buffer, 200); ], ac_cv_func_getdomainname=yes, ac_cv_func_getdomainname=no) CXXFLAGS="$save_CXXFLAGS" LIBS=$kde_safe_LIBS AC_LANG_RESTORE ]) AC_MSG_RESULT($ac_cv_func_getdomainname) AC_MSG_CHECKING([if getdomainname needs custom prototype]) AC_CACHE_VAL(ac_cv_proto_getdomainname, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS if eval "test \"`echo $ac_cv_func_getdomainname`\" = yes"; then ac_cv_proto_getdomainname=no else kde_safe_libs=$LIBS LIBS="$LIBS $X_EXTRA_LIBS" AC_TRY_LINK([ #include #include extern "C" int getdomainname (char *, int); ], [ char buffer[200]; getdomainname(buffer, 200); ], ac_cv_func_getdomainname=yes ac_cv_proto_getdomainname=yes, AC_MSG_RESULT([fatal error]) AC_MSG_ERROR([getdomainname unavailable])) fi LIBS=$kde_safe_libs AC_LANG_RESTORE ]) AC_MSG_RESULT($ac_cv_proto_getdomainname) if eval "test \"`echo $ac_cv_func_getdomainname`\" = yes"; then AC_DEFINE(HAVE_GETDOMAINNAME, 1, [Define if you have getdomainname]) fi if eval "test \"`echo $ac_cv_proto_getdomainname`\" = no"; then AC_DEFINE(HAVE_GETDOMAINNAME_PROTO, 1, [Define if you have getdomainname prototype]) fi ]) AC_DEFUN([AC_CHECK_GETHOSTNAME], [ AC_MSG_CHECKING([for gethostname]) AC_CACHE_VAL(ac_cv_func_gethostname, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS save_CXXFLAGS="$CXXFLAGS" if test "$GCC" = "yes"; then CXXFLAGS="$CXXFLAGS -pedantic-errors" fi AC_TRY_LINK([ #include #include ], [ char buffer[200]; gethostname(buffer, 200); ], ac_cv_func_gethostname=yes, ac_cv_func_gethostname=no) CXXFLAGS="$save_CXXFLAGS" AC_LANG_RESTORE ]) AC_MSG_RESULT($ac_cv_func_gethostname) AC_MSG_CHECKING([if gethostname needs custom prototype]) AC_CACHE_VAL(ac_cv_proto_gethostname, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS if eval "test \"`echo $ac_cv_func_gethostname`\" = yes"; then ac_cv_proto_gethostname=no else AC_TRY_LINK([ #include #include extern "C" int gethostname (char *, int); ], [ char buffer[200]; gethostname(buffer, 200); ], ac_cv_func_gethostname=yes ac_cv_proto_gethostname=yes, AC_MSG_RESULT([fatal error]) AC_MSG_ERROR(gethostname unavailable)) fi AC_LANG_RESTORE ]) AC_MSG_RESULT($ac_cv_proto_gethostname) if eval "test \"`echo $ac_cv_proto_gethostname`\" = no"; then AC_DEFINE(HAVE_GETHOSTNAME_PROTO, 1, [Define if you have gethostname prototype]) fi if eval "test \"`echo $ac_cv_func_gethostname`\" = yes"; then AC_DEFINE(HAVE_GETHOSTNAME, 1, [Define if you have gethostname]) fi ]) AC_DEFUN([AC_CHECK_USLEEP], [ AC_MSG_CHECKING([for usleep]) AC_CACHE_VAL(ac_cv_func_usleep, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_libs_safe="$LIBS" LIBS="$LIBS $LIBUCB" AC_TRY_LINK([ #include #include ], [ usleep(200); ], ac_cv_func_usleep=yes, ac_cv_func_usleep=no) LIBS="$ac_libs_safe" AC_LANG_RESTORE ]) AC_MSG_RESULT($ac_cv_func_usleep) if eval "test \"`echo $ac_cv_func_usleep`\" = yes"; then AC_DEFINE(HAVE_USLEEP, 1, [Define if you have the usleep function]) fi ]) AC_DEFUN([AC_CHECK_RANDOM], [ AC_MSG_CHECKING([for random]) AC_CACHE_VAL(ac_cv_func_random, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_libs_safe="$LIBS" LIBS="$LIBS $LIBUCB" AC_TRY_LINK([ #include ], [ random(); ], ac_cv_func_random=yes, ac_cv_func_random=no) LIBS="$ac_libs_safe" AC_LANG_RESTORE ]) AC_MSG_RESULT($ac_cv_func_random) if eval "test \"`echo $ac_cv_func_random`\" = yes"; then AC_DEFINE(HAVE_RANDOM, 1, [Define if you have random]) fi ]) AC_DEFUN([AC_FIND_GIF], [AC_MSG_CHECKING([for giflib]) AC_CACHE_VAL(ac_cv_lib_gif, [ac_save_LIBS="$LIBS" if test "x$kde_use_qt_emb" != "xyes"; then LIBS="$all_libraries -lgif -lX11 $LIBSOCKET" else LIBS="$all_libraries -lgif" fi AC_TRY_LINK(dnl [ #ifdef __cplusplus extern "C" { #endif int GifLastError(void); #ifdef __cplusplus } #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ ], [return GifLastError();], eval "ac_cv_lib_gif=yes", eval "ac_cv_lib_gif=no") LIBS="$ac_save_LIBS" ])dnl if eval "test \"`echo $ac_cv_lib_gif`\" = yes"; then AC_MSG_RESULT(yes) AC_DEFINE_UNQUOTED(HAVE_LIBGIF, 1, [Define if you have libgif]) else AC_MSG_ERROR(You need giflib30. Please install the kdesupport package) fi ]) AC_DEFUN([KDE_FIND_JPEG_HELPER], [ AC_MSG_CHECKING([for libjpeg$2]) AC_CACHE_VAL(ac_cv_lib_jpeg_$1, [ AC_LANG_C ac_save_LIBS="$LIBS" LIBS="$all_libraries $USER_LDFLAGS -ljpeg$2 -lm" ac_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" AC_TRY_LINK( [/* Override any gcc2 internal prototype to avoid an error. */ struct jpeg_decompress_struct; typedef struct jpeg_decompress_struct * j_decompress_ptr; typedef int size_t; #ifdef __cplusplus extern "C" { #endif void jpeg_CreateDecompress(j_decompress_ptr cinfo, int version, size_t structsize); #ifdef __cplusplus } #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ ], [jpeg_CreateDecompress(0L, 0, 0);], eval "ac_cv_lib_jpeg_$1=-ljpeg$2", eval "ac_cv_lib_jpeg_$1=no") LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" ]) if eval "test ! \"`echo $ac_cv_lib_jpeg_$1`\" = no"; then LIBJPEG="$ac_cv_lib_jpeg_$1" AC_MSG_RESULT($ac_cv_lib_jpeg_$1) else AC_MSG_RESULT(no) $3 fi ]) AC_DEFUN([AC_FIND_JPEG], [ dnl first look for libraries KDE_FIND_JPEG_HELPER(6b, 6b, KDE_FIND_JPEG_HELPER(normal, [], [ LIBJPEG= ] ) ) dnl then search the headers (can't use simply AC_TRY_xxx, as jpeglib.h dnl requires system dependent includes loaded before it) jpeg_incdirs="/usr/include /usr/local/include $kde_extra_includes" AC_FIND_FILE(jpeglib.h, $jpeg_incdirs, jpeg_incdir) test "x$jpeg_incdir" = xNO && jpeg_incdir= dnl if headers _and_ libraries are missing, this is no error, and we dnl continue with a warning (the user will get no jpeg support in khtml) dnl if only one is missing, it means a configuration error, but we still dnl only warn if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then AC_DEFINE_UNQUOTED(HAVE_LIBJPEG, 1, [Define if you have libjpeg]) else if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then AC_MSG_WARN([ There is an installation error in jpeg support. You seem to have only one of either the headers _or_ the libraries installed. You may need to either provide correct --with-extra-... options, or the development package of libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/ Disabling JPEG support. ]) else AC_MSG_WARN([libjpeg not found. disable JPEG support.]) fi jpeg_incdir= LIBJPEG= fi AC_SUBST(LIBJPEG) ]) AC_DEFUN([KDE_CHECK_QT_JPEG], [ AC_MSG_CHECKING([if Qt needs $LIBJPEG]) AC_CACHE_VAL(kde_cv_qt_jpeg, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_LIBS="$LIBS" LIBS="$all_libraries $USER_LDFLAGS $LIBQT" LIBS=`echo $LIBS | sed "s/$LIBJPEG//"` ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" AC_TRY_LINK( [#include ], [ int argc; char** argv; QApplication app(argc, argv);], eval "kde_cv_qt_jpeg=no", eval "kde_cv_qt_jpeg=yes") LIBS="$ac_save_LIBS" CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) if eval "test ! \"`echo $kde_cv_qt_jpeg`\" = no"; then AC_MSG_RESULT(yes) LIBJPEG_QT='$(LIBJPEG)' else AC_MSG_RESULT(no) LIBJPEG_QT= fi ]) AC_DEFUN([AC_FIND_ZLIB], [ AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) AC_MSG_CHECKING([for libz]) AC_CACHE_VAL(ac_cv_lib_z, [ AC_LANG_C kde_save_LIBS="$LIBS" LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET" kde_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" AC_TRY_LINK(dnl [ #include ], [return (zlibVersion() == ZLIB_VERSION); ], eval "ac_cv_lib_z='-lz'", eval "ac_cv_lib_z=no") LIBS="$kde_save_LIBS" CFLAGS="$kde_save_CFLAGS" ])dnl if test ! "$ac_cv_lib_z" = no; then AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define if you have libz]) LIBZ="$ac_cv_lib_z" AC_SUBST(LIBZ) AC_MSG_RESULT($ac_cv_lib_z) else AC_MSG_ERROR(not found. Check your installation and look into config.log) LIBZ="" AC_SUBST(LIBZ) fi ]) AC_DEFUN([KDE_TRY_TIFFLIB], [ AC_MSG_CHECKING([for libtiff $1]) AC_CACHE_VAL(kde_cv_libtiff_$1, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS kde_save_LIBS="$LIBS" if test "x$kde_use_qt_emb" != "xyes"; then LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lX11 $LIBSOCKET -lm" else LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lm" fi kde_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" AC_TRY_LINK(dnl [ #include ], [return (TIFFOpen( "", "r") == 0); ], [ kde_cv_libtiff_$1="-l$1 $LIBJPEG $LIBZ" ], [ kde_cv_libtiff_$1=no ]) LIBS="$kde_save_LIBS" CXXFLAGS="$kde_save_CXXFLAGS" AC_LANG_RESTORE ]) if test "$kde_cv_libtiff_$1" = "no"; then AC_MSG_RESULT(no) LIBTIFF="" $3 else LIBTIFF="$kde_cv_libtiff_$1" AC_MSG_RESULT(yes) AC_DEFINE_UNQUOTED(HAVE_LIBTIFF, 1, [Define if you have libtiff]) $2 fi ]) AC_DEFUN([AC_FIND_TIFF], [ AC_REQUIRE([K_PATH_X]) AC_REQUIRE([AC_FIND_ZLIB]) AC_REQUIRE([AC_FIND_JPEG]) AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) KDE_TRY_TIFFLIB(tiff, [], KDE_TRY_TIFFLIB(tiff34)) AC_SUBST(LIBTIFF) ]) AC_DEFUN([AC_FIND_PNG], [ AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) AC_REQUIRE([AC_FIND_ZLIB]) AC_MSG_CHECKING([for libpng]) AC_CACHE_VAL(ac_cv_lib_png, [ kde_save_LIBS="$LIBS" if test "x$kde_use_qt_emb" != "xyes"; then LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET" else LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm" fi kde_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" AC_LANG_C AC_TRY_LINK(dnl [ #include ], [ png_structp png_ptr = png_create_read_struct( /* image ptr */ PNG_LIBPNG_VER_STRING, 0, 0, 0 ); return( png_ptr != 0 ); ], eval "ac_cv_lib_png='-lpng $LIBZ -lm'", eval "ac_cv_lib_png=no" ) LIBS="$kde_save_LIBS" CFLAGS="$kde_save_CFLAGS" ])dnl if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then AC_DEFINE_UNQUOTED(HAVE_LIBPNG, 1, [Define if you have libpng]) LIBPNG="$ac_cv_lib_png" AC_SUBST(LIBPNG) AC_MSG_RESULT($ac_cv_lib_png) else AC_MSG_RESULT(no) LIBPNG="" AC_SUBST(LIBPNG) fi ]) AC_DEFUN([AC_CHECK_BOOL], [ AC_DEFINE_UNQUOTED(HAVE_BOOL, 1, [You _must_ have bool]) ]) AC_DEFUN([AC_CHECK_GNU_EXTENSIONS], [ AC_MSG_CHECKING(if you need GNU extensions) AC_CACHE_VAL(ac_cv_gnu_extensions, [ cat > conftest.c << EOF #include #ifdef __GNU_LIBRARY__ yes #endif EOF if (eval "$ac_cpp conftest.c") 2>&5 | egrep "yes" >/dev/null 2>&1; then rm -rf conftest* ac_cv_gnu_extensions=yes else ac_cv_gnu_extensions=no fi ]) AC_MSG_RESULT($ac_cv_gnu_extensions) if test "$ac_cv_gnu_extensions" = "yes"; then AC_DEFINE_UNQUOTED(_GNU_SOURCE, 1, [Define if you need to use the GNU extensions]) fi ]) AC_DEFUN([KDE_CHECK_COMPILER_FLAG], [ AC_MSG_CHECKING(whether $CXX supports -$1) kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'` AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -$1" AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], []) CXXFLAGS="$save_CXXFLAGS" AC_LANG_RESTORE ]) if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then AC_MSG_RESULT(yes) : $2 else AC_MSG_RESULT(no) : $3 fi ]) dnl AC_REMOVE_FORBIDDEN removes forbidden arguments from variables dnl use: AC_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever]) dnl it's all white-space separated AC_DEFUN([AC_REMOVE_FORBIDDEN], [ __val=$$1 __forbid=" $2 " if test -n "$__val"; then __new="" ac_save_IFS=$IFS IFS=" " for i in $__val; do case "$__forbid" in *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;; *) # Careful to not add spaces, where there were none, because otherwise # libtool gets confused, if we change e.g. CXX if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;; esac done IFS=$ac_save_IFS $1=$__new fi ]) dnl AC_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given AC_DEFUN([AC_VALIDIFY_CXXFLAGS], [dnl if test "x$kde_use_qt_emb" != "xyes"; then AC_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath]) AC_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath]) else AC_REMOVE_FORBIDDEN(CXX, [-rpath]) AC_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath]) fi ]) AC_DEFUN([AC_CHECK_COMPILERS], [ AC_ARG_ENABLE(debug,[ --enable-debug[=ARG] enables debug symbols (yes|no|full) [default=no]], [ case $enableval in yes) kde_use_debug_code="yes" kde_use_debug_define=no ;; full) kde_use_debug_code="full" kde_use_debug_define=no ;; *) kde_use_debug_code="no" kde_use_debug_define=yes ;; esac ], [kde_use_debug_code="no" kde_use_debug_define=no ]) dnl Just for configure --help AC_ARG_ENABLE(dummyoption,[ --disable-debug disables debug output and debug symbols [default=no]],[],[]) AC_ARG_ENABLE(strict,[ --enable-strict compiles with strict compiler options (may not work!)], [ if test $enableval = "no"; then kde_use_strict_options="no" else kde_use_strict_options="yes" fi ], [kde_use_strict_options="no"]) AC_ARG_ENABLE(warnings,[ --enable-warnings compiles with -Wall and similiar], [ if test $enableval = "no"; then kde_use_warnings="no" else kde_use_warnings="yes" fi ], [kde_use_warnings="no"]) dnl enable warnings for debug build if test "$kde_use_debug_code" != "no"; then kde_use_warnings=yes fi AC_ARG_ENABLE(profile,[ --enable-profile creates profiling infos [default=no]], [kde_use_profiling=$enableval], [kde_use_profiling="no"] ) dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS CFLAGS=" $CFLAGS" AC_PROG_CC AC_PROG_CPP if test "$GCC" = "yes"; then if test "$kde_use_debug_code" != "no"; then if test $kde_use_debug_code = "full"; then CFLAGS="-g3 $CFLAGS" else CFLAGS="-g -O2 $CFLAGS" fi else CFLAGS="-O2 $CFLAGS" fi fi if test "$kde_use_debug_define" = "yes"; then CFLAGS="-DNDEBUG $CFLAGS" fi case "$host" in *-*-sysv4.2uw*) CFLAGS="-D_UNIXWARE $CFLAGS";; *-*-sysv5uw7*) CFLAGS="-D_UNIXWARE7 $CFLAGS";; esac if test -z "$LDFLAGS" && test "$kde_use_debug_code" = "no" && test "$GCC" = "yes"; then LDFLAGS="" fi CXXFLAGS=" $CXXFLAGS" AC_PROG_CXX if test "$GXX" = "yes" || test "$CXX" = "KCC"; then if test "$kde_use_debug_code" != "no"; then if test "$CXX" = "KCC"; then CXXFLAGS="+K0 -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings $CXXFLAGS" else if test "$kde_use_debug_code" = "full"; then CXXFLAGS="-g3 $CXXFLAGS" else CXXFLAGS="-g -O2 $CXXFLAGS" fi fi KDE_CHECK_COMPILER_FLAG(fno-builtin,[CXXFLAGS="-fno-builtin $CXXFLAGS"]) dnl convenience compiler flags KDE_CHECK_COMPILER_FLAG(Woverloaded-virtual, [WOVERLOADED_VIRTUAL="-Woverloaded-virtual"], [WOVERLOADED_VRITUAL=""]) AC_SUBST(WOVERLOADED_VIRTUAL) else if test "$CXX" = "KCC"; then CXXFLAGS="+K3 $CXXFLAGS" else CXXFLAGS="-O2 $CXXFLAGS" fi fi fi if test "$kde_use_debug_define" = "yes"; then CXXFLAGS="-DNDEBUG -DNO_DEBUG $CXXFLAGS" fi if test "$kde_use_profiling" = "yes"; then KDE_CHECK_COMPILER_FLAG(pg, [ CFLAGS="-pg $CFLAGS" CXXFLAGS="-pg $CXXFLAGS" ]) fi if test "$kde_use_warnings" = "yes"; then if test "$GCC" = "yes"; then case $host in *-*-linux-gnu) CFLAGS="-ansi -W -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE $CFLAGS" CXXFLAGS="-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion $CXXFLAGS" ;; esac CXXFLAGS="-Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings $CXXFLAGS" KDE_CHECK_COMPILER_FLAG(Wundef,[CXXFLAGS="-Wundef $CXXFLAGS"]) KDE_CHECK_COMPILER_FLAG(Wbad-function-cast,[CXXFLAGS="-Wbad-function-cast $CXXFLAGS"]) KDE_CHECK_COMPILER_FLAG(Wno-long-long,[CXXFLAGS="-Wno-long-long $CXXFLAGS"]) KDE_CHECK_COMPILER_FLAG(Wnon-virtual-dtor,[CXXFLAGS="-Wnon-virtual-dtor $CXXFLAGS"]) fi fi if test "$GCC" = "yes" && test "$kde_use_strict_options" = "yes"; then CXXFLAGS="-Wcast-qual -Wshadow -Wcast-align $CXXFLAGS" fi if test "$GXX" = "yes"; then KDE_CHECK_COMPILER_FLAG(fno-exceptions,[CXXFLAGS="$CXXFLAGS -fno-exceptions"]) KDE_CHECK_COMPILER_FLAG(fno-check-new, [CXXFLAGS="$CXXFLAGS -fno-check-new"]) KDE_CHECK_COMPILER_FLAG(fexceptions, [USE_EXCEPTIONS="-fexceptions"], USE_EXCEPTIONS= ) fi if test "$CXX" = "KCC"; then dnl unfortunately we currently cannot disable exception support in KCC dnl because doing so is binary incompatible and Qt by default links with exceptions :-( dnl KDE_CHECK_COMPILER_FLAG(-no_exceptions,[CXXFLAGS="$CXXFLAGS --no_exceptions"]) dnl KDE_CHECK_COMPILER_FLAG(-exceptions, [USE_EXCEPTIONS="--exceptions"], USE_EXCEPTIONS= ) AC_ARG_ENABLE(pch,[ --enable-pch enables precompiled header support (currently only KCC) [default=no]], [ kde_use_pch=$enableval ],[kde_use_pch=no]) if test "$kde_use_pch" = "yes"; then dnl TODO: support --pch-dir! KDE_CHECK_COMPILER_FLAG(-pch,[CXXFLAGS="$CXXFLAGS --pch"]) dnl the below works (but the dir must exist), but it's dnl useless for a whole package. dnl The are precompiled headers for each source file, so when compiling dnl from scratch, it doesn't make a difference, and they take up dnl around ~5Mb _per_ sourcefile. dnl KDE_CHECK_COMPILER_FLAG(-pch_dir /tmp, dnl [CXXFLAGS="$CXXFLAGS --pch_dir `pwd`/pcheaders"]) fi dnl this flag controls inlining. by default KCC inlines in optimisation mode dnl all implementations that are defined inside the class {} declaration. dnl because of templates-compatibility with broken gcc compilers, this dnl can cause excessive inlining. This flag limits it to a sane level KDE_CHECK_COMPILER_FLAG(-inline_keyword_space_time=6,[CXXFLAGS="$CXXFLAGS --inline_keyword_space_time=6"]) KDE_CHECK_COMPILER_FLAG(-inline_auto_space_time=2,[CXXFLAGS="$CXXFLAGS --inline_auto_space_time=2"]) KDE_CHECK_COMPILER_FLAG(-inline_implicit_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_implicit_space_time=2.0"]) KDE_CHECK_COMPILER_FLAG(-inline_generated_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_generated_space_time=2.0"]) dnl Some source files are shared between multiple executables dnl (or libraries) and some of those need template instantiations. dnl In that case KCC needs to compile those sources with dnl --one_instantiation_per_object. To make it easy for us we compile dnl _all_ objects with that flag (--one_per is a shorthand). KDE_CHECK_COMPILER_FLAG(-one_per, [CXXFLAGS="$CXXFLAGS --one_per"]) fi AC_SUBST(USE_EXCEPTIONS) dnl obsolete macro - provided to keep things going USE_RTTI= AC_SUBST(USE_RTTI) case "$host" in *-*-irix*) test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;; *-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";; *-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";; *-*-solaris*) if test "$GXX" = yes; then libstdcpp=`$CXX -print-file-name=libstdc++.so` if test ! -f $libstdcpp; then AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with KDE. Please recompile gcc with --enable-shared to receive a libstdc++.so]) fi fi ;; esac AC_VALIDIFY_CXXFLAGS AC_PROG_CXXCPP # the following is to allow programs, that are known to # have problems when compiled with -O2 if test -n "$CXXFLAGS"; then kde_safe_IFS=$IFS IFS=" " NOOPT_CXXFLAGS="" for i in $CXXFLAGS; do case $i in -O*) ;; *) NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS $i" ;; esac done IFS=$kde_safe_IFS fi if test -n "$CFLAGS"; then kde_safe_IFS=$IFS IFS=" " NOOPT_CFLAGS="" for i in $CFLAGS; do case $i in -O*) ;; *) NOOPT_CFLAGS="$NOOPT_CFLAGS $i" ;; esac done IFS=$kde_safe_IFS fi if test "x$kde_use_qt_emb" = "xyes"; then NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS -fno-rtti -DQWS" fi AC_SUBST(NOOPT_CXXFLAGS) AC_SUBST(NOOPT_CFLAGS) KDE_CHECK_FINAL ifdef([AM_DEPENDENCIES], AC_REQUIRE([KDE_ADD_DEPENDENCIES]), []) KDE_CXXFLAGS= AC_SUBST(KDE_CXXFLAGS) ]) AC_DEFUN([KDE_ADD_DEPENDENCIES], [ [A]M_DEPENDENCIES(CC) [A]M_DEPENDENCIES(CXX) ]) dnl just a wrapper to clean up configure.in AC_DEFUN([KDE_PROG_LIBTOOL], [ AC_REQUIRE([AC_CHECK_COMPILERS]) AC_REQUIRE([AC_ENABLE_SHARED]) AC_REQUIRE([AC_ENABLE_STATIC]) AC_REQUIRE([AC_LIBTOOL_DLOPEN]) AC_LANG_SAVE AC_LANG_C AC_OBJEXT AC_EXEEXT AC_LANG_RESTORE AM_PROG_LIBTOOL AC_LIBTOOL_CXX LIBTOOL_SHELL="/bin/sh ./libtool" # LIBTOOL="$LIBTOOL --silent" KDE_PLUGIN="-avoid-version -module -no-undefined \$(KDE_RPATH) \$(KDE_MT_LDFLAGS)" AC_SUBST(KDE_PLUGIN) AC_ARG_ENABLE(objprelink, [ --enable-objprelink prelink apps using objprelink (experimental [only tested on linux/386])], kde_use_objprelink=$enableval, kde_use_objprelink=no) if test "x$kde_use_objprelink" = "xyes"; then KDE_FIND_PATH(objprelink, OBJPRELINK, [], [kde_use_objprelink=no]) if test "x$kde_use_objprelink" = "xyes"; then AC_MSG_CHECKING([Patching libtool to run objprelink.]) mv libtool libtool.orig cat > libtool <<\EOF #! /bin/sh for n ; do case $n in *.o) test -r $n && echo objprelink $n && objprelink $n ;; *.lo) m=`basename $n .lo`".o" && test -r $m && echo objprelink $m && objprelink $m m=".libs/$m" && test -r $m && echo objprelink $m && objprelink $m ;; esac; done EOF cat >> libtool libtool.orig rm libtool.orig chmod a+x libtool AC_MSG_RESULT(done) fi fi ]) AC_DEFUN([KDE_CHECK_TYPES], [ AC_CHECK_SIZEOF(int, 4)dnl AC_CHECK_SIZEOF(long, 4)dnl AC_CHECK_SIZEOF(char *, 4)dnl AC_CHECK_SIZEOF(char, 1)dnl ])dnl AC_DEFUN([KDE_DO_IT_ALL], [ AC_CANONICAL_SYSTEM AC_ARG_PROGRAM AM_INIT_AUTOMAKE($1, $2) AM_DISABLE_LIBRARIES AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) AC_CHECK_COMPILERS KDE_PROG_LIBTOOL AM_KDE_WITH_NLS AC_PATH_KDE ]) AC_DEFUN([AC_CHECK_RPATH], [ AC_MSG_CHECKING(for rpath) AC_ARG_ENABLE(rpath, [ --disable-rpath do not use the rpath feature of ld], USE_RPATH=$enableval, USE_RPATH=yes) if test -z "$KDE_RPATH" && test "$USE_RPATH" = "yes"; then KDE_RPATH="-R \$(kde_libraries)" if test -n "$qt_libraries"; then KDE_RPATH="$KDE_RPATH -R \$(qt_libraries)" fi dnl $x_libraries is set to /usr/lib in case if test -n "$X_LDFLAGS"; then KDE_RPATH="$KDE_RPATH -R \$(x_libraries)" fi if test -n "$KDE_EXTRA_RPATH"; then KDE_RPATH="$KDE_RPATH \$(KDE_EXTRA_RPATH)" fi fi AC_SUBST(KDE_EXTRA_RPATH) AC_SUBST(KDE_RPATH) AC_MSG_RESULT($USE_RPATH) ]) dnl Check for the type of the third argument of getsockname AC_DEFUN([AC_CHECK_SOCKLEN_T], [ AC_MSG_CHECKING(for socklen_t) AC_CACHE_VAL(ac_cv_socklen_t, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #include #include ],[ socklen_t a=0; getsockname(0,(struct sockaddr*)0, &a); ], ac_cv_socklen_t=socklen_t, AC_TRY_COMPILE([ #include #include ],[ int a=0; getsockname(0,(struct sockaddr*)0, &a); ], ac_cv_socklen_t=int, ac_cv_socklen_t=size_t ) ) AC_LANG_RESTORE ]) AC_MSG_RESULT($ac_cv_socklen_t) if test "$ac_cv_socklen_t" != "socklen_t"; then AC_DEFINE_UNQUOTED(socklen_t, $ac_cv_socklen_t, [Define the real type of socklen_t]) fi AC_DEFINE_UNQUOTED(ksize_t, socklen_t, [Compatibility define]) ]) dnl This is a merge of some macros out of the gettext aclocal.m4 dnl since we don't need anything, I took the things we need dnl the copyright for them is: dnl > dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. dnl This Makefile.in is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. dnl > dnl for this file it is relicensed under LGPL AC_DEFUN([AM_KDE_WITH_NLS], [ dnl If we use NLS figure out what method AM_PATH_PROG_WITH_TEST_KDE(MSGFMT, msgfmt, [test -n "`$ac_dir/$ac_word --version 2>&1 | grep 'GNU gettext'`"], msgfmt) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) if test -z "`$GMSGFMT --version 2>&1 | grep 'GNU gettext'`"; then AC_MSG_RESULT([found msgfmt program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi MSGFMT=$GMSGFMT AC_SUBST(GMSGFMT) AC_SUBST(MSGFMT) AM_PATH_PROG_WITH_TEST_KDE(XGETTEXT, xgettext, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else AC_MSG_RESULT( [found xgettext programs is not GNU xgettext; ignore it]) XGETTEXT=":" fi fi AC_SUBST(XGETTEXT) ]) # Search path for a program which passes the given test. # Ulrich Drepper , 1996. # serial 1 # Stephan Kulow: I appended a _KDE against name conflicts dnl AM_PATH_PROG_WITH_TEST_KDE(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST_KDE], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test -n "[$]$1"; then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # Check whether LC_MESSAGES is available in . # Ulrich Drepper , 1995. # serial 1 AC_DEFUN([AM_LC_MESSAGES], [if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your locale.h file contains LC_MESSAGES]) fi fi]) dnl From Jim Meyering. dnl FIXME: migrate into libit. AC_DEFUN([AM_FUNC_OBSTACK], [AC_CACHE_CHECK([for obstacks], am_cv_func_obstack, [AC_TRY_LINK([#include "obstack.h"], [struct obstack *mem;obstack_free(mem,(char *) 0)], am_cv_func_obstack=yes, am_cv_func_obstack=no)]) if test $am_cv_func_obstack = yes; then AC_DEFINE(HAVE_OBSTACK) else LIBOBJS="$LIBOBJS obstack.o" fi ]) dnl From Jim Meyering. Use this if you use the GNU error.[ch]. dnl FIXME: Migrate into libit AC_DEFUN([AM_FUNC_ERROR_AT_LINE], [AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line, [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");], am_cv_lib_error_at_line=yes, am_cv_lib_error_at_line=no)]) if test $am_cv_lib_error_at_line = no; then LIBOBJS="$LIBOBJS error.o" fi AC_SUBST(LIBOBJS)dnl ]) # Macro to add for using GNU gettext. # Ulrich Drepper , 1995. # serial 1 # Stephan Kulow: I put a KDE in it to avoid name conflicts AC_DEFUN([AM_KDE_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([AM_KDE_WITH_NLS])dnl AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h string.h values.h alloca.h]) AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ __argz_count __argz_stringify __argz_next]) AC_MSG_CHECKING(for stpcpy) AC_CACHE_VAL(kde_cv_func_stpcpy, [ kde_safe_cxxflags=$CXXFLAGS CXXFLAGS="-Wmissing-prototypes -Werror" AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #include ], [ char buffer[200]; stpcpy(buffer, buffer); ], kde_cv_func_stpcpy=yes, kde_cv_func_stpcpy=no) AC_LANG_RESTORE CXXFLAGS=$kde_safe_cxxflags ]) AC_MSG_RESULT($kde_cv_func_stpcpy) if eval "test \"`echo $kde_cv_func_stpcpy`\" = yes"; then AC_DEFINE(HAVE_STPCPY, 1, [Define if you have stpcpy]) fi AM_LC_MESSAGES if test "x$CATOBJEXT" != "x"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; esac done LINGUAS=$NEW_LINGUAS AC_MSG_RESULT($LINGUAS) fi dnl Construct list of names of catalog files to be constructed. if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi ]) AC_DEFUN([AC_HAVE_XPM], [AC_REQUIRE_CPP()dnl AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) test -z "$XPM_LDFLAGS" && XPM_LDFLAGS= test -z "$XPM_INCLUDE" && XPM_INCLUDE= AC_ARG_WITH(xpm, [ --without-xpm disable color pixmap XPM tests], xpm_test=$withval, xpm_test="yes") if test "x$xpm_test" = xno; then ac_cv_have_xpm=no else AC_MSG_CHECKING(for XPM) AC_CACHE_VAL(ac_cv_have_xpm, [ AC_LANG_C ac_save_ldflags="$LDFLAGS" ac_save_cflags="$CFLAGS" if test "x$kde_use_qt_emb" != "xyes"; then LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm -lX11 -lXext $LIBZ $LIBSOCKET" else LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm $LIBZ $LIBSOCKET" fi CFLAGS="$CFLAGS $X_INCLUDES $USER_INCLUDES" test -n "$XPM_INCLUDE" && CFLAGS="-I$XPM_INCLUDE $CFLAGS" AC_TRY_LINK([#include ],[], ac_cv_have_xpm="yes",ac_cv_have_xpm="no") LDFLAGS="$ac_save_ldflags" CFLAGS="$ac_save_cflags" ])dnl if test "$ac_cv_have_xpm" = no; then AC_MSG_RESULT(no) XPM_LDFLAGS="" XPMINC="" $2 else AC_DEFINE(HAVE_XPM, 1, [Define if you have XPM support]) if test "$XPM_LDFLAGS" = ""; then XPMLIB='-lXpm $(LIB_X11)' else XPMLIB="-L$XPM_LDFLAGS -lXpm "'$(LIB_X11)' fi if test "$XPM_INCLUDE" = ""; then XPMINC="" else XPMINC="-I$XPM_INCLUDE" fi AC_MSG_RESULT(yes) $1 fi fi AC_SUBST(XPMINC) AC_SUBST(XPMLIB) ]) AC_DEFUN([AC_HAVE_DPMS], [AC_REQUIRE_CPP()dnl AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) test -z "$DPMS_LDFLAGS" && DPMS_LDFLAGS= test -z "$DPMS_INCLUDE" && DPMS_INCLUDE= DPMS_LIB= AC_ARG_WITH(dpms, [ --without-dpms disable DPMS power saving], dpms_test=$withval, dpms_test="yes") if test "x$dpms_test" = xno; then ac_cv_have_dpms=no else AC_MSG_CHECKING(for DPMS) dnl Note: ac_cv_have_dpms can be no, yes, or -lXdpms. dnl 'yes' means DPMS_LIB="", '-lXdpms' means DPMS_LIB="-lXdpms". AC_CACHE_VAL(ac_cv_have_dpms, [ if test "x$kde_use_qt_emb" = "xyes"; then AC_MSG_RESULT(no) ac_cv_have_dpms="no" else AC_LANG_C ac_save_ldflags="$LDFLAGS" ac_save_cflags="$CFLAGS" ac_save_libs="$LIBS" LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries -lX11 -lXext $LIBSOCKET" CFLAGS="$CFLAGS $X_INCLUDES" test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" AC_TRY_LINK([ #include #include #include #include int foo_test_dpms() { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], ac_cv_have_dpms="yes", [ LDFLAGS="$ac_save_ldflags" CFLAGS="$ac_save_cflags" LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries -lX11 -lXext $LIBSOCKET" LIBS="$LIBS -lXdpms" CFLAGS="$CFLAGS $X_INCLUDES" test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" AC_TRY_LINK([ #include #include #include #include int foo_test_dpms() { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], [ ac_cv_have_dpms="-lXdpms" ],ac_cv_have_dpms="no") ]) LDFLAGS="$ac_save_ldflags" CFLAGS="$ac_save_cflags" LIBS="$ac_save_libs" fi ])dnl if test "$ac_cv_have_dpms" = no; then AC_MSG_RESULT(no) DPMS_LDFLAGS="" DPMSINC="" $2 else AC_DEFINE(HAVE_DPMS, 1, [Define if you have DPMS support]) if test "$ac_cv_have_dpms" = "-lXdpms"; then DPMS_LIB="-lXdpms" fi if test "$DPMS_LDFLAGS" = ""; then DPMSLIB="$DPMS_LIB "'$(LIB_X11)' else DPMSLIB="$DPMS_LDFLAGS $DPMS_LIB "'$(LIB_X11)' fi if test "$DPMS_INCLUDE" = ""; then DPMSINC="" else DPMSINC="-I$DPMS_INCLUDE" fi AC_MSG_RESULT(yes) $1 fi fi AC_SUBST(DPMSINC) AC_SUBST(DPMSLIB) ]) AC_DEFUN([AC_HAVE_GL], [AC_REQUIRE_CPP()dnl AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) test -z "$GL_LDFLAGS" && GL_LDFLAGS= test -z "$GL_INCLUDE" && GL_INCLUDE= AC_ARG_WITH(gl, [ --without-gl disable 3D GL modes], gl_test=$withval, gl_test="yes") if test "x$kde_use_qt_emb" = "xyes"; then # GL and Qt Embedded is a no-go for now. ac_cv_have_gl=no elif test "x$gl_test" = xno; then ac_cv_have_gl=no else AC_MSG_CHECKING(for GL) AC_CACHE_VAL(ac_cv_have_gl, [ AC_LANG_C ac_save_ldflags="$LDFLAGS" ac_save_cflags="$CFLAGS" LDFLAGS="$LDFLAGS $GL_LDFLAGS $X_LDFLAGS $all_libraries -lMesaGL -lMesaGLU" test "x$kde_use_qt_emb" != xyes && LDFLAGS="$LDFLAGS -lX11" LDFLAGS="$LDFLAGS $LIB_XEXT -lm $LIBSOCKET" CFLAGS="$CFLAGS $X_INCLUDES" test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS" AC_TRY_LINK([#include #include ], [], ac_cv_have_gl="mesa", ac_cv_have_gl="no") if test "x$ac_cv_have_gl" = "xno"; then LDFLAGS="$ac_save_ldflags $X_LDFLAGS $GL_LDFLAGS $all_libraries -lGL -lGLU" test "x$kde_use_qt_emb" != xyes && LDFLAGS="$LDFLAGS -lX11" LDFLAGS="$LDFLAGS $LIB_XEXT -lm $LIBSOCKET" CFLAGS="$ac_save_cflags $X_INCLUDES" test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS" AC_TRY_LINK([#include #include ], [], ac_cv_have_gl="yes", ac_cv_have_gl="no") fi LDFLAGS="$ac_save_ldflags" CFLAGS="$ac_save_cflags" ])dnl if test "$ac_cv_have_gl" = "no"; then AC_MSG_RESULT(no) GL_LDFLAGS="" GLINC="" $2 else AC_DEFINE(HAVE_GL, 1, [Defines if you have GL (Mesa, OpenGL, ...)]) if test "$GL_LDFLAGS" = ""; then if test "$ac_cv_have_gl" = "mesa"; then GLLIB='-lMesaGL -lMesaGLU $(LIB_X11)' else GLLIB='-lGL -lGLU $(LIB_X11)' fi else if test "$ac_cv_have_gl" = "mesa"; then GLLIB="$GL_LDFLAGS -lMesaGL -lMesaGLU "'$(LIB_X11)' else GLLIB="$GL_LDFLAGS -lGL -lGLU "'$(LIB_X11)' fi fi if test "$GL_INCLUDE" = ""; then GLINC="" else GLINC="-I$GL_INCLUDE" fi AC_MSG_RESULT($ac_cv_have_gl) $1 fi fi AC_SUBST(GLINC) AC_SUBST(GLLIB) ]) dnl shadow password and PAM magic - maintained by ossi@kde.org AC_DEFUN([KDE_PAM], [ AC_REQUIRE([KDE_CHECK_LIBDL]) AC_ARG_WITH(pam, [ --with-pam[=ARG] enable support for PAM: ARG=[yes|no|service name]], [ if test "x$withval" = "xyes"; then use_pam=yes pam_service=kde elif test "x$withval" = "xno"; then use_pam=no else use_pam=yes pam_service=$withval fi ac_cv_path_pam="use_pam=$use_pam pam_service=$pam_service" ], [ AC_CACHE_VAL(ac_cv_path_pam, [ use_pam=no AC_CHECK_LIB(pam, pam_start, [ AC_CHECK_HEADER(security/pam_appl.h, [ use_pam=yes pam_service=kde ]) ], , $LIBDL) ac_cv_path_pam="use_pam=$use_pam pam_service=$pam_service" ]) ]) eval "$ac_cv_path_pam" AC_MSG_CHECKING(for PAM) if test "x$use_pam" = xno; then AC_MSG_RESULT(no) PAMLIBS="" else AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PAM, 1, [Defines if you have PAM (Pluggable Authentication Modules)]) PAMLIBS="$PAM_MISC_LIB -lpam $LIBDL" dnl test whether struct pam_message is const (Linux) or not (Sun) AC_MSG_CHECKING(for const pam_message) AC_EGREP_HEADER([struct pam_message], security/pam_appl.h, [ AC_EGREP_HEADER([const struct pam_message], security/pam_appl.h, [AC_MSG_RESULT([const: Linux-type PAM])], [AC_MSG_RESULT([nonconst: Sun-type PAM]) AC_DEFINE(PAM_MESSAGE_NONCONST, 1, [Define if your PAM support takes non-const arguments (Solaris)])] )], [AC_MSG_RESULT([not found - assume const, Linux-type PAM])]) fi AC_SUBST(PAMLIBS) ]) dnl DEF_PAM_SERVICE(arg name, full name, define name) AC_DEFUN([DEF_PAM_SERVICE], [ AC_ARG_WITH($1-pam, [ --with-$1-pam=[val] override PAM service from --with-pam for $2], [ if test "x$use_pam" = xyes; then $3_PAM_SERVICE="$withval" else AC_MSG_ERROR([Cannot use use --with-$1-pam, as no PAM was detected. You may want to enforce it by using --with-pam.]) fi ], [ if test "x$use_pam" = xyes; then $3_PAM_SERVICE="$pam_service" fi ]) if test -n "$$3_PAM_SERVICE"; then AC_MSG_RESULT([The PAM service used by $2 will be $$3_PAM_SERVICE]) AC_DEFINE_UNQUOTED($3_PAM_SERVICE, "$$3_PAM_SERVICE", [The PAM service to be used by $2]) fi AC_SUBST($3_PAM_SERVICE) ]) AC_DEFUN([KDE_SHADOWPASSWD], [ AC_REQUIRE([KDE_PAM]) AC_CHECK_LIB(shadow, getspent, [ LIBSHADOW="-lshadow" ac_use_shadow=yes ], [ dnl for UnixWare AC_CHECK_LIB(gen, getspent, [ LIBGEN="-lgen" ac_use_shadow=yes ], [ AC_CHECK_FUNC(getspent, [ ac_use_shadow=yes ], [ ac_use_shadow=no ]) ]) ]) AC_SUBST(LIBSHADOW) AC_SUBST(LIBGEN) AC_MSG_CHECKING([for shadow passwords]) AC_ARG_WITH(shadow, [ --with-shadow If you want shadow password support ], [ if test "x$withval" != "xno"; then use_shadow=yes else use_shadow=no fi ], [ use_shadow="$ac_use_shadow" ]) if test "x$use_shadow" = xyes; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SHADOW, 1, [Define if you use shadow passwords]) else AC_MSG_RESULT(no) LIBSHADOW= LIBGEN= fi dnl finally make the relevant binaries setuid root, if we have shadow passwds. dnl this still applies, if we could use it indirectly through pam. if test "x$use_shadow" = xyes || ( test "x$use_pam" = xyes && test "x$ac_use_shadow" = xyes ); then case $host in *-*-freebsd* | *-*-netbsd* | *-*-openbsd*) SETUIDFLAGS="-m 4755 -o root";; *) SETUIDFLAGS="-m 4755";; esac fi AC_SUBST(SETUIDFLAGS) ]) AC_DEFUN([KDE_PASSWDLIBS], [ AC_REQUIRE([KDE_MISC_TESTS]) dnl for LIBCRYPT AC_REQUIRE([KDE_PAM]) AC_REQUIRE([KDE_SHADOWPASSWD]) if test "x$use_pam" = "xyes"; then PASSWDLIBS="$PAMLIBS" else PASSWDLIBS="$LIBCRYPT $LIBSHADOW $LIBGEN" fi dnl FreeBSD uses a shadow-like setup, where /etc/passwd holds the users, but dnl /etc/master.passwd holds the actual passwords. /etc/master.passwd requires dnl root to read, so kcheckpass needs to be root (even when using pam, since pam dnl may need to read /etc/master.passwd). case $host in *-*-freebsd*) SETUIDFLAGS="-m 4755 -o root" ;; *) ;; esac AC_SUBST(PASSWDLIBS) ]) AC_DEFUN([KDE_CHECK_LIBDL], [ AC_CHECK_LIB(dl, dlopen, [ LIBDL="-ldl" ac_cv_have_dlfcn=yes ]) AC_CHECK_LIB(dld, shl_unload, [ LIBDL="-ldld" ac_cv_have_shload=yes ]) AC_SUBST(LIBDL) ]) AC_DEFUN([KDE_CHECK_DLOPEN], [ KDE_CHECK_LIBDL AC_CHECK_HEADERS(dlfcn.h dl.h) if test "$ac_cv_header_dlfcn_h" = "no"; then ac_cv_have_dlfcn=no fi if test "$ac_cv_header_dl_h" = "no"; then ac_cv_have_shload=no fi dnl XXX why change enable_dlopen? its already set by autoconf's AC_ARG_ENABLE dnl (MM) AC_ARG_ENABLE(dlopen, [ --disable-dlopen link statically [default=no]] , enable_dlopen=$enableval, enable_dlopen=yes) # override the user's opinion, if we know it better ;) if test "$ac_cv_have_dlfcn" = "no" && test "$ac_cv_have_shload" = "no"; then enable_dlopen=no fi if test "$ac_cv_have_dlfcn" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_DLFCN, 1, [Define if you have dlfcn]) fi if test "$ac_cv_have_shload" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_SHLOAD, 1, [Define if you have shload]) fi if test "$enable_dlopen" = no ; then test -n "$1" && eval $1 else test -n "$2" && eval $2 fi ]) AC_DEFUN([KDE_CHECK_DYNAMIC_LOADING], [ KDE_CHECK_DLOPEN(libtool_enable_shared=yes, libtool_enable_static=no) KDE_PROG_LIBTOOL AC_MSG_CHECKING([dynamic loading]) eval "`egrep '^build_libtool_libs=' libtool`" if test "$build_libtool_libs" = "yes" && test "$enable_dlopen" = "yes"; then dynamic_loading=yes AC_DEFINE_UNQUOTED(HAVE_DYNAMIC_LOADING) else dynamic_loading=no fi AC_MSG_RESULT($dynamic_loading) if test "$dynamic_loading" = "yes"; then $1 else $2 fi ]) AC_DEFUN([KDE_ADD_INCLUDES], [ if test -z "$1"; then test_include="Pix.h" else test_include="$1" fi AC_MSG_CHECKING([for libg++ ($test_include)]) AC_CACHE_VAL(kde_cv_libgpp_includes, [ kde_cv_libgpp_includes=no for ac_dir in \ \ /usr/include/g++ \ /usr/include \ /usr/unsupported/include \ /opt/include \ $extra_include \ ; \ do if test -r "$ac_dir/$test_include"; then kde_cv_libgpp_includes=$ac_dir break fi done ]) AC_MSG_RESULT($kde_cv_libgpp_includes) if test "$kde_cv_libgpp_includes" != "no"; then all_includes="-I$kde_cv_libgpp_includes $all_includes $USER_INCLUDES" fi ]) ]) AC_DEFUN([KDE_CHECK_MICO], [ AC_REQUIRE([KDE_CHECK_LIBDL]) AC_REQUIRE([KDE_MISC_TESTS]) AC_MSG_CHECKING(for MICO) if test -z "$MICODIR"; then kde_micodir=/usr/local else kde_micodir="$MICODIR" fi AC_ARG_WITH(micodir, [ --with-micodir=micodir where mico is installed ], kde_micodir=$withval, kde_micodir=$kde_micodir ) AC_CACHE_VAL(kde_cv_mico_incdir, [ mico_incdirs="$kde_micodir/include /usr/include /usr/local/include /usr/local/include /opt/local/include $kde_extra_includes" AC_FIND_FILE(CORBA.h, $mico_incdirs, kde_cv_mico_incdir) ]) kde_micodir=`echo $kde_cv_mico_incdir | sed -e 's#/include##'` if test ! -r $kde_micodir/include/CORBA.h; then AC_MSG_ERROR([No CORBA.h found, specify another micodir]) fi AC_MSG_RESULT($kde_micodir) MICO_INCLUDES=-I$kde_micodir/include AC_SUBST(MICO_INCLUDES) MICO_LDFLAGS=-L$kde_micodir/lib AC_SUBST(MICO_LDFLAGS) micodir=$kde_micodir AC_SUBST(micodir) AC_MSG_CHECKING([for MICO version]) AC_CACHE_VAL(kde_cv_mico_version, [ AC_LANG_C cat >conftest.$ac_ext < #include int main() { printf("MICO_VERSION=%s\n",MICO_VERSION); return (0); } EOF ac_compile='${CC-gcc} $CFLAGS $MICO_INCLUDES conftest.$ac_ext -o conftest' if AC_TRY_EVAL(ac_compile); then if eval `./conftest 2>&5`; then kde_cv_mico_version=$MICO_VERSION else AC_MSG_ERROR([your system is not able to execute a small application to find MICO version! Check $kde_micodir/include/mico/version.h]) fi else AC_MSG_ERROR([your system is not able to compile a small application to find MICO version! Check $kde_micodir/include/mico/version.h]) fi ]) dnl installed MICO version mico_v_maj=`echo $kde_cv_mico_version | sed -e 's/^\(.*\)\..*\..*$/\1/'` mico_v_mid=`echo $kde_cv_mico_version | sed -e 's/^.*\.\(.*\)\..*$/\1/'` mico_v_min=`echo $kde_cv_mico_version | sed -e 's/^.*\..*\.\(.*\)$/\1/'` if test "x$1" = "x"; then req_version="2.3.0" else req_version=$1 fi dnl required MICO version req_v_maj=`echo $req_version | sed -e 's/^\(.*\)\..*\..*$/\1/'` req_v_mid=`echo $req_version | sed -e 's/^.*\.\(.*\)\..*$/\1/'` req_v_min=`echo $req_version | sed -e 's/^.*\..*\.\(.*\)$/\1/'` if test "$mico_v_maj" -lt "$req_v_maj" || \ ( test "$mico_v_maj" -eq "$req_v_maj" && \ test "$mico_v_mid" -lt "$req_v_mid" ) || \ ( test "$mico_v_mid" -eq "$req_v_mid" && \ test "$mico_v_min" -lt "$req_v_min" ) then AC_MSG_ERROR([found MICO version $kde_cv_mico_version but version $req_version \ at least is required. You should upgrade MICO.]) else AC_MSG_RESULT([$kde_cv_mico_version (minimum version $req_version, ok)]) fi LIBMICO="-lmico$kde_cv_mico_version $LIBCRYPT $LIBSOCKET $LIBDL" AC_SUBST(LIBMICO) if test -z "$IDL"; then IDL='$(kde_bindir)/cuteidl' fi AC_SUBST(IDL) IDL_DEPENDENCIES='$(kde_includes)/CUTE.h' AC_SUBST(IDL_DEPENDENCIES) idldir="\$(includedir)/idl" AC_SUBST(idldir) ]) AC_DEFUN([KDE_CHECK_MINI_STL], [ AC_REQUIRE([KDE_CHECK_MICO]) AC_MSG_CHECKING(if we use mico's mini-STL) AC_CACHE_VAL(kde_cv_have_mini_stl, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS kde_save_cxxflags="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $MICO_INCLUDES" AC_TRY_COMPILE( [ #include ], [ #ifdef HAVE_MINI_STL #error "nothing" #endif ], kde_cv_have_mini_stl=no, kde_cv_have_mini_stl=yes) CXXFLAGS="$kde_save_cxxflags" AC_LANG_RESTORE ]) if test "x$kde_cv_have_mini_stl" = "xyes"; then AC_MSG_RESULT(yes) $1 else AC_MSG_RESULT(no) $2 fi ]) ]) AC_DEFUN([KDE_CHECK_LIBPTHREAD], [ AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"] ) AC_SUBST(LIBPTHREAD) ]) AC_DEFUN([KDE_CHECK_PTHREAD_OPTION], [ AC_ARG_ENABLE(kernel-threads, [ --enable-kernel-threads Enable the use of the LinuxThreads port on FreeBSD/i386 only.], kde_use_kernthreads=$enableval, kde_use_kernthreads=no) if test "$kde_use_kernthreads" = "yes"; then ac_save_CXXFLAGS="$CXXFLAGS" ac_save_CFLAGS="$CFLAGS" CXXFLAGS="-I/usr/local/include/pthread/linuxthreads $CXXFLAGS" CFLAGS="-I/usr/local/include/pthread/linuxthreads $CFLAGS" AC_CHECK_HEADERS(pthread/linuxthreads/pthread.h) CXXFLAGS="$ac_save_CXXFLAGS" CFLAGS="$ac_save_CFLAGS" if test "$ac_cv_header_pthread_linuxthreads_pthread_h" = "no"; then kde_use_kernthreads=no else dnl Add proper -I and -l statements AC_CHECK_LIB(lthread, pthread_join, [LIBPTHREAD="-llthread -llgcc_r"]) dnl for FreeBSD if test "x$LIBPTHREAD" = "x"; then kde_use_kernthreads=no else USE_THREADS="-D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" fi fi else USE_THREADS="" if test -z "$LIBPTHREAD"; then KDE_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-pthread"] ) fi fi case $host_os in solaris*) KDE_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"]) CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4" ;; freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; aix*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" LIBPTHREAD="$LIBPTHREAD -lc_r" ;; linux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" if test "$CXX" = "KCC"; then CXXFLAGS="$CXXFLAGS --thread_safe" NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe" fi ;; *) ;; esac AC_SUBST(USE_THREADS) AC_SUBST(LIBPTHREAD) ]) AC_DEFUN([KDE_CHECK_THREADING], [ AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) AC_REQUIRE([KDE_CHECK_PTHREAD_OPTION]) dnl default is yes if libpthread is found and no if no libpthread is available if test -z "$LIBPTHREAD"; then if test -z "$USE_THREADS"; then kde_check_threading_default=no else kde_check_threading_default=yes fi else kde_check_threading_default=yes fi AC_ARG_ENABLE(threading, [ --disable-threading disables threading even if libpthread found ], kde_use_threading=$enableval, kde_use_threading=$kde_check_threading_default) if test "x$kde_use_threading" = "xyes"; then AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)]) fi ]) AC_DEFUN([KDE_TRY_LINK_PYTHON], [ if test "$kde_python_link_found" = no; then if test "$1" = normal; then AC_MSG_CHECKING(if a Python application links) else AC_MSG_CHECKING(if Python depends on $2) fi AC_CACHE_VAL(kde_cv_try_link_python_$1, [ AC_LANG_SAVE AC_LANG_C kde_save_cflags="$CFLAGS" CFLAGS="$CFLAGS $PYTHONINC" kde_save_libs="$LIBS" LIBS="$LIBS $LIBPYTHON $2 $LIBDL $LIBSOCKET" kde_save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS $PYTHONLIB" AC_TRY_LINK( [ #include ],[ PySys_SetArgv(1, 0); ], [kde_cv_try_link_python_$1=yes], [kde_cv_try_link_python_$1=no] ) CFLAGS="$kde_save_cflags" LIBS="$kde_save_libs" LDFLAGS="$kde_save_ldflags" ]) if test "$kde_cv_try_link_python_$1" = "yes"; then AC_MSG_RESULT(yes) kde_python_link_found=yes if test ! "$1" = normal; then LIBPYTHON="$LIBPYTHON $2" fi $3 else AC_MSG_RESULT(no) $4 fi AC_LANG_RESTORE fi ]) AC_DEFUN([KDE_CHECK_PYTHON_DIR], [ AC_MSG_CHECKING([for Python directory]) AC_CACHE_VAL(kde_cv_pythondir, [ if test -z "$PYTHONDIR"; then kde_cv_pythondir=/usr/local else kde_cv_pythondir="$PYTHONDIR" fi ]) AC_ARG_WITH(pythondir, [ --with-pythondir=pythondir use python installed in pythondir ], [ ac_python_dir=$withval ], ac_python_dir=$kde_cv_pythondir ) AC_MSG_RESULT($ac_python_dir) ]) AC_DEFUN([KDE_CHECK_PYTHON_INTERN], [ AC_REQUIRE([KDE_CHECK_LIBDL]) AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) AC_REQUIRE([KDE_CHECK_PYTHON_DIR]) if test -z "$1"; then version="1.5" else version="$1" fi AC_MSG_CHECKING([for Python$version]) python_incdirs="$ac_python_dir/include /usr/include /usr/local/include/ $kde_extra_includes" AC_FIND_FILE(Python.h, $python_incdirs, python_incdir) if test ! -r $python_incdir/Python.h; then AC_FIND_FILE(python$version/Python.h, $python_incdirs, python_incdir) python_incdir=$python_incdir/python$version if test ! -r $python_incdir/Python.h; then python_incdir=no fi fi PYTHONINC=-I$python_incdir python_libdirs="$ac_python_dir/lib /usr/lib /usr/local /usr/lib $kde_extra_libs" AC_FIND_FILE(libpython$version.a, $python_libdirs, python_libdir) if test ! -r $python_libdir/libpython$version.a; then AC_FIND_FILE(python$version/config/libpython$version.a, $python_libdirs, python_libdir) python_libdir=$python_libdir/python$version/config if test ! -r $python_libdir/libpython$version.a; then python_libdir=no fi fi PYTHONLIB=-L$python_libdir kde_orig_LIBPYTHON=$LIBPYTHON if test -z "$LIBPYTHON"; then LIBPYTHON=-lpython$version fi python_libdirs="$ac_python_dir/lib /usr/lib /usr/local /usr/lib $kde_extra_libs" AC_FIND_FILE(python$version/copy.py, $python_libdirs, python_moddir) python_moddir=$python_moddir/python$version if test ! -r $python_moddir/copy.py; then python_moddir=no fi PYTHONMODDIR=$python_moddir AC_MSG_RESULT(header $python_incdir library $python_libdir modules $python_moddir) if test x$python_incdir = xno || test x$python_libdir = xno || test x$python_moddir = xno; then LIBPYTHON=$kde_orig_LIBPYTHON test "x$PYTHONLIB" = "x-Lno" && PYTHONLIB="" test "x$PYTHONINC" = "x-Ino" && PYTHONINC="" $2 else dnl Note: this test is very weak kde_python_link_found=no KDE_TRY_LINK_PYTHON(normal) KDE_TRY_LINK_PYTHON(m, -lm) KDE_TRY_LINK_PYTHON(pthread, $LIBPTHREAD) KDE_TRY_LINK_PYTHON(tcl, -ltcl) KDE_TRY_LINK_PYTHON(db2, -ldb2) KDE_TRY_LINK_PYTHON(m_and_thread, [$LIBPTHREAD -lm]) KDE_TRY_LINK_PYTHON(m_and_thread_and_util, [$LIBPTHREAD -lm -lutil]) KDE_TRY_LINK_PYTHON(m_and_thread_and_db3, [$LIBPTHREAD -lm -ldb-3 -lutil]) KDE_TRY_LINK_PYTHON(pthread_and_db3, [$LIBPTHREAD -ldb-3]) KDE_TRY_LINK_PYTHON(m_and_thread_and_db, [$LIBPTHREAD -lm -ldb -ltermcap -lutil]) KDE_TRY_LINK_PYTHON(pthread_and_dl, [$LIBPTHREAD $LIBDL -lutil -lreadline -lncurses -lm]) KDE_TRY_LINK_PYTHON(m_and_thread_and_db_special, [$LIBPTHREAD -lm -ldb -lutil], [], [AC_MSG_WARN([it seems, Python depends on another library. Pleae set LIBPYTHON to '-lpython$version -lotherlib' before calling configure to fix this and contact the authors to let them know about this problem]) ]) LIBPYTHON="$LIBPYTHON $LIBDL $LIBSOCKET" AC_SUBST(PYTHONINC) AC_SUBST(PYTHONLIB) AC_SUBST(LIBPYTHON) AC_SUBST(PYTHONMODDIR) AC_DEFINE(HAVE_PYTHON, 1, [Define if you have the development files for python]) fi ]) AC_DEFUN([KDE_CHECK_PYTHON], [ KDE_CHECK_PYTHON_INTERN("2.2", [KDE_CHECK_PYTHON_INTERN("2.1", [KDE_CHECK_PYTHON_INTERN("2.0", [ KDE_CHECK_PYTHON_INTERN($1, $2) ]) ])]) ]) AC_DEFUN([KDE_CHECK_STL_SGI], [ AC_MSG_CHECKING([if STL implementation is SGI like]) AC_CACHE_VAL(kde_cv_stl_type_sgi, [ AC_TRY_COMPILE([ #include using namespace std; ],[ string astring="Hallo Welt."; astring.erase(0, 6); // now astring is "Welt" return 0; ], kde_cv_stl_type_sgi=yes, kde_cv_stl_type_sgi=no) ]) AC_MSG_RESULT($kde_cv_stl_type_sgi) if test "$kde_cv_stl_type_sgi" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_SGI_STL, 1, [Define if you have a STL implementation by SGI]) fi ]) AC_DEFUN([KDE_CHECK_STL_HP], [ AC_MSG_CHECKING([if STL implementation is HP like]) AC_CACHE_VAL(kde_cv_stl_type_hp, [ AC_TRY_COMPILE([ #include using namespace std; ],[ string astring="Hello World"; astring.remove(0, 6); // now astring is "World" return 0; ], kde_cv_stl_type_hp=yes, kde_cv_stl_type_hp=no) ]) AC_MSG_RESULT($kde_cv_stl_type_hp) if test "$kde_cv_stl_type_hp" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_HP_STL, 1, [Define if you have a STL implementation by HP]) fi ]) AC_DEFUN([KDE_CHECK_STL], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="`echo $CXXFLAGS | sed s/-fno-exceptions//`" KDE_CHECK_STL_SGI if test "$kde_cv_stl_type_sgi" = "no"; then KDE_CHECK_STL_HP if test "$kde_cv_stl_type_hp" = "no"; then AC_MSG_ERROR("no known STL type found - did you forget to install libstdc++[-devel] ?") fi fi CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ]) AC_DEFUN([AC_FIND_QIMGIO], [AC_REQUIRE([AC_FIND_JPEG]) AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) AC_MSG_CHECKING([for qimgio]) AC_CACHE_VAL(ac_cv_lib_qimgio, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_LIBS="$LIBS" ac_save_CXXFLAGS="$CXXFLAGS" LIBS="$all_libraries -lqimgio -lpng -lz $LIBJPEG $LIBQT" CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" AC_TRY_RUN(dnl [ #include #include int main() { QString t = "hallo"; t.fill('t'); qInitImageIO(); } ], ac_cv_lib_qimgio=yes, ac_cv_lib_qimgio=no, ac_cv_lib_qimgio=no) LIBS="$ac_save_LIBS" CXXFLAGS="$ac_save_CXXFLAGS" AC_LANG_RESTORE ])dnl if eval "test \"`echo $ac_cv_lib_qimgio`\" = yes"; then LIBQIMGIO="-lqimgio -lpng -lz $LIBJPEG" AC_MSG_RESULT(yes) AC_DEFINE_UNQUOTED(HAVE_QIMGIO, 1, [Define if you have the Qt extension qimgio available]) AC_SUBST(LIBQIMGIO) else AC_MSG_RESULT(not found) fi ]) AC_DEFUN([KDE_CHECK_ANSI], [ ]) AC_DEFUN([KDE_CHECK_INSURE], [ AC_ARG_ENABLE(insure, [ --enable-insure use insure++ for debugging [default=no]], [ if test $enableval = "no"; dnl then ac_use_insure="no" else ac_use_insure="yes" fi ], [ac_use_insure="no"]) AC_MSG_CHECKING(if we will use Insure++ to debug) AC_MSG_RESULT($ac_use_insure) if test "$ac_use_insure" = "yes"; dnl then CC="insure"; CXX="insure"; dnl CFLAGS="$CLAGS -fno-rtti -fno-exceptions "???? fi ]) AC_DEFUN([AM_DISABLE_LIBRARIES], [ AC_PROVIDE([AM_ENABLE_STATIC]) AC_PROVIDE([AM_ENABLE_SHARED]) enable_static=no enable_shared=yes ]) AC_DEFUN([AC_CHECK_UTMP_FILE], [ AC_MSG_CHECKING([for utmp file]) AC_CACHE_VAL(kde_cv_utmp_file, [ kde_cv_utmp_file=no for ac_file in \ \ /var/run/utmp \ /var/adm/utmp \ /etc/utmp \ ; \ do if test -r "$ac_file"; then kde_cv_utmp_file=$ac_file break fi done ]) if test "$kde_cv_utmp_file" != "no"; then AC_DEFINE_UNQUOTED(UTMP, "$kde_cv_utmp_file", [Define the file for utmp entries]) $1 AC_MSG_RESULT($kde_cv_utmp_file) else $2 AC_MSG_RESULT([non found]) fi ]) AC_DEFUN([KDE_CREATE_SUBDIRSLIST], [ DO_NOT_COMPILE="$DO_NOT_COMPILE CVS debian bsd-port admin" if test ! -s $srcdir/subdirs; then dnl Note: Makefile.common creates subdirs, so this is just a fallback TOPSUBDIRS="" files=`cd $srcdir && ls -1` dirs=`for i in $files; do if test -d $i; then echo $i; fi; done` for i in $dirs; do echo $i >> $srcdir/subdirs done fi if test -s $srcdir/inst-apps; then ac_topsubdirs="`cat $srcdir/inst-apps`" else ac_topsubdirs="`cat $srcdir/subdirs`" fi for i in $ac_topsubdirs; do AC_MSG_CHECKING([if $i should be compiled]) if test -d $srcdir/$i; then install_it="yes" for j in $DO_NOT_COMPILE; do if test $i = $j; then install_it="no" fi done else install_it="no" fi AC_MSG_RESULT($install_it) if test $install_it = "yes"; then TOPSUBDIRS="$TOPSUBDIRS $i" fi done AC_SUBST(TOPSUBDIRS) ]) AC_DEFUN([KDE_CHECK_NAMESPACES], [ AC_MSG_CHECKING(whether C++ compiler supports namespaces) AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ ], [ namespace Foo { extern int i; namespace Bar { extern int i; } } int Foo::i = 0; int Foo::Bar::i = 1; ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NAMESPACES) ], [ AC_MSG_RESULT(no) ]) AC_LANG_RESTORE ]) AC_DEFUN([KDE_CHECK_NEWLIBS], [ ]) dnl ------------------------------------------------------------------------ dnl Check for S_ISSOCK macro. Doesn't exist on Unix SCO. faure@kde.org dnl ------------------------------------------------------------------------ dnl AC_DEFUN([AC_CHECK_S_ISSOCK], [ AC_MSG_CHECKING(for S_ISSOCK) AC_CACHE_VAL(ac_cv_have_s_issock, [ AC_LANG_SAVE AC_LANG_C AC_TRY_LINK( [ #include ], [ struct stat buff; int b = S_ISSOCK( buff.st_mode ); ], ac_cv_have_s_issock=yes, ac_cv_have_s_issock=no) AC_LANG_RESTORE ]) AC_MSG_RESULT($ac_cv_have_s_issock) if test "$ac_cv_have_s_issock" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_S_ISSOCK, 1, [Define if sys/stat.h declares S_ISSOCK.]) fi ]) dnl ------------------------------------------------------------------------ dnl Check for MAXPATHLEN macro, defines KDEMAXPATHLEN. faure@kde.org dnl ------------------------------------------------------------------------ dnl AC_DEFUN([AC_CHECK_KDEMAXPATHLEN], [ AC_MSG_CHECKING(for MAXPATHLEN) AC_CACHE_VAL(ac_cv_maxpathlen, [ AC_LANG_C cat > conftest.$ac_ext < #endif #include #include #ifndef MAXPATHLEN #define MAXPATHLEN 1024 #endif KDE_HELLO MAXPATHLEN EOF ac_try="$ac_cpp conftest.$ac_ext 2>/dev/null | grep '^KDE_HELLO' >conftest.out" if AC_TRY_EVAL(ac_try) && test -s conftest.out; then ac_cv_maxpathlen=`sed 's#KDE_HELLO ##' conftest.out` else ac_cv_maxpathlen=1024 fi rm conftest.* ]) AC_MSG_RESULT($ac_cv_maxpathlen) AC_DEFINE_UNQUOTED(KDEMAXPATHLEN,$ac_cv_maxpathlen, [Define a safe value for MAXPATHLEN] ) ]) dnl ------------------------------------------------------------------------- dnl See if the compiler supports a template repository bero@redhat.de dnl ------------------------------------------------------------------------- AC_DEFUN([KDE_COMPILER_REPO], [ REPO="" NOREPO="" KDE_CHECK_COMPILER_FLAG(frepo, [ REPO="-frepo" NOREPO="-fno-repo" ]) if test -z "$REPO"; then KDE_CHECK_COMPILER_FLAG(instances=explicit, [ REPO="-instances=explicit" NOREPO="-instances=extern" ]) fi if test -n "$REPO"; then AC_DEFINE_UNQUOTED(HAVE_TEMPLATE_REPOSITORY, 1, [C++ compiler supports template repository]) $1 fi AC_SUBST(REPO) AC_SUBST(NOREPO) ]) AC_DEFUN([KDE_CHECK_HEADER], [ AC_LANG_SAVE kde_safe_cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS $all_includes" AC_LANG_CPLUSPLUS AC_CHECK_HEADER($1, $2, $3) CPPFLAGS=$kde_safe_cppflags AC_LANG_RESTORE ]) AC_DEFUN([KDE_FAST_CONFIGURE], [ dnl makes configure fast (needs perl) AC_ARG_ENABLE(fast-perl, [ --disable-fast-perl disable fast Makefile generation (needs perl)], with_fast_perl=$enableval, with_fast_perl=yes) ]) AC_DEFUN([KDE_CONF_FILES], [ val= if test -f $srcdir/configure.files ; then val=`sed -e 's%^%\$(top_srcdir)/%' $srcdir/configure.files` fi CONF_FILES= if test -n "$val" ; then for i in $val ; do CONF_FILES="$CONF_FILES $i" done fi AC_SUBST(CONF_FILES) ])dnl AC_DEFUN([KDE_SET_PREFIX], [ unset CDPATH dnl make $KDEDIR the default for the installation AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) if test "x$prefix" = "xNONE"; then prefix=$ac_default_prefix ac_configure_args="$ac_configure_args --prefix $prefix" fi KDE_FAST_CONFIGURE KDE_CONF_FILES ]) pushdef([AC_PROG_INSTALL], [ dnl our own version, testing for a -p flag popdef([AC_PROG_INSTALL]) dnl as AC_PROG_INSTALL works as it works we first have dnl to save if the user didn't specify INSTALL, as the dnl autoconf one overwrites INSTALL and we have no chance to find dnl out afterwards test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT AC_PROG_INSTALL if test -z "$kde_save_INSTALL_given" ; then # OK, user hasn't given any INSTALL, autoconf found one for us # now we test, if it supports the -p flag AC_MSG_CHECKING(for -p flag to install) rm -f confinst.$$.* > /dev/null 2>&1 echo "Testtest" > confinst.$$.orig ac_res=no if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then if test -f confinst.$$.new ; then # OK, -p seems to do no harm to install INSTALL="${INSTALL} -p" ac_res=yes fi fi rm -f confinst.$$.* AC_MSG_RESULT($ac_res) fi dnl the following tries to resolve some signs and wonders coming up dnl with different autoconf/automake versions dnl e.g.: dnl *automake 1.4 install-strip sets A_M_INSTALL_PROGRAM_FLAGS to -s dnl and has INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(A_M_INSTALL_PROGRAM_FLAGS) dnl it header-vars.am, so there the actual INSTALL_PROGRAM gets the -s dnl *automake 1.4a (and above) use INSTALL_STRIP_FLAG and only has dnl INSTALL_PROGRAM = @INSTALL_PROGRAM@ there, but changes the dnl install-@DIR@PROGRAMS targets to explicitly use that flag dnl *autoconf 2.13 is dumb, and thinks it can use INSTALL_PROGRAM as dnl INSTALL_SCRIPT, which breaks with automake <= 1.4 dnl *autoconf >2.13 (since 10.Apr 1999) has not that failure dnl *sometimes KDE does not use the install-@DIR@PROGRAM targets from dnl automake (due to broken Makefile.am or whatever) to install programs, dnl and so does not see the -s flag in automake > 1.4 dnl to clean up that mess we: dnl +set INSTALL_PROGRAM to use INSTALL_STRIP_FLAG dnl which cleans KDE's program with automake > 1.4; dnl +set INSTALL_SCRIPT to only use INSTALL, to clean up autoconf's problems dnl with automake<=1.4 dnl note that dues to this sometimes two '-s' flags are used (if KDE dnl properly uses install-@DIR@PROGRAMS, but I don't care dnl dnl And to all this comes, that I even can't write in comments variable dnl names used by automake, because it is so stupid to think I wanted to dnl _use_ them, therefor I have written A_M_... instead of AM_ dnl hmm, I wanted to say something ... ahh yes: Arghhh. if test -z "$kde_save_INSTALL_PROGRAM_given" ; then INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)' fi if test -z "$kde_save_INSTALL_SCRIPT_given" ; then INSTALL_SCRIPT='${INSTALL}' fi ])dnl AC_DEFUN([KDE_LANG_CPLUSPLUS], [AC_LANG_CPLUSPLUS ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC' pushdef([AC_LANG_CPLUSPLUS], [popdef([AC_LANG_CPLUSPLUS]) KDE_LANG_CPLUSPLUS]) ]) pushdef([AC_LANG_CPLUSPLUS], [popdef([AC_LANG_CPLUSPLUS]) KDE_LANG_CPLUSPLUS ]) AC_DEFUN([KDE_CHECK_LONG_LONG], [ AC_MSG_CHECKING(for long long) AC_CACHE_VAL(kde_cv_c_long_long, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_LINK([], [ long long foo = 0; foo = foo+1; ], kde_cv_c_long_long=yes, kde_cv_c_long_long=no) AC_LANG_RESTORE ]) AC_MSG_RESULT($kde_cv_c_long_long) if test "$kde_cv_c_long_long" = yes; then AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have long long as datatype]) fi ]) AC_DEFUN([KDE_CHECK_LIB], [ kde_save_LDFLAGS="$LDFLAGS" dnl AC_CHECK_LIB modifies LIBS, so save it here kde_save_LIBS="$LIBS" LDFLAGS="$LDFLAGS $all_libraries" case $host_os in aix*) LDFLAGS="-brtl $LDFLAGS" test "$GCC" = yes && LDFLAGS="-Wl,$LDFLAGS" ;; esac AC_CHECK_LIB($1, $2, $3, $4, $5) LDFLAGS="$kde_save_LDFLAGS" LIBS="$kde_save_LIBS" ]) AC_DEFUN([KDE_CHECK_INITGROUPS], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS(initgroups) if test "x$ac_cv_func_initgroups" = "xyes"; then case $host_os in aix*) AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_MSG_CHECKING([for initgroups prototype]) AC_CACHE_VAL(kde_cv_check_initgroups_proto, [ AC_TRY_COMPILE( [ #include ], [ char buffer[10]; gid_t id; int x = initgroups(buffer,id); ], kde_cv_check_initgroups_proto=yes, kde_cv_check_initgroups_proto=no) ]) AC_MSG_RESULT($kde_cv_check_initgroups_proto) AC_LANG_RESTORE ;; *) kde_cv_check_initgroups_proto=yes ;; esac else kde_cv_check_initgroups_proto=no fi if test "x$kde_cv_check_initgroups_proto" = "xyes"; then kde_check_initgroups_proto=1 else kde_check_initgroups_proto=0 fi AC_DEFINE_UNQUOTED(HAVE_INITGROUPS_PROTO,$kde_check_initgroups_proto, [initgroups may exist but not its prototype (e.g. AIX<4.3.3:8)]) ]) AC_DEFUN([KDE_CHECK_JAVA_DIR], [ AC_MSG_CHECKING([for Java directory]) AC_ARG_WITH(java, [ --with-java=javadir use java installed in javadir, --without-java disables ], [ ac_java_dir=$withval ], ac_java_dir="" ) dnl at this point ac_java_dir is either a dir, 'no' to disable, or '' to say look in $PATH if test "x$ac_java_dir" = "xno"; then kde_cv_java_bindir=no kde_cv_java_includedir=no kde_java_libjvmdir=no kde_java_libhpidir=no else if test "x$ac_java_dir" = "x"; then dnl No option set -> look in $PATH AC_CACHE_VAL(kde_cv_java_bindir, [ dnl First look for javac in $PATH. If not found we'll look at the option. KDE_FIND_PATH(javac, JAVAC, [], []) if test -n "$JAVAC"; then kde_cv_java_bindir=`echo $JAVAC | sed -e 's,/javac$,/,'` dnl this substitution might not work - well, we test for jni.h below kde_cv_java_includedir=`echo $kde_cv_java_bindir | sed -e 's,bin/$,include/,'` else kde_cv_java_bindir=no fi ]) else dnl config option set kde_cv_java_bindir=$ac_java_dir/bin kde_cv_java_includedir=$ac_java_dir/include fi fi dnl At this point kde_cv_java_bindir and kde_cv_java_includedir are either set or "no" if test "x$kde_cv_java_bindir" != "xno"; then dnl Look for libjvm.so kde_java_libjvmdir=`find $kde_cv_java_bindir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1` dnl Look for libhpi.so and avoid green threads kde_java_libhpidir=`find $kde_cv_java_bindir/.. -name libhpi.so | grep -v green | sed 's,libhpi.so,,'` dnl Now check everything's fine under there if test ! -x "$kde_cv_java_bindir/javac"; then AC_MSG_ERROR([javac not found under $kde_cv_java_bindir - it seems you passed a wrong --with-java.]) fi if test ! -x "$kde_cv_java_bindir/javah"; then AC_MSG_ERROR([javah not found under $kde_cv_java_bindir. javac was found though! Use --with-java or --without-java.]) fi if test ! -x "$kde_cv_java_bindir/jar"; then AC_MSG_ERROR([jar not found under $kde_cv_java_bindir. javac was found though! Use --with-java or --without-java.]) fi if test ! -r "$kde_cv_java_includedir/jni.h"; then AC_MSG_ERROR([jni.h not found under $kde_cv_java_includedir. Use --with-java or --without-java.]) fi if test ! -r "$kde_java_libjvmdir/libjvm.so"; then AC_MSG_ERROR([libjvm.so not found under $kde_java_libjvmdir. Use --without-java.]) fi if test ! -r "$kde_java_libhpidir/libhpi.so"; then AC_MSG_ERROR([libhpi.so not found under $kde_java_libhpidir. Use --without-java.]) fi jni_includes="-I$kde_cv_java_includedir" dnl Strange thing, jni.h requires jni_md.h which is under genunix here.. dnl and under linux here.. test -d "$kde_cv_java_includedir/linux" && jni_includes="$jni_includes -I$kde_cv_java_includedir/linux" test -d "$kde_cv_java_includedir/genunix" && jni_includes="$jni_includes -I$kde_cv_java_includedir/genunix" dnl Check for JNI version AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_cxxflags_safe="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $all_includes $jni_includes" AC_TRY_COMPILE([ #include ], [ #ifndef JNI_VERSION_1_2 Syntax Error #endif ],[ kde_jni_works=yes ], [ kde_jni_works=no ]) if test $kde_jni_works = no; then AC_MSG_ERROR([Incorrect version of $kde_cv_java_includedir/jni.h. You need to have Java Development Kit (JDK) version 1.2. Use --with-java to specify another location. Use --without-java to configure without java support. Or download a newer JDK and try again. See e.g. http://java.sun.com/products/jdk/1.2 ]) fi CXXFLAGS="$ac_cxxflags_safe" AC_LANG_RESTORE dnl All tests ok, inform and subst the variables AC_MSG_RESULT([javac/javah/jar in $kde_cv_java_bindir, jni.h in $kde_cv_java_includedir]) JAVAC=$kde_cv_java_bindir/javac AC_SUBST(JAVAC) JAVAH=$kde_cv_java_bindir/javah AC_SUBST(JAVAH) JAR=$kde_cv_java_bindir/jar AC_SUBST(JAR) AC_SUBST(jni_includes) JVMLIBS="-L$kde_java_libjvmdir -ljvm -L$kde_java_libhpidir -lhpi" AC_SUBST(JVMLIBS) fi ]) dnl this is a redefinition of autoconf 2.5x's AC_FOREACH. dnl When the argument list becomes big, as in KDE for AC_OUTPUT in dnl big packages, m4_foreach is dog-slow. So use our own version of dnl it. (matz@kde.org) dnl m4_define([mm_foreach], dnl [m4_pushdef([$1])_mm_foreach($@)m4_popdef([$1])]) dnl m4_define([mm_car], [[$1]]) dnl m4_define([mm_car2], [[$@]]) dnl m4_define([_mm_foreach], dnl [m4_if(m4_quote($2), [], [], dnl [m4_define([$1], [mm_car($2)])$3[]_mm_foreach([$1], dnl mm_car2(m4_shift($2)), dnl [$3])])]) dnl m4_define([AC_FOREACH], dnl [mm_foreach([$1], m4_split(m4_normalize([$2])), [$3])]) AC_DEFUN([KDE_NEED_FLEX], [ kde_libs_safe=$LIBS LIBS="$LIBS $USER_LDFLAGS" AM_PROG_LEX LIBS=$kde_libs_safe if test -z "$LEXLIB"; then AC_MSG_ERROR([You need to have flex installed.]) fi AC_SUBST(LEXLIB) ]) AC_DEFUN([AC_PATH_QTOPIA], [ dnl TODO: use AC_CACHE_VAL if test -z "$1"; then qtopia_minver_maj=1 qtopia_minver_min=5 qtopia_minver_pat=0 else qtopia_minver_maj=`echo "$1" | sed -e "s/^\(.*\)\..*\..*$/\1/"` qtopia_minver_min=`echo "$1" | sed -e "s/^.*\.\(.*\)\..*$/\1/"` qtopia_minver_pat=`echo "$1" | sed -e "s/^.*\..*\.\(.*\)$/\1/"` fi qtopia_minver="$qtopia_minver_maj$qtopia_minver_min$qtopia_minver_pat" qtopia_minverstr="$qtopia_minver_maj.$qtopia_minver_min.$qtopia_minver_pat" AC_REQUIRE([AC_PATH_QT]) AC_MSG_CHECKING([for Qtopia]) LIB_QTOPIA="-lqpe" AC_SUBST(LIB_QTOPIA) kde_qtopia_dirs="$QPEDIR /opt/Qtopia" ac_qtopia_incdir=NO AC_ARG_WITH(qtopia-dir, [ --with-qtopia-dir=DIR where the root of Qtopia is installed ], [ ac_qtopia_incdir="$withval"/include] ) qtopia_incdirs="" for dir in $kde_qtopia_dirs; do qtopia_incdirs="$qtopia_incdirs $dir/include" done if test ! "$ac_qtopia_incdir" = "NO"; then qtopia_incdirs="$ac_qtopia_incdir $qtopia_incdirs" fi qtopia_incdir="" AC_FIND_FILE(qpe/qpeapplication.h, $qtopia_incdirs, qtopia_incdir) ac_qtopia_incdir="$qtopia_incdir" if test -z "$qtopia_incdir"; then AC_MSG_ERROR([Cannot find Qtopia headers. Please check your installation.]) fi qtopia_ver_maj=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION "\(.*\)\..*\..*".*,\1,p'`; qtopia_ver_min=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\.\(.*\)\..*".*,\1,p'`; qtopia_ver_pat=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\..*\.\(.*\)".*,\1,p'`; qtopia_ver="$qtopia_ver_maj$qtopia_ver_min$qtopia_ver_pat" qtopia_verstr="$qtopia_ver_maj.$qtopia_ver_min.$qtopia_ver_pat" if test "$qtopia_ver" -lt "$qtopia_minver"; then AC_MSG_ERROR([found Qtopia version $qtopia_verstr but version $qtopia_minverstr is required.]) fi AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_cxxflags_safe="$CXXFLAGS" ac_ldflags_safe="$LDFLAGS" ac_libs_safe="$LIBS" CXXFLAGS="$CXXFLAGS -I$qtopia_incdir $all_includes" LDFLAGS="$LDFLAGS $QT_LDFLAGS $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" LIBS="$LIBS $LIB_QTOPIA $LIBQT" cat > conftest.$ac_ext < #include int main( int argc, char **argv ) { QPEApplication app( argc, argv ); return 0; } EOF if AC_TRY_EVAL(ac_link) && test -s conftest; then rm -f conftest* else rm -f conftest* AC_MSG_ERROR([Cannot link small Qtopia Application. For more details look at the end of config.log]) fi CXXFLAGS="$ac_cxxflags_safe" LDFLAGS="$ac_ldflags_safe" LIBS="$ac_libs_safe" AC_LANG_RESTORE QTOPIA_INCLUDES="-I$qtopia_incdir" AC_SUBST(QTOPIA_INCLUDES) AC_MSG_RESULT([found version $qtopia_verstr with headers at $qtopia_incdir]) ]) tiemu-3.03-nogdb+dfsg/aclocal.m4000066400000000000000000013205561220314353500164420ustar00rootroot00000000000000# generated automatically by aclocal 1.10.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(AC_AUTOCONF_VERSION, [2.61],, [m4_warning([this file was generated for autoconf 2.61. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # gettext.m4 serial 60 (gettext-0.17) dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) # iconv.m4 serial AM6 (gettext-0.17) dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [ dnl This tests against bugs in AIX 5.1 and HP-UX 11.11. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi AC_TRY_RUN([ #include #include int main () { /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) return 1; } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) return 1; return 0; }], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) # intlmacosx.m4 serial 1 (gettext-0.17) dnl Copyright (C) 2004-2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on MacOS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in MacOS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], gt_cv_func_CFPreferencesCopyAppValue, [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFPreferencesCopyAppValue(NULL, NULL)], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in MacOS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) # lib-ld.m4 serial 3 (gettext-0.13) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) # lib-link.m4 serial 13 (gettext-0.17) dnl Copyright (C) 2001-2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ(2.54) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Autoconf >= 2.61 supports dots in --with options. define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix], [ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` LIB[]NAME[]_PREFIX="$basedir" additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) # lib-prefix.m4 serial 5 (gettext-0.15) dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing dnl the basename of the libdir, either "lib" or "lib64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. The current dnl practice is that on a system supporting 32-bit and 64-bit instruction dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit dnl libraries go under $prefix/lib. We determine the compiler's default dnl mode by looking at the compiler's library search path. If at least dnl of its elements ends in /lib64 or points to a directory whose absolute dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the dnl default, namely "lib". acl_libdirstem=lib searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # serial 52 Debian 1.5.26-4 AC_PROG_LIBTOOL # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) # ----------------------------------------------------------- # If this macro is not defined by Autoconf, define it here. m4_ifdef([AC_PROVIDE_IFELSE], [], [m4_define([AC_PROVIDE_IFELSE], [m4_ifdef([AC_PROVIDE_$1], [$2], [$3])])]) # AC_PROG_LIBTOOL # --------------- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])])# AC_PROG_LIBTOOL # _AC_PROG_LIBTOOL # ---------------- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ])# _AC_PROG_LIBTOOL # AC_LIBTOOL_SETUP # ---------------- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac _LT_REQUIRED_DARWIN_CHECKS AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ])# AC_LIBTOOL_SETUP # _LT_AC_SYS_COMPILER # ------------------- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_AC_SYS_COMPILER # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. AC_DEFUN([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. AC_DEFUN([_LT_COMPILER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. AC_DEFUN([_LT_LINKER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # -------------------------- # Check for some things on darwin AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. echo "int foo(void){return 1;}" > conftest.c $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib ${wl}-single_module conftest.c if test -f libconftest.dylib; then lt_cv_apple_cc_single_mod=yes rm -rf libconftest.dylib* fi rm conftest.c fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[0123]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil="~$DSYMUTIL \$lib || :" else _lt_dsymutil= fi ;; esac ]) # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_AC_SYS_LIBPATH_AIX # _LT_AC_SHELL_INIT(ARG) # ---------------------- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_AC_SHELL_INIT # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_LOCK # ----------- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ])# _LT_AC_LOCK # AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED]) AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ])# AC_LIBTOOL_COMPILER_OPTION # AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ------------------------------------------------------------ # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ])# AC_LIBTOOL_LINKER_OPTION # AC_LIBTOOL_SYS_MAX_CMD_LEN # -------------------------- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ])# AC_LIBTOOL_SYS_MAX_CMD_LEN # _LT_AC_CHECK_DLFCN # ------------------ AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ])# _LT_AC_CHECK_DLFCN # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # --------------------------------------------------------------------- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ---------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF # AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) # --------------------------------- # Check to see if options -c and -o are simultaneously supported by compiler AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* ]) ])# AC_LIBTOOL_PROG_CC_C_O # AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) # ----------------------------------------- # Check to see if we can do hard links to lock some files if needed AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS # AC_LIBTOOL_OBJDIR # ----------------- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ])# AC_LIBTOOL_OBJDIR # AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) # ---------------------------------------------- # Check hardcoding attributes. AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH # AC_LIBTOOL_SYS_LIB_STRIP # ------------------------ AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ])# AC_LIBTOOL_SYS_LIB_STRIP # AC_LIBTOOL_SYS_DYNAMIC_LINKER # ----------------------------- # PORTME Fill in your ld.so characteristics AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" m4_if($1,[],[ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec], [lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"]) sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec], [lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"]) sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER # _LT_AC_TAGCONFIG # ---------------- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ])# _LT_AC_TAGCONFIG # AC_LIBTOOL_DLOPEN # ----------------- # enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_DLOPEN # AC_LIBTOOL_WIN32_DLL # -------------------- # declare package support for building win32 DLLs AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL # AC_ENABLE_SHARED([DEFAULT]) # --------------------------- # implement the --enable-shared flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ])# AC_ENABLE_SHARED # AC_DISABLE_SHARED # ----------------- # set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ])# AC_DISABLE_SHARED # AC_ENABLE_STATIC([DEFAULT]) # --------------------------- # implement the --enable-static flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ])# AC_ENABLE_STATIC # AC_DISABLE_STATIC # ----------------- # set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ])# AC_DISABLE_STATIC # AC_ENABLE_FAST_INSTALL([DEFAULT]) # --------------------------------- # implement the --enable-fast-install flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ])# AC_ENABLE_FAST_INSTALL # AC_DISABLE_FAST_INSTALL # ----------------------- # set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ])# AC_DISABLE_FAST_INSTALL # AC_LIBTOOL_PICMODE([MODE]) # -------------------------- # implement the --with-pic flag # MODE is either `yes' or `no'. If omitted, it defaults to `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ])# AC_LIBTOOL_PICMODE # AC_PROG_EGREP # ------------- # This is predefined starting with Autoconf 2.54, so this conditional # definition can be removed once we require Autoconf 2.54 or later. m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], [AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi]) EGREP=$ac_cv_prog_egrep AC_SUBST([EGREP]) ])]) # AC_PATH_TOOL_PREFIX # ------------------- # find a file program which can recognize shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ])# AC_PATH_TOOL_PREFIX # AC_PATH_MAGIC # ------------- # find a file program which can recognize a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# AC_PATH_MAGIC # AC_PROG_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ])# AC_DEPLIBS_CHECK_METHOD # AC_PROG_NM # ---------- # find the pathname to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ])# AC_PROG_NM # AC_CHECK_LIBM # ------------- # check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ])# AC_CHECK_LIBM # AC_LIBLTDL_CONVENIENCE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # it is assumed to be `libltdl'. LIBLTDL will be prefixed with # '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' # (note the single quotes!). If your package is not flat and you're not # using automake, define top_builddir and top_srcdir appropriately in # the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_CONVENIENCE # AC_LIBLTDL_INSTALLABLE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # and an installed libltdl is not found, it is assumed to be `libltdl'. # LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and top_srcdir # appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_INSTALLABLE # AC_LIBTOOL_CXX # -------------- # enable support for C++ libraries AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ])# AC_LIBTOOL_CXX # _LT_AC_LANG_CXX # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ])# _LT_AC_LANG_CXX # _LT_AC_PROG_CXXCPP # ------------------ AC_DEFUN([_LT_AC_PROG_CXXCPP], [ AC_REQUIRE([AC_PROG_CXX]) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP fi ])# _LT_AC_PROG_CXXCPP # AC_LIBTOOL_F77 # -------------- # enable support for Fortran 77 libraries AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ])# AC_LIBTOOL_F77 # _LT_AC_LANG_F77 # --------------- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ])# _LT_AC_LANG_F77 # AC_LIBTOOL_GCJ # -------------- # enable support for GCJ libraries AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ])# AC_LIBTOOL_GCJ # _LT_AC_LANG_GCJ # --------------- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ])# _LT_AC_LANG_GCJ # AC_LIBTOOL_RC # ------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ])# AC_LIBTOOL_RC # AC_LIBTOOL_LANG_C_CONFIG # ------------------------ # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_C_CONFIG # AC_LIBTOOL_LANG_CXX_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" if test "$GXX" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) # ------------------------------------ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP], [AC_REQUIRE([LT_AC_PROG_SED])dnl dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_AC_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac ])# AC_LIBTOOL_POSTDEP_PREDEP # AC_LIBTOOL_LANG_F77_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) AC_DEFUN([_LT_AC_LANG_F77_CONFIG], [AC_REQUIRE([AC_PROG_F77]) AC_LANG_PUSH(Fortran 77) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_AC_TAGVAR(GCC, $1)="$G77" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_F77_CONFIG # AC_LIBTOOL_LANG_GCJ_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], [AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_GCJ_CONFIG # AC_LIBTOOL_LANG_RC_CONFIG # ------------------------- # Ensure that the configuration vars for the Windows resource compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) AC_DEFUN([_LT_AC_LANG_RC_CONFIG], [AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_RC_CONFIG # AC_LIBTOOL_CONFIG([TAGNAME]) # ---------------------------- # If TAGNAME is not passed, then create an initial libtool script # with a default configuration from the untagged config vars. Otherwise # add code to config.status for appending the configuration named by # TAGNAME from the matching tagged config vars. AC_DEFUN([AC_LIBTOOL_CONFIG], [# The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ _LT_AC_TAGVAR(compiler, $1) \ _LT_AC_TAGVAR(CC, $1) \ _LT_AC_TAGVAR(LD, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ _LT_AC_TAGVAR(old_archive_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ _LT_AC_TAGVAR(predep_objects, $1) \ _LT_AC_TAGVAR(postdep_objects, $1) \ _LT_AC_TAGVAR(predeps, $1) \ _LT_AC_TAGVAR(postdeps, $1) \ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \ _LT_AC_TAGVAR(archive_cmds, $1) \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ _LT_AC_TAGVAR(postinstall_cmds, $1) \ _LT_AC_TAGVAR(postuninstall_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ _LT_AC_TAGVAR(allow_undefined_flag, $1) \ _LT_AC_TAGVAR(no_undefined_flag, $1) \ _LT_AC_TAGVAR(export_symbols_cmds, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ _LT_AC_TAGVAR(hardcode_automatic, $1) \ _LT_AC_TAGVAR(module_cmds, $1) \ _LT_AC_TAGVAR(module_expsym_cmds, $1) \ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ _LT_AC_TAGVAR(fix_srcfile_path, $1) \ _LT_AC_TAGVAR(exclude_expsyms, $1) \ _LT_AC_TAGVAR(include_expsyms, $1); do case $var in _LT_AC_TAGVAR(old_archive_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ _LT_AC_TAGVAR(archive_cmds, $1) | \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ _LT_AC_TAGVAR(module_cmds, $1) | \ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\[$]0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` ;; esac ifelse([$1], [], [cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" AC_MSG_NOTICE([creating $ofile])], [cfgfile="$ofile"]) cat <<__EOF__ >> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ])# AC_LIBTOOL_CONFIG # AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([LT_AC_PROG_SED]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[[ABCDGIRSTW]]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) # --------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc* | ecpc*) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler. _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac # # Check to make sure the static flag actually works. # wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ]) # AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) # ------------------------------------ # See if the linker supports building shared libraries. AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ;; linux* | k*bsd*-gnu) _LT_AC_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. _LT_CC_BASENAME([$compiler]) case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi _LT_AC_TAGVAR(link_all_deplibs, $1)=no else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi[[45]]*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then wlarc='${wl}' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ])# AC_LIBTOOL_PROG_LD_SHLIBS # _LT_AC_FILE_LTDLL_C # ------------------- # Be careful that the start marker always follows a newline. AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ])# _LT_AC_FILE_LTDLL_C # _LT_AC_TAGVAR(VARNAME, [TAGNAME]) # --------------------------------- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) # Cheap backport of AS_EXECUTABLE_P and required macros # from Autoconf 2.59; we should not use $as_executable_p directly. # _AS_TEST_PREPARE # ---------------- m4_ifndef([_AS_TEST_PREPARE], [m4_defun([_AS_TEST_PREPARE], [if test -x / >/dev/null 2>&1; then as_executable_p='test -x' else as_executable_p='test -f' fi ])])# _AS_TEST_PREPARE # AS_EXECUTABLE_P # --------------- # Check whether a file is executable. m4_ifndef([AS_EXECUTABLE_P], [m4_defun([AS_EXECUTABLE_P], [AS_REQUIRE([_AS_TEST_PREPARE])dnl $as_executable_p $1[]dnl ])])# AS_EXECUTABLE_P # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # # LT_AC_PROG_SED # -------------- # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ]) # nls.m4 serial 3 (gettext-0.15) dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ(2.50) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$PKG_CONFIG"; then if test -n "$$1"; then pkg_cv_[]$1="$$1" else PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) fi else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` else $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES # po.m4 serial 15 (gettext-0.17) dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ(2.50) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.17]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. AC_PREREQ(2.50) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # Configure paths for SDL # Sam Lantinga 9/21/99 # stolen from Manish Singh # stolen back from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS dnl AC_DEFUN([AM_PATH_SDL], [dnl dnl Get the cflags and libraries from the sdl-config script dnl AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], sdl_prefix="$withval", sdl_prefix="") AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], sdl_exec_prefix="$withval", sdl_exec_prefix="") AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], , enable_sdltest=yes) if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi if test "x$prefix" != xNONE; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) min_sdl_version=ifelse([$1], ,0.11.0,$1) AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" dnl dnl Now check if the installed SDL is sufficiently new. (Also sanity dnl checks the results of sdl-config to some extent dnl rm -f conf.sdltest AC_TRY_RUN([ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" AC_TRY_LINK([ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) rm -f conf.sdltest ]) # Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.10.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 3 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 13 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.60])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([acinclude.m4]) tiemu-3.03-nogdb+dfsg/build/000077500000000000000000000000001220314353500156655ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/build/InnoSetup/000077500000000000000000000000001220314353500176115ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/build/InnoSetup/Output/000077500000000000000000000000001220314353500211115ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/build/InnoSetup/Output/update.bat000066400000000000000000000001731220314353500230640ustar00rootroot00000000000000rm Release.txt copy C:\lpg\TiEmu3\RELEASE Release.txt rm ChangeLog.txt copy C:\lpg\TiEmu3\ChangeLog ChangeLog.txt cls tiemu-3.03-nogdb+dfsg/build/InnoSetup/tiemu.iss000066400000000000000000000474271220314353500214720ustar00rootroot00000000000000; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! ; ; (c) Copyright 2001-2007, the TiEmu team ; ; $Id: tiemu.iss 639 2004-08-19 15:35:33Z roms $ [Setup] AppName=TiEmu3-gdb AppVerName=TiEmu 3.03 No Gdb AppPublisher=The TiEmu Team AppPublisherURL=http://lpg.ticalc.org/prj_tiemu/index.html AppSupportURL=http://lpg.ticalc.org/prj_tiemu/mailing_list.html AppUpdatesURL=http://lpg.ticalc.org/prj_tiemu/win32_download.html DefaultDirName={pf}\TiEmu3-gdb DefaultGroupName=TiEmu3-gdb AllowNoIcons=yes LicenseFile=C:\lpg\tiemu3\COPYING InfoBeforeFile=C:\lpg\tiemu3\README.win32 InfoAfterFile=C:\lpg\tiemu3\RELEASE PrivilegesRequired = admin ;--- Shared Stuffs --- [Files] ; TI libraries Source: "C:\lpg\tifiles2\tests\libtifiles2-5.dll"; DestDir: "{cf}\LPG Shared\libs"; Flags: sharedfile; BeforeInstall: DeleteDll('libtifiles2-3.dll'); Source: "C:\lpg\ticables2\tests\libticables2-2.dll"; DestDir: "{cf}\LPG Shared\libs"; Flags: sharedfile; BeforeInstall: DeleteDll('libticables2-1.dll'); Source: "C:\lpg\ticalcs2\tests\libticalcs2-7.dll"; DestDir: "{cf}\LPG Shared\libs"; Flags: sharedfile; BeforeInstall: DeleteDll('libticalcs2-2.dll'); Source: "C:\lpg\ticonv\tests\libticonv-3.dll"; DestDir: "{cf}\LPG Shared\libs"; Flags: sharedfile; BeforeInstall: DeleteDll('libticonv-2.dll'); ; I18n files Source: "C:\lpg\tifiles2\po\fr.gmo"; DestDir: "{cf}\LPG Shared\libs\locale\fr\LC_MESSAGES"; DestName: "libtifiles2.mo"; Flags: ignoreversion sharedfile; Source: "C:\lpg\ticables2\po\fr.gmo"; DestDir: "{cf}\LPG Shared\libs\locale\fr\LC_MESSAGES"; DestName: "libticables2.mo"; Flags: ignoreversion sharedfile; Source: "C:\lpg\ticalcs2\po\fr.gmo"; DestDir: "{cf}\LPG Shared\libs\locale\fr\LC_MESSAGES"; DestName: "libticalcs2.mo"; Flags: ignoreversion sharedfile; ; Misc Source: "C:\lpg\gtk\bin\libxml2.dll"; DestDir: "{cf}\LPG Shared\libs"; Flags: onlyifdoesntexist sharedfile; BeforeInstall: DeleteDll('libxml2.dll'); Source: "C:\lpg\gtk\bin\libglade-2.0-0.dll"; DestDir: "{cf}\LPG Shared\libs"; Flags: onlyifdoesntexist sharedfile; BeforeInstall: DeleteDll('libglade-2.0-0.dll'); Source: "C:\lpg\gtk\bin\gtkthemeselector.exe"; DestDir: "{cf}\LPG Shared\bin"; Flags: ignoreversion sharedfile; BeforeInstall: DeleteExe('gtkthemeselector.exe'); ; Downloader Source: "C:\lpg\tilp2\build\InnoSetup\wget\*.dll"; DestDir: "{cf}\LPG Shared\wget"; Flags: ignoreversion Source: "C:\lpg\tilp2\build\InnoSetup\wget\wget.exe"; DestDir: "{cf}\LPG Shared\wget"; Flags: ignoreversion Source: "C:\lpg\tilp2\build\InnoSetup\wget\d_and_i.bat"; DestDir: "{cf}\LPG Shared\wget"; Flags: ignoreversion ; DhaHelper driver Source: "C:\lpg\ticables2\src\win32\dha\dhahelper.sys"; DestDir: "{cf}\LPG Shared\drivers\dha"; Flags: sharedfile; Source: "C:\lpg\ticables2\src\win32\dha\dhasetup.exe"; DestDir: "{cf}\LPG Shared\drivers\dha"; Flags: sharedfile; ; RwPorts driver Source: "C:\lpg\ticables2\src\win64\rwp\rwports.sys"; DestDir: "{cf}\LPG Shared\drivers\rwp"; Flags: sharedfile; Check: Is64BitInstallMode Source: "C:\lpg\ticables2\src\win64\rwp\rwpsetup.exe"; DestDir: "{cf}\LPG Shared\drivers\rwp"; Flags: sharedfile; Check: Is64BitInstallMode ; USB driver ;Source: "C:\lpg\libusb-win32\bin_modified\libusb0.sys"; DestDir: "{cf}\LPG Shared\drivers\usb"; Flags: sharedfile; Source: "C:\lpg\libusb-win32\bin\*.sys"; DestDir: "{cf}\LPG Shared\drivers\usb"; Flags: sharedfile; Source: "C:\lpg\libusb-win32\bin\*.dll"; DestDir: "{cf}\LPG Shared\drivers\usb"; Flags: sharedfile; Source: "C:\lpg\ticables2\src\win32\usb\*.cat"; DestDir: "{cf}\LPG Shared\drivers\usb"; Flags: sharedfile; Source: "C:\lpg\ticables2\src\win32\usb\*.inf"; DestDir: "{cf}\LPG Shared\drivers\usb"; Flags: sharedfile; Source: "C:\lpg\libusb-win32\bin\libusb0.dll"; DestDir: "{win}\system32"; Flags: replacesameversion restartreplace uninsneveruninstall; Source: "C:\lpg\libusb-win32\bin\libusb0_x64.dll"; DestDir: "{win}\system32"; Flags: replacesameversion restartreplace uninsneveruninstall; Check: Is64BitInstallMode [Registry] ; Create entries for shared libs (needed by other programs) Root: HKLM; Subkey: "Software\LPG Shared"; ValueType: string; ValueName: "Path"; ValueData: "{cf}\LPG Shared" Root: HKLM; Subkey: "Software\LPG Shared"; ValueType: string; ValueName: "DllPath"; ValueData: "{cf}\LPG Shared\libs" ;--- End of Shared Stuffs --- [Tasks] Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; MinVersion: 4,4 Name: "quicklaunchicon"; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:"; MinVersion: 4,4; Flags: unchecked Name: "com_ole"; Description: "Install TiEmuOle object for TIGCC and others"; GroupDescription: "Misc:"; Flags: unchecked Name: "slv_drv"; Description: "Install USB drivers"; GroupDescription: "Drivers:"; Name: "dha_drv"; Description: "Install BlackLink/Parallel cable for NT/2k/XP"; GroupDescription: "Drivers:"; MinVersion: 0,4 [Dirs] Name: "{app}\screenshots" [Files] ; Glade files Source: "C:\lpg\tiemu3\glade\*.glade"; DestDir: "{app}\glade"; Flags: ignoreversion; ; Help files Source: "C:\lpg\tiemu3\help\*.jpg"; DestDir: "{app}\help"; Flags: ignoreversion; Source: "C:\lpg\tiemu3\help\*.png"; DestDir: "{app}\help"; Flags: ignoreversion; Source: "C:\lpg\tiemu3\help\*.htm?"; DestDir: "{app}\help"; Flags: ignoreversion; ; Pixmaps files Source: "C:\lpg\tiemu3\pixmaps\*.xpm"; DestDir: "{app}\pixmaps"; Flags: ignoreversion; Source: "C:\lpg\tiemu3\build\msvc\small.ico"; DestDir: "{app}"; DestName: "romdump.ico"; Flags: ignoreversion; ; Skin files Source: "C:\lpg\tiemu3\skins\*.skn"; DestDir: "{app}\skins"; Flags: ignoreversion; ; Keymap files Source: "C:\lpg\tiemu3\skins\*.map"; DestDir: "{app}\skins"; Flags: ignoreversion; Source: "C:\lpg\tiemu3\skins\ti92.map"; DestDir: "{app}\skins"; DestName: "v200plt.map"; Flags: ignoreversion; ; i18n files Source: "C:\lpg\tiemu3\po\fr.gmo"; DestDir: "{app}\locale\fr\LC_MESSAGES"; DestName: "tiemu3.mo"; Flags: ignoreversion; ; Misc files Source: "C:\lpg\tiemu3\AUTHORS"; DestDir: "{app}"; DestName: "Authors.txt"; Flags: ignoreversion Source: "C:\lpg\tiemu3\BUGS"; DestDir: "{app}"; DestName: "Bugs.txt"; Flags: ignoreversion Source: "C:\lpg\tiemu3\CHANGELOG"; DestDir: "{app}"; DestName: "ChangeLog.txt"; Flags: ignoreversion Source: "C:\lpg\tiemu3\COPYING"; DestDir: "{app}"; DestName: "License.txt"; Flags: ignoreversion Source: "C:\lpg\tiemu3\LICENSES"; DestDir: "{app}"; DestName: "Licenses.txt"; Flags: ignoreversion Source: "C:\lpg\tiemu3\man\ManPage.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "C:\lpg\tiemu3\README.win32"; DestDir: "{app}"; DestName: "ReadMe.txt"; Flags: ignoreversion isreadme Source: "C:\lpg\tiemu3\RELEASE"; DestDir: "{app}"; DestName: "Release.txt"; Flags: ignoreversion Source: "C:\lpg\tiemu3\TODO"; DestDir: "{app}"; DestName: "ToDo.txt"; Flags: ignoreversion ; Resource files Source: "C:\lpg\tiemu3\misc\romcalls.txt"; DestDir: "{app}\misc"; Flags: ignoreversion Source: "C:\lpg\tiemu3\misc\iodefs*.txt"; DestDir: "{app}\misc"; Flags: ignoreversion Source: "C:\lpg\tiemu3\misc\memmap*.txt"; DestDir: "{app}\misc"; Flags: ignoreversion ; PedRom files Source: "C:\lpg\tiemu3\pedrom\pedrom*.tib"; DestDir: "{app}\pedrom"; Flags: ignoreversion ; Binaries Source: "C:\lpg\tiemu3\build\msvc\tiemu.exe"; DestDir: "{app}"; DestName: "tiemu.exe"; Flags: ignoreversion Source: "C:\lpg\SDL\lib\SDL.dll"; DestDir: "{app}"; Flags: ignoreversion ; COM/OLE object registration Source: "C:\lpg\tiemu3\src\ipc\com\tiemups.dll"; DestDir: "{app}"; Flags: regserver; Source: "C:\lpg\tiemu3\src\ipc\com\oleaut.tlb"; DestDir: "{app}"; DestName: "tiemu.tlb"; [INI] Filename: "{app}\tiemu.url"; Section: "InternetShortcut"; Key: "URL"; String: "http://lpg.ticalc.org/prj_tiemu" [Icons] Name: "{group}\TiEmu"; Filename: "{app}\tiemu.exe"; WorkingDir: "{app}" Name: "{group}\TiEmu on the Web"; Filename: "{app}\tiemu.url" Name: "{group}\Uninstall TiEmu"; Filename: "{uninstallexe}" Name: "{group}\User's Manual"; Filename: "{app}\help\Manual_en.html" Name: "{group}\GTK theme selector"; Filename: "{cf}\LPG Shared\bin\gtkthemeselector.exe"; Name: "{group}\Install GTK+ from web"; Filename: "{app}\wget\d_and_i.bat"; Name: "{group}\Bug Report"; Filename: "http://sourceforge.net/tracker/?func=add&group_id=23169&atid=377680"; Name: "{userdesktop}\TiEmu"; Filename: "{app}\tiemu.exe"; WorkingDir: "{app}"; MinVersion: 4,4; Tasks: desktopicon Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\TiEmu"; Filename: "{app}\tiemu.exe"; WorkingDir: "{app}"; MinVersion: 4,4; Tasks: quicklaunchicon [Run] ;Filename: "{app}\tiemu.exe"; Description: "Launch TiEmu"; StatusMsg: "Running TiEmu..."; Flags: postinstall nowait unchecked Filename: "{cf}\LPG Shared\wget\d_and_i.bat"; Description: "Download and install GTK+"; StatusMsg: "Running ..."; Flags: nowait postinstall unchecked hidewizard; ; COM/OLE registration Filename: "{app}\tiemu.exe"; Parameters: "/RegServer"; Tasks: com_ole; ; Drivers installation Filename: "{cf}\LPG Shared\drivers\dha\dhasetup.exe"; Parameters: "install"; MinVersion: 0,4; Tasks: dha_drv; StatusMsg: "Installing DHA driver (this may take few seconds) ..." Filename: "rundll32"; Parameters: "libusb0.dll,usb_install_driver_np_rundll {cf}\LPG Shared\drivers\usb\silverlk.inf"; Tasks: slv_drv; StatusMsg: "Installing SilverLink driver (this may take few seconds) ..." Filename: "rundll32"; Parameters: "libusb0.dll,usb_install_driver_np_rundll {cf}\LPG Shared\drivers\usb\titanium.inf"; Tasks: slv_drv; StatusMsg: "Installing Titanium driver (this may take few seconds) ..." ;Filename: "rundll32"; Parameters: "libusb0.dll,usb_install_driver_np_rundll {cf}\LPG Shared\drivers\usb\ti84plus.inf"; Tasks: slv_drv; StatusMsg: "Installing TI84+ driver (this may take few seconds) ..." ;Filename: "rundll32"; Parameters: "libusb0.dll,usb_install_driver_np_rundll {cf}\LPG Shared\drivers\usb\ti84pse.inf"; Tasks: slv_drv; StatusMsg: "Installing TI84+/SE driver (this may take few seconds) ..." ;Filename: "rundll32"; Parameters: "libusb0.dll,usb_install_driver_np_rundll {cf}\LPG Shared\drivers\usb\nspire.inf"; Tasks: slv_drv; StatusMsg: "Installing NSpire driver (this may take few seconds) ..." [UninstallRun] ; Dha uninstallation ;Filename: "C:\lpg\ticables2\src\win32\dha\dhasetup.exe"; Parameters: "remove"; MinVersion: 0,4; Tasks: dha_drv; ; COM/OLE un-registration Filename: "{app}\tiemu.exe"; Parameters: "/UnregServer"; Tasks: com_ole; [Registry] ; Boost GTK2 (WinNT/2000/XP) Root: HKLM; SubKey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "PANGO_WIN32_NO_UNISCRIBE"; ValueData: "anything"; MinVersion: 0,4; ; File associations Root: HKCR; Subkey: ".sav"; ValueType: string; ValueName: ""; ValueData: "TiEmu.Sav"; Root: HKCR; Subkey: "TiEmu.Sav"; ValueType: string; ValueName: ""; ValueData: "TiEmu state"; Root: HKCR; Subkey: "TiEmu.Sav\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\tiemu.exe,0" Root: HKCR; Subkey: "TiEmu.Sav\shell\open"; ValueType: string; ValueData: "Open with &TiEmu"; Root: HKCR; Subkey: "TiEmu.Sav\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\tiemu.exe"" ""%1"""; Root: HKCR; Subkey: ".rom"; ValueType: string; ValueName: ""; ValueData: "TiEmu.Rom"; Root: HKCR; Subkey: "TiEmu.Rom"; ValueType: string; ValueName: ""; ValueData: "Rom Dump"; Root: HKCR; Subkey: "TiEmu.Rom\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\romdump.ico"; Root: HKCR; Subkey: "TiEmu.Rom\shell\open"; ValueType: string; ValueData: "Open with &TiEmu"; Root: HKCR; Subkey: "TiEmu.Rom\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\tiemu.exe"" ""%1"""; ; Add LPG libraries to the tiemu's path Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\App Paths\tiemu.exe"; Flags: uninsdeletekeyifempty Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\App Paths\tiemu.exe"; ValueType: string; ValueData: "{app}\tiemu.exe"; Flags: uninsdeletevalue Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\App Paths\tiemu.exe"; ValueType: string; ValueName: "Path"; ValueData: "{app};{code:GetLpgDllPath};{code:GetGtkDllPath}"; Flags: uninsdeletevalue; [UninstallDelete] Type: files; Name: "{app}\tiemu.url" ;; Taken from "http://www.dropline.net/gtk/support.php" with some customizations [Code] var WimpPath: String; // BEGIN: Version comparison code (http://www.vincenzo.net/isxkb/index.php?title=MDAC_-_How_to_detect_version_of_MDAC_installed) procedure DecodeVersion (verstr: String; var verint: array of Integer); var i,p: Integer; s: string; begin // initialize array verint := [0,0,0,0]; i := 0; while ((Length(verstr) > 0) and (i < 4)) do begin p := pos ('.', verstr); if p > 0 then begin if p = 1 then s:= '0' else s:= Copy (verstr, 1, p - 1); verint[i] := StrToInt(s); i := i + 1; verstr := Copy (verstr, p+1, Length(verstr)); end else begin verint[i] := StrToInt (verstr); verstr := ''; end; end; end; // This function compares version strings // return -1 if ver1 < ver2 // return 0 if ver1 = ver2 // return 1 if ver1 > ver2 function CompareVersion (ver1, ver2: String) : Integer; var verint1, verint2: array of Integer; i: integer; begin SetArrayLength (verint1, 4); DecodeVersion (ver1, verint1); SetArrayLength (verint2, 4); DecodeVersion (ver2, verint2); Result := 0; i := 0; while ((Result = 0) and ( i < 4 )) do begin if verint1[i] > verint2[i] then Result := 1 else if verint1[i] < verint2[i] then Result := -1 else Result := 0; i := i + 1; end; end; // END: Version comparison code // Check GTK installation function IsGtkInstalled(): Boolean; var Exists: boolean; GtkPath: string; begin Exists := RegQueryStringValue (HKLM, 'Software\GTK\2.0', 'Path', GtkPath); if not Exists then begin Exists := RegQueryStringValue (HKCU, 'Software\GTK\2.0', 'Path', GtkPath); end; Result := Exists end; // Get GTK installation path function GetGtkPath(S: String): String; var Exists: boolean; GtkPath: string; begin GtkPath := ''; Exists := RegQueryStringValue (HKLM, 'Software\GTK\2.0', 'Path', GtkPath); if not Exists then begin Exists := RegQueryStringValue (HKCU, 'Software\GTK\2.0', 'Path', GtkPath); end; Result := GtkPath end; // Get GTK version function GetGtkVersion(): string; var Exists: boolean; GtkVersion: string; begin GtkVersion := ''; Exists := RegQueryStringValue (HKLM, 'Software\GTK\2.0', 'Version', GtkVersion); if not Exists then begin Exists := RegQueryStringValue (HKCU, 'Software\GTK\2.0', 'Version', GtkVersion); end; Result := GtkVersion end; // Get GTK DLL path function GetGtkDllPath(S: String): String; var Exists: boolean; GtkDllPath: string; begin GtkDllPath := ''; Result := GetGtkPath('') + '\bin'; end; // Get LPG installation path function GetLpgPath(S: String): String; var Exists: boolean; LpgPath: string; begin LpgPath := ''; Exists := RegQueryStringValue (HKLM, 'Software\LPG Shared', 'Path', LpgPath); if not Exists then begin Exists := RegQueryStringValue (HKCU, 'Software\LPG Shared', 'Path', LpgPath); end; Result := LpgPath end; // Get shared components path function GetLpgDllPath (S: String): String; var Exists: boolean; LpgPath: string; begin Exists := RegQueryStringValue (HKLM, 'Software\LPG Shared', 'DllPath', LpgPath); if not Exists then begin Exists := RegQueryStringValue (HKCU, 'Software\LPG Shared', 'DllPath', LpgPath); end; Result := LpgPath; end; function GetLpgDllCount (S: String): Integer; var Exists: boolean; Path: string; Count: Cardinal; begin path := ExpandConstant('{cf}\LPG Shared\' + S); Exists := RegQueryDWordValue (HKLM, 'Software\Microsoft\Windows\CurrentVersion\SharedDLLs\', Path, Count); end; // Check for minimum USB driver version function IsTiglUsbVersion3Mini (): Boolean; var Version: String; begin GetVersionNumbersString('C:\WinNT\System\TiglUsb.dll', Version); if CompareStr(Version, '3.0.0.0') < 0 then begin Result := false; end; end; // Display warning about GTK version function DisplayWarning(I: Integer): Boolean; var S: String; begin if(I = 1) then begin S := 'The GTK+ libraries are not installed: '; end; if(I = 2) then begin S := 'The GTK+ libraries are installed but the version is old: '; end; MsgBox(S + 'you will need the GTK+ 2.6.x Runtime Environnement! But, the installer can download and install it for you; simply think to check the box at the last tab/page. Otherwise, you can still download it from the start menu (start menu > programs > tiemu > install gtk+ from the web).', mbError, MB_OK); end; // Check for previous program presence and uninstall if needed function CheckUninstall(S: String): Boolean; var Exists: boolean; UnInsExe: String; ResultCode: Integer; I: Integer; L: Integer; begin Exists := RegKeyExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\' + S + '_is1'); Result := false; if Exists then begin if MsgBox('The program need to be uninstalled. Click YES to uninstall it or NO to force installation.', mbConfirmation, MB_YESNO) = IDNO then begin Result := true end else begin if RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\' + S + '_is1', 'UninstallString', uninsexe) then begin L := Length(uninsexe); for I:=1 to L-1 do begin uninsexe[i] := uninsexe[i+1]; end; SetLength(uninsexe, L-2); if not Exec(uninsexe, '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then begin Result := false; end else begin if ResultCode <> 0 then begin Result := false; end else begin Result := true; end; end; end; end; end else begin Result := true; end; end; // Does various checks before doing anything function InitializeSetup(): Boolean; begin // Retrieve GTK path if not IsGtkInstalled() then begin DisplayWarning(1); end; // Retrieve GTK version if IsGtkInstalled() then begin if CompareVersion(GetGtkVersion(), '2.6.10') < 0 then begin DisplayWarning(2); end; end; // Check version of USB driver if IsTiglUsbVersion3Mini() then begin MsgBox('SilverLink driver v2.x has been removed of your system. Now, TiLP/TiEmu requires v3.x (check out the README for download location).', mbError, MB_OK); end; // Check version of USB driver if IsTiglUsbVersion3Mini() then begin MsgBox('SilverLink driver v2.x has been removed of your system. Now, TiLP/TiEmu requires v3.x (check out the README for download location).', mbError, MB_OK); end; // Check for non-NT and WiMP theme WimpPath := GetGtkPath('') + '\lib\gtk-2.0\2.4.0\engines\libwimp.dll'; if FileExists(WimpPath) and not UsingWinNT() then begin MsgBox('Tip: you are running a non-NT platform with the GTK+ WiMP theme engine installed. If you get a lot of warnings about fonts in console, run the Gtk+ Theme Selector as provided in the start menu group of TiLP/TiEmu', mbError, MB_OK); end; // Uninstall before installing new release if not CheckUninstall('TiEmu3-gdb') then Result := false else Result := true; end; // Delete shared DLL procedure DeleteDll(const FileName: string); var pf: string; begin pf := ExpandConstant('{app}'); DeleteFile(pf + '\' + Filename); end; // Delete shared EXE procedure DeleteExe(const FileName: string); begin DeleteDll(FileName); end; tiemu-3.03-nogdb+dfsg/build/Makefile.am000066400000000000000000000004201220314353500177150ustar00rootroot00000000000000EXTRA_DIST = InnoSetup ipaq mingw msvc nsis distclean: clean clean: $(RM) \#* $(RM) *~ $(RM) core $(RM) ./msvc/*.ncb $(RM) ./msvc/*.ilk $(RM) ./msvc/*.dep $(RM) ./msvc/*.opt $(RM) -Rfv ./msvc/output $(RM) -Rfv ./msvc/test $(RM) ./msvc/tiemu*.exetiemu-3.03-nogdb+dfsg/build/Makefile.in000066400000000000000000000277171220314353500177500ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = build DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTODIRS = @AUTODIRS@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLADE_CFLAGS = @GLADE_CFLAGS@ GLADE_LIBS = @GLADE_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GROFF = @GROFF@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INCINTL = @INCINTL@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KDECONFIG = @KDECONFIG@ KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ KDE_INCLUDES = @KDE_INCLUDES@ KDE_LDFLAGS = @KDE_LDFLAGS@ KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@ KDE_MT_LIBS = @KDE_MT_LIBS@ KDE_RPATH = @KDE_RPATH@ LDFLAGS = @LDFLAGS@ LIBCOMPAT = @LIBCOMPAT@ LIBCRYPT = @LIBCRYPT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBOBJS = @LIBOBJS@ LIBPNG = @LIBPNG@ LIBPTHREAD = @LIBPTHREAD@ LIBRESOLV = @LIBRESOLV@ LIBS = @LIBS@ LIBSM = @LIBSM@ LIBSOCKET = @LIBSOCKET@ LIBTOOL = @LIBTOOL@ LIBUCB = @LIBUCB@ LIBUTIL = @LIBUTIL@ LIBXINERAMA = @LIBXINERAMA@ LIBZ = @LIBZ@ LIB_KAB = @LIB_KAB@ LIB_KDECORE = @LIB_KDECORE@ LIB_KDEPRINT = @LIB_KDEPRINT@ LIB_KDEUI = @LIB_KDEUI@ LIB_KFILE = @LIB_KFILE@ LIB_KFM = @LIB_KFM@ LIB_KHTML = @LIB_KHTML@ LIB_KIO = @LIB_KIO@ LIB_KPARTS = @LIB_KPARTS@ LIB_KSPELL = @LIB_KSPELL@ LIB_KSYCOCA = @LIB_KSYCOCA@ LIB_QPE = @LIB_QPE@ LIB_QT = @LIB_QT@ LIB_SMB = @LIB_SMB@ LIB_X11 = @LIB_X11@ LIB_XEXT = @LIB_XEXT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ QTE_NORTTI = @QTE_NORTTI@ QT_INCLUDES = @QT_INCLUDES@ QT_LDFLAGS = @QT_LDFLAGS@ RANLIB = @RANLIB@ RC = @RC@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TICABLES_CFLAGS = @TICABLES_CFLAGS@ TICABLES_LIBS = @TICABLES_LIBS@ TICALCS_CFLAGS = @TICALCS_CFLAGS@ TICALCS_LIBS = @TICALCS_LIBS@ TICONV_CFLAGS = @TICONV_CFLAGS@ TICONV_LIBS = @TICONV_LIBS@ TIFILES_CFLAGS = @TIFILES_CFLAGS@ TIFILES_LIBS = @TIFILES_LIBS@ UIC = @UIC@ UIC_TR = @UIC_TR@ USER_INCLUDES = @USER_INCLUDES@ USER_LDFLAGS = @USER_LDFLAGS@ USE_NLS = @USE_NLS@ USE_THREADS = @USE_THREADS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_INCLUDES = @X_INCLUDES@ X_LDFLAGS = @X_LDFLAGS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ all_includes = @all_includes@ all_libraries = @all_libraries@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ dbus = @dbus@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ kde = @kde@ kde_appsdir = @kde_appsdir@ kde_bindir = @kde_bindir@ kde_confdir = @kde_confdir@ kde_datadir = @kde_datadir@ kde_htmldir = @kde_htmldir@ kde_icondir = @kde_icondir@ kde_includes = @kde_includes@ kde_libraries = @kde_libraries@ kde_libs_htmldir = @kde_libs_htmldir@ kde_libs_prefix = @kde_libs_prefix@ kde_locale = @kde_locale@ kde_mimedir = @kde_mimedir@ kde_moduledir = @kde_moduledir@ kde_qtver = @kde_qtver@ kde_servicesdir = @kde_servicesdir@ kde_servicetypesdir = @kde_servicetypesdir@ kde_sounddir = @kde_sounddir@ kde_styledir = @kde_styledir@ kde_templatesdir = @kde_templatesdir@ kde_wallpaperdir = @kde_wallpaperdir@ kde_widgetdir = @kde_widgetdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ qt_includes = @qt_includes@ qt_libraries = @qt_libraries@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x_includes = @x_includes@ x_libraries = @x_libraries@ EXTRA_DIST = InnoSetup ipaq mingw msvc nsis all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu build/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean-am: clean-generic clean-libtool mostlyclean-am distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am distclean: clean clean: $(RM) \#* $(RM) *~ $(RM) core $(RM) ./msvc/*.ncb $(RM) ./msvc/*.ilk $(RM) ./msvc/*.dep $(RM) ./msvc/*.opt $(RM) -Rfv ./msvc/output $(RM) -Rfv ./msvc/test $(RM) ./msvc/tiemu*.exe # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/build/ipaq/000077500000000000000000000000001220314353500166175ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/build/ipaq/ReadMe.txt000066400000000000000000000042501220314353500205160ustar00rootroot00000000000000How to build TiEmu for iPAQ H3970 ? First, the main site for Linux PDA support is . You will find all you need about the Familiar distribution and GPE (GTK). Cross-compilation is covered here: Some tips: We will use the easier method (and probably the best one): OpenEmbedded based GPE SDK. The latest one is available here: . Almost everything you need should be included in the archive, just unpack it to /. To cross-compile TiEmu and the TiLP framework, copy the cross-config.sh script at the top of the source and run it. If this does'nt work, you can follow the guidelines above... To install connection: 1. modprobe usbnet 2. ifconfig usb0 192.168.0.200 up 3. ssh/scp To mount SD card: 1. edit /etc/modutils 2. Add into 'h3900_mmc': h3900_asic mmc_asic3 vfat 3. run update-modules 4. mount /dev/mmc/part1 /usr/local To build a GPE application, you need to do this: 1. export PKG_CONFIG_PATH=/usr/local/arm/oe/arm-linux/lib/pkgconfig 2. export PATH=/usr/local/arm/oe/bin:$PATH 3. Change to the location of your source 4. Run ./configure --host=arm-linux --disable-nls Option: --prefix=/usr/local/arm/oe/arm-linux 5. Files are installed in /usr/local/arm/oe/arm-linux if you choose the option. 6. On the iPAQ, you must copy files with the same directory tree (aka /usr/local/arm/oe/arm-linux) To debug: 1. Get gdb source (the same version as arm-linux-gdb if possible, 6.2) 2. Go to gdb/gdbserver, run ./configure --host=arm-linux and do make 3. You will get a gdbserver executable targetted for ARM. You can strip it to reduce size. 4. Copy gdbserver executable onto the iPAQ (with scp). 5. Run 'gdbserver tiemu host:1234' 6. Run locally 'gdb ./tiemu' 7. Type in 'remote target ipaq:1234' 8. Type in 'continue' for running (bug: don't type run !) That's all ! --- Thanks to Andrew Seddon of Cambridge Signal Processing - uses SubVersion (svn for short) 1) from tarballs: create a folder and extract all of your tarballs 2) from subversion: you will have to install svn-tools (linux) or a client (TortoiseSVN/Win32). Take a look at and . There is no specific tree for download sources but you can use this convenient one: c:\lpg\ or /home/devel/ | +- gfm +- skinedit +- tfdocgen +- ticables2 +- ticalcs2 +- ticonv +- tiemu3 +- tifile2 +- ticables2 +- tilp2 Next, check-out the following URLs for each target folder: - svn co http://svn.tilp.info/repos/tilp/libticables/trunk ticables2 - svn co http://svn.tilp.info/repos/tilp/libticalcs/trunk ticalcs2 - svn co http://svn.tilp.info/repos/tilp/libtifiles/trunk tifiles2 - svn co http://svn.tilp.info/repos/tilp/libticonv/trunk ticonv - svn co http://svn.tilp.info/repos/tilp/tilp/trunk tilp2 - svn co http://svn.tilp.info/repos/tilp/tiemu/trunk tiemu3 - svn co http://svn.tilp.info/repos/tilp/tfdocgen/trunk tfdocgen - svn co http://svn.tilp.info/repos/tiemu/skinedit/trunk skinedit - svn co http://svn.tilp.info/repos/tilp/gfm/trunk gfm --------------------------------------- | Compiling on Windows | --------------------------------------- 1. Download the following stuff, but do not install it yet! - MinGW and MSYS from http://www.mingw.org/ - Bison Binaries, Dependancies and Developer Files from http://gnuwin32.sf.net/packages/bison.htm - Flex Binaries, Dependancies and Developer Files from http://gnuwin32.sf.net/packages/flex.htm 2. Extract the MinGW stuff into C:\mingw and install MSYS into C:\msys, not C:\msys\1.0 3. Extract all the Bison and Flex archives into the C:\mingw directory 4. Create a C:\msys\target folder. This is where the compiled stuff will be placed. This is also the location where you will install GladeWin32 (see below). 5. Download and install the GladeWin32 Development Packages from http://prdownloads.sf.net/gladewin32/gtk-win32-devel-2.6.10-rc1.exe and make sure you check the "Install MSYS environment variables" checkbox when the installer asks you, if you don't, the monkeys WILL bite :) WARNING: DON'T build against GTK+ 2.8 for Windows! GTK+ 2.8 uses Cairo, which doesn't work at all on Windows 95/98/Me. Nobody seems interested in fixing that. We've learned this the hard way. You have been warned. You have to change the target folder of the installer into C:\msys\target otherwise you will have to replace any 'prefix=/target' entry in any of INST_PATH\lib\pkgconfig\*.pc by 'prefix=INST_PATH'. 6. Download and untar libusb-win32-device-bin from http://sourceforge.net/project/showfiles.php?group_id=78138 Install it using the script provided in the build/mingw directory of libticables2. 7. Install SDL from http://www.libsdl.org (for sound emulation in TiEmu). 8. Edit the C:\msys\etc\profile file and add the following on a new line at the bottom: export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/target/lib/pkgconfig:/mingw/lib/pkgconfig 9. Restart MSYS if you have done step 8 while MSYS was running. 10. Now let's compile. Open up MSYS if you haven't already. Make sure all of your source is extracted and ready to compile. With your basic Linux skills, go into the following directory and type the following: - Go into the libticables2 directory - Run: ./configure --prefix=/target make make install 11. Repeat Step 10 for the additional libti* libraries in the FOLLOWING order: libticonv, libtifiles2, libticalcs2. 12. Ok. Now all you have to do is repeat step 10 for TiLP, TiEmu, or GFM, or all of them if you so wish! For TiEmu, you'll also need SDL unless you configure with --disable-sound. 13. Your files are now all located in /target (C:\msys\target). If it does not work, an instruction may have been missed or performed wrong, or the source code is broken (which would be a bug, please report it). Have fun :) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------------------------------------------------- | Building an Installer on Windows for TiEmu3+GDB | --------------------------------------------------- Once you have successfully built TiEmu 3, here's how to build an installer on Windows: 1. Fetch the latest NSIS installer from http://nsis.sf.net and install it. 2. Fetch the NsisUnz plugin from http://saivert.com/nsis/nsisunz.7z and decompress nsisunz.dll to your NSIS\Plugins directory. 3. Fetch UPX from http://upx.sf.net and unzip it. 4. Adjust the paths in build\nsis\tiemu.nsi (in the TiEmu 3 source directory) for your installation. 5. Right-click on build\nsis\tiemu.nsi and select "Build". NOTE: TiLP and GFM don't have NSIS installer scripts yet. ------------------------------------------------------------ | Building an Installer on Windows for TiLP2 or TiEmu3-GDB | ------------------------------------------------------------ Once you have successfully built TiLP2/TiEmu3, here's how to build an installer on Windows: 1. Fetch the latest InnoSetup installer v5 from http://www.jrsoftware.org/isinfo.php and install it. 2. Fetch the GNU wget for Win32 from http://xoomer.alice.it/hherold/wget-1.10.2b.zip and unzip it into build/InnoSetup/wget. 3. Press Ctrl+F9 ("Build>Compile"). ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------------------------------------- | Cross Compiling on Linux (Fedora) | --------------------------------------- 1. Download and Install the following RPMs from http://sourceforge.net/project/showfiles.php?group_id=204414 : - mingw-binutils - mingw-gcc-core - mingw-gcc-g++ - mingw-w32api - mingw-runtime 2. Install WINE from Fedora. (Can be retrieved with yum: "yum install wine".) 3. Install the last GTK+ 2.6 development package (version 2.6.10-rc1) from http://gladewin32.sf.net in WINE. WARNING: DON'T build against GTK+ 2.8 for Windows! GTK+ 2.8 uses Cairo, which doesn't work at all on Windows 95/98/Me. Nobody seems interested in fixing that. We've learned this the hard way. You have been warned. 4. Run the following command: ln -s ~/.wine/c/GTK /target (This makes pkg-config happy, you can replace .../c/... with whatever directory/drive you wish to use.) 5. In order to avoid a needless dependency on mingwm10.dll and/or libgcc_sjlj_1.dll, edit the following files: /usr/local/lib/gcc/i386-mingw32/4.2.1-sjlj/libstdc++.la /usr/local/lib/gcc/i386-mingw32/4.2.1-sjlj/libsupc++.la /usr/local/lib/gcc/i386-mingw32/4.2.1-sjlj/debug/libstdc++.la and remove "-lmingwthrd" and "-lgcc_s". 6. Download and untar libusb-win32-device-bin from http://sourceforge.net/project/showfiles.php?group_id=78138 Install it using the script provided in the build/mingw directory of libticables2: cd libusb-win32-device-bin-*/libusb-win32 PREFIX=~/.wine/c/tiemu ./install.sh 7. Download the SDL source from http://www.libsdl.org (the binaries probably won't work due to iconv) You can build a static library from the source using the following options: ln -s /usr/include/wine/windows/dsound.h /usr/local/i386-mingw32/include/ # (for Direct Sound support) source cross-mingw32-gtkaio.sh #(otherwise it won't find iconv and then get confused when it's there) export CFLAGS="-Os -s -fno-exceptions" export CXXFLAGS="-Os -s -fno-exceptions" sed -i -e 's/test x\$have_directx = xyes/test x$have_dsound = xyes/g' configure # (don't require all of DirectX for dsound) sed -i -e 's/#include //g' src/audio/windx5/directx.h sed -i -e 's/#include //g' src/audio/windx5/directx.h ./configure --host=i386-mingw32 --build=i686-redhat-linux-gnu --prefix=... --disable-shared make make install For the prefix, I recommend creating a new directory. You can also use the following configure options to get a sound-only build of SDL: --disable-video --disable-events --disable-joystick --disable-cdrom --disable-timers --disable-loadso (WARNING: Only use these for static builds, a DLL with all that stuff disabled WILL cause problems!) 8. Edit cross-mingw32-gtkaio.sh to your system's needs. 9. Use the following commands to build TiEmu (TiLP and GFM can be built the same way, if this is broken, please report it as a bug): source cross-mingw32-gtkaio.sh #(needs to be done for EACH build!) export PATH=/path/to/sdl-mingw/bin:$PATH #(replace /path/to/sdl-mingw with the prefix from step 7) export CFLAGS="-Os -s -fno-exceptions" export CXXFLAGS="-Os -s -fno-exceptions" cd libticables-mingw-build ./configure --prefix=~/.wine/c/tiemu --host=i386-mingw32 --build=i686-redhat-linux-gnu make make install cd ../libticonv-mingw-build ./configure --prefix=~/.wine/c/tiemu --host=i386-mingw32 --build=i686-redhat-linux-gnu make make install cd ../libtifiles-mingw-build ./configure --prefix=~/.wine/c/tiemu --host=i386-mingw32 --build=i686-redhat-linux-gnu make make install cd ../libticalcs-mingw-build ./configure --prefix=~/.wine/c/tiemu --host=i386-mingw32 --build=i686-redhat-linux-gnu make make install cd ../tiemu-mingw-build ./configure --prefix=~/.wine/c/tiemu --host=i386-mingw32 --build=i686-redhat-linux-gnu make make install i386-mingw32-strip ~/.wine/c/tiemu/bin/* NOTE: You'll have to substitute an absolute path for ~ to make configure happy. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------------------------------------- | Running your software on WINE | --------------------------------------- If you have built your program against GTK+ 2.6 as per the instructions above, it will run in WINE. 1. Open WINE regedit and add ";c:\GTK\bin" to HKEY_CURRENT_USER\Environment\PATH. 2. Copy all the .ttf files from /usr/share/fonts/bitstream-vera/ to ~/.wine/c/windows/Fonts so GTK+ in WINE has fonts to work with. 3. Add "bitstream vera sans" to the aliases for "sans" and likewise for "serif", "monospace" and "courier" in ~/.wine/c/GTK/etc/pango/pango.aliases. 4. Run: wine 'c:\tiemu\bin\tiemu.exe' WARNING: DON'T use GTK+ 2.8 if you want to be able to test with WINE! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------------------------------------- | Cross-Building a Windows Installer | --------------------------------------- Once you have successfully cross-built TiEmu 3, here's how to build a Windows installer on Fedora: 1. Install NSIS from: http://repo.calcforge.org/fedora/ 2. Fetch the NsisUnz plugin from http://saivert.com/nsis/nsisunz.7z and decompress nsisunz.dll to your /usr/share/nsis/Plugins directory. 3. Install UPX from Fedora. (Can be retrieved with yum: "yum install upx".) 4. Use the following commands to build the TiEmu setup wizard: cd build/nsis makensis tiemu-cross.nsi NOTE: TiLP and GFM don't have NSIS installer scripts yet. tiemu-3.03-nogdb+dfsg/build/mingw/cross-mingw32-gtkaio.sh000077500000000000000000000013771220314353500232460ustar00rootroot00000000000000# This script sets up variables for cross-compilation of GTK+ programs to MinGW. # It assumes a GTK+ development environment installation from gladewin32.sf.net in WINE. # You'll also need a: ln -s ~/.wine/c/GTK /target export CC=i386-mingw32-gcc export CXX=i386-mingw32-g++ export RC=i386-mingw32-windres export GTK_BASEPATH=~/.wine/c/GTK export PATH=$GTK_BASEPATH/bin:$PATH export ACLOCAL_FLAGS="-I $GTK_BASEPATH/share/aclocal $ACLOCAL_FLAGS" export C_INCLUDE_PATH=$GTK_BASEPATH/include:/usr/local/i386-mingw32/include export LIBRARY_PATH=$GTK_BASEPATH/lib:/usr/local/i386-mingw32/lib/w32api:/usr/local/i386-mingw32/lib export PKG_CONFIG_PATH=/usr/local/i386-mingw32/lib/pkgconfig:$GTK_BASEPATH/lib/pkgconfig:~/.wine/c/tiemu/lib/pkgconfig export LIBS=-L/target/lib tiemu-3.03-nogdb+dfsg/build/mingw/tiemu.ico000066400000000000000000000321061220314353500206270ustar00rootroot00000000000000hFH® ¨ ö 00¨ž( @/(//(//(//(//(//(/0/0€p€¤  €p€¤  €p€¤  0/0€p€0/0€p€0/0€p€/(//(//(//(//(//(//(//(/0/0€p€¤  €p€¤  €p€¤  /(/€p€€p€€p€€p€€p€€p€€p€0/0€p€0/0€p€0/0€p€/(//(/€p€¤  €p€1–€p€ÿW%€p€0/0€p€¤  €p€¤  €p€¤  €p€€p€€p€€p€€p€€p€€p€0/0€p€0/0€p€0/0€p€/(//(/€p€0/0€p€0/0€p€0/0€p€0/0€p€€p€€p€€p€€p€€p€/(/€p€€p€€p€€p€€p€€p€€p€0/00/00/00/00/00/00/0/(/€p€/(/€p€/(/€p€/(/€p€0/0@_@oŸooŸooŸooŸo0/0/(/€p€¤  ¤  ¤  ¤  ¤  ¤  0/0@_@oŸooŸooŸooŸo0/0/(/¤  @_@@_@@_@@_@@_@@_@0/0@_@oŸooŸooŸooŸo0/0/(/¤  @_@oŸooŸooŸooŸooŸo0/00/00/00/00/00/00/0/(/¤  @_@oŸooŸooŸooŸooŸo@_@/(//(/0/00/00/00/0/(/¤  _w__w__w__w__w__w_@_@¤  €p€€p€¤  €p€/(//(//(//(//(//(//(//(//(//(//(//(//(/ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ(0 €p€€p€€p€€p€€p€€p€€p€€p€€€€€p€€p€€p€°_/€p€€€€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€€€€€p€€p€€p€  €p€€€€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€€€€€p€€p€   €p€  €p€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€p€€·€ß߀p€°`0€p€ÐÏЀp€€p€ Ÿ €p€ÐÏЀp€€·€€p€°`0€p€€p€€p€€€€€p€€p€€p€€p€€p€ÐÏЀp€ÐÏЀp€€€€€p€°¨°€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€€€€p€ÐßÐÏЀp€°`0€p€ÐÏЀp€€p€€€€€p€€p€€p€€p€€p€€€€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€€€€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€€€€p€°_/°_/€p€¿`0¿`0€p€¿`0€p€€€€€p€€p€€p€€p€€p€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€€€€p€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐ0/0@_@@_@@_@@_@@_@@_@@_@@_@€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/0@_@oŸooŸooŸooŸooŸooŸooŸo€€€€p€ÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐ0/0@_@oŸooŸopŸpoŸooŸooŸooŸo€€€€p€ÐÏÐoŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0@_@oŸooŸooŸooŸooŸooŸooŸo€€€€p€ÐÏÐoŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0@_@oŸooŸooŸooŸooŸooŸooŸo€€€€p€ÐÏÐoŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0_w__w__w__w__w__w__w__w_€€€€p€ÐÏÐoŸooŸooŸooŸooŸooŸooŸooŸooŸoÐÏÐ0/00/00/00/00/00/00/00/0€€€€p€ÐÏÐ_w__w__w__w__w__w__w__w__w_ÐÏЀp€€p€€p€€p€€p€€p€p€p€ÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏЀp€°_/°¨°€p€°¨°€p€0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0ÿÿÿÿÿüÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÀÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿÀÿ( @€ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€0,0Œˆ|ˆ  €p€XTX€p€XTX€p€XTX°\(°\(ˆ|ˆ0,0€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°xpx0,0€€€€p€€p€XTX€p€XTX€p€XTX€p€  xpx0,0€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°xpx0,0€€€€p€€p€XTX€p€XTX€p€XTX€p€  xpx0,0€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°xpx0,0€€€€p€€p€€p€  €p€  €p€  xpx0,00,00,00,00,00,00,00,00,00,00,00,00,0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€xpxŒ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€0,0€€€€p€€´€€p€ØØ€p€°`0€p€€p€ÐÌЀp€xpx œ €p€°¨°€p€°¨°€p€°¨°€p€°¨°°¨°°¨°°¨°€p€€p€€p€0,0€€€€p€€p€€p€€p€€p€€p€€p€ÐÌЀp€ÐÌÐxpx€€€€p€ÐÌЀp€€´€€p€°`0€p€0,00,00,00,0€p€€p€€p€0,0€€€€p€ÐØ€p€ÐÌЀp€°`0€p€€p€ÐÌЀp€xpx(((€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°°¨°€p€0,0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€xpx€€€€p€€p€€p€€p€€p€0,0€p€0,0€p€0,0€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°plp€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€€p€€p€0,0€€€€p€°\(€p€°\(€p€¸`0€p€¸`0€p€¸`0plp(((€€€€p€€p€€p€€p€€p€0,0€p€€p€€p€€p€0,0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€plp000€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0,00,00,00,00,00,00,00,00,00,00,00,00,0000€€€€p€ÐÌЀp€ÐÌЀp€ÐÌЀp€ÐÌЀp€ÐÌЀp€ÐÌЀp€ÐÌÐ0,00,0@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@0,0000€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0,00,0@\@hœhhœhhœhhœhhœhhœhhœhhœhhœh0,0848€€€€p€ÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐ0,00,0@\@hœhhœhhœhpœphœhhœhhœhhœhhœh0,0848€€€€p€ÐÌÐ@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@0,00,0@\@hœhhœhhœhhœhhœhhœhhœhhœhhœh0,0848€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh0,00,0@\@hœhhœhhœhhœhhœhhœhhœhhœhhœh0,0888€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh0,00,0@\@hœhhœhhœhhœhhœhhœhhœhhœhhœh0,0848€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh0,00,0XtXXtXXtXXtXXtXXtXXtXXtXXtXXtX0,0848€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh0,00,00,00,00,00,00,00,00,00,00,00,00,0848€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh@\@0,00,00,00,00,00,00,00,00,00,00,00,0888€€€€p€ÐÌÐXtXXtXXtXXtXXtXXtXXtXXtXXtXXtXXtXXtX@\@ÐÌЀp€€p€€p€€p€€p€€p€€p€€p€xpxHHHŒ€p€ÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌЀp€°\(€p€°¨°€p€°¨°€p€°¨°Œ`\` œ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ œ hhh0,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,0ÿÿÿÿÿÿàÿÿÀÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€àÀ€€€€€€€€€€€€€€€€€€€À(0`€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€€€€p€€p€€p€€p€€p€0/0   €p€€p€€p€°_/°_/°_/0/0€€€€p€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€p0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°p0/0€€€€p€€p€€p€€p€€p€€p€   p0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°p0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°p0/0€€€€p€€p€€p€€p€€p€€p€   p0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°p0/0€€€€p€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€p0/0€€€€p€€p€€p€€p€   €p€   €p€   p0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€0/0€€€€p€€p€€·€€·€€p€ßßß߀p€°`0°`0€p€€p€€p€ÐÏЀp€€p€p Ÿ  Ÿ €p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€ÐÏЀp€ÐÏЀp€p Ÿ  Ÿ €p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°°¨°°¨°°¨°€p€€p€°¨°°¨°€p€€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€ÐÏЀp€ÐÏЀp€p€€€€€€€p€ÐÏÐÐÏЀp€€·€€·€€p€°`0°`0€p€0/00/00/00/00/0€p€€p€0/00/0€p€€p€0/0€€€€p€€p€ÐßÐ߀p€ÐÏÐÐÏЀp€°`0°`0€p€€p€€p€ÐÏЀp€€p€p/(/€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/00/0€p€€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p/(/€€€€€€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p€€€€€€€p€€p€€p€€p€€p€€p€0/00/0€p€0/00/0€p€€p€€p€0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°pop€€€€€€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€0/0€€€€p€€p€°_/°_/€p€°_/°_/€p€¿`0¿`0€p€¿`0¿`0€p€¿`0¿`0pop€€€€€€€p€€p€000€p€000000€p€000000€p€000000€p€000000€p€0/00/0€p€€p€€p€0/0€€€€p€€p€°_/°_/€p€°_/°_/€p€¿`0¿`0€p€¿`0¿`0€p€¿`0¿`0pop/(/€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€pop000€€€€€€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0000€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0000€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/00/00/0@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@0/0000€€€€€€€p€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏÐ0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0000€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐ0/00/00/0@_@oŸooŸooŸooŸooŸopŸpoŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?8?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?8?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/0_w__w__w__w__w__w__w__w__w__w__w__w__w__w__w_0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/0°¨°0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo@_@0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0?8?€€€€€€€p€ÐÏÐÐÏÐ_w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w_@_@ÐÏÐÐÏЀp€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p?8?€€€€€€€p€ÐÏÐÐÏÐ_w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w_@_@ÐÏÐÐÏЀp€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€pOHO€p€ÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏЀp€°_/°_/€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°`_` Ÿ  Ÿ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ Ÿ `_` Ÿ  Ÿ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ Ÿ ohooho0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿàÿÿÿÿÿàÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿøÿÿøÿÿàÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿà?ÿÿtiemu-3.03-nogdb+dfsg/build/mingw/tiemu.rc000066400000000000000000000026661220314353500204710ustar00rootroot00000000000000#define IDI_ICON1 101 ///////////////////////////////////////////////////////////////////////////// // // Version // 1 VERSIONINFO FILEVERSION 3,0,3,0 PRODUCTVERSION 3,0,3,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0x28L FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "Comments", "This program is placed under GPL license. The license can be found on www.gnu.org\0" VALUE "CompanyName", "Linux Programmer Group\0" VALUE "FileDescription", "TiEmu\0" VALUE "FileVersion", "3.03\0" VALUE "InternalName", "TiEmu\0" VALUE "LegalCopyright", "Copyright © 2000-2008, The TiEmu Team\0" VALUE "LegalTrademarks", "The TiEmu Team\0" VALUE "OriginalFilename", "tiemu.exe\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "TiEmu 3\0" VALUE "ProductVersion", "3, 0, 3, 0\0" VALUE "SpecialBuild", "Windows build\0" END END END ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_ICON1 ICON DISCARDABLE "tiemu.ico" ///////////////////////////////////////////////////////////////////////////// tiemu-3.03-nogdb+dfsg/build/msvc/000077500000000000000000000000001220314353500166355ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/build/msvc/ReadMe.txt000066400000000000000000000070761220314353500205450ustar00rootroot00000000000000Compiling LPG Software with MSVC v6 Version 20090103 Copyright (C) 2005-2007 Kevin Kofler Copyright (C) 2001-2009 Romain Lievin Copyright (C) 2006 Tyler Cassidy ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ This is how to compile LPG software with MSVC. This bugger can be tricky so watch out. :) These compiling instructions will work for: - libticables2, libticonv, libtifiles2, libticables2 - TiLP 2 - TiEmu 3 - GFM - SkinEdit Follow the instructions very closely or you will soon see that monkeys will start biting. ;-) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------------------------------------- | Retrieving sources | --------------------------------------- There are two ways to retrieve source code: - downloads tarballs from - uses SubVersion (svn for short) from 1) from tarballs: create a folder and extract all of your tarballs 2) from subversion: you will have to install svn-tools (linux) or a client (TortoiseSVN/Win32). Take a look at and . There is a specific tree to use for build: C:\LPG\ | +- GTK +- SDL +- libusb-win32 +- gfm +- skinedit +- tfdocgen +- ticables2 +- ticalcs2 +- ticonv +- tiemu3 +- tifile2 +- ticables2 +- tilp2 Next, check-out the following URLs for each target folder: - svn co http://svn.tilp.info/repos/tilp/libticables/trunk ticables2 - svn co http://svn.tilp.info/repos/tilp/libticalcs/trunk ticalcs2 - svn co http://svn.tilp.info/repos/tilp/libtifiles/trunk tifiles2 - svn co http://svn.tilp.info/repos/tilp/libticonv/trunk ticonv - svn co http://svn.tilp.info/repos/tilp/tilp/trunk tilp2 - svn co http://svn.tilp.info/repos/tilp/tiemu/trunk tiemu3 - svn co http://svn.tilp.info/repos/tilp/tfdocgen/trunk tfdocgen - svn co http://svn.tilp.info/repos/tiemu/skinedit/trunk skinedit - svn co http://svn.tilp.info/repos/tilp/gfm/trunk gfm --------------------------------------- | Compiling on Windows | --------------------------------------- 1) Have MSVC 6.0 properly installed 2) Download and install the GladeWin32 Development Packages from http://prdownloads.sf.net/gladewin32/gtk-win32-devel-2.6.10-rc1.exe and make sure you check the "Install MSVC environment variables" checkbox when the installer asks you, if you don't, the monkeys WILL bite :) Download and install the GladeWin32 Development Packages from http://prdownloads.sf.net/gladewin32/gtk-win32-devel-2.6.10-rc1.exe and make sure you check the "Install MSYS environment variables" checkbox when the installer asks you, if you don't, the monkeys WILL bite :) 3) Download and untar libusb-win32-device-bin from 4) Download and unzip libSDL from . 5) Open an MSVC project (tilp2, tiemu3, ...) at c:\lpg\project\build\msvc and build. Note for TiEmu: the MSVC project at "base_folder\tiemu\src\core\uae" has to be built before. 6) Object and executables files will be produced in "C:\lpg\msvc". The generated executables will not run without some resource files. To copy them, you will find in c:\lpg\tilp or c:\lpg\tiemu a script named install.bat. Have fun :) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tiemu-3.03-nogdb+dfsg/build/msvc/TiEmu.ico000077500000000000000000000321061220314353500203610ustar00rootroot00000000000000hFH® ¨ ö 00¨ž( @/(//(//(//(//(//(/0/0€p€¤  €p€¤  €p€¤  0/0€p€0/0€p€0/0€p€/(//(//(//(//(//(//(//(/0/0€p€¤  €p€¤  €p€¤  /(/€p€€p€€p€€p€€p€€p€€p€0/0€p€0/0€p€0/0€p€/(//(/€p€¤  €p€1–€p€ÿW%€p€0/0€p€¤  €p€¤  €p€¤  €p€€p€€p€€p€€p€€p€€p€0/0€p€0/0€p€0/0€p€/(//(/€p€0/0€p€0/0€p€0/0€p€0/0€p€€p€€p€€p€€p€€p€/(/€p€€p€€p€€p€€p€€p€€p€0/00/00/00/00/00/00/0/(/€p€/(/€p€/(/€p€/(/€p€0/0@_@oŸooŸooŸooŸo0/0/(/€p€¤  ¤  ¤  ¤  ¤  ¤  0/0@_@oŸooŸooŸooŸo0/0/(/¤  @_@@_@@_@@_@@_@@_@0/0@_@oŸooŸooŸooŸo0/0/(/¤  @_@oŸooŸooŸooŸooŸo0/00/00/00/00/00/00/0/(/¤  @_@oŸooŸooŸooŸooŸo@_@/(//(/0/00/00/00/0/(/¤  _w__w__w__w__w__w_@_@¤  €p€€p€¤  €p€/(//(//(//(//(//(//(//(//(//(//(//(//(/ÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ(0 €p€€p€€p€€p€€p€€p€€p€€p€€€€€p€€p€€p€°_/€p€€€€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€€€€€p€€p€€p€  €p€€€€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€€€€€p€€p€   €p€  €p€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€p€€·€ß߀p€°`0€p€ÐÏЀp€€p€ Ÿ €p€ÐÏЀp€€·€€p€°`0€p€€p€€p€€€€€p€€p€€p€€p€€p€ÐÏЀp€ÐÏЀp€€€€€p€°¨°€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€€€€p€ÐßÐÏЀp€°`0€p€ÐÏЀp€€p€€€€€p€€p€€p€€p€€p€€€€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€€€€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€€€€p€°_/°_/€p€¿`0¿`0€p€¿`0€p€€€€€p€€p€€p€€p€€p€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€€€€p€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐ0/0@_@@_@@_@@_@@_@@_@@_@@_@€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/0@_@oŸooŸooŸooŸooŸooŸooŸo€€€€p€ÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐ0/0@_@oŸooŸopŸpoŸooŸooŸooŸo€€€€p€ÐÏÐoŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0@_@oŸooŸooŸooŸooŸooŸooŸo€€€€p€ÐÏÐoŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0@_@oŸooŸooŸooŸooŸooŸooŸo€€€€p€ÐÏÐoŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0_w__w__w__w__w__w__w__w_€€€€p€ÐÏÐoŸooŸooŸooŸooŸooŸooŸooŸooŸoÐÏÐ0/00/00/00/00/00/00/00/0€€€€p€ÐÏÐ_w__w__w__w__w__w__w__w__w_ÐÏЀp€€p€€p€€p€€p€€p€p€p€ÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏЀp€°_/°¨°€p€°¨°€p€0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0ÿÿÿÿÿüÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÀÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿ€ÿÀÿ( @€ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€0,0Œˆ|ˆ  €p€XTX€p€XTX€p€XTX°\(°\(ˆ|ˆ0,0€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°xpx0,0€€€€p€€p€XTX€p€XTX€p€XTX€p€  xpx0,0€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°xpx0,0€€€€p€€p€XTX€p€XTX€p€XTX€p€  xpx0,0€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°xpx0,0€€€€p€€p€€p€  €p€  €p€  xpx0,00,00,00,00,00,00,00,00,00,00,00,00,0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€xpxŒ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€0,0€€€€p€€´€€p€ØØ€p€°`0€p€€p€ÐÌЀp€xpx œ €p€°¨°€p€°¨°€p€°¨°€p€°¨°°¨°°¨°°¨°€p€€p€€p€0,0€€€€p€€p€€p€€p€€p€€p€€p€ÐÌЀp€ÐÌÐxpx€€€€p€ÐÌЀp€€´€€p€°`0€p€0,00,00,00,0€p€€p€€p€0,0€€€€p€ÐØ€p€ÐÌЀp€°`0€p€€p€ÐÌЀp€xpx(((€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°°¨°€p€0,0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€xpx€€€€p€€p€€p€€p€€p€0,0€p€0,0€p€0,0€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°plp€€€€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€°¨°€p€€p€€p€0,0€€€€p€°\(€p€°\(€p€¸`0€p€¸`0€p€¸`0plp(((€€€€p€€p€€p€€p€€p€0,0€p€€p€€p€€p€0,0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€plp000€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0,00,00,00,00,00,00,00,00,00,00,00,00,0000€€€€p€ÐÌЀp€ÐÌЀp€ÐÌЀp€ÐÌЀp€ÐÌЀp€ÐÌЀp€ÐÌÐ0,00,0@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@0,0000€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0,00,0@\@hœhhœhhœhhœhhœhhœhhœhhœhhœh0,0848€€€€p€ÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐ0,00,0@\@hœhhœhhœhpœphœhhœhhœhhœhhœh0,0848€€€€p€ÐÌÐ@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@0,00,0@\@hœhhœhhœhhœhhœhhœhhœhhœhhœh0,0848€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh0,00,0@\@hœhhœhhœhhœhhœhhœhhœhhœhhœh0,0888€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh0,00,0@\@hœhhœhhœhhœhhœhhœhhœhhœhhœh0,0848€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh0,00,0XtXXtXXtXXtXXtXXtXXtXXtXXtXXtX0,0848€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh0,00,00,00,00,00,00,00,00,00,00,00,00,0848€€€€p€ÐÌÐ@\@hœhhœhhœhhœhhœhhœhhœhhœhhœhhœhhœh@\@0,00,00,00,00,00,00,00,00,00,00,00,0888€€€€p€ÐÌÐXtXXtXXtXXtXXtXXtXXtXXtXXtXXtXXtXXtX@\@ÐÌЀp€€p€€p€€p€€p€€p€€p€€p€xpxHHHŒ€p€ÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌÐÐÌЀp€°\(€p€°¨°€p€°¨°€p€°¨°Œ`\` œ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ œ hhh0,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,0ÿÿÿÿÿÿàÿÿÀÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿ€àÀ€€€€€€€€€€€€€€€€€€€À(0`€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€€€€p€€p€€p€€p€€p€0/0   €p€€p€€p€°_/°_/°_/0/0€€€€p€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€p0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°p0/0€€€€p€€p€€p€€p€€p€€p€   p0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°p0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°p0/0€€€€p€€p€€p€€p€€p€€p€   p0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°p0/0€€€€p€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€p0/0€€€€p€€p€€p€€p€   €p€   €p€   p0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€0/0€€€€p€€p€€·€€·€€p€ßßß߀p€°`0°`0€p€€p€€p€ÐÏЀp€€p€p Ÿ  Ÿ €p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€ÐÏЀp€ÐÏЀp€p Ÿ  Ÿ €p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°°¨°°¨°°¨°€p€€p€°¨°°¨°€p€€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€ÐÏЀp€ÐÏЀp€p€€€€€€€p€ÐÏÐÐÏЀp€€·€€·€€p€°`0°`0€p€0/00/00/00/00/0€p€€p€0/00/0€p€€p€0/0€€€€p€€p€ÐßÐ߀p€ÐÏÐÐÏЀp€°`0°`0€p€€p€€p€ÐÏЀp€€p€p/(/€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/00/0€p€€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p/(/€€€€€€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p€€€€€€€p€€p€€p€€p€€p€€p€0/00/0€p€0/00/0€p€€p€€p€0/0€€€€p€€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°pop€€€€€€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€0/0€€€€p€€p€°_/°_/€p€°_/°_/€p€¿`0¿`0€p€¿`0¿`0€p€¿`0¿`0pop€€€€€€€p€€p€000€p€000000€p€000000€p€000000€p€000000€p€0/00/0€p€€p€€p€0/0€€€€p€€p€°_/°_/€p€°_/°_/€p€¿`0¿`0€p€¿`0¿`0€p€¿`0¿`0pop/(/€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/0€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€pop000€€€€€€€p€€p€°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°€p€°¨°€p€0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0000€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0000€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/00/00/0@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@0/0000€€€€€€€p€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏЀp€ÐÏÐÐÏÐ0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0000€€€€€€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐ0/00/00/0@_@oŸooŸooŸooŸooŸopŸpoŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@@_@0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?8?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?8?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/0@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/0_w__w__w__w__w__w__w__w__w__w__w__w__w__w__w_0/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/0°¨°0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0?7?€€€€€€€p€ÐÏÐÐÏÐ@_@oŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸooŸo@_@0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0?8?€€€€€€€p€ÐÏÐÐÏÐ_w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w_@_@ÐÏÐÐÏЀp€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€p?8?€€€€€€€p€ÐÏÐÐÏÐ_w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w__w_@_@ÐÏÐÐÏЀp€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€€p€pOHO€p€ÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏÐÐÏЀp€°_/°_/€p€°¨°°¨°€p€°¨°°¨°€p€°¨°°¨°`_` Ÿ  Ÿ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ Ÿ `_` Ÿ  Ÿ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ Ÿ ohooho0/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿàÿÿÿÿÿàÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿÿÿÿÀÿÿøÿÿøÿÿàÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿà?ÿÿtiemu-3.03-nogdb+dfsg/build/msvc/TiEmu3.dsp000066400000000000000000000033641220314353500204610ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="TiEmu3" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Generic Project" 0x010a CFG=TiEmu3 - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "TiEmu3.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "TiEmu3.mak" CFG="TiEmu3 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "TiEmu3 - Win32 Release" (based on "Win32 (x86) Generic Project") !MESSAGE "TiEmu3 - Win32 Debug" (based on "Win32 (x86) Generic Project") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" MTL=midl.exe !IF "$(CFG)" == "TiEmu3 - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" !ELSEIF "$(CFG)" == "TiEmu3 - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" !ENDIF # Begin Target # Name "TiEmu - Win32 Release" # Name "TiEmu - Win32 Debug" # End Target # End Project tiemu-3.03-nogdb+dfsg/build/msvc/TiEmu3.dsw000066400000000000000000000057541220314353500204750ustar00rootroot00000000000000Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "TiEmu3_Console"=.\TiEmu3_Console.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name uae End Project Dependency Begin Project Dependency Project_Dep_Name ticables2 End Project Dependency Begin Project Dependency Project_Dep_Name ticalcs2 End Project Dependency Begin Project Dependency Project_Dep_Name tifiles2 End Project Dependency Begin Project Dependency Project_Dep_Name ticonv End Project Dependency }}} ############################################################################### Project: "TiEmu3_Windows"=.\TiEmu3_Windows.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name uae End Project Dependency Begin Project Dependency Project_Dep_Name ticables2 End Project Dependency Begin Project Dependency Project_Dep_Name ticalcs2 End Project Dependency Begin Project Dependency Project_Dep_Name ticonv End Project Dependency Begin Project Dependency Project_Dep_Name tifiles2 End Project Dependency }}} ############################################################################### Project: "ticables2"=..\..\..\ticables2\build\msvc\ticables2.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "ticalcs2"=..\..\..\ticalcs2\build\msvc\ticalcs2.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name ticables2 End Project Dependency Begin Project Dependency Project_Dep_Name tifiles2 End Project Dependency Begin Project Dependency Project_Dep_Name ticonv End Project Dependency }}} ############################################################################### Project: "ticonv"=..\..\..\ticonv\build\msvc\ticonv.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "tifiles2"=..\..\..\tifiles2\build\msvc\tifiles2.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name ticonv End Project Dependency }}} ############################################################################### Project: "uae"=..\..\src\core\uae\uae.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### tiemu-3.03-nogdb+dfsg/build/msvc/TiEmu3_Console.dsp000077500000000000000000000437201220314353500221460ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="TiEmu3_Console" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=TiEmu3_Console - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "TiEmu3_Console.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "TiEmu3_Console.mak" CFG="TiEmu3_Console - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "TiEmu3_Console - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "TiEmu3_Console - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "TiEmu3_Console - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "" # PROP Intermediate_Dir "C:\lpg\msvc\Output\tiemu3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /w /W0 /GX /O2 /I "c:\lpg\\tiemu3\src\com_ole" /I "c:\lpg\\tiemu3\src\ipc\com" /I "c:\lpg\\tiemu3\src\misc" /I "c:\lpg\\tiemu3\src\gui\calc" /I "c:\lpg\\tiemu3\src\core\dbg" /I "c:\lpg\\tiemu3\src\core\ti_sw" /I "c:\lpg\\tiemu3\src\gui\debugger" /I "." /I "../../../ticables2/src" /I "../../../tifiles2/src" /I "../../../ticalcs2/src" /I "../../../ticonv/src" /I "../../src/win32" /I "C:\LPG\GTK\INCLUDE\GTK-2.0" /I "C:\LPG\GTK\LIB\GTK-2.0\INCLUDE" /I "C:\LPG\GTK\INCLUDE\GLIB-2.0" /I "C:\LPG\GTK\LIB\GLIB-2.0\INCLUDE" /I "C:\LPG\GTK\INCLUDE\PANGO-1.0" /I "C:\LPG\GTK\INCLUDE\ATK-1.0" /I "C:\LPG\GTK\include" /I "C:\LPG\GTK\include\libglade-2.0" /I "c:\lpg\\tiemu3\src\core\uae" /I "c:\lpg\\tiemu3\src\core" /I "c:\lpg\\tiemu3\src\core\ti_hw" /I "c:\lpg\\tiemu3\src\hid" /I "c:\lpg\\tiemu3\src\gui" /I "c:\lpg\\tiemu3\src\sound" /I ".\libjpeg" /I "c:\lpg\sdl\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__WIN32__" /D "DEBUGGER" /D "GTK_DISABLE_DEPRECATED" /D "NO_GDB" /D "ENABLE_NLS" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x40c /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 /out:"tiemu.exe" !ELSEIF "$(CFG)" == "TiEmu3_Console - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "C:\lpg\msvc" # PROP Intermediate_Dir "C:\lpg\msvc\output\tiemu3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MD /W3 /GX /ZI /Od /I "C:\LPG\GTK\include\cairo" /I "c:\lpg\\tiemu3\src\com_ole" /I "c:\lpg\\tiemu3\src\ipc\com" /I "c:\lpg\\tiemu3\src\misc" /I "c:\lpg\\tiemu3\src\gui\calc" /I "c:\lpg\\tiemu3\src\core\dbg" /I "c:\lpg\\tiemu3\src\core\ti_sw" /I "c:\lpg\\tiemu3\src\gui\debugger" /I "." /I "../../../ticables2/src" /I "../../../tifiles2/src" /I "../../../ticalcs2/src" /I "../../../ticonv/src" /I "../../src/win32" /I "C:\LPG\GTK\INCLUDE\GTK-2.0" /I "C:\LPG\GTK\LIB\GTK-2.0\INCLUDE" /I "C:\LPG\GTK\INCLUDE\GLIB-2.0" /I "C:\LPG\GTK\LIB\GLIB-2.0\INCLUDE" /I "C:\LPG\GTK\INCLUDE\PANGO-1.0" /I "C:\LPG\GTK\INCLUDE\ATK-1.0" /I "C:\LPG\GTK\include" /I "C:\LPG\GTK\include\libglade-2.0" /I "c:\lpg\\tiemu3\src\core\uae" /I "c:\lpg\\tiemu3\src\core" /I "c:\lpg\\tiemu3\src\core\ti_hw" /I "c:\lpg\\tiemu3\src\hid" /I "c:\lpg\\tiemu3\src\gui" /I "c:\lpg\\tiemu3\src\sound" /I ".\libjpeg" /I "c:\lpg\sdl\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__WIN32__" /D "DEBUGGER" /D "GTK_DISABLE_DEPRECATED" /D "NO_GDB" /D "ENABLE_NLS" /FD /GZ /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x40c /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /out:"c:\lpg\msvc\tiemu.exe" /pdbtype:sept !ENDIF # Begin Target # Name "TiEmu3_Console - Win32 Release" # Name "TiEmu3_Console - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Group "core" # PROP Default_Filter "" # Begin Group "uae" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\core\uae\newcpu.c !IF "$(CFG)" == "TiEmu3_Console - Win32 Release" !ELSEIF "$(CFG)" == "TiEmu3_Console - Win32 Debug" # ADD CPP /w /W0 !ENDIF # End Source File # Begin Source File SOURCE=..\..\src\core\uae\table68k # End Source File # End Group # Begin Group "ti_hw" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\core\ti_hw\dbus.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\flash.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\gscales.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\hw.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\hwprot.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\kbd.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\m68k.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem89.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem89tm.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem92.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem92p.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\memv2.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\ports.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\rtc_hw3.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\tichars.c # End Source File # End Group # Begin Group "dbg" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\core\dbg\bkpts.c # End Source File # Begin Source File SOURCE=..\..\src\core\dbg\debug.c # End Source File # Begin Source File SOURCE=..\..\src\core\dbg\disasm.c # End Source File # Begin Source File SOURCE=..\..\src\core\dbg\fpudasm.c # End Source File # End Group # Begin Group "ti_sw" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\core\ti_sw\er_codes.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\handles.c # End Source File # Begin Source File SOURCE=..\..\src\core\hwpm.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\iodefs.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\mem_map.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\registers.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\romcalls.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\timem.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\vat.c # End Source File # Begin Source File SOURCE=..\..\src\core\uae\libuae.lib # End Source File # End Group # Begin Source File SOURCE=..\..\src\core\engine.c # End Source File # Begin Source File SOURCE=..\..\src\core\error.c # End Source File # Begin Source File SOURCE=..\..\src\core\images.c # End Source File # Begin Source File SOURCE=..\..\src\core\interface.c # End Source File # Begin Source File SOURCE=..\..\src\core\state.c # End Source File # Begin Source File SOURCE=..\..\src\core\type2str.c # End Source File # End Group # Begin Group "gui" # PROP Default_Filter "" # Begin Group "debug" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_all.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_bits.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_bkpts.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_cause.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_code.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_data.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_dock.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_entry.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_heap.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_iop.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_mem.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_pclog.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_regs.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_romcall.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_stack.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_vectors.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_wnds.c # End Source File # End Group # Begin Group "calc" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\gui\calc\calc.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\dnd.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\keyboard.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\keymap.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\keynames.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\keypress.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\popup.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\screen.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\skinkeys.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\skinops.c # End Source File # End Group # Begin Group "dlgbox" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\gui\about.c # End Source File # Begin Source File SOURCE=..\..\src\gui\dboxes.c # End Source File # Begin Source File SOURCE=..\..\src\gui\device.c # End Source File # Begin Source File SOURCE=..\..\src\gui\filesel.c # End Source File # Begin Source File SOURCE=..\..\src\gui\fs_misc.c # End Source File # Begin Source File SOURCE=..\..\src\gui\infos.c # End Source File # Begin Source File SOURCE=..\..\src\gui\manpage.c # End Source File # Begin Source File SOURCE=..\..\src\gui\pbars.c # End Source File # Begin Source File SOURCE=..\..\src\gui\quicksend.c # End Source File # Begin Source File SOURCE=..\..\src\gui\refresh.c # End Source File # Begin Source File SOURCE=..\..\src\gui\release.c # End Source File # Begin Source File SOURCE=..\..\src\gui\romversion.c # End Source File # Begin Source File SOURCE=..\..\src\gui\scroptions.c # End Source File # Begin Source File SOURCE=..\..\src\gui\splash.c # End Source File # Begin Source File SOURCE=..\..\src\gui\support.c # End Source File # Begin Source File SOURCE=..\..\src\gui\wizard.c # End Source File # End Group # Begin Group "logger" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\gui\logger\log_link.c # End Source File # End Group # End Group # Begin Group "misc" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\misc\cmdline.c # End Source File # Begin Source File SOURCE=..\..\src\misc\files.c # End Source File # Begin Source File SOURCE=..\..\src\gdb\libiberty\gettimeofday.c # End Source File # Begin Source File SOURCE=..\..\src\misc\logging.c # End Source File # Begin Source File SOURCE=..\..\src\misc\paths.c # End Source File # Begin Source File SOURCE=..\..\src\misc\rcfile.c # End Source File # Begin Source File SOURCE=..\..\src\misc\screenshot.c # End Source File # Begin Source File SOURCE=..\..\src\misc\tie_error.c # End Source File # End Group # Begin Group "ipc" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\ipc\com\oleaut.cpp # End Source File # Begin Source File SOURCE=..\..\src\ipc\com\oleaut_i.c # End Source File # Begin Source File SOURCE=..\..\src\ipc\com\registry.cpp # End Source File # End Group # Begin Group "sound" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\sound\audio.c # End Source File # Begin Source File SOURCE=..\..\src\sound\stream.c # End Source File # End Group # Begin Source File SOURCE=..\..\src\gui\main.c # End Source File # Begin Source File SOURCE=..\..\src\gui\tsource.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\..\src\core\uae\newcpu.h # End Source File # Begin Source File SOURCE=..\..\src\misc\version.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=.\icon2.ico # End Source File # Begin Source File SOURCE=.\icon3.ico # End Source File # Begin Source File SOURCE=..\mingw\tiemu.ico # End Source File # Begin Source File SOURCE=.\tiemu.ico # End Source File # Begin Source File SOURCE=..\mingw\tiemu.rc # End Source File # Begin Source File SOURCE=.\TiEmu3.ico # End Source File # End Group # Begin Group "Library Files" # PROP Default_Filter "" # Begin Source File SOURCE="C:\LPG\GTK\lib\glib-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gdk-win32-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gtk-win32-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gobject-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gdk_pixbuf-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gthread-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gmodule-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\pango-1.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\atk-1.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\glade-2.0.lib" # End Source File # Begin Source File SOURCE=C:\LPG\GTK\lib\intl.lib # End Source File # Begin Source File SOURCE=C:\LPG\GTK\lib\z.lib # End Source File # Begin Source File SOURCE="c:\lpg\sdl\lib\SDLmain.lib" # End Source File # Begin Source File SOURCE="c:\lpg\sdl\lib\SDL.lib" # End Source File # End Group # Begin Group "Documentation" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\BUGS # End Source File # Begin Source File SOURCE=..\..\ChangeLog # End Source File # Begin Source File SOURCE=..\..\po\fr.po # End Source File # Begin Source File SOURCE=..\..\RELEASE # End Source File # Begin Source File SOURCE=..\..\TODO # End Source File # End Group # Begin Group "Misc Files" # PROP Default_Filter "" # Begin Group "IO defs" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\misc\iodefs_ti89_hw1.txt # End Source File # Begin Source File SOURCE=..\..\misc\iodefs_ti89_hw2.txt # End Source File # Begin Source File SOURCE=..\..\misc\iodefs_ti89t_hw3.txt # End Source File # Begin Source File SOURCE=..\..\misc\iodefs_ti89t_hw4.txt # End Source File # Begin Source File SOURCE=..\..\misc\iodefs_ti92_hw1.txt # End Source File # Begin Source File SOURCE=..\..\misc\iodefs_ti92p_hw1.txt # End Source File # Begin Source File SOURCE=..\..\misc\iodefs_ti92p_hw2.txt # End Source File # Begin Source File SOURCE=..\..\misc\iodefs_v200_hw2.txt # End Source File # End Group # Begin Group "ROM calls" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\misc\romcalls.lst # End Source File # Begin Source File SOURCE=..\..\misc\romcalls.txt # End Source File # End Group # Begin Group "MEM maps" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\misc\memmap_ti89_hw1.txt # End Source File # Begin Source File SOURCE=..\..\misc\memmap_ti89_hw2.txt # End Source File # Begin Source File SOURCE=..\..\misc\memmap_ti89t_hw3.txt # End Source File # Begin Source File SOURCE=..\..\misc\memmap_ti89t_hw4.txt # End Source File # Begin Source File SOURCE=..\..\misc\memmap_ti92_hw1.txt # End Source File # Begin Source File SOURCE=..\..\misc\memmap_ti92p_hw1.txt # End Source File # Begin Source File SOURCE=..\..\misc\memmap_ti92p_hw2.txt # End Source File # Begin Source File SOURCE=..\..\misc\memmap_v200_hw2.txt # End Source File # End Group # End Group # End Target # End Project tiemu-3.03-nogdb+dfsg/build/msvc/TiEmu3_Console.dsw000077500000000000000000000010471220314353500221510ustar00rootroot00000000000000Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "TiEmu3_Console"=.\TiEmu3_Console.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### tiemu-3.03-nogdb+dfsg/build/msvc/TiEmu3_Windows.dsp000077500000000000000000000374101220314353500221750ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="TiEmu3_Windows" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=TiEmu3_Windows - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "TiEmu3_Windows.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "TiEmu3_Windows.mak" CFG="TiEmu3_Windows - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "TiEmu3_Windows - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "TiEmu3_Windows - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "TiEmu3_Windows - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "" # PROP Intermediate_Dir "C:\lpg\msvc\Output\tiemu3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /w /W0 /GX /O2 /I "c:\lpg\\tiemu3\src\com_ole" /I "c:\lpg\\tiemu3\src\ipc\com" /I "c:\lpg\\tiemu3\src\misc" /I "c:\lpg\\tiemu3\src\gui\calc" /I "c:\lpg\\tiemu3\src\core\dbg" /I "c:\lpg\\tiemu3\src\core\ti_sw" /I "c:\lpg\\tiemu3\src\gui\debugger" /I "." /I "../../../ticables2/src" /I "../../../tifiles2/src" /I "../../../ticalcs2/src" /I "../../../ticonv/src" /I "../../src/win32" /I "C:\LPG\GTK\INCLUDE\GTK-2.0" /I "C:\LPG\GTK\LIB\GTK-2.0\INCLUDE" /I "C:\LPG\GTK\INCLUDE\GLIB-2.0" /I "C:\LPG\GTK\LIB\GLIB-2.0\INCLUDE" /I "C:\LPG\GTK\INCLUDE\PANGO-1.0" /I "C:\LPG\GTK\INCLUDE\ATK-1.0" /I "C:\LPG\GTK\include" /I "C:\LPG\GTK\include\libglade-2.0" /I "c:\lpg\\tiemu3\src\core\uae" /I "c:\lpg\\tiemu3\src\core" /I "c:\lpg\\tiemu3\src\core\ti_hw" /I "c:\lpg\\tiemu3\src\hid" /I "c:\lpg\\tiemu3\src\gui" /I ".\libjpeg" /I "c:\lpg\\tiemu3\src\sound" /I "c:\lpg\sdl\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "__WIN32__" /D "DEBUGGER" /D "GTK_DISABLE_DEPRECATED" /D "NO_GDB" /D "ENABLE_NLS" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x40c /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386 /out:"tiemu.exe" !ELSEIF "$(CFG)" == "TiEmu3_Windows - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "C:\lpg\msvc" # PROP Intermediate_Dir "C:\lpg\msvc\Output\tiemu3" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MD /w /W0 /GX /ZI /Od /I "C:\LPG\GTK\include\cairo" /I "c:\lpg\\tiemu3\src\com_ole" /I "c:\lpg\\tiemu3\src\ipc\com" /I "c:\lpg\\tiemu3\src\misc" /I "c:\lpg\\tiemu3\src\gui\calc" /I "c:\lpg\\tiemu3\src\core\dbg" /I "c:\lpg\\tiemu3\src\core\ti_sw" /I "c:\lpg\\tiemu3\src\gui\debugger" /I "." /I "../../../ticables2/src" /I "../../../tifiles2/src" /I "../../../ticalcs2/src" /I "../../../ticonv/src" /I "../../src/win32" /I "C:\LPG\GTK\INCLUDE\GTK-2.0" /I "C:\LPG\GTK\LIB\GTK-2.0\INCLUDE" /I "C:\LPG\GTK\INCLUDE\GLIB-2.0" /I "C:\LPG\GTK\LIB\GLIB-2.0\INCLUDE" /I "C:\LPG\GTK\INCLUDE\PANGO-1.0" /I "C:\LPG\GTK\INCLUDE\ATK-1.0" /I "C:\LPG\GTK\include" /I "C:\LPG\GTK\include\libglade-2.0" /I "c:\lpg\\tiemu3\src\core\uae" /I "c:\lpg\\tiemu3\src\core" /I "c:\lpg\\tiemu3\src\core\ti_hw" /I "c:\lpg\\tiemu3\src\hid" /I "c:\lpg\\tiemu3\src\gui" /I ".\libjpeg" /I "c:\lpg\\tiemu3\src\sound" /I "c:\lpg\sdl\include" /D "_DEBUG" /D "ENABLE_NLS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "__WIN32__" /D "DEBUGGER" /D "GTK_DISABLE_DEPRECATED" /D "NO_GDB" /FD /GZ /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x40c /d "_DEBUG" # ADD RSC /l 0x40c /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /out:"c:\lpg\msvc\tiemu.exe" /pdbtype:sept !ENDIF # Begin Target # Name "TiEmu3_Windows - Win32 Release" # Name "TiEmu3_Windows - Win32 Debug" # Begin Group "Documentation" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\BUGS # End Source File # Begin Source File SOURCE=..\..\ChangeLog # End Source File # Begin Source File SOURCE=..\..\RELEASE # End Source File # Begin Source File SOURCE=..\..\TODO # End Source File # End Group # Begin Group "Library Files" # PROP Default_Filter "" # Begin Source File SOURCE="C:\LPG\GTK\lib\glib-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gdk-win32-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gtk-win32-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gobject-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gdk_pixbuf-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gthread-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\gmodule-2.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\pango-1.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\atk-1.0.lib" # End Source File # Begin Source File SOURCE="C:\LPG\GTK\lib\glade-2.0.lib" # End Source File # Begin Source File SOURCE=C:\LPG\GTK\lib\intl.lib # End Source File # Begin Source File SOURCE=C:\LPG\GTK\lib\z.lib # End Source File # Begin Source File SOURCE="c:\lpg\sdl\lib\SDL.lib" # End Source File # Begin Source File SOURCE="c:\lpg\sdl\lib\SDLmain.lib" # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "" # Begin Source File SOURCE=.\tiemu.ico # End Source File # Begin Source File SOURCE=..\mingw\tiemu.rc # End Source File # Begin Source File SOURCE=.\TiEmu3.ico # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\core\uae\newcpu.h # End Source File # Begin Source File SOURCE=..\..\src\misc\version.h # End Source File # End Group # Begin Group "Source Files" # PROP Default_Filter "" # Begin Group "core" # PROP Default_Filter "" # Begin Group "uae" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\core\uae\newcpu.c # End Source File # Begin Source File SOURCE=..\..\src\core\uae\table68k # End Source File # End Group # Begin Group "ti_hw" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\core\ti_hw\dbus.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\flash.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\gscales.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\hw.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\hwprot.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\kbd.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\m68k.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem89.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem89tm.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem92.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\mem92p.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\memv2.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\ports.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\rtc_hw3.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_hw\tichars.c # End Source File # End Group # Begin Group "dbg" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\core\dbg\bkpts.c # End Source File # Begin Source File SOURCE=..\..\src\core\dbg\debug.c # End Source File # Begin Source File SOURCE=..\..\src\core\dbg\disasm.c # End Source File # Begin Source File SOURCE=..\..\src\core\dbg\fpudasm.c # End Source File # End Group # Begin Group "ti_sw" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\core\ti_sw\er_codes.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\handles.c # End Source File # Begin Source File SOURCE=..\..\src\core\hwpm.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\iodefs.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\mem_map.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\registers.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\romcalls.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\timem.c # End Source File # Begin Source File SOURCE=..\..\src\core\ti_sw\vat.c # End Source File # Begin Source File SOURCE=..\..\src\core\uae\libuae.lib # End Source File # End Group # Begin Source File SOURCE=..\..\src\core\engine.c # End Source File # Begin Source File SOURCE=..\..\src\core\error.c # End Source File # Begin Source File SOURCE=..\..\src\core\images.c # End Source File # Begin Source File SOURCE=..\..\src\core\interface.c # End Source File # Begin Source File SOURCE=..\..\src\core\state.c # End Source File # Begin Source File SOURCE=..\..\src\core\type2str.c # End Source File # End Group # Begin Group "gui" # PROP Default_Filter "" # Begin Group "debug" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_all.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_bits.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_bkpts.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_cause.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_code.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_data.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_dock.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_entry.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_heap.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_iop.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_mem.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_pclog.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_regs.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_romcall.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_stack.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_vectors.c # End Source File # Begin Source File SOURCE=..\..\src\gui\debugger\dbg_wnds.c # End Source File # End Group # Begin Group "calc" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\gui\calc\calc.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\dnd.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\keyboard.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\keymap.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\keynames.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\keypress.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\popup.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\screen.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\skinkeys.c # End Source File # Begin Source File SOURCE=..\..\src\gui\calc\skinops.c # End Source File # End Group # Begin Group "dlgbox" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\gui\about.c # End Source File # Begin Source File SOURCE=..\..\src\gui\dboxes.c # End Source File # Begin Source File SOURCE=..\..\src\gui\device.c # End Source File # Begin Source File SOURCE=..\..\src\gui\filesel.c # End Source File # Begin Source File SOURCE=..\..\src\gui\fs_misc.c # End Source File # Begin Source File SOURCE=..\..\src\gui\infos.c # End Source File # Begin Source File SOURCE=..\..\src\gui\manpage.c # End Source File # Begin Source File SOURCE=..\..\src\gui\pbars.c # End Source File # Begin Source File SOURCE=..\..\src\gui\quicksend.c # End Source File # Begin Source File SOURCE=..\..\src\gui\refresh.c # End Source File # Begin Source File SOURCE=..\..\src\gui\release.c # End Source File # Begin Source File SOURCE=..\..\src\gui\romversion.c # End Source File # Begin Source File SOURCE=..\..\src\gui\scroptions.c # End Source File # Begin Source File SOURCE=..\..\src\gui\splash.c # End Source File # Begin Source File SOURCE=..\..\src\gui\support.c # End Source File # Begin Source File SOURCE=..\..\src\gui\wizard.c # End Source File # End Group # Begin Group "logger" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\gui\logger\log_link.c # End Source File # End Group # End Group # Begin Group "misc" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\misc\cmdline.c # End Source File # Begin Source File SOURCE=..\..\src\misc\files.c # End Source File # Begin Source File SOURCE=..\..\src\gdb\libiberty\gettimeofday.c # End Source File # Begin Source File SOURCE=..\..\src\misc\logging.c # End Source File # Begin Source File SOURCE=..\..\src\misc\paths.c # End Source File # Begin Source File SOURCE=..\..\src\misc\rcfile.c # End Source File # Begin Source File SOURCE=..\..\src\misc\screenshot.c # End Source File # Begin Source File SOURCE=..\..\src\misc\tie_error.c # End Source File # End Group # Begin Group "ipc" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\ipc\com\oleaut.cpp # End Source File # Begin Source File SOURCE=..\..\src\ipc\com\oleaut_i.c # End Source File # Begin Source File SOURCE=..\..\src\ipc\com\registry.cpp # End Source File # End Group # Begin Group "sound" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\src\sound\audio.c # End Source File # Begin Source File SOURCE=..\..\src\sound\stream.c # End Source File # End Group # Begin Source File SOURCE=..\..\src\gui\main.c # End Source File # Begin Source File SOURCE=..\..\src\gui\tsource.c # End Source File # End Group # End Target # End Project tiemu-3.03-nogdb+dfsg/build/msvc/TiEmu3_Windows.dsw000066400000000000000000000010471220314353500221760ustar00rootroot00000000000000Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "TiEmu3_Windows"=.\TiEmu3_Windows.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### tiemu-3.03-nogdb+dfsg/build/msvc/dirent.h000066400000000000000000000053761220314353500203060ustar00rootroot00000000000000/* TiLP - link program for TI calculators * Copyright (C) 1999-2001 Romain Lievin * * 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. */ #ifdef __WIN32__ #ifndef DIRENT_H #define DIRENT_H #include //#define S_IFMT 0170000 // bitmask for the file type bitfields #define __S_IFMT 0170000 // bitmask for the file type bitfields #define S_IFSOCK 0140000 // socket #define S_IFLNK 0120000 // symbolic link //#define S_IFREG 0100000 // regular file #define __S_IFREG 0100000 // regular file #define S_IFBLK 0060000 // block device //#define S_IFDIR 0040000 // directory #define __S_IFDIR 0040000 // directory //#define S_IFCHR 0020000 // character device #define S_IFIFO 0010000 // fifo #define S_ISUID 0004000 // set UID bit #define S_ISGID 0002000 // set GID bit (see below) #define S_ISVTX 0001000 // sticky bit (see below) #define S_IRWXU 00700 // mask for file owner permissions #define S_IRUSR 00400 // owner has read permission #define S_IWUSR 00200 // owner has write permission #define S_IXUSR 00100 // owner has execute permission #define S_IRWXG 00070 // mask for group permissions #define S_IRGRP 00040 // group has read permission #define S_IWGRP 00020 // group has write permission #define S_IXGRP 00010 // group has execute permission #define S_IRWXO 00007 // mask for permissions for others (not in group) #define S_IROTH 00004 // others have read permission #define S_IWOTH 00002 // others have write permisson #define S_IXOTH 00001 // others have execute permisson /* Test macros for file types. */ #define __S_ISTYPE(mode, mask) (((mode) & __S_IFMT) == (mask)) #define S_ISDIR(mode) __S_ISTYPE((mode), __S_IFDIR) #define S_ISCHR(mode) __S_ISTYPE((mode), __S_IFCHR) #define S_ISBLK(mode) __S_ISTYPE((mode), __S_IFBLK) #define S_ISREG(mode) __S_ISTYPE((mode), __S_IFREG) #ifdef __S_IFIFO # define S_ISFIFO(mode) __S_ISTYPE((mode), __S_IFIFO) #endif #endif #endif tiemu-3.03-nogdb+dfsg/build/msvc/inttypes.h000066400000000000000000000175041220314353500206740ustar00rootroot00000000000000// ISO C9x compliant inttypes.h for Microsoft Visual Studio // Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 // // Copyright (c) 2006 Alexander Chemeris // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // 3. The name of the author may be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // /////////////////////////////////////////////////////////////////////////////// #ifndef _MSC_VER // [ #error "Use this header only with Microsoft Visual C++ compilers!" #endif // _MSC_VER ] #ifndef _MSC_INTTYPES_H_ // [ #define _MSC_INTTYPES_H_ #if _MSC_VER > 1000 #pragma once #endif #include // 7.8 Format conversion of integer types typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t; // 7.8.1 Macros for format specifiers #if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 // The fprintf macros for signed integers are: #define PRId8 "d" #define PRIi8 "i" #define PRIdLEAST8 "d" #define PRIiLEAST8 "i" #define PRIdFAST8 "d" #define PRIiFAST8 "i" #define PRId16 "hd" #define PRIi16 "hi" #define PRIdLEAST16 "hd" #define PRIiLEAST16 "hi" #define PRIdFAST16 "hd" #define PRIiFAST16 "hi" #define PRId32 "I32d" #define PRIi32 "I32i" #define PRIdLEAST32 "I32d" #define PRIiLEAST32 "I32i" #define PRIdFAST32 "I32d" #define PRIiFAST32 "I32i" #define PRId64 "I64d" #define PRIi64 "I64i" #define PRIdLEAST64 "I64d" #define PRIiLEAST64 "I64i" #define PRIdFAST64 "I64d" #define PRIiFAST64 "I64i" #define PRIdMAX "I64d" #define PRIiMAX "I64i" #define PRIdPTR "Id" #define PRIiPTR "Ii" // The fprintf macros for unsigned integers are: #define PRIo8 "o" #define PRIu8 "u" #define PRIx8 "x" #define PRIX8 "X" #define PRIoLEAST8 "o" #define PRIuLEAST8 "u" #define PRIxLEAST8 "x" #define PRIXLEAST8 "X" #define PRIoFAST8 "o" #define PRIuFAST8 "u" #define PRIxFAST8 "x" #define PRIXFAST8 "X" #define PRIo16 "ho" #define PRIu16 "hu" #define PRIx16 "hx" #define PRIX16 "hX" #define PRIoLEAST16 "ho" #define PRIuLEAST16 "hu" #define PRIxLEAST16 "hx" #define PRIXLEAST16 "hX" #define PRIoFAST16 "ho" #define PRIuFAST16 "hu" #define PRIxFAST16 "hx" #define PRIXFAST16 "hX" #define PRIo32 "I32o" #define PRIu32 "I32u" #define PRIx32 "I32x" #define PRIX32 "I32X" #define PRIoLEAST32 "I32o" #define PRIuLEAST32 "I32u" #define PRIxLEAST32 "I32x" #define PRIXLEAST32 "I32X" #define PRIoFAST32 "I32o" #define PRIuFAST32 "I32u" #define PRIxFAST32 "I32x" #define PRIXFAST32 "I32X" #define PRIo64 "I64o" #define PRIu64 "I64u" #define PRIx64 "I64x" #define PRIX64 "I64X" #define PRIoLEAST64 "I64o" #define PRIuLEAST64 "I64u" #define PRIxLEAST64 "I64x" #define PRIXLEAST64 "I64X" #define PRIoFAST64 "I64o" #define PRIuFAST64 "I64u" #define PRIxFAST64 "I64x" #define PRIXFAST64 "I64X" #define PRIoMAX "I64o" #define PRIuMAX "I64u" #define PRIxMAX "I64x" #define PRIXMAX "I64X" #define PRIoPTR "Io" #define PRIuPTR "Iu" #define PRIxPTR "Ix" #define PRIXPTR "IX" // The fscanf macros for signed integers are: #define SCNd8 "d" #define SCNi8 "i" #define SCNdLEAST8 "d" #define SCNiLEAST8 "i" #define SCNdFAST8 "d" #define SCNiFAST8 "i" #define SCNd16 "hd" #define SCNi16 "hi" #define SCNdLEAST16 "hd" #define SCNiLEAST16 "hi" #define SCNdFAST16 "hd" #define SCNiFAST16 "hi" #define SCNd32 "ld" #define SCNi32 "li" #define SCNdLEAST32 "ld" #define SCNiLEAST32 "li" #define SCNdFAST32 "ld" #define SCNiFAST32 "li" #define SCNd64 "I64d" #define SCNi64 "I64i" #define SCNdLEAST64 "I64d" #define SCNiLEAST64 "I64i" #define SCNdFAST64 "I64d" #define SCNiFAST64 "I64i" #define SCNdMAX "I64d" #define SCNiMAX "I64i" #ifdef _WIN64 // [ # define SCNdPTR "I64d" # define SCNiPTR "I64i" #else // _WIN64 ][ # define SCNdPTR "ld" # define SCNiPTR "li" #endif // _WIN64 ] // The fscanf macros for unsigned integers are: #define SCNo8 "o" #define SCNu8 "u" #define SCNx8 "x" #define SCNX8 "X" #define SCNoLEAST8 "o" #define SCNuLEAST8 "u" #define SCNxLEAST8 "x" #define SCNXLEAST8 "X" #define SCNoFAST8 "o" #define SCNuFAST8 "u" #define SCNxFAST8 "x" #define SCNXFAST8 "X" #define SCNo16 "ho" #define SCNu16 "hu" #define SCNx16 "hx" #define SCNX16 "hX" #define SCNoLEAST16 "ho" #define SCNuLEAST16 "hu" #define SCNxLEAST16 "hx" #define SCNXLEAST16 "hX" #define SCNoFAST16 "ho" #define SCNuFAST16 "hu" #define SCNxFAST16 "hx" #define SCNXFAST16 "hX" #define SCNo32 "lo" #define SCNu32 "lu" #define SCNx32 "lx" #define SCNX32 "lX" #define SCNoLEAST32 "lo" #define SCNuLEAST32 "lu" #define SCNxLEAST32 "lx" #define SCNXLEAST32 "lX" #define SCNoFAST32 "lo" #define SCNuFAST32 "lu" #define SCNxFAST32 "lx" #define SCNXFAST32 "lX" #define SCNo64 "I64o" #define SCNu64 "I64u" #define SCNx64 "I64x" #define SCNX64 "I64X" #define SCNoLEAST64 "I64o" #define SCNuLEAST64 "I64u" #define SCNxLEAST64 "I64x" #define SCNXLEAST64 "I64X" #define SCNoFAST64 "I64o" #define SCNuFAST64 "I64u" #define SCNxFAST64 "I64x" #define SCNXFAST64 "I64X" #define SCNoMAX "I64o" #define SCNuMAX "I64u" #define SCNxMAX "I64x" #define SCNXMAX "I64X" #ifdef _WIN64 // [ # define SCNoPTR "I64o" # define SCNuPTR "I64u" # define SCNxPTR "I64x" # define SCNXPTR "I64X" #else // _WIN64 ][ # define SCNoPTR "lo" # define SCNuPTR "lu" # define SCNxPTR "lx" # define SCNXPTR "lX" #endif // _WIN64 ] #endif // __STDC_FORMAT_MACROS ] // 7.8.2 Functions for greatest-width integer types // 7.8.2.1 The imaxabs function #define imaxabs _abs64 // 7.8.2.2 The imaxdiv function // This is modified version of div() function from Microsoft's div.c found // in %MSVC.NET%\crt\src\div.c #ifdef STATIC_IMAXDIV // [ static #else // STATIC_IMAXDIV ][ _inline #endif // STATIC_IMAXDIV ] imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) { imaxdiv_t result; result.quot = numer / denom; result.rem = numer % denom; if (numer < 0 && result.rem > 0) { // did division wrong; must fix up ++result.quot; result.rem -= denom; } return result; } // 7.8.2.3 The strtoimax and strtoumax functions #define strtoimax _strtoi64 #define strtoumax _strtoui64 // 7.8.2.4 The wcstoimax and wcstoumax functions #define wcstoimax _wcstoi64 #define wcstoumax _wcstoui64 #endif // _MSC_INTTYPES_H_ ] tiemu-3.03-nogdb+dfsg/build/msvc/net.bat000077500000000000000000000001201220314353500201070ustar00rootroot00000000000000del *.ncb del *.ilk del *.dep del *.opt deltree /y output deltree /y test tiemu-3.03-nogdb+dfsg/build/msvc/small.ico000077500000000000000000000004761220314353500204530ustar00rootroot00000000000000(( À€€€€€€€€€€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððÿÿÿÿðððÿÿÿÿÿÿðððððððððððððððððÿÿÿÿÿÿðtiemu-3.03-nogdb+dfsg/build/msvc/stdint.h000066400000000000000000000034361220314353500203210ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: stdints.h 368 2004-03-22 18:42:08Z roms $ */ /* libtifiles - Ti File Format library, a part of the TiLP project * Copyright (C) 1999-2004 Romain Lievin * * 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. */ /* Encapsulate the ISO-C99 'stdint.h' header for platforms which haven't it */ #ifndef __TIEMU_STDINT__ #define __TIEMU_STDINT__ #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_STDINT_H # include #else # if defined(__WIN32__) # include #ifdef _MSC_VER #pragma warning( push ) #pragma warning( disable : 4142 ) #endif typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; typedef __int8 int8_t; typedef __int16 int16_t; typedef __int32 int32_t; typedef __int64 int64_t; typedef int64_t intmax_t; #ifdef _MSC_VER #pragma warning( pop ) #endif # elif defined(__BSD__) # include # else # include # endif /* __WIN32__, __BSD__ */ #endif /* HAVE_STDINT_H */ #endif /* __TIFILES_STDINT__ */ tiemu-3.03-nogdb+dfsg/build/msvc/unistd.h000066400000000000000000000020611220314353500203130ustar00rootroot00000000000000/* TiLP - link program for TI calculators * Copyright (C) 1999-2001 Romain Lievin * * 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. */ #ifdef __WIN32__ #ifndef UNISTD_H #define UNISTD_H #include //for mkdir, chdir, getcwd #include //for access #define F_OK 0 #define mkdir(dir,mode) _mkdir(dir) void usleep(int ms); #endif #endif tiemu-3.03-nogdb+dfsg/build/nsis/000077500000000000000000000000001220314353500166415ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/build/nsis/Readme.txt000066400000000000000000000102351220314353500206000ustar00rootroot00000000000000TiEmu 3 (version 3.02) * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2008, Romain Liévin, Kevin Kofler * Copyright (c) 2007, Peter Fernandes Licensed under the GNU General Public License version 2 or later. 1. Installed components The following components have been successfully installed: * TiEmu 3 (with TIGCC debugging support) * libticables2 * libticonv * libtifiles2 * libticalcs2 * libusb (DLL only, see section 2.2) * GTK+ (if not already present) * Tcl * Tk * [Incr Tcl] * [Incr Tk] * [Incr widgets] * readline (linked statically into TiEmu) * libgui (linked statically into TiEmu) * GDB (linked statically into TiEmu) * Insight (linked statically into TiEmu) * SDL (linked statically into TiEmu) Uninstalling TiEmu removes all these components except GTK+, which can be uninstalled separately. 2. Real link cable support If you want to link TiEmu to a real calculator through a link cable, you may need to install additional drivers which are not installed with TiEmu: 2.1. DhaHelper/RWPorts In order to use TI's BlackLink serial cables or home-made serial or parallel cables on any NT-based version of Windows (Windows NT 4, Windows 2000, Windows XP, Windows 2003 or any newer version of Windows), you'll need to install the DhaHelper (32-bit) or RWPorts (64-bit) driver. These drivers are currently not installed by this package of TiEmu. DhaHelper can be installed by installing TiLP 2 for Windows, version 1.07a or newer. 2.2. Libusb (SilverLink) In order to use TI's SilverLink USB cables (formerly known as TI-GraphLink USB), you'll need to install the libusb driver for Windows at: http://sourceforge.net/projects/libusb-win32 You also need the silverlk.inf file included with libticables2. The easiest way to install this driver with the correct .inf files is to install TiLP 2 for Windows, version 1.07 or newer. This package currently only installs the DLL, NOT the driver. IMPORTANT: This driver is NOT compatible with the driver used by TI Connect, installing it will replace TI's driver or the opposite. In order to use TI Connect, you'll have to uninstall the libusb driver and reinstall TI's driver. Likewise, to use the SilverLink in TiEmu again, you'll have to uninstall TI's driver and reinstall the libusb one. As an alternative, we suggest using TiLP (TiLP 2 >= 1.07a) which uses the libusb driver. 3. GTK+ Troubleshooting If you're getting one of these: - ** WARNING **: Couldn't load font "MS Sans Serif 8" falling back to "Sans 8" - ** ERROR **: file shape.c line 75: assertion failed: (glyphs->num_glyphs > 0) or any other warning or error message regarding fonts/glyphs, the fix is to open your C:\Program Files\Shared Files\Gtk\2.0\etc\gtk-2.0\gtkrc and to add this: style "user-font" { font_name="Arial" } widget_class "*" style "user-font" This forces GTK+ to use a compatible font (Arial) and reportedly fixes both the aforementioned problems, and probably others too. Another source of errors like the aforementioned ones is attempting to use GTK+ 2.8 or higher with a Windows version not supported by that version of GTK+. GTK+ 2.8 or higher requires Windows 2000, XP or newer. If you're running Windows 95, 98, Me or NT 4, use GTK+ 2.6 instead. If you are getting any errors with DLLs, such as "The procedure entry point atk_relation_set_add_relation_by_type could not be located in the dynamic link library libatk-1.0-0.dll", make sure you have one and only ONE version of the GTK+ DLLs. If unsure, remove all GTK+ packages and install it again. 4. Usage The installer automatically creates program entries in the Windows Startup menu. In order to get detailed instructions on how to use TiEmu, right-click on the emulated calculator screen and select "Misc" / "User's Manual". 5. Contact Information You can reach us through our project web page: http://lpg.ticalc.org/prj_tiemu/ Links to bug/feature/patch/support trackers, forums and mailing lists can be found on the web page. -- Kevin Kofler for the TiEmu Team tiemu-3.03-nogdb+dfsg/build/nsis/tiemu-cross.nsi000066400000000000000000004072411220314353500216360ustar00rootroot00000000000000; Script generated by the HM NIS Edit Script Wizard. ; Other definitions !define GTK_MIN_VER "2.6.10" !define GTK_PKG_VER "-rc1" ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "TiEmu" !define PRODUCT_VERSION "3.02a" !define PRODUCT_PUBLISHER "The TiEmu Team" !define PRODUCT_WEB_SITE "http://lpg.ticalc.org/prj_tiemu/index.html" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\tiemu.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" SetCompressor /SOLID lzma !packhdr tmpexe.tmp "upx --best -q tmpexe.tmp" ; MUI 1.67 compatible ------ !include "MUI.nsh" ; Version comparisons !include "vercmp.nsi" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; License page !insertmacro MUI_PAGE_LICENSE "..\..\COPYING" ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Start menu page var ICONS_GROUP !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_DEFAULTFOLDER "TiEmu" !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page !define MUI_FINISHPAGE_RUN "$INSTDIR\bin\tiemu.exe" !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\share\tiemu\Readme.txt" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "English" ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "Setup.exe" InstallDir "$PROGRAMFILES\TiEmu" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show Function .onInit ; Check if GTK+ is installed ReadRegStr $0 HKLM "Software\GTK\2.0" "Path" StrCmp $0 "" 0 gtkfound ReadRegStr $0 HKCU "Software\GTK\2.0" "Path" StrCmp $0 "" 0 gtkfound MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'GTK+ not found. Please install the "GTK+ 2.6.x Runtime Environment" (${GTK_MIN_VER} or higher). If you proceed, the setup program will be downloaded and launched automatically.' IDOK installgtk IDCANCEL abortinstall gtkfound: ReadRegStr $0 HKLM "Software\GTK\2.0" "Version" StrCmp $0 "" 0 gtkverfound ReadRegStr $0 HKCU "Software\GTK\2.0" "Version" StrCmp $0 "" gtkvernotok gtkverfound: Push "${GTK_MIN_VER}" Push $0 Call CompareVersions Pop $0 IntCmp $0 1 gtkverok gtkvernotok: MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'Wrong GTK+ package version. You need at least version ${GTK_MIN_VER}. If you proceed, the setup program will be downloaded and launched automatically.' IDCANCEL abortinstall installgtk: ; Connect to the Internet ClearErrors Dialer::AttemptConnect IfErrors gtkinstallfailed Pop $0 StrCmp $0 "online" 0 gtkinstallfailed ; Fetch installer ; Do the download quietly because the GUI isn't even loaded at that point, and because I can't get ; the progress meters to work with the "Modern UI" anyway. NSISdl::download_quiet "http://kent.dl.sourceforge.net/gladewin32/gtk-win32-${GTK_MIN_VER}${GTK_PKG_VER}.exe" "$TEMP\gtksetup.exe" Pop $0 StrCmp $0 "cancel" abortinstall StrCmp $0 "success" 0 gtkinstallfailed ; Run the installer ExecWait '"$TEMP\gtksetup.exe"' $0 Delete "$TEMP\gtksetup.exe" ; The GTK+ installer is a NSIS installer as well. Errorlevel 1 means canceled by the user. IntCmp $0 1 abortinstall IntCmp $0 0 0 gtkinstallfailed gtkinstallfailed ; Check again if GTK+ is installed ReadRegStr $0 HKLM "Software\GTK\2.0" "Path" StrCmp $0 "" 0 gtkverok ReadRegStr $0 HKCU "Software\GTK\2.0" "Path" StrCmp $0 "" 0 gtkverok gtkinstallfailed: MessageBox MB_OK|MB_ICONSTOP "GTK+ installation failed." abortinstall: Abort gtkverok: ; Check if libxml is present ReadRegStr $0 HKLM "Software\GTK\2.0" "DllPath" StrCmp $0 "" 0 gtkdllpathok ReadRegStr $0 HKCU "Software\GTK\2.0" "DllPath" StrCmp $0 "" 0 gtkdllpathok MessageBox MB_OK|MB_ICONSTOP "Invalid GTK+ installation (cannot locate GTK+ DLL path)." Abort gtkdllpathok: IfFileExists "$0\libxml2.dll" libxmlfound 0 MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'Incomplete GTK+ installation: libxml2.dll not found. If you proceed, libxml2-2.6.27.zip will be downloaded and unpacked automatically.' IDOK 0 IDCANCEL abortinstall ; Connect to the Internet ClearErrors Dialer::AttemptConnect IfErrors gtkinstallfailed Pop $1 StrCmp $1 "online" 0 gtkinstallfailed ; Fetch and extract ZIP NSISdl::download_quiet "http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libxml2-2.6.27.zip" "$TEMP\libxml2-2.6.27.zip" Pop $1 StrCmp $1 "cancel" abortinstall StrCmp $1 "success" 0 gtkinstallfailed nsisunz::UnzipToStack /noextractpath /file "bin/libxml2.dll" "$TEMP\libxml2-2.6.27.zip" $0 Pop $1 Delete "$TEMP\libxml2-2.6.27.zip" StrCmp $1 "success" 0 gtkinstallfailed libxmlfound: ; Check if libglade is present IfFileExists "$0\libglade-2.0-0.dll" libgladefound 0 ; Check GTK+ version to get a matching libglade ReadRegStr $1 HKLM "Software\GTK\2.0" "Version" StrCmp $1 "" 0 gtkverfound2 ReadRegStr $1 HKCU "Software\GTK\2.0" "Version" StrCmp $1 "" 0 gtkverfound2 MessageBox MB_OK|MB_ICONSTOP "Invalid GTK+ installation (cannot check version)." Abort gtkverfound2: Push "2.8.0" Push $1 Call CompareVersions Pop $1 IntCmp $1 1 gtkis28 MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'Incomplete GTK+ installation: libglade-2.0-0.dll not found. If you proceed, libglade-2.4.0-bin.zip will be downloaded and unpacked automatically.' IDOK 0 IDCANCEL abortinstall StrCpy $2 "http://kent.dl.sourceforge.net/gladewin32/libglade-2.4.0-bin.zip" Goto gtkis26 gtkis28: MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'Incomplete GTK+ installation: libglade-2.0-0.dll not found. If you proceed, libglade-2.6.0.zip will be downloaded and unpacked automatically.' IDOK 0 IDCANCEL abortinstall StrCpy $2 "http://ftp.gnome.org/pub/gnome/binaries/win32/libglade/2.6/libglade-2.6.0.zip" gtkis26: ; Connect to the Internet ClearErrors Dialer::AttemptConnect IfErrors gtkinstallfailed Pop $1 StrCmp $1 "online" 0 gtkinstallfailed ; Fetch and extract ZIP NSISdl::download_quiet $2 "$TEMP\libglade-bin.zip" Pop $1 StrCmp $1 "cancel" abortinstall StrCmp $1 "success" 0 gtkinstallfailed nsisunz::UnzipToStack /noextractpath /file "bin/libglade-2.0-0.dll" "$TEMP\libglade-bin.zip" $0 Pop $1 Delete "$TEMP\libglade-bin.zip" StrCmp $1 "success" 0 gtkinstallfailed libgladefound: ; If $INSTDIR points to a Bin\ directory, fix it to point to the root of the tree. StrLen $0 $INSTDIR IntCmp $0 4 notbin notbin IntOp $0 $0 - 4 StrCpy $1 $INSTDIR "" $0 StrCmp $1 "\bin" 0 notbin StrCpy $INSTDIR $INSTDIR $0 notbin: FunctionEnd Section "MainSection" SEC01 ; Delete obsolete files Delete "$INSTDIR\share\tiemu\skins\emuti92plus.skn" Delete "$INSTDIR\share\tiemu\skins\emuti89.skn" Delete "$INSTDIR\share\tiemu\glade\comm-2.gladep" Delete "$INSTDIR\share\tiemu\glade\comm-2.glade" Delete "$INSTDIR\include\tilp\update.h" Delete "$INSTDIR\include\tilp\tnode.h" Delete "$INSTDIR\include\tilp\tikeys.h" Delete "$INSTDIR\include\tilp\ticalcs.h" Delete "$INSTDIR\include\tilp\pause.h" Delete "$INSTDIR\include\tilp\keys92p.h" Delete "$INSTDIR\include\tilp\keys89.h" Delete "$INSTDIR\include\tilp\keys83p.h" Delete "$INSTDIR\include\tilp\keys73.h" Delete "$INSTDIR\include\tilp\headers.h" Delete "$INSTDIR\include\tilp\calc_ver.h" Delete "$INSTDIR\include\tilp\calc_int.h" Delete "$INSTDIR\include\tilp\calc_err.h" Delete "$INSTDIR\include\tilp\calc_def.h" Delete "$INSTDIR\include\tilp\typesxx.h" Delete "$INSTDIR\include\tilp\typesv2.h" Delete "$INSTDIR\include\tilp\types92p.h" Delete "$INSTDIR\include\tilp\types92.h" Delete "$INSTDIR\include\tilp\types89.h" Delete "$INSTDIR\include\tilp\types86.h" Delete "$INSTDIR\include\tilp\types85.h" Delete "$INSTDIR\include\tilp\types83p.h" Delete "$INSTDIR\include\tilp\types83.h" Delete "$INSTDIR\include\tilp\types82.h" Delete "$INSTDIR\include\tilp\types73.h" Delete "$INSTDIR\include\tilp\tifiles.h" Delete "$INSTDIR\include\tilp\stdints.h" Delete "$INSTDIR\include\tilp\macros.h" Delete "$INSTDIR\include\tilp\grp_ops.h" Delete "$INSTDIR\include\tilp\filesxx.h" Delete "$INSTDIR\include\tilp\files9x.h" Delete "$INSTDIR\include\tilp\files8x.h" Delete "$INSTDIR\include\tilp\file_ver.h" Delete "$INSTDIR\include\tilp\file_int.h" Delete "$INSTDIR\include\tilp\file_err.h" Delete "$INSTDIR\include\tilp\file_def.h" Delete "$INSTDIR\include\tilp\timeout.h" Delete "$INSTDIR\include\tilp\ticables.h" Delete "$INSTDIR\include\tilp\export.h" Delete "$INSTDIR\include\tilp\cabl_ver.h" Delete "$INSTDIR\include\tilp\cabl_int.h" Delete "$INSTDIR\include\tilp\cabl_err.h" Delete "$INSTDIR\include\tilp\cabl_def.h" RMDir "$INSTDIR\include\tilp" Delete "$INSTDIR\bin\libticalcs-4.dll" Delete "$INSTDIR\bin\libtifiles-0.dll" Delete "$INSTDIR\bin\libticables-3.dll" Delete "$INSTDIR\lib\libticalcs.la" Delete "$INSTDIR\lib\libticalcs.dll.a" Delete "$INSTDIR\lib\libtifiles.la" Delete "$INSTDIR\lib\libtifiles.dll.a" Delete "$INSTDIR\lib\pkgconfig\ticalcs.pc" Delete "$INSTDIR\lib\pkgconfig\tifiles.pc" Delete "$INSTDIR\lib\pkgconfig\ticables.pc" Delete "$INSTDIR\lib\libticables.la" Delete "$INSTDIR\lib\libticables.dll.a" Delete "$INSTDIR\bin\libticables2-0.dll" Delete "$INSTDIR\bin\libticalcs2-0.dll" Delete "$INSTDIR\bin\libticalcs2-1.dll" Delete "$INSTDIR\bin\libticalcs2-2.dll" Delete "$INSTDIR\bin\libticalcs2-6.dll" Delete "$INSTDIR\bin\libticonv-0.dll" Delete "$INSTDIR\bin\libticonv-1.dll" Delete "$INSTDIR\bin\libticonv-2.dll" Delete "$INSTDIR\bin\libtifiles2-0.dll" Delete "$INSTDIR\bin\libtifiles2-1.dll" Delete "$INSTDIR\bin\libtifiles2-2.dll" Delete "$INSTDIR\bin\libtifiles2-3.dll" Delete "$INSTDIR\bin\libtifiles2-4.dll" Delete "$INSTDIR\include\tilp2\stdints.h" Delete "$INSTDIR\include\tilp2\macros.h" Delete "$INSTDIR\include\tilp2\tnode.h" Delete "$INSTDIR\man\man1\tiemu.1" RMDir "$INSTDIR\man\man1" Delete "$INSTDIR\share\tiemu\glade\about-2.gladep" Delete "$INSTDIR\share\tiemu\glade\calc-2.gladep" Delete "$INSTDIR\share\tiemu\glade\device-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_bkpts-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_cause-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_code-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_data-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_entry-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_heap-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_ioports-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_mem-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_pclog-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_regs-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_stack-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_vectors-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dboxes-2.gladep" Delete "$INSTDIR\share\tiemu\glade\infos-2.gladep" Delete "$INSTDIR\share\tiemu\glade\manpage-2.gladep" Delete "$INSTDIR\share\tiemu\glade\pbars-2.gladep" Delete "$INSTDIR\share\tiemu\glade\popup-2.gladep" Delete "$INSTDIR\share\tiemu\glade\quicksend-2.gladep" Delete "$INSTDIR\share\tiemu\glade\release-2.gladep" Delete "$INSTDIR\share\tiemu\glade\romversion-2.gladep" Delete "$INSTDIR\share\tiemu\glade\scroptions-2.gladep" Delete "$INSTDIR\share\tiemu\glade\wizard-2.gladep" Delete "$INSTDIR\share\tiemu\glade\about-2.glade" Delete "$INSTDIR\share\tiemu\pixmaps\bkpt_tmp.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\run.xpm" ; Install files SetOutPath "$INSTDIR\lib" File "../../../../.wine/c/tiemu/lib\libticables2.dll.a" File "../../../../.wine/c/tiemu/lib\libticables2.la" SetOutPath "$INSTDIR\lib\pkgconfig" File "../../../../.wine/c/tiemu/lib\pkgconfig\ticables2.pc" File "../../../../.wine/c/tiemu/lib\pkgconfig\tifiles2.pc" File "../../../../.wine/c/tiemu/lib\pkgconfig\ticalcs2.pc" File "../../../../.wine/c/tiemu/lib\pkgconfig\ticonv.pc" SetOutPath "$INSTDIR\lib" File "../../../../.wine/c/tiemu/lib\libtifiles2.dll.a" File "../../../../.wine/c/tiemu/lib\libtifiles2.la" File "../../../../.wine/c/tiemu/lib\libticalcs2.dll.a" File "../../../../.wine/c/tiemu/lib\libticalcs2.la" File "../../../../.wine/c/tiemu/lib\libticonv.dll.a" File "../../../../.wine/c/tiemu/lib\libticonv.la" SetOutPath "$INSTDIR\lib\dde1.2" File "../../../../.wine/c/tiemu/lib\dde1.2\tcldde12.dll" File "../../../../.wine/c/tiemu/lib\dde1.2\pkgIndex.tcl" SetOutPath "$INSTDIR\lib\reg1.1" File "../../../../.wine/c/tiemu/lib\reg1.1\tclreg11.dll" File "../../../../.wine/c/tiemu/lib\reg1.1\pkgIndex.tcl" SetOutPath "$INSTDIR\lib" File "../../../../.wine/c/tiemu/lib\tclConfig.sh" File "../../../../.wine/c/tiemu/lib\libtcl84.a" File "../../../../.wine/c/tiemu/lib\libtclstub84.a" SetOutPath "$INSTDIR\lib\tk8.4" File "../../../../.wine/c/tiemu/lib\tk8.4\pkgIndex.tcl" SetOutPath "$INSTDIR\lib" File "../../../../.wine/c/tiemu/lib\tkConfig.sh" File "../../../../.wine/c/tiemu/lib\libtk84.a" File "../../../../.wine/c/tiemu/lib\libtkstub84.a" SetOutPath "$INSTDIR\lib\itcl3.2" File "../../../../.wine/c/tiemu/lib\itcl3.2\pkgIndex.tcl" SetOutPath "$INSTDIR\lib" File "../../../../.wine/c/tiemu/lib\libitclstub32.a" SetOutPath "$INSTDIR\lib\itk3.2" File "../../../../.wine/c/tiemu/lib\itk3.2\pkgIndex.tcl" SetOutPath "$INSTDIR\lib" File "../../../../.wine/c/tiemu/lib\libitkstub32.a" SetOutPath "$INSTDIR\bin" File "../../../../.wine/c/tiemu/bin\libticables2-1.dll" File "../../../../.wine/c/tiemu/bin\libtifiles2-5.dll" File "../../../../.wine/c/tiemu/bin\libticalcs2-7.dll" File "../../../../.wine/c/tiemu/bin\libticonv-3.dll" File "../../../../.wine/c/tiemu/bin\libusb0.dll" File "../../../../.wine/c/tiemu/bin\tiemu.exe" File "../../../../.wine/c/tiemu/bin\tiemu.tlb" File "../../../../.wine/c/tiemu/bin\tiemups.dll" File "../../../../.wine/c/tiemu/bin\tcl84.dll" File "../../../../.wine/c/tiemu/bin\tclsh84.exe" File "../../../../.wine/c/tiemu/bin\tclpip84.dll" File "../../../../.wine/c/tiemu/bin\tk84.dll" File "../../../../.wine/c/tiemu/bin\wish84.exe" File "../../../../.wine/c/tiemu/bin\itcl32.dll" File "../../../../.wine/c/tiemu/bin\itk32.dll" SetOutPath "$INSTDIR\include\tilp2" File "../../../../.wine/c/tiemu/include\tilp2\export1.h" File "../../../../.wine/c/tiemu/include\tilp2\export2.h" File "../../../../.wine/c/tiemu/include\tilp2\export3.h" File "../../../../.wine/c/tiemu/include\tilp2\export4.h" File "../../../../.wine/c/tiemu/include\tilp2\ticables.h" File "../../../../.wine/c/tiemu/include\tilp2\timeout.h" File "../../../../.wine/c/tiemu/include\tilp2\files8x.h" File "../../../../.wine/c/tiemu/include\tilp2\files9x.h" File "../../../../.wine/c/tiemu/include\tilp2\stdints1.h" File "../../../../.wine/c/tiemu/include\tilp2\stdints2.h" File "../../../../.wine/c/tiemu/include\tilp2\stdints3.h" File "../../../../.wine/c/tiemu/include\tilp2\stdints4.h" File "../../../../.wine/c/tiemu/include\tilp2\tifiles.h" File "../../../../.wine/c/tiemu/include\tilp2\types73.h" File "../../../../.wine/c/tiemu/include\tilp2\types82.h" File "../../../../.wine/c/tiemu/include\tilp2\types83.h" File "../../../../.wine/c/tiemu/include\tilp2\types83p.h" File "../../../../.wine/c/tiemu/include\tilp2\types84p.h" File "../../../../.wine/c/tiemu/include\tilp2\types85.h" File "../../../../.wine/c/tiemu/include\tilp2\types86.h" File "../../../../.wine/c/tiemu/include\tilp2\types89.h" File "../../../../.wine/c/tiemu/include\tilp2\types89t.h" File "../../../../.wine/c/tiemu/include\tilp2\types92.h" File "../../../../.wine/c/tiemu/include\tilp2\types92p.h" File "../../../../.wine/c/tiemu/include\tilp2\typesv2.h" File "../../../../.wine/c/tiemu/include\tilp2\typesnsp.h" File "../../../../.wine/c/tiemu/include\tilp2\typesxx.h" File "../../../../.wine/c/tiemu/include\tilp2\keys73.h" File "../../../../.wine/c/tiemu/include\tilp2\keys83p.h" File "../../../../.wine/c/tiemu/include\tilp2\keys89.h" File "../../../../.wine/c/tiemu/include\tilp2\keys92p.h" File "../../../../.wine/c/tiemu/include\tilp2\ticalcs.h" File "../../../../.wine/c/tiemu/include\tilp2\charset.h" File "../../../../.wine/c/tiemu/include\tilp2\ticonv.h" SetOutPath "$INSTDIR\include" File "../../../../.wine/c/tiemu/include\tcl.h" File "../../../../.wine/c/tiemu/include\tclDecls.h" File "../../../../.wine/c/tiemu/include\tclPlatDecls.h" SetOutPath "$INSTDIR\include\X11" File "../../../../.wine/c/tiemu/include\X11\X.h" File "../../../../.wine/c/tiemu/include\X11\Xatom.h" File "../../../../.wine/c/tiemu/include\X11\Xfuncproto.h" File "../../../../.wine/c/tiemu/include\X11\Xlib.h" File "../../../../.wine/c/tiemu/include\X11\Xutil.h" File "../../../../.wine/c/tiemu/include\X11\cursorfont.h" File "../../../../.wine/c/tiemu/include\X11\keysym.h" File "../../../../.wine/c/tiemu/include\X11\keysymdef.h" SetOutPath "$INSTDIR\include" File "../../../../.wine/c/tiemu/include\tk.h" File "../../../../.wine/c/tiemu/include\tkPlatDecls.h" File "../../../../.wine/c/tiemu/include\tkIntXlibDecls.h" File "../../../../.wine/c/tiemu/include\tkDecls.h" File "../../../../.wine/c/tiemu/include\itcl.h" File "../../../../.wine/c/tiemu/include\itclDecls.h" File "../../../../.wine/c/tiemu/include\itclInt.h" File "../../../../.wine/c/tiemu/include\itclIntDecls.h" File "../../../../.wine/c/tiemu/include\itk.h" File "../../../../.wine/c/tiemu/include\itkDecls.h" SetOutPath "$INSTDIR\share\tiemu\glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\calc-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\device-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_bits-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_bkpts-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_cause-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_code-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_data-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_dock-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_entry-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_heap-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_ioports-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_mem-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_pclog-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_regs-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_stack-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dbg_vectors-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\dboxes-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\infos-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\log_link-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\manpage-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\pbars-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\popup-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\quicksend-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\release-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\romversion-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\scroptions-2.glade" File "../../../../.wine/c/tiemu/share\tiemu\glade\wizard-2.glade" SetOutPath "$INSTDIR\share\tiemu\help" File "../../../../.wine/c/tiemu/share\tiemu\help\FAQ.html" File "../../../../.wine/c/tiemu/share\tiemu\help\Manual_en.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter01.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter02.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter03.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter04.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter05.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter06.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter07.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter08.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter09.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter10.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter11.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter20.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter21.html" File "../../../../.wine/c/tiemu/share\tiemu\help\chapter22.html" File "../../../../.wine/c/tiemu/share\tiemu\help\calc_infos.png" File "../../../../.wine/c/tiemu/share\tiemu\help\dbg_bkpts.png" File "../../../../.wine/c/tiemu/share\tiemu\help\dbg_heap.png" File "../../../../.wine/c/tiemu/share\tiemu\help\dbg_mem.png" File "../../../../.wine/c/tiemu/share\tiemu\help\dbg_registers.png" File "../../../../.wine/c/tiemu/share\tiemu\help\dbg_search.png" File "../../../../.wine/c/tiemu/share\tiemu\help\dbg_source.png" File "../../../../.wine/c/tiemu/share\tiemu\help\dbg_sr.png" File "../../../../.wine/c/tiemu/share\tiemu\help\dbg_stack.png" File "../../../../.wine/c/tiemu/share\tiemu\help\linkport.png" File "../../../../.wine/c/tiemu/share\tiemu\help\log_link.png" File "../../../../.wine/c/tiemu/share\tiemu\help\logo_lpg.png" File "../../../../.wine/c/tiemu/share\tiemu\help\logo_tiemu.png" File "../../../../.wine/c/tiemu/share\tiemu\help\no_skin.png" File "../../../../.wine/c/tiemu/share\tiemu\help\popup_menu.png" File "../../../../.wine/c/tiemu/share\tiemu\help\romversion.png" File "../../../../.wine/c/tiemu/share\tiemu\help\screenshot.png" File "../../../../.wine/c/tiemu/share\tiemu\help\wizard.png" File "../../../../.wine/c/tiemu/share\tiemu\help\skinedit.jpg" File "../../../../.wine/c/tiemu/share\tiemu\help\tiemu.jpg" SetOutPath "$INSTDIR\share\tiemu\pedrom" File "../../../../.wine/c/tiemu/share\tiemu\pedrom\pedrom89.tib" File "../../../../.wine/c/tiemu/share\tiemu\pedrom\pedrom89ti.tib" File "../../../../.wine/c/tiemu/share\tiemu\pedrom\pedrom9x.tib" File "../../../../.wine/c/tiemu/share\tiemu\pedrom\pedromv2.tib" File "../../../../.wine/c/tiemu/share\tiemu\pedrom\pedrom.txt" SetOutPath "$INSTDIR\share\tiemu\misc" File "../../../../.wine/c/tiemu/share\tiemu\misc\iodefs_ti89_hw1.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\iodefs_ti89_hw2.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\iodefs_ti89t_hw3.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\iodefs_ti89t_hw4.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\iodefs_ti92_hw1.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\iodefs_ti92p_hw1.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\iodefs_ti92p_hw2.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\iodefs_v200_hw2.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\memmap_ti89_hw1.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\memmap_ti89_hw2.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\memmap_ti89t_hw3.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\memmap_ti89t_hw4.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\memmap_ti92_hw1.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\memmap_ti92p_hw1.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\memmap_ti92p_hw2.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\memmap_v200_hw2.txt" File "../../../../.wine/c/tiemu/share\tiemu\misc\romcalls.txt" SetOutPath "$INSTDIR\share\tiemu\pixmaps" File "../../../../.wine/c/tiemu/share\tiemu\pixmaps\bkpt.xpm" File "../../../../.wine/c/tiemu/share\tiemu\pixmaps\icon.xpm" File "../../../../.wine/c/tiemu/share\tiemu\pixmaps\logo.xpm" File "../../../../.wine/c/tiemu/share\tiemu\pixmaps\romdump.ico" File "../../../../.wine/c/tiemu/share\tiemu\pixmaps\romdump.xpm" File "../../../../.wine/c/tiemu/share\tiemu\pixmaps\run_1.xpm" File "../../../../.wine/c/tiemu/share\tiemu\pixmaps\run_2.xpm" File "../../../../.wine/c/tiemu/share\tiemu\pixmaps\void.xpm" SetOutPath "$INSTDIR\share\tiemu\skins" File "../../../../.wine/c/tiemu/share\tiemu\skins\ipaq_89.skn" File "../../../../.wine/c/tiemu/share\tiemu\skins\ipaq_92.skn" File "../../../../.wine/c/tiemu/share\tiemu\skins\ipaq_v200plt.skn" File "../../../../.wine/c/tiemu/share\tiemu\skins\ti89.skn" File "../../../../.wine/c/tiemu/share\tiemu\skins\ti89t.skn" File "../../../../.wine/c/tiemu/share\tiemu\skins\ti92.skn" File "../../../../.wine/c/tiemu/share\tiemu\skins\v200plt.skn" File "../../../../.wine/c/tiemu/share\tiemu\skins\ti89.map" File "../../../../.wine/c/tiemu/share\tiemu\skins\ti89_fr.map" File "../../../../.wine/c/tiemu/share\tiemu\skins\ti92.map" File "../../../../.wine/c/tiemu/share\tiemu\skins\ti92_fr.map" SetOutPath "$INSTDIR\share\tiemu" File "../../../../.wine/c/tiemu/share\tiemu\COPYING" File "../../../../.wine/c/tiemu/share\tiemu\RELEASE" File "../../../../.wine/c/tiemu/share\tiemu\AUTHORS" File "../../../../.wine/c/tiemu/share\tiemu\LICENSES" File "../../../../.wine/c/tiemu/share\tiemu\Manpage.txt" File "Readme.txt" SetOutPath "$INSTDIR\share\tcl8.4\http1.0" File "../../../../.wine/c/tiemu/share\tcl8.4\http1.0\http.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\http1.0\pkgIndex.tcl" SetOutPath "$INSTDIR\share\tcl8.4\http2.4" File "../../../../.wine/c/tiemu/share\tcl8.4\http2.4\http.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\http2.4\pkgIndex.tcl" SetOutPath "$INSTDIR\share\tcl8.4\opt0.4" File "../../../../.wine/c/tiemu/share\tcl8.4\opt0.4\optparse.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\opt0.4\pkgIndex.tcl" SetOutPath "$INSTDIR\share\tcl8.4\encoding" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\ascii.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\big5.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp1250.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp1251.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp1252.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp1253.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp1254.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp1255.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp1256.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp1257.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp1258.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp437.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp737.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp775.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp850.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp852.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp855.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp857.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp860.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp861.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp862.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp863.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp864.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp865.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp866.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp869.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp874.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp932.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp936.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp949.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\cp950.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\dingbats.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\ebcdic.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\euc-cn.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\euc-jp.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\euc-kr.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\gb12345.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\gb1988.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\gb2312.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso2022-jp.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso2022-kr.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso2022.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-1.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-10.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-13.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-14.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-15.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-16.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-2.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-3.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-4.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-5.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-6.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-7.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-8.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\iso8859-9.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\jis0201.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\jis0208.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\jis0212.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\koi8-r.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\koi8-u.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\ksc5601.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macCentEuro.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macCroatian.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macCyrillic.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macDingbats.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macGreek.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macIceland.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macJapan.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macRoman.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macRomania.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macThai.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macTurkish.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\macUkraine.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\shiftjis.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\symbol.enc" File "../../../../.wine/c/tiemu/share\tcl8.4\encoding\tis-620.enc" SetOutPath "$INSTDIR\share\tcl8.4\msgcat1.3" File "../../../../.wine/c/tiemu/share\tcl8.4\msgcat1.3\msgcat.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\msgcat1.3\pkgIndex.tcl" SetOutPath "$INSTDIR\share\tcl8.4\tcltest2.2" File "../../../../.wine/c/tiemu/share\tcl8.4\tcltest2.2\pkgIndex.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\tcltest2.2\tcltest.tcl" SetOutPath "$INSTDIR\share\tcl8.4" File "../../../../.wine/c/tiemu/share\tcl8.4\auto.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\history.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\init.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\ldAout.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\package.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\parray.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\safe.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\word.tcl" File "../../../../.wine/c/tiemu/share\tcl8.4\tclIndex" SetOutPath "$INSTDIR\share\tk8.4\images" File "../../../../.wine/c/tiemu/share\tk8.4\images\README" File "../../../../.wine/c/tiemu/share\tk8.4\images\logo.eps" File "../../../../.wine/c/tiemu/share\tk8.4\images\logo100.gif" File "../../../../.wine/c/tiemu/share\tk8.4\images\logo64.gif" File "../../../../.wine/c/tiemu/share\tk8.4\images\logoLarge.gif" File "../../../../.wine/c/tiemu/share\tk8.4\images\logoMed.gif" File "../../../../.wine/c/tiemu/share\tk8.4\images\pwrdLogo.eps" File "../../../../.wine/c/tiemu/share\tk8.4\images\pwrdLogo100.gif" File "../../../../.wine/c/tiemu/share\tk8.4\images\pwrdLogo150.gif" File "../../../../.wine/c/tiemu/share\tk8.4\images\pwrdLogo175.gif" File "../../../../.wine/c/tiemu/share\tk8.4\images\pwrdLogo200.gif" File "../../../../.wine/c/tiemu/share\tk8.4\images\pwrdLogo75.gif" File "../../../../.wine/c/tiemu/share\tk8.4\images\tai-ku.gif" SetOutPath "$INSTDIR\share\tk8.4\msgs" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\cs.msg" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\de.msg" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\el.msg" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\en.msg" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\en_gb.msg" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\es.msg" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\fr.msg" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\it.msg" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\nl.msg" File "../../../../.wine/c/tiemu/share\tk8.4\msgs\ru.msg" SetOutPath "$INSTDIR\share\tk8.4" File "../../../../.wine/c/tiemu/share\tk8.4\bgerror.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\button.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\choosedir.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\clrpick.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\comdlg.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\console.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\dialog.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\entry.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\focus.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\listbox.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\menu.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\mkpsenc.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\msgbox.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\obsolete.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\optMenu.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\palette.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\panedwindow.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\safetk.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\scale.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\scrlbar.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\spinbox.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\tearoff.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\text.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\tk.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\tkfbox.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\unsupported.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\xmfbox.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\prolog.ps" File "../../../../.wine/c/tiemu/share\tk8.4\tclIndex" File "../../../../.wine/c/tiemu/share\tk8.4\tkAppInit.c" SetOutPath "$INSTDIR\share\tk8.4\demos\images" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\earth.gif" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\earthris.gif" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\face.bmp" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\flagdown.bmp" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\flagup.bmp" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\gray25.bmp" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\letters.bmp" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\noletter.bmp" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\pattern.bmp" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\tcllogo.gif" File "../../../../.wine/c/tiemu/share\tk8.4\demos\images\teapot.ppm" SetOutPath "$INSTDIR\share\tk8.4\demos" File "../../../../.wine/c/tiemu/share\tk8.4\demos\README" File "../../../../.wine/c/tiemu/share\tk8.4\demos\arrow.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\bind.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\bitmap.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\browse" File "../../../../.wine/c/tiemu/share\tk8.4\demos\button.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\check.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\clrpick.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\colors.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\cscroll.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\ctext.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\dialog1.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\dialog2.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\entry1.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\entry2.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\entry3.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\filebox.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\floor.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\form.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\hello" File "../../../../.wine/c/tiemu/share\tk8.4\demos\hscale.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\icon.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\image1.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\image2.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\items.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\ixset" File "../../../../.wine/c/tiemu/share\tk8.4\demos\label.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\labelframe.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\license.terms" File "../../../../.wine/c/tiemu/share\tk8.4\demos\menu.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\menubu.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\msgbox.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\paned1.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\paned2.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\plot.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\puzzle.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\radio.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\rmt" File "../../../../.wine/c/tiemu/share\tk8.4\demos\rolodex" File "../../../../.wine/c/tiemu/share\tk8.4\demos\ruler.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\sayings.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\search.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\spin.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\square" File "../../../../.wine/c/tiemu/share\tk8.4\demos\states.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\style.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\tclIndex" File "../../../../.wine/c/tiemu/share\tk8.4\demos\tcolor" File "../../../../.wine/c/tiemu/share\tk8.4\demos\text.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\timer" File "../../../../.wine/c/tiemu/share\tk8.4\demos\twind.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\vscale.tcl" File "../../../../.wine/c/tiemu/share\tk8.4\demos\widget" SetOutPath "$INSTDIR\share\itcl3.2" File "../../../../.wine/c/tiemu/share\itcl3.2\itcl.tcl" SetOutPath "$INSTDIR\share\itk3.2" File "../../../../.wine/c/tiemu/share\itk3.2\Archetype.itk" File "../../../../.wine/c/tiemu/share\itk3.2\Toplevel.itk" File "../../../../.wine/c/tiemu/share\itk3.2\Widget.itk" File "../../../../.wine/c/tiemu/share\itk3.2\itk.tcl" File "../../../../.wine/c/tiemu/share\itk3.2\tclIndex" SetOutPath "$INSTDIR\share\iwidgets4.0.1\scripts" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\buttonbox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\calendar.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\canvasprintbox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\canvasprintdialog.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\checkbox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\combobox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\dateentry.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\datefield.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\dialog.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\dialogshell.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\disjointlistbox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\entryfield.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\extbutton.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\extfileselectionbox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\extfileselectiondialog.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\feedback.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\fileselectionbox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\fileselectiondialog.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\finddialog.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\hierarchy.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\hyperhelp.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\labeledframe.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\labeledwidget.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\mainwindow.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\menubar.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\messagebox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\messagedialog.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\notebook.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\optionmenu.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\pane.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\panedwindow.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\promptdialog.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\pushbutton.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\radiobox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\regexpfield.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\scrolledcanvas.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\scrolledframe.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\scrolledhtml.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\scrolledlistbox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\scrolledtext.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\scrolledwidget.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\selectionbox.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\selectiondialog.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\shell.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\spindate.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\spinint.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\spinner.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\spintime.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\tabnotebook.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\tabset.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\timeentry.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\timefield.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\toolbar.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\watch.itk" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\colors.itcl" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\roman.itcl" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\scopedobject.itcl" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\tclIndex" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\scripts\unknownimage.gif" SetOutPath "$INSTDIR\share\iwidgets4.0.1" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\iwidgets.tcl" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\pkgIndex.tcl" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\license.terms" SetOutPath "$INSTDIR\share\iwidgets4.0.1\demos\images" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\box.xbm" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\clear.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\close.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\copy.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\cut.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\exit.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\find.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\help.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\line.xbm" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\mag.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\new.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\open.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\oval.xbm" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\paste.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\points.xbm" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\poly.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\print.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\ruler.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\save.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\select.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\images\text.xbm" SetOutPath "$INSTDIR\share\iwidgets4.0.1\demos\html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\buttonbox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\calendar.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\canvasprintbox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\canvasprintdialog.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\checkbox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\combobox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\dateentry.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\datefield.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\dialog.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\dialogshell.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\disjointlistbox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\entryfield.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\extbutton.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\extfileselectionbox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\extfileselectiondialog.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\feedback.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\fileselectionbox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\fileselectiondialog.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\finddialog.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\hierarchy.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\hyperhelp.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\iwidgets4.0.0UserCmds.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\labeledframe.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\labeledwidget.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\mainwindow.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\menubar.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\messagebox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\messagedialog.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\notebook.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\optionmenu.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\panedwindow.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\promptdialog.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\pushbutton.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\radiobox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\scopedobject.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\scrolledcanvas.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\scrolledframe.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\scrolledhtml.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\scrolledlistbox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\scrolledtext.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\selectionbox.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\selectiondialog.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\shell.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\spindate.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\spinint.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\spinner.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\spintime.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\tabnotebook.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\tabset.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\timeentry.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\timefield.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\toolbar.n.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\html\watch.n.html" SetOutPath "$INSTDIR\share\iwidgets4.0.1\demos" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\buttonbox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\calendar" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\canvasprintbox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\canvasprintdialog" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\catalog" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\checkbox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\combobox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\dateentry" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\datefield" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\demo.html" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\dialog" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\dialogshell" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\disjointlistbox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\entryfield" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\extbutton" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\extfileselectionbox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\extfileselectiondialog" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\feedback" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\fileselectionbox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\fileselectiondialog" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\finddialog" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\hierarchy" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\hyperhelp" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\iwidgets.gif" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\labeledframe" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\labeledwidget" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\mainwindow" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\menubar" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\messagebox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\messagedialog" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\notebook" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\optionmenu" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\panedwindow" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\promptdialog" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\pushbutton" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\radiobox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\scopedobject" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\scrolledcanvas" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\scrolledframe" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\scrolledhtml" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\scrolledlistbox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\scrolledtext" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\selectionbox" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\selectiondialog" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\shell" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\spindate" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\spinint" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\spinner" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\spintime" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\tabnotebook" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\tabset" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\timeentry" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\timefield" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\toolbar" File "../../../../.wine/c/tiemu/share\iwidgets4.0.1\demos\watch" SetOutPath "$INSTDIR\share\redhat\gui" File "../../../../.wine/c/tiemu/share\redhat\gui\tclIndex" File "../../../../.wine/c/tiemu/share\redhat\gui\pkgIndex.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\advice.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\balloon.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\bbox.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\bgerror.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\bindings.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\canvas.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\cframe.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\center.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\debug.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\def.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\internet.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\font.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\gensym.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\gettext.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\hooks.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\lframe.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\list.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\looknfeel.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\menu.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\mono.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\multibox.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\parse_args.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\path.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\postghost.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\prefs.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\print.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\sendpr.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\topbind.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\toolbar.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\ulset.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\wframe.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\wingrab.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\ventry.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\combobox.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\pane.tcl" File "../../../../.wine/c/tiemu/share\redhat\gui\panedwindow.tcl" SetOutPath "$INSTDIR\share\insight1.0\images" File "../../../../.wine/c/tiemu/share\insight1.0\images\Movie_off.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\Movie_on.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\bottom.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\bp.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\check.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\console.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\continue.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\down.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\edit.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\finish.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\gdbtk_icon.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\help.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\home.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\insight.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\less.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\memory.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\more.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\next.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\next_check.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\next_frame.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\next_hit.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\next_line.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\nexti.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\open.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\prev_hit.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\reg.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\rewind.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\run.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\run_expt.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\src.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\stack.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\step.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\stepi.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\stop.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\tdump.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\tp.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\up.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\vars.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\watch.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\watch_movie.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images\icons.txt" SetOutPath "$INSTDIR\share\insight1.0\images2" File "../../../../.wine/c/tiemu/share\insight1.0\images2\Movie_off.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\Movie_on.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\bottom.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\bp.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\check.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\console.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\continue.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\down.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\edit.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\finish.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\function.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\gdbtk_icon.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\help.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\home.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\insight.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\less.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\memory.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\more.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\next.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\next_check.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\next_frame.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\next_hit.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\next_line.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\nexti.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\open.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\prev_hit.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\reg.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\rewind.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\run.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\run_expt.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\src.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\stack.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\step.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\stepi.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\stop.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\target.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\tdump.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\tp.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\up.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\vars.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\watch.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\watch_movie.gif" File "../../../../.wine/c/tiemu/share\insight1.0\images2\icons.txt" SetOutPath "$INSTDIR\share\insight1.0\help\images" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\frame_info.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\mem_menu.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\mem_popup.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\mem_pref.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\src_bal.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\src_bp_bal.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\src_bpop.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\src_menu.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\src_pop.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\src_stat.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\src_thread.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\src_toolbar.gif" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\browser1.png" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\browser2.png" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\insightbwr.png" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\reg.png" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\reg_menu.png" File "../../../../.wine/c/tiemu/share\insight1.0\help\images\watch.png" SetOutPath "$INSTDIR\share\insight1.0\help\trace" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\console.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\gbl_pref.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\help.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\license.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\locals.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\memory.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\reg_pref.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\register.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\source.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\src_pref.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\stack.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\target.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\tdump.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\tp.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\tracedlg.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\watch.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\trace\index.toc" SetOutPath "$INSTDIR\share\insight1.0\help" File "../../../../.wine/c/tiemu/share\insight1.0\help\breakpoint.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\browser.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\console.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\debug.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\gbl_pref.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\help.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\index.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\license.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\locals.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\memory.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\register.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\session.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\source.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\src_pref.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\stack.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\target.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\thread.html" File "../../../../.wine/c/tiemu/share\insight1.0\help\watch.html" SetOutPath "$INSTDIR\share\insight1.0" File "../../../../.wine/c/tiemu/share\insight1.0\about.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\actiondlg.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\editor.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\helpviewer.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\interface.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\ipc.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\locals.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\main.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\modal.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\prefs.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\session.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\tdump.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\tfind_args.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\tracedlg.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\tty.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\util.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\warning.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\watch.tcl" File "../../../../.wine/c/tiemu/share\insight1.0\gdbmenubar.itcl" File "../../../../.wine/c/tiemu/share\insight1.0\gdbtoolbar.itcl" File "../../../../.wine/c/tiemu/share\insight1.0\pluginwin.itcl" File "../../../../.wine/c/tiemu/share\insight1.0\srcbar.itcl" File "../../../../.wine/c/tiemu/share\insight1.0\attachdlg.ith" File "../../../../.wine/c/tiemu/share\insight1.0\blockframe.ith" File "../../../../.wine/c/tiemu/share\insight1.0\bpwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\browserwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\console.ith" File "../../../../.wine/c/tiemu/share\insight1.0\cspref.ith" File "../../../../.wine/c/tiemu/share\insight1.0\debugwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\download.ith" File "../../../../.wine/c/tiemu/share\insight1.0\ehandler.ith" File "../../../../.wine/c/tiemu/share\insight1.0\embeddedwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\gdbevent.ith" File "../../../../.wine/c/tiemu/share\insight1.0\gdbwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\globalpref.ith" File "../../../../.wine/c/tiemu/share\insight1.0\ipcpref.ith" File "../../../../.wine/c/tiemu/share\insight1.0\kod.ith" File "../../../../.wine/c/tiemu/share\insight1.0\managedwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\mempref.ith" File "../../../../.wine/c/tiemu/share\insight1.0\memwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\process.ith" File "../../../../.wine/c/tiemu/share\insight1.0\regwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\srcpref.ith" File "../../../../.wine/c/tiemu/share\insight1.0\srctextwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\srcwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\stackwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\targetselection.ith" File "../../../../.wine/c/tiemu/share\insight1.0\toplevelwin.ith" File "../../../../.wine/c/tiemu/share\insight1.0\vartree.ith" File "../../../../.wine/c/tiemu/share\insight1.0\attachdlg.itb" File "../../../../.wine/c/tiemu/share\insight1.0\blockframe.itb" File "../../../../.wine/c/tiemu/share\insight1.0\bpwin.itb" File "../../../../.wine/c/tiemu/share\insight1.0\browserwin.itb" File "../../../../.wine/c/tiemu/share\insight1.0\console.itb" File "../../../../.wine/c/tiemu/share\insight1.0\cspref.itb" File "../../../../.wine/c/tiemu/share\insight1.0\debugwin.itb" File "../../../../.wine/c/tiemu/share\insight1.0\download.itb" File "../../../../.wine/c/tiemu/share\insight1.0\ehandler.itb" File "../../../../.wine/c/tiemu/share\insight1.0\gdbevent.itb" File "../../../../.wine/c/tiemu/share\insight1.0\globalpref.itb" File "../../../../.wine/c/tiemu/share\insight1.0\ipcpref.itb" File "../../../../.wine/c/tiemu/share\insight1.0\kod.itb" File "../../../../.wine/c/tiemu/share\insight1.0\managedwin.itb" File "../../../../.wine/c/tiemu/share\insight1.0\mempref.itb" File "../../../../.wine/c/tiemu/share\insight1.0\memwin.itb" File "../../../../.wine/c/tiemu/share\insight1.0\process.itb" File "../../../../.wine/c/tiemu/share\insight1.0\regwin.itb" File "../../../../.wine/c/tiemu/share\insight1.0\srcpref.itb" File "../../../../.wine/c/tiemu/share\insight1.0\srctextwin.itb" File "../../../../.wine/c/tiemu/share\insight1.0\srcwin.itb" File "../../../../.wine/c/tiemu/share\insight1.0\stackwin.itb" File "../../../../.wine/c/tiemu/share\insight1.0\targetselection.itb" File "../../../../.wine/c/tiemu/share\insight1.0\vartree.itb" File "../../../../.wine/c/tiemu/share\insight1.0\tclIndex" SetOutPath "$INSTDIR\share\man\man1" File "../../../../.wine/c/tiemu/share\man\man1\tiemu.1" SetOutPath "$INSTDIR\man\mann" File "../../../../.wine/c/tiemu/man\mann\body.n" File "../../../../.wine/c/tiemu/man\mann\class.n" File "../../../../.wine/c/tiemu/man\mann\code.n" File "../../../../.wine/c/tiemu/man\mann\configbody.n" File "../../../../.wine/c/tiemu/man\mann\delete.n" File "../../../../.wine/c/tiemu/man\mann\ensemble.n" File "../../../../.wine/c/tiemu/man\mann\find.n" File "../../../../.wine/c/tiemu/man\mann\itcl.n" File "../../../../.wine/c/tiemu/man\mann\itcl_class.n" File "../../../../.wine/c/tiemu/man\mann\itcl_info.n" File "../../../../.wine/c/tiemu/man\mann\itclvars.n" File "../../../../.wine/c/tiemu/man\mann\local.n" File "../../../../.wine/c/tiemu/man\mann\scope.n" File "../../../../.wine/c/tiemu/man\mann\Archetype.n" File "../../../../.wine/c/tiemu/man\mann\Toplevel.n" File "../../../../.wine/c/tiemu/man\mann\Widget.n" File "../../../../.wine/c/tiemu/man\mann\itk.n" File "../../../../.wine/c/tiemu/man\mann\itkvars.n" File "../../../../.wine/c/tiemu/man\mann\usual.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_buttonbox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_calendar.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_canvasprintbox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_canvasprintdialog.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_checkbox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_combobox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_dateentry.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_datefield.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_dialog.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_dialogshell.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_disjointlistbox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_entryfield.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_extbutton.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_extfileselectionbox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_extfileselectiondialog.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_feedback.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_fileselectionbox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_fileselectiondialog.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_finddialog.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_hierarchy.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_hyperhelp.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_labeledframe.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_labeledwidget.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_mainwindow.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_menubar.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_messagebox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_messagedialog.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_notebook.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_optionmenu.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_panedwindow.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_promptdialog.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_pushbutton.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_radiobox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_scopedobject.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_scrolledcanvas.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_scrolledframe.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_scrolledhtml.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_scrolledlistbox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_scrolledtext.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_selectionbox.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_selectiondialog.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_shell.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_spindate.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_spinint.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_spinner.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_spintime.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_tabnotebook.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_tabset.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_timeentry.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_timefield.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_toolbar.n" File "../../../../.wine/c/tiemu/man\mann\iwidgets_watch.n" ; OLE Registration ExecWait '"$INSTDIR\bin\tiemu.exe" /RegServer' RegDLL "$INSTDIR\bin\tiemups.dll" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\TiEmu.lnk" "$INSTDIR\bin\tiemu.exe" CreateShortCut "$DESKTOP\TiEmu.lnk" "$INSTDIR\bin\tiemu.exe" !insertmacro MUI_STARTMENU_WRITE_END ; File associations WriteRegStr HKCR ".sav" "" "TiEmu.Sav" WriteRegStr HKCR "TiEmu.Sav" "" "TiEmu state" WriteRegStr HKCR "TiEmu.Sav\DefaultIcon" "" "$INSTDIR\bin\tiemu.exe,0" WriteRegStr HKCR "TiEmu.Sav\shell\open" "" "Open with &TiEmu" WriteRegStr HKCR "TiEmu.Sav\shell\open\command" "" '"$INSTDIR\bin\tiemu.exe" "%1"' WriteRegStr HKCR ".rom" "" "TiEmu.Rom" WriteRegStr HKCR "TiEmu.Rom" "" "Rom Dump" WriteRegStr HKCR "TiEmu.Rom\DefaultIcon" "" "$INSTDIR\share\tiemu\pixmaps\romdump.ico" WriteRegStr HKCR "TiEmu.Rom\shell\open" "" "Open with &TiEmu" WriteRegStr HKCR "TiEmu.Rom\shell\open\command" "" '"$INSTDIR\bin\tiemu.exe" "%1"' SectionEnd Section -AdditionalIcons SetOutPath $INSTDIR !insertmacro MUI_STARTMENU_WRITE_BEGIN Application WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Readme.lnk" "$INSTDIR\share\tiemu\Readme.txt" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\tiemu.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\tiemu.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 Abort FunctionEnd Section Uninstall !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP ; File associations DeleteRegKey HKCR "TiEmu.Rom" DeleteRegKey HKCR ".rom" DeleteRegKey HKCR "TiEmu.Sav" DeleteRegKey HKCR ".sav" ; OLE Unregistration UnregDLL "$INSTDIR\bin\tiemups.dll" ExecWait '"$INSTDIR\bin\tiemu.exe" /UnregServer' Delete "$INSTDIR\${PRODUCT_NAME}.url" Delete "$INSTDIR\uninst.exe" Delete "$INSTDIR\man\mann\iwidgets_watch.n" Delete "$INSTDIR\man\mann\iwidgets_toolbar.n" Delete "$INSTDIR\man\mann\iwidgets_timefield.n" Delete "$INSTDIR\man\mann\iwidgets_timeentry.n" Delete "$INSTDIR\man\mann\iwidgets_tabset.n" Delete "$INSTDIR\man\mann\iwidgets_tabnotebook.n" Delete "$INSTDIR\man\mann\iwidgets_spintime.n" Delete "$INSTDIR\man\mann\iwidgets_spinner.n" Delete "$INSTDIR\man\mann\iwidgets_spinint.n" Delete "$INSTDIR\man\mann\iwidgets_spindate.n" Delete "$INSTDIR\man\mann\iwidgets_shell.n" Delete "$INSTDIR\man\mann\iwidgets_selectiondialog.n" Delete "$INSTDIR\man\mann\iwidgets_selectionbox.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledtext.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledlistbox.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledhtml.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledframe.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledcanvas.n" Delete "$INSTDIR\man\mann\iwidgets_scopedobject.n" Delete "$INSTDIR\man\mann\iwidgets_radiobox.n" Delete "$INSTDIR\man\mann\iwidgets_pushbutton.n" Delete "$INSTDIR\man\mann\iwidgets_promptdialog.n" Delete "$INSTDIR\man\mann\iwidgets_panedwindow.n" Delete "$INSTDIR\man\mann\iwidgets_optionmenu.n" Delete "$INSTDIR\man\mann\iwidgets_notebook.n" Delete "$INSTDIR\man\mann\iwidgets_messagedialog.n" Delete "$INSTDIR\man\mann\iwidgets_messagebox.n" Delete "$INSTDIR\man\mann\iwidgets_menubar.n" Delete "$INSTDIR\man\mann\iwidgets_mainwindow.n" Delete "$INSTDIR\man\mann\iwidgets_labeledwidget.n" Delete "$INSTDIR\man\mann\iwidgets_labeledframe.n" Delete "$INSTDIR\man\mann\iwidgets_hyperhelp.n" Delete "$INSTDIR\man\mann\iwidgets_hierarchy.n" Delete "$INSTDIR\man\mann\iwidgets_finddialog.n" Delete "$INSTDIR\man\mann\iwidgets_fileselectiondialog.n" Delete "$INSTDIR\man\mann\iwidgets_fileselectionbox.n" Delete "$INSTDIR\man\mann\iwidgets_feedback.n" Delete "$INSTDIR\man\mann\iwidgets_extfileselectiondialog.n" Delete "$INSTDIR\man\mann\iwidgets_extfileselectionbox.n" Delete "$INSTDIR\man\mann\iwidgets_extbutton.n" Delete "$INSTDIR\man\mann\iwidgets_entryfield.n" Delete "$INSTDIR\man\mann\iwidgets_disjointlistbox.n" Delete "$INSTDIR\man\mann\iwidgets_dialogshell.n" Delete "$INSTDIR\man\mann\iwidgets_dialog.n" Delete "$INSTDIR\man\mann\iwidgets_datefield.n" Delete "$INSTDIR\man\mann\iwidgets_dateentry.n" Delete "$INSTDIR\man\mann\iwidgets_combobox.n" Delete "$INSTDIR\man\mann\iwidgets_checkbox.n" Delete "$INSTDIR\man\mann\iwidgets_canvasprintdialog.n" Delete "$INSTDIR\man\mann\iwidgets_canvasprintbox.n" Delete "$INSTDIR\man\mann\iwidgets_calendar.n" Delete "$INSTDIR\man\mann\iwidgets_buttonbox.n" Delete "$INSTDIR\man\mann\usual.n" Delete "$INSTDIR\man\mann\itkvars.n" Delete "$INSTDIR\man\mann\itk.n" Delete "$INSTDIR\man\mann\Widget.n" Delete "$INSTDIR\man\mann\Toplevel.n" Delete "$INSTDIR\man\mann\Archetype.n" Delete "$INSTDIR\man\mann\scope.n" Delete "$INSTDIR\man\mann\local.n" Delete "$INSTDIR\man\mann\itclvars.n" Delete "$INSTDIR\man\mann\itcl_info.n" Delete "$INSTDIR\man\mann\itcl_class.n" Delete "$INSTDIR\man\mann\itcl.n" Delete "$INSTDIR\man\mann\find.n" Delete "$INSTDIR\man\mann\ensemble.n" Delete "$INSTDIR\man\mann\delete.n" Delete "$INSTDIR\man\mann\configbody.n" Delete "$INSTDIR\man\mann\code.n" Delete "$INSTDIR\man\mann\class.n" Delete "$INSTDIR\man\mann\body.n" Delete "$INSTDIR\share\man\man1\tiemu.1" Delete "$INSTDIR\share\insight1.0\tclIndex" Delete "$INSTDIR\share\insight1.0\vartree.itb" Delete "$INSTDIR\share\insight1.0\targetselection.itb" Delete "$INSTDIR\share\insight1.0\stackwin.itb" Delete "$INSTDIR\share\insight1.0\srcwin.itb" Delete "$INSTDIR\share\insight1.0\srctextwin.itb" Delete "$INSTDIR\share\insight1.0\srcpref.itb" Delete "$INSTDIR\share\insight1.0\regwin.itb" Delete "$INSTDIR\share\insight1.0\process.itb" Delete "$INSTDIR\share\insight1.0\memwin.itb" Delete "$INSTDIR\share\insight1.0\mempref.itb" Delete "$INSTDIR\share\insight1.0\managedwin.itb" Delete "$INSTDIR\share\insight1.0\kod.itb" Delete "$INSTDIR\share\insight1.0\ipcpref.itb" Delete "$INSTDIR\share\insight1.0\globalpref.itb" Delete "$INSTDIR\share\insight1.0\gdbevent.itb" Delete "$INSTDIR\share\insight1.0\ehandler.itb" Delete "$INSTDIR\share\insight1.0\download.itb" Delete "$INSTDIR\share\insight1.0\debugwin.itb" Delete "$INSTDIR\share\insight1.0\cspref.itb" Delete "$INSTDIR\share\insight1.0\console.itb" Delete "$INSTDIR\share\insight1.0\browserwin.itb" Delete "$INSTDIR\share\insight1.0\bpwin.itb" Delete "$INSTDIR\share\insight1.0\blockframe.itb" Delete "$INSTDIR\share\insight1.0\attachdlg.itb" Delete "$INSTDIR\share\insight1.0\vartree.ith" Delete "$INSTDIR\share\insight1.0\toplevelwin.ith" Delete "$INSTDIR\share\insight1.0\targetselection.ith" Delete "$INSTDIR\share\insight1.0\stackwin.ith" Delete "$INSTDIR\share\insight1.0\srcwin.ith" Delete "$INSTDIR\share\insight1.0\srctextwin.ith" Delete "$INSTDIR\share\insight1.0\srcpref.ith" Delete "$INSTDIR\share\insight1.0\regwin.ith" Delete "$INSTDIR\share\insight1.0\process.ith" Delete "$INSTDIR\share\insight1.0\memwin.ith" Delete "$INSTDIR\share\insight1.0\mempref.ith" Delete "$INSTDIR\share\insight1.0\managedwin.ith" Delete "$INSTDIR\share\insight1.0\kod.ith" Delete "$INSTDIR\share\insight1.0\ipcpref.ith" Delete "$INSTDIR\share\insight1.0\globalpref.ith" Delete "$INSTDIR\share\insight1.0\gdbwin.ith" Delete "$INSTDIR\share\insight1.0\gdbevent.ith" Delete "$INSTDIR\share\insight1.0\embeddedwin.ith" Delete "$INSTDIR\share\insight1.0\ehandler.ith" Delete "$INSTDIR\share\insight1.0\download.ith" Delete "$INSTDIR\share\insight1.0\debugwin.ith" Delete "$INSTDIR\share\insight1.0\cspref.ith" Delete "$INSTDIR\share\insight1.0\console.ith" Delete "$INSTDIR\share\insight1.0\browserwin.ith" Delete "$INSTDIR\share\insight1.0\bpwin.ith" Delete "$INSTDIR\share\insight1.0\blockframe.ith" Delete "$INSTDIR\share\insight1.0\attachdlg.ith" Delete "$INSTDIR\share\insight1.0\srcbar.itcl" Delete "$INSTDIR\share\insight1.0\pluginwin.itcl" Delete "$INSTDIR\share\insight1.0\gdbtoolbar.itcl" Delete "$INSTDIR\share\insight1.0\gdbmenubar.itcl" Delete "$INSTDIR\share\insight1.0\watch.tcl" Delete "$INSTDIR\share\insight1.0\warning.tcl" Delete "$INSTDIR\share\insight1.0\util.tcl" Delete "$INSTDIR\share\insight1.0\tty.tcl" Delete "$INSTDIR\share\insight1.0\tracedlg.tcl" Delete "$INSTDIR\share\insight1.0\tfind_args.tcl" Delete "$INSTDIR\share\insight1.0\tdump.tcl" Delete "$INSTDIR\share\insight1.0\session.tcl" Delete "$INSTDIR\share\insight1.0\prefs.tcl" Delete "$INSTDIR\share\insight1.0\modal.tcl" Delete "$INSTDIR\share\insight1.0\main.tcl" Delete "$INSTDIR\share\insight1.0\locals.tcl" Delete "$INSTDIR\share\insight1.0\ipc.tcl" Delete "$INSTDIR\share\insight1.0\interface.tcl" Delete "$INSTDIR\share\insight1.0\helpviewer.tcl" Delete "$INSTDIR\share\insight1.0\editor.tcl" Delete "$INSTDIR\share\insight1.0\actiondlg.tcl" Delete "$INSTDIR\share\insight1.0\about.tcl" Delete "$INSTDIR\share\insight1.0\help\watch.html" Delete "$INSTDIR\share\insight1.0\help\thread.html" Delete "$INSTDIR\share\insight1.0\help\target.html" Delete "$INSTDIR\share\insight1.0\help\stack.html" Delete "$INSTDIR\share\insight1.0\help\src_pref.html" Delete "$INSTDIR\share\insight1.0\help\source.html" Delete "$INSTDIR\share\insight1.0\help\session.html" Delete "$INSTDIR\share\insight1.0\help\register.html" Delete "$INSTDIR\share\insight1.0\help\memory.html" Delete "$INSTDIR\share\insight1.0\help\locals.html" Delete "$INSTDIR\share\insight1.0\help\license.html" Delete "$INSTDIR\share\insight1.0\help\index.html" Delete "$INSTDIR\share\insight1.0\help\help.html" Delete "$INSTDIR\share\insight1.0\help\gbl_pref.html" Delete "$INSTDIR\share\insight1.0\help\debug.html" Delete "$INSTDIR\share\insight1.0\help\console.html" Delete "$INSTDIR\share\insight1.0\help\browser.html" Delete "$INSTDIR\share\insight1.0\help\breakpoint.html" Delete "$INSTDIR\share\insight1.0\help\trace\index.toc" Delete "$INSTDIR\share\insight1.0\help\trace\watch.html" Delete "$INSTDIR\share\insight1.0\help\trace\tracedlg.html" Delete "$INSTDIR\share\insight1.0\help\trace\tp.html" Delete "$INSTDIR\share\insight1.0\help\trace\tdump.html" Delete "$INSTDIR\share\insight1.0\help\trace\target.html" Delete "$INSTDIR\share\insight1.0\help\trace\stack.html" Delete "$INSTDIR\share\insight1.0\help\trace\src_pref.html" Delete "$INSTDIR\share\insight1.0\help\trace\source.html" Delete "$INSTDIR\share\insight1.0\help\trace\register.html" Delete "$INSTDIR\share\insight1.0\help\trace\reg_pref.html" Delete "$INSTDIR\share\insight1.0\help\trace\memory.html" Delete "$INSTDIR\share\insight1.0\help\trace\locals.html" Delete "$INSTDIR\share\insight1.0\help\trace\license.html" Delete "$INSTDIR\share\insight1.0\help\trace\help.html" Delete "$INSTDIR\share\insight1.0\help\trace\gbl_pref.html" Delete "$INSTDIR\share\insight1.0\help\trace\console.html" Delete "$INSTDIR\share\insight1.0\help\images\watch.png" Delete "$INSTDIR\share\insight1.0\help\images\reg_menu.png" Delete "$INSTDIR\share\insight1.0\help\images\reg.png" Delete "$INSTDIR\share\insight1.0\help\images\insightbwr.png" Delete "$INSTDIR\share\insight1.0\help\images\browser2.png" Delete "$INSTDIR\share\insight1.0\help\images\browser1.png" Delete "$INSTDIR\share\insight1.0\help\images\src_toolbar.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_thread.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_stat.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_pop.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_menu.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_bpop.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_bp_bal.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_bal.gif" Delete "$INSTDIR\share\insight1.0\help\images\mem_pref.gif" Delete "$INSTDIR\share\insight1.0\help\images\mem_popup.gif" Delete "$INSTDIR\share\insight1.0\help\images\mem_menu.gif" Delete "$INSTDIR\share\insight1.0\help\images\frame_info.gif" Delete "$INSTDIR\share\insight1.0\images2\icons.txt" Delete "$INSTDIR\share\insight1.0\images2\watch_movie.gif" Delete "$INSTDIR\share\insight1.0\images2\watch.gif" Delete "$INSTDIR\share\insight1.0\images2\vars.gif" Delete "$INSTDIR\share\insight1.0\images2\up.gif" Delete "$INSTDIR\share\insight1.0\images2\tp.gif" Delete "$INSTDIR\share\insight1.0\images2\tdump.gif" Delete "$INSTDIR\share\insight1.0\images2\target.gif" Delete "$INSTDIR\share\insight1.0\images2\stop.gif" Delete "$INSTDIR\share\insight1.0\images2\stepi.gif" Delete "$INSTDIR\share\insight1.0\images2\step.gif" Delete "$INSTDIR\share\insight1.0\images2\stack.gif" Delete "$INSTDIR\share\insight1.0\images2\src.gif" Delete "$INSTDIR\share\insight1.0\images2\run_expt.gif" Delete "$INSTDIR\share\insight1.0\images2\run.gif" Delete "$INSTDIR\share\insight1.0\images2\rewind.gif" Delete "$INSTDIR\share\insight1.0\images2\reg.gif" Delete "$INSTDIR\share\insight1.0\images2\prev_hit.gif" Delete "$INSTDIR\share\insight1.0\images2\open.gif" Delete "$INSTDIR\share\insight1.0\images2\nexti.gif" Delete "$INSTDIR\share\insight1.0\images2\next_line.gif" Delete "$INSTDIR\share\insight1.0\images2\next_hit.gif" Delete "$INSTDIR\share\insight1.0\images2\next_frame.gif" Delete "$INSTDIR\share\insight1.0\images2\next_check.gif" Delete "$INSTDIR\share\insight1.0\images2\next.gif" Delete "$INSTDIR\share\insight1.0\images2\more.gif" Delete "$INSTDIR\share\insight1.0\images2\memory.gif" Delete "$INSTDIR\share\insight1.0\images2\less.gif" Delete "$INSTDIR\share\insight1.0\images2\insight.gif" Delete "$INSTDIR\share\insight1.0\images2\home.gif" Delete "$INSTDIR\share\insight1.0\images2\help.gif" Delete "$INSTDIR\share\insight1.0\images2\gdbtk_icon.gif" Delete "$INSTDIR\share\insight1.0\images2\function.gif" Delete "$INSTDIR\share\insight1.0\images2\finish.gif" Delete "$INSTDIR\share\insight1.0\images2\edit.gif" Delete "$INSTDIR\share\insight1.0\images2\down.gif" Delete "$INSTDIR\share\insight1.0\images2\continue.gif" Delete "$INSTDIR\share\insight1.0\images2\console.gif" Delete "$INSTDIR\share\insight1.0\images2\check.gif" Delete "$INSTDIR\share\insight1.0\images2\bp.gif" Delete "$INSTDIR\share\insight1.0\images2\bottom.gif" Delete "$INSTDIR\share\insight1.0\images2\Movie_on.gif" Delete "$INSTDIR\share\insight1.0\images2\Movie_off.gif" Delete "$INSTDIR\share\insight1.0\images\icons.txt" Delete "$INSTDIR\share\insight1.0\images\watch_movie.gif" Delete "$INSTDIR\share\insight1.0\images\watch.gif" Delete "$INSTDIR\share\insight1.0\images\vars.gif" Delete "$INSTDIR\share\insight1.0\images\up.gif" Delete "$INSTDIR\share\insight1.0\images\tp.gif" Delete "$INSTDIR\share\insight1.0\images\tdump.gif" Delete "$INSTDIR\share\insight1.0\images\stop.gif" Delete "$INSTDIR\share\insight1.0\images\stepi.gif" Delete "$INSTDIR\share\insight1.0\images\step.gif" Delete "$INSTDIR\share\insight1.0\images\stack.gif" Delete "$INSTDIR\share\insight1.0\images\src.gif" Delete "$INSTDIR\share\insight1.0\images\run_expt.gif" Delete "$INSTDIR\share\insight1.0\images\run.gif" Delete "$INSTDIR\share\insight1.0\images\rewind.gif" Delete "$INSTDIR\share\insight1.0\images\reg.gif" Delete "$INSTDIR\share\insight1.0\images\prev_hit.gif" Delete "$INSTDIR\share\insight1.0\images\open.gif" Delete "$INSTDIR\share\insight1.0\images\nexti.gif" Delete "$INSTDIR\share\insight1.0\images\next_line.gif" Delete "$INSTDIR\share\insight1.0\images\next_hit.gif" Delete "$INSTDIR\share\insight1.0\images\next_frame.gif" Delete "$INSTDIR\share\insight1.0\images\next_check.gif" Delete "$INSTDIR\share\insight1.0\images\next.gif" Delete "$INSTDIR\share\insight1.0\images\more.gif" Delete "$INSTDIR\share\insight1.0\images\memory.gif" Delete "$INSTDIR\share\insight1.0\images\less.gif" Delete "$INSTDIR\share\insight1.0\images\insight.gif" Delete "$INSTDIR\share\insight1.0\images\home.gif" Delete "$INSTDIR\share\insight1.0\images\help.gif" Delete "$INSTDIR\share\insight1.0\images\gdbtk_icon.gif" Delete "$INSTDIR\share\insight1.0\images\finish.gif" Delete "$INSTDIR\share\insight1.0\images\edit.gif" Delete "$INSTDIR\share\insight1.0\images\down.gif" Delete "$INSTDIR\share\insight1.0\images\continue.gif" Delete "$INSTDIR\share\insight1.0\images\console.gif" Delete "$INSTDIR\share\insight1.0\images\check.gif" Delete "$INSTDIR\share\insight1.0\images\bp.gif" Delete "$INSTDIR\share\insight1.0\images\bottom.gif" Delete "$INSTDIR\share\insight1.0\images\Movie_on.gif" Delete "$INSTDIR\share\insight1.0\images\Movie_off.gif" Delete "$INSTDIR\share\redhat\gui\panedwindow.tcl" Delete "$INSTDIR\share\redhat\gui\pane.tcl" Delete "$INSTDIR\share\redhat\gui\combobox.tcl" Delete "$INSTDIR\share\redhat\gui\ventry.tcl" Delete "$INSTDIR\share\redhat\gui\wingrab.tcl" Delete "$INSTDIR\share\redhat\gui\wframe.tcl" Delete "$INSTDIR\share\redhat\gui\ulset.tcl" Delete "$INSTDIR\share\redhat\gui\toolbar.tcl" Delete "$INSTDIR\share\redhat\gui\topbind.tcl" Delete "$INSTDIR\share\redhat\gui\sendpr.tcl" Delete "$INSTDIR\share\redhat\gui\print.tcl" Delete "$INSTDIR\share\redhat\gui\prefs.tcl" Delete "$INSTDIR\share\redhat\gui\postghost.tcl" Delete "$INSTDIR\share\redhat\gui\path.tcl" Delete "$INSTDIR\share\redhat\gui\parse_args.tcl" Delete "$INSTDIR\share\redhat\gui\multibox.tcl" Delete "$INSTDIR\share\redhat\gui\mono.tcl" Delete "$INSTDIR\share\redhat\gui\menu.tcl" Delete "$INSTDIR\share\redhat\gui\looknfeel.tcl" Delete "$INSTDIR\share\redhat\gui\list.tcl" Delete "$INSTDIR\share\redhat\gui\lframe.tcl" Delete "$INSTDIR\share\redhat\gui\hooks.tcl" Delete "$INSTDIR\share\redhat\gui\gettext.tcl" Delete "$INSTDIR\share\redhat\gui\gensym.tcl" Delete "$INSTDIR\share\redhat\gui\font.tcl" Delete "$INSTDIR\share\redhat\gui\internet.tcl" Delete "$INSTDIR\share\redhat\gui\def.tcl" Delete "$INSTDIR\share\redhat\gui\debug.tcl" Delete "$INSTDIR\share\redhat\gui\center.tcl" Delete "$INSTDIR\share\redhat\gui\cframe.tcl" Delete "$INSTDIR\share\redhat\gui\canvas.tcl" Delete "$INSTDIR\share\redhat\gui\bindings.tcl" Delete "$INSTDIR\share\redhat\gui\bgerror.tcl" Delete "$INSTDIR\share\redhat\gui\bbox.tcl" Delete "$INSTDIR\share\redhat\gui\balloon.tcl" Delete "$INSTDIR\share\redhat\gui\advice.tcl" Delete "$INSTDIR\share\redhat\gui\pkgIndex.tcl" Delete "$INSTDIR\share\redhat\gui\tclIndex" Delete "$INSTDIR\share\iwidgets4.0.1\demos\watch" Delete "$INSTDIR\share\iwidgets4.0.1\demos\toolbar" Delete "$INSTDIR\share\iwidgets4.0.1\demos\timefield" Delete "$INSTDIR\share\iwidgets4.0.1\demos\timeentry" Delete "$INSTDIR\share\iwidgets4.0.1\demos\tabset" Delete "$INSTDIR\share\iwidgets4.0.1\demos\tabnotebook" Delete "$INSTDIR\share\iwidgets4.0.1\demos\spintime" Delete "$INSTDIR\share\iwidgets4.0.1\demos\spinner" Delete "$INSTDIR\share\iwidgets4.0.1\demos\spinint" Delete "$INSTDIR\share\iwidgets4.0.1\demos\spindate" Delete "$INSTDIR\share\iwidgets4.0.1\demos\shell" Delete "$INSTDIR\share\iwidgets4.0.1\demos\selectiondialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\selectionbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledtext" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledlistbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledhtml" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledframe" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledcanvas" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scopedobject" Delete "$INSTDIR\share\iwidgets4.0.1\demos\radiobox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\pushbutton" Delete "$INSTDIR\share\iwidgets4.0.1\demos\promptdialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\panedwindow" Delete "$INSTDIR\share\iwidgets4.0.1\demos\optionmenu" Delete "$INSTDIR\share\iwidgets4.0.1\demos\notebook" Delete "$INSTDIR\share\iwidgets4.0.1\demos\messagedialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\messagebox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\menubar" Delete "$INSTDIR\share\iwidgets4.0.1\demos\mainwindow" Delete "$INSTDIR\share\iwidgets4.0.1\demos\labeledwidget" Delete "$INSTDIR\share\iwidgets4.0.1\demos\labeledframe" Delete "$INSTDIR\share\iwidgets4.0.1\demos\iwidgets.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\hyperhelp" Delete "$INSTDIR\share\iwidgets4.0.1\demos\hierarchy" Delete "$INSTDIR\share\iwidgets4.0.1\demos\finddialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\fileselectiondialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\fileselectionbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\feedback" Delete "$INSTDIR\share\iwidgets4.0.1\demos\extfileselectiondialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\extfileselectionbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\extbutton" Delete "$INSTDIR\share\iwidgets4.0.1\demos\entryfield" Delete "$INSTDIR\share\iwidgets4.0.1\demos\disjointlistbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\dialogshell" Delete "$INSTDIR\share\iwidgets4.0.1\demos\dialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\demo.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\datefield" Delete "$INSTDIR\share\iwidgets4.0.1\demos\dateentry" Delete "$INSTDIR\share\iwidgets4.0.1\demos\combobox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\checkbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\catalog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\canvasprintdialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\canvasprintbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\calendar" Delete "$INSTDIR\share\iwidgets4.0.1\demos\buttonbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\watch.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\toolbar.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\timefield.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\timeentry.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\tabset.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\tabnotebook.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\spintime.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\spinner.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\spinint.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\spindate.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\shell.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\selectiondialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\selectionbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledtext.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledlistbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledhtml.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledframe.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledcanvas.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scopedobject.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\radiobox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\pushbutton.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\promptdialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\panedwindow.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\optionmenu.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\notebook.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\messagedialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\messagebox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\menubar.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\mainwindow.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\labeledwidget.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\labeledframe.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\iwidgets4.0.0UserCmds.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\hyperhelp.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\hierarchy.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\finddialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\fileselectiondialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\fileselectionbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\feedback.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\extfileselectiondialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\extfileselectionbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\extbutton.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\entryfield.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\disjointlistbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\dialogshell.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\dialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\datefield.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\dateentry.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\combobox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\checkbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\canvasprintdialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\canvasprintbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\calendar.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\buttonbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\text.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\select.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\save.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\ruler.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\print.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\poly.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\points.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\paste.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\oval.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\open.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\new.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\mag.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\line.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\help.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\find.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\exit.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\cut.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\copy.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\close.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\clear.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\box.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\license.terms" Delete "$INSTDIR\share\iwidgets4.0.1\pkgIndex.tcl" Delete "$INSTDIR\share\iwidgets4.0.1\iwidgets.tcl" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\unknownimage.gif" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\tclIndex" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scopedobject.itcl" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\roman.itcl" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\colors.itcl" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\watch.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\toolbar.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\timefield.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\timeentry.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\tabset.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\tabnotebook.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\spintime.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\spinner.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\spinint.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\spindate.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\shell.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\selectiondialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\selectionbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledwidget.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledtext.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledlistbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledhtml.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledframe.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledcanvas.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\regexpfield.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\radiobox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\pushbutton.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\promptdialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\panedwindow.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\pane.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\optionmenu.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\notebook.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\messagedialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\messagebox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\menubar.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\mainwindow.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\labeledwidget.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\labeledframe.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\hyperhelp.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\hierarchy.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\finddialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\fileselectiondialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\fileselectionbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\feedback.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\extfileselectiondialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\extfileselectionbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\extbutton.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\entryfield.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\disjointlistbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\dialogshell.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\dialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\datefield.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\dateentry.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\combobox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\checkbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\canvasprintdialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\canvasprintbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\calendar.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\buttonbox.itk" Delete "$INSTDIR\share\itk3.2\tclIndex" Delete "$INSTDIR\share\itk3.2\itk.tcl" Delete "$INSTDIR\share\itk3.2\Widget.itk" Delete "$INSTDIR\share\itk3.2\Toplevel.itk" Delete "$INSTDIR\share\itk3.2\Archetype.itk" Delete "$INSTDIR\share\itcl3.2\itcl.tcl" Delete "$INSTDIR\share\tk8.4\demos\widget" Delete "$INSTDIR\share\tk8.4\demos\vscale.tcl" Delete "$INSTDIR\share\tk8.4\demos\twind.tcl" Delete "$INSTDIR\share\tk8.4\demos\timer" Delete "$INSTDIR\share\tk8.4\demos\text.tcl" Delete "$INSTDIR\share\tk8.4\demos\tcolor" Delete "$INSTDIR\share\tk8.4\demos\tclIndex" Delete "$INSTDIR\share\tk8.4\demos\style.tcl" Delete "$INSTDIR\share\tk8.4\demos\states.tcl" Delete "$INSTDIR\share\tk8.4\demos\square" Delete "$INSTDIR\share\tk8.4\demos\spin.tcl" Delete "$INSTDIR\share\tk8.4\demos\search.tcl" Delete "$INSTDIR\share\tk8.4\demos\sayings.tcl" Delete "$INSTDIR\share\tk8.4\demos\ruler.tcl" Delete "$INSTDIR\share\tk8.4\demos\rolodex" Delete "$INSTDIR\share\tk8.4\demos\rmt" Delete "$INSTDIR\share\tk8.4\demos\radio.tcl" Delete "$INSTDIR\share\tk8.4\demos\puzzle.tcl" Delete "$INSTDIR\share\tk8.4\demos\plot.tcl" Delete "$INSTDIR\share\tk8.4\demos\paned2.tcl" Delete "$INSTDIR\share\tk8.4\demos\paned1.tcl" Delete "$INSTDIR\share\tk8.4\demos\msgbox.tcl" Delete "$INSTDIR\share\tk8.4\demos\menubu.tcl" Delete "$INSTDIR\share\tk8.4\demos\menu.tcl" Delete "$INSTDIR\share\tk8.4\demos\license.terms" Delete "$INSTDIR\share\tk8.4\demos\labelframe.tcl" Delete "$INSTDIR\share\tk8.4\demos\label.tcl" Delete "$INSTDIR\share\tk8.4\demos\ixset" Delete "$INSTDIR\share\tk8.4\demos\items.tcl" Delete "$INSTDIR\share\tk8.4\demos\image2.tcl" Delete "$INSTDIR\share\tk8.4\demos\image1.tcl" Delete "$INSTDIR\share\tk8.4\demos\icon.tcl" Delete "$INSTDIR\share\tk8.4\demos\hscale.tcl" Delete "$INSTDIR\share\tk8.4\demos\hello" Delete "$INSTDIR\share\tk8.4\demos\form.tcl" Delete "$INSTDIR\share\tk8.4\demos\floor.tcl" Delete "$INSTDIR\share\tk8.4\demos\filebox.tcl" Delete "$INSTDIR\share\tk8.4\demos\entry3.tcl" Delete "$INSTDIR\share\tk8.4\demos\entry2.tcl" Delete "$INSTDIR\share\tk8.4\demos\entry1.tcl" Delete "$INSTDIR\share\tk8.4\demos\dialog2.tcl" Delete "$INSTDIR\share\tk8.4\demos\dialog1.tcl" Delete "$INSTDIR\share\tk8.4\demos\ctext.tcl" Delete "$INSTDIR\share\tk8.4\demos\cscroll.tcl" Delete "$INSTDIR\share\tk8.4\demos\colors.tcl" Delete "$INSTDIR\share\tk8.4\demos\clrpick.tcl" Delete "$INSTDIR\share\tk8.4\demos\check.tcl" Delete "$INSTDIR\share\tk8.4\demos\button.tcl" Delete "$INSTDIR\share\tk8.4\demos\browse" Delete "$INSTDIR\share\tk8.4\demos\bitmap.tcl" Delete "$INSTDIR\share\tk8.4\demos\bind.tcl" Delete "$INSTDIR\share\tk8.4\demos\arrow.tcl" Delete "$INSTDIR\share\tk8.4\demos\README" Delete "$INSTDIR\share\tk8.4\demos\images\teapot.ppm" Delete "$INSTDIR\share\tk8.4\demos\images\tcllogo.gif" Delete "$INSTDIR\share\tk8.4\demos\images\pattern.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\noletter.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\letters.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\gray25.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\flagup.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\flagdown.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\face.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\earthris.gif" Delete "$INSTDIR\share\tk8.4\demos\images\earth.gif" Delete "$INSTDIR\share\tk8.4\tkAppInit.c" Delete "$INSTDIR\share\tk8.4\tclIndex" Delete "$INSTDIR\share\tk8.4\prolog.ps" Delete "$INSTDIR\share\tk8.4\xmfbox.tcl" Delete "$INSTDIR\share\tk8.4\unsupported.tcl" Delete "$INSTDIR\share\tk8.4\tkfbox.tcl" Delete "$INSTDIR\share\tk8.4\tk.tcl" Delete "$INSTDIR\share\tk8.4\text.tcl" Delete "$INSTDIR\share\tk8.4\tearoff.tcl" Delete "$INSTDIR\share\tk8.4\spinbox.tcl" Delete "$INSTDIR\share\tk8.4\scrlbar.tcl" Delete "$INSTDIR\share\tk8.4\scale.tcl" Delete "$INSTDIR\share\tk8.4\safetk.tcl" Delete "$INSTDIR\share\tk8.4\panedwindow.tcl" Delete "$INSTDIR\share\tk8.4\palette.tcl" Delete "$INSTDIR\share\tk8.4\optMenu.tcl" Delete "$INSTDIR\share\tk8.4\obsolete.tcl" Delete "$INSTDIR\share\tk8.4\msgbox.tcl" Delete "$INSTDIR\share\tk8.4\mkpsenc.tcl" Delete "$INSTDIR\share\tk8.4\menu.tcl" Delete "$INSTDIR\share\tk8.4\listbox.tcl" Delete "$INSTDIR\share\tk8.4\focus.tcl" Delete "$INSTDIR\share\tk8.4\entry.tcl" Delete "$INSTDIR\share\tk8.4\dialog.tcl" Delete "$INSTDIR\share\tk8.4\console.tcl" Delete "$INSTDIR\share\tk8.4\comdlg.tcl" Delete "$INSTDIR\share\tk8.4\clrpick.tcl" Delete "$INSTDIR\share\tk8.4\choosedir.tcl" Delete "$INSTDIR\share\tk8.4\button.tcl" Delete "$INSTDIR\share\tk8.4\bgerror.tcl" Delete "$INSTDIR\share\tk8.4\msgs\ru.msg" Delete "$INSTDIR\share\tk8.4\msgs\nl.msg" Delete "$INSTDIR\share\tk8.4\msgs\it.msg" Delete "$INSTDIR\share\tk8.4\msgs\fr.msg" Delete "$INSTDIR\share\tk8.4\msgs\es.msg" Delete "$INSTDIR\share\tk8.4\msgs\en_gb.msg" Delete "$INSTDIR\share\tk8.4\msgs\en.msg" Delete "$INSTDIR\share\tk8.4\msgs\el.msg" Delete "$INSTDIR\share\tk8.4\msgs\de.msg" Delete "$INSTDIR\share\tk8.4\msgs\cs.msg" Delete "$INSTDIR\share\tk8.4\images\tai-ku.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo75.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo200.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo175.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo150.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo100.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo.eps" Delete "$INSTDIR\share\tk8.4\images\logoMed.gif" Delete "$INSTDIR\share\tk8.4\images\logoLarge.gif" Delete "$INSTDIR\share\tk8.4\images\logo64.gif" Delete "$INSTDIR\share\tk8.4\images\logo100.gif" Delete "$INSTDIR\share\tk8.4\images\logo.eps" Delete "$INSTDIR\share\tk8.4\images\README" Delete "$INSTDIR\share\tcl8.4\tclIndex" Delete "$INSTDIR\share\tcl8.4\word.tcl" Delete "$INSTDIR\share\tcl8.4\safe.tcl" Delete "$INSTDIR\share\tcl8.4\parray.tcl" Delete "$INSTDIR\share\tcl8.4\package.tcl" Delete "$INSTDIR\share\tcl8.4\ldAout.tcl" Delete "$INSTDIR\share\tcl8.4\init.tcl" Delete "$INSTDIR\share\tcl8.4\history.tcl" Delete "$INSTDIR\share\tcl8.4\auto.tcl" Delete "$INSTDIR\share\tcl8.4\tcltest2.2\tcltest.tcl" Delete "$INSTDIR\share\tcl8.4\tcltest2.2\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\msgcat1.3\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\msgcat1.3\msgcat.tcl" Delete "$INSTDIR\share\tcl8.4\encoding\tis-620.enc" Delete "$INSTDIR\share\tcl8.4\encoding\symbol.enc" Delete "$INSTDIR\share\tcl8.4\encoding\shiftjis.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macUkraine.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macTurkish.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macThai.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macRomania.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macRoman.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macJapan.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macIceland.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macGreek.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macDingbats.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macCyrillic.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macCroatian.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macCentEuro.enc" Delete "$INSTDIR\share\tcl8.4\encoding\ksc5601.enc" Delete "$INSTDIR\share\tcl8.4\encoding\koi8-u.enc" Delete "$INSTDIR\share\tcl8.4\encoding\koi8-r.enc" Delete "$INSTDIR\share\tcl8.4\encoding\jis0212.enc" Delete "$INSTDIR\share\tcl8.4\encoding\jis0208.enc" Delete "$INSTDIR\share\tcl8.4\encoding\jis0201.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-9.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-8.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-7.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-6.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-5.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-4.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-3.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-2.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-16.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-15.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-14.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-13.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-10.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-1.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso2022.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso2022-kr.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso2022-jp.enc" Delete "$INSTDIR\share\tcl8.4\encoding\gb2312.enc" Delete "$INSTDIR\share\tcl8.4\encoding\gb1988.enc" Delete "$INSTDIR\share\tcl8.4\encoding\gb12345.enc" Delete "$INSTDIR\share\tcl8.4\encoding\euc-kr.enc" Delete "$INSTDIR\share\tcl8.4\encoding\euc-jp.enc" Delete "$INSTDIR\share\tcl8.4\encoding\euc-cn.enc" Delete "$INSTDIR\share\tcl8.4\encoding\ebcdic.enc" Delete "$INSTDIR\share\tcl8.4\encoding\dingbats.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp950.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp949.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp936.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp932.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp874.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp869.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp866.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp865.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp864.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp863.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp862.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp861.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp860.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp857.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp855.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp852.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp850.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp775.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp737.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp437.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1258.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1257.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1256.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1255.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1254.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1253.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1252.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1251.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1250.enc" Delete "$INSTDIR\share\tcl8.4\encoding\big5.enc" Delete "$INSTDIR\share\tcl8.4\encoding\ascii.enc" Delete "$INSTDIR\share\tcl8.4\opt0.4\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\opt0.4\optparse.tcl" Delete "$INSTDIR\share\tcl8.4\http2.4\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\http2.4\http.tcl" Delete "$INSTDIR\share\tcl8.4\http1.0\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\http1.0\http.tcl" Delete "$INSTDIR\share\tiemu\LICENSES" Delete "$INSTDIR\share\tiemu\AUTHORS" Delete "$INSTDIR\share\tiemu\RELEASE" Delete "$INSTDIR\share\tiemu\COPYING" Delete "$INSTDIR\share\tiemu\Manpage.txt" Delete "$INSTDIR\share\tiemu\Readme.txt" Delete "$INSTDIR\share\tiemu\skins\ti92_fr.map" Delete "$INSTDIR\share\tiemu\skins\ti92.map" Delete "$INSTDIR\share\tiemu\skins\ti89_fr.map" Delete "$INSTDIR\share\tiemu\skins\ti89.map" Delete "$INSTDIR\share\tiemu\skins\v200plt.skn" Delete "$INSTDIR\share\tiemu\skins\ti92.skn" Delete "$INSTDIR\share\tiemu\skins\ti89t.skn" Delete "$INSTDIR\share\tiemu\skins\ti89.skn" Delete "$INSTDIR\share\tiemu\skins\ipaq_v200plt.skn" Delete "$INSTDIR\share\tiemu\skins\ipaq_92.skn" Delete "$INSTDIR\share\tiemu\skins\ipaq_89.skn" Delete "$INSTDIR\share\tiemu\pixmaps\void.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\run_2.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\run_1.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\romdump.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\romdump.ico" Delete "$INSTDIR\share\tiemu\pixmaps\logo.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\icon.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\bkpt.xpm" Delete "$INSTDIR\share\tiemu\misc\romcalls.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_v200_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti92p_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti92p_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti92_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti89t_hw4.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti89t_hw3.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti89_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti89_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_v200_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti92p_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti92p_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti92_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti89t_hw4.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti89t_hw3.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti89_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti89_hw1.txt" Delete "$INSTDIR\share\tiemu\pedrom\pedrom.txt" Delete "$INSTDIR\share\tiemu\pedrom\pedromv2.tib" Delete "$INSTDIR\share\tiemu\pedrom\pedrom9x.tib" Delete "$INSTDIR\share\tiemu\pedrom\pedrom89ti.tib" Delete "$INSTDIR\share\tiemu\pedrom\pedrom89.tib" Delete "$INSTDIR\share\tiemu\help\tiemu.jpg" Delete "$INSTDIR\share\tiemu\help\skinedit.jpg" Delete "$INSTDIR\share\tiemu\help\wizard.png" Delete "$INSTDIR\share\tiemu\help\screenshot.png" Delete "$INSTDIR\share\tiemu\help\romversion.png" Delete "$INSTDIR\share\tiemu\help\popup_menu.png" Delete "$INSTDIR\share\tiemu\help\no_skin.png" Delete "$INSTDIR\share\tiemu\help\logo_tiemu.png" Delete "$INSTDIR\share\tiemu\help\logo_lpg.png" Delete "$INSTDIR\share\tiemu\help\log_link.png" Delete "$INSTDIR\share\tiemu\help\linkport.png" Delete "$INSTDIR\share\tiemu\help\dbg_stack.png" Delete "$INSTDIR\share\tiemu\help\dbg_sr.png" Delete "$INSTDIR\share\tiemu\help\dbg_source.png" Delete "$INSTDIR\share\tiemu\help\dbg_search.png" Delete "$INSTDIR\share\tiemu\help\dbg_registers.png" Delete "$INSTDIR\share\tiemu\help\dbg_mem.png" Delete "$INSTDIR\share\tiemu\help\dbg_heap.png" Delete "$INSTDIR\share\tiemu\help\dbg_bkpts.png" Delete "$INSTDIR\share\tiemu\help\calc_infos.png" Delete "$INSTDIR\share\tiemu\help\chapter22.html" Delete "$INSTDIR\share\tiemu\help\chapter21.html" Delete "$INSTDIR\share\tiemu\help\chapter20.html" Delete "$INSTDIR\share\tiemu\help\chapter11.html" Delete "$INSTDIR\share\tiemu\help\chapter10.html" Delete "$INSTDIR\share\tiemu\help\chapter09.html" Delete "$INSTDIR\share\tiemu\help\chapter08.html" Delete "$INSTDIR\share\tiemu\help\chapter07.html" Delete "$INSTDIR\share\tiemu\help\chapter06.html" Delete "$INSTDIR\share\tiemu\help\chapter05.html" Delete "$INSTDIR\share\tiemu\help\chapter04.html" Delete "$INSTDIR\share\tiemu\help\chapter03.html" Delete "$INSTDIR\share\tiemu\help\chapter02.html" Delete "$INSTDIR\share\tiemu\help\chapter01.html" Delete "$INSTDIR\share\tiemu\help\Manual_en.html" Delete "$INSTDIR\share\tiemu\help\FAQ.html" Delete "$INSTDIR\share\tiemu\glade\wizard-2.glade" Delete "$INSTDIR\share\tiemu\glade\scroptions-2.glade" Delete "$INSTDIR\share\tiemu\glade\romversion-2.glade" Delete "$INSTDIR\share\tiemu\glade\release-2.glade" Delete "$INSTDIR\share\tiemu\glade\quicksend-2.glade" Delete "$INSTDIR\share\tiemu\glade\popup-2.glade" Delete "$INSTDIR\share\tiemu\glade\pbars-2.glade" Delete "$INSTDIR\share\tiemu\glade\manpage-2.glade" Delete "$INSTDIR\share\tiemu\glade\log_link-2.glade" Delete "$INSTDIR\share\tiemu\glade\infos-2.glade" Delete "$INSTDIR\share\tiemu\glade\dboxes-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_vectors-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_stack-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_regs-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_pclog-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_mem-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_ioports-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_heap-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_entry-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_dock-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_data-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_code-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_cause-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_bkpts-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_bits-2.glade" Delete "$INSTDIR\share\tiemu\glade\device-2.glade" Delete "$INSTDIR\share\tiemu\glade\calc-2.glade" Delete "$INSTDIR\include\itkDecls.h" Delete "$INSTDIR\include\itk.h" Delete "$INSTDIR\include\itclIntDecls.h" Delete "$INSTDIR\include\itclInt.h" Delete "$INSTDIR\include\itclDecls.h" Delete "$INSTDIR\include\itcl.h" Delete "$INSTDIR\include\tkDecls.h" Delete "$INSTDIR\include\tkIntXlibDecls.h" Delete "$INSTDIR\include\tkPlatDecls.h" Delete "$INSTDIR\include\tk.h" Delete "$INSTDIR\include\X11\keysymdef.h" Delete "$INSTDIR\include\X11\keysym.h" Delete "$INSTDIR\include\X11\cursorfont.h" Delete "$INSTDIR\include\X11\Xutil.h" Delete "$INSTDIR\include\X11\Xlib.h" Delete "$INSTDIR\include\X11\Xfuncproto.h" Delete "$INSTDIR\include\X11\Xatom.h" Delete "$INSTDIR\include\X11\X.h" Delete "$INSTDIR\include\tclPlatDecls.h" Delete "$INSTDIR\include\tclDecls.h" Delete "$INSTDIR\include\tcl.h" Delete "$INSTDIR\include\tilp2\ticonv.h" Delete "$INSTDIR\include\tilp2\charset.h" Delete "$INSTDIR\include\tilp2\ticalcs.h" Delete "$INSTDIR\include\tilp2\keys92p.h" Delete "$INSTDIR\include\tilp2\keys89.h" Delete "$INSTDIR\include\tilp2\keys83p.h" Delete "$INSTDIR\include\tilp2\keys73.h" Delete "$INSTDIR\include\tilp2\typesxx.h" Delete "$INSTDIR\include\tilp2\typesnsp.h" Delete "$INSTDIR\include\tilp2\typesv2.h" Delete "$INSTDIR\include\tilp2\types92p.h" Delete "$INSTDIR\include\tilp2\types92.h" Delete "$INSTDIR\include\tilp2\types89t.h" Delete "$INSTDIR\include\tilp2\types89.h" Delete "$INSTDIR\include\tilp2\types86.h" Delete "$INSTDIR\include\tilp2\types85.h" Delete "$INSTDIR\include\tilp2\types84p.h" Delete "$INSTDIR\include\tilp2\types83p.h" Delete "$INSTDIR\include\tilp2\types83.h" Delete "$INSTDIR\include\tilp2\types82.h" Delete "$INSTDIR\include\tilp2\types73.h" Delete "$INSTDIR\include\tilp2\tifiles.h" Delete "$INSTDIR\include\tilp2\stdints4.h" Delete "$INSTDIR\include\tilp2\stdints3.h" Delete "$INSTDIR\include\tilp2\stdints2.h" Delete "$INSTDIR\include\tilp2\stdints1.h" Delete "$INSTDIR\include\tilp2\files9x.h" Delete "$INSTDIR\include\tilp2\files8x.h" Delete "$INSTDIR\include\tilp2\timeout.h" Delete "$INSTDIR\include\tilp2\ticables.h" Delete "$INSTDIR\include\tilp2\export4.h" Delete "$INSTDIR\include\tilp2\export3.h" Delete "$INSTDIR\include\tilp2\export2.h" Delete "$INSTDIR\include\tilp2\export1.h" Delete "$INSTDIR\bin\itk32.dll" Delete "$INSTDIR\bin\itcl32.dll" Delete "$INSTDIR\bin\wish84.exe" Delete "$INSTDIR\bin\tk84.dll" Delete "$INSTDIR\bin\tclpip84.dll" Delete "$INSTDIR\bin\tclsh84.exe" Delete "$INSTDIR\bin\tcl84.dll" Delete "$INSTDIR\bin\tiemups.dll" Delete "$INSTDIR\bin\tiemu.tlb" Delete "$INSTDIR\bin\tiemu.exe" Delete "$INSTDIR\bin\libusb0.dll" Delete "$INSTDIR\bin\libticonv-3.dll" Delete "$INSTDIR\bin\libticalcs2-7.dll" Delete "$INSTDIR\bin\libtifiles2-5.dll" Delete "$INSTDIR\bin\libticables2-1.dll" Delete "$INSTDIR\lib\libitkstub32.a" Delete "$INSTDIR\lib\itk3.2\pkgIndex.tcl" Delete "$INSTDIR\lib\libitclstub32.a" Delete "$INSTDIR\lib\itcl3.2\pkgIndex.tcl" Delete "$INSTDIR\lib\libtkstub84.a" Delete "$INSTDIR\lib\libtk84.a" Delete "$INSTDIR\lib\tkConfig.sh" Delete "$INSTDIR\lib\tk8.4\pkgIndex.tcl" Delete "$INSTDIR\lib\libtclstub84.a" Delete "$INSTDIR\lib\libtcl84.a" Delete "$INSTDIR\lib\tclConfig.sh" Delete "$INSTDIR\lib\reg1.1\pkgIndex.tcl" Delete "$INSTDIR\lib\reg1.1\tclreg11.dll" Delete "$INSTDIR\lib\dde1.2\pkgIndex.tcl" Delete "$INSTDIR\lib\dde1.2\tcldde12.dll" Delete "$INSTDIR\lib\libticonv.la" Delete "$INSTDIR\lib\libticonv.dll.a" Delete "$INSTDIR\lib\libticalcs2.la" Delete "$INSTDIR\lib\libticalcs2.dll.a" Delete "$INSTDIR\lib\libtifiles2.la" Delete "$INSTDIR\lib\libtifiles2.dll.a" Delete "$INSTDIR\lib\pkgconfig\ticonv.pc" Delete "$INSTDIR\lib\pkgconfig\ticalcs2.pc" Delete "$INSTDIR\lib\pkgconfig\tifiles2.pc" Delete "$INSTDIR\lib\pkgconfig\ticables2.pc" Delete "$INSTDIR\lib\libticables2.la" Delete "$INSTDIR\lib\libticables2.dll.a" Delete "$SMPROGRAMS\$ICONS_GROUP\Readme.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" Delete "$DESKTOP\TiEmu.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\TiEmu.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP" RMDir "$INSTDIR\share\tk8.4\msgs" RMDir "$INSTDIR\share\tk8.4\images" RMDir "$INSTDIR\share\tk8.4\demos\images" RMDir "$INSTDIR\share\tk8.4\demos" RMDir "$INSTDIR\share\tk8.4" RMDir "$INSTDIR\share\tiemu\skins" RMDir "$INSTDIR\share\tiemu\pixmaps" RMDir "$INSTDIR\share\tiemu\pedrom" RMDir "$INSTDIR\share\tiemu\misc" RMDir "$INSTDIR\share\tiemu\help" RMDir "$INSTDIR\share\tiemu\glade" RMDir "$INSTDIR\share\tiemu\images" RMDir "$INSTDIR\share\tiemu" RMDir "$INSTDIR\share\tcl8.4\tcltest2.2" RMDir "$INSTDIR\share\tcl8.4\opt0.4" RMDir "$INSTDIR\share\tcl8.4\msgcat1.3" RMDir "$INSTDIR\share\tcl8.4\http2.4" RMDir "$INSTDIR\share\tcl8.4\http1.0" RMDir "$INSTDIR\share\tcl8.4\encoding" RMDir "$INSTDIR\share\tcl8.4" RMDir "$INSTDIR\share\redhat\gui" RMDir "$INSTDIR\share\redhat" RMDir "$INSTDIR\share\iwidgets4.0.1\scripts" RMDir "$INSTDIR\share\iwidgets4.0.1\demos\images" RMDir "$INSTDIR\share\iwidgets4.0.1\demos\html" RMDir "$INSTDIR\share\iwidgets4.0.1\demos" RMDir "$INSTDIR\share\iwidgets4.0.1" RMDir "$INSTDIR\share\itk3.2" RMDir "$INSTDIR\share\itcl3.2" RMDir "$INSTDIR\share\insight1.0\images2" RMDir "$INSTDIR\share\insight1.0\images" RMDir "$INSTDIR\share\insight1.0\help\trace" RMDir "$INSTDIR\share\insight1.0\help\images" RMDir "$INSTDIR\share\insight1.0\help" RMDir "$INSTDIR\share\insight1.0" RMDir "$INSTDIR\share\man\man1" RMDir "$INSTDIR\share\man" RMDir "$INSTDIR\share" RMDir "$INSTDIR\man\mann" RMDir "$INSTDIR\man" RMDir "$INSTDIR\lib\tk8.4" RMDir "$INSTDIR\lib\reg1.1" RMDir "$INSTDIR\lib\pkgconfig" RMDir "$INSTDIR\lib\itk3.2" RMDir "$INSTDIR\lib\itcl3.2" RMDir "$INSTDIR\lib\dde1.2" RMDir "$INSTDIR\lib" RMDir "$INSTDIR\include\X11" RMDir "$INSTDIR\include\tilp2" RMDir "$INSTDIR\include" RMDir "$INSTDIR\bin" RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true SectionEnd tiemu-3.03-nogdb+dfsg/build/nsis/tiemu.nsi000066400000000000000000003706001220314353500205050ustar00rootroot00000000000000; Script generated by the HM NIS Edit Script Wizard. ; Other definitions !define UPXDIR "E:\UPX" !define GTK_MIN_VER "2.6.10" !define GTK_PKG_VER "-rc1" ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "TiEmu" !define PRODUCT_VERSION "3.02a" !define PRODUCT_PUBLISHER "The TiEmu Team" !define PRODUCT_WEB_SITE "http://lpg.ticalc.org/prj_tiemu/index.html" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\tiemu.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" SetCompressor /SOLID lzma !packhdr tmpexe.tmp "${UPXDIR}\upx.exe --best -q tmpexe.tmp" ; MUI 1.67 compatible ------ !include "MUI.nsh" ; Version comparisons !include "vercmp.nsi" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; License page !insertmacro MUI_PAGE_LICENSE "..\..\COPYING" ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Start menu page var ICONS_GROUP !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_DEFAULTFOLDER "TiEmu" !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page !define MUI_FINISHPAGE_RUN "$INSTDIR\bin\tiemu.exe" !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\share\tiemu\Readme.txt" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "English" ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "Setup.exe" InstallDir "$PROGRAMFILES\TiEmu" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show Function .onInit ; Check if GTK+ is installed ReadRegStr $0 HKLM "Software\GTK\2.0" "Path" StrCmp $0 "" 0 gtkfound ReadRegStr $0 HKCU "Software\GTK\2.0" "Path" StrCmp $0 "" 0 gtkfound MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'GTK+ not found. Please install the "GTK+ 2.6.x Runtime Environment" (${GTK_MIN_VER} or higher). If you proceed, the setup program will be downloaded and launched automatically.' IDOK installgtk IDCANCEL abortinstall gtkfound: ReadRegStr $0 HKLM "Software\GTK\2.0" "Version" StrCmp $0 "" 0 gtkverfound ReadRegStr $0 HKCU "Software\GTK\2.0" "Version" StrCmp $0 "" gtkvernotok gtkverfound: Push "${GTK_MIN_VER}" Push $0 Call CompareVersions Pop $0 IntCmp $0 1 gtkverok gtkvernotok: MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'Wrong GTK+ package version. You need at least version ${GTK_MIN_VER}. If you proceed, the setup program will be downloaded and launched automatically.' IDCANCEL abortinstall installgtk: ; Connect to the Internet ClearErrors Dialer::AttemptConnect IfErrors gtkinstallfailed Pop $0 StrCmp $0 "online" 0 gtkinstallfailed ; Fetch installer ; Do the download quietly because the GUI isn't even loaded at that point, and because I can't get ; the progress meters to work with the "Modern UI" anyway. NSISdl::download_quiet "http://kent.dl.sourceforge.net/gladewin32/gtk-win32-${GTK_MIN_VER}${GTK_PKG_VER}.exe" "$TEMP\gtksetup.exe" Pop $0 StrCmp $0 "cancel" abortinstall StrCmp $0 "success" 0 gtkinstallfailed ; Run the installer ExecWait '"$TEMP\gtksetup.exe"' $0 Delete "$TEMP\gtksetup.exe" ; The GTK+ installer is a NSIS installer as well. Errorlevel 1 means canceled by the user. IntCmp $0 1 abortinstall IntCmp $0 0 0 gtkinstallfailed gtkinstallfailed ; Check again if GTK+ is installed ReadRegStr $0 HKLM "Software\GTK\2.0" "Path" StrCmp $0 "" 0 gtkverok ReadRegStr $0 HKCU "Software\GTK\2.0" "Path" StrCmp $0 "" 0 gtkverok gtkinstallfailed: MessageBox MB_OK|MB_ICONSTOP "GTK+ installation failed." abortinstall: Abort gtkverok: ; Check if libxml is present ReadRegStr $0 HKLM "Software\GTK\2.0" "DllPath" StrCmp $0 "" 0 gtkdllpathok ReadRegStr $0 HKCU "Software\GTK\2.0" "DllPath" StrCmp $0 "" 0 gtkdllpathok MessageBox MB_OK|MB_ICONSTOP "Invalid GTK+ installation (cannot locate GTK+ DLL path)." Abort gtkdllpathok: IfFileExists "$0\libxml2.dll" libxmlfound 0 MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'Incomplete GTK+ installation: libxml2.dll not found. If you proceed, libxml2-2.6.27.zip will be downloaded and unpacked automatically.' IDOK 0 IDCANCEL abortinstall ; Connect to the Internet ClearErrors Dialer::AttemptConnect IfErrors gtkinstallfailed Pop $1 StrCmp $1 "online" 0 gtkinstallfailed ; Fetch and extract ZIP NSISdl::download_quiet "http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libxml2-2.6.27.zip" "$TEMP\libxml2-2.6.27.zip" Pop $1 StrCmp $1 "cancel" abortinstall StrCmp $1 "success" 0 gtkinstallfailed nsisunz::UnzipToStack /noextractpath /file "bin/libxml2.dll" "$TEMP\libxml2-2.6.27.zip" $0 Pop $1 Delete "$TEMP\libxml2-2.6.27.zip" StrCmp $1 "success" 0 gtkinstallfailed libxmlfound: ; Check if libglade is present IfFileExists "$0\libglade-2.0-0.dll" libgladefound 0 ; Check GTK+ version to get a matching libglade ReadRegStr $1 HKLM "Software\GTK\2.0" "Version" StrCmp $1 "" 0 gtkverfound2 ReadRegStr $1 HKCU "Software\GTK\2.0" "Version" StrCmp $1 "" 0 gtkverfound2 MessageBox MB_OK|MB_ICONSTOP "Invalid GTK+ installation (cannot check version)." Abort gtkverfound2: Push "2.8.0" Push $1 Call CompareVersions Pop $1 IntCmp $1 1 gtkis28 MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'Incomplete GTK+ installation: libglade-2.0-0.dll not found. If you proceed, libglade-2.4.0-bin.zip will be downloaded and unpacked automatically.' IDOK 0 IDCANCEL abortinstall StrCpy $2 "http://kent.dl.sourceforge.net/gladewin32/libglade-2.4.0-bin.zip" Goto gtkis26 gtkis28: MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION 'Incomplete GTK+ installation: libglade-2.0-0.dll not found. If you proceed, libglade-2.6.0.zip will be downloaded and unpacked automatically.' IDOK 0 IDCANCEL abortinstall StrCpy $2 "http://ftp.gnome.org/pub/gnome/binaries/win32/libglade/2.6/libglade-2.6.0.zip" gtkis26: ; Connect to the Internet ClearErrors Dialer::AttemptConnect IfErrors gtkinstallfailed Pop $1 StrCmp $1 "online" 0 gtkinstallfailed ; Fetch and extract ZIP NSISdl::download_quiet $2 "$TEMP\libglade-bin.zip" Pop $1 StrCmp $1 "cancel" abortinstall StrCmp $1 "success" 0 gtkinstallfailed nsisunz::UnzipToStack /noextractpath /file "bin/libglade-2.0-0.dll" "$TEMP\libglade-bin.zip" $0 Pop $1 Delete "$TEMP\libglade-bin.zip" StrCmp $1 "success" 0 gtkinstallfailed libgladefound: ; If $INSTDIR points to a Bin\ directory, fix it to point to the root of the tree. StrLen $0 $INSTDIR IntCmp $0 4 notbin notbin IntOp $0 $0 - 4 StrCpy $1 $INSTDIR "" $0 StrCmp $1 "\bin" 0 notbin StrCpy $INSTDIR $INSTDIR $0 notbin: FunctionEnd Section "MainSection" SEC01 ; Delete obsolete files Delete "$INSTDIR\share\tiemu\skins\emuti92plus.skn" Delete "$INSTDIR\share\tiemu\skins\emuti89.skn" Delete "$INSTDIR\share\tiemu\glade\comm-2.gladep" Delete "$INSTDIR\share\tiemu\glade\comm-2.glade" Delete "$INSTDIR\include\tilp\update.h" Delete "$INSTDIR\include\tilp\tnode.h" Delete "$INSTDIR\include\tilp\tikeys.h" Delete "$INSTDIR\include\tilp\ticalcs.h" Delete "$INSTDIR\include\tilp\pause.h" Delete "$INSTDIR\include\tilp\keys92p.h" Delete "$INSTDIR\include\tilp\keys89.h" Delete "$INSTDIR\include\tilp\keys83p.h" Delete "$INSTDIR\include\tilp\keys73.h" Delete "$INSTDIR\include\tilp\headers.h" Delete "$INSTDIR\include\tilp\calc_ver.h" Delete "$INSTDIR\include\tilp\calc_int.h" Delete "$INSTDIR\include\tilp\calc_err.h" Delete "$INSTDIR\include\tilp\calc_def.h" Delete "$INSTDIR\include\tilp\typesxx.h" Delete "$INSTDIR\include\tilp\typesv2.h" Delete "$INSTDIR\include\tilp\types92p.h" Delete "$INSTDIR\include\tilp\types92.h" Delete "$INSTDIR\include\tilp\types89.h" Delete "$INSTDIR\include\tilp\types86.h" Delete "$INSTDIR\include\tilp\types85.h" Delete "$INSTDIR\include\tilp\types83p.h" Delete "$INSTDIR\include\tilp\types83.h" Delete "$INSTDIR\include\tilp\types82.h" Delete "$INSTDIR\include\tilp\types73.h" Delete "$INSTDIR\include\tilp\tifiles.h" Delete "$INSTDIR\include\tilp\stdints.h" Delete "$INSTDIR\include\tilp\macros.h" Delete "$INSTDIR\include\tilp\grp_ops.h" Delete "$INSTDIR\include\tilp\filesxx.h" Delete "$INSTDIR\include\tilp\files9x.h" Delete "$INSTDIR\include\tilp\files8x.h" Delete "$INSTDIR\include\tilp\file_ver.h" Delete "$INSTDIR\include\tilp\file_int.h" Delete "$INSTDIR\include\tilp\file_err.h" Delete "$INSTDIR\include\tilp\file_def.h" Delete "$INSTDIR\include\tilp\timeout.h" Delete "$INSTDIR\include\tilp\ticables.h" Delete "$INSTDIR\include\tilp\export.h" Delete "$INSTDIR\include\tilp\cabl_ver.h" Delete "$INSTDIR\include\tilp\cabl_int.h" Delete "$INSTDIR\include\tilp\cabl_err.h" Delete "$INSTDIR\include\tilp\cabl_def.h" RMDir "$INSTDIR\include\tilp" Delete "$INSTDIR\bin\libticalcs-4.dll" Delete "$INSTDIR\bin\libtifiles-0.dll" Delete "$INSTDIR\bin\libticables-3.dll" Delete "$INSTDIR\lib\libticalcs.la" Delete "$INSTDIR\lib\libticalcs.dll.a" Delete "$INSTDIR\lib\libtifiles.la" Delete "$INSTDIR\lib\libtifiles.dll.a" Delete "$INSTDIR\lib\pkgconfig\ticalcs.pc" Delete "$INSTDIR\lib\pkgconfig\tifiles.pc" Delete "$INSTDIR\lib\pkgconfig\ticables.pc" Delete "$INSTDIR\lib\libticables.la" Delete "$INSTDIR\lib\libticables.dll.a" Delete "$INSTDIR\bin\libticables2-0.dll" Delete "$INSTDIR\bin\libticalcs2-0.dll" Delete "$INSTDIR\bin\libticalcs2-1.dll" Delete "$INSTDIR\bin\libticalcs2-2.dll" Delete "$INSTDIR\bin\libticalcs2-6.dll" Delete "$INSTDIR\bin\libticonv-0.dll" Delete "$INSTDIR\bin\libticonv-1.dll" Delete "$INSTDIR\bin\libticonv-2.dll" Delete "$INSTDIR\bin\libtifiles2-0.dll" Delete "$INSTDIR\bin\libtifiles2-1.dll" Delete "$INSTDIR\bin\libtifiles2-2.dll" Delete "$INSTDIR\bin\libtifiles2-3.dll" Delete "$INSTDIR\bin\libtifiles2-4.dll" Delete "$INSTDIR\include\tilp2\stdints.h" Delete "$INSTDIR\include\tilp2\macros.h" Delete "$INSTDIR\include\tilp2\tnode.h" Delete "$INSTDIR\man\man1\tiemu.1" RMDir "$INSTDIR\man\man1" Delete "$INSTDIR\share\tiemu\glade\about-2.gladep" Delete "$INSTDIR\share\tiemu\glade\calc-2.gladep" Delete "$INSTDIR\share\tiemu\glade\device-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_bkpts-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_cause-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_code-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_data-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_entry-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_heap-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_ioports-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_mem-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_pclog-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_regs-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_stack-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dbg_vectors-2.gladep" Delete "$INSTDIR\share\tiemu\glade\dboxes-2.gladep" Delete "$INSTDIR\share\tiemu\glade\infos-2.gladep" Delete "$INSTDIR\share\tiemu\glade\manpage-2.gladep" Delete "$INSTDIR\share\tiemu\glade\pbars-2.gladep" Delete "$INSTDIR\share\tiemu\glade\popup-2.gladep" Delete "$INSTDIR\share\tiemu\glade\quicksend-2.gladep" Delete "$INSTDIR\share\tiemu\glade\release-2.gladep" Delete "$INSTDIR\share\tiemu\glade\romversion-2.gladep" Delete "$INSTDIR\share\tiemu\glade\scroptions-2.gladep" Delete "$INSTDIR\share\tiemu\glade\wizard-2.gladep" Delete "$INSTDIR\share\tiemu\glade\about-2.glade" Delete "$INSTDIR\share\tiemu\pixmaps\bkpt_tmp.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\run.xpm" ; Install files SetOutPath "$INSTDIR\lib" File "..\..\..\..\TiEmu\lib\libticables2.dll.a" File "..\..\..\..\TiEmu\lib\libticables2.la" SetOutPath "$INSTDIR\lib\pkgconfig" File "..\..\..\..\TiEmu\lib\pkgconfig\ticables2.pc" File "..\..\..\..\TiEmu\lib\pkgconfig\tifiles2.pc" File "..\..\..\..\TiEmu\lib\pkgconfig\ticalcs2.pc" File "..\..\..\..\TiEmu\lib\pkgconfig\ticonv.pc" SetOutPath "$INSTDIR\lib" File "..\..\..\..\TiEmu\lib\libtifiles2.dll.a" File "..\..\..\..\TiEmu\lib\libtifiles2.la" File "..\..\..\..\TiEmu\lib\libticalcs2.dll.a" File "..\..\..\..\TiEmu\lib\libticalcs2.la" File "..\..\..\..\TiEmu\lib\libticonv.dll.a" File "..\..\..\..\TiEmu\lib\libticonv.la" SetOutPath "$INSTDIR\lib\dde1.2" File "..\..\..\..\TiEmu\lib\dde1.2\tcldde12.dll" File "..\..\..\..\TiEmu\lib\dde1.2\pkgIndex.tcl" SetOutPath "$INSTDIR\lib\reg1.1" File "..\..\..\..\TiEmu\lib\reg1.1\tclreg11.dll" File "..\..\..\..\TiEmu\lib\reg1.1\pkgIndex.tcl" SetOutPath "$INSTDIR\lib" File "..\..\..\..\TiEmu\lib\tclConfig.sh" File "..\..\..\..\TiEmu\lib\libtcl84.a" File "..\..\..\..\TiEmu\lib\libtclstub84.a" SetOutPath "$INSTDIR\lib\tk8.4" File "..\..\..\..\TiEmu\lib\tk8.4\pkgIndex.tcl" SetOutPath "$INSTDIR\lib" File "..\..\..\..\TiEmu\lib\tkConfig.sh" File "..\..\..\..\TiEmu\lib\libtk84.a" File "..\..\..\..\TiEmu\lib\libtkstub84.a" SetOutPath "$INSTDIR\lib\itcl3.2" File "..\..\..\..\TiEmu\lib\itcl3.2\pkgIndex.tcl" SetOutPath "$INSTDIR\lib" File "..\..\..\..\TiEmu\lib\libitclstub32.a" SetOutPath "$INSTDIR\lib\itk3.2" File "..\..\..\..\TiEmu\lib\itk3.2\pkgIndex.tcl" SetOutPath "$INSTDIR\lib" File "..\..\..\..\TiEmu\lib\libitkstub32.a" SetOutPath "$INSTDIR\bin" File "..\..\..\..\TiEmu\bin\libticables2-1.dll" File "..\..\..\..\TiEmu\bin\libtifiles2-5.dll" File "..\..\..\..\TiEmu\bin\libticalcs2-7.dll" File "..\..\..\..\TiEmu\bin\libticonv-3.dll" File "..\..\..\..\TiEmu\bin\libusb0.dll" File "..\..\..\..\TiEmu\bin\tiemu.exe" File "..\..\..\..\TiEmu\bin\tiemu.tlb" File "..\..\..\..\TiEmu\bin\tiemups.dll" File "..\..\..\..\TiEmu\bin\tcl84.dll" File "..\..\..\..\TiEmu\bin\tclsh84.exe" File "..\..\..\..\TiEmu\bin\tclpip84.dll" File "..\..\..\..\TiEmu\bin\tk84.dll" File "..\..\..\..\TiEmu\bin\wish84.exe" File "..\..\..\..\TiEmu\bin\itcl32.dll" File "..\..\..\..\TiEmu\bin\itk32.dll" SetOutPath "$INSTDIR\include\tilp2" File "..\..\..\..\TiEmu\include\tilp2\export1.h" File "..\..\..\..\TiEmu\include\tilp2\export2.h" File "..\..\..\..\TiEmu\include\tilp2\export3.h" File "..\..\..\..\TiEmu\include\tilp2\export4.h" File "..\..\..\..\TiEmu\include\tilp2\ticables.h" File "..\..\..\..\TiEmu\include\tilp2\timeout.h" File "..\..\..\..\TiEmu\include\tilp2\files8x.h" File "..\..\..\..\TiEmu\include\tilp2\files9x.h" File "..\..\..\..\TiEmu\include\tilp2\stdints1.h" File "..\..\..\..\TiEmu\include\tilp2\stdints2.h" File "..\..\..\..\TiEmu\include\tilp2\stdints3.h" File "..\..\..\..\TiEmu\include\tilp2\stdints4.h" File "..\..\..\..\TiEmu\include\tilp2\tifiles.h" File "..\..\..\..\TiEmu\include\tilp2\types73.h" File "..\..\..\..\TiEmu\include\tilp2\types82.h" File "..\..\..\..\TiEmu\include\tilp2\types83.h" File "..\..\..\..\TiEmu\include\tilp2\types83p.h" File "..\..\..\..\TiEmu\include\tilp2\types84p.h" File "..\..\..\..\TiEmu\include\tilp2\types85.h" File "..\..\..\..\TiEmu\include\tilp2\types86.h" File "..\..\..\..\TiEmu\include\tilp2\types89.h" File "..\..\..\..\TiEmu\include\tilp2\types89t.h" File "..\..\..\..\TiEmu\include\tilp2\types92.h" File "..\..\..\..\TiEmu\include\tilp2\types92p.h" File "..\..\..\..\TiEmu\include\tilp2\typesv2.h" File "..\..\..\..\TiEmu\include\tilp2\typesnsp.h" File "..\..\..\..\TiEmu\include\tilp2\typesxx.h" File "..\..\..\..\TiEmu\include\tilp2\keys73.h" File "..\..\..\..\TiEmu\include\tilp2\keys83p.h" File "..\..\..\..\TiEmu\include\tilp2\keys89.h" File "..\..\..\..\TiEmu\include\tilp2\keys92p.h" File "..\..\..\..\TiEmu\include\tilp2\ticalcs.h" File "..\..\..\..\TiEmu\include\tilp2\charset.h" File "..\..\..\..\TiEmu\include\tilp2\ticonv.h" SetOutPath "$INSTDIR\include" File "..\..\..\..\TiEmu\include\tcl.h" File "..\..\..\..\TiEmu\include\tclDecls.h" File "..\..\..\..\TiEmu\include\tclPlatDecls.h" SetOutPath "$INSTDIR\include\X11" File "..\..\..\..\TiEmu\include\X11\X.h" File "..\..\..\..\TiEmu\include\X11\Xatom.h" File "..\..\..\..\TiEmu\include\X11\Xfuncproto.h" File "..\..\..\..\TiEmu\include\X11\Xlib.h" File "..\..\..\..\TiEmu\include\X11\Xutil.h" File "..\..\..\..\TiEmu\include\X11\cursorfont.h" File "..\..\..\..\TiEmu\include\X11\keysym.h" File "..\..\..\..\TiEmu\include\X11\keysymdef.h" SetOutPath "$INSTDIR\include" File "..\..\..\..\TiEmu\include\tk.h" File "..\..\..\..\TiEmu\include\tkPlatDecls.h" File "..\..\..\..\TiEmu\include\tkIntXlibDecls.h" File "..\..\..\..\TiEmu\include\tkDecls.h" File "..\..\..\..\TiEmu\include\itcl.h" File "..\..\..\..\TiEmu\include\itclDecls.h" File "..\..\..\..\TiEmu\include\itclInt.h" File "..\..\..\..\TiEmu\include\itclIntDecls.h" File "..\..\..\..\TiEmu\include\itk.h" File "..\..\..\..\TiEmu\include\itkDecls.h" SetOutPath "$INSTDIR\share\tiemu\glade" File "..\..\..\..\TiEmu\share\tiemu\glade\calc-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\device-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_bits-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_bkpts-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_cause-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_code-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_data-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_dock-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_entry-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_heap-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_ioports-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_mem-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_pclog-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_regs-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_stack-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dbg_vectors-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\dboxes-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\infos-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\log_link-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\manpage-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\pbars-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\popup-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\quicksend-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\release-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\romversion-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\scroptions-2.glade" File "..\..\..\..\TiEmu\share\tiemu\glade\wizard-2.glade" SetOutPath "$INSTDIR\share\tiemu\help" File "..\..\..\..\TiEmu\share\tiemu\help\FAQ.html" File "..\..\..\..\TiEmu\share\tiemu\help\Manual_en.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter01.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter02.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter03.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter04.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter05.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter06.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter07.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter08.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter09.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter10.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter11.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter20.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter21.html" File "..\..\..\..\TiEmu\share\tiemu\help\chapter22.html" File "..\..\..\..\TiEmu\share\tiemu\help\calc_infos.png" File "..\..\..\..\TiEmu\share\tiemu\help\dbg_bkpts.png" File "..\..\..\..\TiEmu\share\tiemu\help\dbg_heap.png" File "..\..\..\..\TiEmu\share\tiemu\help\dbg_mem.png" File "..\..\..\..\TiEmu\share\tiemu\help\dbg_registers.png" File "..\..\..\..\TiEmu\share\tiemu\help\dbg_search.png" File "..\..\..\..\TiEmu\share\tiemu\help\dbg_source.png" File "..\..\..\..\TiEmu\share\tiemu\help\dbg_sr.png" File "..\..\..\..\TiEmu\share\tiemu\help\dbg_stack.png" File "..\..\..\..\TiEmu\share\tiemu\help\linkport.png" File "..\..\..\..\TiEmu\share\tiemu\help\log_link.png" File "..\..\..\..\TiEmu\share\tiemu\help\logo_lpg.png" File "..\..\..\..\TiEmu\share\tiemu\help\logo_tiemu.png" File "..\..\..\..\TiEmu\share\tiemu\help\no_skin.png" File "..\..\..\..\TiEmu\share\tiemu\help\popup_menu.png" File "..\..\..\..\TiEmu\share\tiemu\help\romversion.png" File "..\..\..\..\TiEmu\share\tiemu\help\screenshot.png" File "..\..\..\..\TiEmu\share\tiemu\help\wizard.png" File "..\..\..\..\TiEmu\share\tiemu\help\skinedit.jpg" File "..\..\..\..\TiEmu\share\tiemu\help\tiemu.jpg" SetOutPath "$INSTDIR\share\tiemu\pedrom" File "..\..\..\..\TiEmu\share\tiemu\pedrom\pedrom89.tib" File "..\..\..\..\TiEmu\share\tiemu\pedrom\pedrom89ti.tib" File "..\..\..\..\TiEmu\share\tiemu\pedrom\pedrom9x.tib" File "..\..\..\..\TiEmu\share\tiemu\pedrom\pedromv2.tib" File "..\..\..\..\TiEmu\share\tiemu\pedrom\pedrom.txt" SetOutPath "$INSTDIR\share\tiemu\misc" File "..\..\..\..\TiEmu\share\tiemu\misc\iodefs_ti89_hw1.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\iodefs_ti89_hw2.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\iodefs_ti89t_hw3.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\iodefs_ti89t_hw4.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\iodefs_ti92_hw1.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\iodefs_ti92p_hw1.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\iodefs_ti92p_hw2.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\iodefs_v200_hw2.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\memmap_ti89_hw1.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\memmap_ti89_hw2.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\memmap_ti89t_hw3.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\memmap_ti89t_hw4.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\memmap_ti92_hw1.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\memmap_ti92p_hw1.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\memmap_ti92p_hw2.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\memmap_v200_hw2.txt" File "..\..\..\..\TiEmu\share\tiemu\misc\romcalls.txt" SetOutPath "$INSTDIR\share\tiemu\pixmaps" File "..\..\..\..\TiEmu\share\tiemu\pixmaps\bkpt.xpm" File "..\..\..\..\TiEmu\share\tiemu\pixmaps\icon.xpm" File "..\..\..\..\TiEmu\share\tiemu\pixmaps\logo.xpm" File "..\..\..\..\TiEmu\share\tiemu\pixmaps\romdump.ico" File "..\..\..\..\TiEmu\share\tiemu\pixmaps\romdump.xpm" File "..\..\..\..\TiEmu\share\tiemu\pixmaps\run_1.xpm" File "..\..\..\..\TiEmu\share\tiemu\pixmaps\run_2.xpm" File "..\..\..\..\TiEmu\share\tiemu\pixmaps\void.xpm" SetOutPath "$INSTDIR\share\tiemu\skins" File "..\..\..\..\TiEmu\share\tiemu\skins\ipaq_89.skn" File "..\..\..\..\TiEmu\share\tiemu\skins\ipaq_92.skn" File "..\..\..\..\TiEmu\share\tiemu\skins\ipaq_v200plt.skn" File "..\..\..\..\TiEmu\share\tiemu\skins\ti89.skn" File "..\..\..\..\TiEmu\share\tiemu\skins\ti89t.skn" File "..\..\..\..\TiEmu\share\tiemu\skins\ti92.skn" File "..\..\..\..\TiEmu\share\tiemu\skins\v200plt.skn" File "..\..\..\..\TiEmu\share\tiemu\skins\ti89.map" File "..\..\..\..\TiEmu\share\tiemu\skins\ti89_fr.map" File "..\..\..\..\TiEmu\share\tiemu\skins\ti92.map" File "..\..\..\..\TiEmu\share\tiemu\skins\ti92_fr.map" SetOutPath "$INSTDIR\share\tiemu" File "..\..\..\..\TiEmu\share\tiemu\COPYING" File "..\..\..\..\TiEmu\share\tiemu\RELEASE" File "..\..\..\..\TiEmu\share\tiemu\AUTHORS" File "..\..\..\..\TiEmu\share\tiemu\LICENSES" File "..\..\..\..\TiEmu\share\tiemu\Manpage.txt" File "Readme.txt" SetOutPath "$INSTDIR\share\tcl8.4\http1.0" File "..\..\..\..\TiEmu\share\tcl8.4\http1.0\http.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\http1.0\pkgIndex.tcl" SetOutPath "$INSTDIR\share\tcl8.4\http2.4" File "..\..\..\..\TiEmu\share\tcl8.4\http2.4\http.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\http2.4\pkgIndex.tcl" SetOutPath "$INSTDIR\share\tcl8.4\opt0.4" File "..\..\..\..\TiEmu\share\tcl8.4\opt0.4\optparse.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\opt0.4\pkgIndex.tcl" SetOutPath "$INSTDIR\share\tcl8.4\encoding" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\ascii.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\big5.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp1250.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp1251.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp1252.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp1253.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp1254.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp1255.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp1256.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp1257.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp1258.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp437.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp737.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp775.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp850.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp852.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp855.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp857.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp860.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp861.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp862.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp863.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp864.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp865.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp866.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp869.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp874.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp932.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp936.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp949.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\cp950.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\dingbats.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\ebcdic.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\euc-cn.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\euc-jp.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\euc-kr.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\gb12345.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\gb1988.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\gb2312.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso2022-jp.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso2022-kr.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso2022.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-1.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-10.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-13.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-14.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-15.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-16.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-2.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-3.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-4.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-5.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-6.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-7.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-8.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\iso8859-9.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\jis0201.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\jis0208.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\jis0212.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\koi8-r.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\koi8-u.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\ksc5601.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macCentEuro.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macCroatian.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macCyrillic.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macDingbats.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macGreek.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macIceland.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macJapan.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macRoman.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macRomania.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macThai.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macTurkish.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\macUkraine.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\shiftjis.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\symbol.enc" File "..\..\..\..\TiEmu\share\tcl8.4\encoding\tis-620.enc" SetOutPath "$INSTDIR\share\tcl8.4\msgcat1.3" File "..\..\..\..\TiEmu\share\tcl8.4\msgcat1.3\msgcat.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\msgcat1.3\pkgIndex.tcl" SetOutPath "$INSTDIR\share\tcl8.4\tcltest2.2" File "..\..\..\..\TiEmu\share\tcl8.4\tcltest2.2\pkgIndex.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\tcltest2.2\tcltest.tcl" SetOutPath "$INSTDIR\share\tcl8.4" File "..\..\..\..\TiEmu\share\tcl8.4\auto.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\history.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\init.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\ldAout.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\package.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\parray.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\safe.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\word.tcl" File "..\..\..\..\TiEmu\share\tcl8.4\tclIndex" SetOutPath "$INSTDIR\share\tk8.4\images" File "..\..\..\..\TiEmu\share\tk8.4\images\README" File "..\..\..\..\TiEmu\share\tk8.4\images\logo.eps" File "..\..\..\..\TiEmu\share\tk8.4\images\logo100.gif" File "..\..\..\..\TiEmu\share\tk8.4\images\logo64.gif" File "..\..\..\..\TiEmu\share\tk8.4\images\logoLarge.gif" File "..\..\..\..\TiEmu\share\tk8.4\images\logoMed.gif" File "..\..\..\..\TiEmu\share\tk8.4\images\pwrdLogo.eps" File "..\..\..\..\TiEmu\share\tk8.4\images\pwrdLogo100.gif" File "..\..\..\..\TiEmu\share\tk8.4\images\pwrdLogo150.gif" File "..\..\..\..\TiEmu\share\tk8.4\images\pwrdLogo175.gif" File "..\..\..\..\TiEmu\share\tk8.4\images\pwrdLogo200.gif" File "..\..\..\..\TiEmu\share\tk8.4\images\pwrdLogo75.gif" File "..\..\..\..\TiEmu\share\tk8.4\images\tai-ku.gif" SetOutPath "$INSTDIR\share\tk8.4\msgs" File "..\..\..\..\TiEmu\share\tk8.4\msgs\cs.msg" File "..\..\..\..\TiEmu\share\tk8.4\msgs\de.msg" File "..\..\..\..\TiEmu\share\tk8.4\msgs\el.msg" File "..\..\..\..\TiEmu\share\tk8.4\msgs\en.msg" File "..\..\..\..\TiEmu\share\tk8.4\msgs\en_gb.msg" File "..\..\..\..\TiEmu\share\tk8.4\msgs\es.msg" File "..\..\..\..\TiEmu\share\tk8.4\msgs\fr.msg" File "..\..\..\..\TiEmu\share\tk8.4\msgs\it.msg" File "..\..\..\..\TiEmu\share\tk8.4\msgs\nl.msg" File "..\..\..\..\TiEmu\share\tk8.4\msgs\ru.msg" SetOutPath "$INSTDIR\share\tk8.4" File "..\..\..\..\TiEmu\share\tk8.4\bgerror.tcl" File "..\..\..\..\TiEmu\share\tk8.4\button.tcl" File "..\..\..\..\TiEmu\share\tk8.4\choosedir.tcl" File "..\..\..\..\TiEmu\share\tk8.4\clrpick.tcl" File "..\..\..\..\TiEmu\share\tk8.4\comdlg.tcl" File "..\..\..\..\TiEmu\share\tk8.4\console.tcl" File "..\..\..\..\TiEmu\share\tk8.4\dialog.tcl" File "..\..\..\..\TiEmu\share\tk8.4\entry.tcl" File "..\..\..\..\TiEmu\share\tk8.4\focus.tcl" File "..\..\..\..\TiEmu\share\tk8.4\listbox.tcl" File "..\..\..\..\TiEmu\share\tk8.4\menu.tcl" File "..\..\..\..\TiEmu\share\tk8.4\mkpsenc.tcl" File "..\..\..\..\TiEmu\share\tk8.4\msgbox.tcl" File "..\..\..\..\TiEmu\share\tk8.4\obsolete.tcl" File "..\..\..\..\TiEmu\share\tk8.4\optMenu.tcl" File "..\..\..\..\TiEmu\share\tk8.4\palette.tcl" File "..\..\..\..\TiEmu\share\tk8.4\panedwindow.tcl" File "..\..\..\..\TiEmu\share\tk8.4\safetk.tcl" File "..\..\..\..\TiEmu\share\tk8.4\scale.tcl" File "..\..\..\..\TiEmu\share\tk8.4\scrlbar.tcl" File "..\..\..\..\TiEmu\share\tk8.4\spinbox.tcl" File "..\..\..\..\TiEmu\share\tk8.4\tearoff.tcl" File "..\..\..\..\TiEmu\share\tk8.4\text.tcl" File "..\..\..\..\TiEmu\share\tk8.4\tk.tcl" File "..\..\..\..\TiEmu\share\tk8.4\tkfbox.tcl" File "..\..\..\..\TiEmu\share\tk8.4\unsupported.tcl" File "..\..\..\..\TiEmu\share\tk8.4\xmfbox.tcl" File "..\..\..\..\TiEmu\share\tk8.4\prolog.ps" File "..\..\..\..\TiEmu\share\tk8.4\tclIndex" File "..\..\..\..\TiEmu\share\tk8.4\tkAppInit.c" SetOutPath "$INSTDIR\share\tk8.4\demos\images" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\earth.gif" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\earthris.gif" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\face.bmp" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\flagdown.bmp" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\flagup.bmp" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\gray25.bmp" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\letters.bmp" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\noletter.bmp" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\pattern.bmp" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\tcllogo.gif" File "..\..\..\..\TiEmu\share\tk8.4\demos\images\teapot.ppm" SetOutPath "$INSTDIR\share\tk8.4\demos" File "..\..\..\..\TiEmu\share\tk8.4\demos\README" File "..\..\..\..\TiEmu\share\tk8.4\demos\arrow.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\bind.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\bitmap.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\browse" File "..\..\..\..\TiEmu\share\tk8.4\demos\button.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\check.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\clrpick.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\colors.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\cscroll.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\ctext.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\dialog1.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\dialog2.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\entry1.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\entry2.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\entry3.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\filebox.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\floor.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\form.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\hello" File "..\..\..\..\TiEmu\share\tk8.4\demos\hscale.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\icon.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\image1.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\image2.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\items.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\ixset" File "..\..\..\..\TiEmu\share\tk8.4\demos\label.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\labelframe.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\license.terms" File "..\..\..\..\TiEmu\share\tk8.4\demos\menu.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\menubu.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\msgbox.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\paned1.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\paned2.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\plot.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\puzzle.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\radio.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\rmt" File "..\..\..\..\TiEmu\share\tk8.4\demos\rolodex" File "..\..\..\..\TiEmu\share\tk8.4\demos\ruler.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\sayings.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\search.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\spin.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\square" File "..\..\..\..\TiEmu\share\tk8.4\demos\states.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\style.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\tclIndex" File "..\..\..\..\TiEmu\share\tk8.4\demos\tcolor" File "..\..\..\..\TiEmu\share\tk8.4\demos\text.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\timer" File "..\..\..\..\TiEmu\share\tk8.4\demos\twind.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\vscale.tcl" File "..\..\..\..\TiEmu\share\tk8.4\demos\widget" SetOutPath "$INSTDIR\share\itcl3.2" File "..\..\..\..\TiEmu\share\itcl3.2\itcl.tcl" SetOutPath "$INSTDIR\share\itk3.2" File "..\..\..\..\TiEmu\share\itk3.2\Archetype.itk" File "..\..\..\..\TiEmu\share\itk3.2\Toplevel.itk" File "..\..\..\..\TiEmu\share\itk3.2\Widget.itk" File "..\..\..\..\TiEmu\share\itk3.2\itk.tcl" File "..\..\..\..\TiEmu\share\itk3.2\tclIndex" SetOutPath "$INSTDIR\share\iwidgets4.0.1\scripts" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\buttonbox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\calendar.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\canvasprintbox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\canvasprintdialog.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\checkbox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\combobox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\dateentry.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\datefield.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\dialog.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\dialogshell.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\disjointlistbox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\entryfield.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\extbutton.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\extfileselectionbox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\extfileselectiondialog.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\feedback.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\fileselectionbox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\fileselectiondialog.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\finddialog.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\hierarchy.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\hyperhelp.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\labeledframe.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\labeledwidget.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\mainwindow.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\menubar.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\messagebox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\messagedialog.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\notebook.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\optionmenu.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\pane.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\panedwindow.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\promptdialog.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\pushbutton.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\radiobox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\regexpfield.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\scrolledcanvas.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\scrolledframe.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\scrolledhtml.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\scrolledlistbox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\scrolledtext.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\scrolledwidget.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\selectionbox.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\selectiondialog.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\shell.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\spindate.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\spinint.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\spinner.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\spintime.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\tabnotebook.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\tabset.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\timeentry.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\timefield.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\toolbar.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\watch.itk" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\colors.itcl" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\roman.itcl" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\scopedobject.itcl" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\tclIndex" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\scripts\unknownimage.gif" SetOutPath "$INSTDIR\share\iwidgets4.0.1" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\iwidgets.tcl" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\pkgIndex.tcl" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\license.terms" SetOutPath "$INSTDIR\share\iwidgets4.0.1\demos\images" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\box.xbm" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\clear.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\close.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\copy.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\cut.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\exit.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\find.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\help.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\line.xbm" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\mag.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\new.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\open.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\oval.xbm" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\paste.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\points.xbm" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\poly.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\print.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\ruler.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\save.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\select.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\images\text.xbm" SetOutPath "$INSTDIR\share\iwidgets4.0.1\demos\html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\buttonbox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\calendar.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\canvasprintbox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\canvasprintdialog.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\checkbox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\combobox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\dateentry.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\datefield.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\dialog.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\dialogshell.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\disjointlistbox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\entryfield.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\extbutton.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\extfileselectionbox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\extfileselectiondialog.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\feedback.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\fileselectionbox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\fileselectiondialog.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\finddialog.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\hierarchy.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\hyperhelp.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\iwidgets4.0.0UserCmds.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\labeledframe.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\labeledwidget.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\mainwindow.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\menubar.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\messagebox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\messagedialog.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\notebook.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\optionmenu.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\panedwindow.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\promptdialog.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\pushbutton.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\radiobox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\scopedobject.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\scrolledcanvas.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\scrolledframe.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\scrolledhtml.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\scrolledlistbox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\scrolledtext.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\selectionbox.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\selectiondialog.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\shell.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\spindate.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\spinint.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\spinner.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\spintime.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\tabnotebook.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\tabset.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\timeentry.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\timefield.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\toolbar.n.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\html\watch.n.html" SetOutPath "$INSTDIR\share\iwidgets4.0.1\demos" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\buttonbox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\calendar" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\canvasprintbox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\canvasprintdialog" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\catalog" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\checkbox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\combobox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\dateentry" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\datefield" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\demo.html" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\dialog" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\dialogshell" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\disjointlistbox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\entryfield" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\extbutton" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\extfileselectionbox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\extfileselectiondialog" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\feedback" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\fileselectionbox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\fileselectiondialog" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\finddialog" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\hierarchy" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\hyperhelp" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\iwidgets.gif" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\labeledframe" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\labeledwidget" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\mainwindow" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\menubar" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\messagebox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\messagedialog" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\notebook" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\optionmenu" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\panedwindow" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\promptdialog" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\pushbutton" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\radiobox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\scopedobject" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\scrolledcanvas" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\scrolledframe" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\scrolledhtml" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\scrolledlistbox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\scrolledtext" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\selectionbox" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\selectiondialog" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\shell" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\spindate" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\spinint" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\spinner" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\spintime" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\tabnotebook" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\tabset" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\timeentry" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\timefield" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\toolbar" File "..\..\..\..\TiEmu\share\iwidgets4.0.1\demos\watch" SetOutPath "$INSTDIR\share\redhat\gui" File "..\..\..\..\TiEmu\share\redhat\gui\tclIndex" File "..\..\..\..\TiEmu\share\redhat\gui\pkgIndex.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\advice.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\balloon.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\bbox.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\bgerror.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\bindings.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\canvas.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\cframe.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\center.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\debug.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\def.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\internet.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\font.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\gensym.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\gettext.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\hooks.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\lframe.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\list.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\looknfeel.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\menu.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\mono.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\multibox.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\parse_args.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\path.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\postghost.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\prefs.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\print.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\sendpr.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\topbind.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\toolbar.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\ulset.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\wframe.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\wingrab.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\ventry.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\combobox.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\pane.tcl" File "..\..\..\..\TiEmu\share\redhat\gui\panedwindow.tcl" SetOutPath "$INSTDIR\share\insight1.0\images" File "..\..\..\..\TiEmu\share\insight1.0\images\Movie_off.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\Movie_on.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\bottom.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\bp.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\check.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\console.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\continue.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\down.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\edit.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\finish.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\gdbtk_icon.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\help.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\home.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\insight.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\less.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\memory.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\more.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\next.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\next_check.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\next_frame.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\next_hit.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\next_line.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\nexti.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\open.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\prev_hit.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\reg.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\rewind.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\run.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\run_expt.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\src.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\stack.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\step.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\stepi.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\stop.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\tdump.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\tp.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\up.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\vars.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\watch.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\watch_movie.gif" File "..\..\..\..\TiEmu\share\insight1.0\images\icons.txt" SetOutPath "$INSTDIR\share\insight1.0\images2" File "..\..\..\..\TiEmu\share\insight1.0\images2\Movie_off.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\Movie_on.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\bottom.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\bp.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\check.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\console.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\continue.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\down.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\edit.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\finish.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\function.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\gdbtk_icon.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\help.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\home.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\insight.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\less.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\memory.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\more.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\next.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\next_check.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\next_frame.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\next_hit.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\next_line.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\nexti.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\open.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\prev_hit.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\reg.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\rewind.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\run.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\run_expt.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\src.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\stack.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\step.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\stepi.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\stop.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\target.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\tdump.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\tp.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\up.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\vars.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\watch.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\watch_movie.gif" File "..\..\..\..\TiEmu\share\insight1.0\images2\icons.txt" SetOutPath "$INSTDIR\share\insight1.0\help\images" File "..\..\..\..\TiEmu\share\insight1.0\help\images\frame_info.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\mem_menu.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\mem_popup.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\mem_pref.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\src_bal.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\src_bp_bal.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\src_bpop.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\src_menu.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\src_pop.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\src_stat.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\src_thread.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\src_toolbar.gif" File "..\..\..\..\TiEmu\share\insight1.0\help\images\browser1.png" File "..\..\..\..\TiEmu\share\insight1.0\help\images\browser2.png" File "..\..\..\..\TiEmu\share\insight1.0\help\images\insightbwr.png" File "..\..\..\..\TiEmu\share\insight1.0\help\images\reg.png" File "..\..\..\..\TiEmu\share\insight1.0\help\images\reg_menu.png" File "..\..\..\..\TiEmu\share\insight1.0\help\images\watch.png" SetOutPath "$INSTDIR\share\insight1.0\help\trace" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\console.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\gbl_pref.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\help.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\license.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\locals.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\memory.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\reg_pref.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\register.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\source.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\src_pref.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\stack.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\target.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\tdump.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\tp.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\tracedlg.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\watch.html" File "..\..\..\..\TiEmu\share\insight1.0\help\trace\index.toc" SetOutPath "$INSTDIR\share\insight1.0\help" File "..\..\..\..\TiEmu\share\insight1.0\help\breakpoint.html" File "..\..\..\..\TiEmu\share\insight1.0\help\browser.html" File "..\..\..\..\TiEmu\share\insight1.0\help\console.html" File "..\..\..\..\TiEmu\share\insight1.0\help\debug.html" File "..\..\..\..\TiEmu\share\insight1.0\help\gbl_pref.html" File "..\..\..\..\TiEmu\share\insight1.0\help\help.html" File "..\..\..\..\TiEmu\share\insight1.0\help\index.html" File "..\..\..\..\TiEmu\share\insight1.0\help\license.html" File "..\..\..\..\TiEmu\share\insight1.0\help\locals.html" File "..\..\..\..\TiEmu\share\insight1.0\help\memory.html" File "..\..\..\..\TiEmu\share\insight1.0\help\register.html" File "..\..\..\..\TiEmu\share\insight1.0\help\session.html" File "..\..\..\..\TiEmu\share\insight1.0\help\source.html" File "..\..\..\..\TiEmu\share\insight1.0\help\src_pref.html" File "..\..\..\..\TiEmu\share\insight1.0\help\stack.html" File "..\..\..\..\TiEmu\share\insight1.0\help\target.html" File "..\..\..\..\TiEmu\share\insight1.0\help\thread.html" File "..\..\..\..\TiEmu\share\insight1.0\help\watch.html" SetOutPath "$INSTDIR\share\insight1.0" File "..\..\..\..\TiEmu\share\insight1.0\about.tcl" File "..\..\..\..\TiEmu\share\insight1.0\actiondlg.tcl" File "..\..\..\..\TiEmu\share\insight1.0\editor.tcl" File "..\..\..\..\TiEmu\share\insight1.0\helpviewer.tcl" File "..\..\..\..\TiEmu\share\insight1.0\interface.tcl" File "..\..\..\..\TiEmu\share\insight1.0\ipc.tcl" File "..\..\..\..\TiEmu\share\insight1.0\locals.tcl" File "..\..\..\..\TiEmu\share\insight1.0\main.tcl" File "..\..\..\..\TiEmu\share\insight1.0\modal.tcl" File "..\..\..\..\TiEmu\share\insight1.0\prefs.tcl" File "..\..\..\..\TiEmu\share\insight1.0\session.tcl" File "..\..\..\..\TiEmu\share\insight1.0\tdump.tcl" File "..\..\..\..\TiEmu\share\insight1.0\tfind_args.tcl" File "..\..\..\..\TiEmu\share\insight1.0\tracedlg.tcl" File "..\..\..\..\TiEmu\share\insight1.0\tty.tcl" File "..\..\..\..\TiEmu\share\insight1.0\util.tcl" File "..\..\..\..\TiEmu\share\insight1.0\warning.tcl" File "..\..\..\..\TiEmu\share\insight1.0\watch.tcl" File "..\..\..\..\TiEmu\share\insight1.0\gdbmenubar.itcl" File "..\..\..\..\TiEmu\share\insight1.0\gdbtoolbar.itcl" File "..\..\..\..\TiEmu\share\insight1.0\pluginwin.itcl" File "..\..\..\..\TiEmu\share\insight1.0\srcbar.itcl" File "..\..\..\..\TiEmu\share\insight1.0\attachdlg.ith" File "..\..\..\..\TiEmu\share\insight1.0\blockframe.ith" File "..\..\..\..\TiEmu\share\insight1.0\bpwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\browserwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\console.ith" File "..\..\..\..\TiEmu\share\insight1.0\cspref.ith" File "..\..\..\..\TiEmu\share\insight1.0\debugwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\download.ith" File "..\..\..\..\TiEmu\share\insight1.0\ehandler.ith" File "..\..\..\..\TiEmu\share\insight1.0\embeddedwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\gdbevent.ith" File "..\..\..\..\TiEmu\share\insight1.0\gdbwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\globalpref.ith" File "..\..\..\..\TiEmu\share\insight1.0\ipcpref.ith" File "..\..\..\..\TiEmu\share\insight1.0\kod.ith" File "..\..\..\..\TiEmu\share\insight1.0\managedwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\mempref.ith" File "..\..\..\..\TiEmu\share\insight1.0\memwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\process.ith" File "..\..\..\..\TiEmu\share\insight1.0\regwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\srcpref.ith" File "..\..\..\..\TiEmu\share\insight1.0\srctextwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\srcwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\stackwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\targetselection.ith" File "..\..\..\..\TiEmu\share\insight1.0\toplevelwin.ith" File "..\..\..\..\TiEmu\share\insight1.0\vartree.ith" File "..\..\..\..\TiEmu\share\insight1.0\attachdlg.itb" File "..\..\..\..\TiEmu\share\insight1.0\blockframe.itb" File "..\..\..\..\TiEmu\share\insight1.0\bpwin.itb" File "..\..\..\..\TiEmu\share\insight1.0\browserwin.itb" File "..\..\..\..\TiEmu\share\insight1.0\console.itb" File "..\..\..\..\TiEmu\share\insight1.0\cspref.itb" File "..\..\..\..\TiEmu\share\insight1.0\debugwin.itb" File "..\..\..\..\TiEmu\share\insight1.0\download.itb" File "..\..\..\..\TiEmu\share\insight1.0\ehandler.itb" File "..\..\..\..\TiEmu\share\insight1.0\gdbevent.itb" File "..\..\..\..\TiEmu\share\insight1.0\globalpref.itb" File "..\..\..\..\TiEmu\share\insight1.0\ipcpref.itb" File "..\..\..\..\TiEmu\share\insight1.0\kod.itb" File "..\..\..\..\TiEmu\share\insight1.0\managedwin.itb" File "..\..\..\..\TiEmu\share\insight1.0\mempref.itb" File "..\..\..\..\TiEmu\share\insight1.0\memwin.itb" File "..\..\..\..\TiEmu\share\insight1.0\process.itb" File "..\..\..\..\TiEmu\share\insight1.0\regwin.itb" File "..\..\..\..\TiEmu\share\insight1.0\srcpref.itb" File "..\..\..\..\TiEmu\share\insight1.0\srctextwin.itb" File "..\..\..\..\TiEmu\share\insight1.0\srcwin.itb" File "..\..\..\..\TiEmu\share\insight1.0\stackwin.itb" File "..\..\..\..\TiEmu\share\insight1.0\targetselection.itb" File "..\..\..\..\TiEmu\share\insight1.0\vartree.itb" File "..\..\..\..\TiEmu\share\insight1.0\tclIndex" SetOutPath "$INSTDIR\share\man\man1" File "..\..\..\..\TiEmu\share\man\man1\tiemu.1" SetOutPath "$INSTDIR\man\mann" File "..\..\..\..\TiEmu\man\mann\body.n" File "..\..\..\..\TiEmu\man\mann\class.n" File "..\..\..\..\TiEmu\man\mann\code.n" File "..\..\..\..\TiEmu\man\mann\configbody.n" File "..\..\..\..\TiEmu\man\mann\delete.n" File "..\..\..\..\TiEmu\man\mann\ensemble.n" File "..\..\..\..\TiEmu\man\mann\find.n" File "..\..\..\..\TiEmu\man\mann\itcl.n" File "..\..\..\..\TiEmu\man\mann\itcl_class.n" File "..\..\..\..\TiEmu\man\mann\itcl_info.n" File "..\..\..\..\TiEmu\man\mann\itclvars.n" File "..\..\..\..\TiEmu\man\mann\local.n" File "..\..\..\..\TiEmu\man\mann\scope.n" File "..\..\..\..\TiEmu\man\mann\Archetype.n" File "..\..\..\..\TiEmu\man\mann\Toplevel.n" File "..\..\..\..\TiEmu\man\mann\Widget.n" File "..\..\..\..\TiEmu\man\mann\itk.n" File "..\..\..\..\TiEmu\man\mann\itkvars.n" File "..\..\..\..\TiEmu\man\mann\usual.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_buttonbox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_calendar.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_canvasprintbox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_canvasprintdialog.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_checkbox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_combobox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_dateentry.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_datefield.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_dialog.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_dialogshell.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_disjointlistbox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_entryfield.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_extbutton.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_extfileselectionbox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_extfileselectiondialog.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_feedback.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_fileselectionbox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_fileselectiondialog.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_finddialog.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_hierarchy.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_hyperhelp.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_labeledframe.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_labeledwidget.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_mainwindow.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_menubar.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_messagebox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_messagedialog.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_notebook.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_optionmenu.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_panedwindow.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_promptdialog.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_pushbutton.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_radiobox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_scopedobject.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_scrolledcanvas.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_scrolledframe.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_scrolledhtml.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_scrolledlistbox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_scrolledtext.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_selectionbox.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_selectiondialog.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_shell.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_spindate.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_spinint.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_spinner.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_spintime.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_tabnotebook.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_tabset.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_timeentry.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_timefield.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_toolbar.n" File "..\..\..\..\TiEmu\man\mann\iwidgets_watch.n" ; OLE Registration ExecWait '"$INSTDIR\bin\tiemu.exe" /RegServer' RegDLL "$INSTDIR\bin\tiemups.dll" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\TiEmu.lnk" "$INSTDIR\bin\tiemu.exe" CreateShortCut "$DESKTOP\TiEmu.lnk" "$INSTDIR\bin\tiemu.exe" !insertmacro MUI_STARTMENU_WRITE_END ; File associations WriteRegStr HKCR ".sav" "" "TiEmu.Sav" WriteRegStr HKCR "TiEmu.Sav" "" "TiEmu state" WriteRegStr HKCR "TiEmu.Sav\DefaultIcon" "" "$INSTDIR\bin\tiemu.exe,0" WriteRegStr HKCR "TiEmu.Sav\shell\open" "" "Open with &TiEmu" WriteRegStr HKCR "TiEmu.Sav\shell\open\command" "" '"$INSTDIR\bin\tiemu.exe" "%1"' WriteRegStr HKCR ".rom" "" "TiEmu.Rom" WriteRegStr HKCR "TiEmu.Rom" "" "Rom Dump" WriteRegStr HKCR "TiEmu.Rom\DefaultIcon" "" "$INSTDIR\share\tiemu\pixmaps\romdump.ico" WriteRegStr HKCR "TiEmu.Rom\shell\open" "" "Open with &TiEmu" WriteRegStr HKCR "TiEmu.Rom\shell\open\command" "" '"$INSTDIR\bin\tiemu.exe" "%1"' SectionEnd Section -AdditionalIcons SetOutPath $INSTDIR !insertmacro MUI_STARTMENU_WRITE_BEGIN Application WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Readme.lnk" "$INSTDIR\share\tiemu\Readme.txt" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\tiemu.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\tiemu.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 Abort FunctionEnd Section Uninstall !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP ; File associations DeleteRegKey HKCR "TiEmu.Rom" DeleteRegKey HKCR ".rom" DeleteRegKey HKCR "TiEmu.Sav" DeleteRegKey HKCR ".sav" ; OLE Unregistration UnregDLL "$INSTDIR\bin\tiemups.dll" ExecWait '"$INSTDIR\bin\tiemu.exe" /UnregServer' Delete "$INSTDIR\${PRODUCT_NAME}.url" Delete "$INSTDIR\uninst.exe" Delete "$INSTDIR\man\mann\iwidgets_watch.n" Delete "$INSTDIR\man\mann\iwidgets_toolbar.n" Delete "$INSTDIR\man\mann\iwidgets_timefield.n" Delete "$INSTDIR\man\mann\iwidgets_timeentry.n" Delete "$INSTDIR\man\mann\iwidgets_tabset.n" Delete "$INSTDIR\man\mann\iwidgets_tabnotebook.n" Delete "$INSTDIR\man\mann\iwidgets_spintime.n" Delete "$INSTDIR\man\mann\iwidgets_spinner.n" Delete "$INSTDIR\man\mann\iwidgets_spinint.n" Delete "$INSTDIR\man\mann\iwidgets_spindate.n" Delete "$INSTDIR\man\mann\iwidgets_shell.n" Delete "$INSTDIR\man\mann\iwidgets_selectiondialog.n" Delete "$INSTDIR\man\mann\iwidgets_selectionbox.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledtext.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledlistbox.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledhtml.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledframe.n" Delete "$INSTDIR\man\mann\iwidgets_scrolledcanvas.n" Delete "$INSTDIR\man\mann\iwidgets_scopedobject.n" Delete "$INSTDIR\man\mann\iwidgets_radiobox.n" Delete "$INSTDIR\man\mann\iwidgets_pushbutton.n" Delete "$INSTDIR\man\mann\iwidgets_promptdialog.n" Delete "$INSTDIR\man\mann\iwidgets_panedwindow.n" Delete "$INSTDIR\man\mann\iwidgets_optionmenu.n" Delete "$INSTDIR\man\mann\iwidgets_notebook.n" Delete "$INSTDIR\man\mann\iwidgets_messagedialog.n" Delete "$INSTDIR\man\mann\iwidgets_messagebox.n" Delete "$INSTDIR\man\mann\iwidgets_menubar.n" Delete "$INSTDIR\man\mann\iwidgets_mainwindow.n" Delete "$INSTDIR\man\mann\iwidgets_labeledwidget.n" Delete "$INSTDIR\man\mann\iwidgets_labeledframe.n" Delete "$INSTDIR\man\mann\iwidgets_hyperhelp.n" Delete "$INSTDIR\man\mann\iwidgets_hierarchy.n" Delete "$INSTDIR\man\mann\iwidgets_finddialog.n" Delete "$INSTDIR\man\mann\iwidgets_fileselectiondialog.n" Delete "$INSTDIR\man\mann\iwidgets_fileselectionbox.n" Delete "$INSTDIR\man\mann\iwidgets_feedback.n" Delete "$INSTDIR\man\mann\iwidgets_extfileselectiondialog.n" Delete "$INSTDIR\man\mann\iwidgets_extfileselectionbox.n" Delete "$INSTDIR\man\mann\iwidgets_extbutton.n" Delete "$INSTDIR\man\mann\iwidgets_entryfield.n" Delete "$INSTDIR\man\mann\iwidgets_disjointlistbox.n" Delete "$INSTDIR\man\mann\iwidgets_dialogshell.n" Delete "$INSTDIR\man\mann\iwidgets_dialog.n" Delete "$INSTDIR\man\mann\iwidgets_datefield.n" Delete "$INSTDIR\man\mann\iwidgets_dateentry.n" Delete "$INSTDIR\man\mann\iwidgets_combobox.n" Delete "$INSTDIR\man\mann\iwidgets_checkbox.n" Delete "$INSTDIR\man\mann\iwidgets_canvasprintdialog.n" Delete "$INSTDIR\man\mann\iwidgets_canvasprintbox.n" Delete "$INSTDIR\man\mann\iwidgets_calendar.n" Delete "$INSTDIR\man\mann\iwidgets_buttonbox.n" Delete "$INSTDIR\man\mann\usual.n" Delete "$INSTDIR\man\mann\itkvars.n" Delete "$INSTDIR\man\mann\itk.n" Delete "$INSTDIR\man\mann\Widget.n" Delete "$INSTDIR\man\mann\Toplevel.n" Delete "$INSTDIR\man\mann\Archetype.n" Delete "$INSTDIR\man\mann\scope.n" Delete "$INSTDIR\man\mann\local.n" Delete "$INSTDIR\man\mann\itclvars.n" Delete "$INSTDIR\man\mann\itcl_info.n" Delete "$INSTDIR\man\mann\itcl_class.n" Delete "$INSTDIR\man\mann\itcl.n" Delete "$INSTDIR\man\mann\find.n" Delete "$INSTDIR\man\mann\ensemble.n" Delete "$INSTDIR\man\mann\delete.n" Delete "$INSTDIR\man\mann\configbody.n" Delete "$INSTDIR\man\mann\code.n" Delete "$INSTDIR\man\mann\class.n" Delete "$INSTDIR\man\mann\body.n" Delete "$INSTDIR\share\man\man1\tiemu.1" Delete "$INSTDIR\share\insight1.0\tclIndex" Delete "$INSTDIR\share\insight1.0\vartree.itb" Delete "$INSTDIR\share\insight1.0\targetselection.itb" Delete "$INSTDIR\share\insight1.0\stackwin.itb" Delete "$INSTDIR\share\insight1.0\srcwin.itb" Delete "$INSTDIR\share\insight1.0\srctextwin.itb" Delete "$INSTDIR\share\insight1.0\srcpref.itb" Delete "$INSTDIR\share\insight1.0\regwin.itb" Delete "$INSTDIR\share\insight1.0\process.itb" Delete "$INSTDIR\share\insight1.0\memwin.itb" Delete "$INSTDIR\share\insight1.0\mempref.itb" Delete "$INSTDIR\share\insight1.0\managedwin.itb" Delete "$INSTDIR\share\insight1.0\kod.itb" Delete "$INSTDIR\share\insight1.0\ipcpref.itb" Delete "$INSTDIR\share\insight1.0\globalpref.itb" Delete "$INSTDIR\share\insight1.0\gdbevent.itb" Delete "$INSTDIR\share\insight1.0\ehandler.itb" Delete "$INSTDIR\share\insight1.0\download.itb" Delete "$INSTDIR\share\insight1.0\debugwin.itb" Delete "$INSTDIR\share\insight1.0\cspref.itb" Delete "$INSTDIR\share\insight1.0\console.itb" Delete "$INSTDIR\share\insight1.0\browserwin.itb" Delete "$INSTDIR\share\insight1.0\bpwin.itb" Delete "$INSTDIR\share\insight1.0\blockframe.itb" Delete "$INSTDIR\share\insight1.0\attachdlg.itb" Delete "$INSTDIR\share\insight1.0\vartree.ith" Delete "$INSTDIR\share\insight1.0\toplevelwin.ith" Delete "$INSTDIR\share\insight1.0\targetselection.ith" Delete "$INSTDIR\share\insight1.0\stackwin.ith" Delete "$INSTDIR\share\insight1.0\srcwin.ith" Delete "$INSTDIR\share\insight1.0\srctextwin.ith" Delete "$INSTDIR\share\insight1.0\srcpref.ith" Delete "$INSTDIR\share\insight1.0\regwin.ith" Delete "$INSTDIR\share\insight1.0\process.ith" Delete "$INSTDIR\share\insight1.0\memwin.ith" Delete "$INSTDIR\share\insight1.0\mempref.ith" Delete "$INSTDIR\share\insight1.0\managedwin.ith" Delete "$INSTDIR\share\insight1.0\kod.ith" Delete "$INSTDIR\share\insight1.0\ipcpref.ith" Delete "$INSTDIR\share\insight1.0\globalpref.ith" Delete "$INSTDIR\share\insight1.0\gdbwin.ith" Delete "$INSTDIR\share\insight1.0\gdbevent.ith" Delete "$INSTDIR\share\insight1.0\embeddedwin.ith" Delete "$INSTDIR\share\insight1.0\ehandler.ith" Delete "$INSTDIR\share\insight1.0\download.ith" Delete "$INSTDIR\share\insight1.0\debugwin.ith" Delete "$INSTDIR\share\insight1.0\cspref.ith" Delete "$INSTDIR\share\insight1.0\console.ith" Delete "$INSTDIR\share\insight1.0\browserwin.ith" Delete "$INSTDIR\share\insight1.0\bpwin.ith" Delete "$INSTDIR\share\insight1.0\blockframe.ith" Delete "$INSTDIR\share\insight1.0\attachdlg.ith" Delete "$INSTDIR\share\insight1.0\srcbar.itcl" Delete "$INSTDIR\share\insight1.0\pluginwin.itcl" Delete "$INSTDIR\share\insight1.0\gdbtoolbar.itcl" Delete "$INSTDIR\share\insight1.0\gdbmenubar.itcl" Delete "$INSTDIR\share\insight1.0\watch.tcl" Delete "$INSTDIR\share\insight1.0\warning.tcl" Delete "$INSTDIR\share\insight1.0\util.tcl" Delete "$INSTDIR\share\insight1.0\tty.tcl" Delete "$INSTDIR\share\insight1.0\tracedlg.tcl" Delete "$INSTDIR\share\insight1.0\tfind_args.tcl" Delete "$INSTDIR\share\insight1.0\tdump.tcl" Delete "$INSTDIR\share\insight1.0\session.tcl" Delete "$INSTDIR\share\insight1.0\prefs.tcl" Delete "$INSTDIR\share\insight1.0\modal.tcl" Delete "$INSTDIR\share\insight1.0\main.tcl" Delete "$INSTDIR\share\insight1.0\locals.tcl" Delete "$INSTDIR\share\insight1.0\ipc.tcl" Delete "$INSTDIR\share\insight1.0\interface.tcl" Delete "$INSTDIR\share\insight1.0\helpviewer.tcl" Delete "$INSTDIR\share\insight1.0\editor.tcl" Delete "$INSTDIR\share\insight1.0\actiondlg.tcl" Delete "$INSTDIR\share\insight1.0\about.tcl" Delete "$INSTDIR\share\insight1.0\help\watch.html" Delete "$INSTDIR\share\insight1.0\help\thread.html" Delete "$INSTDIR\share\insight1.0\help\target.html" Delete "$INSTDIR\share\insight1.0\help\stack.html" Delete "$INSTDIR\share\insight1.0\help\src_pref.html" Delete "$INSTDIR\share\insight1.0\help\source.html" Delete "$INSTDIR\share\insight1.0\help\session.html" Delete "$INSTDIR\share\insight1.0\help\register.html" Delete "$INSTDIR\share\insight1.0\help\memory.html" Delete "$INSTDIR\share\insight1.0\help\locals.html" Delete "$INSTDIR\share\insight1.0\help\license.html" Delete "$INSTDIR\share\insight1.0\help\index.html" Delete "$INSTDIR\share\insight1.0\help\help.html" Delete "$INSTDIR\share\insight1.0\help\gbl_pref.html" Delete "$INSTDIR\share\insight1.0\help\debug.html" Delete "$INSTDIR\share\insight1.0\help\console.html" Delete "$INSTDIR\share\insight1.0\help\browser.html" Delete "$INSTDIR\share\insight1.0\help\breakpoint.html" Delete "$INSTDIR\share\insight1.0\help\trace\index.toc" Delete "$INSTDIR\share\insight1.0\help\trace\watch.html" Delete "$INSTDIR\share\insight1.0\help\trace\tracedlg.html" Delete "$INSTDIR\share\insight1.0\help\trace\tp.html" Delete "$INSTDIR\share\insight1.0\help\trace\tdump.html" Delete "$INSTDIR\share\insight1.0\help\trace\target.html" Delete "$INSTDIR\share\insight1.0\help\trace\stack.html" Delete "$INSTDIR\share\insight1.0\help\trace\src_pref.html" Delete "$INSTDIR\share\insight1.0\help\trace\source.html" Delete "$INSTDIR\share\insight1.0\help\trace\register.html" Delete "$INSTDIR\share\insight1.0\help\trace\reg_pref.html" Delete "$INSTDIR\share\insight1.0\help\trace\memory.html" Delete "$INSTDIR\share\insight1.0\help\trace\locals.html" Delete "$INSTDIR\share\insight1.0\help\trace\license.html" Delete "$INSTDIR\share\insight1.0\help\trace\help.html" Delete "$INSTDIR\share\insight1.0\help\trace\gbl_pref.html" Delete "$INSTDIR\share\insight1.0\help\trace\console.html" Delete "$INSTDIR\share\insight1.0\help\images\watch.png" Delete "$INSTDIR\share\insight1.0\help\images\reg_menu.png" Delete "$INSTDIR\share\insight1.0\help\images\reg.png" Delete "$INSTDIR\share\insight1.0\help\images\insightbwr.png" Delete "$INSTDIR\share\insight1.0\help\images\browser2.png" Delete "$INSTDIR\share\insight1.0\help\images\browser1.png" Delete "$INSTDIR\share\insight1.0\help\images\src_toolbar.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_thread.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_stat.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_pop.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_menu.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_bpop.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_bp_bal.gif" Delete "$INSTDIR\share\insight1.0\help\images\src_bal.gif" Delete "$INSTDIR\share\insight1.0\help\images\mem_pref.gif" Delete "$INSTDIR\share\insight1.0\help\images\mem_popup.gif" Delete "$INSTDIR\share\insight1.0\help\images\mem_menu.gif" Delete "$INSTDIR\share\insight1.0\help\images\frame_info.gif" Delete "$INSTDIR\share\insight1.0\images2\icons.txt" Delete "$INSTDIR\share\insight1.0\images2\watch_movie.gif" Delete "$INSTDIR\share\insight1.0\images2\watch.gif" Delete "$INSTDIR\share\insight1.0\images2\vars.gif" Delete "$INSTDIR\share\insight1.0\images2\up.gif" Delete "$INSTDIR\share\insight1.0\images2\tp.gif" Delete "$INSTDIR\share\insight1.0\images2\tdump.gif" Delete "$INSTDIR\share\insight1.0\images2\target.gif" Delete "$INSTDIR\share\insight1.0\images2\stop.gif" Delete "$INSTDIR\share\insight1.0\images2\stepi.gif" Delete "$INSTDIR\share\insight1.0\images2\step.gif" Delete "$INSTDIR\share\insight1.0\images2\stack.gif" Delete "$INSTDIR\share\insight1.0\images2\src.gif" Delete "$INSTDIR\share\insight1.0\images2\run_expt.gif" Delete "$INSTDIR\share\insight1.0\images2\run.gif" Delete "$INSTDIR\share\insight1.0\images2\rewind.gif" Delete "$INSTDIR\share\insight1.0\images2\reg.gif" Delete "$INSTDIR\share\insight1.0\images2\prev_hit.gif" Delete "$INSTDIR\share\insight1.0\images2\open.gif" Delete "$INSTDIR\share\insight1.0\images2\nexti.gif" Delete "$INSTDIR\share\insight1.0\images2\next_line.gif" Delete "$INSTDIR\share\insight1.0\images2\next_hit.gif" Delete "$INSTDIR\share\insight1.0\images2\next_frame.gif" Delete "$INSTDIR\share\insight1.0\images2\next_check.gif" Delete "$INSTDIR\share\insight1.0\images2\next.gif" Delete "$INSTDIR\share\insight1.0\images2\more.gif" Delete "$INSTDIR\share\insight1.0\images2\memory.gif" Delete "$INSTDIR\share\insight1.0\images2\less.gif" Delete "$INSTDIR\share\insight1.0\images2\insight.gif" Delete "$INSTDIR\share\insight1.0\images2\home.gif" Delete "$INSTDIR\share\insight1.0\images2\help.gif" Delete "$INSTDIR\share\insight1.0\images2\gdbtk_icon.gif" Delete "$INSTDIR\share\insight1.0\images2\function.gif" Delete "$INSTDIR\share\insight1.0\images2\finish.gif" Delete "$INSTDIR\share\insight1.0\images2\edit.gif" Delete "$INSTDIR\share\insight1.0\images2\down.gif" Delete "$INSTDIR\share\insight1.0\images2\continue.gif" Delete "$INSTDIR\share\insight1.0\images2\console.gif" Delete "$INSTDIR\share\insight1.0\images2\check.gif" Delete "$INSTDIR\share\insight1.0\images2\bp.gif" Delete "$INSTDIR\share\insight1.0\images2\bottom.gif" Delete "$INSTDIR\share\insight1.0\images2\Movie_on.gif" Delete "$INSTDIR\share\insight1.0\images2\Movie_off.gif" Delete "$INSTDIR\share\insight1.0\images\icons.txt" Delete "$INSTDIR\share\insight1.0\images\watch_movie.gif" Delete "$INSTDIR\share\insight1.0\images\watch.gif" Delete "$INSTDIR\share\insight1.0\images\vars.gif" Delete "$INSTDIR\share\insight1.0\images\up.gif" Delete "$INSTDIR\share\insight1.0\images\tp.gif" Delete "$INSTDIR\share\insight1.0\images\tdump.gif" Delete "$INSTDIR\share\insight1.0\images\stop.gif" Delete "$INSTDIR\share\insight1.0\images\stepi.gif" Delete "$INSTDIR\share\insight1.0\images\step.gif" Delete "$INSTDIR\share\insight1.0\images\stack.gif" Delete "$INSTDIR\share\insight1.0\images\src.gif" Delete "$INSTDIR\share\insight1.0\images\run_expt.gif" Delete "$INSTDIR\share\insight1.0\images\run.gif" Delete "$INSTDIR\share\insight1.0\images\rewind.gif" Delete "$INSTDIR\share\insight1.0\images\reg.gif" Delete "$INSTDIR\share\insight1.0\images\prev_hit.gif" Delete "$INSTDIR\share\insight1.0\images\open.gif" Delete "$INSTDIR\share\insight1.0\images\nexti.gif" Delete "$INSTDIR\share\insight1.0\images\next_line.gif" Delete "$INSTDIR\share\insight1.0\images\next_hit.gif" Delete "$INSTDIR\share\insight1.0\images\next_frame.gif" Delete "$INSTDIR\share\insight1.0\images\next_check.gif" Delete "$INSTDIR\share\insight1.0\images\next.gif" Delete "$INSTDIR\share\insight1.0\images\more.gif" Delete "$INSTDIR\share\insight1.0\images\memory.gif" Delete "$INSTDIR\share\insight1.0\images\less.gif" Delete "$INSTDIR\share\insight1.0\images\insight.gif" Delete "$INSTDIR\share\insight1.0\images\home.gif" Delete "$INSTDIR\share\insight1.0\images\help.gif" Delete "$INSTDIR\share\insight1.0\images\gdbtk_icon.gif" Delete "$INSTDIR\share\insight1.0\images\finish.gif" Delete "$INSTDIR\share\insight1.0\images\edit.gif" Delete "$INSTDIR\share\insight1.0\images\down.gif" Delete "$INSTDIR\share\insight1.0\images\continue.gif" Delete "$INSTDIR\share\insight1.0\images\console.gif" Delete "$INSTDIR\share\insight1.0\images\check.gif" Delete "$INSTDIR\share\insight1.0\images\bp.gif" Delete "$INSTDIR\share\insight1.0\images\bottom.gif" Delete "$INSTDIR\share\insight1.0\images\Movie_on.gif" Delete "$INSTDIR\share\insight1.0\images\Movie_off.gif" Delete "$INSTDIR\share\redhat\gui\panedwindow.tcl" Delete "$INSTDIR\share\redhat\gui\pane.tcl" Delete "$INSTDIR\share\redhat\gui\combobox.tcl" Delete "$INSTDIR\share\redhat\gui\ventry.tcl" Delete "$INSTDIR\share\redhat\gui\wingrab.tcl" Delete "$INSTDIR\share\redhat\gui\wframe.tcl" Delete "$INSTDIR\share\redhat\gui\ulset.tcl" Delete "$INSTDIR\share\redhat\gui\toolbar.tcl" Delete "$INSTDIR\share\redhat\gui\topbind.tcl" Delete "$INSTDIR\share\redhat\gui\sendpr.tcl" Delete "$INSTDIR\share\redhat\gui\print.tcl" Delete "$INSTDIR\share\redhat\gui\prefs.tcl" Delete "$INSTDIR\share\redhat\gui\postghost.tcl" Delete "$INSTDIR\share\redhat\gui\path.tcl" Delete "$INSTDIR\share\redhat\gui\parse_args.tcl" Delete "$INSTDIR\share\redhat\gui\multibox.tcl" Delete "$INSTDIR\share\redhat\gui\mono.tcl" Delete "$INSTDIR\share\redhat\gui\menu.tcl" Delete "$INSTDIR\share\redhat\gui\looknfeel.tcl" Delete "$INSTDIR\share\redhat\gui\list.tcl" Delete "$INSTDIR\share\redhat\gui\lframe.tcl" Delete "$INSTDIR\share\redhat\gui\hooks.tcl" Delete "$INSTDIR\share\redhat\gui\gettext.tcl" Delete "$INSTDIR\share\redhat\gui\gensym.tcl" Delete "$INSTDIR\share\redhat\gui\font.tcl" Delete "$INSTDIR\share\redhat\gui\internet.tcl" Delete "$INSTDIR\share\redhat\gui\def.tcl" Delete "$INSTDIR\share\redhat\gui\debug.tcl" Delete "$INSTDIR\share\redhat\gui\center.tcl" Delete "$INSTDIR\share\redhat\gui\cframe.tcl" Delete "$INSTDIR\share\redhat\gui\canvas.tcl" Delete "$INSTDIR\share\redhat\gui\bindings.tcl" Delete "$INSTDIR\share\redhat\gui\bgerror.tcl" Delete "$INSTDIR\share\redhat\gui\bbox.tcl" Delete "$INSTDIR\share\redhat\gui\balloon.tcl" Delete "$INSTDIR\share\redhat\gui\advice.tcl" Delete "$INSTDIR\share\redhat\gui\pkgIndex.tcl" Delete "$INSTDIR\share\redhat\gui\tclIndex" Delete "$INSTDIR\share\iwidgets4.0.1\demos\watch" Delete "$INSTDIR\share\iwidgets4.0.1\demos\toolbar" Delete "$INSTDIR\share\iwidgets4.0.1\demos\timefield" Delete "$INSTDIR\share\iwidgets4.0.1\demos\timeentry" Delete "$INSTDIR\share\iwidgets4.0.1\demos\tabset" Delete "$INSTDIR\share\iwidgets4.0.1\demos\tabnotebook" Delete "$INSTDIR\share\iwidgets4.0.1\demos\spintime" Delete "$INSTDIR\share\iwidgets4.0.1\demos\spinner" Delete "$INSTDIR\share\iwidgets4.0.1\demos\spinint" Delete "$INSTDIR\share\iwidgets4.0.1\demos\spindate" Delete "$INSTDIR\share\iwidgets4.0.1\demos\shell" Delete "$INSTDIR\share\iwidgets4.0.1\demos\selectiondialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\selectionbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledtext" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledlistbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledhtml" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledframe" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scrolledcanvas" Delete "$INSTDIR\share\iwidgets4.0.1\demos\scopedobject" Delete "$INSTDIR\share\iwidgets4.0.1\demos\radiobox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\pushbutton" Delete "$INSTDIR\share\iwidgets4.0.1\demos\promptdialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\panedwindow" Delete "$INSTDIR\share\iwidgets4.0.1\demos\optionmenu" Delete "$INSTDIR\share\iwidgets4.0.1\demos\notebook" Delete "$INSTDIR\share\iwidgets4.0.1\demos\messagedialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\messagebox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\menubar" Delete "$INSTDIR\share\iwidgets4.0.1\demos\mainwindow" Delete "$INSTDIR\share\iwidgets4.0.1\demos\labeledwidget" Delete "$INSTDIR\share\iwidgets4.0.1\demos\labeledframe" Delete "$INSTDIR\share\iwidgets4.0.1\demos\iwidgets.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\hyperhelp" Delete "$INSTDIR\share\iwidgets4.0.1\demos\hierarchy" Delete "$INSTDIR\share\iwidgets4.0.1\demos\finddialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\fileselectiondialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\fileselectionbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\feedback" Delete "$INSTDIR\share\iwidgets4.0.1\demos\extfileselectiondialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\extfileselectionbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\extbutton" Delete "$INSTDIR\share\iwidgets4.0.1\demos\entryfield" Delete "$INSTDIR\share\iwidgets4.0.1\demos\disjointlistbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\dialogshell" Delete "$INSTDIR\share\iwidgets4.0.1\demos\dialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\demo.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\datefield" Delete "$INSTDIR\share\iwidgets4.0.1\demos\dateentry" Delete "$INSTDIR\share\iwidgets4.0.1\demos\combobox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\checkbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\catalog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\canvasprintdialog" Delete "$INSTDIR\share\iwidgets4.0.1\demos\canvasprintbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\calendar" Delete "$INSTDIR\share\iwidgets4.0.1\demos\buttonbox" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\watch.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\toolbar.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\timefield.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\timeentry.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\tabset.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\tabnotebook.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\spintime.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\spinner.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\spinint.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\spindate.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\shell.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\selectiondialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\selectionbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledtext.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledlistbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledhtml.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledframe.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scrolledcanvas.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\scopedobject.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\radiobox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\pushbutton.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\promptdialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\panedwindow.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\optionmenu.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\notebook.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\messagedialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\messagebox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\menubar.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\mainwindow.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\labeledwidget.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\labeledframe.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\iwidgets4.0.0UserCmds.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\hyperhelp.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\hierarchy.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\finddialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\fileselectiondialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\fileselectionbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\feedback.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\extfileselectiondialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\extfileselectionbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\extbutton.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\entryfield.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\disjointlistbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\dialogshell.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\dialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\datefield.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\dateentry.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\combobox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\checkbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\canvasprintdialog.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\canvasprintbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\calendar.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\html\buttonbox.n.html" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\text.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\select.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\save.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\ruler.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\print.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\poly.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\points.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\paste.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\oval.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\open.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\new.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\mag.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\line.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\help.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\find.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\exit.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\cut.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\copy.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\close.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\clear.gif" Delete "$INSTDIR\share\iwidgets4.0.1\demos\images\box.xbm" Delete "$INSTDIR\share\iwidgets4.0.1\license.terms" Delete "$INSTDIR\share\iwidgets4.0.1\pkgIndex.tcl" Delete "$INSTDIR\share\iwidgets4.0.1\iwidgets.tcl" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\unknownimage.gif" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\tclIndex" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scopedobject.itcl" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\roman.itcl" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\colors.itcl" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\watch.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\toolbar.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\timefield.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\timeentry.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\tabset.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\tabnotebook.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\spintime.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\spinner.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\spinint.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\spindate.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\shell.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\selectiondialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\selectionbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledwidget.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledtext.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledlistbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledhtml.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledframe.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\scrolledcanvas.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\regexpfield.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\radiobox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\pushbutton.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\promptdialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\panedwindow.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\pane.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\optionmenu.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\notebook.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\messagedialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\messagebox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\menubar.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\mainwindow.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\labeledwidget.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\labeledframe.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\hyperhelp.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\hierarchy.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\finddialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\fileselectiondialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\fileselectionbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\feedback.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\extfileselectiondialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\extfileselectionbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\extbutton.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\entryfield.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\disjointlistbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\dialogshell.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\dialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\datefield.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\dateentry.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\combobox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\checkbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\canvasprintdialog.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\canvasprintbox.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\calendar.itk" Delete "$INSTDIR\share\iwidgets4.0.1\scripts\buttonbox.itk" Delete "$INSTDIR\share\itk3.2\tclIndex" Delete "$INSTDIR\share\itk3.2\itk.tcl" Delete "$INSTDIR\share\itk3.2\Widget.itk" Delete "$INSTDIR\share\itk3.2\Toplevel.itk" Delete "$INSTDIR\share\itk3.2\Archetype.itk" Delete "$INSTDIR\share\itcl3.2\itcl.tcl" Delete "$INSTDIR\share\tk8.4\demos\widget" Delete "$INSTDIR\share\tk8.4\demos\vscale.tcl" Delete "$INSTDIR\share\tk8.4\demos\twind.tcl" Delete "$INSTDIR\share\tk8.4\demos\timer" Delete "$INSTDIR\share\tk8.4\demos\text.tcl" Delete "$INSTDIR\share\tk8.4\demos\tcolor" Delete "$INSTDIR\share\tk8.4\demos\tclIndex" Delete "$INSTDIR\share\tk8.4\demos\style.tcl" Delete "$INSTDIR\share\tk8.4\demos\states.tcl" Delete "$INSTDIR\share\tk8.4\demos\square" Delete "$INSTDIR\share\tk8.4\demos\spin.tcl" Delete "$INSTDIR\share\tk8.4\demos\search.tcl" Delete "$INSTDIR\share\tk8.4\demos\sayings.tcl" Delete "$INSTDIR\share\tk8.4\demos\ruler.tcl" Delete "$INSTDIR\share\tk8.4\demos\rolodex" Delete "$INSTDIR\share\tk8.4\demos\rmt" Delete "$INSTDIR\share\tk8.4\demos\radio.tcl" Delete "$INSTDIR\share\tk8.4\demos\puzzle.tcl" Delete "$INSTDIR\share\tk8.4\demos\plot.tcl" Delete "$INSTDIR\share\tk8.4\demos\paned2.tcl" Delete "$INSTDIR\share\tk8.4\demos\paned1.tcl" Delete "$INSTDIR\share\tk8.4\demos\msgbox.tcl" Delete "$INSTDIR\share\tk8.4\demos\menubu.tcl" Delete "$INSTDIR\share\tk8.4\demos\menu.tcl" Delete "$INSTDIR\share\tk8.4\demos\license.terms" Delete "$INSTDIR\share\tk8.4\demos\labelframe.tcl" Delete "$INSTDIR\share\tk8.4\demos\label.tcl" Delete "$INSTDIR\share\tk8.4\demos\ixset" Delete "$INSTDIR\share\tk8.4\demos\items.tcl" Delete "$INSTDIR\share\tk8.4\demos\image2.tcl" Delete "$INSTDIR\share\tk8.4\demos\image1.tcl" Delete "$INSTDIR\share\tk8.4\demos\icon.tcl" Delete "$INSTDIR\share\tk8.4\demos\hscale.tcl" Delete "$INSTDIR\share\tk8.4\demos\hello" Delete "$INSTDIR\share\tk8.4\demos\form.tcl" Delete "$INSTDIR\share\tk8.4\demos\floor.tcl" Delete "$INSTDIR\share\tk8.4\demos\filebox.tcl" Delete "$INSTDIR\share\tk8.4\demos\entry3.tcl" Delete "$INSTDIR\share\tk8.4\demos\entry2.tcl" Delete "$INSTDIR\share\tk8.4\demos\entry1.tcl" Delete "$INSTDIR\share\tk8.4\demos\dialog2.tcl" Delete "$INSTDIR\share\tk8.4\demos\dialog1.tcl" Delete "$INSTDIR\share\tk8.4\demos\ctext.tcl" Delete "$INSTDIR\share\tk8.4\demos\cscroll.tcl" Delete "$INSTDIR\share\tk8.4\demos\colors.tcl" Delete "$INSTDIR\share\tk8.4\demos\clrpick.tcl" Delete "$INSTDIR\share\tk8.4\demos\check.tcl" Delete "$INSTDIR\share\tk8.4\demos\button.tcl" Delete "$INSTDIR\share\tk8.4\demos\browse" Delete "$INSTDIR\share\tk8.4\demos\bitmap.tcl" Delete "$INSTDIR\share\tk8.4\demos\bind.tcl" Delete "$INSTDIR\share\tk8.4\demos\arrow.tcl" Delete "$INSTDIR\share\tk8.4\demos\README" Delete "$INSTDIR\share\tk8.4\demos\images\teapot.ppm" Delete "$INSTDIR\share\tk8.4\demos\images\tcllogo.gif" Delete "$INSTDIR\share\tk8.4\demos\images\pattern.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\noletter.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\letters.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\gray25.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\flagup.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\flagdown.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\face.bmp" Delete "$INSTDIR\share\tk8.4\demos\images\earthris.gif" Delete "$INSTDIR\share\tk8.4\demos\images\earth.gif" Delete "$INSTDIR\share\tk8.4\tkAppInit.c" Delete "$INSTDIR\share\tk8.4\tclIndex" Delete "$INSTDIR\share\tk8.4\prolog.ps" Delete "$INSTDIR\share\tk8.4\xmfbox.tcl" Delete "$INSTDIR\share\tk8.4\unsupported.tcl" Delete "$INSTDIR\share\tk8.4\tkfbox.tcl" Delete "$INSTDIR\share\tk8.4\tk.tcl" Delete "$INSTDIR\share\tk8.4\text.tcl" Delete "$INSTDIR\share\tk8.4\tearoff.tcl" Delete "$INSTDIR\share\tk8.4\spinbox.tcl" Delete "$INSTDIR\share\tk8.4\scrlbar.tcl" Delete "$INSTDIR\share\tk8.4\scale.tcl" Delete "$INSTDIR\share\tk8.4\safetk.tcl" Delete "$INSTDIR\share\tk8.4\panedwindow.tcl" Delete "$INSTDIR\share\tk8.4\palette.tcl" Delete "$INSTDIR\share\tk8.4\optMenu.tcl" Delete "$INSTDIR\share\tk8.4\obsolete.tcl" Delete "$INSTDIR\share\tk8.4\msgbox.tcl" Delete "$INSTDIR\share\tk8.4\mkpsenc.tcl" Delete "$INSTDIR\share\tk8.4\menu.tcl" Delete "$INSTDIR\share\tk8.4\listbox.tcl" Delete "$INSTDIR\share\tk8.4\focus.tcl" Delete "$INSTDIR\share\tk8.4\entry.tcl" Delete "$INSTDIR\share\tk8.4\dialog.tcl" Delete "$INSTDIR\share\tk8.4\console.tcl" Delete "$INSTDIR\share\tk8.4\comdlg.tcl" Delete "$INSTDIR\share\tk8.4\clrpick.tcl" Delete "$INSTDIR\share\tk8.4\choosedir.tcl" Delete "$INSTDIR\share\tk8.4\button.tcl" Delete "$INSTDIR\share\tk8.4\bgerror.tcl" Delete "$INSTDIR\share\tk8.4\msgs\ru.msg" Delete "$INSTDIR\share\tk8.4\msgs\nl.msg" Delete "$INSTDIR\share\tk8.4\msgs\it.msg" Delete "$INSTDIR\share\tk8.4\msgs\fr.msg" Delete "$INSTDIR\share\tk8.4\msgs\es.msg" Delete "$INSTDIR\share\tk8.4\msgs\en_gb.msg" Delete "$INSTDIR\share\tk8.4\msgs\en.msg" Delete "$INSTDIR\share\tk8.4\msgs\el.msg" Delete "$INSTDIR\share\tk8.4\msgs\de.msg" Delete "$INSTDIR\share\tk8.4\msgs\cs.msg" Delete "$INSTDIR\share\tk8.4\images\tai-ku.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo75.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo200.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo175.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo150.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo100.gif" Delete "$INSTDIR\share\tk8.4\images\pwrdLogo.eps" Delete "$INSTDIR\share\tk8.4\images\logoMed.gif" Delete "$INSTDIR\share\tk8.4\images\logoLarge.gif" Delete "$INSTDIR\share\tk8.4\images\logo64.gif" Delete "$INSTDIR\share\tk8.4\images\logo100.gif" Delete "$INSTDIR\share\tk8.4\images\logo.eps" Delete "$INSTDIR\share\tk8.4\images\README" Delete "$INSTDIR\share\tcl8.4\tclIndex" Delete "$INSTDIR\share\tcl8.4\word.tcl" Delete "$INSTDIR\share\tcl8.4\safe.tcl" Delete "$INSTDIR\share\tcl8.4\parray.tcl" Delete "$INSTDIR\share\tcl8.4\package.tcl" Delete "$INSTDIR\share\tcl8.4\ldAout.tcl" Delete "$INSTDIR\share\tcl8.4\init.tcl" Delete "$INSTDIR\share\tcl8.4\history.tcl" Delete "$INSTDIR\share\tcl8.4\auto.tcl" Delete "$INSTDIR\share\tcl8.4\tcltest2.2\tcltest.tcl" Delete "$INSTDIR\share\tcl8.4\tcltest2.2\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\msgcat1.3\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\msgcat1.3\msgcat.tcl" Delete "$INSTDIR\share\tcl8.4\encoding\tis-620.enc" Delete "$INSTDIR\share\tcl8.4\encoding\symbol.enc" Delete "$INSTDIR\share\tcl8.4\encoding\shiftjis.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macUkraine.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macTurkish.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macThai.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macRomania.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macRoman.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macJapan.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macIceland.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macGreek.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macDingbats.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macCyrillic.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macCroatian.enc" Delete "$INSTDIR\share\tcl8.4\encoding\macCentEuro.enc" Delete "$INSTDIR\share\tcl8.4\encoding\ksc5601.enc" Delete "$INSTDIR\share\tcl8.4\encoding\koi8-u.enc" Delete "$INSTDIR\share\tcl8.4\encoding\koi8-r.enc" Delete "$INSTDIR\share\tcl8.4\encoding\jis0212.enc" Delete "$INSTDIR\share\tcl8.4\encoding\jis0208.enc" Delete "$INSTDIR\share\tcl8.4\encoding\jis0201.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-9.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-8.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-7.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-6.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-5.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-4.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-3.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-2.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-16.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-15.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-14.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-13.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-10.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso8859-1.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso2022.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso2022-kr.enc" Delete "$INSTDIR\share\tcl8.4\encoding\iso2022-jp.enc" Delete "$INSTDIR\share\tcl8.4\encoding\gb2312.enc" Delete "$INSTDIR\share\tcl8.4\encoding\gb1988.enc" Delete "$INSTDIR\share\tcl8.4\encoding\gb12345.enc" Delete "$INSTDIR\share\tcl8.4\encoding\euc-kr.enc" Delete "$INSTDIR\share\tcl8.4\encoding\euc-jp.enc" Delete "$INSTDIR\share\tcl8.4\encoding\euc-cn.enc" Delete "$INSTDIR\share\tcl8.4\encoding\ebcdic.enc" Delete "$INSTDIR\share\tcl8.4\encoding\dingbats.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp950.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp949.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp936.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp932.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp874.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp869.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp866.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp865.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp864.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp863.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp862.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp861.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp860.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp857.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp855.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp852.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp850.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp775.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp737.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp437.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1258.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1257.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1256.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1255.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1254.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1253.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1252.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1251.enc" Delete "$INSTDIR\share\tcl8.4\encoding\cp1250.enc" Delete "$INSTDIR\share\tcl8.4\encoding\big5.enc" Delete "$INSTDIR\share\tcl8.4\encoding\ascii.enc" Delete "$INSTDIR\share\tcl8.4\opt0.4\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\opt0.4\optparse.tcl" Delete "$INSTDIR\share\tcl8.4\http2.4\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\http2.4\http.tcl" Delete "$INSTDIR\share\tcl8.4\http1.0\pkgIndex.tcl" Delete "$INSTDIR\share\tcl8.4\http1.0\http.tcl" Delete "$INSTDIR\share\tiemu\LICENSES" Delete "$INSTDIR\share\tiemu\AUTHORS" Delete "$INSTDIR\share\tiemu\RELEASE" Delete "$INSTDIR\share\tiemu\COPYING" Delete "$INSTDIR\share\tiemu\Manpage.txt" Delete "$INSTDIR\share\tiemu\Readme.txt" Delete "$INSTDIR\share\tiemu\skins\ti92_fr.map" Delete "$INSTDIR\share\tiemu\skins\ti92.map" Delete "$INSTDIR\share\tiemu\skins\ti89_fr.map" Delete "$INSTDIR\share\tiemu\skins\ti89.map" Delete "$INSTDIR\share\tiemu\skins\v200plt.skn" Delete "$INSTDIR\share\tiemu\skins\ti92.skn" Delete "$INSTDIR\share\tiemu\skins\ti89t.skn" Delete "$INSTDIR\share\tiemu\skins\ti89.skn" Delete "$INSTDIR\share\tiemu\skins\ipaq_v200plt.skn" Delete "$INSTDIR\share\tiemu\skins\ipaq_92.skn" Delete "$INSTDIR\share\tiemu\skins\ipaq_89.skn" Delete "$INSTDIR\share\tiemu\pixmaps\void.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\run_2.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\run_1.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\romdump.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\romdump.ico" Delete "$INSTDIR\share\tiemu\pixmaps\logo.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\icon.xpm" Delete "$INSTDIR\share\tiemu\pixmaps\bkpt.xpm" Delete "$INSTDIR\share\tiemu\misc\romcalls.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_v200_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti92p_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti92p_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti92_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti89t_hw4.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti89t_hw3.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti89_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\memmap_ti89_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_v200_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti92p_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti92p_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti92_hw1.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti89t_hw4.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti89t_hw3.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti89_hw2.txt" Delete "$INSTDIR\share\tiemu\misc\iodefs_ti89_hw1.txt" Delete "$INSTDIR\share\tiemu\pedrom\pedrom.txt" Delete "$INSTDIR\share\tiemu\pedrom\pedromv2.tib" Delete "$INSTDIR\share\tiemu\pedrom\pedrom9x.tib" Delete "$INSTDIR\share\tiemu\pedrom\pedrom89ti.tib" Delete "$INSTDIR\share\tiemu\pedrom\pedrom89.tib" Delete "$INSTDIR\share\tiemu\help\tiemu.jpg" Delete "$INSTDIR\share\tiemu\help\skinedit.jpg" Delete "$INSTDIR\share\tiemu\help\wizard.png" Delete "$INSTDIR\share\tiemu\help\screenshot.png" Delete "$INSTDIR\share\tiemu\help\romversion.png" Delete "$INSTDIR\share\tiemu\help\popup_menu.png" Delete "$INSTDIR\share\tiemu\help\no_skin.png" Delete "$INSTDIR\share\tiemu\help\logo_tiemu.png" Delete "$INSTDIR\share\tiemu\help\logo_lpg.png" Delete "$INSTDIR\share\tiemu\help\log_link.png" Delete "$INSTDIR\share\tiemu\help\linkport.png" Delete "$INSTDIR\share\tiemu\help\dbg_stack.png" Delete "$INSTDIR\share\tiemu\help\dbg_sr.png" Delete "$INSTDIR\share\tiemu\help\dbg_source.png" Delete "$INSTDIR\share\tiemu\help\dbg_search.png" Delete "$INSTDIR\share\tiemu\help\dbg_registers.png" Delete "$INSTDIR\share\tiemu\help\dbg_mem.png" Delete "$INSTDIR\share\tiemu\help\dbg_heap.png" Delete "$INSTDIR\share\tiemu\help\dbg_bkpts.png" Delete "$INSTDIR\share\tiemu\help\calc_infos.png" Delete "$INSTDIR\share\tiemu\help\chapter22.html" Delete "$INSTDIR\share\tiemu\help\chapter21.html" Delete "$INSTDIR\share\tiemu\help\chapter20.html" Delete "$INSTDIR\share\tiemu\help\chapter11.html" Delete "$INSTDIR\share\tiemu\help\chapter10.html" Delete "$INSTDIR\share\tiemu\help\chapter09.html" Delete "$INSTDIR\share\tiemu\help\chapter08.html" Delete "$INSTDIR\share\tiemu\help\chapter07.html" Delete "$INSTDIR\share\tiemu\help\chapter06.html" Delete "$INSTDIR\share\tiemu\help\chapter05.html" Delete "$INSTDIR\share\tiemu\help\chapter04.html" Delete "$INSTDIR\share\tiemu\help\chapter03.html" Delete "$INSTDIR\share\tiemu\help\chapter02.html" Delete "$INSTDIR\share\tiemu\help\chapter01.html" Delete "$INSTDIR\share\tiemu\help\Manual_en.html" Delete "$INSTDIR\share\tiemu\help\FAQ.html" Delete "$INSTDIR\share\tiemu\glade\wizard-2.glade" Delete "$INSTDIR\share\tiemu\glade\scroptions-2.glade" Delete "$INSTDIR\share\tiemu\glade\romversion-2.glade" Delete "$INSTDIR\share\tiemu\glade\release-2.glade" Delete "$INSTDIR\share\tiemu\glade\quicksend-2.glade" Delete "$INSTDIR\share\tiemu\glade\popup-2.glade" Delete "$INSTDIR\share\tiemu\glade\pbars-2.glade" Delete "$INSTDIR\share\tiemu\glade\manpage-2.glade" Delete "$INSTDIR\share\tiemu\glade\log_link-2.glade" Delete "$INSTDIR\share\tiemu\glade\infos-2.glade" Delete "$INSTDIR\share\tiemu\glade\dboxes-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_vectors-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_stack-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_regs-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_pclog-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_mem-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_ioports-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_heap-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_entry-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_dock-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_data-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_code-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_cause-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_bkpts-2.glade" Delete "$INSTDIR\share\tiemu\glade\dbg_bits-2.glade" Delete "$INSTDIR\share\tiemu\glade\device-2.glade" Delete "$INSTDIR\share\tiemu\glade\calc-2.glade" Delete "$INSTDIR\include\itkDecls.h" Delete "$INSTDIR\include\itk.h" Delete "$INSTDIR\include\itclIntDecls.h" Delete "$INSTDIR\include\itclInt.h" Delete "$INSTDIR\include\itclDecls.h" Delete "$INSTDIR\include\itcl.h" Delete "$INSTDIR\include\tkDecls.h" Delete "$INSTDIR\include\tkIntXlibDecls.h" Delete "$INSTDIR\include\tkPlatDecls.h" Delete "$INSTDIR\include\tk.h" Delete "$INSTDIR\include\X11\keysymdef.h" Delete "$INSTDIR\include\X11\keysym.h" Delete "$INSTDIR\include\X11\cursorfont.h" Delete "$INSTDIR\include\X11\Xutil.h" Delete "$INSTDIR\include\X11\Xlib.h" Delete "$INSTDIR\include\X11\Xfuncproto.h" Delete "$INSTDIR\include\X11\Xatom.h" Delete "$INSTDIR\include\X11\X.h" Delete "$INSTDIR\include\tclPlatDecls.h" Delete "$INSTDIR\include\tclDecls.h" Delete "$INSTDIR\include\tcl.h" Delete "$INSTDIR\include\tilp2\ticonv.h" Delete "$INSTDIR\include\tilp2\charset.h" Delete "$INSTDIR\include\tilp2\ticalcs.h" Delete "$INSTDIR\include\tilp2\keys92p.h" Delete "$INSTDIR\include\tilp2\keys89.h" Delete "$INSTDIR\include\tilp2\keys83p.h" Delete "$INSTDIR\include\tilp2\keys73.h" Delete "$INSTDIR\include\tilp2\typesxx.h" Delete "$INSTDIR\include\tilp2\typesnsp.h" Delete "$INSTDIR\include\tilp2\typesv2.h" Delete "$INSTDIR\include\tilp2\types92p.h" Delete "$INSTDIR\include\tilp2\types92.h" Delete "$INSTDIR\include\tilp2\types89t.h" Delete "$INSTDIR\include\tilp2\types89.h" Delete "$INSTDIR\include\tilp2\types86.h" Delete "$INSTDIR\include\tilp2\types85.h" Delete "$INSTDIR\include\tilp2\types84p.h" Delete "$INSTDIR\include\tilp2\types83p.h" Delete "$INSTDIR\include\tilp2\types83.h" Delete "$INSTDIR\include\tilp2\types82.h" Delete "$INSTDIR\include\tilp2\types73.h" Delete "$INSTDIR\include\tilp2\tifiles.h" Delete "$INSTDIR\include\tilp2\stdints4.h" Delete "$INSTDIR\include\tilp2\stdints3.h" Delete "$INSTDIR\include\tilp2\stdints2.h" Delete "$INSTDIR\include\tilp2\stdints1.h" Delete "$INSTDIR\include\tilp2\files9x.h" Delete "$INSTDIR\include\tilp2\files8x.h" Delete "$INSTDIR\include\tilp2\timeout.h" Delete "$INSTDIR\include\tilp2\ticables.h" Delete "$INSTDIR\include\tilp2\export4.h" Delete "$INSTDIR\include\tilp2\export3.h" Delete "$INSTDIR\include\tilp2\export2.h" Delete "$INSTDIR\include\tilp2\export1.h" Delete "$INSTDIR\bin\itk32.dll" Delete "$INSTDIR\bin\itcl32.dll" Delete "$INSTDIR\bin\wish84.exe" Delete "$INSTDIR\bin\tk84.dll" Delete "$INSTDIR\bin\tclpip84.dll" Delete "$INSTDIR\bin\tclsh84.exe" Delete "$INSTDIR\bin\tcl84.dll" Delete "$INSTDIR\bin\tiemups.dll" Delete "$INSTDIR\bin\tiemu.tlb" Delete "$INSTDIR\bin\tiemu.exe" Delete "$INSTDIR\bin\libusb0.dll" Delete "$INSTDIR\bin\libticonv-3.dll" Delete "$INSTDIR\bin\libticalcs2-7.dll" Delete "$INSTDIR\bin\libtifiles2-5.dll" Delete "$INSTDIR\bin\libticables2-1.dll" Delete "$INSTDIR\lib\libitkstub32.a" Delete "$INSTDIR\lib\itk3.2\pkgIndex.tcl" Delete "$INSTDIR\lib\libitclstub32.a" Delete "$INSTDIR\lib\itcl3.2\pkgIndex.tcl" Delete "$INSTDIR\lib\libtkstub84.a" Delete "$INSTDIR\lib\libtk84.a" Delete "$INSTDIR\lib\tkConfig.sh" Delete "$INSTDIR\lib\tk8.4\pkgIndex.tcl" Delete "$INSTDIR\lib\libtclstub84.a" Delete "$INSTDIR\lib\libtcl84.a" Delete "$INSTDIR\lib\tclConfig.sh" Delete "$INSTDIR\lib\reg1.1\pkgIndex.tcl" Delete "$INSTDIR\lib\reg1.1\tclreg11.dll" Delete "$INSTDIR\lib\dde1.2\pkgIndex.tcl" Delete "$INSTDIR\lib\dde1.2\tcldde12.dll" Delete "$INSTDIR\lib\libticonv.la" Delete "$INSTDIR\lib\libticonv.dll.a" Delete "$INSTDIR\lib\libticalcs2.la" Delete "$INSTDIR\lib\libticalcs2.dll.a" Delete "$INSTDIR\lib\libtifiles2.la" Delete "$INSTDIR\lib\libtifiles2.dll.a" Delete "$INSTDIR\lib\pkgconfig\ticonv.pc" Delete "$INSTDIR\lib\pkgconfig\ticalcs2.pc" Delete "$INSTDIR\lib\pkgconfig\tifiles2.pc" Delete "$INSTDIR\lib\pkgconfig\ticables2.pc" Delete "$INSTDIR\lib\libticables2.la" Delete "$INSTDIR\lib\libticables2.dll.a" Delete "$SMPROGRAMS\$ICONS_GROUP\Readme.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" Delete "$DESKTOP\TiEmu.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\TiEmu.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP" RMDir "$INSTDIR\share\tk8.4\msgs" RMDir "$INSTDIR\share\tk8.4\images" RMDir "$INSTDIR\share\tk8.4\demos\images" RMDir "$INSTDIR\share\tk8.4\demos" RMDir "$INSTDIR\share\tk8.4" RMDir "$INSTDIR\share\tiemu\skins" RMDir "$INSTDIR\share\tiemu\pixmaps" RMDir "$INSTDIR\share\tiemu\pedrom" RMDir "$INSTDIR\share\tiemu\misc" RMDir "$INSTDIR\share\tiemu\help" RMDir "$INSTDIR\share\tiemu\glade" RMDir "$INSTDIR\share\tiemu\images" RMDir "$INSTDIR\share\tiemu" RMDir "$INSTDIR\share\tcl8.4\tcltest2.2" RMDir "$INSTDIR\share\tcl8.4\opt0.4" RMDir "$INSTDIR\share\tcl8.4\msgcat1.3" RMDir "$INSTDIR\share\tcl8.4\http2.4" RMDir "$INSTDIR\share\tcl8.4\http1.0" RMDir "$INSTDIR\share\tcl8.4\encoding" RMDir "$INSTDIR\share\tcl8.4" RMDir "$INSTDIR\share\redhat\gui" RMDir "$INSTDIR\share\redhat" RMDir "$INSTDIR\share\iwidgets4.0.1\scripts" RMDir "$INSTDIR\share\iwidgets4.0.1\demos\images" RMDir "$INSTDIR\share\iwidgets4.0.1\demos\html" RMDir "$INSTDIR\share\iwidgets4.0.1\demos" RMDir "$INSTDIR\share\iwidgets4.0.1" RMDir "$INSTDIR\share\itk3.2" RMDir "$INSTDIR\share\itcl3.2" RMDir "$INSTDIR\share\insight1.0\images2" RMDir "$INSTDIR\share\insight1.0\images" RMDir "$INSTDIR\share\insight1.0\help\trace" RMDir "$INSTDIR\share\insight1.0\help\images" RMDir "$INSTDIR\share\insight1.0\help" RMDir "$INSTDIR\share\insight1.0" RMDir "$INSTDIR\share\man\man1" RMDir "$INSTDIR\share\man" RMDir "$INSTDIR\share" RMDir "$INSTDIR\man\mann" RMDir "$INSTDIR\man" RMDir "$INSTDIR\lib\tk8.4" RMDir "$INSTDIR\lib\reg1.1" RMDir "$INSTDIR\lib\pkgconfig" RMDir "$INSTDIR\lib\itk3.2" RMDir "$INSTDIR\lib\itcl3.2" RMDir "$INSTDIR\lib\dde1.2" RMDir "$INSTDIR\lib" RMDir "$INSTDIR\include\X11" RMDir "$INSTDIR\include\tilp2" RMDir "$INSTDIR\include" RMDir "$INSTDIR\bin" RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true SectionEnd tiemu-3.03-nogdb+dfsg/build/nsis/vercmp.nsi000066400000000000000000000044041220314353500206520ustar00rootroot00000000000000; This file comes from the NSIS archive. ;----------------------------------------------------------------------------- ; CompareVersions ; input: ; top of stack = existing version ; top of stack-1 = needed version ; output: ; top of stack = 1 if current version => neded version, else 0 ; version is a string in format "xx.xx.xx.xx" (number of interger sections ; can be different in needed and existing versions) Function CompareVersions ; stack: existing ver | needed ver Exch $R0 Exch Exch $R1 ; stack: $R1|$R0 Push $R1 Push $R0 ; stack: e|n|$R1|$R0 ClearErrors loop: IfErrors VersionNotFound Strcmp $R0 "" VersionTestEnd Call ParseVersion Pop $R0 Exch Call ParseVersion Pop $R1 Exch IntCmp $R1 $R0 +1 VersionOk VersionNotFound Pop $R0 Push $R0 goto loop VersionTestEnd: Pop $R0 Pop $R1 Push $R1 Push $R0 StrCmp $R0 $R1 VersionOk VersionNotFound VersionNotFound: StrCpy $R0 "0" Goto end VersionOk: StrCpy $R0 "1" end: ; stack: e|n|$R1|$R0 Exch $R0 Pop $R0 Exch $R0 ; stack: res|$R1|$R0 Exch ; stack: $R1|res|$R0 Pop $R1 ; stack: res|$R0 Exch Pop $R0 ; stack: res FunctionEnd ;--------------------------------------------------------------------------------------- ; ParseVersion ; input: ; top of stack = version string ("xx.xx.xx.xx") ; output: ; top of stack = first number in version ("xx") ; top of stack-1 = rest of the version string ("xx.xx.xx") Function ParseVersion Exch $R1 ; version Push $R2 Push $R3 StrCpy $R2 1 loop: StrCpy $R3 $R1 1 $R2 StrCmp $R3 "." loopend StrLen $R3 $R1 IntCmp $R3 $R2 loopend loopend IntOp $R2 $R2 + 1 Goto loop loopend: Push $R1 StrCpy $R1 $R1 $R2 Exch $R1 StrLen $R3 $R1 IntOp $R3 $R3 - $R2 IntOp $R2 $R2 + 1 StrCpy $R1 $R1 $R3 $R2 Push $R1 Exch 2 Pop $R3 Exch 2 Pop $R2 Exch 2 Pop $R1 FunctionEnd ;--------------------------------------------------------------------------------------- tiemu-3.03-nogdb+dfsg/compile000077500000000000000000000053261220314353500161520ustar00rootroot00000000000000#! /bin/sh # Wrapper for compilers which do not understand `-c -o'. # Copyright 1999, 2000 Free Software Foundation, Inc. # Written by Tom Tromey . # # 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, 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. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Usage: # compile PROGRAM [ARGS]... # `-o FOO.o' is removed from the args passed to the actual compile. prog=$1 shift ofile= cfile= args= while test $# -gt 0; do case "$1" in -o) # configure might choose to run compile as `compile cc -o foo foo.c'. # So we do something ugly here. ofile=$2 shift case "$ofile" in *.o | *.obj) ;; *) args="$args -o $ofile" ofile= ;; esac ;; *.c) cfile=$1 args="$args $1" ;; *) args="$args $1" ;; esac shift done if test -z "$ofile" || test -z "$cfile"; then # If no `-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # `.c' file was seen then we are probably linking. That is also # ok. exec "$prog" $args fi # Name of file we expect compiler to create. cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'` # Create the lock directory. # Note: use `[/.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d while true; do if mkdir $lockdir > /dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir $lockdir; exit 1" 1 2 15 # Run the compile. "$prog" $args status=$? if test -f "$cofile"; then mv "$cofile" "$ofile" fi rmdir $lockdir exit $status tiemu-3.03-nogdb+dfsg/config.guess000077500000000000000000001270611220314353500171150ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, # Inc. timestamp='2007-07-22' # 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 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., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa:Linux:*:*) echo xtensa-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: tiemu-3.03-nogdb+dfsg/config.h.in000066400000000000000000000343211220314353500166140ustar00rootroot00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the `argz_count' function. */ #undef HAVE_ARGZ_COUNT /* Define to 1 if you have the header file. */ #undef HAVE_ARGZ_H /* Define to 1 if you have the `argz_next' function. */ #undef HAVE_ARGZ_NEXT /* Define to 1 if you have the `argz_stringify' function. */ #undef HAVE_ARGZ_STRINGIFY /* Define to 1 if you have the `asprintf' function. */ #undef HAVE_ASPRINTF /* Define to 1 if the compiler understands __builtin_expect. */ #undef HAVE_BUILTIN_EXPECT /* Define to 1 if you have the `bzero' function. */ #undef HAVE_BZERO /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Defines if your system has the crypt function */ #undef HAVE_CRYPT /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you don't. */ #undef HAVE_DECL_FEOF_UNLOCKED /* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if you don't. */ #undef HAVE_DECL_FGETS_UNLOCKED /* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you don't. */ #undef HAVE_DECL_GETC_UNLOCKED /* Define to 1 if you have the declaration of `_snprintf', and to 0 if you don't. */ #undef HAVE_DECL__SNPRINTF /* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you don't. */ #undef HAVE_DECL__SNWPRINTF /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Use -fvisibility=hidden flag */ #undef HAVE_FVISIBILITY /* Define to 1 if you have the `fwprintf' function. */ #undef HAVE_FWPRINTF /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if you have the `getegid' function. */ #undef HAVE_GETEGID /* Define to 1 if you have the `geteuid' function. */ #undef HAVE_GETEUID /* Define to 1 if you have the `getgid' function. */ #undef HAVE_GETGID /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the `getuid' function. */ #undef HAVE_GETUID /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define if you have the 'intmax_t' type in or . */ #undef HAVE_INTMAX_T /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if exists, doesn't clash with , and declares uintmax_t. */ #undef HAVE_INTTYPES_H_WITH_UINTMAX /* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the header file. */ #undef HAVE_LIBINTL_H /* Define if you have libjpeg */ #undef HAVE_LIBJPEG /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM /* Define if you have libpng */ #undef HAVE_LIBPNG /* Define if you have a working libpthread (will enable threaded code) */ #undef HAVE_LIBPTHREAD /* Define if you have libz */ #undef HAVE_LIBZ /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define if you have the 'long double' type. */ #undef HAVE_LONG_DOUBLE /* Define to 1 if the system has the type `long long int'. */ #undef HAVE_LONG_LONG_INT /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mempcpy' function. */ #undef HAVE_MEMPCPY /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the `mkdir' function. */ #undef HAVE_MKDIR /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP /* Define to 1 if you have the `munmap' function. */ #undef HAVE_MUNMAP /* Define if you have and it defines the NL_LOCALE_NAME macro if _GNU_SOURCE is defined. */ #undef HAVE_NL_LOCALE_NAME /* Define if your printf() function supports format strings with positions. */ #undef HAVE_POSIX_PRINTF /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_LINUXTHREADS_PTHREAD_H /* Define if the defines PTHREAD_MUTEX_RECURSIVE. */ #undef HAVE_PTHREAD_MUTEX_RECURSIVE /* Define if the POSIX multithreading library has read/write locks. */ #undef HAVE_PTHREAD_RWLOCK /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define if you have the res_init function */ #undef HAVE_RES_INIT /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT /* Define to 1 if you have the `setenv' function. */ #undef HAVE_SETENV /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_STAT_EMPTY_STRING_BUG /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define if exists, doesn't clash with , and declares uintmax_t. */ #undef HAVE_STDINT_H_WITH_UINTMAX /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `stpcpy' function. */ #undef HAVE_STPCPY /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the `strtoul' function. */ #undef HAVE_STRTOUL /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMEB_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_TILP2_TICABLES_H /* Define to 1 if you have the header file. */ #undef HAVE_TILP2_TICALCS_H /* Define to 1 if you have the header file. */ #undef HAVE_TILP2_TIFILES_H /* Define to 1 if you have the `tsearch' function. */ #undef HAVE_TSEARCH /* Define if you have the 'uintmax_t' type in or . */ #undef HAVE_UINTMAX_T /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define if you have the 'unsigned long long' type. */ #undef HAVE_UNSIGNED_LONG_LONG /* Define to 1 if the system has the type `unsigned long long int'. */ #undef HAVE_UNSIGNED_LONG_LONG_INT /* Define to 1 or 0, depending whether the compiler supports simple visibility declarations. */ #undef HAVE_VISIBILITY /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define if you have the 'wchar_t' type. */ #undef HAVE_WCHAR_T /* Define to 1 if you have the `wcslen' function. */ #undef HAVE_WCSLEN /* Define if you have the 'wint_t' type. */ #undef HAVE_WINT_T /* Define if you want Xinerama support */ #undef HAVE_XINERAMA /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define to 1 if you have the `__fsetlocking' function. */ #undef HAVE___FSETLOCKING /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST /* Define if integer division by zero raises signal SIGFPE. */ #undef INTDIV0_RAISES_SIGFPE /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Defined to disable the debugger */ #undef NO_DEBUGGER /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define if exists and defines unusable PRI* macros. */ #undef PRI_MACROS_BROKEN /* Define if the pthread_in_use() detection is hard. */ #undef PTHREAD_IN_USE_DETECTION_HARD /* Define to the type of arg 1 for `select'. */ #undef SELECT_TYPE_ARG1 /* Define to the type of args 2, 3 and 4 for `select'. */ #undef SELECT_TYPE_ARG234 /* Define to the type of arg 5 for `select'. */ #undef SELECT_TYPE_ARG5 /* The size of `char', as computed by sizeof. */ #undef SIZEOF_CHAR /* The size of `char *', as computed by sizeof. */ #undef SIZEOF_CHAR_P /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* Define as the maximum value of type 'size_t', if the system doesn't define it. */ #undef SIZE_MAX /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define if the POSIX multithreading library can be used. */ #undef USE_POSIX_THREADS /* Define if references to the POSIX multithreading library should be made weak. */ #undef USE_POSIX_THREADS_WEAK /* Define if the GNU Pth multithreading library can be used. */ #undef USE_PTH_THREADS /* Define if references to the GNU Pth multithreading library should be made weak. */ #undef USE_PTH_THREADS_WEAK /* Define if the old Solaris multithreading library can be used. */ #undef USE_SOLARIS_THREADS /* Define if references to the old Solaris multithreading library should be made weak. */ #undef USE_SOLARIS_THREADS_WEAK /* Define if the Win32 multithreading API can be used. */ #undef USE_WIN32_THREADS /* Version number of package */ #undef VERSION /* Use D-Bus support */ #undef WITH_DBUS /* Use KDE support */ #undef WITH_KDE /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Compatibility define */ #undef ksize_t /* Define as the type of the result of subtracting two pointers, if the system doesn't define it. */ #undef ptrdiff_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define the real type of socklen_t */ #undef socklen_t /* Define to unsigned long or unsigned long long if and don't define. */ #undef uintmax_t /* Define to empty if the keyword `volatile' does not work. Warning: valid code using `volatile' can become incorrect without. Disable with care. */ #undef volatile #define __libc_lock_t gl_lock_t #define __libc_lock_define gl_lock_define #define __libc_lock_define_initialized gl_lock_define_initialized #define __libc_lock_init gl_lock_init #define __libc_lock_lock gl_lock_lock #define __libc_lock_unlock gl_lock_unlock #define __libc_lock_recursive_t gl_recursive_lock_t #define __libc_lock_define_recursive gl_recursive_lock_define #define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized #define __libc_lock_init_recursive gl_recursive_lock_init #define __libc_lock_lock_recursive gl_recursive_lock_lock #define __libc_lock_unlock_recursive gl_recursive_lock_unlock #define glthread_in_use libintl_thread_in_use #define glthread_lock_init libintl_lock_init #define glthread_lock_lock libintl_lock_lock #define glthread_lock_unlock libintl_lock_unlock #define glthread_lock_destroy libintl_lock_destroy #define glthread_rwlock_init libintl_rwlock_init #define glthread_rwlock_rdlock libintl_rwlock_rdlock #define glthread_rwlock_wrlock libintl_rwlock_wrlock #define glthread_rwlock_unlock libintl_rwlock_unlock #define glthread_rwlock_destroy libintl_rwlock_destroy #define glthread_recursive_lock_init libintl_recursive_lock_init #define glthread_recursive_lock_lock libintl_recursive_lock_lock #define glthread_recursive_lock_unlock libintl_recursive_lock_unlock #define glthread_recursive_lock_destroy libintl_recursive_lock_destroy #define glthread_once libintl_once #define glthread_once_call libintl_once_call #define glthread_once_singlethreaded libintl_once_singlethreaded tiemu-3.03-nogdb+dfsg/config.rpath000077500000000000000000000374441220314353500171120ustar00rootroot00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2006 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; darwin*) case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; mingw* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux*) case $cc_basename in icc* | ecc*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; sco3.2v5*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) wl='-Wl,' ;; sysv4*MP*) ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we cannot use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; interix3*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if test "$GCC" = yes ; then : else case $cc_basename in xlc*) ;; *) ld_shlibs=no ;; esac fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | kfreebsd*-gnu | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. libname_spec='lib$name' case "$host_os" in aix3*) ;; aix4* | aix5*) ;; amigaos*) ;; beos*) ;; bsdi[45]*) ;; cygwin* | mingw* | pw32*) shrext=.dll ;; darwin* | rhapsody*) shrext=.dylib ;; dgux*) ;; freebsd1*) ;; kfreebsd*-gnu) ;; freebsd* | dragonfly*) ;; gnu*) ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac ;; interix3*) ;; irix5* | irix6* | nonstopux*) case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux*) ;; knetbsd*-gnu) ;; netbsd*) ;; newsos6) ;; nto-qnx*) ;; openbsd*) ;; os2*) libname_spec='$name' shrext=.dll ;; osf3* | osf4* | osf5*) ;; solaris*) ;; sunos4*) ;; sysv4 | sysv4.3*) ;; sysv4*MP*) ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ;; uts4*) ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16c) basic_machine=cr16c-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: tiemu-3.03-nogdb+dfsg/configure000077500000000000000000042506401220314353500165100ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for TiEmu 3.03. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell autoconf@gnu.org about your system, echo including any error possibly output before this echo message } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='TiEmu' PACKAGE_TARNAME='tiemu' PACKAGE_VERSION='3.03' PACKAGE_STRING='TiEmu 3.03' PACKAGE_BUGREPORT='tiemu-users@lists.sourceforge.net' ac_default_prefix=/usr/local ac_unique_file="src/gui/main.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" gt_needs= ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir localstatedir includedir oldincludedir docdir infodir htmldir dvidir pdfdir psdir libdir localedir mandir DEFS ECHO_C ECHO_N ECHO_T LIBS build_alias host_alias target_alias INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA am__isrc CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE SED GREP EGREP LN_S ECHO AR RANLIB DSYMUTIL NMEDIT DLLTOOL AS OBJDUMP CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL GROFF USE_GROFF_TRUE USE_GROFF_FALSE RC USE_NLS GETTEXT_MACRO_VERSION MSGFMT GMSGFMT MSGFMT_015 GMSGFMT_015 XGETTEXT XGETTEXT_015 MSGMERGE XGETTEXT_EXTRA_OPTIONS INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB INCINTL PKG_CONFIG TICABLES_CFLAGS TICABLES_LIBS TICALCS_CFLAGS TICALCS_LIBS TIFILES_CFLAGS TIFILES_LIBS TICONV_CFLAGS TICONV_LIBS GLIB_CFLAGS GLIB_LIBS GTK_CFLAGS GTK_LIBS GLADE_CFLAGS GLADE_LIBS DBUS_GLIB_CFLAGS DBUS_GLIB_LIBS dbus LIBOBJS LIBZ SDL_CONFIG SDL_CFLAGS SDL_LIBS LIBUTIL LIBCOMPAT LIBCRYPT LIBSOCKET LIBRESOLV X_EXTRA_LIBS LIBUCB LIBDL XMKMF X_INCLUDES X_LDFLAGS x_libraries x_includes LIBSM X_PRE_LIBS LIB_X11 LIBXINERAMA QTE_NORTTI LIB_XEXT LIBPTHREAD USE_THREADS KDE_MT_LDFLAGS KDE_MT_LIBS USER_INCLUDES USER_LDFLAGS LIBPNG LIBJPEG qt_libraries qt_includes QT_INCLUDES QT_LDFLAGS MOC UIC UIC_TR LIB_QT LIB_QPE kde_qtver KDE_EXTRA_RPATH KDE_RPATH kde_libraries kde_includes KDE_LDFLAGS KDE_INCLUDES all_includes all_libraries AUTODIRS DCOPIDL DCOPIDL2CPP DCOP_DEPENDENCIES KDECONFIG kde_libs_prefix kde_libs_htmldir kde_htmldir kde_appsdir kde_icondir kde_sounddir kde_datadir kde_locale kde_confdir kde_mimedir kde_wallpaperdir kde_bindir kde_templatesdir kde_servicesdir kde_servicetypesdir kde_moduledir kde_styledir kde_widgetdir LIB_KDECORE LIB_KDEUI LIB_KIO LIB_SMB LIB_KAB LIB_KHTML LIB_KSPELL LIB_KPARTS LIB_KDEPRINT LIB_KSYCOCA LIB_KFILE LIB_KFM kde NO_GDB_TRUE NO_GDB_FALSE subdirs LTLIBOBJS' ac_subst_files='' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC CXXCPP F77 FFLAGS PKG_CONFIG TICABLES_CFLAGS TICABLES_LIBS TICALCS_CFLAGS TICALCS_LIBS TIFILES_CFLAGS TIFILES_LIBS TICONV_CFLAGS TICONV_LIBS GLIB_CFLAGS GLIB_LIBS GTK_CFLAGS GTK_LIBS GLADE_CFLAGS GLADE_LIBS DBUS_GLIB_CFLAGS DBUS_GLIB_LIBS XMKMF' ac_subdirs_all='src/gdb' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute directory names. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { echo "$as_me: error: Working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures TiEmu 3.03 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/tiemu] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of TiEmu 3.03:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --disable-libtool-lock avoid locking (might break parallel builds) --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --disable-sound disable sound emulation --disable-sdltest Do not try to compile and run a test SDL program --enable-embedded link to Qt-embedded, don't use X --enable-qtopia link to Qt-embedded, link to the Qtopia Environment --disable-mt link to non-threaded Qt (deprecated) --enable-kernel-threads Enable the use of the LinuxThreads port on FreeBSD/i386 only. --disable-threading disables threading even if libpthread found --disable-rpath do not use the rpath feature of ld --disable-path-check don't try to find out, where to install --disable-debugger disable the built-in debugger --disable-gdb disable the GDB-based source-level debugger Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] --with-tags[=TAGS] include additional configurations [automatic] --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-dbus Compile with D-Bus support --with-sdl-prefix=PFX Prefix where SDL is installed (optional) --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional) --without-kde Compile without KDE support --with-xinerama enable support for Xinerama --with-extra-includes=DIR adds non standard include paths --with-extra-libs=DIR adds non standard library paths --with-qt-dir=DIR where the root of Qt is installed --with-qt-includes=DIR where the Qt includes are. --with-qt-libraries=DIR where the Qt library is installed. Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags PKG_CONFIG path to pkg-config utility TICABLES_CFLAGS C compiler flags for TICABLES, overriding pkg-config TICABLES_LIBS linker flags for TICABLES, overriding pkg-config TICALCS_CFLAGS C compiler flags for TICALCS, overriding pkg-config TICALCS_LIBS linker flags for TICALCS, overriding pkg-config TIFILES_CFLAGS C compiler flags for TIFILES, overriding pkg-config TIFILES_LIBS linker flags for TIFILES, overriding pkg-config TICONV_CFLAGS C compiler flags for TICONV, overriding pkg-config TICONV_LIBS linker flags for TICONV, overriding pkg-config GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config GLIB_LIBS linker flags for GLIB, overriding pkg-config GTK_CFLAGS C compiler flags for GTK, overriding pkg-config GTK_LIBS linker flags for GTK, overriding pkg-config GLADE_CFLAGS C compiler flags for GLADE, overriding pkg-config GLADE_LIBS linker flags for GLADE, overriding pkg-config DBUS_GLIB_CFLAGS C compiler flags for DBUS_GLIB, overriding pkg-config DBUS_GLIB_LIBS linker flags for DBUS_GLIB, overriding pkg-config XMKMF Path to xmkmf, Makefile generator for X Window System Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF TiEmu configure 3.03 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by TiEmu $as_me 3.03, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then set x "$CONFIG_SITE" elif test "x$prefix" != xNONE; then set x "$prefix/share/config.site" "$prefix/etc/config.site" else set x "$ac_default_prefix/share/config.site" \ "$ac_default_prefix/etc/config.site" fi shift for ac_site_file do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi gt_needs="$gt_needs " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.10' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' if test -z "$kde_save_INSTALL_given" ; then # OK, user hasn't given any INSTALL, autoconf found one for us # now we test, if it supports the -p flag { echo "$as_me:$LINENO: checking for -p flag to install" >&5 echo $ECHO_N "checking for -p flag to install... $ECHO_C" >&6; } rm -f confinst.$$.* > /dev/null 2>&1 echo "Testtest" > confinst.$$.orig ac_res=no if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then if test -f confinst.$$.new ; then # OK, -p seems to do no harm to install INSTALL="${INSTALL} -p" ac_res=yes fi fi rm -f confinst.$$.* { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test -z "$kde_save_INSTALL_PROGRAM_given" ; then INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)' fi if test -z "$kde_save_INSTALL_SCRIPT_given" ; then INSTALL_SCRIPT='${INSTALL}' fi { echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm -f conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi { echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { echo "$as_me:$LINENO: result: $MKDIR_P" >&5 echo "${ECHO_T}$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$AWK" && break done { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } SET_MAKE= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='tiemu' VERSION='3.03' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' { echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_config_headers="$ac_config_headers config.h" ac_config_files="$ac_config_files Makefile build/Makefile glade/Makefile help/Makefile man/Makefile misc/Makefile pedrom/Makefile pixmaps/Makefile po/Makefile.in skins/Makefile src/Makefile tiemu.lsm tiemu.spec" { echo "$as_me:$LINENO: checking for something to drink while compiling" >&5 echo $ECHO_N "checking for something to drink while compiling... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: err: no fridge found!" >&5 echo "${ECHO_T}err: no fridge found!" >&6; } # Setup libtool. # Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=no fi # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # # List of possible output files, starting from the most likely. # The algorithm is not robust to junk in `.', hence go to wildcards (a.*) # only as a last resort. b.out is created by i960 compilers. ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' # # The IRIX 6 linker writes into existing files which may not be # executable, retaining their permissions. Remove them first so a # subsequent execution test works. ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6; } if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6; } { echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext { echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6; } ;; xno) { echo "$as_me:$LINENO: result: unsupported" >&5 echo "${ECHO_T}unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done fi SED=$lt_cv_path_SED { echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6; } { echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Extract the first word of "grep ggrep" to use in msg output if test -z "$GREP"; then set dummy grep ggrep; ac_prog_name=$2 if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS fi GREP="$ac_cv_path_GREP" if test -z "$GREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 echo "${ECHO_T}$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else # Extract the first word of "egrep" to use in msg output if test -z "$EGREP"; then set dummy egrep; ac_prog_name=$2 if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS fi EGREP="$ac_cv_path_EGREP" if test -z "$EGREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } else { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi { echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac { echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi { echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 echo "${ECHO_T}$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" { echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6; } fi { echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 4603 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; *-*-cygwin* | *-*-mingw* | *-*-pw32*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_DLLTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { echo "$as_me:$LINENO: result: $DLLTOOL" >&5 echo "${ECHO_T}$DLLTOOL" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 echo "${ECHO_T}$ac_ct_DLLTOOL" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_AS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AS="${ac_tool_prefix}as" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { echo "$as_me:$LINENO: result: $AS" >&5 echo "${ECHO_T}$AS" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_AS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AS="as" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 echo "${ECHO_T}$ac_ct_AS" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { echo "$as_me:$LINENO: result: $OBJDUMP" >&5 echo "${ECHO_T}$OBJDUMP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 echo "${ECHO_T}$ac_ct_OBJDUMP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac need_locks="$enable_libtool_lock" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to tiemu-users@lists.sourceforge.net ## ## ------------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then { echo "$as_me:$LINENO: result: $F77" >&5 echo "${ECHO_T}$F77" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_F77" && break done if test "x$ac_ct_F77" = x; then F77="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 fi fi # Provide some information about the compiler. echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= { echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi G77=`test $ac_compiler_gnu = yes && echo yes` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments { echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } else { echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6; } fi # Check for command to grab the raw symbol name followed by C symbol from nm. { echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[ABCDGIRSTW]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6; } else { echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6; } fi { echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } if test "${lt_cv_objdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 echo "${ECHO_T}$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 echo "${ECHO_T}$DSYMUTIL" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { echo "$as_me:$LINENO: result: $NMEDIT" >&5 echo "${ECHO_T}$NMEDIT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. echo "int foo(void){return 1;}" > conftest.c $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib ${wl}-single_module conftest.c if test -f libconftest.dylib; then lt_cv_apple_cc_single_mod=yes rm -rf libconftest.dylib* fi rm conftest.c fi fi { echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_cv_ld_exported_symbols_list=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[0123]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil="~$DSYMUTIL \$lib || :" else _lt_dsymutil= fi ;; esac enable_dlopen=no enable_win32_dll=yes # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7950: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7954: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic='-qnocommon' lt_prog_compiler_wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8240: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8244: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8344: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8348: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi link_all_deplibs=no else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs=no ;; esac fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi { echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 echo "${ECHO_T}$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= { echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi ;; *) { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which library types will actually be built { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ compiler_lib_search_dirs \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ fix_srcfile_path \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { echo "$as_me:$LINENO: creating $ofile" >&5 echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags was given. if test "${with_tags+set}" = set; then withval=$with_tags; tagnames="$withval" fi if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= compiler_lib_search_dirs_CXX= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } else { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" if test "$GXX" = yes ; then output_verbose_link_cmd='echo' archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_CXX=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else ld_shlibs_CXX=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext compiler_lib_search_dirs_CXX= if test -n "$compiler_lib_search_path_CXX"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_CXX='-qnocommon' lt_prog_compiler_wl_CXX='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc* | ecpc*) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:13222: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:13226: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:13326: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:13330: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ;; linux* | k*bsd*-gnu) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 echo "${ECHO_T}$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ compiler_lib_search_dirs_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6; } GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_F77='-qnocommon' lt_prog_compiler_wl_F77='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; rdos*) lt_prog_compiler_static_F77='-non_shared' ;; solaris*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_F77='-Qoption ld ';; *) lt_prog_compiler_wl_F77='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; unicos*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_can_build_shared_F77=no ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14924: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:14928: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6; } if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_F77=yes fi else lt_cv_prog_compiler_static_works_F77=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6; } if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then : else lt_prog_compiler_static_F77= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:15028: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:15032: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_F77=no fi ;; interix[3-9]*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi link_all_deplibs_F77=no else ld_shlibs_F77=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = no; then runpath_var= hardcode_libdir_flag_spec_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77='$convenience' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_F77='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_F77=no ;; esac fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; *) hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_F77=no fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_F77='${wl}-z,text' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_F77='${wl}-z,text' allow_undefined_flag_F77='${wl}-z,nodefs' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi { echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6; } test "$ld_shlibs_F77" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 pic_flag=$lt_prog_compiler_pic_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ test "X$hardcode_automatic_F77" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 echo "${ECHO_T}$hardcode_action_F77" >&6; } if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ compiler_lib_search_dirs_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ fix_srcfile_path_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no old_archive_cmds_GCJ=$old_archive_cmds lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17248: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:17252: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_GCJ='-qnocommon' lt_prog_compiler_wl_GCJ='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-fpic' lt_prog_compiler_static_GCJ='-Bstatic' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; rdos*) lt_prog_compiler_static_GCJ='-non_shared' ;; solaris*) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_GCJ='-Qoption ld ';; *) lt_prog_compiler_wl_GCJ='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; unicos*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_can_build_shared_GCJ=no ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17538: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:17542: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_static_works_GCJ=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_GCJ=yes fi else lt_cv_prog_compiler_static_works_GCJ=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then : else lt_prog_compiler_static_GCJ= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17642: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:17646: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_GCJ=no fi ;; interix[3-9]*) hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi link_all_deplibs_GCJ=no else ld_shlibs_GCJ=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_GCJ=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = no; then runpath_var= hardcode_libdir_flag_spec_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ='$convenience' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_GCJ=no ;; esac fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; *) hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_GCJ=no fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_GCJ='${wl}-z,text' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_GCJ='${wl}-z,text' allow_undefined_flag_GCJ='${wl}-z,nodefs' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi { echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } test "$ld_shlibs_GCJ" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ pic_flag=$lt_prog_compiler_pic_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ test "X$hardcode_automatic_GCJ" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 echo "${ECHO_T}$hardcode_action_GCJ" >&6; } if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ compiler_lib_search_dirs_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ fix_srcfile_path_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ compiler_lib_search_dirs_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ fix_srcfile_path_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6; } ;; xno) { echo "$as_me:$LINENO: result: unsupported" >&5 echo "${ECHO_T}unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } SET_MAKE= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi { echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6; } fi { echo "$as_me:$LINENO: checking for library containing strerror" >&5 echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; } if test "${ac_cv_search_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strerror (); int main () { return strerror (); ; return 0; } _ACEOF for ac_lib in '' cposix; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_search_strerror=$ac_res else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_strerror+set}" = set; then break fi done if test "${ac_cv_search_strerror+set}" = set; then : else ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 echo "${ECHO_T}$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi # Extract the first word of "groff", so it can be a program name with args. set dummy groff; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_GROFF+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$GROFF"; then ac_cv_prog_GROFF="$GROFF" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_GROFF="yes" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_GROFF" && ac_cv_prog_GROFF="no" fi fi GROFF=$ac_cv_prog_GROFF if test -n "$GROFF"; then { echo "$as_me:$LINENO: result: $GROFF" >&5 echo "${ECHO_T}$GROFF" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "$GROFF" != "no"; then USE_GROFF_TRUE= USE_GROFF_FALSE='#' else USE_GROFF_TRUE='#' USE_GROFF_FALSE= fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. set dummy ${ac_tool_prefix}windres; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_RC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RC"; then ac_cv_prog_RC="$RC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RC="${ac_tool_prefix}windres" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RC=$ac_cv_prog_RC if test -n "$RC"; then { echo "$as_me:$LINENO: result: $RC" >&5 echo "${ECHO_T}$RC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_RC"; then ac_ct_RC=$RC # Extract the first word of "windres", so it can be a program name with args. set dummy windres; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_RC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RC"; then ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RC="windres" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RC=$ac_cv_prog_ac_ct_RC if test -n "$ac_ct_RC"; then { echo "$as_me:$LINENO: result: $ac_ct_RC" >&5 echo "${ECHO_T}$ac_ct_RC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_RC" = x; then RC="windres" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac RC=$ac_ct_RC fi else RC="$ac_cv_prog_RC" fi # Checks for libraries. { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.17 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { echo "$as_me:$LINENO: result: $MSGFMT" >&5 echo "${ECHO_T}$MSGFMT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 echo "${ECHO_T}$GMSGFMT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 echo "${ECHO_T}$XGETTEXT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_MSGMERGE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { echo "$as_me:$LINENO: result: $MSGMERGE" >&5 echo "${ECHO_T}$MSGMERGE" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } else { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } fi if test "${acl_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then { echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } if test "${acl_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { echo "$as_me:$LINENO: checking for shared library run path origin" >&5 echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; } if test "${acl_cv_rpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 echo "${ECHO_T}$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then enableval=$enable_rpath; : else enable_rpath=yes fi acl_libdirstem=lib searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` LIBICONV_PREFIX="$basedir" additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6; } if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then gt_cv_func_CFPreferencesCopyAppValue=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_CFPREFERENCESCOPYAPPVALUE 1 _ACEOF fi { echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6; } if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then gt_cv_func_CFLocaleCopyCurrent=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_CFLOCALECOPYCURRENT 1 _ACEOF fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6; } if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "$gt_func_gnugettext_libc=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$gt_func_gnugettext_libc'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { echo "$as_me:$LINENO: checking for iconv" >&5 echo $ECHO_N "checking for iconv... $ECHO_C" >&6; } if test "${am_cv_func_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 echo "${ECHO_T}$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { echo "$as_me:$LINENO: checking for working iconv" >&5 echo $ECHO_N "checking for working iconv... $ECHO_C" >&6; } if test "${am_cv_func_iconv_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi if test "$cross_compiling" = yes; then case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) return 1; } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) return 1; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv_works=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) am_cv_func_iconv_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi LIBS="$am_save_LIBS" fi { echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5 echo "${ECHO_T}$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then { echo "$as_me:$LINENO: checking how to link with libiconv" >&5 echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $LIBICONV" >&5 echo "${ECHO_T}$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` LIBINTL_PREFIX="$basedir" additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6; } if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "$gt_func_gnugettext_libintl=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi ac_res=`eval echo '${'$gt_func_gnugettext_libintl'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF #define ENABLE_NLS 1 _ACEOF else USE_NLS=no fi fi { echo "$as_me:$LINENO: checking whether to use NLS" >&5 echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { echo "$as_me:$LINENO: result: $gt_source" >&5 echo "${ECHO_T}$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { echo "$as_me:$LINENO: checking how to link with libintl" >&5 echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $LIBINTL" >&5 echo "${ECHO_T}$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi cat >>confdefs.h <<\_ACEOF #define HAVE_GETTEXT 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi POSUB=po fi INTLLIBS="$LIBINTL" if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 echo "${ECHO_T}$PKG_CONFIG" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { echo "$as_me:$LINENO: checking for TICABLES" >&5 echo $ECHO_N "checking for TICABLES... $ECHO_C" >&6; } if test -n "$PKG_CONFIG"; then if test -n "$TICABLES_CFLAGS"; then pkg_cv_TICABLES_CFLAGS="$TICABLES_CFLAGS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ticables2 >= 1.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "ticables2 >= 1.3.0") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_TICABLES_CFLAGS=`$PKG_CONFIG --cflags "ticables2 >= 1.3.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$TICABLES_LIBS"; then pkg_cv_TICABLES_LIBS="$TICABLES_LIBS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ticables2 >= 1.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "ticables2 >= 1.3.0") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_TICABLES_LIBS=`$PKG_CONFIG --libs "ticables2 >= 1.3.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then TICABLES_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ticables2 >= 1.3.0"` else TICABLES_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ticables2 >= 1.3.0"` fi # Put the nasty error message in config.log where it belongs echo "$TICABLES_PKG_ERRORS" >&5 { { echo "$as_me:$LINENO: error: Package requirements (ticables2 >= 1.3.0) were not met: $TICABLES_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables TICABLES_CFLAGS and TICABLES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 echo "$as_me: error: Package requirements (ticables2 >= 1.3.0) were not met: $TICABLES_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables TICABLES_CFLAGS and TICABLES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables TICABLES_CFLAGS and TICABLES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables TICABLES_CFLAGS and TICABLES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else TICABLES_CFLAGS=$pkg_cv_TICABLES_CFLAGS TICABLES_LIBS=$pkg_cv_TICABLES_LIBS { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : fi pkg_failed=no { echo "$as_me:$LINENO: checking for TICALCS" >&5 echo $ECHO_N "checking for TICALCS... $ECHO_C" >&6; } if test -n "$PKG_CONFIG"; then if test -n "$TICALCS_CFLAGS"; then pkg_cv_TICALCS_CFLAGS="$TICALCS_CFLAGS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ticalcs2 >= 1.0.7\"") >&5 ($PKG_CONFIG --exists --print-errors "ticalcs2 >= 1.0.7") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_TICALCS_CFLAGS=`$PKG_CONFIG --cflags "ticalcs2 >= 1.0.7" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$TICALCS_LIBS"; then pkg_cv_TICALCS_LIBS="$TICALCS_LIBS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ticalcs2 >= 1.0.7\"") >&5 ($PKG_CONFIG --exists --print-errors "ticalcs2 >= 1.0.7") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_TICALCS_LIBS=`$PKG_CONFIG --libs "ticalcs2 >= 1.0.7" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then TICALCS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ticalcs2 >= 1.0.7"` else TICALCS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ticalcs2 >= 1.0.7"` fi # Put the nasty error message in config.log where it belongs echo "$TICALCS_PKG_ERRORS" >&5 { { echo "$as_me:$LINENO: error: Package requirements (ticalcs2 >= 1.0.7) were not met: $TICALCS_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables TICALCS_CFLAGS and TICALCS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 echo "$as_me: error: Package requirements (ticalcs2 >= 1.0.7) were not met: $TICALCS_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables TICALCS_CFLAGS and TICALCS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables TICALCS_CFLAGS and TICALCS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables TICALCS_CFLAGS and TICALCS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else TICALCS_CFLAGS=$pkg_cv_TICALCS_CFLAGS TICALCS_LIBS=$pkg_cv_TICALCS_LIBS { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : fi pkg_failed=no { echo "$as_me:$LINENO: checking for TIFILES" >&5 echo $ECHO_N "checking for TIFILES... $ECHO_C" >&6; } if test -n "$PKG_CONFIG"; then if test -n "$TIFILES_CFLAGS"; then pkg_cv_TIFILES_CFLAGS="$TIFILES_CFLAGS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"tifiles2 >= 1.0.7\"") >&5 ($PKG_CONFIG --exists --print-errors "tifiles2 >= 1.0.7") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_TIFILES_CFLAGS=`$PKG_CONFIG --cflags "tifiles2 >= 1.0.7" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$TIFILES_LIBS"; then pkg_cv_TIFILES_LIBS="$TIFILES_LIBS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"tifiles2 >= 1.0.7\"") >&5 ($PKG_CONFIG --exists --print-errors "tifiles2 >= 1.0.7") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_TIFILES_LIBS=`$PKG_CONFIG --libs "tifiles2 >= 1.0.7" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then TIFILES_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "tifiles2 >= 1.0.7"` else TIFILES_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "tifiles2 >= 1.0.7"` fi # Put the nasty error message in config.log where it belongs echo "$TIFILES_PKG_ERRORS" >&5 { { echo "$as_me:$LINENO: error: Package requirements (tifiles2 >= 1.0.7) were not met: $TIFILES_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables TIFILES_CFLAGS and TIFILES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 echo "$as_me: error: Package requirements (tifiles2 >= 1.0.7) were not met: $TIFILES_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables TIFILES_CFLAGS and TIFILES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables TIFILES_CFLAGS and TIFILES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables TIFILES_CFLAGS and TIFILES_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else TIFILES_CFLAGS=$pkg_cv_TIFILES_CFLAGS TIFILES_LIBS=$pkg_cv_TIFILES_LIBS { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : fi pkg_failed=no { echo "$as_me:$LINENO: checking for TICONV" >&5 echo $ECHO_N "checking for TICONV... $ECHO_C" >&6; } if test -n "$PKG_CONFIG"; then if test -n "$TICONV_CFLAGS"; then pkg_cv_TICONV_CFLAGS="$TICONV_CFLAGS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ticonv >= 1.0.4\"") >&5 ($PKG_CONFIG --exists --print-errors "ticonv >= 1.0.4") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_TICONV_CFLAGS=`$PKG_CONFIG --cflags "ticonv >= 1.0.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$TICONV_LIBS"; then pkg_cv_TICONV_LIBS="$TICONV_LIBS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ticonv >= 1.0.4\"") >&5 ($PKG_CONFIG --exists --print-errors "ticonv >= 1.0.4") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_TICONV_LIBS=`$PKG_CONFIG --libs "ticonv >= 1.0.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then TICONV_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ticonv >= 1.0.4"` else TICONV_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ticonv >= 1.0.4"` fi # Put the nasty error message in config.log where it belongs echo "$TICONV_PKG_ERRORS" >&5 { { echo "$as_me:$LINENO: error: Package requirements (ticonv >= 1.0.4) were not met: $TICONV_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables TICONV_CFLAGS and TICONV_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 echo "$as_me: error: Package requirements (ticonv >= 1.0.4) were not met: $TICONV_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables TICONV_CFLAGS and TICONV_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables TICONV_CFLAGS and TICONV_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables TICONV_CFLAGS and TICONV_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else TICONV_CFLAGS=$pkg_cv_TICONV_CFLAGS TICONV_LIBS=$pkg_cv_TICONV_LIBS { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : fi pkg_failed=no { echo "$as_me:$LINENO: checking for GLIB" >&5 echo $ECHO_N "checking for GLIB... $ECHO_C" >&6; } if test -n "$PKG_CONFIG"; then if test -n "$GLIB_CFLAGS"; then pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.6.0\"") >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.6.0") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.6.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$GLIB_LIBS"; then pkg_cv_GLIB_LIBS="$GLIB_LIBS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.6.0\"") >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.6.0") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.6.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0 >= 2.6.0"` else GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= 2.6.0"` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 { { echo "$as_me:$LINENO: error: Package requirements (glib-2.0 >= 2.6.0) were not met: $GLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 echo "$as_me: error: Package requirements (glib-2.0 >= 2.6.0) were not met: $GLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS GLIB_LIBS=$pkg_cv_GLIB_LIBS { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : fi pkg_failed=no { echo "$as_me:$LINENO: checking for GTK" >&5 echo $ECHO_N "checking for GTK... $ECHO_C" >&6; } if test -n "$PKG_CONFIG"; then if test -n "$GTK_CFLAGS"; then pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.6.0\"") >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.6.0") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.6.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$GTK_LIBS"; then pkg_cv_GTK_LIBS="$GTK_LIBS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.6.0\"") >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.6.0") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.6.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0 >= 2.6.0"` else GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.6.0"` fi # Put the nasty error message in config.log where it belongs echo "$GTK_PKG_ERRORS" >&5 { { echo "$as_me:$LINENO: error: Package requirements (gtk+-2.0 >= 2.6.0) were not met: $GTK_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 echo "$as_me: error: Package requirements (gtk+-2.0 >= 2.6.0) were not met: $GTK_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else GTK_CFLAGS=$pkg_cv_GTK_CFLAGS GTK_LIBS=$pkg_cv_GTK_LIBS { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : fi pkg_failed=no { echo "$as_me:$LINENO: checking for GLADE" >&5 echo $ECHO_N "checking for GLADE... $ECHO_C" >&6; } if test -n "$PKG_CONFIG"; then if test -n "$GLADE_CFLAGS"; then pkg_cv_GLADE_CFLAGS="$GLADE_CFLAGS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libglade-2.0 >= 2.4.0\"") >&5 ($PKG_CONFIG --exists --print-errors "libglade-2.0 >= 2.4.0") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GLADE_CFLAGS=`$PKG_CONFIG --cflags "libglade-2.0 >= 2.4.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$GLADE_LIBS"; then pkg_cv_GLADE_LIBS="$GLADE_LIBS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libglade-2.0 >= 2.4.0\"") >&5 ($PKG_CONFIG --exists --print-errors "libglade-2.0 >= 2.4.0") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GLADE_LIBS=`$PKG_CONFIG --libs "libglade-2.0 >= 2.4.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLADE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libglade-2.0 >= 2.4.0"` else GLADE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libglade-2.0 >= 2.4.0"` fi # Put the nasty error message in config.log where it belongs echo "$GLADE_PKG_ERRORS" >&5 { { echo "$as_me:$LINENO: error: Package requirements (libglade-2.0 >= 2.4.0) were not met: $GLADE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GLADE_CFLAGS and GLADE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 echo "$as_me: error: Package requirements (libglade-2.0 >= 2.4.0) were not met: $GLADE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GLADE_CFLAGS and GLADE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GLADE_CFLAGS and GLADE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GLADE_CFLAGS and GLADE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else GLADE_CFLAGS=$pkg_cv_GLADE_CFLAGS GLADE_LIBS=$pkg_cv_GLADE_LIBS { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : fi # D-Bus support # Check whether --with-dbus was given. if test "${with_dbus+set}" = set; then withval=$with_dbus; dbus=$withval else dbus=no fi if test "x$dbus" = "xyes"; then pkg_failed=no { echo "$as_me:$LINENO: checking for DBUS_GLIB" >&5 echo $ECHO_N "checking for DBUS_GLIB... $ECHO_C" >&6; } if test -n "$PKG_CONFIG"; then if test -n "$DBUS_GLIB_CFLAGS"; then pkg_cv_DBUS_GLIB_CFLAGS="$DBUS_GLIB_CFLAGS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= 0.60\"") >&5 ($PKG_CONFIG --exists --print-errors "dbus-glib-1 >= 0.60") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_DBUS_GLIB_CFLAGS=`$PKG_CONFIG --cflags "dbus-glib-1 >= 0.60" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$DBUS_GLIB_LIBS"; then pkg_cv_DBUS_GLIB_LIBS="$DBUS_GLIB_LIBS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= 0.60\"") >&5 ($PKG_CONFIG --exists --print-errors "dbus-glib-1 >= 0.60") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_DBUS_GLIB_LIBS=`$PKG_CONFIG --libs "dbus-glib-1 >= 0.60" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then DBUS_GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "dbus-glib-1 >= 0.60"` else DBUS_GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "dbus-glib-1 >= 0.60"` fi # Put the nasty error message in config.log where it belongs echo "$DBUS_GLIB_PKG_ERRORS" >&5 { { echo "$as_me:$LINENO: error: Package requirements (dbus-glib-1 >= 0.60) were not met: $DBUS_GLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables DBUS_GLIB_CFLAGS and DBUS_GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 echo "$as_me: error: Package requirements (dbus-glib-1 >= 0.60) were not met: $DBUS_GLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables DBUS_GLIB_CFLAGS and DBUS_GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables DBUS_GLIB_CFLAGS and DBUS_GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables DBUS_GLIB_CFLAGS and DBUS_GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else DBUS_GLIB_CFLAGS=$pkg_cv_DBUS_GLIB_CFLAGS DBUS_GLIB_LIBS=$pkg_cv_DBUS_GLIB_LIBS { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : fi cat >>confdefs.h <<\_ACEOF #define WITH_DBUS 1 _ACEOF else DBUS_GLIB_CFLAGS= DBUS_GLIB_LIBS= fi # Checks for header files. { echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5 echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6; } if test "${ac_cv_header_stdbool_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; bool e = &s; char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; # if defined __xlc__ || defined __GNUC__ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 reported by James Lemley on 2005-10-05; see http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html This test is not quite right, since xlc is allowed to reject this program, as the initializer for xlcbug is not one of the forms that C requires support for. However, doing the test right would require a runtime test, and that would make cross-compilation harder. Let us hope that IBM fixes the xlc bug, and also adds support for this kind of constant expression. In the meantime, this test will reject xlc, which is OK, since our stdbool.h substitute should suffice. We also test this with GCC, where it should work, to detect more quickly whether someone messes up the test in the future. */ char digs[] = "0123456789"; int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1); # endif /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; int main () { *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdbool_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdbool_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5 echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6; } { echo "$as_me:$LINENO: checking for _Bool" >&5 echo $ECHO_N "checking for _Bool... $ECHO_C" >&6; } if test "${ac_cv_type__Bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef _Bool ac__type_new_; int main () { if ((ac__type_new_ *) 0) return 0; if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_type__Bool=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type__Bool=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5 echo "${ECHO_T}$ac_cv_type__Bool" >&6; } if test $ac_cv_type__Bool = yes; then cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi if test $ac_cv_header_stdbool_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STDBOOL_H 1 _ACEOF fi for ac_header in fcntl.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to tiemu-users@lists.sourceforge.net ## ## ------------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in libintl.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to tiemu-users@lists.sourceforge.net ## ## ------------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/timeb.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to tiemu-users@lists.sourceforge.net ## ## ------------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stdint.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to tiemu-users@lists.sourceforge.net ## ## ------------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in tilp2/ticables.h tilp2/ticalcs.h tilp2/tifiles.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to tiemu-users@lists.sourceforge.net ## ## ------------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { echo "$as_me:$LINENO: checking for working memcmp" >&5 echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } if test "${ac_cv_func_memcmp_working+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_memcmp_working=no else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { /* Some versions of memcmp are not 8-bit clean. */ char c0 = '\100', c1 = '\200', c2 = '\201'; if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) return 1; /* The Next x86 OpenStep bug shows up only when comparing 16 bytes or more and with at least one buffer not starting on a 4-byte boundary. William Lewis provided this test program. */ { char foo[21]; char bar[21]; int i; for (i = 0; i < 4; i++) { char *a = foo + i; char *b = bar + i; strcpy (a, "--------01111111"); strcpy (b, "--------10000000"); if (memcmp (a, b, 16) >= 0) return 1; } return 0; } ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_memcmp_working=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_memcmp_working=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi { echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in *" memcmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; esac #AC_C_RESTRICT { echo "$as_me:$LINENO: checking for working volatile" >&5 echo $ECHO_N "checking for working volatile... $ECHO_C" >&6; } if test "${ac_cv_c_volatile+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { volatile int x; int * volatile y = (int *) 0; return !x && !y; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_volatile=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_volatile=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5 echo "${ECHO_T}$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then cat >>confdefs.h <<\_ACEOF #define volatile _ACEOF fi # Checks for libraries. { echo "$as_me:$LINENO: checking for pow in -lm" >&5 echo $ECHO_N "checking for pow in -lm... $ECHO_C" >&6; } if test "${ac_cv_lib_m_pow+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pow (); int main () { return pow (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_m_pow=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_m_pow=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_m_pow" >&5 echo "${ECHO_T}$ac_cv_lib_m_pow" >&6; } if test $ac_cv_lib_m_pow = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi { echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6; } if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_pthread_pthread_create=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pthread_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6; } if test $ac_cv_lib_pthread_pthread_create = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBPTHREAD 1 _ACEOF LIBS="-lpthread $LIBS" fi #AC_CHECK_LIB(comdlg32, GetOpenFileName) # Check for zlib if test "${ac_cv_header_zlib_h+set}" = set; then { echo "$as_me:$LINENO: checking for zlib.h" >&5 echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } if test "${ac_cv_header_zlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi { echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking zlib.h usability" >&5 echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking zlib.h presence" >&5 echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to tiemu-users@lists.sourceforge.net ## ## ------------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for zlib.h" >&5 echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } if test "${ac_cv_header_zlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_zlib_h=$ac_header_preproc fi { echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } fi { echo "$as_me:$LINENO: checking for compress in -lz" >&5 echo $ECHO_N "checking for compress in -lz... $ECHO_C" >&6; } if test "${ac_cv_lib_z_compress+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char compress (); int main () { return compress (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_z_compress=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_z_compress=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_z_compress" >&5 echo "${ECHO_T}$ac_cv_lib_z_compress" >&6; } if test $ac_cv_lib_z_compress = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF LIBS="-lz $LIBS" fi LIBZ="$LIBS" LIBS="" # Checks for library functions. for ac_header in sys/select.h sys/socket.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to tiemu-users@lists.sourceforge.net ## ## ------------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { echo "$as_me:$LINENO: checking types of arguments for select" >&5 echo $ECHO_N "checking types of arguments for select... $ECHO_C" >&6; } if test "${ac_cv_func_select_args+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else for ac_arg234 in 'fd_set *' 'int *' 'void *'; do for ac_arg1 in 'int' 'size_t' 'unsigned long int' 'unsigned int'; do for ac_arg5 in 'struct timeval *' 'const struct timeval *'; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #ifdef HAVE_SYS_SELECT_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif int main () { extern int select ($ac_arg1, $ac_arg234, $ac_arg234, $ac_arg234, $ac_arg5); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_func_select_args="$ac_arg1,$ac_arg234,$ac_arg5"; break 3 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done done done # Provide a safe default value. : ${ac_cv_func_select_args='int,int *,struct timeval *'} fi { echo "$as_me:$LINENO: result: $ac_cv_func_select_args" >&5 echo "${ECHO_T}$ac_cv_func_select_args" >&6; } ac_save_IFS=$IFS; IFS=',' set dummy `echo "$ac_cv_func_select_args" | sed 's/\*/\*/g'` IFS=$ac_save_IFS shift cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG1 $1 _ACEOF cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG234 ($2) _ACEOF cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG5 ($3) _ACEOF rm -f conftest* { echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5 echo $ECHO_N "checking whether lstat dereferences a symlink specified with a trailing slash... $ECHO_C" >&6; } if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then if test "$cross_compiling" = yes; then ac_cv_func_lstat_dereferences_slashed_symlink=no else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; /* Linux will dereference the symlink and fail. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_lstat_dereferences_slashed_symlink=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi else # If the `ln -s' command failed, then we probably don't even # have an lstat function. ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi { echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 echo "${ECHO_T}$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then case " $LIBOBJS " in *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac fi { echo "$as_me:$LINENO: checking whether stat accepts an empty string" >&5 echo $ECHO_N "checking whether stat accepts an empty string... $ECHO_C" >&6; } if test "${ac_cv_func_stat_empty_string_bug+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_stat_empty_string_bug=yes else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; return stat ("", &sbuf) == 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_stat_empty_string_bug=no else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_stat_empty_string_bug=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi { echo "$as_me:$LINENO: result: $ac_cv_func_stat_empty_string_bug" >&5 echo "${ECHO_T}$ac_cv_func_stat_empty_string_bug" >&6; } if test $ac_cv_func_stat_empty_string_bug = yes; then case " $LIBOBJS " in *" stat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS stat.$ac_objext" ;; esac cat >>confdefs.h <<_ACEOF #define HAVE_STAT_EMPTY_STRING_BUG 1 _ACEOF fi for ac_func in vprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF { echo "$as_me:$LINENO: checking for _doprnt" >&5 echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6; } if test "${ac_cv_func__doprnt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define _doprnt to an innocuous variant, in case declares _doprnt. For example, HP-UX 11i declares gettimeofday. */ #define _doprnt innocuous__doprnt /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _doprnt (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef _doprnt /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char _doprnt (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub__doprnt || defined __stub____doprnt choke me #endif int main () { return _doprnt (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func__doprnt=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func__doprnt=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 echo "${ECHO_T}$ac_cv_func__doprnt" >&6; } if test $ac_cv_func__doprnt = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DOPRNT 1 _ACEOF fi fi done for ac_func in bzero memset mkdir select strchr strrchr strstr do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Platform specific tests. CFLAGS_FOR_BUILD="$CFLAGS" export CFLAGS_FOR_BUILD case $host in *-*-mingw*) ARCH="-D__WIN32__ -D__MINGW32__ -mwindows -D_WINDOWS" ;; *-*-*bsd*) ARCH="-D__BSD__" ;; i[3456]86-*-linux-*) ARCH="-D__I386__ -D__LINUX__" ;; i[3456]86-apple-darwin*) ARCH="-D__I386__ -D__MACOSX__" ;; arm*-*-linux-*) ARCH="-D__IPAQ__ -D__LINUX__" ;; powerpc-*-linux-*) ARCH="-D__PPC__ -D__LINUX__" ;; powerpc-apple-darwin*) ARCH="-D__PPC__ -D__MACOSX__" ;; *-apple-darwin*) ARCH="-D__MACOSX__" ;; *) ARCH="-D__LINUX__" ;; esac CFLAGS="$CFLAGS $ARCH" # Check for SDL if sound support is wanted # Check whether --enable-sound was given. if test "${enable_sound+set}" = set; then enableval=$enable_sound; tiemu_use_sound=$enableval else tiemu_use_sound=yes fi { echo "$as_me:$LINENO: checking whether to enable sound emulation" >&5 echo $ECHO_N "checking whether to enable sound emulation... $ECHO_C" >&6; } if test "${tiemu_use_sound+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else tiemu_use_sound=yes fi { echo "$as_me:$LINENO: result: $tiemu_use_sound" >&5 echo "${ECHO_T}$tiemu_use_sound" >&6; } if test "x$tiemu_use_sound" = "xyes"; then SDL_VERSION=1.2.0 # Check whether --with-sdl-prefix was given. if test "${with_sdl_prefix+set}" = set; then withval=$with_sdl_prefix; sdl_prefix="$withval" else sdl_prefix="" fi # Check whether --with-sdl-exec-prefix was given. if test "${with_sdl_exec_prefix+set}" = set; then withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" else sdl_exec_prefix="" fi # Check whether --enable-sdltest was given. if test "${enable_sdltest+set}" = set; then enableval=$enable_sdltest; else enable_sdltest=yes fi if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi if test "x$prefix" != xNONE; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi # Extract the first word of "sdl-config", so it can be a program name with args. set dummy sdl-config; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_SDL_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $SDL_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" ;; esac fi SDL_CONFIG=$ac_cv_path_SDL_CONFIG if test -n "$SDL_CONFIG"; then { echo "$as_me:$LINENO: result: $SDL_CONFIG" >&5 echo "${ECHO_T}$SDL_CONFIG" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi min_sdl_version=$SDL_VERSION { echo "$as_me:$LINENO: checking for SDL - version >= $min_sdl_version" >&5 echo $ECHO_N "checking for SDL - version >= $min_sdl_version... $ECHO_C" >&6; } no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" rm -f conf.sdltest if test "$cross_compiling" = yes; then echo $ac_n "cross compiling; assumed OK... $ac_c" else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) no_sdl=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main int main () { return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" { { echo "$as_me:$LINENO: error: *** SDL version $SDL_VERSION not found!" >&5 echo "$as_me: error: *** SDL version $SDL_VERSION not found!" >&2;} { (exit 1); exit 1; }; } fi rm -f conf.sdltest else CFLAGS="$CFLAGS -DNO_SOUND" SDL_CFLAGS= SDL_LIBS= fi # KDE dialogs support # Check whether --with-kde was given. if test "${with_kde+set}" = set; then withval=$with_kde; kde=$withval else kde=default fi if test "x$kde" = "xdefault"; then case $host_os in *mingw*) kde=no ;; *) kde=yes ;; esac fi if test "x$kde" = "xyes"; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking for main in -lutil" >&5 echo $ECHO_N "checking for main in -lutil... $ECHO_C" >&6; } if test "${ac_cv_lib_util_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutil $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_util_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_util_main=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_util_main" >&5 echo "${ECHO_T}$ac_cv_lib_util_main" >&6; } if test $ac_cv_lib_util_main = yes; then LIBUTIL="-lutil" fi { echo "$as_me:$LINENO: checking for main in -lcompat" >&5 echo $ECHO_N "checking for main in -lcompat... $ECHO_C" >&6; } if test "${ac_cv_lib_compat_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcompat $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_compat_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_compat_main=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_compat_main" >&5 echo "${ECHO_T}$ac_cv_lib_compat_main" >&6; } if test $ac_cv_lib_compat_main = yes; then LIBCOMPAT="-lcompat" fi kde_have_crypt= { echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6; } if test "${ac_cv_lib_crypt_crypt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char crypt (); int main () { return crypt (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_crypt_crypt=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_crypt_crypt=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6; } if test $ac_cv_lib_crypt_crypt = yes; then LIBCRYPT="-lcrypt"; kde_have_crypt=yes else { echo "$as_me:$LINENO: checking for crypt in -lc" >&5 echo $ECHO_N "checking for crypt in -lc... $ECHO_C" >&6; } if test "${ac_cv_lib_c_crypt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char crypt (); int main () { return crypt (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_c_crypt=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_c_crypt=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_c_crypt" >&5 echo "${ECHO_T}$ac_cv_lib_c_crypt" >&6; } if test $ac_cv_lib_c_crypt = yes; then kde_have_crypt=yes else { echo "$as_me:$LINENO: WARNING: you have no crypt in either libcrypt or libc. You should install libcrypt from another source or configure with PAM support" >&5 echo "$as_me: WARNING: you have no crypt in either libcrypt or libc. You should install libcrypt from another source or configure with PAM support" >&2;} kde_have_crypt=no fi fi if test $kde_have_crypt = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_CRYPT 1 _ACEOF fi { echo "$as_me:$LINENO: checking for socklen_t" >&5 echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; } if test "${ac_cv_socklen_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { socklen_t a=0; getsockname(0,(struct sockaddr*)0, &a); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_socklen_t=socklen_t else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { int a=0; getsockname(0,(struct sockaddr*)0, &a); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_socklen_t=int else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_socklen_t=size_t fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_socklen_t" >&5 echo "${ECHO_T}$ac_cv_socklen_t" >&6; } if test "$ac_cv_socklen_t" != "socklen_t"; then cat >>confdefs.h <<_ACEOF #define socklen_t $ac_cv_socklen_t _ACEOF fi cat >>confdefs.h <<_ACEOF #define ksize_t socklen_t _ACEOF ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; } if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; } if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi { echo "$as_me:$LINENO: checking for inet_ntoa" >&5 echo $ECHO_N "checking for inet_ntoa... $ECHO_C" >&6; } if test "${ac_cv_func_inet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define inet_ntoa to an innocuous variant, in case declares inet_ntoa. For example, HP-UX 11i declares gettimeofday. */ #define inet_ntoa innocuous_inet_ntoa /* System header to define __stub macros and hopefully few prototypes, which can conflict with char inet_ntoa (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef inet_ntoa /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char inet_ntoa (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_inet_ntoa || defined __stub___inet_ntoa choke me #endif int main () { return inet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_inet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_inet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_inet_ntoa" >&5 echo "${ECHO_T}$ac_cv_func_inet_ntoa" >&6; } if test $ac_cv_func_inet_ntoa = no; then { echo "$as_me:$LINENO: checking for inet_ntoa in -lnsl" >&5 echo $ECHO_N "checking for inet_ntoa in -lnsl... $ECHO_C" >&6; } if test "${ac_cv_lib_nsl_inet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char inet_ntoa (); int main () { return inet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_nsl_inet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_inet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_inet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_inet_ntoa" >&6; } if test $ac_cv_lib_nsl_inet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi fi { echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6; } if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_connect || defined __stub___connect choke me #endif int main () { return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6; } if test $ac_cv_func_connect = no; then { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; } if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; } if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi { echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6; } if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_remove || defined __stub___remove choke me #endif int main () { return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6; } if test $ac_cv_func_remove = no; then { echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; } if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; } if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. { echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6; } if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shmat || defined __stub___shmat choke me #endif int main () { return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6; } if test $ac_cv_func_shmat = yes; then : else { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; } if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; } if test $ac_cv_lib_ipc_shmat = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi # Solaris 2.6 and others need -lresolv for res_init for ac_func in res_init do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else kde_libs_safe="$LIBS" LIBS="$LIBS $X_EXTRA_LIBS -lresolv" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { res_init(); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then LIBRESOLV="-lresolv" X_EXTRA_LIBS="$X_EXTRA_LIBS $LIBRESOLV" cat >>confdefs.h <<\_ACEOF #define HAVE_RES_INIT 1 _ACEOF else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$kde_libs_safe fi done LIBSOCKET="$X_EXTRA_LIBS" { echo "$as_me:$LINENO: checking for killpg in -lucb" >&5 echo $ECHO_N "checking for killpg in -lucb... $ECHO_C" >&6; } if test "${ac_cv_lib_ucb_killpg+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lucb $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char killpg (); int main () { return killpg (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_ucb_killpg=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ucb_killpg=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_ucb_killpg" >&5 echo "${ECHO_T}$ac_cv_lib_ucb_killpg" >&6; } if test $ac_cv_lib_ucb_killpg = yes; then LIBUCB="-lucb" fi case $host in *-*-lynxos* ) { echo "$as_me:$LINENO: checking LynxOS header file wrappers" >&5 echo $ECHO_N "checking LynxOS header file wrappers... $ECHO_C" >&6; } CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__" { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; } if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; } if test $ac_cv_lib_bsd_gethostbyname = yes; then LIBSOCKET="-lbsd" fi ;; esac { echo "$as_me:$LINENO: checking for int" >&5 echo $ECHO_N "checking for int... $ECHO_C" >&6; } if test "${ac_cv_type_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef int ac__type_new_; int main () { if ((ac__type_new_ *) 0) return 0; if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_type_int=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_int=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 echo "${ECHO_T}$ac_cv_type_int" >&6; } # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { echo "$as_me:$LINENO: checking size of int" >&5 echo $ECHO_N "checking size of int... $ECHO_C" >&6; } if test "${ac_cv_sizeof_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef int ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef int ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef int ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef int ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef int ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_int=$ac_lo;; '') if test "$ac_cv_type_int" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (int) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_int=0 fi ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef int ac__type_sizeof_; static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (((long int) (sizeof (ac__type_sizeof_))) < 0) { long int i = longval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%ld\n", i); } else { unsigned long int i = ulongval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%lu\n", i); } return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_int=`cat conftest.val` else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_int" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (int) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_int=0 fi fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val fi { echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF { echo "$as_me:$LINENO: checking for long" >&5 echo $ECHO_N "checking for long... $ECHO_C" >&6; } if test "${ac_cv_type_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_new_; int main () { if ((ac__type_new_ *) 0) return 0; if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_type_long=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_long=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 echo "${ECHO_T}$ac_cv_type_long" >&6; } # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { echo "$as_me:$LINENO: checking size of long" >&5 echo $ECHO_N "checking size of long... $ECHO_C" >&6; } if test "${ac_cv_sizeof_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long=$ac_lo;; '') if test "$ac_cv_type_long" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_long=0 fi ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (((long int) (sizeof (ac__type_sizeof_))) < 0) { long int i = longval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%ld\n", i); } else { unsigned long int i = ulongval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%lu\n", i); } return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_long=`cat conftest.val` else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_long" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_long=0 fi fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val fi { echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF { echo "$as_me:$LINENO: checking for char *" >&5 echo $ECHO_N "checking for char *... $ECHO_C" >&6; } if test "${ac_cv_type_char_p+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char * ac__type_new_; int main () { if ((ac__type_new_ *) 0) return 0; if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_type_char_p=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_char_p=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5 echo "${ECHO_T}$ac_cv_type_char_p" >&6; } # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { echo "$as_me:$LINENO: checking size of char *" >&5 echo $ECHO_N "checking size of char *... $ECHO_C" >&6; } if test "${ac_cv_sizeof_char_p+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char * ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char * ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char * ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char * ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char * ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_char_p=$ac_lo;; '') if test "$ac_cv_type_char_p" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (char *) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_char_p=0 fi ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char * ac__type_sizeof_; static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (((long int) (sizeof (ac__type_sizeof_))) < 0) { long int i = longval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%ld\n", i); } else { unsigned long int i = ulongval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%lu\n", i); } return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_char_p=`cat conftest.val` else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_char_p" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (char *) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_char_p=0 fi fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val fi { echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5 echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_CHAR_P $ac_cv_sizeof_char_p _ACEOF { echo "$as_me:$LINENO: checking for char" >&5 echo $ECHO_N "checking for char... $ECHO_C" >&6; } if test "${ac_cv_type_char+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char ac__type_new_; int main () { if ((ac__type_new_ *) 0) return 0; if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_type_char=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_char=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5 echo "${ECHO_T}$ac_cv_type_char" >&6; } # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { echo "$as_me:$LINENO: checking size of char" >&5 echo $ECHO_N "checking size of char... $ECHO_C" >&6; } if test "${ac_cv_sizeof_char+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_char=$ac_lo;; '') if test "$ac_cv_type_char" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (char) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (char) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_char=0 fi ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef char ac__type_sizeof_; static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (((long int) (sizeof (ac__type_sizeof_))) < 0) { long int i = longval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%ld\n", i); } else { unsigned long int i = ulongval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%lu\n", i); } return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_char=`cat conftest.val` else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_char" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (char) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (char) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_char=0 fi fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val fi { echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5 echo "${ECHO_T}$ac_cv_sizeof_char" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_CHAR $ac_cv_sizeof_char _ACEOF { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then LIBDL="-ldl" ac_cv_have_dlfcn=yes fi { echo "$as_me:$LINENO: checking for shl_unload in -ldld" >&5 echo $ECHO_N "checking for shl_unload in -ldld... $ECHO_C" >&6; } if test "${ac_cv_lib_dld_shl_unload+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_unload (); int main () { return shl_unload (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dld_shl_unload=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_unload=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_unload" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_unload" >&6; } if test $ac_cv_lib_dld_shl_unload = yes; then LIBDL="-ldld" ac_cv_have_shload=yes fi # Check whether --enable-embedded was given. if test "${enable_embedded+set}" = set; then enableval=$enable_embedded; kde_use_qt_emb=$enableval else kde_use_qt_emb=no fi # Check whether --enable-qtopia was given. if test "${enable_qtopia+set}" = set; then enableval=$enable_qtopia; kde_use_qt_emb_palm=$enableval else kde_use_qt_emb_palm=no fi if test "$kde_use_qt_emb" = "no"; then { echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "${kde_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # One or both of the vars are not set, and there is no cached value. if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then kde_x_includes=NO else kde_x_includes=$x_includes fi if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then kde_x_libraries=NO else kde_x_libraries=$x_libraries fi # below we use the standard autoconf calls ac_x_libraries=$kde_x_libraries ac_x_includes=$kde_x_includes if test "$ac_x_includes" = NO; then # Guess where to find include files, by looking for this one X11 .h file. test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$x_direct_test_include> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Look for the header file in a standard set of common directories. # Check X11 before X11Rn because it is often a symlink to the current release. for ac_dir in \ /usr/X11/include \ /usr/X11R6/include \ /usr/X11R5/include \ /usr/X11R4/include \ \ /usr/include/X11 \ /usr/include/X11R6 \ /usr/include/X11R5 \ /usr/include/X11R4 \ \ /usr/local/X11/include \ /usr/local/X11R6/include \ /usr/local/X11R5/include \ /usr/local/X11R4/include \ \ /usr/local/include/X11 \ /usr/local/include/X11R6 \ /usr/local/include/X11R5 \ /usr/local/include/X11R4 \ \ /usr/X386/include \ /usr/x386/include \ /usr/XFree86/include/X11 \ \ /usr/include \ /usr/local/include \ /usr/unsupported/include \ /usr/athena/include \ /usr/local/x11r5/include \ /usr/lpp/Xamples/include \ \ /usr/openwin/include \ /usr/openwin/share/include \ ; \ do if test -r "$ac_dir/$x_direct_test_include"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = NO if test "$ac_x_libraries" = NO; then # Check for the libraries. test -z "$x_direct_test_library" && x_direct_test_library=Xt test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ${x_direct_test_function}() ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then LIBS="$ac_save_LIBS" # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS="$ac_save_LIBS" # First see if replacing the include by lib works. # Check X11 before X11Rn because it is often a symlink to the current release. for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \ /usr/X11/lib \ /usr/X11R6/lib \ /usr/X11R5/lib \ /usr/X11R4/lib \ \ /usr/lib/X11 \ /usr/lib/X11R6 \ /usr/lib/X11R5 \ /usr/lib/X11R4 \ \ /usr/local/X11/lib \ /usr/local/X11R6/lib \ /usr/local/X11R5/lib \ /usr/local/X11R4/lib \ \ /usr/local/lib/X11 \ /usr/local/lib/X11R6 \ /usr/local/lib/X11R5 \ /usr/local/lib/X11R4 \ \ /usr/X386/lib \ /usr/x386/lib \ /usr/XFree86/lib/X11 \ \ /usr/lib \ /usr/local/lib \ /usr/unsupported/lib \ /usr/athena/lib \ /usr/local/x11r5/lib \ /usr/lpp/Xamples/lib \ /lib/usr/lib/X11 \ \ /usr/openwin/lib \ /usr/openwin/share/lib \ ; \ do for ac_extension in a so sl; do if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = NO case "$host" in mips-sgi-irix6*) ;; *-*-solaris*) ;; *) rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi if test -z "$ac_x_includes"; then ac_x_includes="." fi if test -z "$ac_x_libraries"; then ac_x_libraries="/usr/lib" fi esac #from now on we use our own again # when the user already gave --x-includes, we ignore # what the standard autoconf macros told us. if test "$kde_x_includes" = NO; then kde_x_includes=$ac_x_includes fi # for --x-libraries too if test "$kde_x_libraries" = NO; then kde_x_libraries=$ac_x_libraries fi if test "$kde_x_includes" = NO; then { { echo "$as_me:$LINENO: error: Can't find X includes. Please check your installation and add the correct paths!" >&5 echo "$as_me: error: Can't find X includes. Please check your installation and add the correct paths!" >&2;} { (exit 1); exit 1; }; } fi if test "$kde_x_libraries" = NO; then { { echo "$as_me:$LINENO: error: Can't find X libraries. Please check your installation and add the correct paths!" >&5 echo "$as_me: error: Can't find X libraries. Please check your installation and add the correct paths!" >&2;} { (exit 1); exit 1; }; } fi # Record where we found X for the cache. kde_cv_have_x="have_x=yes \ kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries" fi eval "$kde_cv_have_x" if test "$have_x" != yes; then { echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$have_x" >&6; } no_x=yes else { echo "$as_me:$LINENO: result: libraries $kde_x_libraries, headers $kde_x_includes" >&5 echo "${ECHO_T}libraries $kde_x_libraries, headers $kde_x_includes" >&6; } fi if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then X_INCLUDES="" x_includes="."; else x_includes=$kde_x_includes X_INCLUDES="-I$x_includes" fi if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE; then X_LDFLAGS="" x_libraries="/usr/lib"; else x_libraries=$kde_x_libraries X_LDFLAGS="-L$x_libraries" fi all_includes="$X_INCLUDES" all_libraries="$X_LDFLAGS" # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $X_LDFLAGS" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; } if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then LIBSM="-lSM -lICE" fi LDFLAGS="$ac_save_LDFLAGS" LIB_X11='-lX11 $(LIBSOCKET)' { echo "$as_me:$LINENO: checking for libXext" >&5 echo $ECHO_N "checking for libXext... $ECHO_C" >&6; } if test "${kde_cv_have_libXext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else kde_ldflags_safe="$LDFLAGS" kde_libs_safe="$LIBS" LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS" LIBS="-lXext -lX11 $LIBSOCKET" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifdef STDC_HEADERS # include #endif int main () { printf("hello Xext\n"); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then kde_cv_have_libXext=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 kde_cv_have_libXext=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$kde_ldflags_safe LIBS=$kde_libs_safe fi { echo "$as_me:$LINENO: result: $kde_cv_have_libXext" >&5 echo "${ECHO_T}$kde_cv_have_libXext" >&6; } if test "$kde_cv_have_libXext" = "no"; then { { echo "$as_me:$LINENO: error: We need a working libXext to proceed. Since configure can't find it itself, we stop here assuming that make wouldn't find them either." >&5 echo "$as_me: error: We need a working libXext to proceed. Since configure can't find it itself, we stop here assuming that make wouldn't find them either." >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: checking for Xinerama" >&5 echo $ECHO_N "checking for Xinerama... $ECHO_C" >&6; } # Check whether --with-xinerama was given. if test "${with_xinerama+set}" = set; then withval=$with_xinerama; no_xinerama=no else no_xinerama=yes fi kde_save_LDFLAGS="$LDFLAGS" kde_save_CFLAGS="$CFLAGS" kde_save_LIBS="$LIBS" LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS" CFLAGS="$CFLAGS -I$x_includes" LIBS="-lXinerama -lXext" if test "x$no_xinerama" = "xno"; then if test "${ac_cv_have_xinerama+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { XineramaIsActive(NULL); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_have_xinerama="yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_have_xinerama="no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi else ac_cv_have_xinerama=no; fi { echo "$as_me:$LINENO: result: $ac_cv_have_xinerama" >&5 echo "${ECHO_T}$ac_cv_have_xinerama" >&6; } LIBXINERAMA="" if test "$ac_cv_have_xinerama" = "yes"; then cat >>confdefs.h <<\_ACEOF #define HAVE_XINERAMA 1 _ACEOF LIBXINERAMA="-lXinerama" fi LDFLAGS="$kde_save_LDFLAGS" CFLAGS="$kde_save_CFLAGS" LIBS="$kde_save_LIBS" LIB_XEXT="-lXext" QTE_NORTTI="" else CXXFLAGS="$CXXFLAGS -fno-rtti -DQWS" CFLAGS="$CFLAGS -DQWS" LDFLAGS="$LDFLAGS -DQWS" QTE_NORTTI="-fno-rtti -DQWS" X_PRE_LIBS="" LIB_X11="" LIB_XEXT="" LIBSM="" X_INCLUDES="" X_LDFLAGS="" x_includes="" x_libraries="" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -z ""; then kde_qtver=3 kde_qtsubver=1 else kde_qtsubver=`echo "" | sed -e 's#[0-9][0-9]*\.\([0-9][0-9]*\).*#\1#'` # following is the check if subversion isnt found in passed argument if test "$kde_qtsubver" = ""; then kde_qtsubver=1 fi kde_qtver=`echo "" | sed -e 's#^\([0-9][0-9]*\)\..*#\1#'` if test "$kde_qtver" = "1"; then kde_qtsubver=42 fi fi if test -z ""; then if test "$kde_qtver" = "2"; then if test $kde_qtsubver -gt 0; then kde_qt_minversion=">= Qt 2.2.2" else kde_qt_minversion=">= Qt 2.0.2" fi fi if test "$kde_qtver" = "3"; then kde_qt_minversion=">= Qt 3.0.2" fi if test "$kde_qtver" = "1"; then kde_qt_minversion=">= 1.42 and < 2.0" fi else kde_qt_minversion= fi if test -z ""; then if test $kde_qtver = 3; then kde_qt_verstring="QT_VERSION >= 302" fi if test $kde_qtver = 2; then if test $kde_qtsubver -gt 0; then kde_qt_verstring="QT_VERSION >= 222" else kde_qt_verstring="QT_VERSION >= 200" fi fi if test $kde_qtver = 1; then kde_qt_verstring="QT_VERSION >= 142 && QT_VERSION < 200" fi else kde_qt_verstring= fi if test $kde_qtver = 3; then kde_qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt" fi if test $kde_qtver = 2; then kde_qt_dirs="$QTDIR /usr/lib/qt2 /usr/lib/qt" fi if test $kde_qtver = 1; then kde_qt_dirs="$QTDIR /usr/lib/qt" fi { echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6; } if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_pthread_pthread_create=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pthread_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6; } if test $ac_cv_lib_pthread_pthread_create = yes; then LIBPTHREAD="-lpthread" fi # Check whether --enable-kernel-threads was given. if test "${enable_kernel_threads+set}" = set; then enableval=$enable_kernel_threads; kde_use_kernthreads=$enableval else kde_use_kernthreads=no fi if test "$kde_use_kernthreads" = "yes"; then ac_save_CXXFLAGS="$CXXFLAGS" ac_save_CFLAGS="$CFLAGS" CXXFLAGS="-I/usr/local/include/pthread/linuxthreads $CXXFLAGS" CFLAGS="-I/usr/local/include/pthread/linuxthreads $CFLAGS" for ac_header in pthread/linuxthreads/pthread.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------------ ## ## Report this to tiemu-users@lists.sourceforge.net ## ## ------------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done CXXFLAGS="$ac_save_CXXFLAGS" CFLAGS="$ac_save_CFLAGS" if test "$ac_cv_header_pthread_linuxthreads_pthread_h" = "no"; then kde_use_kernthreads=no else { echo "$as_me:$LINENO: checking for pthread_join in -llthread" >&5 echo $ECHO_N "checking for pthread_join in -llthread... $ECHO_C" >&6; } if test "${ac_cv_lib_lthread_pthread_join+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-llthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_lthread_pthread_join=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_lthread_pthread_join=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_lthread_pthread_join" >&5 echo "${ECHO_T}$ac_cv_lib_lthread_pthread_join" >&6; } if test $ac_cv_lib_lthread_pthread_join = yes; then LIBPTHREAD="-llthread -llgcc_r" fi if test "x$LIBPTHREAD" = "x"; then kde_use_kernthreads=no else USE_THREADS="-D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" fi fi else USE_THREADS="" if test -z "$LIBPTHREAD"; then { echo "$as_me:$LINENO: checking whether $CXX supports -pthread" >&5 echo $ECHO_N "checking whether $CXX supports -pthread... $ECHO_C" >&6; } kde_cache=`echo pthread | sed 'y% .=/+-%____p_%'` if { as_var=kde_cv_prog_cxx_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -pthread" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "kde_cv_prog_cxx_$kde_cache=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext CXXFLAGS="$save_CXXFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : USE_THREADS="-pthread" else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } : fi fi fi case $host_os in solaris*) { echo "$as_me:$LINENO: checking whether $CXX supports -mt" >&5 echo $ECHO_N "checking whether $CXX supports -mt... $ECHO_C" >&6; } kde_cache=`echo mt | sed 'y% .=/+-%____p_%'` if { as_var=kde_cv_prog_cxx_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -mt" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "kde_cv_prog_cxx_$kde_cache=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext CXXFLAGS="$save_CXXFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : USE_THREADS="-mt" else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } : fi CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4" ;; freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; aix*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" LIBPTHREAD="$LIBPTHREAD -lc_r" ;; linux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" if test "$CXX" = "KCC"; then CXXFLAGS="$CXXFLAGS --thread_safe" NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe" fi ;; *) ;; esac { echo "$as_me:$LINENO: checking for extra includes" >&5 echo $ECHO_N "checking for extra includes... $ECHO_C" >&6; } # Check whether --with-extra-includes was given. if test "${with_extra_includes+set}" = set; then withval=$with_extra_includes; kde_use_extra_includes="$withval" else kde_use_extra_includes=NONE fi kde_extra_includes= if test -n "$kde_use_extra_includes" && \ test "$kde_use_extra_includes" != "NONE"; then ac_save_ifs=$IFS IFS=':' for dir in $kde_use_extra_includes; do kde_extra_includes="$kde_extra_includes $dir" USER_INCLUDES="$USER_INCLUDES -I$dir" done IFS=$ac_save_ifs kde_use_extra_includes="added" else kde_use_extra_includes="no" fi { echo "$as_me:$LINENO: result: $kde_use_extra_includes" >&5 echo "${ECHO_T}$kde_use_extra_includes" >&6; } kde_extra_libs= { echo "$as_me:$LINENO: checking for extra libs" >&5 echo $ECHO_N "checking for extra libs... $ECHO_C" >&6; } # Check whether --with-extra-libs was given. if test "${with_extra_libs+set}" = set; then withval=$with_extra_libs; kde_use_extra_libs=$withval else kde_use_extra_libs=NONE fi if test -n "$kde_use_extra_libs" && \ test "$kde_use_extra_libs" != "NONE"; then ac_save_ifs=$IFS IFS=':' for dir in $kde_use_extra_libs; do kde_extra_libs="$kde_extra_libs $dir" KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir" USER_LDFLAGS="$USER_LDFLAGS -L$dir" done IFS=$ac_save_ifs kde_use_extra_libs="added" else kde_use_extra_libs="no" fi { echo "$as_me:$LINENO: result: $kde_use_extra_libs" >&5 echo "${ECHO_T}$kde_use_extra_libs" >&6; } { echo "$as_me:$LINENO: checking for libz" >&5 echo $ECHO_N "checking for libz... $ECHO_C" >&6; } if test "${ac_cv_lib_z+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu kde_save_LIBS="$LIBS" LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET" kde_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { return (zlibVersion() == ZLIB_VERSION); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "ac_cv_lib_z='-lz'" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "ac_cv_lib_z=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$kde_save_LIBS" CFLAGS="$kde_save_CFLAGS" fi if test ! "$ac_cv_lib_z" = no; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF LIBZ="$ac_cv_lib_z" { echo "$as_me:$LINENO: result: $ac_cv_lib_z" >&5 echo "${ECHO_T}$ac_cv_lib_z" >&6; } else { { echo "$as_me:$LINENO: error: not found. Check your installation and look into config.log" >&5 echo "$as_me: error: not found. Check your installation and look into config.log" >&2;} { (exit 1); exit 1; }; } LIBZ="" fi { echo "$as_me:$LINENO: checking for libpng" >&5 echo $ECHO_N "checking for libpng... $ECHO_C" >&6; } if test "${ac_cv_lib_png+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else kde_save_LIBS="$LIBS" if test "x$kde_use_qt_emb" != "xyes"; then LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET" else LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm" fi kde_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { png_structp png_ptr = png_create_read_struct( /* image ptr */ PNG_LIBPNG_VER_STRING, 0, 0, 0 ); return( png_ptr != 0 ); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "ac_cv_lib_png='-lpng $LIBZ -lm'" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "ac_cv_lib_png=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$kde_save_LIBS" CFLAGS="$kde_save_CFLAGS" fi if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBPNG 1 _ACEOF LIBPNG="$ac_cv_lib_png" { echo "$as_me:$LINENO: result: $ac_cv_lib_png" >&5 echo "${ECHO_T}$ac_cv_lib_png" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } LIBPNG="" fi { echo "$as_me:$LINENO: checking for libjpeg6b" >&5 echo $ECHO_N "checking for libjpeg6b... $ECHO_C" >&6; } if test "${ac_cv_lib_jpeg_6b+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_LIBS="$LIBS" LIBS="$all_libraries $USER_LDFLAGS -ljpeg6b -lm" ac_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ struct jpeg_decompress_struct; typedef struct jpeg_decompress_struct * j_decompress_ptr; typedef int size_t; #ifdef __cplusplus extern "C" { #endif void jpeg_CreateDecompress(j_decompress_ptr cinfo, int version, size_t structsize); #ifdef __cplusplus } #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ int main () { jpeg_CreateDecompress(0L, 0, 0); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "ac_cv_lib_jpeg_6b=-ljpeg6b" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "ac_cv_lib_jpeg_6b=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi if eval "test ! \"`echo $ac_cv_lib_jpeg_6b`\" = no"; then LIBJPEG="$ac_cv_lib_jpeg_6b" { echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_6b" >&5 echo "${ECHO_T}$ac_cv_lib_jpeg_6b" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } { echo "$as_me:$LINENO: checking for libjpeg" >&5 echo $ECHO_N "checking for libjpeg... $ECHO_C" >&6; } if test "${ac_cv_lib_jpeg_normal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_LIBS="$LIBS" LIBS="$all_libraries $USER_LDFLAGS -ljpeg -lm" ac_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ struct jpeg_decompress_struct; typedef struct jpeg_decompress_struct * j_decompress_ptr; typedef int size_t; #ifdef __cplusplus extern "C" { #endif void jpeg_CreateDecompress(j_decompress_ptr cinfo, int version, size_t structsize); #ifdef __cplusplus } #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ int main () { jpeg_CreateDecompress(0L, 0, 0); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "ac_cv_lib_jpeg_normal=-ljpeg" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "ac_cv_lib_jpeg_normal=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_save_LIBS" CFLAGS="$ac_save_CFLAGS" fi if eval "test ! \"`echo $ac_cv_lib_jpeg_normal`\" = no"; then LIBJPEG="$ac_cv_lib_jpeg_normal" { echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_normal" >&5 echo "${ECHO_T}$ac_cv_lib_jpeg_normal" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } LIBJPEG= fi fi jpeg_incdirs="/usr/include /usr/local/include $kde_extra_includes" jpeg_incdir=NO for i in $jpeg_incdirs; do for j in jpeglib.h; do echo "configure: 32463: $i/$j" >&5 if test -r "$i/$j"; then echo "taking that" >&5 jpeg_incdir=$i break 2 fi done done test "x$jpeg_incdir" = xNO && jpeg_incdir= if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBJPEG 1 _ACEOF else if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then { echo "$as_me:$LINENO: WARNING: There is an installation error in jpeg support. You seem to have only one of either the headers _or_ the libraries installed. You may need to either provide correct --with-extra-... options, or the development package of libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/ Disabling JPEG support. " >&5 echo "$as_me: WARNING: There is an installation error in jpeg support. You seem to have only one of either the headers _or_ the libraries installed. You may need to either provide correct --with-extra-... options, or the development package of libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/ Disabling JPEG support. " >&2;} else { echo "$as_me:$LINENO: WARNING: libjpeg not found. disable JPEG support." >&5 echo "$as_me: WARNING: libjpeg not found. disable JPEG support." >&2;} fi jpeg_incdir= LIBJPEG= fi # Check whether --enable-mt was given. if test "${enable_mt+set}" = set; then enableval=$enable_mt; kde_use_qt_mt=$enableval else if test $kde_qtver = 3; then kde_use_qt_mt=yes else kde_use_qt_mt=no fi fi USING_QT_MT="" KDE_MT_LDFLAGS= KDE_MT_LIBS= if test "x$kde_use_qt_mt" = "xyes"; then if test -z "$LIBPTHREAD"; then if test -z "$USE_THREADS"; then kde_check_threading_default=no else kde_check_threading_default=yes fi else kde_check_threading_default=yes fi # Check whether --enable-threading was given. if test "${enable_threading+set}" = set; then enableval=$enable_threading; kde_use_threading=$enableval else kde_use_threading=$kde_check_threading_default fi if test "x$kde_use_threading" = "xyes"; then cat >>confdefs.h <<\_ACEOF #define HAVE_LIBPTHREAD 1 _ACEOF fi if test "x$kde_use_threading" = "xyes"; then CPPFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CPPFLAGS" KDE_MT_LDFLAGS="$USE_THREADS" KDE_MT_LIBS="$LIBPTHREAD" else kde_use_qt_mt=no fi fi kde_qt_was_given=yes if test -z "$LIBQT_GLOB"; then if test "x$kde_use_qt_emb" = "xyes"; then LIBQT_GLOB="libqte.*" else LIBQT_GLOB="libqt.*" fi fi if test -z "$LIBQT"; then if test "x$kde_use_qt_emb" = "xyes"; then qtlib="qte" else qtlib="qt" fi kde_int_qt="-l$qtlib" else kde_int_qt="$LIBQT" kde_lib_qt_set=yes fi if test -z "$LIBQPE"; then if test "x$kde_use_qt_emb" = "xyes"; then if test "x$kde_use_qt_emb_palm" = "xyes"; then LIB_QPE="-lqpe" else LIB_QPE="" fi else LIB_QPE="" fi fi if test "x$kde_use_qt_mt" = "xyes"; then if test -z "$LIBQT"; then LIBQT="-l$qtlib-mt" kde_int_qt="-l$qtlib-mt" else LIBQT="$qtlib-mt" kde_int_qt="$qtlib-mt" fi LIBQT_GLOB="lib$qtlib-mt.*" USING_QT_MT="using -mt" else LIBQT="-l$qtlib" fi if test $kde_qtver != 1; then LIBQT="$LIBQT $LIBPNG $LIBJPEG" fi if test $kde_qtver = 3; then LIBQT="$LIBQT $LIBDL" fi { echo "$as_me:$LINENO: checking for Qt" >&5 echo $ECHO_N "checking for Qt... $ECHO_C" >&6; } if test "x$kde_use_qt_emb" != "xyes"; then LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET" fi ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO qt_libraries="" qt_includes="" # Check whether --with-qt-dir was given. if test "${with_qt_dir+set}" = set; then withval=$with_qt_dir; ac_qt_includes="$withval"/include ac_qt_libraries="$withval"/lib ac_qt_bindir="$withval"/bin fi # Check whether --with-qt-includes was given. if test "${with_qt_includes+set}" = set; then withval=$with_qt_includes; ac_qt_includes="$withval" fi kde_qt_libs_given=no # Check whether --with-qt-libraries was given. if test "${with_qt_libraries+set}" = set; then withval=$with_qt_libraries; ac_qt_libraries="$withval" kde_qt_libs_given=yes fi if test "${ac_cv_have_qt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else #try to guess Qt locations qt_incdirs="" for dir in $kde_qt_dirs; do qt_incdirs="$qt_incdirs $dir/include $dir" done qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include /usr/include/qt /usr/include/qt3 /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 $x_includes" if test ! "$ac_qt_includes" = "NO"; then qt_incdirs="$ac_qt_includes $qt_incdirs" fi if test "$kde_qtver" != "1"; then kde_qt_header=qstyle.h else kde_qt_header=qglobal.h fi qt_incdir=NO for i in $qt_incdirs; do for j in $kde_qt_header; do echo "configure: 32698: $i/$j" >&5 if test -r "$i/$j"; then echo "taking that" >&5 qt_incdir=$i break 2 fi done done ac_qt_includes="$qt_incdir" qt_libdirs="" for dir in $kde_qt_dirs; do qt_libdirs="$qt_libdirs $dir/lib $dir" done qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries" if test ! "$ac_qt_libraries" = "NO"; then qt_libdir=$ac_qt_libraries else qt_libdirs="$ac_qt_libraries $qt_libdirs" # if the Qt was given, the chance is too big that libqt.* doesn't exist qt_libdir=NONE for dir in $qt_libdirs; do try="ls -1 $dir/${LIBQT_GLOB}" if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&5 ; fi done fi ac_qt_libraries="$qt_libdir" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ac_cxxflags_safe="$CXXFLAGS" ac_ldflags_safe="$LDFLAGS" ac_libs_safe="$LIBS" CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" LIBS="$LIBS $LIBQT $KDE_MT_LIBS" cat > conftest.$ac_ext < #include EOF if test "$kde_qtver" = "2"; then cat >> conftest.$ac_ext < #include #include EOF if test $kde_qtsubver -gt 0; then cat >> conftest.$ac_ext < EOF fi fi if test "$kde_qtver" = "3"; then cat >> conftest.$ac_ext < #include #include EOF fi echo "#if ! ($kde_qt_verstring)" >> conftest.$ac_ext cat >> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest; then rm -f conftest* else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_qt_libraries="NO" fi rm -f conftest* CXXFLAGS="$ac_cxxflags_safe" LDFLAGS="$ac_ldflags_safe" LIBS="$ac_libs_safe" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then ac_cv_have_qt="have_qt=no" ac_qt_notfound="" missing_qt_mt="" if test "$ac_qt_includes" = NO; then if test "$ac_qt_libraries" = NO; then ac_qt_notfound="(headers and libraries)"; else ac_qt_notfound="(headers)"; fi else if test "x$kde_use_qt_mt" = "xyes"; then missing_qt_mt=" Make sure that you have compiled Qt with thread support!" ac_qt_notfound="(library $qtlib-mt)"; else ac_qt_notfound="(library $qtlib)"; fi fi { { echo "$as_me:$LINENO: error: Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation! For more details about this problem, look at the end of config.log.$missing_qt_mt" >&5 echo "$as_me: error: Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation! For more details about this problem, look at the end of config.log.$missing_qt_mt" >&2;} { (exit 1); exit 1; }; } else have_qt="yes" fi fi eval "$ac_cv_have_qt" if test "$have_qt" != yes; then { echo "$as_me:$LINENO: result: $have_qt" >&5 echo "${ECHO_T}$have_qt" >&6; }; else ac_cv_have_qt="have_qt=yes \ ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries" { echo "$as_me:$LINENO: result: libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT" >&5 echo "${ECHO_T}libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT" >&6; } qt_libraries="$ac_qt_libraries" qt_includes="$ac_qt_includes" fi if test ! "$kde_qt_libs_given" = "yes"; then { echo "$as_me:$LINENO: checking if Qt compiles without flags" >&5 echo $ECHO_N "checking if Qt compiles without flags... $ECHO_C" >&6; } if test "${kde_cv_qt_direct+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ac_LD_LIBRARY_PATH_safe=$LD_LIBRARY_PATH ac_LIBRARY_PATH="$LIBRARY_PATH" ac_cxxflags_safe="$CXXFLAGS" ac_ldflags_safe="$LDFLAGS" ac_libs_safe="$LIBS" CXXFLAGS="$CXXFLAGS -I$qt_includes" LDFLAGS="$LDFLAGS $X_LDFLAGS" if test "x$kde_use_qt_emb" != "xyes"; then LIBS="$LIBQT -lXext -lX11 $LIBSOCKET" else LIBS="$LIBQT $LIBSOCKET" fi LD_LIBRARY_PATH= export LD_LIBRARY_PATH LIBRARY_PATH= export LIBRARY_PATH cat > conftest.$ac_ext < #include EOF if test "$kde_qtver" = "2"; then cat >> conftest.$ac_ext < #include #include EOF if test $kde_qtsubver -gt 0; then cat >> conftest.$ac_ext < EOF fi fi if test "$kde_qtver" = "3"; then cat >> conftest.$ac_ext < #include #include EOF fi echo "#if ! ($kde_qt_verstring)" >> conftest.$ac_ext cat >> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest; then kde_cv_qt_direct="yes" else kde_cv_qt_direct="no" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* CXXFLAGS="$ac_cxxflags_safe" LDFLAGS="$ac_ldflags_safe" LIBS="$ac_libs_safe" LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe" export LD_LIBRARY_PATH LIBRARY_PATH="$ac_LIBRARY_PATH" export LIBRARY_PATH ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi if test "$kde_cv_qt_direct" = "yes"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } qt_libraries= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then QT_INCLUDES="" else QT_INCLUDES="-I$qt_includes" all_includes="$QT_INCLUDES $all_includes" fi if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then QT_LDFLAGS="" else QT_LDFLAGS="-L$qt_libraries" all_libraries="$all_libraries $QT_LDFLAGS" fi test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS" qt_bindirs="" for dir in $kde_qt_dirs; do qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc" done qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin" if test ! "$ac_qt_bindir" = "NO"; then qt_bindirs="$ac_qt_bindir $qt_bindirs" fi { echo "$as_me:$LINENO: checking for moc" >&5 echo $ECHO_N "checking for moc... $ECHO_C" >&6; } if test -n "$MOC"; then kde_cv_path="$MOC"; else kde_cache=`echo moc | sed 'y%./+-%__p_%'` if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else kde_cv_path="NONE" dirs="$qt_bindirs" kde_save_IFS=$IFS IFS=':' for dir in $PATH; do dirs="$dirs $dir" done IFS=$kde_save_IFS for dir in $dirs; do if test -x "$dir/moc"; then if test -n "" then evalstr="$dir/moc 2>&1 " if eval $evalstr; then kde_cv_path="$dir/moc" break fi else kde_cv_path="$dir/moc" break fi fi done eval "kde_cv_path_$kde_cache=$kde_cv_path" fi eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" fi if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } { { echo "$as_me:$LINENO: error: No Qt meta object compiler (moc) found! Please check whether you installed Qt correctly. You need to have a running moc binary. configure tried to run $ac_cv_path_moc and the test didn't succeed. If configure shouldn't have tried this one, set the environment variable MOC to the right one before running configure. " >&5 echo "$as_me: error: No Qt meta object compiler (moc) found! Please check whether you installed Qt correctly. You need to have a running moc binary. configure tried to run $ac_cv_path_moc and the test didn't succeed. If configure shouldn't have tried this one, set the environment variable MOC to the right one before running configure. " >&2;} { (exit 1); exit 1; }; } else { echo "$as_me:$LINENO: result: $kde_cv_path" >&5 echo "${ECHO_T}$kde_cv_path" >&6; } MOC=$kde_cv_path fi if test -z "$UIC_NOT_NEEDED"; then { echo "$as_me:$LINENO: checking for uic" >&5 echo $ECHO_N "checking for uic... $ECHO_C" >&6; } if test -n "$UIC"; then kde_cv_path="$UIC"; else kde_cache=`echo uic | sed 'y%./+-%__p_%'` if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else kde_cv_path="NONE" dirs="$qt_bindirs" kde_save_IFS=$IFS IFS=':' for dir in $PATH; do dirs="$dirs $dir" done IFS=$kde_save_IFS for dir in $dirs; do if test -x "$dir/uic"; then if test -n "" then evalstr="$dir/uic 2>&1 " if eval $evalstr; then kde_cv_path="$dir/uic" break fi else kde_cv_path="$dir/uic" break fi fi done eval "kde_cv_path_$kde_cache=$kde_cv_path" fi eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" fi if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } UIC="" else { echo "$as_me:$LINENO: result: $kde_cv_path" >&5 echo "${ECHO_T}$kde_cv_path" >&6; } UIC=$kde_cv_path fi if test -z "$UIC" ; then { echo "$as_me:$LINENO: WARNING: No Qt ui compiler (uic) found! Please check whether you installed Qt correctly. You need to have a running uic binary. configure tried to run $ac_cv_path_uic and the test didn't succeed. If configure shouldn't have tried this one, set the environment variable UIC to the right one before running configure. " >&5 echo "$as_me: WARNING: No Qt ui compiler (uic) found! Please check whether you installed Qt correctly. You need to have a running uic binary. configure tried to run $ac_cv_path_uic and the test didn't succeed. If configure shouldn't have tried this one, set the environment variable UIC to the right one before running configure. " >&2;} exit 1 elif test $kde_qtver = 3; then { echo "$as_me:$LINENO: checking whether uic supports -L " >&5 echo $ECHO_N "checking whether uic supports -L ... $ECHO_C" >&6; } kde_cache=`echo L | sed 'y% .=/+-%____p_%'` if { as_var=kde_cv_prog_uic_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.ui < EOT ac_uic_testrun="$UIC -L /nonexistant conftest.ui >/dev/null" if { (eval echo "$as_me:$LINENO: \"$ac_uic_testrun\"") >&5 (eval $ac_uic_testrun) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then eval "kde_cv_prog_uic_$kde_cache=yes" else eval "kde_cv_prog_uic_$kde_cache=no" fi rm -f conftest* fi if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : ac_uic_supports_libpath=yes else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } : ac_uic_supports_libpath=no fi { echo "$as_me:$LINENO: checking whether uic supports -nounload " >&5 echo $ECHO_N "checking whether uic supports -nounload ... $ECHO_C" >&6; } kde_cache=`echo nounload | sed 'y% .=/+-%____p_%'` if { as_var=kde_cv_prog_uic_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.ui < EOT ac_uic_testrun="$UIC -nounload conftest.ui >/dev/null" if { (eval echo "$as_me:$LINENO: \"$ac_uic_testrun\"") >&5 (eval $ac_uic_testrun) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then eval "kde_cv_prog_uic_$kde_cache=yes" else eval "kde_cv_prog_uic_$kde_cache=no" fi rm -f conftest* fi if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : ac_uic_supports_nounload=yes else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } : ac_uic_supports_nounload=no fi if test x$ac_uic_supports_libpath = xyes; then UIC="$UIC -L \$(kde_widgetdir)" fi if test x$ac_uic_supports_nounload = xyes; then UIC="$UIC -nounload" fi fi else UIC="echo uic not available: " fi UIC_TR="i18n" if test $kde_qtver = 3; then UIC_TR="tr2i18n" fi { echo "$as_me:$LINENO: checking if Qt needs $LIBJPEG" >&5 echo $ECHO_N "checking if Qt needs $LIBJPEG... $ECHO_C" >&6; } if test "${kde_cv_qt_jpeg+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ac_save_LIBS="$LIBS" LIBS="$all_libraries $USER_LDFLAGS $LIBQT" LIBS=`echo $LIBS | sed "s/$LIBJPEG//"` ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { int argc; char** argv; QApplication app(argc, argv); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "kde_cv_qt_jpeg=no" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "kde_cv_qt_jpeg=yes" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_save_LIBS" CXXFLAGS="$ac_save_CXXFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi if eval "test ! \"`echo $kde_cv_qt_jpeg`\" = no"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } LIBJPEG_QT='$(LIBJPEG)' else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } LIBJPEG_QT= fi if test "x$kde_use_qt_emb" != "xyes"; then LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBPNG) -lXext $(LIB_X11) $(LIBSM)' else LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBPNG)' fi test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS" { echo "$as_me:$LINENO: checking for rpath" >&5 echo $ECHO_N "checking for rpath... $ECHO_C" >&6; } # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then enableval=$enable_rpath; USE_RPATH=$enableval else USE_RPATH=yes fi if test -z "$KDE_RPATH" && test "$USE_RPATH" = "yes"; then KDE_RPATH="-R \$(kde_libraries)" if test -n "$qt_libraries"; then KDE_RPATH="$KDE_RPATH -R \$(qt_libraries)" fi if test -n "$X_LDFLAGS"; then KDE_RPATH="$KDE_RPATH -R \$(x_libraries)" fi if test -n "$KDE_EXTRA_RPATH"; then KDE_RPATH="$KDE_RPATH \$(KDE_EXTRA_RPATH)" fi fi { echo "$as_me:$LINENO: result: $USE_RPATH" >&5 echo "${ECHO_T}$USE_RPATH" >&6; } { echo "$as_me:$LINENO: checking for KDE" >&5 echo $ECHO_N "checking for KDE... $ECHO_C" >&6; } if test "${prefix}" != NONE; then kde_includes=${prefix}/include ac_kde_includes=$prefix/include if test "${exec_prefix}" != NONE; then kde_libraries=${exec_prefix}/lib ac_kde_libraries=$exec_prefix/lib else kde_libraries=${prefix}/lib ac_kde_libraries=$prefix/lib fi else ac_kde_includes= ac_kde_libraries= kde_libraries="" kde_includes="" fi if test "${ac_cv_have_kde+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else #try to guess kde locations if test "$kde_qtver" = 1; then kde_check_header="ksock.h" kde_check_lib="libkdecore.la" else kde_check_header="ksharedptr.h" kde_check_lib="libkio.la" fi if test -z ""; then test -n "$KDEDIR" || KDEDIR=`kde-config --prefix` kde_incdirs="$KDEDIR/include/kde3 $KDEDIR/include/kde $KDEDIR/include" kde_incdirs="$kde_incdirs $ac_kde_includes" kde_incdir=NO for i in $kde_incdirs; do for j in $kde_check_header; do echo "configure: 33488: $i/$j" >&5 if test -r "$i/$j"; then echo "taking that" >&5 kde_incdir=$i break 2 fi done done ac_kde_includes="$kde_incdir" if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then { { echo "$as_me:$LINENO: error: in the prefix, you've chosen, are no KDE headers installed. This will fail. So, check this please and use another prefix!" >&5 echo "$as_me: error: in the prefix, you've chosen, are no KDE headers installed. This will fail. So, check this please and use another prefix!" >&2;} { (exit 1); exit 1; }; } fi kde_libdirs="$KDEDIR/lib`kde-config --libsuffix`" kde_libdirs="$kde_libdirs $ac_kde_libraries" kde_libdir=NO for i in $kde_libdirs; do for j in $kde_check_lib; do echo "configure: 33517: $i/$j" >&5 if test -r "$i/$j"; then echo "taking that" >&5 kde_libdir=$i break 2 fi done done ac_kde_libraries="$kde_libdir" if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then { { echo "$as_me:$LINENO: error: in the prefix, you've chosen, are no KDE libraries installed. This will fail. So, check this please and use another prefix!" >&5 echo "$as_me: error: in the prefix, you've chosen, are no KDE libraries installed. This will fail. So, check this please and use another prefix!" >&2;} { (exit 1); exit 1; }; } fi ac_kde_libraries="$kde_libdir" if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO; then ac_cv_have_kde="have_kde=no" else ac_cv_have_kde="have_kde=yes \ ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" fi else ac_cv_have_kde="have_kde=no" fi fi eval "$ac_cv_have_kde" if test "$have_kde" != "yes"; then if test "${prefix}" = NONE; then ac_kde_prefix="$ac_default_prefix" else ac_kde_prefix="$prefix" fi if test "$exec_prefix" = NONE; then ac_kde_exec_prefix="$ac_kde_prefix" { echo "$as_me:$LINENO: result: will be installed in $ac_kde_prefix" >&5 echo "${ECHO_T}will be installed in $ac_kde_prefix" >&6; } else ac_kde_exec_prefix="$exec_prefix" { echo "$as_me:$LINENO: result: will be installed in $ac_kde_prefix and $ac_kde_exec_prefix" >&5 echo "${ECHO_T}will be installed in $ac_kde_prefix and $ac_kde_exec_prefix" >&6; } fi kde_libraries="${ac_kde_exec_prefix}/lib" kde_includes=${ac_kde_prefix}/include else ac_cv_have_kde="have_kde=yes \ ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" { echo "$as_me:$LINENO: result: libraries $ac_kde_libraries, headers $ac_kde_includes" >&5 echo "${ECHO_T}libraries $ac_kde_libraries, headers $ac_kde_includes" >&6; } kde_libraries="$ac_kde_libraries" kde_includes="$ac_kde_includes" fi if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes" || test "$kde_includes" = "/usr/include"; then KDE_INCLUDES="" else KDE_INCLUDES="-I$kde_includes" all_includes="$KDE_INCLUDES $all_includes" fi KDE_LDFLAGS="-L$kde_libraries" if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then all_libraries="$all_libraries $KDE_LDFLAGS" fi all_libraries="$all_libraries $USER_LDFLAGS" all_includes="$all_includes $USER_INCLUDES" # Check whether --enable-path-check was given. if test "${enable_path_check+set}" = set; then enableval=$enable_path_check; if test "$enableval" = "no"; then ac_use_path_checking="default" else ac_use_path_checking="" fi else if test "$kde_qtver" = 1; then ac_use_path_checking="" else ac_use_path_checking="default" fi fi { echo "$as_me:$LINENO: checking for KDE paths" >&5 echo $ECHO_N "checking for KDE paths... $ECHO_C" >&6; } kde_result="" kde_cached_paths=yes if test "${kde_cv_all_paths+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_use_path_checking" = "default"; then if test -z "$kde_htmldir"; then kde_htmldir='\${prefix}/share/doc/HTML' fi if test -z "$kde_appsdir"; then kde_appsdir='\${prefix}/share/applnk' fi if test -z "$kde_icondir"; then kde_icondir='\${prefix}/share/icons' fi if test -z "$kde_sounddir"; then kde_sounddir='\${prefix}/share/sounds' fi if test -z "$kde_datadir"; then kde_datadir='\${prefix}/share/apps' fi if test -z "$kde_locale"; then kde_locale='\${prefix}/share/locale' fi if test -z "$kde_cgidir"; then kde_cgidir='\${exec_prefix}/cgi-bin' fi if test -z "$kde_confdir"; then kde_confdir='\${prefix}/share/config' fi if test -z "$kde_mimedir"; then kde_mimedir='\${prefix}/share/mimelnk' fi if test -z "$kde_toolbardir"; then kde_toolbardir='\${prefix}/share/toolbar' fi if test -z "$kde_wallpaperdir"; then kde_wallpaperdir='\${prefix}/share/wallpapers' fi if test -z "$kde_templatesdir"; then kde_templatesdir='\${prefix}/share/templates' fi if test -z "$kde_bindir"; then kde_bindir='\${exec_prefix}/bin' fi if test -z "$kde_servicesdir"; then kde_servicesdir='\${prefix}/share/services' fi if test -z "$kde_servicetypesdir"; then kde_servicetypesdir='\${prefix}/share/servicetypes' fi if test -z "$kde_moduledir"; then if test "$kde_qtver" = "2"; then kde_moduledir='\${exec_prefix}/lib/kde2' else kde_moduledir='\${exec_prefix}/lib/kde3' fi fi if test -z "$kde_styledir"; then kde_styledir='\${exec_prefix}/lib/kde3/plugins/styles' fi if test -z "$kde_widgetdir"; then kde_widgetdir='\${exec_prefix}/lib/kde3/plugins/designer' fi kde_cv_all_paths="kde_have_all_paths=\"yes\" \ kde_htmldir=\"$kde_htmldir\" \ kde_appsdir=\"$kde_appsdir\" \ kde_icondir=\"$kde_icondir\" \ kde_sounddir=\"$kde_sounddir\" \ kde_datadir=\"$kde_datadir\" \ kde_locale=\"$kde_locale\" \ kde_cgidir=\"$kde_cgidir\" \ kde_confdir=\"$kde_confdir\" \ kde_mimedir=\"$kde_mimedir\" \ kde_toolbardir=\"$kde_toolbardir\" \ kde_wallpaperdir=\"$kde_wallpaperdir\" \ kde_templatesdir=\"$kde_templatesdir\" \ kde_bindir=\"$kde_bindir\" \ kde_servicesdir=\"$kde_servicesdir\" \ kde_servicetypesdir=\"$kde_servicetypesdir\" \ kde_moduledir=\"$kde_moduledir\" \ kde_styledir=\"$kde_styledir\" \ kde_widgetdir=\"$kde_widgetdir\" \ kde_result=defaults" else if test $kde_qtver = 1; then { echo "$as_me:$LINENO: result: compiling" >&5 echo "${ECHO_T}compiling" >&6; } { echo "$as_me:$LINENO: checking for KDE headers installed" >&5 echo $ECHO_N "checking for KDE headers installed... $ECHO_C" >&6; } ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cat > conftest.$ac_ext < #endif #include #include "confdefs.h" #include int main() { printf("kde_htmldir=\\"%s\\"\n", KApplication::kde_htmldir().data()); printf("kde_appsdir=\\"%s\\"\n", KApplication::kde_appsdir().data()); printf("kde_icondir=\\"%s\\"\n", KApplication::kde_icondir().data()); printf("kde_sounddir=\\"%s\\"\n", KApplication::kde_sounddir().data()); printf("kde_datadir=\\"%s\\"\n", KApplication::kde_datadir().data()); printf("kde_locale=\\"%s\\"\n", KApplication::kde_localedir().data()); printf("kde_cgidir=\\"%s\\"\n", KApplication::kde_cgidir().data()); printf("kde_confdir=\\"%s\\"\n", KApplication::kde_configdir().data()); printf("kde_mimedir=\\"%s\\"\n", KApplication::kde_mimedir().data()); printf("kde_toolbardir=\\"%s\\"\n", KApplication::kde_toolbardir().data()); printf("kde_wallpaperdir=\\"%s\\"\n", KApplication::kde_wallpaperdir().data()); printf("kde_bindir=\\"%s\\"\n", KApplication::kde_bindir().data()); printf("kde_partsdir=\\"%s\\"\n", KApplication::kde_partsdir().data()); printf("kde_servicesdir=\\"/tmp/dummy\\"\n"); printf("kde_servicetypesdir=\\"/tmp/dummy\\"\n"); printf("kde_moduledir=\\"/tmp/dummy\\"\n"); printf("kde_styledir=\\"/tmp/dummy\\"\n"); printf("kde_widgetdir=\\"/tmp/dummy\\"\n"); return 0; } EOF ac_compile='${CXX-g++} -c $CXXFLAGS $all_includes $CPPFLAGS conftest.$ac_ext' if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { { echo "$as_me:$LINENO: error: your system is not able to compile a small KDE application! Check, if you installed the KDE header files correctly. For more details about this problem, look at the end of config.log." >&5 echo "$as_me: error: your system is not able to compile a small KDE application! Check, if you installed the KDE header files correctly. For more details about this problem, look at the end of config.log." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu KDE_TEST_RPATH= if test -n "$USE_RPATH"; then if test -n "$kde_libraries"; then KDE_TEST_RPATH="-R $kde_libraries" fi if test -n "$qt_libraries"; then KDE_TEST_RPATH="$KDE_TEST_RPATH -R $qt_libraries" fi if test -n "$x_libraries"; then KDE_TEST_RPATH="$KDE_TEST_RPATH -R $x_libraries" fi KDE_TEST_RPATH="$KDE_TEST_RPATH $KDE_EXTRA_RPATH" fi { echo "$as_me:$LINENO: checking for KDE libraries installed" >&5 echo $ECHO_N "checking for KDE libraries installed... $ECHO_C" >&6; } ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS $all_libraries conftest.$ac_ext $LIBS -lkdecore $LIBQT $KDE_TEST_RPATH 1>&5' if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { { echo "$as_me:$LINENO: error: your system fails at linking a small KDE application! Check, if your compiler is installed correctly and if you have used the same compiler to compile Qt and kdelibs as you did use now. For more details about this problem, look at the end of config.log." >&5 echo "$as_me: error: your system fails at linking a small KDE application! Check, if your compiler is installed correctly and if you have used the same compiler to compile Qt and kdelibs as you did use now. For more details about this problem, look at the end of config.log." >&2;} { (exit 1); exit 1; }; } fi if eval `KDEDIR= ./conftest 2>&5`; then kde_result=done else kde_result=problems fi KDEDIR= ./conftest 2> /dev/null >&5 # make an echo for config.log kde_have_all_paths=yes kde_cv_all_paths="kde_have_all_paths=\"yes\" \ kde_htmldir=\"$kde_htmldir\" \ kde_appsdir=\"$kde_appsdir\" \ kde_icondir=\"$kde_icondir\" \ kde_sounddir=\"$kde_sounddir\" \ kde_datadir=\"$kde_datadir\" \ kde_locale=\"$kde_locale\" \ kde_cgidir=\"$kde_cgidir\" \ kde_confdir=\"$kde_confdir\" \ kde_mimedir=\"$kde_mimedir\" \ kde_toolbardir=\"$kde_toolbardir\" \ kde_wallpaperdir=\"$kde_wallpaperdir\" \ kde_templatesdir=\"$kde_templatesdir\" \ kde_bindir=\"$kde_bindir\" \ kde_servicesdir=\"$kde_servicesdir\" \ kde_servicetypesdir=\"$kde_servicetypesdir\" \ kde_moduledir=\"$kde_moduledir\" \ kde_styledir=\"$kde_styledir\" \ kde_widgetdir=\"$kde_widgetdir\" \ kde_result=$kde_result" else { { echo "$as_me:$LINENO: error: path checking not yet supported for KDE 2" >&5 echo "$as_me: error: path checking not yet supported for KDE 2" >&2;} { (exit 1); exit 1; }; } fi fi kde_cached_paths=no fi eval "$kde_cv_all_paths" if test -z "$kde_htmldir" || test -z "$kde_appsdir" || test -z "$kde_icondir" || test -z "$kde_sounddir" || test -z "$kde_datadir" || test -z "$kde_locale" || test -z "$kde_cgidir" || test -z "$kde_confdir" || test -z "$kde_mimedir" || test -z "$kde_toolbardir" || test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" || test -z "$kde_bindir" || test -z "$kde_servicesdir" || test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" || test -z "$kde_styledir" || test -z "kde_widgetdir" test "x$kde_have_all_paths" != "xyes"; then kde_have_all_paths=no fi if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then # wrong values were cached, may be, we can set better ones kde_result= kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir= kde_datadir= kde_locale= kde_cgidir= kde_confdir= kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir= kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir= kde_have_all_paths= kde_styledir= kde_widgetdir= if test "$ac_use_path_checking" = "default"; then if test -z "$kde_htmldir"; then kde_htmldir='\${prefix}/share/doc/HTML' fi if test -z "$kde_appsdir"; then kde_appsdir='\${prefix}/share/applnk' fi if test -z "$kde_icondir"; then kde_icondir='\${prefix}/share/icons' fi if test -z "$kde_sounddir"; then kde_sounddir='\${prefix}/share/sounds' fi if test -z "$kde_datadir"; then kde_datadir='\${prefix}/share/apps' fi if test -z "$kde_locale"; then kde_locale='\${prefix}/share/locale' fi if test -z "$kde_cgidir"; then kde_cgidir='\${exec_prefix}/cgi-bin' fi if test -z "$kde_confdir"; then kde_confdir='\${prefix}/share/config' fi if test -z "$kde_mimedir"; then kde_mimedir='\${prefix}/share/mimelnk' fi if test -z "$kde_toolbardir"; then kde_toolbardir='\${prefix}/share/toolbar' fi if test -z "$kde_wallpaperdir"; then kde_wallpaperdir='\${prefix}/share/wallpapers' fi if test -z "$kde_templatesdir"; then kde_templatesdir='\${prefix}/share/templates' fi if test -z "$kde_bindir"; then kde_bindir='\${exec_prefix}/bin' fi if test -z "$kde_servicesdir"; then kde_servicesdir='\${prefix}/share/services' fi if test -z "$kde_servicetypesdir"; then kde_servicetypesdir='\${prefix}/share/servicetypes' fi if test -z "$kde_moduledir"; then if test "$kde_qtver" = "2"; then kde_moduledir='\${exec_prefix}/lib/kde2' else kde_moduledir='\${exec_prefix}/lib/kde3' fi fi if test -z "$kde_styledir"; then kde_styledir='\${exec_prefix}/lib/kde3/plugins/styles' fi if test -z "$kde_widgetdir"; then kde_widgetdir='\${exec_prefix}/lib/kde3/plugins/designer' fi kde_cv_all_paths="kde_have_all_paths=\"yes\" \ kde_htmldir=\"$kde_htmldir\" \ kde_appsdir=\"$kde_appsdir\" \ kde_icondir=\"$kde_icondir\" \ kde_sounddir=\"$kde_sounddir\" \ kde_datadir=\"$kde_datadir\" \ kde_locale=\"$kde_locale\" \ kde_cgidir=\"$kde_cgidir\" \ kde_confdir=\"$kde_confdir\" \ kde_mimedir=\"$kde_mimedir\" \ kde_toolbardir=\"$kde_toolbardir\" \ kde_wallpaperdir=\"$kde_wallpaperdir\" \ kde_templatesdir=\"$kde_templatesdir\" \ kde_bindir=\"$kde_bindir\" \ kde_servicesdir=\"$kde_servicesdir\" \ kde_servicetypesdir=\"$kde_servicetypesdir\" \ kde_moduledir=\"$kde_moduledir\" \ kde_styledir=\"$kde_styledir\" \ kde_widgetdir=\"$kde_widgetdir\" \ kde_result=defaults" else if test $kde_qtver = 1; then { echo "$as_me:$LINENO: result: compiling" >&5 echo "${ECHO_T}compiling" >&6; } { echo "$as_me:$LINENO: checking for KDE headers installed" >&5 echo $ECHO_N "checking for KDE headers installed... $ECHO_C" >&6; } ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cat > conftest.$ac_ext < #endif #include #include "confdefs.h" #include int main() { printf("kde_htmldir=\\"%s\\"\n", KApplication::kde_htmldir().data()); printf("kde_appsdir=\\"%s\\"\n", KApplication::kde_appsdir().data()); printf("kde_icondir=\\"%s\\"\n", KApplication::kde_icondir().data()); printf("kde_sounddir=\\"%s\\"\n", KApplication::kde_sounddir().data()); printf("kde_datadir=\\"%s\\"\n", KApplication::kde_datadir().data()); printf("kde_locale=\\"%s\\"\n", KApplication::kde_localedir().data()); printf("kde_cgidir=\\"%s\\"\n", KApplication::kde_cgidir().data()); printf("kde_confdir=\\"%s\\"\n", KApplication::kde_configdir().data()); printf("kde_mimedir=\\"%s\\"\n", KApplication::kde_mimedir().data()); printf("kde_toolbardir=\\"%s\\"\n", KApplication::kde_toolbardir().data()); printf("kde_wallpaperdir=\\"%s\\"\n", KApplication::kde_wallpaperdir().data()); printf("kde_bindir=\\"%s\\"\n", KApplication::kde_bindir().data()); printf("kde_partsdir=\\"%s\\"\n", KApplication::kde_partsdir().data()); printf("kde_servicesdir=\\"/tmp/dummy\\"\n"); printf("kde_servicetypesdir=\\"/tmp/dummy\\"\n"); printf("kde_moduledir=\\"/tmp/dummy\\"\n"); printf("kde_styledir=\\"/tmp/dummy\\"\n"); printf("kde_widgetdir=\\"/tmp/dummy\\"\n"); return 0; } EOF ac_compile='${CXX-g++} -c $CXXFLAGS $all_includes $CPPFLAGS conftest.$ac_ext' if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { { echo "$as_me:$LINENO: error: your system is not able to compile a small KDE application! Check, if you installed the KDE header files correctly. For more details about this problem, look at the end of config.log." >&5 echo "$as_me: error: your system is not able to compile a small KDE application! Check, if you installed the KDE header files correctly. For more details about this problem, look at the end of config.log." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu KDE_TEST_RPATH= if test -n "$USE_RPATH"; then if test -n "$kde_libraries"; then KDE_TEST_RPATH="-R $kde_libraries" fi if test -n "$qt_libraries"; then KDE_TEST_RPATH="$KDE_TEST_RPATH -R $qt_libraries" fi if test -n "$x_libraries"; then KDE_TEST_RPATH="$KDE_TEST_RPATH -R $x_libraries" fi KDE_TEST_RPATH="$KDE_TEST_RPATH $KDE_EXTRA_RPATH" fi { echo "$as_me:$LINENO: checking for KDE libraries installed" >&5 echo $ECHO_N "checking for KDE libraries installed... $ECHO_C" >&6; } ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS $all_libraries conftest.$ac_ext $LIBS -lkdecore $LIBQT $KDE_TEST_RPATH 1>&5' if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { { echo "$as_me:$LINENO: error: your system fails at linking a small KDE application! Check, if your compiler is installed correctly and if you have used the same compiler to compile Qt and kdelibs as you did use now. For more details about this problem, look at the end of config.log." >&5 echo "$as_me: error: your system fails at linking a small KDE application! Check, if your compiler is installed correctly and if you have used the same compiler to compile Qt and kdelibs as you did use now. For more details about this problem, look at the end of config.log." >&2;} { (exit 1); exit 1; }; } fi if eval `KDEDIR= ./conftest 2>&5`; then kde_result=done else kde_result=problems fi KDEDIR= ./conftest 2> /dev/null >&5 # make an echo for config.log kde_have_all_paths=yes kde_cv_all_paths="kde_have_all_paths=\"yes\" \ kde_htmldir=\"$kde_htmldir\" \ kde_appsdir=\"$kde_appsdir\" \ kde_icondir=\"$kde_icondir\" \ kde_sounddir=\"$kde_sounddir\" \ kde_datadir=\"$kde_datadir\" \ kde_locale=\"$kde_locale\" \ kde_cgidir=\"$kde_cgidir\" \ kde_confdir=\"$kde_confdir\" \ kde_mimedir=\"$kde_mimedir\" \ kde_toolbardir=\"$kde_toolbardir\" \ kde_wallpaperdir=\"$kde_wallpaperdir\" \ kde_templatesdir=\"$kde_templatesdir\" \ kde_bindir=\"$kde_bindir\" \ kde_servicesdir=\"$kde_servicesdir\" \ kde_servicetypesdir=\"$kde_servicetypesdir\" \ kde_moduledir=\"$kde_moduledir\" \ kde_styledir=\"$kde_styledir\" \ kde_widgetdir=\"$kde_widgetdir\" \ kde_result=$kde_result" else { { echo "$as_me:$LINENO: error: path checking not yet supported for KDE 2" >&5 echo "$as_me: error: path checking not yet supported for KDE 2" >&2;} { (exit 1); exit 1; }; } fi fi eval "$kde_cv_all_paths" if test -z "$kde_htmldir" || test -z "$kde_appsdir" || test -z "$kde_icondir" || test -z "$kde_sounddir" || test -z "$kde_datadir" || test -z "$kde_locale" || test -z "$kde_cgidir" || test -z "$kde_confdir" || test -z "$kde_mimedir" || test -z "$kde_toolbardir" || test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" || test -z "$kde_bindir" || test -z "$kde_servicesdir" || test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" || test -z "$kde_styledir" || test -z "kde_widgetdir" test "x$kde_have_all_paths" != "xyes"; then kde_have_all_paths=no fi kde_result="$kde_result (cache overridden)" fi if test "$kde_have_all_paths" = "no"; then { { echo "$as_me:$LINENO: error: configure could not run a little KDE program to test the environment. Since it had compiled and linked before, it must be a strange problem on your system. Look at config.log for details. If you are not able to fix this, look at http://www.kde.org/faq/installation.html or any www.kde.org mirror. (If you're using an egcs version on Linux, you may update binutils!) " >&5 echo "$as_me: error: configure could not run a little KDE program to test the environment. Since it had compiled and linked before, it must be a strange problem on your system. Look at config.log for details. If you are not able to fix this, look at http://www.kde.org/faq/installation.html or any www.kde.org mirror. (If you're using an egcs version on Linux, you may update binutils!) " >&2;} { (exit 1); exit 1; }; } else rm -f conftest* { echo "$as_me:$LINENO: result: $kde_result" >&5 echo "${ECHO_T}$kde_result" >&6; } fi bindir=$kde_bindir kde_default_bindirs="`kde-config --prefix`/bin /usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin" if test -n "$KDEDIRS"; then kde_save_IFS=$IFS IFS=: for dir in $KDEDIRS; do kde_default_bindirs="$dir/bin $kde_default_bindirs " done IFS=$kde_save_IFS fi kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_default_bindirs" { echo "$as_me:$LINENO: checking for dcopidl" >&5 echo $ECHO_N "checking for dcopidl... $ECHO_C" >&6; } if test -n "$DCOPIDL"; then kde_cv_path="$DCOPIDL"; else kde_cache=`echo dcopidl | sed 'y%./+-%__p_%'` if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else kde_cv_path="NONE" dirs="$kde_default_bindirs" kde_save_IFS=$IFS IFS=':' for dir in $PATH; do dirs="$dirs $dir" done IFS=$kde_save_IFS for dir in $dirs; do if test -x "$dir/dcopidl"; then if test -n "" then evalstr="$dir/dcopidl 2>&1 " if eval $evalstr; then kde_cv_path="$dir/dcopidl" break fi else kde_cv_path="$dir/dcopidl" break fi fi done eval "kde_cv_path_$kde_cache=$kde_cv_path" fi eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" fi if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } { { echo "$as_me:$LINENO: error: The important program dcopidl was not found! Please check whether you installed KDE correctly. " >&5 echo "$as_me: error: The important program dcopidl was not found! Please check whether you installed KDE correctly. " >&2;} { (exit 1); exit 1; }; } else { echo "$as_me:$LINENO: result: $kde_cv_path" >&5 echo "${ECHO_T}$kde_cv_path" >&6; } DCOPIDL=$kde_cv_path fi { echo "$as_me:$LINENO: checking for dcopidl2cpp" >&5 echo $ECHO_N "checking for dcopidl2cpp... $ECHO_C" >&6; } if test -n "$DCOPIDL2CPP"; then kde_cv_path="$DCOPIDL2CPP"; else kde_cache=`echo dcopidl2cpp | sed 'y%./+-%__p_%'` if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else kde_cv_path="NONE" dirs="$kde_default_bindirs" kde_save_IFS=$IFS IFS=':' for dir in $PATH; do dirs="$dirs $dir" done IFS=$kde_save_IFS for dir in $dirs; do if test -x "$dir/dcopidl2cpp"; then if test -n "" then evalstr="$dir/dcopidl2cpp 2>&1 " if eval $evalstr; then kde_cv_path="$dir/dcopidl2cpp" break fi else kde_cv_path="$dir/dcopidl2cpp" break fi fi done eval "kde_cv_path_$kde_cache=$kde_cv_path" fi eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" fi if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } { { echo "$as_me:$LINENO: error: The important program dcopidl2cpp was not found! Please check whether you installed KDE correctly. " >&5 echo "$as_me: error: The important program dcopidl2cpp was not found! Please check whether you installed KDE correctly. " >&2;} { (exit 1); exit 1; }; } else { echo "$as_me:$LINENO: result: $kde_cv_path" >&5 echo "${ECHO_T}$kde_cv_path" >&6; } DCOPIDL2CPP=$kde_cv_path fi { echo "$as_me:$LINENO: checking for kde-config" >&5 echo $ECHO_N "checking for kde-config... $ECHO_C" >&6; } if test -n "$KDECONFIG"; then kde_cv_path="$KDECONFIG"; else kde_cache=`echo kde-config | sed 'y%./+-%__p_%'` if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else kde_cv_path="NONE" dirs="$kde_default_bindirs" kde_save_IFS=$IFS IFS=':' for dir in $PATH; do dirs="$dirs $dir" done IFS=$kde_save_IFS for dir in $dirs; do if test -x "$dir/kde-config"; then if test -n "" then evalstr="$dir/kde-config 2>&1 " if eval $evalstr; then kde_cv_path="$dir/kde-config" break fi else kde_cv_path="$dir/kde-config" break fi fi done eval "kde_cv_path_$kde_cache=$kde_cv_path" fi eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" fi if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } else { echo "$as_me:$LINENO: result: $kde_cv_path" >&5 echo "${ECHO_T}$kde_cv_path" >&6; } KDECONFIG=$kde_cv_path fi DCOP_DEPENDENCIES='$(DCOPIDL)' if test -x "$KDECONFIG"; then # it can be "compiled" kde_libs_prefix=`$KDECONFIG --prefix` if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then { { echo "$as_me:$LINENO: error: $KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs. This means it has been moved since you installed it. This won't work. Please recompile kdelibs for the new prefix. " >&5 echo "$as_me: error: $KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs. This means it has been moved since you installed it. This won't work. Please recompile kdelibs for the new prefix. " >&2;} { (exit 1); exit 1; }; } fi kde_libs_htmldir=`$KDECONFIG --install html --expandvars` else kde_libs_prefix='$(prefix)' kde_libs_htmldir='$(kde_htmldir)' fi if test "$kde_qtver" = 1; then kde_minidir="$kde_icondir/mini" else # for KDE 1 - this breaks KDE2 apps using minidir, but # that's the plan ;-/ kde_minidir="/dev/null" fi if test $kde_qtver = 3; then LIB_KDECORE='-lkdecore' LIB_KDEUI='-lkdeui' LIB_KIO='-lkio' LIB_SMB='-lsmb' LIB_KAB='-lkab' LIB_KHTML='-lkhtml' LIB_KSPELL='-lkspell' LIB_KPARTS='-lkparts' LIB_KDEPRINT='-lkdeprint' # these are for backward compatibility LIB_KSYCOCA='-lkio' LIB_KFILE='-lkio' elif test $kde_qtver = 2; then LIB_KDECORE='-lkdecore' LIB_KDEUI='-lkdeui' LIB_KIO='-lkio' LIB_KSYCOCA='-lksycoca' LIB_SMB='-lsmb' LIB_KFILE='-lkfile' LIB_KAB='-lkab' LIB_KHTML='-lkhtml' LIB_KSPELL='-lkspell' LIB_KPARTS='-lkparts' LIB_KDEPRINT='-lkdeprint' else LIB_KDECORE='-lkdecore -lXext $(LIB_QT)' LIB_KDEUI='-lkdeui $(LIB_KDECORE)' LIB_KFM='-lkfm $(LIB_KDECORE)' LIB_KFILE='-lkfile $(LIB_KFM) $(LIB_KDEUI)' LIB_KAB='-lkab $(LIB_KIMGIO) $(LIB_KDECORE)' fi cat >>confdefs.h <<\_ACEOF #define WITH_KDE 1 _ACEOF fi # Ensure MSVC-compatible struct packing convention is used when # compiling for Win32 with gcc. # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while # gcc2 uses "-fnative-struct". case $host_os in *mingw*|*cygwin*) if test x$GCC = xyes; then msnative_struct='' { echo "$as_me:$LINENO: checking how to get MSVC-compatible struct packing" >&5 echo $ECHO_N "checking how to get MSVC-compatible struct packing... $ECHO_C" >&6; } if test -z "$ac_cv_prog_CC"; then our_gcc="$CC" else our_gcc="$ac_cv_prog_CC" fi case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in 2.) if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then msnative_struct='-fnative-struct' fi ;; *) if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then msnative_struct='-mms-bitfields' fi ;; esac if test x"$msnative_struct" = x ; then { echo "$as_me:$LINENO: result: no way" >&5 echo "${ECHO_T}no way" >&6; } { echo "$as_me:$LINENO: WARNING: produced libraries might be incompatible with MSVC-compiled code" >&5 echo "$as_me: WARNING: produced libraries might be incompatible with MSVC-compiled code" >&2;} else CFLAGS="$CFLAGS $msnative_struct" { echo "$as_me:$LINENO: result: ${msnative_struct}" >&5 echo "${ECHO_T}${msnative_struct}" >&6; } fi fi ;; esac # Check for the new -fvisibility=hidden flag introduced in gcc 4.0 # Allow to reduce shared library size and avoid symbol clash # Unfortunately, this only works for fully static builds. If any parts of GDB are built shared (--enable-shared or --enable-shared-*), we currently have no way to disable it just for these parts. -- Kevin case $host_os in *mingw*) ;; *) case "$ac_configure_args" in *--enable-shared*) ;; *) if test x$GCC = xyes; then visibility_flag='' { echo "$as_me:$LINENO: checking whether gcc accepts -fvisibility" >&5 echo $ECHO_N "checking whether gcc accepts -fvisibility... $ECHO_C" >&6; } if test -z "$ac_cv_prog_CC"; then our_gcc="$CC" else our_gcc="$ac_cv_prog_CC" fi if $our_gcc -v --help 2>/dev/null | grep "fvisibility" >/dev/null; then visibility_flag='-fvisibility=hidden' fi if test x"$visibility_flag" = x ; then { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } else CFLAGS="$CFLAGS $visibility_flag" { echo "$as_me:$LINENO: result: ${visibility_flag}" >&5 echo "${ECHO_T}${visibility_flag}" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FVISIBILITY 1 _ACEOF fi fi ;; esac ;; esac case "$host" in *-*-linux*) EXFL="-Wl,--export-dynamic" ;; *) EXFL="" ;; esac LDFLAGS="$LDFLAGS $EXFL" # On Darwin, libglade chokes on stripped executables. case "$host" in *-apple-darwin*) case "$CFLAGS $CXXFLAGS $LDFLAGS" in *" -s "*|"-s "*|*" -s"|"-s") echo "warning: cannot strip libglade executables on this host" CFLAGS=`echo "$CFLAGS"|sed 's/\( -s\)* / /g;s/^-s //g;s/ -s$//g;s/^-s$//g'` CXXFLAGS=`echo "$CXXFLAGS"|sed 's/\( -s\)* / /g;s/^-s //g;s/ -s$//g;s/^-s$//g'` LDFLAGS=`echo "$LDFLAGS"|sed 's/\( -s\)* / /g;s/^-s //g;s/ -s$//g;s/^-s$//g'` ;; esac ;; esac # some extra flags CFLAGS="$CFLAGS -DGTK_DISABLE_DEPRECATED -DDEBUGGER" CXXFLAGS="$CFLAGS -fno-rtti -fno-exceptions" # Debugger support (can be disabled for embedded architectures) # Check whether --enable-debugger was given. if test "${enable_debugger+set}" = set; then enableval=$enable_debugger; tiemu_use_debugger=$enableval else tiemu_use_debugger=yes fi { echo "$as_me:$LINENO: checking whether to use the debugger" >&5 echo $ECHO_N "checking whether to use the debugger... $ECHO_C" >&6; } if test "${tiemu_use_debugger+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else tiemu_use_debugger=yes fi { echo "$as_me:$LINENO: result: $tiemu_use_debugger" >&5 echo "${ECHO_T}$tiemu_use_debugger" >&6; } if test x$tiemu_use_debugger = xno; then cat >>confdefs.h <<\_ACEOF #define NO_DEBUGGER 1 _ACEOF fi # GDB support (can be disabled) # Check whether --enable-gdb was given. if test "${enable_gdb+set}" = set; then enableval=$enable_gdb; tiemu_use_gdb=$enableval else tiemu_use_gdb=$tiemu_use_debugger fi { echo "$as_me:$LINENO: checking whether to use the GDB-based source-level debugger" >&5 echo $ECHO_N "checking whether to use the GDB-based source-level debugger... $ECHO_C" >&6; } if test "${tiemu_use_gdb+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else tiemu_use_gdb=$tiemu_use_debugger fi { echo "$as_me:$LINENO: result: $tiemu_use_gdb" >&5 echo "${ECHO_T}$tiemu_use_gdb" >&6; } if test x$tiemu_use_gdb = xno; then CFLAGS="$CFLAGS -DNO_GDB" fi if test x$tiemu_use_gdb = xno; then NO_GDB_TRUE= NO_GDB_FALSE='#' else NO_GDB_TRUE='#' NO_GDB_FALSE= fi # It makes no sense to enable GDB without the debugger! if test x$tiemu_use_debugger = xno -a x$tiemu_use_gdb = xyes; then { { echo "$as_me:$LINENO: error: cannot enable GDB without the debugger" >&5 echo "$as_me: error: cannot enable GDB without the debugger" >&2;} { (exit 1); exit 1; }; } fi # Run GDB configury (if enabled) if test x$tiemu_use_gdb = xyes; then ac_configure_args="$ac_configure_args --target=m68k-coff --disable-tui --disable-werror" ac_configure_args=`echo "$ac_configure_args" | sed "s,'CC=[^']*',,g;s,'CFLAGS=[^']*',,g;s,'CXX=[^']*',,g;s,'CXXFLAGS=[^']*',,g;s,'LDFLAGS=[^']*',,g;s,'LIBS=[^']*',,g;s,'build_alias=[^']*',,g;s,'host_alias=[^']*',,g;s,'target_alias=[^']*',,g"` subdirs="$subdirs src/gdb" fi # Output. cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { echo "$as_me:$LINENO: updating cache $cache_file" >&5 echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${USE_GROFF_TRUE}" && test -z "${USE_GROFF_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"USE_GROFF\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"USE_GROFF\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${NO_GDB_TRUE}" && test -z "${NO_GDB_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"NO_GDB\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"NO_GDB\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by TiEmu $as_me 3.03, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ TiEmu config.status 3.03 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 CONFIG_SHELL=$SHELL export CONFIG_SHELL exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "build/Makefile") CONFIG_FILES="$CONFIG_FILES build/Makefile" ;; "glade/Makefile") CONFIG_FILES="$CONFIG_FILES glade/Makefile" ;; "help/Makefile") CONFIG_FILES="$CONFIG_FILES help/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "misc/Makefile") CONFIG_FILES="$CONFIG_FILES misc/Makefile" ;; "pedrom/Makefile") CONFIG_FILES="$CONFIG_FILES pedrom/Makefile" ;; "pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "skins/Makefile") CONFIG_FILES="$CONFIG_FILES skins/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "tiemu.lsm") CONFIG_FILES="$CONFIG_FILES tiemu.lsm" ;; "tiemu.spec") CONFIG_FILES="$CONFIG_FILES tiemu.spec" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # # Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "$CONFIG_FILES"; then _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF SHELL!$SHELL$ac_delim PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim PACKAGE_NAME!$PACKAGE_NAME$ac_delim PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim PACKAGE_STRING!$PACKAGE_STRING$ac_delim PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim exec_prefix!$exec_prefix$ac_delim prefix!$prefix$ac_delim program_transform_name!$program_transform_name$ac_delim bindir!$bindir$ac_delim sbindir!$sbindir$ac_delim libexecdir!$libexecdir$ac_delim datarootdir!$datarootdir$ac_delim datadir!$datadir$ac_delim sysconfdir!$sysconfdir$ac_delim sharedstatedir!$sharedstatedir$ac_delim localstatedir!$localstatedir$ac_delim includedir!$includedir$ac_delim oldincludedir!$oldincludedir$ac_delim docdir!$docdir$ac_delim infodir!$infodir$ac_delim htmldir!$htmldir$ac_delim dvidir!$dvidir$ac_delim pdfdir!$pdfdir$ac_delim psdir!$psdir$ac_delim libdir!$libdir$ac_delim localedir!$localedir$ac_delim mandir!$mandir$ac_delim DEFS!$DEFS$ac_delim ECHO_C!$ECHO_C$ac_delim ECHO_N!$ECHO_N$ac_delim ECHO_T!$ECHO_T$ac_delim LIBS!$LIBS$ac_delim build_alias!$build_alias$ac_delim host_alias!$host_alias$ac_delim target_alias!$target_alias$ac_delim INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim INSTALL_DATA!$INSTALL_DATA$ac_delim am__isrc!$am__isrc$ac_delim CYGPATH_W!$CYGPATH_W$ac_delim PACKAGE!$PACKAGE$ac_delim VERSION!$VERSION$ac_delim ACLOCAL!$ACLOCAL$ac_delim AUTOCONF!$AUTOCONF$ac_delim AUTOMAKE!$AUTOMAKE$ac_delim AUTOHEADER!$AUTOHEADER$ac_delim MAKEINFO!$MAKEINFO$ac_delim install_sh!$install_sh$ac_delim STRIP!$STRIP$ac_delim INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim mkdir_p!$mkdir_p$ac_delim AWK!$AWK$ac_delim SET_MAKE!$SET_MAKE$ac_delim am__leading_dot!$am__leading_dot$ac_delim AMTAR!$AMTAR$ac_delim am__tar!$am__tar$ac_delim am__untar!$am__untar$ac_delim MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim MAINT!$MAINT$ac_delim build!$build$ac_delim build_cpu!$build_cpu$ac_delim build_vendor!$build_vendor$ac_delim build_os!$build_os$ac_delim host!$host$ac_delim host_cpu!$host_cpu$ac_delim host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim CPPFLAGS!$CPPFLAGS$ac_delim ac_ct_CC!$ac_ct_CC$ac_delim EXEEXT!$EXEEXT$ac_delim OBJEXT!$OBJEXT$ac_delim DEPDIR!$DEPDIR$ac_delim am__include!$am__include$ac_delim am__quote!$am__quote$ac_delim AMDEP_TRUE!$AMDEP_TRUE$ac_delim AMDEP_FALSE!$AMDEP_FALSE$ac_delim AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim CCDEPMODE!$CCDEPMODE$ac_delim am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim SED!$SED$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim LN_S!$LN_S$ac_delim ECHO!$ECHO$ac_delim AR!$AR$ac_delim RANLIB!$RANLIB$ac_delim DSYMUTIL!$DSYMUTIL$ac_delim NMEDIT!$NMEDIT$ac_delim DLLTOOL!$DLLTOOL$ac_delim AS!$AS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF CEOF$ac_eof _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF OBJDUMP!$OBJDUMP$ac_delim CPP!$CPP$ac_delim CXX!$CXX$ac_delim CXXFLAGS!$CXXFLAGS$ac_delim ac_ct_CXX!$ac_ct_CXX$ac_delim CXXDEPMODE!$CXXDEPMODE$ac_delim am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim CXXCPP!$CXXCPP$ac_delim F77!$F77$ac_delim FFLAGS!$FFLAGS$ac_delim ac_ct_F77!$ac_ct_F77$ac_delim LIBTOOL!$LIBTOOL$ac_delim GROFF!$GROFF$ac_delim USE_GROFF_TRUE!$USE_GROFF_TRUE$ac_delim USE_GROFF_FALSE!$USE_GROFF_FALSE$ac_delim RC!$RC$ac_delim USE_NLS!$USE_NLS$ac_delim GETTEXT_MACRO_VERSION!$GETTEXT_MACRO_VERSION$ac_delim MSGFMT!$MSGFMT$ac_delim GMSGFMT!$GMSGFMT$ac_delim MSGFMT_015!$MSGFMT_015$ac_delim GMSGFMT_015!$GMSGFMT_015$ac_delim XGETTEXT!$XGETTEXT$ac_delim XGETTEXT_015!$XGETTEXT_015$ac_delim MSGMERGE!$MSGMERGE$ac_delim XGETTEXT_EXTRA_OPTIONS!$XGETTEXT_EXTRA_OPTIONS$ac_delim INTL_MACOSX_LIBS!$INTL_MACOSX_LIBS$ac_delim LIBICONV!$LIBICONV$ac_delim LTLIBICONV!$LTLIBICONV$ac_delim INTLLIBS!$INTLLIBS$ac_delim LIBINTL!$LIBINTL$ac_delim LTLIBINTL!$LTLIBINTL$ac_delim POSUB!$POSUB$ac_delim INCINTL!$INCINTL$ac_delim PKG_CONFIG!$PKG_CONFIG$ac_delim TICABLES_CFLAGS!$TICABLES_CFLAGS$ac_delim TICABLES_LIBS!$TICABLES_LIBS$ac_delim TICALCS_CFLAGS!$TICALCS_CFLAGS$ac_delim TICALCS_LIBS!$TICALCS_LIBS$ac_delim TIFILES_CFLAGS!$TIFILES_CFLAGS$ac_delim TIFILES_LIBS!$TIFILES_LIBS$ac_delim TICONV_CFLAGS!$TICONV_CFLAGS$ac_delim TICONV_LIBS!$TICONV_LIBS$ac_delim GLIB_CFLAGS!$GLIB_CFLAGS$ac_delim GLIB_LIBS!$GLIB_LIBS$ac_delim GTK_CFLAGS!$GTK_CFLAGS$ac_delim GTK_LIBS!$GTK_LIBS$ac_delim GLADE_CFLAGS!$GLADE_CFLAGS$ac_delim GLADE_LIBS!$GLADE_LIBS$ac_delim DBUS_GLIB_CFLAGS!$DBUS_GLIB_CFLAGS$ac_delim DBUS_GLIB_LIBS!$DBUS_GLIB_LIBS$ac_delim dbus!$dbus$ac_delim LIBOBJS!$LIBOBJS$ac_delim LIBZ!$LIBZ$ac_delim SDL_CONFIG!$SDL_CONFIG$ac_delim SDL_CFLAGS!$SDL_CFLAGS$ac_delim SDL_LIBS!$SDL_LIBS$ac_delim LIBUTIL!$LIBUTIL$ac_delim LIBCOMPAT!$LIBCOMPAT$ac_delim LIBCRYPT!$LIBCRYPT$ac_delim LIBSOCKET!$LIBSOCKET$ac_delim LIBRESOLV!$LIBRESOLV$ac_delim X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim LIBUCB!$LIBUCB$ac_delim LIBDL!$LIBDL$ac_delim XMKMF!$XMKMF$ac_delim X_INCLUDES!$X_INCLUDES$ac_delim X_LDFLAGS!$X_LDFLAGS$ac_delim x_libraries!$x_libraries$ac_delim x_includes!$x_includes$ac_delim LIBSM!$LIBSM$ac_delim X_PRE_LIBS!$X_PRE_LIBS$ac_delim LIB_X11!$LIB_X11$ac_delim LIBXINERAMA!$LIBXINERAMA$ac_delim QTE_NORTTI!$QTE_NORTTI$ac_delim LIB_XEXT!$LIB_XEXT$ac_delim LIBPTHREAD!$LIBPTHREAD$ac_delim USE_THREADS!$USE_THREADS$ac_delim KDE_MT_LDFLAGS!$KDE_MT_LDFLAGS$ac_delim KDE_MT_LIBS!$KDE_MT_LIBS$ac_delim USER_INCLUDES!$USER_INCLUDES$ac_delim USER_LDFLAGS!$USER_LDFLAGS$ac_delim LIBPNG!$LIBPNG$ac_delim LIBJPEG!$LIBJPEG$ac_delim qt_libraries!$qt_libraries$ac_delim qt_includes!$qt_includes$ac_delim QT_INCLUDES!$QT_INCLUDES$ac_delim QT_LDFLAGS!$QT_LDFLAGS$ac_delim MOC!$MOC$ac_delim UIC!$UIC$ac_delim UIC_TR!$UIC_TR$ac_delim LIB_QT!$LIB_QT$ac_delim LIB_QPE!$LIB_QPE$ac_delim kde_qtver!$kde_qtver$ac_delim KDE_EXTRA_RPATH!$KDE_EXTRA_RPATH$ac_delim KDE_RPATH!$KDE_RPATH$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF CEOF$ac_eof _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF kde_libraries!$kde_libraries$ac_delim kde_includes!$kde_includes$ac_delim KDE_LDFLAGS!$KDE_LDFLAGS$ac_delim KDE_INCLUDES!$KDE_INCLUDES$ac_delim all_includes!$all_includes$ac_delim all_libraries!$all_libraries$ac_delim AUTODIRS!$AUTODIRS$ac_delim DCOPIDL!$DCOPIDL$ac_delim DCOPIDL2CPP!$DCOPIDL2CPP$ac_delim DCOP_DEPENDENCIES!$DCOP_DEPENDENCIES$ac_delim KDECONFIG!$KDECONFIG$ac_delim kde_libs_prefix!$kde_libs_prefix$ac_delim kde_libs_htmldir!$kde_libs_htmldir$ac_delim kde_htmldir!$kde_htmldir$ac_delim kde_appsdir!$kde_appsdir$ac_delim kde_icondir!$kde_icondir$ac_delim kde_sounddir!$kde_sounddir$ac_delim kde_datadir!$kde_datadir$ac_delim kde_locale!$kde_locale$ac_delim kde_confdir!$kde_confdir$ac_delim kde_mimedir!$kde_mimedir$ac_delim kde_wallpaperdir!$kde_wallpaperdir$ac_delim kde_bindir!$kde_bindir$ac_delim kde_templatesdir!$kde_templatesdir$ac_delim kde_servicesdir!$kde_servicesdir$ac_delim kde_servicetypesdir!$kde_servicetypesdir$ac_delim kde_moduledir!$kde_moduledir$ac_delim kde_styledir!$kde_styledir$ac_delim kde_widgetdir!$kde_widgetdir$ac_delim LIB_KDECORE!$LIB_KDECORE$ac_delim LIB_KDEUI!$LIB_KDEUI$ac_delim LIB_KIO!$LIB_KIO$ac_delim LIB_SMB!$LIB_SMB$ac_delim LIB_KAB!$LIB_KAB$ac_delim LIB_KHTML!$LIB_KHTML$ac_delim LIB_KSPELL!$LIB_KSPELL$ac_delim LIB_KPARTS!$LIB_KPARTS$ac_delim LIB_KDEPRINT!$LIB_KDEPRINT$ac_delim LIB_KSYCOCA!$LIB_KSYCOCA$ac_delim LIB_KFILE!$LIB_KFILE$ac_delim LIB_KFM!$LIB_KFM$ac_delim kde!$kde$ac_delim NO_GDB_TRUE!$NO_GDB_TRUE$ac_delim NO_GDB_FALSE!$NO_GDB_FALSE$ac_delim subdirs!$subdirs$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 46; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-3.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF :end s/|#_!!_#|//g CEOF$ac_eof _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF fi # test -n "$CONFIG_FILES" for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 echo "$as_me: error: Invalid tag $ac_tag." >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac ac_file_inputs="$ac_file_inputs $ac_f" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input="Generated from "`IFS=: echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} fi case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin";; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= case `sed -n '/datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' $ac_file_inputs` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s&@configure_input@&$configure_input&;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out"; rm -f "$tmp/out";; *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac ;; :H) # # CONFIG_HEADER # _ACEOF # Transform confdefs.h into a sed script `conftest.defines', that # substitutes the proper values into config.h.in to produce config.h. rm -f conftest.defines conftest.tail # First, append a space to every undef/define line, to ease matching. echo 's/$/ /' >conftest.defines # Then, protect against being on the right side of a sed subst, or in # an unquoted here document, in config.status. If some macros were # called several times there might be several #defines for the same # symbol, which is useless. But do not sort them, since the last # AC_DEFINE must be honored. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* # These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where # NAME is the cpp macro being defined, VALUE is the value it is being given. # PARAMS is the parameter list in the macro definition--in most cases, it's # just an empty string. ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ac_dB='\\)[ (].*,\\1define\\2' ac_dC=' ' ac_dD=' ,' uniq confdefs.h | sed -n ' t rset :rset s/^[ ]*#[ ]*define[ ][ ]*// t ok d :ok s/[\\&,]/\\&/g s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ' >>conftest.defines # Remove the space that was appended to ease matching. # Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. # (The regexp can be short, since the line contains either #define or #undef.) echo 's/ $// s,^[ #]*u.*,/* & */,' >>conftest.defines # Break up conftest.defines: ac_max_sed_lines=50 # First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" # Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" # Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" # et cetera. ac_in='$ac_file_inputs' ac_out='"$tmp/out1"' ac_nxt='"$tmp/out2"' while : do # Write a here document: cat >>$CONFIG_STATUS <<_ACEOF # First, check the format of the line: cat >"\$tmp/defines.sed" <<\\CEOF /^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def /^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def b :def _ACEOF sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines conftest.tail echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then echo "/* $configure_input */" >"$tmp/config.h" cat "$ac_result" >>"$tmp/config.h" if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else rm -f $ac_file mv "$tmp/config.h" $ac_file fi else echo "/* $configure_input */" cat "$ac_result" fi rm -f "$tmp/out12" # Compute $ac_file's index in $config_headers. _am_arg=$ac_file _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file and --srcdir arguments so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; *) case $ac_arg in *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="$ac_sub_configure_args '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" echo "$as_me:$LINENO: $ac_msg" >&5 echo "$ac_msg" >&6 { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5 echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} { (exit 1); exit 1; }; } fi cd "$ac_popdir" done fi echo echo "To run the TiEmu emulator, you will need an image (ROM dump or FLASH upgrade)." echo "As those files are copyrighted by Texas Instruments, they will never be" echo "distributed with the emulator... In replacement, you can use PedRom which" echo "is provided with TiEmu." echo echo "It you need a ROM dump, you can get one from your calculator" echo "with the 'ROM dump' function of TiLP." echo "Otherwise, you can use a TI's FLASH OS upgrade (AMS) as image." echo "Note: TiLP is available at http://lpg.ticalc.org/prj_tilp." echo echo "Now, you can type 'make' and 'make install'" echo ; tiemu-3.03-nogdb+dfsg/configure.ac000066400000000000000000000233751220314353500170660ustar00rootroot00000000000000dnl Process this file with autoconf to produce a configure script. dnl $Id: configure.in 409 2004-06-07 21:10:20Z roms $ dnl Init. AC_PREREQ(2.57) AC_INIT(TiEmu, 3.03, [tiemu-users@lists.sourceforge.net]) AM_INIT_AUTOMAKE([dist-bzip2]) AM_MAINTAINER_MODE AC_PREFIX_DEFAULT(/usr/local) dnl Files to configure. AC_CONFIG_SRCDIR([src/gui/main.c]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ Makefile build/Makefile glade/Makefile help/Makefile man/Makefile misc/Makefile pedrom/Makefile pixmaps/Makefile po/Makefile.in skins/Makefile src/Makefile tiemu.lsm tiemu.spec ]) AC_MSG_CHECKING([for something to drink while compiling]) AC_MSG_RESULT([err: no fridge found!]) # Setup libtool. AC_DISABLE_STATIC AC_LIBTOOL_WIN32_DLL AC_PROG_LIBTOOL # Checks for programs. AC_PROG_CC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LN_S AC_ISC_POSIX AC_CHECK_PROG(GROFF, groff, yes, no) AM_CONDITIONAL(USE_GROFF, test "$GROFF" != "no") AC_CHECK_TOOL(RC, windres, windres) # Checks for libraries. AM_GNU_GETTEXT(external) AC_SUBST(INCINTL) PKG_CHECK_MODULES(TICABLES, ticables2 >= 1.3.0) AC_SUBST(TICABLES_CFLAGS) AC_SUBST(TICABLES_LIBS) PKG_CHECK_MODULES(TICALCS, ticalcs2 >= 1.0.7) AC_SUBST(TICALCS_CFLAGS) AC_SUBST(TICALCS_LIBS) PKG_CHECK_MODULES(TIFILES, tifiles2 >= 1.0.7) AC_SUBST(TIFILES_CFLAGS) AC_SUBST(TIFILES_LIBS) PKG_CHECK_MODULES(TICONV, ticonv >= 1.0.4) AC_SUBST(TICONV_CFLAGS) AC_SUBST(TICONV_LIBS) PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.6.0) AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.6.0) AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) PKG_CHECK_MODULES(GLADE, libglade-2.0 >= 2.4.0) AC_SUBST(GLADE_CFLAGS) AC_SUBST(GLADE_LIBS) # D-Bus support AC_ARG_WITH(dbus, AC_HELP_STRING([--with-dbus], [Compile with D-Bus support]), [dbus=$withval], [dbus=no]) if test "x$dbus" = "xyes"; then PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1 >= 0.60) AC_DEFINE(WITH_DBUS, 1, [Use D-Bus support]) else DBUS_GLIB_CFLAGS= DBUS_GLIB_LIBS= fi AC_SUBST(DBUS_GLIB_CFLAGS) AC_SUBST(DBUS_GLIB_LIBS) AC_SUBST(dbus) # Checks for header files. AC_HEADER_STDBOOL AC_CHECK_HEADERS([fcntl.h]) AC_CHECK_HEADERS([libintl.h]) AC_CHECK_HEADERS([sys/timeb.h]) AC_CHECK_HEADERS(stdint.h) AC_CHECK_HEADERS([tilp2/ticables.h tilp2/ticalcs.h tilp2/tifiles.h]) dnl AC_CHECK_HEADERS([Carbon/Carbon.h]) dnl # Add Carbon framework if detected dnl if test x"$ac_cv_header_Carbon_Carbon_h" = xyes ; then dnl LDFLAGS="$LDFLAGS -framework Carbon" dnl #fi # Checks for typedefs, structures, and compiler characteristics. AC_FUNC_MEMCMP #AC_C_RESTRICT AC_C_VOLATILE # Checks for libraries. AC_CHECK_LIB(m, pow) AC_CHECK_LIB(pthread, pthread_create) dnl needed by GThread #AC_CHECK_LIB(comdlg32, GetOpenFileName) # Check for zlib AC_CHECK_HEADER(zlib.h) AC_CHECK_LIB(z, compress) LIBZ="$LIBS" LIBS="" AC_SUBST(LIBZ) # Checks for library functions. AC_FUNC_SELECT_ARGTYPES AC_FUNC_STAT AC_FUNC_VPRINTF AC_CHECK_FUNCS([bzero memset mkdir select strchr strrchr strstr]) # Platform specific tests. CFLAGS_FOR_BUILD="$CFLAGS" export CFLAGS_FOR_BUILD dnl AC_CANONICAL_HOST case $host in *-*-mingw*) ARCH="-D__WIN32__ -D__MINGW32__ -mwindows -D_WINDOWS" ;; *-*-*bsd*) ARCH="-D__BSD__" ;; i[[3456]]86-*-linux-*) ARCH="-D__I386__ -D__LINUX__" ;; i[[3456]]86-apple-darwin*) ARCH="-D__I386__ -D__MACOSX__" ;; arm*-*-linux-*) ARCH="-D__IPAQ__ -D__LINUX__" ;; powerpc-*-linux-*) ARCH="-D__PPC__ -D__LINUX__" ;; powerpc-apple-darwin*) ARCH="-D__PPC__ -D__MACOSX__" ;; *-apple-darwin*) ARCH="-D__MACOSX__" ;; *) ARCH="-D__LINUX__" ;; esac CFLAGS="$CFLAGS $ARCH" # Check for SDL if sound support is wanted AC_ARG_ENABLE(sound, AC_HELP_STRING([--disable-sound], [disable sound emulation]), [tiemu_use_sound=$enableval], [tiemu_use_sound=yes]) AC_CACHE_CHECK([whether to enable sound emulation], [tiemu_use_sound], [tiemu_use_sound=yes]) if test "x$tiemu_use_sound" = "xyes"; then SDL_VERSION=1.2.0 AM_PATH_SDL($SDL_VERSION, :, AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]) ) else CFLAGS="$CFLAGS -DNO_SOUND" SDL_CFLAGS= SDL_LIBS= fi AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) # KDE dialogs support AC_ARG_WITH(kde, AC_HELP_STRING([--without-kde], [Compile without KDE support]), [kde=$withval], [kde=default]) if test "x$kde" = "xdefault"; then case $host_os in *mingw*) kde=no ;; *) kde=yes ;; esac fi if test "x$kde" = "xyes"; then AC_PROG_CXX AC_PATH_KDE AC_DEFINE(WITH_KDE, 1, [Use KDE support]) fi AC_SUBST(kde) # Ensure MSVC-compatible struct packing convention is used when # compiling for Win32 with gcc. # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while # gcc2 uses "-fnative-struct". case $host_os in *mingw*|*cygwin*) if test x$GCC = xyes; then msnative_struct='' AC_MSG_CHECKING([how to get MSVC-compatible struct packing]) if test -z "$ac_cv_prog_CC"; then our_gcc="$CC" else our_gcc="$ac_cv_prog_CC" fi case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in 2.) if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then msnative_struct='-fnative-struct' fi ;; *) if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then msnative_struct='-mms-bitfields' fi ;; esac if test x"$msnative_struct" = x ; then AC_MSG_RESULT([no way]) AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code]) else CFLAGS="$CFLAGS $msnative_struct" AC_MSG_RESULT([${msnative_struct}]) fi fi ;; esac # Check for the new -fvisibility=hidden flag introduced in gcc 4.0 # Allow to reduce shared library size and avoid symbol clash # Unfortunately, this only works for fully static builds. If any parts of GDB are built shared (--enable-shared or --enable-shared-*), we currently have no way to disable it just for these parts. -- Kevin case $host_os in *mingw*) ;; *) case "$ac_configure_args" in *--enable-shared*) ;; *) if test x$GCC = xyes; then visibility_flag='' AC_MSG_CHECKING([whether gcc accepts -fvisibility]) if test -z "$ac_cv_prog_CC"; then our_gcc="$CC" else our_gcc="$ac_cv_prog_CC" fi if $our_gcc -v --help 2>/dev/null | grep "fvisibility" >/dev/null; then visibility_flag='-fvisibility=hidden' fi if test x"$visibility_flag" = x ; then AC_MSG_RESULT([no]) else CFLAGS="$CFLAGS $visibility_flag" AC_MSG_RESULT([${visibility_flag}]) AC_DEFINE(HAVE_FVISIBILITY, 1, [Use -fvisibility=hidden flag]) fi fi ;; esac ;; esac case "$host" in *-*-linux*) EXFL="-Wl,--export-dynamic" ;; *) EXFL="" ;; esac LDFLAGS="$LDFLAGS $EXFL" # On Darwin, libglade chokes on stripped executables. case "$host" in *-apple-darwin*) case "$CFLAGS $CXXFLAGS $LDFLAGS" in *" -s "*|"-s "*|*" -s"|"-s") echo "warning: cannot strip libglade executables on this host" CFLAGS=`echo "$CFLAGS"|sed 's/\( -s\)* / /g;s/^-s //g;s/ -s$//g;s/^-s$//g'` CXXFLAGS=`echo "$CXXFLAGS"|sed 's/\( -s\)* / /g;s/^-s //g;s/ -s$//g;s/^-s$//g'` LDFLAGS=`echo "$LDFLAGS"|sed 's/\( -s\)* / /g;s/^-s //g;s/ -s$//g;s/^-s$//g'` ;; esac ;; esac # some extra flags CFLAGS="$CFLAGS -DGTK_DISABLE_DEPRECATED -DDEBUGGER" CXXFLAGS="$CFLAGS -fno-rtti -fno-exceptions" AC_SUBST(CFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(CXXFLAGS) # Debugger support (can be disabled for embedded architectures) AC_ARG_ENABLE(debugger, AC_HELP_STRING([--disable-debugger], [disable the built-in debugger]), [tiemu_use_debugger=$enableval], [tiemu_use_debugger=yes]) AC_CACHE_CHECK([whether to use the debugger], [tiemu_use_debugger], [tiemu_use_debugger=yes]) if test x$tiemu_use_debugger = xno; then AC_DEFINE(NO_DEBUGGER, 1, [Defined to disable the debugger]) fi # GDB support (can be disabled) AC_ARG_ENABLE(gdb, AC_HELP_STRING([--disable-gdb], [disable the GDB-based source-level debugger]), [tiemu_use_gdb=$enableval], [tiemu_use_gdb=$tiemu_use_debugger]) AC_CACHE_CHECK([whether to use the GDB-based source-level debugger], [tiemu_use_gdb], [tiemu_use_gdb=$tiemu_use_debugger]) if test x$tiemu_use_gdb = xno; then CFLAGS="$CFLAGS -DNO_GDB" fi AM_CONDITIONAL(NO_GDB, test x$tiemu_use_gdb = xno) # It makes no sense to enable GDB without the debugger! if test x$tiemu_use_debugger = xno -a x$tiemu_use_gdb = xyes; then AC_MSG_ERROR([cannot enable GDB without the debugger]) fi # Run GDB configury (if enabled) if test x$tiemu_use_gdb = xyes; then ac_configure_args="$ac_configure_args --target=m68k-coff --disable-tui --disable-werror" changequote(<<,>>) ac_configure_args=`echo "$ac_configure_args" | sed "s,'CC=[^']*',,g;s,'CFLAGS=[^']*',,g;s,'CXX=[^']*',,g;s,'CXXFLAGS=[^']*',,g;s,'LDFLAGS=[^']*',,g;s,'LIBS=[^']*',,g;s,'build_alias=[^']*',,g;s,'host_alias=[^']*',,g;s,'target_alias=[^']*',,g"` changequote([,]) AC_CONFIG_SUBDIRS(src/gdb) fi # Output. AC_OUTPUT echo echo "To run the TiEmu emulator, you will need an image (ROM dump or FLASH upgrade)." echo "As those files are copyrighted by Texas Instruments, they will never be" echo "distributed with the emulator... In replacement, you can use PedRom which" echo "is provided with TiEmu." echo echo "It you need a ROM dump, you can get one from your calculator" echo "with the 'ROM dump' function of TiLP." echo "Otherwise, you can use a TI's FLASH OS upgrade (AMS) as image." echo "Note: TiLP is available at [http://lpg.ticalc.org/prj_tilp]." echo echo "Now, you can type 'make' and 'make install'" echo ; tiemu-3.03-nogdb+dfsg/depcomp000077500000000000000000000317671220314353500161610ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects # Copyright 1999, 2000 Free Software Foundation, Inc. # 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, 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. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # `libtool' can also be set to `yes' or `no'. if test -z "$depfile"; then base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` dir=`echo "$object" | sed 's,/.*$,/,'` if test "$dir" = "$object"; then dir= fi # FIXME: should be _deps on DOS. depfile="$dir.deps/$base" fi tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. This file always lives in the current directory. # Also, the AIX compiler puts `$object:' at the start of each line; # $object doesn't have directory information. stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" outname="$stripped.o" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Must come before tru64. # Intel's C compiler understands `-MD -MF file'. However # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" else tmpdepfile="$tmpdepfile2" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a space and a tab in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 tiemu-3.03-nogdb+dfsg/desktop/000077500000000000000000000000001220314353500162375ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/desktop/kde/000077500000000000000000000000001220314353500170025ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/desktop/kde/README000066400000000000000000000006771220314353500176740ustar00rootroot00000000000000This directory contains shortcuts and mime types for KDE integration. You have to copy: - tiemu.desktop to $HOME/.local/share/applications or /usr/share/applications - x-tiemu-*.desktop to $HOME/.kde/share/mimelnk/application or /usr/share/mimelnk/application You will have to add a reference to skinedit.desktop into the menu: - edit $HOME/.config/menus/applications-kmenuedit.menu - add an entry like 'tiemu.desktop' tiemu-3.03-nogdb+dfsg/desktop/kde/install.sh000077500000000000000000000002671220314353500210140ustar00rootroot00000000000000#!/bin/sh echo "Beware: script intented to developers: unsupported!" cp tiemup.desktop /usr/share/applications cp x-tiemu-*.desktop /usr/share/mimelnk/application echo "Files copied."tiemu-3.03-nogdb+dfsg/desktop/kde/tiemu.desktop000066400000000000000000000004741220314353500215250ustar00rootroot00000000000000[Desktop Entry] Comment= Exec='/usr/local/bin/tiemu' GenericName= Icon=/usr/local/share/tiemu/pixmaps/icon.xpm InitialPreference=2 MimeType=application/x-tiemu-rom;application/x-tiemu-sav; Name=TiEmu Path= StartupNotify=true Terminal=false TerminalOptions= Type=Application X-KDE-SubstituteUID=false X-KDE-Username= tiemu-3.03-nogdb+dfsg/desktop/kde/x-tiemu-rom.desktop000066400000000000000000000003031220314353500225540ustar00rootroot00000000000000[Desktop Entry] Encoding=UTF-8 MimeType=application/x-tiemu-rom Comment=TiEmu Rom Dump Comment[fr]=Fichier ROM TiEmu Icon=/usr/local/share/tiemu/pixmaps/romdump.xpm Type=MimeType Patterns=*.rom; tiemu-3.03-nogdb+dfsg/desktop/kde/x-tiemu-sav.desktop000066400000000000000000000003061220314353500225530ustar00rootroot00000000000000[Desktop Entry] Encoding=UTF-8 MimeType=application/x-tiemu-sav Comment=TiEmu State Image Comment[fr]=Fichier Image d'Etat Icon=/usr/local/share/tiemu/pixmaps/icon.xpm Type=MimeType Patterns=*.sav; tiemu-3.03-nogdb+dfsg/docs/000077500000000000000000000000001220314353500155165ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/Debugging_TiEmu.txt000066400000000000000000000034431220314353500212610ustar00rootroot00000000000000How to debug TiEmu ================== NOTE: This is ONLY about debugging TiEmu itself, NOT about using the TiEmu debugger. I. Introduction When built with GDB support enabled, TiEmu is a mixed C and Tcl (with portions of C++ for KDE or OLE Automation support) program. Most of TiEmu is C code, this can be debugged using GDB or a GDB frontend of your choice. The C++ code can also be debugged this way. However, GDB doesn't support debugging interpreted languages such as Tcl. Luckily, there's a solution available: the TclPro debugger, which has been made Free Software in 2000. II. Debugging the Tcl code in TiEmu with TclPro Here's a step-by-step guide to using the TclPro debugger to debug the Tcl/Tk code in TiEmu's copy of Insight: 1. If you haven't installed TclPro yet, do it now. Under Fedora, use: yum install tclpro 2. Start the TclPro debugger, either from the menu, or: prodebug 3. Set the TclPro debugger to remote debugging: File / New Project... / Remote Debugging / OK 4. Open a terminal emulator (command window). 5. Tell Insight to load the TclPro debugging stub (in the terminal): export DEBUG_STUB=/usr/bin/initdebug.tcl The stub takes care of instrumenting the Tcl code for debugging and connecting to the running TclPro debugger. 6. Start TiEmu (in the same terminal): tiemu As soon as TiEmu initializes GDB (i.e. after you select a ROM to emulate), the connection to the TclPro debugger will be established. You can now click "Run" in the TclPro debugger and/or use any of its debugging features. Note that it is possible to use the TclPro debugger together with GDB if you need to debug both the C and the Tcl code. GDB works at machine code level, the TclPro debugger works by instrumenting the Tcl code, so they don't interfere with each other. Kevin Koflertiemu-3.03-nogdb+dfsg/docs/TiEmu_sdk.txt000066400000000000000000000045451220314353500201530ustar00rootroot00000000000000***************************************************************** * Notes about TiEmu SDK * * * * Last update: 2007-04-15 * ***************************************************************** Introduction ------------ The TiEmu SDK provides way to use TiEmu from an external application. It has been primarily developed for use by KTIGCC & TIGCC-IDE. At the time being: - Win32 users can use an OLE Automation object (since 2.81c/20061030), - Linux users can use a DCOP object (since 2.81/20060524). A D-Bus interface for use with KTIGCC 2 is also available (since 2.81c/20061030), but not compiled by default, you can enable it with the --enable-dbus configure option. (That option is enabled in the Fedora RPM.) How to use it? -------------- Actually, there is no instalable SDK yet. You have to download TiEmu source code and take a look at the 'sdk' folder: sdk | +--- dcop: readme.txt and dcoptest.cpp sample program +--- oleaut: readme.txt and oletest.cpp sample program Entry points ------------ TiEmu currently provides the following calls: - image_loaded return TRUE if an image has been loaded - emulated_calc_type return emulated calculator type (1) if image loaded - emulated_hw_version return hardware revision (2) if image loaded - emulated_os_version return OS version as a string like "2.08" if image loaded - ready_for_transfers TRUE if calculator is ready for transfers and if image loaded and engine running - send_file send one filename if image loaded and engine running - send_files send several filenames at once if image loaded and engine running (not provided in OLE) - debug_file does the same work than the 'Debug file with TiEmu...' item of the popup menu if image loaded and engine running - reset_calc reset calculator and clear RAM depending on argument if image loaded; close debugger if open, too - execute_command send ASCII keys to calculator (internally converted to TI scancodes) if image loaded - turn_calc_on like pressing the ON key if image loaded and engine running - enter_debugger raises a breakpoint and open the debugger if image loaded and engine running (1) #define TI92 (1 << 0) #define TI89 (1 << 1) #define TI92p (1 << 2) #define V200 (1 << 3) #define TI89t (1 << 4) (2) #define HW1 1 #define HW2 2 #define HW3 3 #define HW4 4tiemu-3.03-nogdb+dfsg/docs/TiEmu_skin_format.txt000066400000000000000000000266331220314353500217100ustar00rootroot00000000000000 TiEmu v2.00 skin format *********************** Author : Julien BLACHE I. Summary ********** This file documents the TiEmu v2.00 skin format. This skin format is inspired from the VTi 2.5 skin format, with some improvements. However, it is *not* compatible with the original VTi 2.5 skin format. Skin files use the ".skn" extension. They consist of a header containing LCD and keys positions along with some other informations, followed by a JPEG image. The size of the header is not fixed ; it is determined by the length of the strings it contains. See below for more explanations. These skins can be produced using the Skinedit editor bundled with TiEmu v2.00. II. Header ********** The header consists of 3 types of data : - strings (S) - integers (I) - RECT structs (R) The RECT struct is composed of 4 uint32_t integers, indicating the coordinates of the top-left and bottom-right coordinates of a rectangle. The RECT struct is defined as follows : struct RECT { uint32_t left; uint32_t top; uint32_t right; uint32_t bottom; }; Note also that all integers are unsigned and 32 bits long. The ISO C99 standard type "uint32_t" (defined in should be used to manipulate them. Last, strings are *not* NULL-terminated, and preceeded by a uint32 indicating their size when needed. It's up to you to NULL-terminate the string before use. Here's how the header is decomposed (address in hex) : 0x000 - 0x00F (S) (16 bytes): "TiEmu v2.00" (NULL-padded) This string indicates the version of the skin. The version will match the version of TiEmu in which the change was introduced. 0x010 - 0x013 (I) (4 bytes) : endianness flag This integer is used to determine whether the skin was produced on a machine using the same endianness as the host we're running on. When writing the skin, this integer has the value 0xFEEDBABE ; when reading the skin, if the value does not match 0xFEEDBABE, then you need to byteswap all the 32-bits integers. 0x014 - 0x017 (I) (4 bytes) : JPEG offset This integer gives the position of the JPEG data in the file. A call to fseek() will bring you to the beginning of the JPEG image. 0x018 - 0x01B (I) (4 bytes) : string length Length of the following string. 0x01C - 0x*** (S) (?? bytes): skin's name This string is used to store the skin's name. 0x*** - 0x*** (I) (4 bytes) : string length Length of the following string. 0x*** - 0x*** (S) (?? bytes): author's name This string is used to store the author's name. 0x*** - 0x*** (I) (4 bytes) : color type This integer determines which color scheme is to be used for the LCD black/white pixels. It is either 0 (low contrast), 1 (high contrast) or 2 (custom colors). 0x*** - 0x*** (I) (4 bytes) : LCD white color 24 bits R/G/B value. 0x*** - 0x*** (I) (4 bytes) : LCD black color 24 bits R/G/B value. 0x*** - 0x*** (S) (8 bytes) : calc type This string determines the calc type. Types are allocated as follows : "TI-73", "TI-82", "TI-83", "TI-83+", "TI-85", "TI-86", "Ti-89", "TI-92", "TI-92+", "V200PLT". 0x*** - 0x*** (R) (16 bytes) : LCD position A RECT struct, indicating the LCD position. 0x*** - 0x*** (I) (4 bytes) : number of RECT structs This integer determines the number of RECT structs containing keys positions. As new calculators will appear, we might need more than the 80 usual keys. 0x*** - 0x*** (R) (80 x 16 bytes) : keys positions RECT structs, indicating the keys positions. 0x*** - 0x*** : JPEG data The JPEG image. All the coordinates are given with an origin at the top-left of the *unscaled* JPEG image. This means you'll have to take care of the coordinates whenever the skin is scaled. III. Keys definitions ********************* Here is how the 80 RECT struct defining keys positions are arranged ; currently, we can handle up to 80 keys. Ti-73 TI-82 TI-85 TI-89 TI-92 TI-83 TI-86 TI-92+ TI-83+ TI-84+ Titanium 0. Y= Y= F1 F1 Grab (Hand) 1. Window Window F2 F2 F1 2. Zoom Zoom F3 F3 F2 3. Trace Trace F4 F4 F3 4. Graph Graph F5 F5 F4 5. 2nd 2nd 2nd 2nd F5 6. Mode Mode Exit Shift F6 7. Del Del More Esc F7 8. Left Left Left Left F8 9. Right Right Right Right Q 10. Up Up Up Up W 11. Down Down Down Down E 12. Math Alpha Alpha Diamond R 13. Draw X,T,theta x-var Alpha T 14. List Stat Del Apps Y 15. x^2 Math Graph Home U 16. ^ Matrx Stat Mode I 17. Prgm Prgm Prgm Catalog O 18. Apps Vars Custom Backspace P 19. Clear Clear Clear Clear A 20. Unit x^-1 log X S 21. b/c sin sin Y D 22. F<->D cos cos Z F 23. A(b/c) <-> d/e tan tan T G 24. Const ^ ^ ^ H 25. Simp x^2 ln = J 26. % , (Comma) ee ( K 27. ( ( ( ) L 28. ) ) ) , (Comma) Z 29. / (Divide) / (Divide) / (Divide) / (Divide) X 30. x log x^2 | C 31. 7 7 7 7 V 32. 8 8 8 8 B 33. 9 9 9 9 N 34. * * * * M 35. , (Comma) ln , (Comma) ee Theta 36. 4 4 4 4 Shift 37. 5 5 5 5 On 38. 6 6 6 6 Diamond 39. - - - - 2nd (Alpha area) 40. Sto> Sto> Sto> Sto> Sto> 41. 1 1 1 1 Space 42. 2 2 2 2 = 43. 3 3 3 3 Backspace 44. + + + + Enter (Alpha area) 45. On On On On 2nd (Cursor area) 46. 0 0 0 0 Esc 47. . (Period) . (Period) . (Period) . (Period) Mode 48. (-) (-) (-) (-) Clear 49. Enter Enter Enter Enter ln 50. Apps 51. Enter (Cursor area) 52. Left 53. Right 54. Up 55. Down 56. sin 57. cos 58. tan 59. ^ 60. ( 61. ) 62. , (Comma) 63. / (Divide) 64. 7 65. 8 66. 9 67. * 68. 4 69. 5 70. 6 71. - 72. 1 73. 2 74. 3 75. + 76. 0 77. . (Period) 78. (-) 79. Enter (Numeric area) IV. JPEG image *************** Starting at the offset given by the uint32 located at 0x014, a JPEG image. It is an exact copy of the original JPEG file. Thus, stripping down the header, you can open the skin image with any JPEG-aware program. V. Contact *********** This file and the skin format were put together by Julien BLACHE. Please mail for any question. tiemu-3.03-nogdb+dfsg/docs/VTi_skin_format.txt000066400000000000000000000073261220314353500213650ustar00rootroot00000000000000***************************************************************** * File format of the VTi 2.5 skin files * * Documentation by Romain Lievin * * * * These informations have been extracted from the Vti source * * code (rom.cpp) which have been released by R. Wagner. * * * * Begin: 17/04/2002 * * Last update: 25/04/2002 * ***************************************************************** Remark: I use the C notation for numbers (12: decimal, 0x1A: hexadecimal, 'C': character). Moreover, all words are in LSB-MSB format. This document describes the file format of VTi v2.1 & v2.5 skins. A skin file (.skn) is a composite file which contains informations and data (image). The VTi v2.1 skin file format ----------------------------- The following is a table of the bytes that make up a skin file. Adress What It Contains --------------------------------------------------------------------------- 0x000-0x007 0-7 An header: "VTIv2.1 " ??? 0x050-0x053 80-83 The value of the 'White' LCD pixel (32 bits) 0x054-0x057 84-87 The value of the 'Black' LCD pixel (true color) 0x058-0x067 88-103 1x RECT structure (the display coords in skin) 0x068-0x567 104-1383 80x RECT structures (the keys coords in skin) 0x568-0x... 1384-... A JPEG encoded image placed right after The VTi v2.5 skin file format ----------------------------- The following is a table of the bytes that make up a skin file. Adress What It Contains --------------------------------------------------------------------------- 0x000-0x007 0-7 An header: "VTIv2.5 " 0x008-0x047 8-71 Skin's name (64 chars) 0x048-0x087 72-135 Skin's author (64 chars) 0x088-0x08F 136-143 Calculator type ? 0x090-0x093 144-147 The value of the 'White' LCD pixel (32 bits) 0x094-0x097 148-151 The value of the 'Black' LCD pixel (true color) 0x098-0x0A7 152-167 1x RECT structure (the display coords in skin) 0x0A8-0x5A7 168-1447 80x RECT structures (the keys coords in skin) 0x5A8-0x... 1448-... A JPEG encoded image placed right after RECT is a common Win32 structure which has the following format: typedef struct tagRECT { uint32_t left; uint32_t top; uint32_t right; uint32_t bottom; } RECT; The keys coordinates are stored in an array of 80 structures. These structures are parsed for searching a mouse position which fits into. Once found, the index is mapped into a TI key by an array such as: const char sknKey89[] = { TIKEY_F1, TIKEY_F2, TIKEY_F3, TIKEY_F4, TIKEY_F5, TIKEY_2ND, TIKEY_SHIFT, TIKEY_ESCAPE, TIKEY_LEFT, TIKEY_RIGHT, TIKEY_UP, TIKEY_DOWN, TIKEY_DIAMOND, TIKEY_ALPHA, TIKEY_APPS, TIKEY_COS, TIKEY_MODE, TIKEY_F6, TIKEY_BACKSPACE, TIKEY_CLEAR, TIKEY_X, TIKEY_Y, TIKEY_Z, TIKEY_T, TIKEY_POWER, TIKEY_EQUALS, TIKEY_PALEFT, TIKEY_PARIGHT, TIKEY_COMMA, TIKEY_DIVIDE, TIKEY_LN, TIKEY_7, TIKEY_8, TIKEY_9, TIKEY_MULTIPLY, TIKEY_SIN, TIKEY_4, TIKEY_5, TIKEY_6, TIKEY_MINUS, TIKEY_STORE, TIKEY_1, TIKEY_2, TIKEY_3, TIKEY_PLUS, TIKEY_ON, TIKEY_0, TIKEY_PERIOD, TIKEY_NEGATE, TIKEY_ENTER1 }; This array contains some values which come from an enumeration. Values contained in this array must match with the keys placed in the skin in the same order. The enumeration is also used for keyboard mapping. The order is not important but this enumeration is a basis for some other transcoding arrays (TIKEY_XXX to row/col hardware key). enum { TIKEY_DOWN, TIKEY_RIGHT, TIKEY_UP, TIKEY_LEFT, TIKEY_HAND, TIKEY_SHIFT, ... MAX_KEY // important ! };tiemu-3.03-nogdb+dfsg/docs/img_format.txt000066400000000000000000000134431220314353500204100ustar00rootroot00000000000000***************************************************************** * File format of the TiEmu v2.0 image files * * Documentation by Romain Lievin * * * * Begin: 17/05/2005 * * Last update: 31/07/2006 * ***************************************************************** Remark: I use the C notation for numbers (12: decimal, 0x1A: hexadecimal, 'C': character). Moreover, all words are in LSB-MSB format. This document describes the file format of *.img files. An TiEmu image file is a composite file which contains: - a header section - a pure data section The TiEmu v2.00 image format (revision 2) => IMG_INFO in src/core/images.h ----------------------------------------- The following is a table of the bytes that make up a such file. Address Size What It Contains --------------------------------------------------------------------------- 0x00-0x0F 0-15 16 a signature: "TiEmu img v2.00" (NULL-padded) 0x10-0x13 16-19 4 structure revision (2) 0x14-0x17 20-23 4 offset to the data section (0x40) 0x18 24 1 calculator type (2 = TI92) 0x19-0x1F 25-29 5 firmware revision ("2.08\0") 0x1E 30 1 FLASH/PROM (2/0) 0x1F 31 1 has boot (1/0) 0x20-0x23 32-35 4 pure data size 0x24 36 1 hw type (1/2/3/4) 0x25 37 1 ROM base address 0x26 38-59 n filled with 0 (reserved for future use) 0x3c-0x3f 60-63 4 pointer on data (unused here) 0x40-.. 64-.. pure data (ROM image) Calculator type (libtifiles defs): #define TI92 (1 << 0) #define TI89 (1 << 1) #define TI92p (1 << 2) #define V200 (1 << 3) #define TI89t (1 << 4) Note: FLASH upgrade does not have boot block. The TiEmu v2.00 save format (revision 21) => SAV_INFO in src/core/state.h ----------------------------------------- The following is a table of the bytes that make up a such file. Before this header, there is a "TiEmu v2.00 image format" header. And next, there is the following header: Address Size What It Contains --------------------------------------------------------------------------- 0x40-0x43 0-3 4 structure revision (21) 0x44-0x47 4-7 4 size of structure 0x48-0x4b 8-11 4 offset to M68K area 0x4c-0x4f 12-15 4 offset to IO area 0x50-0x53 16-19 4 offset to RAM area 0x54-0x57 20-23 4 offset to HW infos 0x58-0x5b 24-27 4 offset to FLASH changes 0x5c-0x5f 28-31 4 offset to bkpts area 0x60-0x63 32-35 4 offset to image location (size + string) 0x64-... . pure data (see below) @M68K: => regstruct in src/core/uae/newcpu.h @IO: HW1 I/O ports: @HW.io_size bytes HW2 I/O ports: @HW.io2_size bytes HW3 I/O ports: @HW.io3_size bytes @RAM: RAM contents: @HW.ram_size bytes @HW: => Ti68kHardware in src/core/ti68k_def.h Ti68kHardware structure contents. See below and note at the bottom of the page: typedef struct { time_t s; int ms; } TTIME; typedef struct { // misc (non hardware pseudo-constants) int calc_type; int ram_size; // RAM size int rom_size; // ROM size int io_size; // HWx io size int io2_size; // HW2 io size int io3_size; // HW3 io size uint32_t rom_base; // ROM base address int rom_flash; // ROM type char rom_version[5]; // ROM/AMS version int hw_type; // HW1/2/3/4 int ti92v1; // ROM v1.x(y) int ti92v2; // ROM v2.x int lcd_w; // LCD physical width int lcd_h; // LCD physical height // keyboard int on_key; // lcd uint32_t lcd_adr; // LCD address (as $4c00) char* lcd_ptr; // direct pointer to LCD in PC RAM int contrast; int log_w; // LCD logical width int log_h; // LCD logical height int on_off; unsigned long lcd_tick;// used by grayscales // memory uint8_t* rom; // ROM uint8_t* ram; // RAM uint8_t* io; // HW1/2/3 i/o ports uint8_t* io2; // HW2/3 i/o ports uint8_t* io3; // HW3 i/o ports uint8_t* unused; // unused uint32_t initial_ssp;// SSP at vector #0 uint32_t initial_pc; // PC at vector #1 // timer uint8_t timer_value;// Current timer value uint8_t timer_init; // Value to reload // rtc (hw2) uint8_t rtc_value; // RTC value // rtc (hw3) TTIME rtc3_ref; // time reference TTIME rtc3_beg; // time value when TTIME rtc3_load; // clock is load // protection int protect; // hw protection state uint32_t archive_limit; // archive memory limit int ram_exec[64]; // RAM page execution protection bitmask } Ti68kHardware; @FLASH: => FLASH_WSM in src/core/ti_hw/flash.h For p blocks (p = @HW.rom_size >> 16): 4 bytes: whether bank has been modified If modified: 64KB: FLASH page contents eg. @HW.rom[p<<16] @bkpts: => Ti68kBreakpoints in src/core/ti68k_def.h & ADDR_RANGE/ADDR_BITS in src/core/dbg/bkpts.h code: 4 bytes: number of bkpts 4 bytes: address ... 4 bytes: address exception: same as above pgmentry: same as above mem_rb: same as above mem_rw: same as above mem_rl: same as above mem_wb: same as above mem_ww: same as above mem_wl: same as above mem_rng_r: 4 bytes: number of breakpoints 8 bytes: lower & upper value ... 8 bytes: lower & upper value mem_rng_w: same as above bits: (added in rev. 21) 4 bytes: number of breakpoints 4 bytes: address 2 bytes: checks & states 2 bytes: padding (00) @image location: 4 bytes : string length + 1 m bytes: ROM image filename (NULL-terminated) 4 bytes: string length + 1 n bytes: TIB image filename (NULL-terminated) Note: sizeof(char) = 1 sizeof(int) = 4 sizeof(long) = 4 sizeof(*ptr) = 8 Note2: if structure is stored in file, padding may appear to round-up size to 4 bytes.tiemu-3.03-nogdb+dfsg/docs/iodefs_format.txt000066400000000000000000000024411220314353500211010ustar00rootroot00000000000000***************************************************************** * File format of the TiEmu v2.0 iodefs files * * Documentation by Romain Lievin * * * * Begin: 29/03/2007 * * Last update: * ***************************************************************** This document describes the file format of iodefs_*_hw?.txt files. Those files contains dynamic definitions of the various I/O ports existing on calculators. Filename is following this scheme: iodefs_[model]_hw[revision].txt. 1) This file is made up of various sections like [System]. Sections name are placed within brackets. Sections are interpreted as a top node. 2) Within each section, there are on ore items like this: $600001 | 1 | rw | <.....2.0> | Stack overflow | AI7 enable,Interleave RAM - first column is address - second one tells how many bytes (1,2,4) are occuppied - third one is access (ro,wo,rw) - fourth one describes used bits; is a convenient way to describe all bits - fifth column is the name of the item (displayed at left) - last column is a comma separated list of bit names. You should not write more than 16 chars for bit names Please keep in mind there are very few syntaxical checks. So, write it with care! ---tiemu-3.03-nogdb+dfsg/docs/mails/000077500000000000000000000000001220314353500166235ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/000077500000000000000000000000001220314353500211025ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/mail1.txt000066400000000000000000000075471220314353500226630ustar00rootroot00000000000000Salut, Je pense qu'il est temps de penser à nous mettre d'accord au sujet de la gestion des informations de débogage. Voilà ma vision des choses, je serais content d'avoir ton avis: suggestions, améliorations, suppression de features que tu retiens non implémentables, ... Pour commencer, je vais commencer par définir ce que j'entends par "informations de débogage". Je vois 3 grands types d'informations: 1. informations symboliques niveau assembleur. Cela comprend les noms des labels (labels de code, variables). Ces informations sont probablement les plus simples à gérer, il suffit à mon avis en grande partie de réutiliser du code qui existe déjà pour les ROM_CALLs. Ce sont aussi les seules informations qu'on peut obtenir de l'assembleur A68k. (L'assembleur GNU gère aussi le 2.) 2. lignes des sources. Ces informations mettent en relation les instructions du code machine avec les lignes des sources C ou assembleur (GNU). Cela implique rajouter un "source view" au débogueur et de permettre de faire du single-stepping et des breakpoints dans la fenêtre de source. 3. position (pour les variables "automatiques") et type des variables C. Au niveau interface, ça se traduit en l'affichage des valeurs des variables, les watchpoints (version haut niveau des data breakpoints), ... C'est le plus dur à gérer, mais quand le 1. et le 2. seront règlés, je pense qu'il sera inévitable de nous plonger là-dessus pour que le débogueur soit complet. Je compte réaliser ça de la manière suivante: ld-tigcc émet, en plus des exécutables, un fichier nomprog.dbg qui contiendra les informations de débogage. Il serait bien que ce fichier soit chargeable comme un fichier TI dans TiEmu. Le chargement se passerait idéalement de la manière suivante: * L'utilisateur "envoie" nomprog.dbg. * TiEmu va chercher l'exécutable de même nom et pour la bonne calculatrice. (Cet exécutable pourra être supposé non compressé.) * TiEmu l'envoie (en RAM, pas en archive, pour pouvoir mettre un breakpoint). * TiEmu place un "program entry breakpoint" sur ce programme. (Oui, il faudra d'abord implémenter ça, cf. mes mails précédents.) * TiEmu l'exécute à travers la ligne de commande. Attention, ici, il faudra un hack: il faudra faire en sorte que l'appel en ligne 1010 correspondant à "ASAP or Exec string too long" soit traîté comme un nop jusqu'à ce que le breakpoint soit atteint. Cela ne devrait pas être trop dur à implémenter directement au niveau de l'émulation d'instructions à mon avis. * Dès que le breakpoint est atteint, TiEmu fait en sorte que la protection anti-exécution soit désactivée pour tous les 64 KO du programmes (pas seulement les premiers 8 ou 24 KO). * TiEmu charge les informations de débogage (en les relogeant à la bonne adresse) et affiche le débogueur. Mon idée du format de débogage est le suivant: Le fichier .dbg sera en fait un .a qui contiendra: * symbinfo.dat: informations symboliques * srclines.dat: lignes des sources * cvars.dat: position et type des variables * toutes les sources référencées dans srclines.dat, de façon à permettre la compilation dans un répertoire temporaire effectuée par l'IDE, ou de déboguer facilement sur une machine qui n'est pas la machine de développement. (Les librairies statiques compilées avec informations de débogage devront aussi contenir ces sources, pour les mêmes raisons.) (Ceci est sujet à des changements. Tes suggestions sont les bienvenues. Les détails des contenus des *.dat restent à définir.) Il faudra aussi qu'on se mette d'accord pour la répartition des tâches: j'aurai certainement besoin de ton aide pour ce qui est interface graphique (je n'ai encore rien programmé en GTK), et je vais certainement m'occuper entièrement du linker. Le reste est sujet de discussion. C'est tout pour l'instant, j'ai certainement d'autres choses encore à dire à ce sujet, mais je n'ai pas le temps maintenant...tiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/mail2.txt000066400000000000000000000054201220314353500226500ustar00rootroot00000000000000Salut Romain, > Par contre, j'en profites pour te poser quelques questions: > - combien dois-je émuler de niveaux de gris: 2 ou 3, 4 ou 5, 7 ou 8 ? > <<* Ce serait bien d'avoir aussi une option 8 niveaux de gris (moyenne de 7 > plans plutôt que de 6).>> Les nombres de niveaux de gris interessants sont 2, 4, 7 et 8: * 2: plane0 (1/1) * 4: plane0, plane0, plane1 (2/3, 1/3) * 7: plane2, plane0, plane1, plane0, plane1, plane0 (3/6, 2/6, 1/6) * 8: plane1, plane0, plane2, plane0, plane0, plane1, plane0 (4/7, 2/7, 1/7) > - sur quel évènement puis-je me synchroniser pour les niveaux de gris. Déjà, ça va dépendre de la version matérielle que tu émules: * HW1: Tu peux travailler en termes de changements d'adresse de l'écran. (Sache que les routines n'écrivent dans le port pour changer de plan que si l'adresse change.) Une chose que tu peux essayer de faire par exemple est de détecter automatiquement le nombre de ndg: prends les 6 dernières adresses de l'écran (suffisamment récentes) et regarde: - Si tu n'as pas 6 adresses ou si les premières ont déjà expiré, tu es en blanc&noir. - S'il n'y a qu'une adresse différente, tu es en blanc&noir. - S'il n'y a que 2 adresses différentes, tu en en 4 ndg. - Si tu as 3 adresses différentes, tu es en 7 ou 8 ndg. Tu ne vas pas pouvoir distinguer ces cas en regardant seulement les changements, il faudra mesurer les temps d'exposition. S'ils sont uniformes, ce sont 7 ndg, s'il y en a un 2 fois plus long, ce sont 8 ndg (séquence plane0, plane0). Avec ça (ou alors en te servant du choix dans le menu), tu regardes les listes ci-dessus et tu t'en sers pour faire des moyennes. Pour les 4 ndg, tu auras aussi besoin d'une mesure du temps d'exposition pour savoir quel plan est le plan foncé et lequel est le plan clair. * HW2/HW3: Relève les contenus de l'écran à des intervalles de temps réguliers. Le port 0x70001D existe pour synchroniser les routines avec l'écran. Il faudra flipper le sign bit de ce port à chaque fois que tu as fini de relever une capture d'écran. Attention, les routines de gris HW2/HW3 copient seulement un tiers de l'écran à la fois, donc il faudra faire la moyenne de 9 relèvements en 4 ndg, 18 en 7 ndg et 21 en 8 ndg. Par conséquent, le timer de relèvement ne devra pas être trop lent. Le vrai matériel le met à 90 Hz environ. Soit tu prends le pgcd (126 relèvements), mais c'est très long, soit tu restes avec des choix à faire à la main. Malheureusement, une autodétection n'est pas aussi simple que sur HW1, parce que tu ne peux pas faire des comparaisons d'adresses, et le contenu peut changer entre 2 frames. Une idée serait de prendre les 126 relèvements pour l'option "blurry" et d'en faire l'option par défaut, et de proposer les autres alternatives pour un meilleur rendu. Kevin Koflertiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/mail3.txt000066400000000000000000000013421220314353500226500ustar00rootroot00000000000000> au fait, je te rappelles que, comme convenu, je n'ai pas implémenté les > ghosts: > << > // 000000-03ffff : RAM (256 KB), non ghost'ed > // 100000-1fffff : > // 200000-2fffff : image of 0x000000 (ghost), not emulated for compatibility > // 300000-3fffff : > // 400000-4fffff : image of 0x000000 (ghost), not emulated for compatibility > // 500000-5fffff : > >> > > Dois-je l'implémenter en 0x400xx ? Surtout pas. Ça donnerait des tonnes de programmes qui ne marchent que sur TiEmu et pas sur le vrai matériel. En revanche, les ghosts en 0x200000 et 0x400000, tu devrais les mettre (sur HW3 seulement, évidemment). GhostBuster utilise ça pour convertir les programmes qui écrivent en 0x400xx pour les interruptions.tiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/mail4.txt000066400000000000000000000015001220314353500226450ustar00rootroot00000000000000> > * virer la gestion de $600010 sur HW2/HW3, ce port est HW1-only et doit > > être > > ignoré sur HW2/HW3. > > j'ai quelque chose de pas normal: > - sur HW2, le port $600xxx est utilisé mais pas celui en $700xxx (comme > sur HW1) > - sur HW3, les 2 sont utilisés et il faut que j'utilise celui en $600xxx > pour avoir le bon LCD. Olivier m'a pourtant dit qu'il t'a déjà signalé l'origine du problème... AMS 3.00 écrit dans la rangé 0x7100xx qui sur HW3 N'EST PAS un ghost de la rangée 0x7000xx, mais de nouveaux ports. Ton code capture des écritures en 0x710017 comme des changements de port LCD, et c'est faux. Et AMS n'initialise pas 0x700017 parce que la valeur par défaut de ce port est 0, ce qui donne un plan à 0x4c00. Il faut que ton code d'initialisation mette LCD_MEM à 0x4c00 au départ sur HW2 et HW3.tiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/mail5.txt000066400000000000000000000027111220314353500226530ustar00rootroot00000000000000 > > Sinon, on peut peut-être "tricher" aussi: si quelque chose écrit vers > > LCD_MEM avec les bons types de movem, on relève la source de la copie et > > on > > l'enregistre comme "plan". > > dans ce cas, pourquoi ne pas écrire l'adresse et le numéro du plan à une > adresse inutilisée sur les TI mais connue de TiEmu ? Ce serait simple et > efficace à tous les niveaux. Inconvénient (comme tu me l'avais fait > remarquer): certains programmes pourraient ne pas marcher en ndg. Pourquoi pas reconnaître les séquences de movem dans TiEmu? Ça ne nécessiterait aucun changement au niveau des logiciels eux-mêmes. Pour commencer: Si code exécuté = "movem.l (%a0)+,%d0-%d7/%a2-%a6; movem.l %d0-%d7/%a2-%a6,(%a1)" et (%a1)==0x4c00, alors plan:=(%a0). Ensuite, pour graphlib-titanik et graphlib-iceberg: Si code exécuté = "movem.l (%a0)+,%d0-%d7/%a2-%a6; movem.l %d0-%d7/%a2-%a6,(%a1)" (le même qu'avant) et (%a1)==0x4c00+12, alors plan:=-12(%a0). Ensuite, faut voir quelles autres séquences de movem sont en circulation. Genlib est susceptible d'utiliser des trucs bizarres. Les autres, je suppose qu'ils utilisent du code "normal", c'est-à-dire la première séquence (TitaniK/Iceberg sont déjà exotiques, j'avoue, mais c'est parce que je ne copie que 3000 octets sur Titanium pour pouvoir exécuter du code dans les 840 octets restants, qui ne sont pas protégés contre l'exécution (vu qu'ils sont dans la plage 0x5000-0x5fff)). Kevin Kofler tiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/mail6.txt000066400000000000000000000026451220314353500226620ustar00rootroot00000000000000La procédure, c'est: * On récupère le FolderListHandle d'une manière ou d'une autre (le challenge étant de le faire d'une manière qui soit à la fois compatible avec tous les AMS et ne nécessite pas d'émuler tout un ROM_CALL pour faire un FolderListHandle = SymFindHome(SYMSTR("main")).folder; - faire ça impliquerait appeler toute la fonction SymFindHome émulée depuis le code PC, donc ce n'est pas du tout pratique). * On recherche le répertoire dans ce handle (structure SYM_ENTRY *), on prend le champ "handle" et on se retrouve avec un autre handle contenant la table des fichiers dans ce répertoire. * On recherche le fichier dans ce handle (encore une structure SYM_ENTRY *), on prend à nouveau le champ "handle" et on se retrouve avec le handle du contenu du fichier. * ATTENTION, il faut absolument résister à la tentation de déréférencer ce handle! Avant d'exécuter le programme, AMS le déplace avec un HeapMoveHigh. Et il peut aussi être déplacé à tout moment pour d'autres raisons. Il faut donc garder ce numéro de handle en mémoire et faire un breakpoint non sur l'adresse HeapDeref(handle)+2 calculée statiquement, mais sur la _condition_ PC=HeapDeref(handle)+2 avec HeapDeref évalué à chaque fois. Si tu n'as pas encore de framework pour mettre un breakpoint sur des conditions complexes, c'est le moment d'en mettre un, on en aura de toute façon besoin pour le débogueur C tôt ou tard. Kevin Koflertiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/mail7.txt000066400000000000000000000051351220314353500226600ustar00rootroot00000000000000Maybe we can base our debugging support on this? http://sources.redhat.com/ml/gdb-patches/2001-02/msg00490.html This integrates UAE with GDB, at least so it claims. It is written for old versions (see the 2001 date), but maybe I can get it up to task. It will still be much less work than writing the glue code from scratch (something I also considered), and probably also less work than writing source-level debugging support from scratch. The way I see this would be that there would be 2 classes of debugging windows: * windows based on the GDB core: source/disassembly view (and yes, I would use the disassembler in GDB/Binutils, the one from VTI has licensing issues anyway - I'd of course port the code you added, such as F-Line stuff, to the new disassembler), maybe breakpoints, and of course new windows which don't exist yet, for example: watchpoints, local variables, global variables, expression evaluator, ... I wonder if there is a GTK-based GDB frontend somewhere, from which we could lift some of the windows. Unfortunately, Insight uses TK and DDD uses Motif, so these are not options. * windows using the UAE or TI core directly, with the current code: memory view, register view, PC log, handle view, ... Some of these could also be implemented through GDB, but using UAE directly is better for performance, so I don't see a good reason to change things to use a slower interface. If we go down this route, I'll also have to get GDB/BFD and ld-tigcc to agree about a debugging information format, but that's something to worry about once basic GDB support is working (in a branch, or in SVN HEAD if Romain wants to branch the release - there is no way we will break the 2.00 release with this sort of experiments). The suggested roadmap would then be: 1. branch TiEmu for debugging support (I'm waiting for a sufficiently stable version for that; we're close, but things are still too much of a moving target for me) 2. integrate Will Cohen's GDB-UAE glue code into the branch 3. change the disassembly view to use GDB facilities 4.-6. (will have to mostly co-evolve, I guess) add debugging information output to ld-tigcc, support for the chosen debugging information format to BFD/GDB, implement additional GDB-based windows The end result would be solid debugging support, including things like variable location tracking which allow debugging optimized binaries (-O0 is not always an option with TIGCC due to size constraints). The downside would of course be that TiEmu would depend on GDB, and a patched in-tree version at that, so it would get a lot larger. Kevin Koflertiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/probegho.89z000066400000000000000000000012351220314353500232640ustar00rootroot00000000000000**TI89**mainRprobegho!¥ZC xÈ ¨ÌÿüdHzÌ h˜NXNuHç*xÈCú( „ÿÿvaTNqJ@f(/ „ÿÿb „ÿÿa:NqHROïñHxHxLHo$m ¨N’a’HxHoHxLN’Oï$_aLß 8Nu?<B§ m°N\B@*g>?( mXNT±Äb 0ÑÀ±Äcp EJCg( C( Nu m´N`Â(ï NuAMS 1.01 or higher needed%lp NVHç06|&8aTNqNq`·ü_ÿÿb<¶›fô xÈHxèB§Eëÿü/ h ÀNOï J@fÞ/ Hzÿ´a4NqNq xÈ hDNP`ÄLî ÿôN^Nu xÈ htB§NX xÈ hxNÐ xÈ hLAè 2PHo//B§HzNqN±ˆOïNuNVÿìHç  g0ÐGBA+²@lBEÖD0ÐDBA+²@lBW?/ / m,N–D>¼???  g mNßW mtN0Lî<øÿÈN^Nuóºtiemu-3.03-nogdb+dfsg/docs/mails/Kevin Kofler/probegho.c000066400000000000000000000006041220314353500230530ustar00rootroot00000000000000#define USE_TI89 #define USE_TI92P #define USE_V200 #define SAVE_SCREEN #include void _main(void) { unsigned long *p=(unsigned long *)4; unsigned long firstlong=*(unsigned long *)0; clrscr(); try_again: while (*(p++)!=firstlong) { if ((unsigned long)p>=0x600000) return; } if (memcmp(p-1,0,1000)) goto try_again; printf("%lp\n",p-1); ngetchx(); goto try_again; } tiemu-3.03-nogdb+dfsg/docs/mails/Lionel Debroux/000077500000000000000000000000001220314353500214365ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/mails/Lionel Debroux/line1111.txt000066400000000000000000000121651220314353500234370ustar00rootroot00000000000000TI-89 AMS 2.05 Line 1111 Emulator Technical Information by Greg Dietsche email: gforce@calc.org web: http://gforce.calc.org/ This file is best viewed in Notepad with word wrap turned off. Examples of each F-Line Instruction can be found in a program called FLINE which is included with KerNO version 2.0 and above. Functions In the order they are handled: 6 byte bsr w/long word displacement .word 0xFFF0 .long displacement 4 byte ROM CALL .word 0xFFF2 .word rom call index * 4 2 byte ROM CALL .word 0xF800 + Rom Call Index (range $0 through $7EF inclusive) 6 byte bra w/long word displacement .word 0xF800 + 0x7F1 (0xFFF1) .long displacement __________________________________________________________________________________________ ;The TI-89 AMS 2.04 - 2.08 Line 1111 Emulator movem.l %d0/%a0-%a2,-(%a7) /* [0x2124DE Line 1111 emulator begin 0x10 bytes stacked movea.l (0x12,%a7),%a0 /* [0x2124E2 get FXXX instruction pointer in a0 clr.l %d0 /* [0x2124E6 move.w (%a0),%d0 /* [0x2124E8 move FXXX instruction to d0 movea.l %a0,%a1 /* [0x2124EA a0 and a1 point to FXXX instruction move %usp,%a2 /* [0x2124EC a2==user mode stack pointer (a7) ;check for bsr with longword displacement cmpi.w #0xFFF0,%d0 /* bne.s \notFFF0 /*+0x1A*/ /* [0x2124F2 not bsr, so check for rom call addq.l #6,%a0 /* [0x2124F4 a0 = pc when returning back to caller move.l %a0,-(%a2) /* [0x2124F6 save pc to user stack for rts of called func move %a2,%usp /* [0x2124F8 update the user stack pointer addq.l #2,%a1 /* [0x2124FA point a1 at 4 bytes data following $FFF0 adda.l (%a1),%a1 /* [0x2124FC add (X's) value at $fff0XXXXXXXX to a1 (calculate jump to addr) move.l %a1,(0x12,%a7) /* [0x2124FE save jump to addr on stack for rte instruction movem.l (%a7)+,%d0/%a0-%a2 /* [0x212502 restore saved registers jmp RTE_LABEL /* [0x212506 rte will now return to called function, called func will return to stacked pc value __L21250C: \notFFF0: ;at this point: ;a0=a1=FXXX instruction ;a2=user stack pointer ;d0.l = FXXX instruction ;0x10 bytes extra are stacked to save destroyed registers ;FFF2 instruction is used for making rom calls. It supports rom call #$0 through #$FFFF ;it will be used on ams versions with a rom call table containing more than 0x800 entries ;for now, the two byte F800 instruction is used. FFF2 requires 4 bytes. cmpi.w #0xFFF2,%d0 /* [0x21250C bne.s \notFFF2 /*+0x22*/ /* [0x212510 addq.l #4,%a0 /* [0x212512 a0=pc after called func returns move.l %a0,-(%a2) /* [0x212514 stack new pc on usp move.w (-0x2,%a0),%d0 /* [0x212516 d0.w == data portion of FFF2 instruction move %a2,%usp /* [0x21251A update user stack pointer (yes, this is slightly out of logical order) movea.l #0x23A1C6,%a0 /* [0x21251C jump table address move.l $c8,a0 move.l (0x0,%a0,%d0.w),(0x12,%a7)/* [0x212522 save address of called func for rte movem.l (%a7)+,%d0/%a0-%a2 /* [0x212528 restore saved registers (0x10 bytes) jmp RTE_LABEL /* [0x21252C return from interrupt __L212532: /notFFF2: ;at this point: ;a0=a1=FXXX instruction ;a2=user stack pointer ;d0.l = FXXX instruction ;0x10 bytes extra are stacked to save destroyed registers andi.w #0xFFF,%d0 /* [0x212532 get rom call index + 0x800 cmpi.w #0x800,%d0 /* [0x212536 blt __L212582 /*+0x48*/ /* [0x21253A if index is less than 0x800 then crash cmpi.w #0xFF0,%d0 /* [0x21253E bge /NotRomCall /*+0x28*/ /* [0x212542 addq.l #2,%a0 /* [0x212546 a0=ret addr for called func andi.w #0x7FF,%d0 /* [0x212548 get rom call index move %usp,%a1 /* [0x21254C a1=usp (why not use a2?) move.l %a0,-(%a1) /* [0x21254E stack ret addr for called func move %a1,%usp /* [0x212550 save new user stack pointer movea.l #0x23A1C6,%a0 /* [0x212552 jump table address (move.l $c8,a0) rol.l #2,%d0 /* [0x212558 multiply rom call index by 4 adda.l %d0,%a0 /* [0x21255A (rom call index *4)+rom call table=pointer to address of rom call move.l (%a0),(0x12,%a7) /* [0x21255C save rom call address for rte movem.l (%a7)+,%d0/%a0-%a2 /* [0x212560 restore saved registers jmp RTE_LABEL /* [0x212564 return from exception __L21256A: /NotRomCall: ;at this point: ;d0=rom call index ;d0 is greater than #$ff0 a0=a1=FXXX instruction a2=user stack pointer cmpi.w #0xFF1,%d0 /* [0x21256A long jump bne.s __L212582 /*+0x14*/ /* [0x21256E if d0 != #$FF1 then crash addq.l #2,%a0 /* [0x212570 a0 points to the coresponding .l data adda.l (%a0),%a0 /* [0x212572 increment pc with offset move.l %a0,(0x12,%a7) /* [0x212574 store new pc movem.l (%a7)+,%d0/%a0-%a2 /* [0x212578 restore registers jmp RTE_LABEL /* [0x21257C return from exception tiemu-3.03-nogdb+dfsg/docs/mails/Lionel Debroux/mem_mapping.txt000066400000000000000000000021471220314353500244740ustar00rootroot00000000000000Il m'apparaît que pour la V200, TIEmu émule un ghost de 0x200000-0x3FFFFF à 0x400000-0x5FFFFF, ce qu'il ne faut pas faire (que le dump soit tronqué à 2 MB ou non) ! Récapitulons les emplacements des mémoires et des ghosts: * TI-89: * RAM à 0x000000-0x03FFFF; * 7 ghosts de la RAM jusqu'à 0x200000; * Flash à 0x200000-0x3FFFFF; * pas de ghost de la Flash. * TI-89 Titanium: * RAM à 0x000000-0x03FFFF; * ghosts de la RAM à 0x200000 et 0x400000 (ne les émule surtout pas, ça encouragerait leur utilisation qui est peu sûre - incompatibilités en perspective si TI les enlève dans la V200T ?); * Flash à 0x800000-0xBFFFFF; * à ma connaissance pas de ghost de la Flash. * TI-92+: * RAM à 0x000000-0x03FFFF; * 7 ghosts de la RAM jusqu'à 0x200000; * Flash à 0x400000-0x5FFFFF; * ghost de la Flash à 0x200000-0x3FFFFF SUR HW2 UNIQUEMENT (ne pas l'émuler empêche l'émulation de ROMs de V200 patchées). * V200: * RAM à 0x000000-0x03FFFF; * 7 ghosts de la RAM jusqu'à 0x200000; * Flash à 0x200000-0x5FFFFF; * pas de ghost de la Flash.tiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/000077500000000000000000000000001220314353500214175ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/7000xx_Ports.txt000066400000000000000000000041731220314353500243220ustar00rootroot00000000000000============================================================================ 7000xx_Port.txt - More details on unknown TI68K $7000xx HW2 I/O Ports - February 2002 - Olivier Armand (ExtendeD) - ============================================================================ You should read Johan Eilert's TI89 hardware programming documentation before reading this one. $0x700008 to $700000F : (rw) ======================= These ports are the ghosts of the ports for the protection of execution in RAM ($700000 to $700007). Any writing to either the real ports or the ghosts will change both ports (eg $700002 and $70000A). $700014.w : (Rw) =========== Real Time Clock. Incremented every 2^13 = 8192 seconds exactly. The whole word must be read : reading the port byte by byte can return wrong values. The timer is not incremented when the batteries have been removed, but the value it had when they were removed is kept. Removing the lithium battery and putting it back gives a random value to the timer. $70001F.b : (Rw) =========== bit 2 : activates the incrementation of $700014.w when bit 1 is set. Set by AMS on reset. bit 1 : its effect depends on the state of bit 2. bit2/bit1 1 1 : State set by AMS on reset. $700014.w is incremented. 1 0 : Auto-ints 1, 2, 3 and 5 are inhibited. The RTC is stopped. 0 1 : The RTC is stopped. The auto-ints works normally. 0 0 : The RTC is stopped. The frequencies of all the auto-ints are lower (OSC2 must be slower). AI1 : ~ 176 Hz instead of 256 Hz. AI3 : ~ 40 ticks per minute instead of 60. AI5 : ~ 13.2 Hz instead 19.3 Hz. Only AMS initializes theses bits on reset. The boot code does not. bit 0 : Something to do with the contrast (see J89hw.txt), AND : Clearing this bit activate the execution in areas from which the Protection can be disabled : ROM_BASE+$12000 to ROM_BASE+$17FFF and ROM_BASE+$1A000 to ROM_BASE+$1FFFF. The execution in the boot sector is not protected by the protection controlled by this bit. ----------- End Of File tiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/mail1.txt000066400000000000000000000067671220314353500232030ustar00rootroot00000000000000Salut ! Pour une ROM originale (en .v2u) de V200, le plus simple est de la prendre directement sur le site de TI (AMS 2.09 uniquement) : http://education.ti.com/us/product/apps/v200os.html Pour une ROM de V200 patchée afin de pouvoir tourner sur Virtual TI, elle peut être trouvée dans le package que j'avais fait lors de l'apparition de la V200 : http://membres.lycos.fr/extended/AMS_2.07_Dev_Kit.zip Un fichier décrit les patches effectués. Attention, les autres documents du package ne sont plus à jour, il vaut mieux utiliser celui-ci : http://www.ticalc.org/pub/text/calcinfo/ams_2.08_doc.zip J'ai aussi les AMS 2.08 et 2.09 patchés de la même manière que je peux envoyer si tu en as vraiment besoin. Pour une ROM originale de Titanium (AMS 3.00), je viens de l'uploader ici : http://membres.lycos.fr/extended/titanic.orig.zip (l'AMS n'est pas encore disponible sur le site de TI). C'est un ROM Dump fait par Samuel Stearley des 2 premiers Mo (il n'a pas pu aller plus loin avec l'outil de dump qu'il utilise) : une partie des Flash Apps qui étaient installées sont donc coupées, mais ce n'est pas gênant (elles peuvent être enlevées à la main avec un éditeur hexa, ou les demi apps seront normalement nettoyées au démarrage de l'AMS). Samuel m'a donnée l'autorisation d'en faire ce que je veux, mais je préfère qu'on ne parle pas trop de ce lien. J'ai aussi une version au format .89u (venant du CD donné avec la Titanium), mais elle est identique, avec le header et la taille correspondants. J'ai fait de la même manière une version patchée qui permet de le faire tourner cette ROM de Titanium sur VTI. Les patchs se comptent par milliers et sont en grande partie fait de façon automatique, donc l'AMS plante un peu parfois, mais ce n'est pas gênant. Le package contient un document (assez confus, il n'était pas fait pour être distribué si tôt) qui décrit les patches effectués, ainsi qu'un certains nombres d'informations intéressantes sur la Titanium et l'AMS 3.00. Je l'ai envoyé récemment à quelques développeurs qui avaient des besoins spécifiques de tests de programmes sur Titanium. La Titanium n'a pas trop de particularités, à part un ROM_BASE à 0x800000, les spécificités sur les ghost spaces de la RAM, et les protections d'exécution comme décrits plusieurs fois sur le forum de la TICT. Au niveau des ports i/o, de nouveaux sont apparus à 0x700010 concernant la gestion de l'horloge et de l'USB (cf le document du package). Et L'auto-int 3 est maintenant liée à l'USB. Les ports relatifs à l'horloge sont assez clairs, mais je n'ai pas encore beaucoup regardé ceux de l'USB. Ils semblent très similaires à ceux décrits par Dan Englander sur le forum de Detached Solutions. Dan m'a dit qu'il n'avait pas plus d'infos dessus. Il serait interessant de comprendre en détail le fonctionnement de ces ports, mais ça à l'air assez complexe. Le package est disponible ici : http://www.ifrance.com/ti68k/titanium-info.zip . Je préférerais que le lien / le package ne soient pas redistribués. A propos d'émulation, il serait intéressant de gérer les ports décrits ici : http://www.ticalc.org/pub/text/calcinfo/7000xx_ports.zip , ainsi que tout ce qui concerne les protections d'exécution et leur faille correctement. Je suis très intéressé par TiEmu. Malheureusement le débogueur de la dernière version était inutilisable sous Windows XP, beaucoup trop lent... Je n'ai pas encore testé sous Linux. Je suis prêt à te donner tout autres renseignements dont tu aurais besoin. ++ Olivier Armandtiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/mail2.txt000066400000000000000000000120031220314353500231600ustar00rootroot00000000000000> > J'ai aussi une version au format .89u (venant du CD donné avec la > > Titanium), > > mais elle est identique, avec le header et la taille correspondants. > > Je peux l'avoir pour tester ma libtifiles (import/export de tib et autres > .89u) ? Je viens de l'uploader ici : http://www.ifrance.com/ti68k/TI89Titanium_OS300.zip > je crois savoir qu'il faut un VTi modifié par Muchembled pour faire > tourner la V200. Si oui, est-ce que tu sais quelles modifs il a effectué > dessus ? JM a perdu les sources après un crash de disque je crois. En fait il y a au moins deux versions de VTI de JM (j'en ai une de février 2001, et une autre de mai 2001). Je ne sais pas si tu en as une des deux, mais celle de février (qui fait maintenant 1878 ko) ajoute par rapport à la dernière version de Rusty Wagner, dans le debugger : - un menu déroulant permettant d'atteindre n'importe quelle ROM Call, dont la liste de noms peut être mise à jour en éditant un fichier externe - un compteur de cycles - un menu "set program entry breakpoint" qui marche sur plus de versions d'AMS - des boutons pour modifier les flags (Z, N, C, V, etc.) et le masque d'interruption de SR plus facilement - une émulation du mode Trace du 68000 - une émulation du ghost de la Flash sur 92+, qui apparait entre 0x200000 et 0x400000 (image identique de 0x400000-0x600000) - peut être un tas d'autres trucs, mais qui n'apparaissent pas de façon évidente La version de mai 2001 ajoute un menu "Action on breakpoint : Break" ou "Save state image". Je ne vois pas trop son interêt, mais c'était peut être utile pour JM pour ses propres programmes. Et "set data breakpoint" plante dans cette version. > J'ai retesté mon support v200 et il plante toujours sur une ILLEGAL > instruction. Apparemment, après un RTS, il part n'importe où en RAM ! > C'est pas forcément un bug puisque j'ai constaté que ce le faisait aussi > au boot (routine spéciale ?). > Dans ce cas, je pense qu'il dépile un niveau de trop mais je vois pas pkwoi. Bizarre comme problème... Je veux bien t'aider à débugger ça si tu veux. > Je misais éventuellement sur les modifs de JM pour savoir si j'étais passé à coté de qqchose. Non, je ne pense pas que ça ait quelque chose à voir. La ROM de V200 que j'ai patché à besoin de l'émulation du ghost de la Flash pour permettre l'exécution et la lecture dans la zone 0x200000 - 0x400000 comme le ferait une V200 réelle. VTI place la ROM à 0x400000, donc le ghost space est nécessaire. > < Patcher en bra.l (->0x6000001A) pour que ce ne soit jamais un ghost.>> > Dois-je comprendre que si TiEmu n'implémente pas les ghost spaces, une ROM > de V200 ne marchera pas ? Ah oui, en effet, j'avais oublié ce problème. Cette protection de TI est peut-être pour éviter que quelqu'un essaie de faire tourner un AMS de V200 sur 92+, où le ghost space existe effectivement. Si jamais ce bout de code détecte que 0x400000+n est identique à 0x200000+n, il lance le boot. Donc ce qui devrait se passer sur TiEmu est un simple lancement du boot, pas un ILLEGAL, c'est bizarre... Il faut de toute manière effectivement gérer le ghost space pour que ça marche sous TiEmu. > Question de terminologie: qu'entends-tu par ghost space ? Pour moi, > électronicien, il s'agit d'une zone mémoire qui n'existe pas physiquement > mais qui est un mirroir d'une zone réelle. C'est très souvent le cas > lorsqu'on fait un décodage d'addresse incomplet. Oui, c'est bien cela, et c'est bien aussi dû au décodage d'adresses (ROM et RAM) sur TI68k. Le "reflet" est identique à l'"original" en lecture, mais il a des comportements différents en ce qui concerne l'exécution, et peut-être l'écriture pour la FlashROM (je n'ai pas testé). Ceci est notamment dû aux ingénieurs de TI qui ne font pas attention à ces reflets en programmant leur puces de protection. On peut ainsi contourner sans problème la protection d'exécution en FlashROM sur 92+ (qui m'a permis de faire "Pedrhum", un projet de cohabitation de AMS et de PedroM, l'OS alternatif de PpHd - d'autres techniques sont utilisées pour les autres modèles de calc. Le shell CS de Flanker utilise lui cette faille que j'ai trouvée pour s'exécuter en Flash). Et ceci a permis à JM de découvrir la fameuse faille de la protection d'exécution du ghost space de la RAM (utilisée avec enter_ghost_space / EXECUTE_IN_GHOST_SPACE de TIGCC), et à Kevin Kofler d'écrire H220xTSR qui permet l'installation de TSR. Ces comportements particuliers ne sont pas nécessaires pour une émulation simple comme le fait VTI (tant que les protections ne sont pas elles aussi émulées), mais pourraient être interessants pour une émulation très réaliste. > Si l'envie t'en prends, maille-moi de façon à ce que je te fournisse la > dernière version. Je fais de temps en temps des alpha releases sur le site > mais elles sont pas forcément intéressantes. Oui, je serais interessé. Je suis prêt à faire des tests sous Windows XP et/ou Linux. ++ Olivier Armandtiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/mail3.txt000066400000000000000000000044311220314353500231670ustar00rootroot00000000000000Salut ! > En parlant de boot, je me suis tjs demandé comment il fonctionnait. En > effet, la RAM est en 0 et le boot aussi en 0. > En tant qu'électronicien, je suppose que la calc boote par défaut sur le > premier secteur de la FLASH. Ensuite, je pense qu'elle copie la table de > vecteurs en RAM et ptet quelques routines (trampoline). Puis, par une > bascule, elle swappe la FLASH et la RAM pour que la RAM se retrouve en 0 > et la FLASH en ROM_base. > > C'est une technique extrêment utilisée en électronique qd on souhaite > faire du développement. Par ex: on a un moniteur en EPROM qui vient > charger du code en RAM, on fait un RESET et la RAM est intervertit avec > l'EPROM. On exécute maintenant le code en RAM. Au RESET, suivant, la > situation s'inverse, on repart sur le moniteur. Au signal RESET du processeur, le décodeur d'adresse map la FlashROM à 0x0 le temps que le processeur initialise SR et PC avec ce qu'il trouve dans 0x0 et 0x4 (qui sont donc en fait ROM_base + 0 et ROM_base + 4). Puis le décodeur replace immédiatement la FlashROM à ROM_base, et la RAM à 0x0 (je ne sais pas comment il détermine ce moment, mais c'est en gros ce que mon prof de structure des ordinateurs m'avait expliqué quand je lui avait posé cette question). Ainsi la RAM et la FlashROM se trouvent bien à leurs adresses finales lorsque la première instruction du boot est exécutée. Le swap n'est pas fait par le boot lui-même, il n'en a même pas conscience. Et donc pas besoin de trampoline non plus. Puis très grossièrement : Après toutes les tests et initialisations de l'hardware et des vecteurs d'interruption, le boot regarde si (CertificateMemory + 2).w est nul. Si c'est le cas, alors un AMS devrait bien être installé, et le boot recherche le point d'entrée du code du reset et y saute. Si (CertificateMemory + 2).w est non nul (ce qui peut être le cas si un transfert d'AMS a été interrompu par exemple, puisque ce flag n'est remis à 0 qu'une fois l'AMS bien installé), le boot continue son exécution (et affiche 'press I to install product code' pour permettre une réception d'AMS). En plus du test de CertificateMemory + 2, la combinaison Apps+ON est aussi vérifée, et lance la suite du boot de la même manière que si CertificateMemory + 2 était non nul. ++ Olivier Armandtiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/mail4.txt000066400000000000000000000020131220314353500231620ustar00rootroot00000000000000 > j'aurais quelques questions: > - est-ce que l'implémentation de la protection dans TiEmu est inutile, > utile, un plus ou indispensable ? C'est utile pour déboguer des bogues qui y sont liés, mais pas indispensable. > - qu'est-ce que les ghost spaces ? Est-ce la RAM miroitée à partir de > 0x20000 ? Oui: 0x20000 et multiples jusqu'à 0x1e0000 sur TI-92. 0x40000 et multiples jusqu'à 0x1c0000 sur TI-92 II, TI-92+, TI-89, Voyage 200. 0x200000 et 0x400000 sur TI-89 Titanium. (Le reste, c'est-à-dire 0x40000-0x1fffff, est apparemment inutilisé.) Sur la TI-89 Titanium (HW3), on ne peut rien exécuter à ces endroits. Sur HW2, on peut exécuter du code à ces endroits si et seulement si on peut l'exécuter aussi à 0x3f000-0x3ffff. Sur HW1, on peut exécuter ce qu'on veut à 0-0x1bffff, mais il y a des protections bizarres sur 0x1c0000-1x1fffff (cf. J89hw.txt pour les détails). L'utilisation de ces espaces fantôme permet aussi de passer outre les protections qui activent l'AI7. Kevin Kofler tiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/mail5.txt000066400000000000000000000046601220314353500231750ustar00rootroot00000000000000 Re-salut ! Pour toute cette gestion de l'horloge, en résumé (tout ça est dans ma doc sur les nouvelles ROM Calls de l'AMS 2.07 mais éparpillé un peu partout) : L'AMS n'utilise que l'auto-int 3 pour gérer son horloge. Celle-ci se déclenche exactement toute les secondes de façon très préçise. L'AMS incrémente un timer interne (que j'ai appelé OneSecondTimer) stocké en RAM. Puis tout le reste de l'AMS se base dessus pour gérer la conversion en date/heure sous forme de chaîne, gérer les fuseaux horaires, etc. L'auto-int3 est contrôlée par le bit 2 de 0x600015, qui doit être armé pour qu'elle se déclenche. La ROM Call ClockOn fait : si pas HW1, bset #2,$600015. La ROM Call IsClockOn fait un btst #2,$600015 Quand la calculatrice est éteinte, $600005 est fixé correctement par le trap #4 pour qu'elle soit aussi réveillée par l'auto-int3. OneSecondTimer est ainsi aussi incrémenté même pendant que la calc dort. $700014 n'est *jamais* utilisé par l'AMS ou le boot. Je découvert son fonctionnement un peu par hasard en bidouillant ces ports inconnus, et en plusieurs jours car c'était pas facile de se synchroniser avec une incrémentation aussi lente qu'on ne connait pas. Donc pour une bonne émulation de l'horloge, il suffit que $600015:2 puisse être fixé et lu, et contrôle correctement l'auto-int3. $600005 doit aussi être bien émulé. $700014 n'est pas vraiment nécessaire par contre. Et il faut que la calc soit détectée comme n'étant pas une HW1. Je n'ai pas regardé pour TiEmu, mais normalement un test d'HW par l'AMS sur une ROM avec boot retourne la bonne version correspondant au boot, et sur une ROM sans boot retourne "HW2" (dû aux valeurs aléatoires à la place du boot : l'AMS fournit alors un HWParmBlock de remplacement). Par contre sur Titanium, c'est nettement plus compliqué :) Toute l'horloge est gérée en hardware sans l'auto-int3, et donc sans utiliser $600015 ou $600005. Plusieurs des nouveaux ports à $7100xx sont utilisés. C'est assez complexe, le mieux est que tu regardes la partie "Horloge" de ma doc de mon package sur la Titanium. > il utilise le timer pour le comptage des > secondes (référence à court terme) et le décompte (référence à long terme) > pour venir se recaler dessus de façon périodique. De façon hardware ? Par quel matériel le décompte lent est-il fait ? (pour l'AI3, c'est avec l'OSC2). En tout cas ce timer ($700014) ne semble servir à rien actuellement. ++ Oliviertiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/mail6.txt000066400000000000000000000061611220314353500231740ustar00rootroot00000000000000Salut, > 1°) Sur les zones 'read protected', quelle valeur est lue ? 0x14141414 Je ne sais pas si cette valeur est toujours la même. Les zones de la ROM protégées en lecture peuvent être lues uniquement si la "Protection" (celle qui protége les écritures en flashROM, les lectures / écritures de certains ports I/O, etc.) est désactivée. Pour TIEmu, tu peux faire retourner toujours la même chose quand la Protection est active, ça ne gêne pas. Par contre ce qui serait intéressant que l'hexeditor permette toujours de lire les zones protégées quelque que soit l'état de la protection, sinon déboguer des tests utilisant les certificats devient infaisable. > * The memory at $218000-$219FFF is read protected. (?) C'est ce que Johan dit, et je l'ai vérifé sur une vraie calc. Je ne comprend pas pourquoi TI à implémenter ça. L'OS alternatif PedroM de PpHd doit être coupé en 2 à cause de ça, et l'AMS contient des 0xFF sur toute la zone puisqu'elle est inutilisable. > 2°) Sinon, aurais-tu un éditeur hexa on calc à me conseiller pour viewer > la RAM/ROM d'une TI89 ? Ca dépend de ce que tu veux en faire, mais l'application flash Command Post Plus de Greg Dietsche est pas mal un contient plusieurs outils qui vont au delà de ça. tthdex de la TICT est un programme assembleur équivalent, mais il est moins pratique pour regarder n'importe quelle zone de la mémoire je crois. Personnellement j'utilise DB92 qui est un débogueur complet, avec éditeur hexa (d'ailleurs il y a plusieurs détails très simples de ce programme qui serait pas mal à implémenter dans TiEmu, je peux te faire une liste détaillée si tu veux). La toute dernière version de DB92 est disponible ici : http://membres.lycos.fr/hwti/DB92_NOSTUB_ALPHA_041test.rar > qu'en est-il des ghost spaces ? J'ai implémenté le support de la Titanium > et j'ai le meme pb qu'avec la V200: illegal instruction. Comme l'AMS n'utilise pas les ghost spaces, le problème ne doit pas venir de là de toute façon. Les 89/92+/V200 ont des images de la zone 0x0-0x3FFFF en 0x40000-0x7FFFF, 0x80000-0xBFFFF, etc. jusqu'à 0x200000. La Titanium n'a aucun de ces ghost spaces. Les siens sont des images de 0x0-0x1FFFFF en 0x200000 et 0x400000, sachant que la zone 0x40000-0x1FFFFF retourne des valeurs aléatoires en lecture je crois. Il est possible que ces ghost disparaissent dans des futures versions de la Titanium, et/ou que de la RAM soit ajoutée, d'après certaines routines de l'AMS. En ce qui concerne la protection d'exécution en RAM, la zone 0x0-0x3FFFF est contrôlée de la même manière que sur 89/92+/V200. Je crois que personne ne sait actuellement comment l'exécution dans les ghost spaces à 0x200000 et 0x400000 est contrôlée sur Titanium (sur 89/92+/V200, l'exécution dans les ghost spaces à 0x40000, 0x80000, etc. peut être autorisée par le bit 7 du port 0x70006). Peut-être que l'exécution est totalement bannie dans ces ghost spaces de la Titanium. > J'ai pas mal arrangé les choses depuis la dernière fois. Un build est > dispo sur le site (la Linux est un peu - récente) si t'as envie > d'essayer... Ok je vais tester. ++, bonne continuation, Oliviertiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/mail7.txt000066400000000000000000000175711220314353500232040ustar00rootroot00000000000000> PS: soit pas étonné si je réponds pas ce WE because LAN party + barbecue + > lac ;-) Ok, bah j'espère que c'était chouette :) J'ai testé cette nouvelle version, c'est vraiment génial :) Il n'y a plus un seul ralentissement, ni de CPU consommé pour rien. J'ai enfin pu tester le debugger en profondeur. Voilà une liste de remarques assez grosse, j'espère qu'elle pourra te donner des idées et premettre de corriger des bugs. Certaines idées de trucs à ajouter sont indispensables je pense, d'autres permettrait de vraiment beaucoup accélerer le travail le debug sous TiEmu. Les bugs : * Pour le problème du crash avec la Titanium : il vient de la routine décrite dans le commentaire '[1]' de mon titanium-info.txt, qui détermine dynamiquement la taille de la RAM disponible. Les blocs de 64ko de la RAM sont testés un à un pour voir s'ils sont valides (écriture puis lecture). Comme TiEmu émule pour l'instant des ghost spaces à 0x40000, 0x80000, etc. qui n'existent pas, ces blocs semblent valides et l'AMS croit finalement avoir affaire à une RAM de 1Mo (tu as fait arrêter les reflets à 0x100000 on dirait. Pour l'émulation des 89 standard/92+/V200, il faudrait les faire arrêter à 0x200000 en fait). Puis plus loin dans le code du reset, une boucle efface un grosse partie de la RAM en utilisant la taille calculée par la routine précédente : les reflets sont aussi effacés, et donc les vecteurs à 0x0+n le sont. Les utilisations des vecteurs qui suivent feront ensuite planter l'AMS. Pour corriger le problème, il suffit d'empêcher l'écriture dans les ghost spaces, qui n'existent pas sur Titanium. Il y a peut-être d'autres problèmes pour cette émulation de la Titanium, mais il faut déjà corriger ça pour y voir plus clair. * Lorsqu'un code breakpoint a été touché, impossible de faire un step ou un step over ensuite (TiEmu crash). * Si on ferme une fenêtre du débugger, les choix cochés dans le menu Windows de la fenêtre 'Code/Source' ne correspondent plus car ils ne sont pas mis à jour. * Ctrl+F dans la fenêtre Memory fait apparaître une petite zone de texte éditable, je ne vois pas à quoi elle sert. * Au démarrage, la fenêtre Memory a deux onglets commençant à l'adresse 0, je ne sais pas si c'est normal (un seul suffirait). * lea $4C00,a0 est déssasemblé en lea tios::CALC_TI89,A0 ? (à 0x8123B4 sur Titanium) Pourquoi pas LCD_MEM ? * L'onglet visible de la fenêtre memory n'est pas rafraîchit après un 'Run to cursor' ou un 'step' par exemple, il faut changer d'onglet pour forcer le rafraîchissement. * Un 'step over' sur une instruction 'bra' doit sûrement mettre un breakpoint temporaire juste derrière l'instruction. Il faudrait plutôt qu'un 'step over' se comporte de la même façon qu'un 'step' sur cette instruction. Pareil pour un 'jmp' (je n'ai pas regardé s'il y avait aussi le problème). * Impossible de quitter TiEmu quand des breakpoints sont à chaque fois touchés : TiEmu ne peut pas être fermé tant que les fenêtres du débugger ne sont pas fermées, et les breakpoints réouvrent immédiatement les fenêtres du débugger. Les trucs qui pourraient être modifiés : * Le scroll des instructions vers le bas dans la fenêtre Code/Source : lors du passage à l'écran d'après, on se perd (l'instruction sélectionnée devient la première). Peut-être que seulement un demi-écran pourrait être scrollé ?. Pareil pour la fenêtre Memory. * Les fenêtres du débogueur : il faudrait pouvoir toutes les réduire / restaurer d'un coup, lorsque la fenêtre de l'image de la calc est réduite ou restaurée par exemple. Et est-ce que ce serait possible qu'une seule fenêtre (ou 2 : une pour la calc et une pour le debugger) apparaisse dans la barre des tâches ? Parce que là ça fait pas mal de monde et ce n'est pas très utile. * Lors d'un set breakpoint dans la fenêtre Code / source, la sélection revient immédiatement à PC. Ce serait mieux qu'elle se place là où on a placé / retiré le breakpoint, ça provoque un saut un peu gênant actuellement. * Il est assez difficile de savoir exactement ou on est dans la fenêtre Memory avec des lignes de 16 octets. Il faudrait par exemple un affichage quelque part de l'adresse de l'octet selectionné, sinon on se retrouve la plupart du temps à recompter depuis le début de la ligne. * L'adresse affichée dans la fenêtre Memory comme titre d'un onglet devrait être plutôt l'adresse du premier octet affiché (pour l'instant elle reste constante), sinon elle ne correspond plus à rien quand on scroll. * La fenêtre Code/Source est un peu trop petite au démarrage de TiEmu, 2 instructions sont cachées, la fenêtre doit être à chaque fois réagrandie. * Lorsque l'on fait un 'Run to cursor', tout reste immobile et on n'a pas l'impression qu'il a été exécuté : en fait l'instruction courante et la sélection sont confondues, et seule la couleur de la sélection apparaît. Il faudrait peut-être une troisième couleur lorsque les deux sont confondues, comme le fait VTI. Les trucs qui pourraient être ajoutés (sachant que les premiers sont les plus indispensables) : * Une fenêtre ou une zone dans une fenêtre affichant la pile manque vraiment (un hexdump depuis a7). * Une fonction de recherche dans la fenêtre Memory est indispensable. L'idéal est la fonction fournie par DB92 : on tape une séquence d'octets en hexa, ou une séquence de caractères ASCII, aussi grande que l'on veut. VTI lui ne permet que de chercher des octets/mots/long mots, alignés pour les deux derniers en plus, c'est dommage. Il faudrait aussi une fonction (et son raccourci clavier) 'search next' pour continuer la recherche, comme sous DB92. * Il manque vraiment "goto address" comme sous VTI dans la fenêtre Memory. * Un "View memory" dans le menu clic-droit de Code / Source serait pratique, qui ouvrirait un onglet dans la fenêtre Memory avec pour adresse l'instruction cliquée (VTI ne l'a pas non plus, mais DB92 l'a). De la même manière une fonction "view disassembly" dans Memory qui ferait un "goto address" dans la fenêtre Code/Source vers l'adresse sélectionnée serait très pratique (la version de VTI de JM l'a, je ne sais plus pour la version originale). * Dans la fenêtre Memory, ce serait bien de pouvoir modifier une trainée d'octets successifs comme sous DB92. Sous DB92, on passe en mode édition en appuyant sur 'E', puis on tape les octets digit par digit insérés un à un avec le curseur qui avance, comme un éditeur de texte. Je ne sais pas si c'est faisable avec les widgets GTK utilisés actuellement. * Des toggle buttons seraient pratiques plutôt que du texte à éditer, à la manière des versions de VTI de Julien Muchembled, pour modifier les états des bits de SR dans la fenêtre Registers. * Deux trucs très simples qui serait très pratique : dans la fenêtre Registers, un menu clic droit sur les registres d'adresses qui permettrait d'ouvrir un nouvel onglet dans la fenêtre Memory depuis l'adresse pointée par le registre cliqué, ou de faire un 'goto address' dans la fenêtre Code/Source vers cette adresse pointée. * Un truc peut-être un peu compliqué à réaliser : une fenêtre (voir dans la même fenêtre que PC log), similaire à Trace, qui contiendrait une call stack : les adresses des derniers jsr / bsr / FLine RomCalls / trap exécutés, et supprimés de la liste lors des rts / rte. Il faudrait faire attention au interruptions (pas de log de la call stack), et aux retours de fonction qui peuvent être fait à la main par certains programmes en lisant le contenu de la pile (dans ces cas là, le depilage de la call stack pourra être mis à jour au prochain retour de fonction effectué correctement, en regardant sur la pile à quel appelle rts / rte correspond). Je regarde souvent les appels à la main sous VTI en lisant le contenu de la pile, c'est extrêment difficile de retrouver quelle sont les adresses de retour. Je suis très content de ce que ça donne actuellement, TiEmu est très prometteur. ++ Olivier Armandtiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/mail8.txt000066400000000000000000000116371220314353500232020ustar00rootroot00000000000000 Salut ! L'AMS plante en bouclant au milieu d'une écriture en Flash invalide. Elle est effectuée dans la fonction du trap #11 qui nettoie la Flash au reset : la limite supérieure de la Flash (FlashMemoryEnd), qui est calculée dynamiquement uniquement sur Titanium, a été mal calculée, et l'écriture essaie d'aller trop loin en mémoire. Le calcul dynamique de la taille de la FlashROM est effectué avant par une autre fonction du trap #11, ajoutée spécialement sur l'AMS 3.00 de la Titanium. J'ai documenté ça dans ma doc sur la Titanium (commentaire 2). Il semble que des futurs modèles pourrait avoir 8Mo de Flash, ou alors ce serait pour garder une compatibilité du code avec la TI-89, je ne sais pas trop. En tout cas voilà ce qu'il faut que tu implémentes sur TiEmu pour éviter le problème : des commandes sont envoyées à la mémoire Flash pour déterminer sur quel modèle on se trouve, voilà le bout de code de l'AMS correspondant : lea CertMem,a1 ; Any valid address within the device (= the EEPROM chip). Sur TI, semble devoir être CertMem absolument (?) move.w #$9090,(a1) ; Read Identifier Codes move.w ROM_BASE,d1 ; Identifier code address + 0 -> Manufacturer Code move.w ROM_BASE+2,d2 ; Bottom parameter device code move.l #$400000,d0 cmp.w #$89,d1 ; Manufacturer Code beq Ret cmp.w #$B5,d2 ; Bottom parameter device code beq Ret move.l #$800000,d0 Ret: move.w #$5050,(a1) ; Clear Status Register move.w #$FFFF,(a1) ; Read Array move.l d0,d1 addi.l #ROM_BASE,d1 move.l d1,a0 Il faut donc que lorsque la commande 0x9090 est envoyée à ROM_BASE + 0x10000, le manufacturer code retourné à la lecture de ROM_BASE.w soit 0x89 (le bottom parameter device code, $B5 n'a pas besoin d'être bon puisque le test fait est un OU, mais tu peux l'implémenter si tu veux). Tu peux avoir plus de détail sur ces commandes en lisant la datasheet de la FlashROM de la V200, car le même type semble être utilisé sur la Titanium. Note que le manufacturer code de la V200 est 0xB0. Je ne connais pas son bottom parameter device code. Il semble y avoir un autre problème plus loin dans le code du reset, mais comme à chaque que la calc est resetée je dois rentrer moi-même à la main les variables de l'AMS mal fixées à cause du bug précédent, et que TiEmu crash bizarrement parfois lorsque j'appuie sur 'stop' du débogueur alors que on est en mode 'run', j'ai du mal à voir le problème. Ce serait plus simple que du fasse un nouveau build avec ce premier problème corrigé. Quelques autres remarques : * La fenêtre Memory n'est pas toujours rafraîchie. Il y a le bouton refresh, mais on ne pense pas toujours à l'utiliser. Elle n'est pas rafraîchie notamment lorsque un breakpoint est touché, ce serait possible de forcer le rafraîchissement à ce moment là ? * Pour le problème de scroll d'instructions gênant dont je te parlais : va n'importe où dans l'AMS où il y a des instructions valides, scroll instruction par instruction vers le bas, tu verras que sur certaines instructions le scroll est effectué en haut, mais pas en bas de la fenêtre (la dernière instruction reste la même). * Quelques idées pas forcément très urgentes mais qui seraient intéressantes à implémenter : - L'AMS utilise le registre a6 comme frame pointer, et accède relativement à ce registre aux variables locales créées et aux paramètres de la fonction exécutée. Le problème est qu'avec des instructions de type cmp.w -$54(a6),d0, on voudrait savoir ce qu'il y a à la variable à l'offset $54 : il faut alors sortir une calculatrice hexa, calculer l'adresse réelle et aller dans la fenêtre Memory trouver la valeur. L'idéal serait d'avoir dans la même fenêtre que stack frame, un memory dumper qui ressemble à celui de la pile, mais avec les offsets relatifs au registre a6 plutôt que des adresses réelles (offsets positifs et négatifs pour pouvoir regarder à la fois les variables locales et les paramètres de la fonction). Par exemple : -6 0084 -4 5600 -2 0000 0 0090 2 4924 4 2828 6 0000 Il faudrait que la fenêtre puisse être scrollable à l'infini dans les deux sens, on ne peut pas savoir la quantité de variables que la fonction peut utiliser. Si c'est trop compliquer à réaliser, écrire à côté de l'instruction l'adresse correspondant à -$54(a6) dans l'exemple précédent suffirait pour pouvoir se débrouiller, mais serait beaucoup moins bien. - Un système de breakpoint temporaire sur instruction, comme sous GDB, serait pratique (breakpoint qui disparaît la première fois qu'il est touché) : il m'arrive souvent de placer un breakpoint après un bsr ou un jsr de l'AMS avant de faire un step into dans la sous-routine au cas où elle serait trop profonde et que j'abandonne le déboguage à quelques niveaux d'appels plus profond. Je fais un run et mon breakpoint est touché; je l'enlève et je continue. Un breakpoint temporaire éviterait d'avoir à l'enlever à chaque fois. ++, bonne continuation, -- Olivier tiemu-3.03-nogdb+dfsg/docs/mails/Olivier Armand/titanium-info.txt000066400000000000000000001075071220314353500247550ustar00rootroot00000000000000================================================= == titanium-info.txt== Notes sur l'AMS 3.00 de la TI-89 Titanium - Olivier Armand - ola dot e-ml at wanadoo dot fr Création : 8 juin 2004 Dernière maj : 30 juin 2004 * Ne pas redistribuer * Do not redistribute * ================================================= Toutes les adresses sont comptées avec ROM_BASE à $200000 au lieu de $800000 pour plus de facilité. ======== Adresses ======== ROM de 0 à 0x156eb2 inclu -> Comme si allait de 0x212000 à 0x368eB2 inclus. Le boot de la Titanium est à 0x800000. Les certificats sont à 0x810000, etc... ======================================================= Patches effectués pour obtenir titanic_patched_orig.rom ======================================================= titanic_patched_orig.rom pourra ensuite passer par le patcheur automatique patchanic. - La ROM fait 2Mo : une partie de la mémoire réservée aux Flash Apps / archives est coupée dans l'image de Samuel (et on lui enlève un octet) - VTI regarde à Boot+5 pour avoir le type de calc (89 ou 92+). Patcher en 0x20.b pour qu'il émule une 92+. - 0x210000 (0x10000) mis à 0xFFF8 pour éviter d'avoir un Corrupt Certificate Memory au boot. 0x210002.w est mis à 0 pour passer à l'AMS en cas de reset (voir la partie BOOT plus loin). Pour exécuter le boot sans passer par l'AMS, mettre quelque chose différent de 0 (mais attention, les nouveaux ports i/o le feront boucler indéfiniment dans l'appel à 20041A [qui lance le code principal du boot. Semble ne pas y voir de problème si on boot avec vecteur $200100 et d0.l != 0 ??? (param du boot)] Maj : des fois se lance, des fois non... Ou simplement un ini de ports pose problème avec l'écran ?). - Fonction renvoyant la taille de la RAM renvoie maintenant 256ko (cf commentaire [1]). On patche cette fonction (move.w #$8AA,D0; trap #0) en remplaçant les deux movea.l #$200000,a3 par #$40000,a3 (il testera ainsi un ghost existant vraiment). [[[- Pour arriver aux routines cherchant les zones fin AMS/début Apps/début Archives/fin Flash (patch similaire à celui pour la V200) : Au reset, dans la première série des bsr, on rentre dans le dernier à 0x212488 On rentre dans le jsr après le trap #A. On rentre dans la fonction 6 du trap #11, on arrive à 0x24D418, c'est ici.]]] => Pas besoin de patch pour Titanium (lecture d'une variable pour la fin de la flash sur Titanium, qui est correcte, cf [2]) [[[- Routine à 0x24D6DC placée juste après cette fonction du trap #11 qui a pour rôle d'obtenir le début de la zone Archive (équivalent au filtre HW1 / V200) : il reste un filtre HW1 pour les 89 simples sûrement (mais ROM_BASE + $190000, ici $990000 (non patché par patchanic)) => Xpand n'est plus nécessaire ! Et il n'y rien à patcher. - Rom Call init_unit_system (303D3CC) : utilise une table d'adresses qui ne fait que 2 adresses... (séparées par 4 octets). patchanic ne peut pas fonctionner, on patche à la main. L'adresse de la table est placée sur a2 quatre instructions plus loin (c'est 30D2C8). - Suppression des Flash Apps de l'image de la ROM de Samuel qui semblent faire écrire à $400000 (fonction 7 du trap #11 : nettoyage des apps). - Une adresse absolue en mémoire au milieu de nul part :( à 2DB766. - Encore une table de 2 adresses, séparées par 4 octets : 34514C. [[[- Une table de 3 adresses non patchées. patchanic ne peut pas se permettre de détecter des tables de si petites tables, sinon n'importe quoi est patché. Corrigé à la main : 306C8E (les adresses sont séparées chacunes par 4 octets). => maj : patchanic est normalement maintenant capable de les detecter (il y en a plusieurs de ce type). - Une table de 2 adresses séparées par 4 octets, décrivant les méthodes d'une Flash App interne (Self Test) : 2245A8. Les adresses des méthodes de toutes les Flash Apps internes sont ainsi patchées à la main : on recherche "{S=" (magic number) et on patche les adresses qui se trouvent pas très loin plus bas, juste avant le nom de l'App (sachant que pour la plupart, patchanic fera le travail). TODO Automatiser ceci, c'est faisable. - Une adresse isolée pour l'apps de configuration de l'horloge : 3535B2 [[- Des adresses isolées pour le Var-Link : 35693A, 356946, 356952, 356A1A 35696A, 3569B0 => maj : patchanic gère normalement ce patch automatiquement - Le pointeur de la table des RC qui est un peu isolé du reste : 212150 - cmpi.w #$FFF8,ROM_BASE+$10000 du boot : la forme de l'instruction ne peut pas être patchée par patchanic. Il semble n'y avoir cette instruction qu'ici dans la ROM. 2008B0. - Quelques adresses-variables dans la table des RC qui ne peuvent pas être patchées par patchanic (adresse trop élevée) (ce patch n'est pas vraiment indispensable pour l'exécution de l'AMS) : RC 43D (FlashMemoryEnd) et RC 43C (?HW1ArchiveMemoryBeginning) : 23D182 et 23D186. - Deux adresses isolées à DB778 séparées de 4 octets. - Deux adresses isolées dans le boot : $200100. Pour detecter des patchs manquants : brktpt avec VTI sur 800000-A00000. Prendre la première ligne (même si la deuxième est sélectionnée). =================================== Commentaires sur la ROM (numérotés) =================================== *** !!!Ghost dangereux???!!! Eviter de l'utiliser. [1] 2123e8: Pour effacer la RAM, au lieu d'avoir une adresse en dure comme sur 89 ($3FFF4) pour la fin de la RAM, celle-ci est obtenue avec la fonction $22224C [pas une RC] (puis -$C pour avoir l'équivalent de $3FFF4). ALGO: Cette fonction prend une adresse sur la pile (ici NULL), la met dans a1 et fait : move.w #$8AA,D0; trap #0; Le trap #0 dispatch la fonction : regparm (a1) = res (pointeur) if (res) *res = NULL; Si les 1024 premiers octets de la RAM sont égaux à 0x200000+x, 200000, sinon 600000 -> a3. *10000 = C5A3C5A3 .... -> teste si on peut relire ca après et boucle. La boucle fait: A0=10000 A2=0 D0=10000 Bcl: Test (A0) Si pas ok Si A2 = 0 A2 = A0 Si ok Si A2 != 0 Si res != NULL *res = A1 Quitte Sinon D0+=10000 A0+=10000 Bcl tant que A0 patché. HACK: Faire retourner une valeur inférieure à la fonction semble être possible et ne pas gêner ensuite l'AMS. Ceci permettrait de se reserver de la RAM à la fin de celle-ci, qui ne sera jamais touchée par l'AMS. Il suffit de sauter de sauter après l'appel de la fonction, ou de hooker le trap #0 si ça aide. --------------------------- *** !!!Attention à l'ancien FlashMemoryEnd qui ne sera plus valide. [2] 0x21246C : appel au reset de la fonction à 213028. La fonction n'est pas une RC. Elle appel la fonction $14 du trap #11 (nouvelle fonction). Copie une fonction en RAM. Les commandes pour la FlashROM semblent être les mêmes que celles pour la V200 (Sharp LH28F320BFHE-PBTLZ2), et sont aussi compatibles avec les 89/92+. Cf page 7 de la datasheet de la Flash de la V200. ALGO: (en ROM à 21303A) lea CertMem,a1 ; Any valid address within the device (= the Flash EEPROM chip) ; Sur TI, semble devoir être CertMem absolument (?) [même chose sur V200] move.w #$9090,(a1) ; Read Identifier Codes move.w ROM_BASE,d1 ; Identifier code address + 0 -> Manufacturer Code move.w ROM_BASE+2,d2 ; Bottom parameter device code move.l #$400000,d0 cmp.w #$89,d1 ; Manufacturer Code (celui de la V200 est $B0) beq Ret cmp.w #$B5,d2 ; Bottom parameter device code beq Ret move.l #$800000,d0 Ret: move.w #$5050,(a1) ; Clear Status Register move.w #$FFFF,(a1) ; Read Array move.l d0,d1 addi.l #ROM_BASE,d1 move.l d1,a0 quit Bottom parameter device (cf p.16 de la datasheet et shéma p.6) : en configuration bottom parameter pour le partitionnement, le plane de paramètres est à l'adresse la plus basse de la puce. Code fait : si FlashROM pas reconnue (ni manufacturer code, ni device code), retourne ROM_BASE + ROM_BASE, sinon retourne ROM_BASE + 400000 (ce doit être le cas sur les Titanium actuelles). RESUME: trap #11:$14 retourne dans a0 FlashMemoryEnd, et dans d0.l FlashMemorySize, calculés dynamiquement en fonction de la puce. Certains modèles pourraient donc avoir 8Mo de Flash au lieu de 4Mo ? Ou permet simplement d'être compatible avec la TI89 (mais le fait que ROM_BASE + ROM_BASE tombe bien comme il faut sur 92+ semble un peut bizarre...) Attention, la variable-ROM Call FlashMemoryEnd qui existait déjà est elle fixe : ROM_BASE + $400000. d0 est stocké au reset dans une variable interne ($5B1A). Il est aussi shifté à droite de 16 bits et stocké dans $5B1E. Cette dernière variable ne semble jamais utilisée par l'AMS. Elle n'est accessible via la table des RC. a0 est stocké la variable interne $5B28. Elle est retournée par la nouvelle ROM Call (607) (voir commentaire [9]). La variable est utilisée un peu partout, notamment lors des écritures en FlashROM. APPELS: appel au reset (c'est son seul appel, pour éviter trop de déprotection de flash inutile). La fonction n'est pas une RC. VTI: Renvoie une taille de $200000 et une FlashMemoryEnd à $400000, ce qui convient. Pas besoin de patcher. HACK: Pourrait être hacké de la même manière que le calcul dynamique de la taille de la RAM, par un saut après l'appel ou en hookant le trap #11. Un test rapide a été fait en faisant retourner a0 (FlashMemoryEnd) = $380000 et d0 (FlashMemorySize) = $1800000 : getconfg() retourne une taille de mémoire archive de 0, et le menu Mem un taille de 64ko (le bloc pour la garbage collection) , ce qui est correct. --------------------------- [3] Les Flash Apps risquent de commencer à $360000 au lieu de $340000 sur TI89 AMS 3.00 si jamais il sort, étant donné sa taille (routine de calcul des différentes zones : 24D476). [4] Message affiché à la préparation des Flash Apps (Installation in progress... Do not interrupt!). (la barre charge à l'appel à $2DC434). [5] Un test au reset fait afficher : USB: device not responding Le Desktop est activé automatiquement comme sur V200. Icône Window Editor du Desktop un peu modifiée. Quelques chaînes ajoutées ou modifiées : -LINK TRANSMISSION ACTIVE: ON KEY ABORTS TRANSFER +I/O ACTIVE: ON KEY ABORTS TRANSFER -RECEIVED: +I/O: RECEIVED -SENDING: +I/O: SENDING -TI-89 +TI-89 Titanium +USB: SENDING +VAR[,PORT] +USB ACTIVE: ON KEY ABORTS TRANSFER +USB: RECEIVED +USB: Searching for device  +USB: Device Not Supported +USB: Device Not Responding + is archived! +Are you sure? Réception de données : affiche "I/O: RECEIVED main\data" pour le port non-USB (Avant, n'affichait rien). Suppression d'une variable archivée avec backspace depuis le Var-Link maintenant possible : affiche une boîte de dialogue "main\data is archived! Are you sure?" [6] "Installation in progress" et "Do not interrupt!" affichés à la préparation des FlashApps ne sont pas sous forme de chaînes dans l'AMS. Est une image ?! [7] Vti de JM ne permet plus de faire de Set program entry breakpoint. [8] Xpand ne semble plus nécessaire, cf les patches appliqués. [9] Une partie des ROM Calls ajoutées avec l'AMS 2.07 n'existent plus : readHandshake, writeHandshake, startBPTimer, stopBPTimer (auraient pu être utilisées pour un protocole de communication). Un appel à elles lance un ER_ROM_ROUTINE_NOT_AVAILABLE avec un dc.w $A36B (elles pointent toutes vers ce dc.w). La même fonction que pour OSVRegisterTimer, OSVFreeTimer, qui n'existent plus depuis AMS 2.04, est utilisée (et ce sont peut-être les seules utilisations de la fonction et du message d'erreur). *** !!! Ne plus utiliser l'ancienne ROM Call FlashMemoryEnd qui pourrait retourner un résultat faux ? [10] Apparition d'une seule nouvelle ROM Call : ROM_CALL_607. Elle retourne dans a0 FlashMemoryEnd calculé dynamiquement par le code du reset à l'aide de la fonction $14 du trap #11 (voir commentaire [2]). [11] Bhuvanesh : GetCalc/SendCalc have the port number as an optional argument. If not specified or if it is zero, GetCalc will listen to both ports, and SendCalc will use USB if there is a non-TI89 on USB, otherwise it will use DBus. AB_getGateArrayVersion() returns 3. I checked with Command Post Plus, and hardwareRevision=2 and gateArray=3. Et hardwareID = 9. [12] Le mauvais fixage du masque de protection d'exécution en RAM par le trap #4 existe toujours (mauvaise adresse sur usp). Correction nécessaire par hw3patch. La seule différence dans trap #11:$F (calcul du masque de protection d'exécution en RAM) est un déblocage de 16 blocs de 4ko au lieu de 6. --------------------------- ======== trap #11 ======== Déprotection : - ori.b #1,$5B35 après le deuxième d0,(a0) - Plus de bclr/bset à $600015. Ne sera pas compatible avec la HW1 ? (pourtant le filtre HW1 de la mémoire archive existe encore, cf patches appliqués). Le boot les a toujours par contre, lui. Le reset ne les a plus. A propos de $5B35 ----------------- Ceci est valable même pour les anciennes versions d'AMS (pas regardé lesquelles exactement). Au reset, après initialisation de quelques ports, à $212318 : test $5B04.l pour un mot de passe ($F0A5960F). Si c'est le bon *ET* (nouveau test spécifique à l'AMS 3.00) si $5B35 est nul (détéction du trap #11 qui était en cours d'exécution) , exécute un bout de code situé près de celui de l'AI6 ($22201C). Sinon test le mot de passe inversé (not) ($F5A69F0). Si c'est le bon, une routine du trap #4 qui est appelée ($221CCE), qui permet de réveiller la calc (le trap #4 est repris en route, détection d'un reboot pendant que la calc est éteinte par l'enlèvement d'une pile, le boot permet de faire ça, voir partie BOOT). La valeur de a7 est récupérée d'une variable ($5B00). L'AI6 teste aussi le mot de passe en regardant s'il correspond trap #4 précédemment ($F5A69F0). Sinon, il l'efface. Il lit un octet à $5B30 (valeur du contraste) et le stocke. Puis il teste les piles (3,4V). Si elles sont bonnes, il continue son exécution normale [222060] (teste la combinaison du reset et reset si besoin, et fixe la valeur du constraste à celle dans la variable $5B30, à l'aide de la sous-routine de OSContrastDn et Up [appel à 2220B0] ). Si les piles ne sont pas bonnes, efface le bit 2 de $600015, fixe la waitstate ($600003) à $CD. Si le mot de passe n'est _pas_ $F5A69F0 (celui pour le trap #4), il met usp dans la pile et stocke a7 dans $5B00 (même variable que la lecture au reset), puis il écrit comme mot de passe $F0A5960F (permettra de revenir dans l'AI6 après reboot). Puis dans les 2 cas, il attend un peu. Si le mot de passe est $F5A69F0 (celui pour le trap #4), il finit l'AI6 en fixant le niveau du contraste (cf plus haut). Sinon il efface le mot de passe, arme $600015:2 (AI3), refixe la valeur de usp en la lisant de la pile (cf la sauvegarde plus haut quand le mdp n'était pas $F5A69F0), et fini l'AI6 en testant la combo de touches pour le reset et en fixant le contraste. La routine de l'AI6 appelée par le boot lors d'une détection du mot de passe $F0A5960F appelle une série de fonction qui : - Initialise plusieurs ports et variables (même sous routine que le reset dans sa série de bsr à $21249A, le 3ème ici) - OSLinkReset - bsr à une sous-routine intialisant beaucoup de nouveaux ports et des variables sûrement liées à ces ports i/o. ($222026 -> 3479EA). Ce bsr n'est présent que sur Titanium. - Iinitalise des variables, et fait un OSRegisterTimer pour le timer 7. - Initialise encore des variables avec la RC 473 (OSqclear, OSOnBreak, ...) - OSRegisterTimer(APD) - trap #11:$10 (mise-à-jour de la protection d'execution en mémoire archive) - Appel le trap #11:$F (Changement du masque de protection d'exécution en RAM) à l'aide de la fonction $212D28, en lui donnant en paramètre l'adresse permettant de définir la fenêtre d'exécution (lue à $5B0E). Il s'arrange avant l'appel pour mettre l'adresse à $14 + usp, mais ceci est inutile ? Par contre le fait de fixer ssp = usp + $14 fait qu'après l'appel, usp + $10 pointe sur l'adresse de retour qui est bien dans l'AMS, donc trap #11:$F fera bien son boulot. Puis il refixe la valeur de usp en la lisant de la pile (cf la sauvegarde plus haut quand le mdp n'était pas $F5A69F0), et fini l'AI6 en testant la combo de touches pour le reset et en fixant le contraste. (même fin que plus haut). Le trap #4 met le mot de passe ($5B04) à $F5A69F0 avant d'avoir éteint la calc ($221C0E). Il le mettra à 0 avant de quitter. RESUME: AI6 : Si mdp = $F5... (trap #4 en cours d'exécution), et si les piles sont faibles, attend un peu, continue normalement. S'il y a des piles, ne teste pas la combinaison de touches de reset. Si mdp est autre chose, et si les piles sont faibles, stocke le contexte en RAM (ssp+usp), fixe le mdp à $F0... ('AI6 en cours'), et attend un peu. Puis efface le mdp, et continue normalement. 'AI6 en cours' ne correspond donc qu'à cette boucle d'attente, et à des piles faibles. trap #4 : Fixe le mdp à $F5... (trap #4 en cours) et l'efface à la fin. reset : Si mdp est 'trap #4 en cours', saute à lui pour que la calc se rallume et qu'il finisse normalement. Si mdp est 'AI6 en cours', et sur AMS 3.00 si le trap #11 n'est pas 'en cours' saute à lui pour qu'il réinitialise plusieurs variables et ports i/o et finisse son exécution normalement. TODO A quoi sert l'AI6 ? trap #11 peut être en cours ? Contraste : remis si enlèvement de pile sans avoir été éteint seulement. AI6 exécuté dans ce cas ? Hook : si on appelle pas l'ancien AI6, la calc ne veut pas être allumée (Manque acknowledge ?). Puis si on enlève une pile, se rallume (et contraste pas bon). Enlever une pile sans éteindre sans l'AI6 d'origine provoque le reset (dû à h220xtsr apparamment). Toute infos sur tout ça est bienvenue. HACK (non testé): Réalisable pour beaucoup d'AMS sûrement, et pour tous les modèles. Le système de mot de passe permet d'exécuter du code très tôt au reset. Si on fait passer par l'AI6, la protection d'exécution en RAM est normalement réinitialisée comme il faut (ghost space par exemple). Le hook sera appelé au rte (on place son adresse sur la pile). Pour la Titanium, on peut avant de lancer le reset modifier la variable interne $5B0E pour que l'exécution du trap #11:$F par l'AI6 débloque l'exécution en RAM dans le bloc ou se trouve le TSR. Ou alors on utilise un hw3patch. Le code est appelé seulement après une 20aine d'instruction du reset, qui initialisent des ports i/o (tests des mdp à $212318). Prendre garde à l'effacement complet de la RAM qui suit encore plus loin. Aucune idée si ça a un quelconque interêt. $5B35 (suite) ------------- Il est initialisé à zéro au reset, et entre autres par EV_centralDispatcher et le réveil de la calc du trap #4. Son bit 0 est armé au début du trap #11 et désarmé à la fin. Il permet de détecter que le trap #11 est en cours et éviter une récupération du contexte par le code du reset. Le bit 1 de $5B35 semble être armé lorsque le port USB est actif (via la commande TI-Basic sendcalc ou par l'envoi via le var-link). Aucune idée pour la réception de données. Quel est l'interêt de ce bit, puisqu'il n'y a jamais de btst dessus ? Les autres bits ne semblent pas être utilisés. --------------------------- trap #11 : $13 ============== Pas de fonction associée. Jamais utilisé. Ne fait qu'un rts ! trap #11 : $14 ============== Cf commentaire [2]. trap #11 : $15 ============== Fonction à 212C8E Param : d4.l, d5.w Appels : 34E698, 3510C2 Code à 24C4A6 (d3.l d6.w) Affiche USB Active etc. Lecture de certificats... ... Semble utiliser toujours les mêmes routines. Msg Link transfer Complet ou link transmission error. Appel à 34E698 : gestion du link ? Un peu avant, une dialog demande si overwrite ou skip. Quelque chose à avoir avec les Flash Apps : entouré de Ev_currentApp, Ev_getAppID, OO_getAppAttr, OO_appMarkDelete (exécuté si oui à la dialog), ROM CALL 424 qui appelle OO_DeleteMarkedApps (34E682), FL_addCert, ... Presque pareil pour le deuxième appel (autour se ressemble beaucoup !) Pas le temps de regarder plus en détail. trap #11 : $16 ============== Fonction à 212DC2 Param : void - Retourne : bool ? Appels : 34B330 Code : 34B39E Lecture de certificats, peut-être de l'écriture... Pas le temps de regarder plus en détail. --------------------------- ==== BOOT ==== Ce qui suit n'est pas spécifique à la Titanium. Après plusieurs tests (pile, déprotection) et initialisation de ports i/o, test à $200272 si (CertMem + 2).w est nul. Si oui, et si le premier mot de l'AMS (ROM_BASE + $12000).w est non nul, l'adresse du reset de l'AMS est cherchée et l'AMS est bootée. La RAM n'a pas été modifiée jusqu'à maintenant, et en cas de pile enlevée pendant un trap #4, ceci peut être récupéré (voir "A propos de $5B35" dans la partie sur le trap #11. Si un des deux tests échoue, le boot continue son initialisation pour arriver finalement à l'écran d'envoi d'AMS si tout s'est bien passé. [le test des combo Apps+On et peut-être '(-)' ')' + On doivent se trouver sûrement avant ces 2 tests]. L'ancienne version de VTI remplace toujours CertMem par quelques dizaines d'octets de certificat codé en dur de VTI, avec CertMem.w = $FFF8 et CertMem+2.w nul -> le boot passe tout de suite la main à l'AMS. Dans la version de JM, les certificats sont ceux du .rom. Il est donc nécessaire de patcher CertMem + 2 en le mettant à nul pour qu'un 'reset' de VTI lance tout de suite l'AMS. Ce qui suit est spécifique à la Titanium. Si on met quelque chose différent de nul, le boot bouclera un moment dans le vide, à cause des nouveaux ports i/o que VTI ne fait pas réagir correctement. Le boot comporte maintenant quelques 'rts', plutôt qu'un 4E75 créé dynamiquement avant d'être exécuté. Les écritures en RAM 'move.w a0,$4400' semées un peu partout dans le code ont maintenant disparu du boot. ========= Ports I/O ========= Nouveaux à $7100XX, qui n'est maintenant plus un reflet de $7000xx. ini par l'AI6 ini boot / reset Routines à 2051F4 - 347160 - 347640 sous-routines reset ? Beaucoup d'utilisations dans le boot code : Dans l'ordre d'apparition (adresses croissantes) $81, $80, $4C, $39, $54, $31, $8B, $2F, $8F, $4D, $87, $29, $5A, $5B, $4A, $4B, $55, $57, $56, $22, $24, $26, $8E, $89, $27, $91, $94, $34, $A0, $2E, $96, $93, $9A, $9B, $95, $90, $98, $99, $92, $97 Dans l'ordre (40 ports, tous en .b) : $22, $24, $26, $27, $29, $2E, $2F, $31, $34, $39, $4A, $4B, $4C, $4D, $54, $55, $56, $57, $5A, $5B, $80, $81, $87, $89, $8B, $8E, $8F, $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $9A, $9B, $A0. Avec les ports de l'horloge (cf plus loin) (précédés par #) : $22, $24, $26, $27, $29, $2E, $2F, $31, $34, $39, #40.l, #44 #45, #46.l, $4A, $4B, $4C, $4D, $54, $55, $56, $57, $5A, $5B, #5F, $80, $81, $87, $89, $8B, $8E, $8F, $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $9A, $9B, $A0. Les ports qui suivent $A0 doivent aussi être utilisés, mais jusqu'où ? (cf 207136 ou $349212 (même bout de code en plus peut-être)) Très proche des ports trouvés par Dan Englender pour la TI-84+ (cf http://www.detachedsolutions.com/forum/viewtopic.php?t=1759). Serait donc peut-être le même HW (voir commentaire plus loin). J'ai écrit à Dan, il n'a pas plus d'infos pour l'instant. Les ports de Dan Englender manquant dans cette liste : $49, $4F Les ports que Dan ne cite pas : particulièrement de $22 à $39. Les ports dans cette zone non cités ci-dessus ne semblent pas être utilisés (du moins pas par adressage directe, peut-être que des (a0)+ sont utilisés, etc.). ----------------------------- ======= Horloge ======= [[ maj - résumé : l'horloge est maintenant entièrement gérée de façon HW, afin de laisser l'auto-int3 libre pour l'USB. [[Desktop : commentaires pour la découverte des ports, maintenant inutile. --------- AMS: un table à 345164? [[ maj : table contenant les adresses des nouveaux ports de l'horloge La première adresse de la table ($71005F) est lue par le Desktop à l'arrive de EV_NULL ($341EFC, première sous-fonction). Le bit 0 est testé.[maj : IsClockOn!] S'il est non nul, le reste de la table est utilisé (345204, dans la sous-fonction 3451D2) [maj] commentaire déplacé dans OneSecondTimerGet plus bas. A l'appel (341FC4) : _du32u32(d0.l=60, d1.l=f()) : -> f() / 60, résultat dans d1.l. Si *($8324 + $BE) = d1.l -> quitte. Sinon... Au final, affichage de l'heure ! --- ---- --- --- -- --- --- ---- -- --- Utilisation de la même table pour toutes les fonctions de l'horloge. IsClockOn --------- Retourne $71005F:0 ClockOn ------- bset $710005F:0 Si on avait avant le bset !IsClockOn, appelle OneSecondTimerSet($5BB0 (ie OneSecondTimer), 0.w) Dans tous les cas, $5BBE = 1. (indique ClockOn) [Sur AMS 2.09 : Si pas HW1, bset 2,$600015; rts] Ports relatifs à l'horloge : $40.l (écrire), $44, $45, $46.l, $5F:0 Toute cette gestion de l'horloge ne semble pas être faite par le boot. ClockOff -------- Appel 3451D2 (getOneSecondTimer(pt_bidon)) Stocke le retour (d0) dans $5BB0. Puis bclr $5F:0 et clr.w $5BBE (indique ClockOff). AI3 --- N'est plus utilisé pour l'horloge, mais pour le port USB (déclenché à son utilisation d'après le test que j'ai fait faire à Samuel). Utilise des ports i/o de l'USB, et fait des TimerRestart (pas trop le temps de regarder). -> maintenant utilisée comme interruption pour le traitement de l'USB. Le boot a maintenant tendance à avoir SR=$2200 plutôt que $2300 à cause de ça. Trap #4 ------- clr.w $600014 avant d'éteindre sur AMS 3, dans tous les cas (plus de traitement avec l'AI3 comme sur la famille AMS 2.07). Toute la gestion de l'AI3 qui réveille la calc a été supprimée, et le port $600014 est écrit directement avec les valeurs plutôt que d'avoir les valeurs calculées en fonction de l'état de l'horloge. Seules différences apparentes : 2 nouvelles sous-routines appelées tout à la fin (221D9E). 1ère : Si 5BBE.w && !IsClockOn $5BB0.l (OneSecondTimer ?) = 0 ClockOn 2ème : Relatif au link USB sûrement. wait $1DE84 *n cycles Si $71004D:6 == 1 Si $8410.b == $B0 appel à une routine cmplexe utilisant $710039 (34781E) quitte sinon quitte Si $8410.b == $A0 $8411.b = 2 quitte Reset ----- Routine de réinitialisation de l'horloge (23A3F2) (première utilisation des nouveaux ports). Sur AMS 2.07 on avait : <> Sur HW3 (vu dans cette routine d'initialisation, avec la doc sur la V200 / AMS 2.08) : TimeFormat = 5BB6.b DateFormat = 5BB7.b TimeZone = 5BB4.w 5BBE.w ? Magic pour la récupération : 5BB8.l OneSecondTimer = 5BB0.l (5C06 sur TI-89 AMS 2.09) Le reset fait: Si magic ok, appel 345340 et quitte 345340 (nouvelle sur AMS3): Si 5BBE.w != 0 && !IsClockOn 5BB0.l = 0 ClockOn Si magic pas ok: Clockoff(); ClockOn(); Appel OneSecondTimerSet(NewValue.l = 0, 0.w) Fixe les formats + TimeZone fixe magic et quitte ClockOn est réalisé par cette fonction d'initialisation plutôt que séparemment (sur AMS 2.09, il était à la fin du 2ème bsr de la série des bsr du reset [appel à la sous-fonction qui est le corps de ClockOn]). Tous les accès à OneSecondTimer sont maintenant remplacés par (cf plus bas) : 3451D2: long OneSecondTimerGet (char *res) 345290 OneSecondTimerSet(NewValue.l, 0.w) void OneSecondTimerSet (newValue.l, mmm.w) --------------------- à 345290 OneSecondTimer($5BB0) = newValue Quitte si !IsClockOn $710040.l = newValue if (mmm.b < 16) tmp = mmm.b else tmp = 0 $710044 = tmp bclr #1,$710005F puis bset long GetOneSecondTimer (char *res) ----------------- à 3451D2 if !IsClockOn *res = 0 return OneSecondTimer ($5BB0) $46 est lu, $47 (avec 1(a0), etc... !), $48 et $49 et placés côte à côte. Puis $45 est lu. (en fait les ports ne sont lus qu'une fois à chaque boucle) tmp = 0 tmp2 = 0 while ($46.l != tmp || $45.b != tmp2) tmp = $46.l *res = $45.b return $46.l -------------------- Initialisation de ports par le 2ème bsr de la série du reset ============================================================ Code à 222264. A propos de $600000 (toute version d'AMS) et de la valeur initiale du contraste (nouvelle valeur spéciale pour Titanium). ($5B30 est l'équivalent du $5B98 sur V200 2.09, valeur du constraste) (d1.b : $5D18, d0.b 5B30) Si HW1 $10 -> d0 #E maintenant ! F -> d1 Si HW2 20 -> d0 1F -> d1 Si $5B19 != 0 ; toujours vrai sur HW1 ! cf 'reset' plus bas avant ------ $A -> D0 nouveau ----- Si HARDWARE_PARM_BLOCK.hardwareID == 9 (Titanium) $D -> D0 Sinon D0 /= 2 Fin nouveau ------ Sinon #$80.b->$600000 (?) $5B30 = d0.b (valeur du contraste) OSContrastUp pour la fixer réellement. Et dans OSContrastUp ou Dn : Si $5B19 = 0 Si nouvelle valeur contraste % 2 ? bset : bclr #5,$600000 Et au tout début du reset : Si pas HW1 $5B19 = $FF Sinon 600018.w = $FFFF (~2.9V) $600000.b = $80 wait $5B18.b = $1F ; contraste max (cf $60001D) btst #2,$600000 seq d0 (clr si batt level is above) move.b #$FF,5B19 ; puis d0 pas utilisé ! beq ContinueReset ; jamais vrai ! (aurait du être avant l'instruction ; précédente ?) bclr #7,$600000 bclr #4,$5B18 ; contraste max - donc toujours fais sur HW1 ; -> $5B18=$F TODO Pas très clair, toute info est la bienvenue. Autres ports ============ $71004D ------- USB: Searching for device... pour envoi à partir du var-link à 34A1A8 La plupart des ROM Calls semblent fonctionner avec les anciens ports i/o à $6000xx (LinkTxQueueActive, OSLinkReset, OSLinkClose, ...) Regarder toutes les RC de link.h. (utilisation en même temps que 5B35:1). Par exemple 349E58, 34A284, 34B868, et encore quelques routines après ces adresses (search). et trap #4 : 347664, 347160 Envoi des données par bloc ? (il y a des memcpy dans trap #11 : $15) $71005A ------- A EV_getc. ============================== Infos sur USB de Dan Englender ============================== Horloge ------- "bit 6, iy+3Fh controls whether the clock is on or off (regarding the OS setting, not the hardware setting)." $5F:0 semble être l'équivalent ? "To set the clock, set the values you want into ports 41h through 44h, and then output 01h to port 40h, followed by 03h to port 40h. Outputting values directly to ports 45h through 48h has no effect." 41h->44h = $40.l? Mais ne ressemble pas trop (cf OneSecondTimerSet qui est plus compliqué). USB --- <> Même ports aux mêmes adresses ! (encore un peu plus même) Mais il y a des ports de $22 à $39 que Dan ne cite pas... ------------------------ --------------------------- TESTS ===== SIDE, ID et BomberMaze68k semblent fonctionner (sans compter la protection d'exécution). --------------------------- BUGS ==== Ils sont dus à de mauvais patches par patchanic. Pas vraiment le temps de les corriger, et ils ne gênent pas trop pour l'instant. Menu F5 du var-link complètement buggé. Pareil pour Menu F6 ligne 1 de Home. Dans catalog, au milieu des C : all rights reserved, etc... (~8 symboles pas bon). Et les commandes clrdraw, clrhome, etc. ont disparues et ne répondent pas dans l'home. (sûrement un patch de données des commandes... TODO : voir ou ca se trouve). Sendcalc variableexistantpas fait une link transmission error... Pas d'horloge ? (car le bit sur $6000xx ne tiens pas ?) Commande sur la clock dans home par reconnue : par exemple ClockOn --- Boot : boucle bizarrement. + problème de check de battery d'après Samuel ? port lu à 2060E8 pose problème ? trap 11 : 7 et $D ne fonctionnement pas. Seulement $D toujours exécuté même sans Flash Apps. ------------------- ===== TODO ===== Nouvelle combo != APPS+ON pour recevoir l'AMS via l'USB, comme sur 84P? (apparemment non) Changements au niveau de l'écran ? (la valeur initiale du contraste n'est plus la même). Comment envoyer via le port USB (ROM CALL sendcalc() passe par l'ancien) ? Bug du reset ne protégeant pas correctement la mémoire archive en exécution corrigé ? Même stealth i/o ports ? Protection du boot comme sur V200 ? Chercher msg USB Device... +USB: Searching for device  +USB: Device Not Supported +USB: Device Not Responding et quand 'not supported'. Regarde AI4. Pourrait être interessant de détailler son protocole/fonctionnement pour dialogue avec un périphérique externe ? Regarder ports io (boot + trap #11 + AMS) Samuel : changement dans le fonctionnement des piles ? Nouvelles Fonctions du trap #11, comprendre Tenter un programme de diff d'AMS ? Trouver une utilité pour les hooks des limites de RAM et ROM. 222300 : mais #$80,$600000 dans un cas alors que j89hw dit toujours 0 (sur ancien AMS aussi). bug de Lionel ? Automatiser le patch des méthodes des Flash Apps (cf partie patches). Comprendre trap #11 : $15/$16 voir utilisations mdp / $5B35 ailleurs encore. écriture de 4 octets dans port clock possible, ou octet par octet nécessaire comme le fait l'AMS ? Comprendre "Initialisation de ports par le 2ème bsr" Ports de $22 à $39 que Dan ne cite pas, pas USB ? Chercher ports $7100XX dans AMS, pas déjà listés. AI3 : code Routines autour de ClockOn, etc. Ports Nouveaux, différents à $7000xx ? Comparer toutes les ini des anciens ports par le reset. Demander Samuel / Buvhanesh =========================== Qui a-t-il à la place du ghost space de la RAM ? End Of File tiemu-3.03-nogdb+dfsg/docs/ti_hw/000077500000000000000000000000001220314353500166305ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/ti_hw/fargo/000077500000000000000000000000001220314353500177265ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/ti_hw/fargo/Convert.txt000066400000000000000000000135161220314353500221150ustar00rootroot00000000000000---------------------------------------------------------------------------- CONVERTING FARGO 0.1.X PROGRAMS ---------------------------------------------------------------------------- This document describes some of the steps needed to convert Fargo 0.1.x programs to Fargo II. Libraries are now accessed simply by included their corresponding header files. And, the program entry point and comment are now specified by exporting them using XDEF, rather than using the @program macro. Example: ----------- begin ------------ @program prog_code,prog_name prog_code: rts prog_name dc.b "This program does nothing.",0 reloc_start add_library flib add_library hexlib reloc_end end ------------ end ------------- would be changed to: ----------- begin ------------ include "flib.h" include "hexlib.h" xdef _main xdef _comment _main: rts _comment dc.b "This program does nothing.",0 end ------------ end ------------- Libraries are also created differently. Example: -------- sillylib.asm -------- @library sillylib label boring rts label pointless rts reloc_start reloc_end end -------- sillylib.sym -------- \1,boring \1,pointless -------- sillylib.fn --------- ; boring() does nothing ; pointless() does more of the same ------------ end ------------- would be changed to: -------- sillylib.asm -------- xdef _library xdef sillylib@0000 xdef sillylib@0001 sillylib@0000: rts sillylib@0001: rts _library dc.b "sillylib",0 end --------- sillylib.h --------- ; boring() does nothing sillylib::boring equ sillylib@0000 ; pointless() does more of the same sillylib::pointless equ sillylib@0001 ------------ end ------------- Notice that library calls are now done as "libname::funcname" rather than "libname[funcname]". If you use Emacs, you may change your library calls using the following regexp replace: Replace "\([ ,][a-z]+\)\[\(.+\)\]" with "\1::\2". ^ Tab character (yielded by Ctrl-Q Ctrl-I) ---------------------------------------------------------------------------- The library "romlib" has been replaced by the pseudolibrary "tios". The following calls have undergone name changes: romlib[destroy_handle] -> tios::HeapFree romlib[create_handle] -> tios::HeapAlloc romlib[resize_handle] -> tios::HeapRealloc romlib[dispose_handle] -> tios::HeapFreeIndir romlib[set_activity] -> tios::ST_busy romlib[puttext] -> tios::DrawStrXY romlib[putchar] -> tios::DrawCharXY romlib[set_font] -> tios::FontSetSys romlib[update_status] -> tios::ST_eraseHelp romlib[gr_draw_to] -> tios::DrawTo romlib[gr_move_to] -> tios::MoveTo romlib[gr_set_buffer] -> tios::PortSet romlib[gr_screen_buffer] -> tios::PortRestore romlib[draw_window] -> tios::WinActivate romlib[destroy_window] -> tios::WinClose romlib[create_window] -> tios::WinOpen romlib[puttext_window] -> tios::WinStrXY In addition, the following macro had its name changed: handle_ptr -> tios::DEREF In most cases the name change was made because the new name is the genuine name used by TI in their ROM source code. In other cases, where it wasn't possible for me to find out the real name, I chose a name that seemed to be consistent with TI's naming style. ---------------------------------------------------------------------------- Since ROM 2.1 uses different RAM addresses than ROM 1.x, you will have to change all your direct references to RAM addresses with references to the "tios" pseudolibrary. I think the most common direct addresses used by Fargo 0.1.x programs were the keyboard variables, $75A0, $75B0, etc.; to change these, simply subtract $7594 and add tios::kb_vars. For example: $75A0 -> tios::kb_vars+$C $75B0 -> tios::kb_vars+$1C $75B2 -> tios::kb_vars+$1E Also make sure you change all direct references to $4440 to LCD_MEM or tios::main_lcd, and $761C to STATUS_LINE or tios::status_flags. See tios.h for additional examples. Since Fargo II programs run in User mode rather than Supervisor mode, you won't be able to use privileged instructions outside of an exception handler. Usually the only two you will have used before are STOP and MOVE xx,SR. You will have to do without STOP, unless you access it via a trap handler. However, MOVE xx,SR can be substituted with something different. Here are a couple examples: move.w #$700,d0 ;\ disable interrupts, and put trap #1 ;/ the old int mask in D0 bclr.b #2,$600001 ; disable protection of memory move.l $64,old_int_1 ; save pointer to old int 1 handler move.l new_int_1(pc),$64 ; install custom int 1 handler bset.b #2,$600001 ; re-enable protection of memory trap #1 ; restore the old interrupt mask move.w #$700,d0 ;\ disable interrupts, and put trap #1 ;/ the old int mask in D0 move.w d0,-(sp) ; push old int mask onto stack ... ... ; do something that requires ... ; interrupts to be disabled ... move.w (sp)+,d0 ;\ restore old trap #1 ;/ int mask Note that $64 is used to access the auto-int 1 exception vector, rather than $20064. This provides compatibility with 256K calculators. Because $64 was used, the protection of memory in the range $000000..$00011F had to be temporarily disabled. See LowLevel.txt. ---------------------------------------------------------------------------- The kernel no longer exports a function called "find_var". Instead, use tios::FindSymEntry. Remember that since it is a ROM routine, it destroys registers d0-d2/a0-a1. The 4-shade grayscale library included with Fargo is different from the old graylib. It has been renamed to gray4lib. It now works similarly to graylib7. Also, graylib7 has been renamed to gray7lib. ---------------------------------------------------------------------------- tiemu-3.03-nogdb+dfsg/docs/ti_hw/fargo/Fargo.txt000066400000000000000000001340601220314353500215310ustar00rootroot00000000000000 ________ /\ _____\ \ \ \____/ __ __ __ __ __ \ \ ___\ /'__`\ /\ `__\ /'__`\ /'__`\ \ \ \__//\ \_\ \\ \ \ /\ \_\ \ /\ \_\ \ \ \_\ \ \___/_\\ \_\ \ \____ \\ \____/ \/_/ \/___/_/ \/_/ \/____\ \\/___/ /\____/ \/___/ Fargo v0.2.7.1 Copyright (C) 1996-1998 David Ellsworth All rights reserved. ============================================================================== Table of contents ============================================================================== Part 1: Using Fargo ------------------- 1.1: Introduction 1.2: Requirements 1.3: Installing Fargo 1.3.1: Installing Fargo from DOS 1.3.2: Installing Fargo from Linux 1.3.3: Installing Fargo without FLink 1.4: Running Fargo programs 1.5: Using FBrowser 1.6: Running old Fargo programs 1.7: Troubleshooting Part 2: Programming for Fargo ---------------------------- 2.1: Introduction 2.2: Lists of helpful information 2.3: Programming overview 2.4: The Fargo source code format 2.5: The Fargo object code format Part 3: Other topics -------------------- 3.1: Legal stuff 3.2: Contacting the developer 3.3: New versions and information 3.4: Revision history 3.5: Known bugs 3.6: Planned features ============================================================================== Part 1: Using Fargo ============================================================================== ------------------------------------------------------------------------------ 1.1: Introduction ------------------------------------------------------------------------------ Fargo is a software extension for the TI-92 graphing calculator that enables the execution of machine language programs. These programs are stored on your calculator as PRGM variables. Fargo itself consists of two primary components: the kernel and the shell. The kernel contains low level bootstrap routines that are used to load and run Fargo programs. It is also the interface whereby Fargo programs can communicate with the TI-92's built-in ROM OS while maintaining compatibility across all supported ROM versions. The shell provides an simple and organized way to list and execute Fargo programs that are stored in the calculator's memory. Fargo lets you use any program as your shell. The default shell packaged with Fargo is FBrowser. Fargo also includes a development toolkit for creating Fargo software. For more information on it, see the Part 2 of this document. ------------------------------------------------------------------------------ 1.2: Requirements ------------------------------------------------------------------------------ You must have access to a Graph-Link cable if you have a Macintosh and/or want to use TI's software to transfer Fargo to your TI-92. A PC program is supplied with Fargo that will allow you to transfer group files and backups using a homemade link (both the parallel and serial cables are supported). Fargo currently supports the following ROMs: +---------+--------------------+ | Version | Date | +---------+--------------------+ | 1.0b1 | September 13, 1995 | | 1.2 | October 11, 1995 | | 1.3 | October 20, 1995 | /\ | 1.4 | November 17, 1995 | /\ older date format: Month DD, YYYY | 1.5 | 01/02/96 | \/ newer date format: MM/DD/YY | 1.7 | 01/18/96 | \/ | 1.8 | 02/28/96 | | 1.10 | 03/20/96 | \____ note that there are two | 1.10 | 03/26/96 | / ROMs designated as 1.10 | 1.11 | 04/11/96 | | 1.12 | 05/08/96 | | 2.1 | 08/19/96 | <--- TI-92 II (available in Europe only) +---------+--------------------+ If your ROM is not on the list, please contact me! (see section 3.2) To find out what ROM version your TI-92 has, press [Diamond] [(] from the PrgmIO screen. Then press [2nd] [QUIT] to go back. Note that "1.12" stands for "one point twelve" rather than "one point one two"; therefore ROM 1.12 is newer than, for example, ROM 1.7. ------------------------------------------------------------------------------ 1.3.1: Installing Fargo from DOS ------------------------------------------------------------------------------ The following procedure details the process of putting Fargo onto your TI-92. This process will preserve all the files that you currently have on your calculator. The first step is to unzip Fargo into a directory on hard disk. For discussion purposes, let's call that directory "F:\FARGO". Next, make sure you set the environment variable FARGO to F:\FARGO and make sure F:\FARGO\BIN is in your path. To make this permanent, add the following lines to the file C:\AUTOEXEC.BAT: SET FARGO=F:\FARGO SET PATH=%PATH%;%FARGO%\BIN After you have made these settings, you may install Fargo on your calculator. If you have a homemade parallel link cable, you may install Fargo by typing "autofarg" at the DOS prompt. Otherwise, move on to section 1.3.3. ------------------------------------------------------------------------------ 1.3.2: Installing Fargo from Linux ------------------------------------------------------------------------------ The first step is to untar Fargo into a directory in your filesystem. For discussion purposes, let's call that directory "/usr/fargo". Next, make sure you set the environment variable FARGO to "/usr/fargo" and make sure both $FARGO/bin and $FARGO/flink are in your path. To make this permanent, add the following lines to your global profile: export FARGO=/usr/fargo PATH=$PATH:$FARGO/bin:$FARGO/flink If you are using c-shell, use this instead: setenv FARGO /usr/fargo set path = ( $path $FARGO/bin $FARGO/flink ) If you have a homemade parallel or serial link cable, go to $FARGO/tidev, read the README there, and install tidev. You may then install Fargo on your TI-92 by typing "autofarg" at the shell prompt. Otherwise, you are out of luck. You will have to go to Windows to use TI-Graph Link. ------------------------------------------------------------------------------ 1.3.3: Installing Fargo without FLink ------------------------------------------------------------------------------ First, make sure you have read and followed section 1.3.1. Transfer a backup from your TI-92 to F:\FARGO. You can give the backup any name you want. From the DOS command line, execute the following command: F:\FARGO>putfargo where is the name of the backup file you made, including the .92b extension. This will load the Fargo core into the backup file. Now transfer this modified backup file to your TI-92. There is now one step remaining: transfer all the .92p files from F:\FARGO to your TI-92. You now have Fargo on your calculator. The following .92p files are required to run FBrowser: asm\prgm\flib.92p Fargolib. Contains useful routines not found in ROM. asm\prgm\shell.92p FBrowser; the listing of programs you will see by default when you press [Shift] [ON]. The remaining .92p files are sample Fargo programs and libraries. ------------------------------------------------------------------------------ 1.4: Running Fargo programs ------------------------------------------------------------------------------ To launch the Fargo shell, use the hotkey [Shift] [ON]. This works from anywhere, provided that your TI-92 becomes idle within 1/4 second after the hotkey was pressed. You may also start Fargo programs in the same way that TI-BASIC programs are called. For example, to directly start the Sierpinski Triangle demo, you would enter "sierpin()" from the home screen. The Fargo shell can be executed just like any other Fargo program. As an alternative to pressing Shift-ON, you may execute the TI-BASIC command "shell()". Any Fargo program renamed to "shell" will be triggered when you press [Shift] [ON]. If you press [Shift] [ON] and there is no variable called "shell" in your calculator's memory, Fargo will display the message "SHELL NOT FOUND" in the status line. If a program has been directly launched, and for some reason it cannot be executed, Fargo will display an error message on the status line at the bottom of the screen. The message briefly describes what went wrong. FBrowser requires the single library "flib". Different programs may require different libraries. If Fargo is not present on your TI-92, pressing [Shift] [ON] will have no effect, and Fargo programs launched from TI-BASIC will do absolutely nothing. To load Fargo into your TI-92, follow the instructions in Section 1.3. ------------------------------------------------------------------------------ 1.5: Using FBrowser (a.k.a. the Fargo shell) ------------------------------------------------------------------------------ When you start the FBrowser, it displays a menu of the folders on your TI-92. There are two modes of operation; one is the folder view, which is the default upon startup, and the second is the program view. Use the following keys to navigate through FBrowser: [Left] - switch to folder view [Right] - switch to program view (enter folder) [Up] - move cursor up [Down] - move cursor down [2nd] [Up] - page up [2nd] [Down] - page down [ENTER] - execute program / enter folder [space] - toggle file list filtering [F1] - display "about" dialog box [EXIT] - quit If a program you attempt to execute fails, FBrowser will display an error dialog box describing the error. You may bypass the Fargo shell by launching programs directly from TI-BASIC. Note that when you have file list filtering turned off, file types are no longer meaningful; therefore, Fargo programs will not have their comments displayed, and will not execute when you press [ENTER]. ------------------------------------------------------------------------------ 1.6: Running old Fargo programs ------------------------------------------------------------------------------ Before Fargo II was released, many programs had been written for the original Fargo. Since Fargo II used a completely redesigned program format, and even ran programs in a different processor mode, compatibility with older programs was broken. It was expected that all of the existing programs would need to be converted and recompiled in order to run under Fargo II. But with the release of Fargo 0.2.2, this changed. With the addition of the Fargo 0.1.x compatibility module, legacy Fargo programs could now be run under the same environment as Fargo II programs. The compatibility module is optional; you must specifically choose to install it. To do this, simply follow the same installation procedure outlined in Section 1.3, but use "pfcompat" instead of "putfargo". For an automatic installation, use "afcompat" instead of "autofarg". In a manual installation, make sure you send the files in "asm\oldfargo" to your TI-92 after the backup has been sent. The Fargo 0.1.x library "romlib" is integrated with the compatibility module. It does not need to be present on your calculator. All other Fargo 0.1.x libs will need to be put into the folder "OLDFARGO" in order to be recognized. This insures that they will not be confused with Fargo II libraries, which go in the folder "MAIN". However, programs themselves can be put into any folder, regardless. Note that if your TI-92's ROM version is not 1.x, most Fargo 0.1.x programs will need to be modified somewhat in order to run properly. ------------------------------------------------------------------------------ 1.7: Troubleshooting ------------------------------------------------------------------------------ Everything in this section is documented in the "In Case of Difficulty" section of the TI-92 manual, on page 498; however, since so many people post on the mailing lists asking about this, I've decided to include it here. If your TI-92 locks up, try holding down [2nd] and [HAND] and pressing [ON]. If that does not reset it, try removing a battery, holding down [)] and [(-)], and inserting the battery while continuing to hold down the two keys until the calculator resets. ============================================================================== Part 2: Programming for Fargo ============================================================================== ------------------------------------------------------------------------------ 2.1: Introduction ------------------------------------------------------------------------------ Part 2 explains the fundamentals of creating Fargo II programs, including pointers to sources of information and a description of the high level source code format recognized by the Fargo development kit. Also described is the low level object code format recognized by Fargo itself, and generated when you compile a program. Fargo, along with the development kit included with it, automatically handles relocation, library linking, and many platform technicalities, such as support for multiple ROM versions. In order to use these features properly, Fargo requires that you follow a certain format in your source code files. This format is streamlined; the development kit takes care of the details of converting source code into object code that Fargo can recognize. There are several impediments to running assembly language programs on the TI-92. Fargo deals with all of these, leaving the programmer to concentrate on what is most important. Here are the three most predominant issues: - Different versions of the ROM are very much alike, but differ slightly in the offset of most calls. The Fargo kernel solves this by providing a TIOS "pseudolibrary" of ROM calls and RAM addresses. This pseudolibrary uses a table of addresses. This table is chosen from a master table of ROM versions at the time the Fargo kernel is inserted into a backup file. - The calculator dynamically rearranges its memory, so there is never a sure way to pinpoint the location of a program in order to access data and do JMPs and JSRs. The Fargo kernel does not face this problem, since it is in a fixed location (the top of RAM). For programs, which do move around, Fargo solves this problem by automatically relocating programs before they are executed. - There is very little RAM (about 69K on a 128K calc, or 196K on a 256K calc) to work with, so routines should be optimized to work under low memory conditions. In order to work with this difficulty, the Fargo kernel and program format have been designed to take as little space as possible while still being efficient and modular. ------------------------------------------------------------------------------ 2.2: Lists of helpful information ------------------------------------------------------------------------------ The text files included in the distribution contain information that may be useful for writing Fargo programs. These files are nowhere near complete, so I welcome corrections and additions. If you have any, please refer to section 3.2. The files in this package are not meant teach you from scratch how to program in 68000 assembler; for this, please consult other sources. The text files are as follows: Fargo.txt Main documentation (this file) Convert.txt Describes how to convert Fargo 0.1.x programs and libraries to Fargo II. LowLevel.txt Describes the TI-92's memory map, and lists all the known I/O ports along with descriptions. Traps.txt Describes the TI-92's usage of the exception vector table. Types.txt Describes some of the data types used by the TI-92. Handles.txt Explains how memory handles are used by the TI-92. RAM-1_x.txt Lists some RAM addresses (low memory globals) along with descriptions. Theses addresses are for ROM 1.x only. They must be converted to be used with Fargo II. ROM-2_1.txt Contains lots of information gleaned from studying ROM 2.1. For all the text files, the following conventions apply: All numbers are in hexadecimal, except for bit indices or numbers ending with the suffix (d). In certain places, the prefix '$' will be used to clarify that a number is in hex. B = byte ( 8 bit integer) W = word (16 bit integer) L = long (32 bit integer) Brackets [] designate pointer indirection. This may be followed by ".B", ".W", or ".L" to designate the size of the integer being pointed to. Remember that the 68000 processor uses "Big Endian" to store integers in memory; the most significant byte (MSB) is stored first, and the least significant byte (LSB) is stored last. For example, the number $1234 is stored as 12 34 in memory. ------------------------------------------------------------------------------ 2.3: Programming overview ------------------------------------------------------------------------------ Fargo executables (PRGM variables) consist of two classes: programs and libraries. Programs can be executed directly, and are displayed in the Fargo shell. Libraries provide commonly used routines to programs; these routines can be used by simply linking the library to the program. This is an alternative to copying the source for each routine into the source for the program that uses the routines. Fargo source code is contained in .ASM files. Compiling a program or library consists of two steps: 1) Assembling the ASM source file(s) using A68k 2.71.F1. 2) Using the Fargo Linker to link the object file(s) generated by A68k. This generates a single .92p file. It is recommended that you use a makefile for compiling your Fargo programs and libraries. The way A68k and flinker work together makes this work very well. All you have to do is type "make" and everything that has changed is recompiled. (And everything that hasn't changed isn't recompiled.) However, you do not *need* one to compile Fargo programs. The file FARGO.BAT is supplied for development under DOS without the use of a makefile. In the Linux development kit, a sample makefile is included instead. If you're using DOS, you're on your own if you want to try using a makefile. ------------------------------------------------------------------------------ 2.4: The Fargo source code format ------------------------------------------------------------------------------ This section describes how to create an .ASM file that will be assembled into an object file that the Fargo Linker can then link into a working Fargo .92p file. This section precisely describes how to create Fargo source code. It might also be hard to understand, especially for beginners. To see it in practical use, please examine the sample source code that is included with Fargo. +-----------+ | Libraries | +-----------+ To generate a library, you must export a symbol named "_library", and all the library functions, using the template "libname@XXXX" where "XXXX" is a hex number signifying the function index. The symbol "_library" must point to a null-terminated string specifying the library name. This is done like so: ... xdef _library xdef testlib@0000 xdef testlib@0001 xdef testlib@0002 ... xdef testlib@XXXX testlib@0000: ; exported library symbol number $0000 ... testlib@0001: ; exported library symbol number $0001 ... testlib@0002: ; exported library symbol number $0002 ... testlib@XXXX: ; exported library symbol number $XXXX ... _library dc.b "testlib",0 +----------+ | Programs | +----------+ To generate a program, you must export a symbol named "_main". This symbol should point to the program entry point. If you want to give the program a comment/description, you must also export a symbol named "_comment", which should point to a null-terminated string. This is done like so: ... xdef _main xdef _comment ; include this only if you define _comment ... _main: ; program entry point ... rts ; return from program ... _comment dc.b "Space Goobers version 19.8",0 ... +-----------------+ | Using Libraries | +-----------------+ Library symbols are accessed as "libname@XXXX". However, each library should have its own include file which makes the names much more friendly. For example, "kernel@0000" is aliased to "kernel::find_var" and "flib@000C" is aliased to "flib::random". NOTE: Although exported library symbols are usually functions, they are not required to be so. They may just as easily point to data. +-----------+ | Compiling | +-----------+ To compile a Fargo .ASM file into a .92p file under DOS: F:\FARGO>fargo Where is the name of the .ASM file, without the extension. Using the Linux development kit, you may manually do this: $ a68k .asm $ flinker -o .92p .o Or you may simply type "make" if you have already written a proper makefile. ------------------------------------------------------------------------------ 2.5: The Fargo object code format ------------------------------------------------------------------------------ The section has been temporarily removed. ============================================================================== Part 3: Other topics ============================================================================== ------------------------------------------------------------------------------ 3.1: Legal stuff ------------------------------------------------------------------------------ The distribution of Fargo is encouraged, as long as all the companion files are kept together, unmodified from the form in which they were originally released. I take no liability for any damage caused directly or indirectly by using Fargo or any of its companion files. Keep in mind, though, that it is extremely unlikely (if not impossible) for your calculator to be damaged by software. You may NOT put Fargo up on any WWW site, FTP site, BBS, or any other form of mass distribution, without my agreement. This is NOT to stop the distribution of Fargo. It is to allow me to keep track of all the distribution sites out there, so I can make sure a bug-fix or upgrade is always available. See section 3.2 below. ------------------------------------------------------------------------------ 3.2: Contacting me ------------------------------------------------------------------------------ If you have a question that is about something very basic, that you think a normal user could handle, please use one of the mailing lists or newsgroups. See http://www.ticalc.org for FAQs and information on TI calculator mailing lists and newsgroups. However, if you have a comment, suggestion, bug report, or something advanced that would only be appropriately asked of the developer of Fargo, please contact me. I will try to respond to all mail sent to me that warrants a response, but please don't be disappointed if I don't -- I get a lot of mail; sometimes I don't answer all of it. You may email me at or . I also have an account on ICQ; my ID is 2300673. NOTE: The Fargo development team used to include two other people, Rob Taylor and Dan Eble. However, I (David Ellsworth) am currently the only one developing it. So please don't try to contact them about Fargo. ------------------------------------------------------------------------------ 3.3: New versions and information ------------------------------------------------------------------------------ New versions will always be available at http://www.ticalc.org. Updates will be announced on the "assembly-92" and "Calc-TI" mailing lists. The Calc-TI list echoes to the newsgroup "bit.listserv.calc-ti". You can download the latest version from: WEB: http://www.ticalc.org/pub/92/asm/shells FTP: ftp.ticalc.org in /pub/92/asm/shells However, the precise directory is subject to change. If you do not find it in one of the above locations, simply start from the top: WEB: http://www.ticalc.org FTP: ftp.ticalc.org in /pub ------------------------------------------------------------------------------ 3.4: Revision history ------------------------------------------------------------------------------ yyyy.mm.dd ---------- 1996.11.10: Fargo v1.0b12 First public release. This release was unofficial; in fact, it was leaked to the public by a beta tester. (It was leaked by the very first beta tester of Fargo. Rather ironic, isn't it?) 1996.12.09: Fargo v1.0b12 - fixed version of CORE.O * Fixed a single-instruction bug which caused programs and libraries to improperly unrelocate when required libraries were not found, resulting in a crash upon execution once all the required libraries were present. 1997.01.02: Fargo v0.1.13 First official public release. * Radically altered the directory organization scheme. It is now possible to compile a Fargo program in any directory. * Streamlined the Fargo distribution. Now only the necessary files, and some small sample programs, are included. * Ported the Fargo file manipulation programs (SUM92, PRGM92, ML92B) to C++ for greater portability. * Gave FLink a rudimentary scripting ability; created a new batch file called AUTOFARG.BAT that automates the task of receiving a backup, putting Fargo into it, and sending it back. * Changed the name of the Fargo shell to "FBrowser" to eliminate confusion between the shell and the core; they now have separate version numbering. * Modified FBrowser to allow folders other than MAIN to be browsed. This does not change the fact that the shell must be in the MAIN folder, though. * Changed the version numbering scheme. This release included the following utility versions: FBrowser v0.2.0 FLink v0.1.5 ML92B v1.0 PRGM92 v1.0 1997.02.26: Fargo v0.1.13 - masked ROM patch * Released patched versions of CORE.O and ROMLIB.92P that allowed Fargo to work on TI-92's with masked (internal) ROM. At the time, ROM 1.11 was the only ROM version being manufactured in masked format, so this patch was released as FIX111.ZIP. 1997.11.01: Fargo v0.1.14 * Fargo now works on any ROM 1.x TI-92 regardless of how much RAM it has. It will *not*, however, work under ROM 2.1. For that you will still need to wait for Fargo II. NOTE: Fargo programs that hook interrupts using the same method that Fargo 0.1.13 used will still need to be modified to work with 256K of RAM. * flib[idle_loop] now properly looks up the APD value. * Switched over to using DJGPP for all the DOS utilities. * ML92B v1.1.0: Can now patch backups using either of two methods, one which generates large backups (107K or 235K), and one which does not increase the size of a backup at all. * TRIM92B v1.0.0: New program. Trims a 92B backup file to its natural size. Can be used to "uninstall" Fargo from a backup if the wraparound method was used to install it. * PRGM92 v1.0.1: See below. * SUM92: Although all the Fargo utility programs now automatically fix the checksums of files generated or modified, this program is still included. You may use it to fix the checksum on any TI-92 Graph Link file. * FLink v0.1.6: The parallel port is now changable. Sound emulation has been added. Note that when Linux FLink is ported to DOS, this version of DOS FLink will become obsolete, which is why I haven't changed it much. 1997.11.02: Fargo v0.1.15 * Fixed some bugs in the 0.1.14 distribution. (I probably should have called this version 0.1.14.1.) 1998.01.09: Fargo v0.2.0.1 First alpha release of Fargo II. * ROM 2.1 support, plus a system that makes it easy for me to add support for any new ROM version that may come out (i.e., the TI-92 Plus module) I also added ROM 1.0b1 support. Not that anyone still has that ROM version. But, I thought I might as well. * The Linux development kit is now distributed. So is the DOS kit, of course. But Linux has been my primary (and only) Fargo development platform for quite some time. It is quite possible that you will find bugs in the DOS development utilities, since I have not tested them much. (This applied to Fargo 0.1.14 as well, though I didn't mention it.) * A true linker, replacing PRGM92. The Fargo Linker is called flinker for short, and can link multiple A68k-generated object files into one .92p file. It also replaces ML92B, as it can read the kernel object file and insert it into a backup file. It no longer supports the obsolete wraparound installation method. * Modified A68k 2.71 to work better with Fargo source code. I changed the version number to 2.71.F1. The "F1" stands for Fargo patch #1. * Because a linker is now used, libraries are accessed simply by including a header file and accessing the library functions by name. The way libraries are written is also different now. I also took the liberty of changing the library symbol convention from "libname@funcname" to "libname::funcname". See the included sample source files to see exactly how things have changed. * Another feature that the new linker allows is the use of one or more bss sections, which the kernel now supports. A bss section is a dynamically allocated, uninitialized block of memory that a program can use to store temporary variables. I use the word "temporary" because the bss block is freed when the program exits. * What used to be "romlib" is now integrated with the kernel. The kernel exports two pseudolibraries: "tios" and "kernel". "tios" contains both ROM and RAM addresses. I've added a fair number of new ROM calls. Where possible, I've used the genuine TI names for ROM symbols. * ROM addresses are now looked up from a table rather than looked up dynamically. It is now necessary for me to specifically add an entry in my table for each ROM version. So far, I've implemented tables for 1.0b1, 1.2, 1.3, 1.4, 1.7, 1.8, 1.10, 1.11, 1.12, and 2.1. The table lookup is done by flinker when it inserts the kernel into a backup file, so there is no overhead involved; the kernel itself never has to do any ROM version checking. * A totally new program/library file format that takes advantage of the new features provided by using a linker. This format contains both a type and a subtype. This type may be used to associate different file types with specific applications, allowing the application to use the subtype any way it pleases. * Fargo programs now run in User mode rather than Supervisor mode. This should have been done from the very start, but wasn't because Fargo beta was leaked before I finalized things. Therefore I felt obliged to keep backwards compatibility with it in later versions. Since Fargo II is completely new, I took the opportunity to finally switch to User mode. Programmers: you will need to get rid of all STOP and MOVE xx,SR instructions (unless they are used in trap handlers). MOVE xx,SR can be replaced with a MOVE xx,D0 / TRAP #1 sequence. * The TI-BASIC fork in a Fargo module now contains "Prgm:EndPrgm" rather than "Prgm:Pause:EndPrgm". The kernel hooks to intercept calls to programs from TI-BASIC are now much faster and cleaner. The same applies to the Shift-ON hook. Also, the kernel now displays a message on the status line rather than flashing the screen when an error is encountered. * The 4-shade and 7-shade grayscale libraries, and FTerm 1.0b7, have been packaged with Fargo. These were not included with Fargo 0.1.x. * Since this is an alpha release, nothing is absolutely guaranteed to stay the same in later releases. Although I can state with fair certainty that backwards binary compatibility will be maintained, even that is not an absolute certainty. * Note that, although the codename for this project is "Fargo II", it is still called Fargo. 1998.01.10: Fargo v0.2.0.2 * Fixed an odd checksum bug that occurred in the DOS version of flinker when patching a backup file (putfargo calls flinker). The same bug was also in sum92, which has been fixed as well. * Fixed an incompatibility bug in flinker that made it screw up when trying to patch certain backups * Improved flinker's name-guessing algorithm (which it uses on a program if you leave out the `-n' option). It now skips over directory names. * Added bin/fargo and bin/autofarg scripts and a sample Makefile to the Linux distribution * Removed trim92b from the distribution * Fixed a typo in flib.asm. In zap_screen, it had "d0-d7/a0-d6" instead of "d0-d7/a0-a6". * Made Linux FLink's put92 and get92b check if the calculator is ready before starting the transmission, and wait 5 seconds before giving up. Made get92b return an exit value of 2 if the user chose not to overwrite the file. Fixed a bug in get92 that was storing the wrong file size in the header (the value it should have been plus 6). Incremented Linux FLink's version to 1.2.1. * Decreased the value of TIMAXTIME in tidev's ti.c. Change this if it doesn't seem to work right for you. * Documented the [space] key feature of FBrowser 0.3.0. * Added a "known bugs" section to the documentation. * Slightly modified the list of planned features. 1998.01.10: Fargo v0.2.0.3 * Fixed a bug in the ROM 1.2 entry of the tios table (HeapFreeIndir was incorrect) 1998.01.13: Fargo v0.2.1 * Changed the executable file format. It now uses compressed relocation, bss, and import tables. Large programs will now be in fact smaller than they were in Fargo 0.1.x. Flinker can still generate files with the old format, mainly so you can see how much smaller they are with the new one. Note that the compressed tables take slightly longer to process, but I think it is worth it. * Restructured flinker to be cleaner and more modular. (The changes are pretty much invisible to the user, though.) Also added rudimentary support for recognizing XRef operand sizes. * Optimized the kernel. It is now a lot smaller. * Added an optional compatibility module. You may link this in with the kernel to make it compatible with Fargo II programs and libraries that were released before Fargo 0.2.1. If you don't link it in, the kernel will be smaller. Patching a backup with the compatibility module enabled is automated by "pfcompat" in DOS and "putfargo-compat" in Linux. Once you're sure you won't need to execute pre-0.2.1 executables anymore, you can go back to using "putfargo". * Fixed a bug in FBrowser where, if there were multiple files at the end of a list starting with the same letter, you couldn't cycle through them in a loop by pressing that letter repeatedly. Incremented its version number to 0.3.0.1. 1998.01.13: Fargo v0.2.2 * Added a Fargo 0.1.x compatibility module. It is named "compat1x.o". When executing Fargo 0.1.x programs, their required libraries must be in the folder "oldfargo". Note that Fargo 0.1.x programs still do *not* work on ROM 2.1; they still have all the limitations that "romlib" imposes. You may install this into a backup by using "putfargo-compat1x" in Linux or "pfcmpt1x" in DOS. If you want to combine both 0.1.x *and* pre-0.2.1 compatibility, you will need to run flinker manually. * Fixed a bug in FBrowser where, if you tried to enter a folder other than the first one listed, that had no Fargo programs in it, the cursor would get messed up when the error dialog box popped up. Incremented its version number to 0.3.0.2. 1998.01.14: Fargo v0.2.3 * Optimized the kernel compatibility modules. The pre-0.2.1 module is now much smaller. * Fixed an error in the shell script "fargo" in the Linux toolkit; it had the extra parameter `-p'. * Fixed a bug in flinker where it would sometimes return a garbage exit code even when there wasn't an error. * Improved flinker's recognition of operand sizes. * Improved the error reporting in flinker. It now shows both the section name and offset for each error encountered, where applicable. * Renamed "ROM_origin" to "ROM_base" in tios.h. 1998.01.16: Fargo v0.2.4 * Made some changes to various documentation files. * Added a "Troubleshooting" section to Fargo.txt. * Fixed a bug in the ROM 2.1 entry of the tios table (WinOpen was incorrect) * Added a new ROM call. I call it "vcbprintf", and it is a virtual callback printf function. This means you can do printf with any custom putchar routine, rather than having to use sprintf to print into a buffer. * Modified FBrowser to display comments and allow program execution even in no-filter mode. Incremented its version to 0.3.1. * Made flinker report the size of the kernel when installing it in a backup file, and the size of a variable when creating a 92p file. * Added a second level of verbosity to flinker. * Removed the '-C' compatibility option from flinker. It now only generates Fargo programs for the current version of Fargo. * Switched to a new directory scheme. There is now an "asm" directory under the Fargo root, and there are four subdirectories under it: "include", "kernel", "lib", and "prgm". All include files, including the ones for libraries, go in "include". Yes, I think this makes more sense than putting them in "lib". 1998.01.22: Fargo v0.2.5 * Fixed a bug in the Fargo 0.1.x compatibility module where modules that used the 0.1.x kernel pseudolibrary would not properly unrelocate; therefore they would crash upon being run a second time. * Fixed a bug that caused Fargo II programs to load whether or not their required libraries were found, often causing crashes. * Fixed a bug that caused LCD_MEM not to be saved and restored after a module failed to load. * Took the Fargo 0.2.0.x compatibility module out of the distribution. If anyone wants it back, please contact me. * Reworked the Fargo 0.1.x compatibility module so that it now has romlib integrated with itself. If romlib is present in the "oldfargo" folder, it will be ignored. Also removed the checking that caused the Fargo 0.1.x compatibility module to refuse to work on incompatible ROMs. WARNING: If you install the Fargo 0.1.x compatibility module on a TI-92 with a ROM version (such as 2.1) that was incompatible with Fargo 0.1.x, all the Fargo 0.1.x programs you run will have to have been specially patched to work with your ROM! Otherwise your calc will most likely crash. * Fixed the sprite test program so that the sprite is visible everywhere on the screen, without the compromise of flicker. * Added strlen(), strncmp(), strncpy(), strcat(), and strchr() to the tios pseudolibrary. Added ROM 1.5 support. * Did another major overhaul of flinker. It now handles operand sizes and error reporting even better (and more cleanly). * Made some more modifications to A68k. It now properly differentiates between PC-relative and absolute references to external symbols. Incremented its version to 2.71.F2. 1998.02.07: Fargo v0.2.6 * Added support for Fargo programs that interface with TI-BASIC. These can be either functions or programs. Functions return a value on the estack. Both functions and programs can take parameters. * Added a sample Fargo/TI-BASIC function to the distribution. It is called "testfunc", and takes a string as a parameter, returning the same string doubled, with an "=" in between the two copies of the string. * Fixed the ROM dumping programs so that they always dump memory in the correct range. * Fixed a bug in "ticat", the tidev-compatible version of "cat", where it was buffering outputted characters instead of outputting them immediately. One of the effects of this was that ROM dumps made using "ticat" would not be complete. * Fixed some bugs in FTerm. Now Diamond--. correctly outputs an ASCII character, and the cursor keys echo themselves if local echo is enabled. Changed FTerm's version number to 1.0.8. * Put the 0.2.0.x compatibility module back in the distribution. It wasn't requested, but I thought I might as well. If you want to use it, though, you'll have to run flinker manually. * Moved the tios tables to a kernel sourcefile, where they belong. Modified flinker to look for the appropriate tios table in the linked kernel object files, since the tables are no longer hardwired into flinker itself. * Improved the tios naming convention a bit. "main_lcd" has been renamed to "globals", and "kb_vars" has been renamed to "kb_globals". Both of the old names are still provided as aliases in tios.h. * Renamed the tios function ST_redraw to ST_eraseHelp, which is its real name; renamed ST_message to ST_showHelp, since it is the complement of ST_eraseHelp. ST_eraseHelp can be used to update the status line if you set the flag specifying that a help message is being displayed. * Added some functions to the tios pseudolibrary. Misc: push_quantum(), check_estack_size(), OSAlexOut(), ERD_dialog() C functions: memset(), memcmp(), memcpy(), memmove(), abs(), labs() Integer math: _du32u32(), _ds32s32(), _ds16u16(), _ru32u32(), _rs32s32(), _ru16u16(), _rs16u16() * Made many revisions to ROM-2_1.txt and a small revision to RAM-1_x.txt. 1998.04.09: Fargo v0.2.7 * Fixed a bug in the Linux distribution: autofarg was missing. * Fixed a bug in gray7lib. It was doing "add #4,sp" after pushing a word. * Removed the note from tidev's readme saying that the "$4" serial link code was untested. It has been tested and it works. * Made some optimizations to FTerm; it should be faster now. Incremented the version number to FTerm 1.0.9. * Added a function to the tios pseudolibrary: DerefSym() * Added support for an alternate version of ROM 1.10, which is dated 03/26/96 instead of 03/20/96. * Added a section to the documenation: "Running old Fargo programs". This describes how to install Fargo onto your calc in a configuration that will allow Fargo 0.1.x programs to be run. To further facilitate this, I've added an "afcompat" script, and an "asm/oldfargo" directory with three Fargo 0.1.x libraries in it: flib, graylib, and graylib7. 1998.04.09: Fargo v0.2.7.1 * Fixed some errors which made it into the distribution: - The "preinstalled backups" uploaded to ticalc.org did not in fact have Fargo installed in them; they were just clean backups. - FTerm, and possibly other .92P files, were not properly recompiled. - There was a small spelling mistake in the description for hexdump. ------------------------------------------------------------------------------ 3.5: Known bugs ------------------------------------------------------------------------------ The following is a list of bugs in Fargo that have been reported to me and may have not been fixed yet. * The Fargo ROM dumping programs sometimes insert an extraneous bit at the beginning of the transfer, causing the whole transfer to be shifted by one bit. This seems to happen only with homemade links, and only under certain environments (on the PC end). * The DOS version of flinker sometimes crashes, and/or generates corrupt output files. ------------------------------------------------------------------------------ 3.6: Planned features ------------------------------------------------------------------------------ The following features are planned for future releases of Fargo II. Once I'm satisfied with the feature list, it will go into the beta stage. Currently it is still in the alpha stage. Alpha releases will be numbered 0.2.x, 0.3.x, 0.4.x, etc.; beta releases will start with 1.0.0 and go up from there. I will not be so bold as to speculate about a "final" release. I would prefer to keep Fargo in beta indefinately. * TI-92 Plus and TI-89 support. Of course this will have to wait until the actual products are released by TI. ;-) * Static memory copying (TSR support and general heap reallocation support), overlays, and module decompression * Many more ROM calls, and documentation for more of the calls. * A bitplane graphics library. This library will provide calls to allocate and deallocate virtual screens (which will consist of 1, 2 or 3 bitplanes) and to switch between screens. It will automatically do page flipping to simulate grayscale. The LCD RAM at $4440 (or $4720 in ROM 2.1) will no longer be used by Fargo directly; programs will be required to allocate their own screens. This will not require any more memory than is used already, because earlier versions of Fargo save the TIOS screen in a temporary 3840 byte buffer and later restore it. It will also be possible to mark screens as overwritable, so that nested program calls won't waste memory allocating extra screens. * A graphics library with integrated bitplane support, so you will be able to (for example) paste a non-aligned sprite, or draw a line in any shade of gray. The library calls will of course also work for black and white (one bitplane). Grayscale will no longer need to be treated as a special case. * Toolkit ports to additional platforms. * A DOS port of Linux FLink. * I may write a utility that will load multiple files into a backup file, so that you won't have to send them separately. This may or may not be integrated with flinker. * I may write a Fargo program that will allow you to send the Fargo kernel to another TI-92 with a different ROM version. * FBrowser will support plugins, filtering by file type, and multiple views (such as icons, comments only, file stats, etc.). It will also allow itself to be called from another Fargo program (as a library) with the option of a callback filter. * I am considering releasing the kernel, shell, and development kit source code. tiemu-3.03-nogdb+dfsg/docs/ti_hw/fargo/Handles.txt000066400000000000000000000056351220314353500220560ustar00rootroot00000000000000---------------------------------------------------------------------------- INTRODUCTION ---------------------------------------------------------------------------- The TI-92 is capable of dynamically allocating memory blocks. There are routines built into its ROM for this. It keeps track of allocated memory by assigning a "handle" to each individual block of allocated memory. A handle is a convenient way of keeping track of a single memory block. Even if the block moves around, the handle does not change. Handles are, in a way, "pointers to pointers". On the TI-92, a handle is a word-sized integer. Each handle has a corresponding pointer which points to the memory block represented by the handle. This pointer is subject to change when other memory blocks are deleted or resized. These pointers are kept in a table; this table is pointed to by [$5D42], which usually points to $78B4. To find the address of a handle's memory block, use the following formula. Brackets [] are used to designate pointer indirection. address = [[$5D42] + handle * 4].L - 2 If this address evaluates to zero, the handle is unallocated. If it is nonzero, it points to the beginning of the memory block. The first word in the block, [address], contains the size of the block in words. Memory blocks are kept in a linked list, starting from handle $0000. From there, the handles may be in any order. The next block in the linked list may be found with the following formula: next_address = address + [address].W * 2 The linked list is terminated when [next_address] equals zero. ---------------------------------------------------------------------------- STATIC MEMORY HANDLES ---------------------------------------------------------------------------- Handles 0000 through 0014 are system handles; each one is reserved for a specific kind of data. These handles are always present, and are never deleted. All handles from 0015 inclusive can contain any kind of dynamic data, such as variables, folders other than "main", history entries, and the custom menu. NOTE: I'd advise against using these handles directly. They are probably subject to change in future ROM versions, and are arbitrarily in the order that they are in only because the ROM allocates them in that order during bootup. Anyway, they are all pointed to by various RAM globals, some of which may be documented in RAM-1_x.txt and/or ROM-2_1.txt. Handle Data Pointed to ------ --------------- 0000 ? 0001 ? 0002 ? 0003 ? 0004 ? 0005 ? 0006 ? 0007 ? 0008 ? 0009 ? 000A contents of clipboard 000B names and handles of all folders (including "main") 000C names and handles of all variables in the folder "main" 000D ? 000E current home screen entry 000F PrgmIO screen (239x103 bitmap) 0010 ? 0011 ? 0012 ? 0013 Graph screen (239x103 bitmap) 0014 ? menu data tiemu-3.03-nogdb+dfsg/docs/ti_hw/fargo/LowLevel.txt000066400000000000000000000234141220314353500222240ustar00rootroot00000000000000----------------------------------------------------------------------------- INTRODUCTION ----------------------------------------------------------------------------- If all a computer had was its RAM and ROM, it would just be an inert box doing invisible calculations. To connect to the outside world, computers need I/O ports. On the TI-92, these ports are used to access the keyboard, link port, LCD, and some other hardware settings. This text file describes how the TI-92 organizes its memory, and lists all of the known I/O ports. Since the 68000 processor has no dedicated instructions for reading and writing I/O ports, all I/O must be memory-mapped. This means that I/O ports are read and written by accessing specific addresses in memory. The addresses in the range 600000-60001F correspond to memory-mapped I/O. Directly accessing I/O ports has its advantages and disadvantages. It is very low-level, and gives you complete control. However, it can be a complex process, and why reinvent the wheel? For this reason, most I/O tasks (such as reading keys, sending and receiving through the link port, and changing the contrast) are already handled by the TI-92's ROM. There are some times when it is still best to directly access the I/O ports. The TI-92 is capable of recognizing several keys held down at once, but the ROM has no built-in provision for this. When you want to read multiple keys at once in a program, you must use direct I/O. ---------------------------------------------------------------------------- THE MEMORY MAP ---------------------------------------------------------------------------- Memory addresses are 4 bytes long (32 bits). However, the 68000 processor has a 24 bit addressing bus. For this reason, addresses listed here in hexidecimal will be 6 digits long. On the TI-92, memory is mapped out as follows: 000000-1FFFFF : RAM 200000-3FFFFF : Module ROM, or masked ROM if there's no module 400000-5FFFFF : Module ROM 600000-6FFFFF : Memory mapped I/O (lower 6 bits) 700000-FFFFFF : Nothing (floating bus) : This will probably be used by the TI-92 Plus Module. Note that, for example, the RAM range covers 2 Mb. This does not mean there is 2 Mb of RAM; it means that any RAM accesses beyond the maximum (usually 128 kb) will wrap around to the beginning. The same goes for ROM, except that the maximum is usually 1 Mb. Most TI-92 ROMs use: 000000-01FFFF to address RAM. 200000-2FFFFF to address ROM if it is masked (soldered onto the board). 400000-4FFFFF to address ROM if it is contained in a ROM module. 600000-60001F to address I/O. Note: The TI-92 is capable of addressing 256 kb of interleaved RAM. In this case, it would be addressed in the range 000000-03FFFF. The European language upgrade module (ROM 2.1 / TI-92 II) and the TI-92 Plus Module take advantage of this capability, as well as expanding the ROM to 2 MB (400000-5FFFFF). ----------------------------------------------------------------------------- THE I/O PORTS ----------------------------------------------------------------------------- :RO = read-only :WO = write-only (returns random values when read) :RW = read/write MSB LSB <76543210|76543210> :RW [600000] <.....2..|........> = something to do with keyboard <..5.....|........> = bits <....0> of contrast <........|.......0> = clear: interleave RAM (allows use of 256K of RAM) <........|.....2..> = set: generate Auto-Int 7 when memory below [000120] : is written :WO [600002] <........|........> = :WO [600004] <........|....3...> = set: 000000..1FFFFF mapped to 200000..3FFFFF :WO [600006] <........|........> = :WO [600008] <........|........> = :WO [60000A] <........|........> = :RW [60000C] <765.3210|........> = (write) link status <........|7...321.> = (read) link status <........|..5.....> = (read) set: one byte receive buffer has a byte <........|.6......> = (read) set: one byte transmit buffer is empty :RW [60000E] <.......0|........> = set red output, if direct port access enabled <......1.|........> = set white output, if direct port access enabled <.....2..|........> = read red output <....3...|........> = read white output <.6......|........> = enable direct port access <........|76543210> = read a byte from the receive buffer (1 byte buffer) <........|76543210> = write a byte to the transmit buffer (1 byte buffer) :WO [600010] <76543210|76543210> = Address of LCD memory divided by 8 :WO [600012] <..543210|........> = LCD horizontal frequency (?maybe?) : The TI-92's ROM writes $31 to this port during : initialization. <........|76543210> = $100 - number of LCD scanlines : If the number of scanlines is smaller than $80 (the : actual height of the LCD) the display will be : duplicated in the lower half. Decreasing the height : darkens the LCD; increasing the height lightens the : LCD. The TI-92's ROM writes $80 to this port during : initialization. :RW [600014] <........|........> = :RW [600016] <........|76543210> = Programmable rate generator. Set the timer's init- : ial value by writing it to this port. The timer is : incremented every 6250 clock cycles, unless it has : a value of zero, in which case it is reset to its : initial value. The LCD is refreshed every 16th time : this timer is incremented. : : See also Auto-Ints 1 and 5 in Traps.txt. : : The incrementation rate would be exactly 1600 Hz if : the processor's clock rate were exactly 10 MHz. In : reality, it averages around 1400 Hz, and is depen- : dent on battery power (among other things). : : The ROM sets the initial value of the timer to $B2, : effectively giving it a period of 79 ticks. It uses : the timer for Auto Power Down, which is set to : occur after 6000 interrupts. If the clock rate were : 9.875 MHz, the interrupt rate would be 20 Hz and : countdown delay would be 5 minutes. I think it is : safe to assume that the designers of the TI-92 : intended the APD delay to be 5 minutes. : : For this reason, and becaues it is unlikely that : the designers intended the clock rate to be any- : thing other than 10 MHz, I am inclined to think : that they chose the initial value to be $B2 instead : of $B1 for a very particular reason: auto-int 5 : will coincide with auto-int 1 with a period of 4, : the maximum period possible. This insures that the : TI-92 will run more smoothly than it would if the : two interrupts coincided with a period of 2 or 1. : If you don't understand this, don't worry -- it is : only a matter of curiosity. :RW [600018] <......10:76543210> = keyboard row mask; setting a bit masks the : corresponding row of the keyboard from being : read by [60001B]. :RO [60001A] <......1.|........> = ON key status (0=down, 1=up) <........|76543210> = keyboard column mask; if a bit is clear, one or : more keys in the corresponding column are being : held down. Keys in rows masked by [600018] are : ignored. :WO [60001C] <...43210|........> = Something to do with LCD : The TI-92's ROM writes $21 to this port during : initialization, and $FF when the calculator is : turned off. <........|....3210> = bits <4321.> of contrast :WO [60001E] <........|........> = ----------------------------------------------------------------------------- THE KEYBOARD MATRIX ----------------------------------------------------------------------------- As was hinted in the I/O ports section, the keyboard is accessed internally as a matrix with 10 rows and 8 columns. This matrix can be read by writing [600018], pausing to allow the I/O to recover, then reading [60001B]. Row +-------+-------+-------+-------+-------+-------+-------+-------+ V Col>| Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | +-------+-------+-------+-------+-------+-------+-------+-------+-------+ | Bit 0 | down | right | up | left | hand | shift |diamond| 2nd | | Bit 1 | 3 | 2 | 1 | F8 | W | S | Z | unused| | Bit 2 | 6 | 5 | 4 | F3 | E | D | X | unused| | Bit 3 | 9 | 8 | 7 | F7 | R | F | C | STO | | Bit 4 | , | ) | ( | F2 | T | G | V | space | | Bit 5 | TAN | COS | SIN | F6 | Y | H | B | / | | Bit 6 | P | ENTER2| LN | F1 | U | J | N | ^ | | Bit 7 | * | APPS | CLEAR | F5 | I | K | M | = | | Bit 8 | unused| ESC | MODE | + | O | L | theta |backspc| | Bit 9 | (-) | . | 0 | F4 | Q | A | ENTER1| - | +-------+-------+-------+-------+-------+-------+-------+-------+-------+ Note: ENTER1 is on the alphabetic _and_ numeric keypads. ENTER2 is next to the cursor pad. Because of the way the TI-92's keyboard is wired, if you hold down three keys that form the corners of a rectangle, the TI-92 will think you are also holding down the key at the fourth corner. The [ON] key is special, and is not part of the matrix. ----------------------------------------------------------------------------- INTERNAL ROUTINES ----------------------------------------------------------------------------- This section contains some system routines that are used in the TI-92's ROM to perform specific tasks. ------------ Reset_Link() ------------ Wait $4E20 Mask Int 5 Read [60000C].W [60000C].B = $E0 Wait $0100 Set bit 0 of [60000E].B Set bit 1 of [60000E].B Wait $0100 Clear bit 0 of [60000E].B Clear bit 1 of [60000E].B Wait $0100 Flush() ------- Flush() ------- [60000C].B = $8D tiemu-3.03-nogdb+dfsg/docs/ti_hw/fargo/RAM-1_x.txt000066400000000000000000000174701220314353500216040ustar00rootroot00000000000000----------------------------------------------------------------------------- RAM ADDRESSES (LOW MEMORY GLOBALS) ----------------------------------------------------------------------------- Note: These addresses apply only for ROM versions 1.2 through 1.12. 00000 : interrupt vector table to 000FF 00100 : 00120 : (4000) user stack 04120 : (0320) supervisor stack 04440 : (0F00) LCD memory 05340.B : contrast 05341.B : 05342.B : Break indicator (nonzero = [ON] has been pressed) 05343.B : 05346.W : 05348 : (0008)[6] countdown timers, numbered from 0 to 5 +0000.L : initial value of timer +0004.L : current value of timer; decremented every time Auto-Int 5 is triggered. When it reaches zero, it is reset to its initial value. Notes: Timer 1 is the countdown timer for APD (Auto Power Down). This timer is initialized to 00001770 whenever data is received into the software link or keyboard buffers. When it reaches zero, if the TI-92 is idle it will turn itself off. 05380 : (0002)[6] words (corresponding to 6 timers at 05348) +0000.W : When a timer expires, this word is set to 0001. 0538E : (000C)[2] structures (corresponding to 6 timers at 05348) +0000.L : When a timer expires, this callback function is called +0004.L : When a timer expires, this longword is decremented +0008.L : 053E8 : (0088) circular byte buffer (used for link transmit buffer) +0000.W : buffer tail (insert byte at [buffer+tail]) +0002.W : buffer head (read byte from [buffer+head]) +0004.W : size of buffer (default: 0080) +0006.W : number of bytes currently stored in buffer +0008 : circular buffer 05470 : (0088) circular byte buffer (used for link receive buffer) +0000.W : buffer tail (insert byte at [buffer+tail]) +0002.W : buffer head (read byte from [buffer+head]) +0004.W : size of buffer (default: 0080) +0006.W : number of bytes currently stored in buffer +0008 : circular buffer 054F8.B : set to 00 when link buffers are flushed 054F9.B : set to FF upon entering link ISR, set to 00 upon exiting and when link buffers are flushed 054FA.B : set to 00 when link buffers are flushed 054FB.B : set to FF when link buffers are flushed set to 00 when link buffers are flush2-ed 054FC.B : set to 00 when link buffers are flush2-ed 054FD.B : 054FE.W : saved interrupt mask (see calls 4029C6 and 4029D2) 05500.W : 05508.L : SSP (saved when calculator turns off) 0550C.L : set to ________ when calc turns off, set to 0 when calc turns on 05510.L : checksum from 078B4 to [05536] plus from 00120 to 00FFF (saved when calculator turns off) 05518.B : max contrast (default: 1F) 05519.B : ? something to do with contrast (and maybe LCD ON/OFF status) 0551A.L : pointer after memory heap 05520.L : pointer to saved state information ($38 byte structure) 056A0.L : {estack_max_index} 056A4.L : {top_estack} 056A8.W : handle of estack 056AA.L : pointer to bottom of estack 056B0.W : handle of currently running TI-BASIC program (zero if none) 056B2.L : pointer to top TI-BASIC token 056B6.L : pointer to current TI-BASIC token 056C4.L : pointer to string for get_lower_char functions 056C8.B : character result of get_lower_char functions 05764.L : menu pointer for 1:Home 05768.L : menu handle for 1:Home 0576A.L : menu pointer for 2:Y= Editor 0576E.L : menu handle for 2:Y= Editor 05770.L : menu pointer for 3:Window Editor 05774.L : menu handle for 3:Window Editor 05776.L : menu pointer for 4:Graph 0577A.L : menu handle for 4:Graph 0577C.L : menu pointer for 5:Table 05780.L : menu handle for 5:Table 05782.L : menu pointer for 6:Data/Matrix Editor 05786.L : menu handle for 6:Data/Matrix Editor 05788.L : menu pointer for 7:Program Editor 0578C.L : menu handle for 7:Program Editor 0578E.L : menu pointer for 8:Geometry 05792.L : menu handle for 8:Geometry 05794.L : menu pointer for 9:Text Editor 05798.L : menu handle for 9:Text Editor 05820 : (002A) window structure 0584A.W : ? 0584C : (002A) window structure 05876.W : ? 05878 : (002A) window structure for PrgmIO 05904.W : name length of variable in 7:Program Editor 05906.L : pointer after name of variable in 7:Program Editor 0590A : $00 + folder\name of variable in 7:Program Editor 05946 : (002A) window structure for 7:Program Editor 05A28.L : pointer after name of variable in 9:Text Editor 05A2C : $00 + folder\name of variable in 9:Text Editor 05A68 : (002A) window structure for 9:Text Editor 05AD2 : (002A) window structure for 6:Data/Matrix Editor 05BA0.W : {colint} 05BA2.W : {rowint} 05C10 : (0012) screen structure +0000.L : pointer to current video buffer +0004.B : width-1 (in pixels) +0005.B : height-1 (in pixels) +0006.W : current font +0008.W : line thickness +000A.W : x pos +000C.W : y pos +000E.B : left edge of clipping rect +000F.B : top edge of clipping rect +0010.B : right edge of clipping rect +0011.B : bottom edge of clipping rect 05C22.W : character height (current font) 05C28.W : character width (current font) 05C2A.W : text height (current font) 05C30.W : screen width (bytes) 05C44 : (0008) rect: used to store tempory bounding box) 05C4C : (0008) rect: used to store tempory bounding box) 05C54.L : pointer to current window 05C58 : (002A) window structure used to store standard window 05CA6 : (002A) window structure 05CD0.W : used to store a copy of 057B8 05CD2 : (0012) used to store a copy of the screen structure at 05C10 05D04.W : handle of custom menu labels (what you see) 05D06.W : handle of custom menu actions (what you get) 05D2C.W : max number of elements in heap table before it needs to be resized 05D2E.L : pointer to first byte of free memory in heap 05D32.L : gen mem scratch var? contents depend on what was last used.. 05D36.L : pointer to top of memory heap 05D3C.B : ? 05D3E.L : ? 05D42.L : pointer to heap table 05D8C.W : handle of folder list 05D8E.W : handle of main folder (?) 05D72.W : handle of main folder (?) 05DE4 : (002A) window structure for 4:Graph 05E38 : (002A) window structure for 3:Window Editor 05E8C : (002A) window structure for 5:Table 065CE : (002A) window structure for 2:Y= Editor 06B0E : (002A) window structure for 8:Geometry 07512.W : 1=display graph number (i.e. if there are two graphs activated) 0755E : (002A) window structure 07594.W : current keypad scancode 07596.W : current status of modifiers 075A0.W : current keypad scancode (same as 07594?) 075A2.W : current status of modifiers (same as 07596?) 075AA : (000A) circular word buffer (used for key buffer) +0000.W : buffer tail (insert word at [buffer+tail]) +0002.W : buffer head (read word from [buffer+head]) +0004.W : size of buffer (default: 0002) +0006.W : number of bytes currently stored in buffer +0008 : circular buffer 075DA : buffer for storing link packets 075E4.W : number of items in history 075E6.W : item in history currently pointed to 0761C.W : status line flags, part 1 <........|.......0> = 2nd has been pressed <........|......1.> = diamond has been pressed <........|.....2..> = shift has been pressed <........|....3...> = hand has been pressed <........|..5.....> = 2nd-hand has been pressed <........|.6......> = angle mode : 0=RADIAN : 1=DEGREE <.......0|7.......> = exact/approx : 0=AUTO : 1=EXACT : 2=APPROXIMATE : 3=AUTO (?) <...432..|........> = graph mode : 1=FUNCTION : 2=PARAMETRIC : 3=POLAR : 4=SEQUENCE : 5=3D <.65.....|........> = activity : 0=idle : 1=busy : 2=paused <7.......|........> = a help message is being displayed 0761C.W : status line flags, part 2 <........|....32..> = battery level : 0=good : 1=replace soon : 2=replace NOW! 078B4 : Start of dynamic heap tiemu-3.03-nogdb+dfsg/docs/ti_hw/fargo/ROM-2_1.txt000066400000000000000000000574221220314353500215150ustar00rootroot00000000000000char = signed 8-bit integer short = signed 16-bit integer int = signed 16-bit integer long = signed 32-bit integer void * = absolute 32-bit pointer ? = name and function unknown ?something = guessed name, where actual name is unknown something? = guessed name, where actual name and function is uncertain {something} = description, where name is unknown {something?} = description, where name is unknown and function is uncertain ----------------------------------------------------------------------------- typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long LONG; typedef signed char SBYTE; typedef signed short SWORD; typedef signed long SLONG; typedef LONG size_t; typedef (void *) EStackIndex; typedef WORD EStackDisplacement; typedef union { void *v; BYTE *b; WORD *w; LONG *l; SBYTE *sb; SWORD *sw; SLONG *sl; } PTR_ALL; typedef WORD HANDLE; typedef struct { HANDLE h; // handle of folder WORD ?disp; // displacement of symbol } HSYM; typedef struct { BYTE left; BYTE top; BYTE right; BYTE bottom; } RECT; typedef struct { WORD Flags; // 00 BYTE CurFont; // 02 BYTE CurAttr; // 03 BYTE Background; // 04 /* blank */ // 05 WORD TaskID; // 06 WORD CurX; // 08 WORD CurY; // 0A WORD CursorX; // 0C WORD CursorY; // 0E RECT Client; // 10 RECT Window; // 14 RECT Clip; // 18 RECT Port; // 1C WORD DupScr; // 20 WINDOW *Next; // 22 char *Title; // 26 } WINDOW; typedef struct { WORD left; WORD top; WORD right; WORD bottom; } WIN_RECT; typedef struct { EStackIndex i; EStackDisplacement o; } ESTACK_AND_OFFSET; typedef struct { BYTE name[8]; WORD ?flags; HANDLE hVal; } SYM_ENTRY; #define H_NULL (HANDLE)0 #define SETUP_FAST_DEREF register scratchHeap = Heap; #define DEREF(h) Heap[h] #define FDEREF(h) scratchHeap[h] #define DEREF_SYM(hsym) DerefSym(hsym) #define FDEREF_SYM(hsym) (FDEREF[hsym.h] + hsym.?disp) #define STOF_ESI 0x4000 #define STOF_HESI 0x4003 #define TRY if(!(scratch = ER_catch(errorframe))) { #define ONERR ER_success(); } else { #define ENDTRY } #define PASS ER_throwVar(scratch) #define UNDEFINED_TAG 0x2A #define LIST_TAG 0xD9 #define MATRIX_TAG 0xDB #define END_TAG 0xE5 #define ER_STOP 2 #define ER_DIMENSION 230 #define ER_MEMORY 670 #define ER_MEMORY_DML 810 ----------------------------------------------------------------------------- 005620 BYTE ? 005622 BYTE OSOnBreak 005623 BYTE ?OSDisableBreak 005624 WORD {saved SR} 0057F9 BYTE ? 0057FA void *{end of usable RAM} 005806 float ?scratch1 005812 float ?scratch2 005910 void *? 005914 void *? 005918 void *? 00591C void *? 005920 void *? 005924 void *? 005928 void *? 00592C void *? 005930 void *? 005934 void *? 005938 void *? 00593C void *? 005940 void *? 005944 void *? 005948 void *? 00594C void *? 005968 float ? 005972 float ? 00597C EStackIndex ?bottom_expression 005980 EStackIndex estack_max_index 005984 EStackIndex top_estack 005988 HANDLE ?estack_handle 00598A EStackIndex bottom_estack 00598E BYTE {indicates how a function returned} 005990 HANDLE NG_code_handle 005992 LONG ? 005996 BYTE *{current TI-BASIC instruction} 00599C BYTE {error something} 00599E WORD ERR_code_handle 0059A0 WORD {error something} 0059A2 WORD {error something} 0059A4 BYTE *?{text being interpreted} 0059B4 float ? 0059BE float ? 0059CA BYTE ?tag0 0059CB BYTE ?tag1 0059CC BYTE ?tag2 0059CE WORD ?estack_size 0059D0 LONG ?{flags} 0059D4 WORD ?{flags} 0059D6 WORD NG_control 0059D8 LONG ? 0059DC LONG ? 0059E0 LONG ? 0059E4 LONG ? 0059E8 WORD ? 0059EA WORD ? 0059EC WORD ? 0059EE WORD ? 0059F0 LONG ? 0059F4 EStackIndex ?reg0 0059F8 EStackIndex ?reg1 0059FC EStackIndex ?reg2 005A00 EStackIndex ?reg3 005A04 EStackIndex ?reg4 005A08 EStackIndex ?reg5 005A36 BYTE *{TI-BASIC text being interpreted} 005A3A BYTE *{TI-BASIC text being interpreted} 005A80 {pointer to event handler callback function} 005A84 WORD EV_runningApp 005A86 WORD EV_currentApp 005A88 WORD EV_appA 005A8A WORD EV_appB 005A8E WORD EV_errorCode 005B84 HANDLE ? 005D80 WORD colint 005D82 WORD rowint 005DB2 WORD wData.Flags 005E7A HANDLE hdmfolder 005E7C BYTE dmTag 005EDC ?DATA *dataptr 005EF0 void *?scr_vidbuf 005EF4 BYTE ?scr_max_x 005EF5 BYTE ?scr_max_y 005EF6 WORD ?scr_attr 005EF8 WORD ?scr_line_thickness 005EFA WORD ?scr_x_pos 005EFC WORD ?scr_y_pos 005EFE RECT ?scr_clip_rect 005F02 WORD {character height} 005F04 RECT ScrRect 005F08 WORD ?SysFontX 005F0A WORD SysFontY 005F0C BYTE GL_ShadeMods[2] 005F0E WORD GL_ShadeOffset 005F10 WORD ?SysScrWidth 005F30 WINDOW FirstWindow 005FEC BYTE GOK_Flag 005F64 .bss from dialog.o (0x000C bytes) 005F64 WORD ? 005F66 WORD ? 005F68 WORD ? 005F6A WORD ? 005F6C CurTE 006000 .bss from ?heap.o (0x0022 bytes) 00600C WORD {number of elements in the heap table} 00600E void *? 006012 void *? 006016 void *? 00601A void *{first free byte in the heap} 00601C BYTE HeapAllocSysFlag 00601E void *?scratch 006022 void **Heap 006042 BYTE ?some_symbol_name[8] 00604C WORD ?num_symbols_in_last_used_folder 00604E WORD ?whatever_in_last_used_folder 006050 SYM_ENTRY *?last_used_folder 006054 SYM_ENTRY *?last_used_folder 006058 SYM_ENTRY *?last_used_folder 006060 WORD SymTempFolCount 006066 BYTE *?some_folder_name 00606A HANDLE ?some_folder_handle 00606C HANDLE ?folderList 006070 HANDLE DefTempHandle 006072 WORD ? 006074 WORD {error code} 006076 WORD ? 0060BA WORD gr_flags 0060BC ? *gr_active 0060C0 ? *gr_other 00616C WINDOW wTable1 006196 WINDOW wTable2 006BA8 zFit 006BD0 WORD seqmode 006CB0 .bss from aptabled.o (0x0090 bytes) 006DB0 WORD SE_offset 007950 WORD MO_splitScreen 007952 WORD MO_graphCount 007956 WORD MO_fix 00795C WORD MO_flags 00795E WORD ? 00796E option 0079BE ?BUFFER ?key_buffer 007A36 WINDOW {status line window} 007A60 LONG ?ST_flags 007A7C void **?current_stdout_stream 007D30 LONG {random number seed} 40069E _bcd_math() 400EAC void ER_throwVar(WORD errorNum) 400ED6 WORD ER_catch(void *ErrorFrame) 400EFC void ER_success(void) 401C20 {TRAP 0 origin} 402102 void off(void) 402106 void idle(void) 40210E OSClearBreak() 402116 WORD OSCheckBreak(void) 40211E OSDisableBreak() 402124 OSEnableBreak() 402BFA float FP360 = 360.0 402C04 float FP180 = 180.0 402C0E float ?FPNINE = 9.0 402C18 float ?FP45 = 45.0 402C22 float RAD2DEG = 57.29577951308232 402C2C float DEG2RAD = 0.0174532925199433 402C36 float FPZERO = 0.0 402C40 float FPPTONE = 0.1 402C4A float ?FP24THPI = 0.13089969389957 402C54 float FPPTFIVE = 0.5 402C5E float FPPTNINE = 0.9 402C68 float FPONE = 1.0 402C72 float ?FPSQRT2 = 1.4142135623731 402C7C float ?FPTWO = 2.0 402C86 float ?FPTHREE = 3.0 402C90 float ?FPTWOPI = 6.28318530718 402C9A float ?FPTEN = 10.0 402CA4 float ?FPNTEN = -10.0 402CAE float ?FP12 = 12.0 402CB8 float ?FP14 = 14.0 402CC2 float ?FP20 = 20.0 402CCC float ?FP70 = 70.0 402CD6 float FPBIGGEST 402CE0 float FPNEGBIGGEST 402CEA float FP16000 = 16000.0 402CF4 float FPN16000 = -16000.0 402CFE float ?FPMAXINT = 32767.0 402D08 float ?FPNMAXINT = -32768.0 402D12 float ?FPMAXWORD = 65535.0 402D1C float ?FP1E14 = 1.0E+14 402D26 float FP_INVALID 402CFE float ?FPLOGE = 0.4342944819032518 4035F4 void {clear key buffer}(?BUFFER *buffer) 40D956 void {resets some tag pointers}(void) 40D9D8 void ?push_01_01_1F(void) 40DA08 void ?push_00_1F(void) 40DA2E void ?push_01_01_20(void) 40DA5E void ?push1(void) 40DA7A void push0(void) 40DA96 void ?push_01_01_00_21(void) 40DAD2 void ?push2(void) 40DAEE ?() 40DB30 ?() 40DB72 ?() 40DBB4 ?() 40DBF2 ?() 411302 ?{calls a function}() 4115AA delete_list_element() 417D5E ?(EStackIndex esi) 41896C display_statements() 418B00 void Parse1DExpr(EStackIndex OldTop, Boolean torf, unsigned short width) 421E62 void ?{interpret TI-BASIC text}(EStackIndex esi) 423856 void ?(EStackIndex esi) 423922 void push_simplify_statements(EStackIndex esi} 423C84 {instruction -> routine table} 42A91E void {resets some stuff}(void) 42FD64 void push_quantum(BYTE tag) 42FD86 void push_quantum_pair(BYTE tag1, BYTE tag2) 42FDB6 void push_between(EStackIndex bottom, EStackIndex top) 42FE06 void delete_between(EStackIndex bottom, EStackIndex top) 42FE34 WORD deleted_between(EStackIndex bottom, EStackIndex top) 42FE58 void delete_expression(EStackIndex esi) 42FE70 WORD deleted_expression(EStackIndex esi) 42FE88 void move_between_to_top(EStackIndex bottom, EStackIndex top) 42FEAE WORD moved_between_top_top(EStackIndex bottom, EStackIndex top) 42FED4 EStackIndex next_expression_index(EStackIndex esi) 4300F2 void push_expression(EStackIndex esi) 43010A BYTE min_quantum(BYTE a, BYTE b) 430122 void push_next_arb_int(void) 43013A void push_next_arb_real(void) 430152 void push_expr_quantum(EStackIndex op1, BYTE tag) 43016A void push_expr2_quantum(EStackIndex op1, EStackIndex op2, BYTE tag) 43018C Boolean ?is_statement(EStackIndex esi, BYTE tag) // is_executable?? is_free_of_tag? 430216 void {reset a whole lot of stuff}(void) 4302B2 void ?create_estack(void) 430324 void reset_estack_size(WORD newsize) 430378 void check_estack_size(EStackDisplacement i) 43041E void reset_control_flags(void) 4304A6 BYTE *find_error_message(WORD errorCode) 430510 WORD {proper error code}(WORD errorCode) 43053A clear_error_context() 430560 void {error dialog with error name and line number}(WORD errorNum, WORD *errorName, WORD lineNum, BYTE *buffer) 4305A1 float ? = 0.0 4305AB float ? = 1.0 4305B5 float ? = -1.0 4305BF float ? = 3.1415926535898 4305C9 float ? = 0.5 4305D3 float ? = 2.0 4305DD float ? = 0.001745329251994423 4305E7 float ? = 57.29577951308223 4305E8 void {resets some stuff}(void) 43061A ?() 430660 ?() 4306C0 ?() 4307E4 float estack_to_float(EStackIndex esi) 430828 Boolean is_nan(float x) 43083E ?() 43085A void push_pow(EStackIndex x, EStackIndex y) 4308DE void push_Float(float x) 432BD2 ?{compile TI-BASIC text}() 4339F2 ?{compile TI-BASIC text}() 4348B2 ?{compile TI-BASIC text}() 4349B2 ?{push compiled TI-BASIC onto estack}(BYTE *text) 445206 {instruction -> name table} 447A7A ?() 448948 EV_captureEvents() 448954 ?() 4489F4 ?() 448A08 EV_defaultHandler() 448F7C EV_eventLoop() 4491F6 EV_getSplitRect() 449210 ?() 449268 ?() 449300 EV_paintWindows() 449312 EV_registerMenu() 44932A EV_restorePainting() 449344 ?() 44935C ?() 4493D0 ?() 4493FC ?() 44942A EV_setCmdState() 449458 EV_setFKeyState() 4494BA void EV_startApp(WORD newApp, WORD ?) 4495A4 ?() 44961A ?() 44964A EV_suspendPainting() 44965A ?() 4496AC ?() 4496F6 ?() 44972A ?() 44974E ?() 44977C ?() 449800 ?() 449850 ?() 4498AA ?() 449900 ?() 449988 ?() 449A4A ?() 449A68 ?() 449A82 ?() 449AA0 CU_restore() 449ABC ?() 449ADA CU_stop() 44C3CA {something that draws clipped text with the medium font?}() 44CB26 void {Pause instruction}(EStackIndex message) 44CBC2 ?() 44CC3C ?() 44CC60 ?() 44CC82 ?() 44CCDC ?() 44CD0C ?() 44CD58 ?() 44CD8E ?() 44CDB4 ?() 44CDE0 ?() 44CE1A ?() 44CE78 ?() 44CEB0 void *HToESI(HANDLE h) 44CECC ?() 44D15C ?() 450622 TE_close() 450652 ?() 4506D6 TE_focus() 45071C TE_handleEvent() 450A9A ?() 450AA8 TE_isBlank() 450ADE TE_open() 450C0C TE_openFixed() 450CB2 ?() 450D20 ?() 450D4E ?() 450D90 TE_reopen() 450DCC ?() 450DF8 TE_select() 450E84 TE_shrinkWrap() 450EC0 TE_unfocus() 4549BC partial_len(BYTE *?, BYTE *?) 454A38 CharNumber() 456BA0 DrawClipChar() 456CD6 DrawClipLine() 456D14 DrawClipPix() 456D54 DrawClipEllipse() 456F0E DrawClipRect() 4571FE DrawMultiLines() 45725C DrawStrWidth() 4572C8 BYTE FontSetSys(BYTE) 45731A BYTE FontGetSys(void) 457320 WORD FontCharWidth(BYTE ch) 45735C GetPix() 457394 LineTo() 4573D2 MoveTo() 4573E0 PortSet() 457404 PortRestore() 457420 RestoreScrState() 457458 SaveScrState() 457472 ?() 4574E8 ScrRectFill() 45754E BitmapGet() 4575F2 BitmapInit() 457620 ScrRectOverlap() 4576AE BitmapPut() 457D14 ScrRectScroll() 457F30 ScrRectShift() 458108 BitmapSize() 458134 QScrRectOverlap() 458168 ScreenClear() 458198 ?() 4581E4 SetCurAttr() 4581F0 SetCurClip() 4581FA DrawChar() 458226 DrawFkey() 458290 DrawIcon() 4582FE DrawLine() 4587F6 DrawPix() 45885C DrawStr() 4588D6 FillTriangle() 458DC4 FillLines2() 45906E BYTE *?FindPixel(WORD x, WORD y) 459098 ?() 4591A8 ?DrawCharMask() 4593B8 ?() 4595DE ?() 459674 DrawWinBorder() 459870 RectWinToWin() 459898 ScrToHome() 4598C0 RectWinToScr() 45997E ScrToWin() 4599AE MakeWinRect() 4599CC ScrRectDivide() 459B28 UpdateWindows() 459D10 .text from win.o (0x1866 bytes) 459D10 WINDOW DeskTop0 459D3A WinWidth() 459D50 WinHeight() 459D66 WinActivate() 459D82 WinAttr() 459D92 WinBackupToScr() 459DD8 WinBackground() 459DE4 WinBegin() 459DF8 WinBitmapGet() 459EA6 WinBitmapPut() 459F64 WinBitmapSize() 459F96 WinChar() 45A05E WinCharXY() 45A102 WinClose() 45A116 WinClr() 45A17C WinDeactivate() 45A19E WinDupStat() 45A1CA WinEllipse() 45A276 WinFill() 45A328 WinFillTriangle() 45A40C WinFont() 45A426 WinHide() 45A43A WinHome() 45A45C WinInit() 45A494 WinLine() 45A554 WinLineNC() 45A648 WinLineTo() 45A71E WinLineRel() 45A744 WinMoveTo() 45A756 WinGetCursor() 45A770 WinFillLines2() 45A852 WinMoveCursor() 45A874 WinMoveRel() 45A88E WinOpen() 45AAB2 WinReOpen() 45ACF6 WinPixGet() 45ADB0 WinPixSet() 45AE76 WinRect() 45AF12 WinScrollV() 45AFDC WinScrollH() 45B0A6 WinStrXY() 45B0D4 WinStr() 45B15E ActivateWindow() 45B204 ClearPortRegion() 45B242 WinCharClip() 45B3E8 WinFind() 45B41C WinNewLine() 45B430 WinRemove() 45B500 SetShadeOffset() 45B578 .text from ?font.o 45B578 SF_font 45CD78 .text from dialog.o (0x142E bytes) 45CD78 char *SB_Names[6] 45CDCC Dialog() 45D732 NoCallBack() 45D736 DialogDo() 45D784 DialogNew() 45D7D4 DialogAdd() 45DA0A DrawStaticButton() 45DA82 DlgText() 45DAB8 PopupDraw() 45DD0E EditDraw() 45E0D0 DialogEventHandler() 45E1A6 .text from ?menu.o 45E1D8 MenuInit() 45E206 MenuUpdate() 45E23C MenuPopup() 45E2DA MenuSubStat() 45E346 MenuTopStat() 45E3A4 MenuCheck() 45E424 MenuBegin() 45E5E2 MenuOn() 45E612 MenuTopSelect() 45E650 MenuTopRedef() 45E6AA MenuGetTopRedef() 45E6DC MenuEnd() 45FA42 GetPopupOffset() 45FDBC MenuItemName() 45FDF8 ?() 45FE3C ?() 45FEB0 ?() 45FEE2 ?() 45FF2A MenuItemNSub() 46108E GKeyIn() 4611D4 4611E2 {keyboard data} 461200 char *?[3] 46122A char *?[3] 461242 4613D0 QModeKey() 461FB4 .text for ?heap.o (0xFF2 bytes) 461FB4 void *HeapEnd(void) 461FBA HeapAllocPtr() 461FFC HeapFreePtr() 46201A HeapAvail() 462026 HeapMax() 462036 ?() 4620BC LONG HeapSize(HANDLE h) 4620E4 HeapFreeIndir(HANDLE h) 4620FE HeapFree(HANDLE h) 46217C HANDLE HeapAlloc(LONG size) 46219A ?() 4621EE HeapAllocESTACK() 46226C HANDLE HeapAllocHigh(LONG size) 4622A6 HANDLE HeapAllocThrow(LONG size) 4622BE HeapAllocHighThrow() 4622D6 HANDLE HeapRealloc(HANDLE h, LONG newsize) 4625DA void *HLock(HANDLE h) 4625F0 HANDLE HeapLock(HANDLE h) 462616 WORD HeapGetLock(HANDLE h) 46263A HANDLE HeapUnlock(HANDLE h) 462666 HeapMoveHigh() 4626A8 void *HeapDeref(HANDLE h) 4626B8 ?() 46275A LONG {turn requested block size into actual allocated size}(LONG size) 462782 void *{generic heap realloc high?}(LONG size, void *block, WORD ?flags) 4629EA ?() 462B30 HeapCompress() 462CEE HeapGetHandle() 462E6C ?() 462F0E HANDLE {generic heap alloc high?}(LONG size, WORD ?flags) 462F60 void NeedStack(WORD size) 462F7A FreeHandles() 462FA6 .text for ?sym.o 462FAC char *MAIN_FOLDER = "main" 462FB2 char *DATA_FOLDER = "9998" 462FB8 char *?GEOM_FOLDER = "9999" 462FBD char *{backslash} = "\" 462FC0 ?() 463114 {init symbol stuff} 4631A4 ?() 4631E8 ?() 46322E ?FolderTempName(WORD tempNum) 463256 FolderDelAllTemp() 463284 HSYM AddSymToFolder(BYTE *sym_name, BYTE *folder_name) 4632EE HSYM FindSymInFolder(BYTE *sym_name, BYTE *folder_name) 4633D0 SymAdd() 4633F0 ?() 463410 HSYM SymFind(BYTE *sym_name) 463430 HSYM SymFindMain(BYTE *sym_name) 463450 ?() 463488 SymDel() 4634F0 void HSymDel(HSYM hsym) 4635B6 ?() 463624 WORD FolderFind(BYTE *folder_name) 46367C ?() 4636EE ?() 463702 HANDLE FolderAdd(BYTE *folder_name) 4637C2 FolderDel() 463AF8 SYM_ENTRY *DerefSym(HSYM hsym) 463E2C int ?strcmp8(char *s1, char *s2) 464046 ?(void *?) 464152 HSYM ?GetHSym(SYM_ENTRY *SymEntry, HANDLE SymList) 46417E ?() 46427E ?(void *?, WORD ?) 46438E ?() 4643E2 ?() 4644A0 ?() 4645BE SYM_ENTRY *?FindSymEntry(HANDLE list, BYTE *name) 464690 ?(void *?, HANDLE ?) 464CF0 void VarStore(BYTE *DestVar, WORD Flags, WORD SourceSize, ...) 466020 ?() 4660C4 ?() 466146 VarGraphRefBitsClear() 466156 ?() 46616E ?() 4662AC ?() 4662DA ?() 46632A ?() 4663DE ResetSymFlags() 468EE2 DlgMessage() 46906C ?() 46B8EA FindGrFunc() 46B974 FindFunc() 46BA6C grFuncName() 46BB12 ?() 46BB42 execute_graph_func() 46BBDA ?() 46BC84 ?() 46BCC8 ?() 46BE12 ?() 46BEDA ?() 46BF24 ?() 46BF4C gr_del_locals() 46C002 ?() 46C072 ?() 46C158 ?() 46C268 ?() 46C416 ?() 46C614 grKeyCheck() 46C6CE ?() 46C722 ?() 46C806 ?() 46C834 ?() 46C88A ?() 46C91C ?() 46C958 ?() 46C982 gr_xres_pixel() 46CA78 ?() 46CAA8 ?() 46CB02 ?() 46D128 ?() 46D57E time_loop() 46D7F0 ?() 46D824 CountSeqFunc() 46D884 InitTimeSeq() 46DC44 FirstSeqPlot() 46DD68 cleanup_seq_mem() 47170C .text from graph3d.o (0x320A bytes) 47170C GR3_paint3d() 4717DC GR3_xyToWindow() 471BEC addPointToPoly() 471C28 addTripleToPoly() 471C8E apply() 471DB6 bPointsValid() 471F70 bZInBounds() 471FBC bZOutOfBounds() 472004 calcExtremes() 472102 calcScale() 47249A drawAxes() 472788 drawBox() 472C7E drawHidden() 473070 drawLabels() 4732A8 drawWire() 473438 drawWireLine() 47361C evalz() 4738E0 orientIPoly() 473970 outlineIPoly() 473A12 paintIPoly() 473B30 prep3d() 473DC4 prepEye() 474164 prepGrid() 474366 transform() 4744CC transformPoly() 474568 truncateLine() 4745D6 truncatePoint() 4746F6 truncatePoly() 474826 worldToWindow() 474918 .text from aptabled.o (0x5FF2 bytes) 47491C te_init 474A5C AP_table 4764C2 tablepaint 47690C tableFormat 47696A TABLEMoveHighlight 476A2C TABLEUnhighlight 476A54 tablecelldisp 476A72 clrcolstr 476AA6 getcolelem 476B0E getelement 476B34 getxelement 476B82 columnsym 476C18 tesymtoesi 476C5C tetabletowin 476CE4 resetclip 476D26 tableEnableFKeys 476E9A authTEnableFKeys 476F7E Tablesetup 47722E TA_callBack 477484 TblCptX 477606 tblauthFillEdit 477B70 getNameInfo 477D58 tableShiftDown 477E5A tableShiftUp 477F8A calcdispX 47819E setuptblfunc 4781FC storetblfunc 47824E dispcurcoltbl 4785B0 storetbinputstart 478610 dispcolandprompt 478662 cpt_tbl_fun 478702 get_tbl_point 47874A calcnewcol 47885E setupcolexec 4788BC prepcoltostore 4788F2 dispcolumnstbl 478BE6 dispcolandprompt2 478C34 getnextcol 478C84 putnextcol 478CD4 dispcolname 478D92 drawlines 478E92 TblStartValue 4792F4 FindTblFunc 479468 displayX 4794C2 displayXASK 47977A independtitle 479848 cpt_tbinput_ASK 47991A Tableinsert 4799B0 Tabledelete 479C68 authPutAwayFunc 47A040 authPutAwayIndep 47A168 TblClear 47A1AE empty_tblinput 47A1D4 tbl_paint_seq 47A3F6 tbl_cpt_seq_row 47A866 tbl_cpt_seq_row_and_disp 47A8B8 switchtoTauth 47A8DA incClipy 47BED2 ?{expr}() 48147C GraphOrTableCmd() 482516 DecodeFloat() 4825F8 NG_approxESI() 48266A ?() 4826DC ?() 4827DA NG_tokenize() 482848 ?() 4828BE NG_graphESI() 4829F4 NG_setup_graph_fun() 482B02 NG_cleanup_graph_fun() 482B26 ?() 482C74 ?() 482C82 ?() 482C90 int callback_vprintf(void (*func)(char, void *), void *param, char *format, void *va_list) 483644 ?() 4836F8 ?strputchr(char ch, char **p) { *((*p)++) = ch; } 483706 int sprintf(char *buffer, char *format, ...) 483742 {variant of printf}(char *format, ...) 483762 {variant of fprintf}(void **stream, char *format, ...) 483784 ?() 483B14 {table of pointers to system variable names} 483CF4 ?() 483D7E ?() 483DCC remaining_element_count() 484D2C push_reversed_tail() 485494 fmod() 485594 floor() 4855C8 ceil() 4855FC fabs() 485622 ?() 485686 acos() 4856B6 ?() 4856E6 ?() 485716 ?() 485746 cos() 48577E sin() 4857B6 ?() 4857EE ?() 485822 ?() 485856 ?() 48588A ?() 4858BC ?() 4858EE ?() 485920 ?() 485962 ?() 4859C0 ?() 4859F2 ?() 485A86 ?() 485D88 ?() 485DBA ?() 485DEC ?() 485E42 ?() 485E5A ?() 485E96 ?() 485EB0 round12() 485EE2 round14() 4880A2 ?() 4C7FD8 {copyright screen event handler}() 4C912A void ERD_dialog(WORD errorNum) 4C93EC ERD_process() 4C9B9A MO_currentOptions() 4C9D28 MO_digestOptions() 4CE346 {variant of putchar, but does nothing}(char ch) 4CFF00 pushkey() 4CFF56 WORD ?getKey(void) 4D00D0 void OSAlexOut(BYTE *message) 4D0192 void ?(void) 4D11C8 void ST_busy(WORD busy) 4D1204 Boolean ST_eraseHelp() 4D1246 ?() 4D12A8 ?() 4D12DC void ?ST_showHelp(WORD ?flags, BYTE *message) 4D12FA ?() 4D137A ?() 4D1400 ?() 4D1422 ?() 4D143C void ST_refDsp(WORD ?) 4D1466 ?() 4D1494 ?() 4D152A void ?ST_redraw(void) 4D15D0 ?() 4D1602 ?() 4D1642 ?() 4D16F0 ?() 4D1704 ?() 4D1764 ?() 4D17B0 ?() 4D17F4 void ?ST_clear(void) 4D1828 void ?(void *?) 4D1866 void ?ST_text(WORD x, BYTE *message) 4D18C8 ?() 4D192C ?() 4D1976 ?() 4D19DC ?() 4D1A1C ?() 4D1A6E LONG ?OSTimerGet(WORD timerNum) /* timerNum is in 1..6 */ 4D1A7E void ?OSTimerStart(WORD timerNum) /* timerNum is in 1..6 */ 4D1A98 void OSTimerRestart(WORD timerNum) /* timerNum is in 1..6 */ 4D1AD4 ?() 4D1B70 BYTE *os_version = "2.1" 4D1B74 BYTE *os_date = "08/19/96" 4D1B80 size_t strlen(char *s) 4D1B98 int strncmp(char *s1, char *s2, size_t maxlen) 4D1BEC char *strncpy(char *dest, char *src, size_t maxlen) 4D1C20 char *strcat(char *dest, char *src) 4D1C44 char *strchr(char *s, int c) 4D1C70 int strcmp(char *s1, char *s2) 4D1C94 _du32u32() 4D1CBE _ds32s32() 4D1D54 _du16u16() 4D1D64 ?_ds16u16() 4D1D78 int rand(void) 4D1DBA void srand(unsigned int seed) 4D1DD0 ?_ru32u32() 4D1DF0 ?_rs32s32() 4D1E44 ?_ru16u16() 4D1E52 ?_rs16u16() 4D1E6C {variant of fputc}(char ch, void **stream) 4D1EA8 long labs(long x) 4D1EB4 void *memset(void *s, int c, size_t n) 4D1F8C int memcmp(void *s1, void *s2, size_t n) 4D1FD4 void *memcpy(void *dest, void *src, size_t n) 4D2108 void *memmove(void *dest, void *src, size_t n) 4D2160 int abs(int x) 4D216C {variant of fputc}(char ch, void **stream) 502B2E DataClearDlg 502C04 TableMenu 502CA0 TableFormatDlg 502D34 TableDialog 502E0E StartValueWarnDlg 503EC4 XR_stringPtr 5072F5 XRA_FloatFullPrec 5072FC XRA_XB_FloatFullPrec 50A50C {error strings} 50E43E {unknown error string} = "Unknown ERROR code" 50F52C {error pointer table} 51330E columnsym() 513472 void *dmsymtoesi(HSYM hsym) 516366 ?() 516388 ?() 516522 ?() 51652C void initedit(void) 516582 ?() 516608 ?() 5166EC ?() 516720 ?() 516868 ?() 516A5E ?() 516C5E ?() 516D44 ?() 516E04 ?() 517056 ?() 517322 ?() 517574 ?() 5175DC ?() 5176AA ?() 5176FE ?() 51772A void resizelist(HSYM hsym, WORD IndexRow, EStackIndex OldTop) 51787A static void growmat(WORD oldrow, WORD oldcol, SWORD newrow, SWORD newcol, BYTE matdata) 517BB4 static void dmtempfolder(void) 517BD6 void storelist(void) 517CCE void storematrix(EStackIndex OldTop) 518090 void openmatrix(EStackIndex esi) 5182F6 static HSYM VarStoreData( BYTE *DestVar, WORD Flags, WORD SourceSize, long parm1, short parm2 ) 51838E void restorelist(WORD Zerosize) 5184C8 void disp1DExpr(EStackIndex esi, HANDLE *hText, Boolean torf, unsigned short width) 51853E void clearDMLedit(void) 518588 void initcurdataptr(void) 51C3B8 CptDeltax() 51CCB8 HANDLE CreateEmptyList(void) 51CCF0 ?() 51CD30 ck_valid_float() 51D9AC GT_Error() 51D9CA ?() 51DACC ?() 51DB26 ?() 51DC22 ?() 51DDFC ?() 51DE7E GT_Open() 51DF12 GT_SaveAs() 5216CA round12_err() 529814 QSkipGraphErr() tiemu-3.03-nogdb+dfsg/docs/ti_hw/fargo/Traps.txt000066400000000000000000000124331220314353500215630ustar00rootroot00000000000000----------------------------------------------------------------------------- INTRODUCTION ----------------------------------------------------------------------------- The 68000 processor keeps a 256(d) byte exception vector table at the bottom of memory (address $000000). This table contains pointers to 64(d) vectors; each vector is an absolute pointer to a specific location in memory. Most of these vectors point to routines, although some have other functions. Each vector is referred to with an index between 0(d) to 63(d) inclusive. The vectors are assigned as follows: Address in table Assigned function ---------------- ----------------- 0000 to 0007 Reset vector (initial SSP and PC) (0-1) 0008 to 000B Bus error vector (2) 000C to 000F Address error vector (3) 0010 to 0013 Illegal instruction vector (4) 0014 to 0017 Zero divide vector (5) 0018 to 001B CHK instruction vector (6) 001C to 001F TRAPV instruction vector (7) 0020 to 0023 Privilege violation vector (8) 0024 to 0027 Trace vector (9) 0028 to 002F Line 1010/1111 emulator vectors (10-11) 0030 to 003B Unassigned, reserved (12-14) 003C to 003F Uninitialised interrupt vector (15) 0040 to 005F Unassigned, reserved (16-23) 0060 to 0063 Spurious interrupt vector (24) 0064 to 007F Level 1-7 interrupt auto-vectors (25-31) 0080 to 00BF TRAP #0-15 instruction vectors (32-47) 00C0 to 00FF Unassigned, reserved (48-63) 0100 to 03FF User interrupt vectors (64-255) Some of these vectors are triggered when an error is encountered by the 68000 processor. Others can be triggered directly by a TRAP instruction. The interrupt auto-vectors, or auto-ints, are triggered when a specific hardware event occurs. Note: Any RAM addresses found here apply only to ROM 1.2 through 1.12. ----------------------------------------------------------------------------- VECTORS USED BY THE TI-92 ----------------------------------------------------------------------------- Line 1010 emulator ------------------ Opcode $Axxx: Trigger error {xxx}, with identical numbering to that used in the (TIOS) variable "errornum". Note that there are some error numbers that are undocumented in Appendix B of the TI-92 manual. Line 1111 emulator ------------------ Print "Line 1111 Emulator" and freeze. Unused. Auto-Int 1 ---------- Triggered every 4th time [600017] is incremented. It runs at approximately 350 Hz. See Ports.txt. Auto-Int 2 ---------- Triggered periodically while key(s) other than [ON] are held down. The rate depends both on battery strength and on which key(s) are being held down, and is usually in the ballpark of about 600 Hz. Auto-Int 3 ---------- Print "Level 3 Autovector" and freeze. Never triggered. Auto-Int 4 ---------- Link Service Auto-Int 5 ---------- Triggered when [600017] is set to its initial value. After ROM initialization, it runs at approximately 18 Hz. See Ports.txt. Auto-Int 6 ---------- Triggered when [ON] is pressed. Auto-Int 7 ---------- Protected memory violation. Triggered when memory below [$000120] is written while bit 2 of [$600001] is set. Trap 0 ------ JSR ($40xxxx + D0.W) D0.W Subroutine ----- ---------- $01A2 [60001A] = $FF, [05342] = $00 $01B8 flush word buffer, set size to 1 word (push *buffer) $01E4 [05510] = $00000000, [0550C] = $00000000, JMP $400100 (reset) $01F0 print error string and freeze (push *string) Trap 1 ------ Change Interrupt Mask Input : D0.W = new interrupt mask (bits 10,9,8 of new SR) Output: D0.L = old SR Trap 2 ------ Reset Calculator Input : nothing Output: calculator is reset Trap 3 ------ ? Trap 4 ------ Turn Off, Turn On (see also Auto-Int 6) Input : nothing Output: calculator turns off, waits for [ON] Trap 5 ------ ? same as trap 7 Trap 6 ------ ? Trap 7 ------ ? same as trap 5 Trap 8 ------ ? Trap 9 ------ A0.L = $4004F8 + 4 * D0.W Input : D0.W = {00...11} Output: A0.L = $4004F8 + 4 * D0.W D0.L = 4 * D0.W; D0 pointer to -- ---------- 00 (ROM) ?contrast_up() 01 (ROM) WinOpen() 02 (ROM) ?reset_link() 03 (RAM) 2 structures 04 (ROM) ?contrast 05 (ROM) WinStr() 06 (RAM) ?key_buffer 07 (ROM) flush word buffer, set size to 1 word (push *buffer) 08 (ROM) table for isupper(), etc. 09 (ROM) ?contrast_up() 0A (ROM) ?contrast_down() 0B (ROM) [60001A] = $FF, [05342] = $00 0C (ROM) getkey() table 0D (ROM) ? 0E (RAM) LCD memory 0F (ROM) Boolean ?read_word_buffer(WORD *a, BUFFER *b) 10 (ROM) RAM test 11 (ROM) WinMoveTo() TRAP 10 ------- Enter self test TRAP 11 ------- Print "Trap 11" and Freeze TRAP 12 ------- Print "Trap 12" and Freeze TRAP 13 ------- Print "Trap 13" and Freeze TRAP 14 ------- Print "Trap 14" and Freeze TRAP 15 ------- Print "ER_throw" and Freeze tiemu-3.03-nogdb+dfsg/docs/ti_hw/fargo/Types.txt000066400000000000000000000041111220314353500215700ustar00rootroot00000000000000----------------------------------------------------------------------------- INTRODUCTION ----------------------------------------------------------------------------- The simplest data type used by the TI-92 is the byte, followed by the word and the long integer. However, it is useful to define more complex data structures for more complex tasks. This text file describes some of the data structures used by the TI-92. This text file also describes some of the enumerated data types used by the TI-92. These are integers in which predefined values have specific meanings. ----------------------------------------------------------------------------- ENUMERATED DATA TYPES ----------------------------------------------------------------------------- color ----- 0 = white on black 1 = black on black (!!!) 2 = white on black (??) 3 = gray on white 4 = black on white font ---- 0 = 5(d) point font 1 = 8(d) point font 2 = 10(d) point font ----------------------------------------------------------------------------- DATA STRUCTURES ----------------------------------------------------------------------------- point (4 bytes) --------------- 00.W x coordinate 02.W y coordinate rect (8 bytes) -------------- 00.W x1 = coordinate of left edge 02.W y1 = coordinate of top edge 04.W x2 = coordinate of right edge 06.W y2 = coordinate of bottom edge window (2A bytes) ----------------- 00.W flags 03 = border width 0= 2 pts, 1 =1 pt 05 = 0 store background 1 don't store background 06 = translate LF, FF, and CR 08 = draw border 10 = similar to 11 11 = check boundaries 12 = display title 02.B (font) text font 03.B (color) text color 04.B background color (0=white, 1=black) 05.B ??? 06.W ??? (from 57A4) 08.W cursor x coordinate from window 0A.W cursor y coordinate from window 10 (rect) border of window 14 (rect) usable area of window 18 (rect) border of window 1C (rect) inside of window (relative); top left = (0,0) 20.W handle of block where bitmap is stored 26.L pointer to window title tiemu-3.03-nogdb+dfsg/docs/ti_hw/flash/000077500000000000000000000000001220314353500177255ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/ti_hw/flash/EEPROM Programming.htm000066400000000000000000000550431220314353500237000ustar00rootroot00000000000000 EEPROM Programming

EEPROM Programming

 

Writing to Flash EEPROMs is much slower than writing to RAM, and requires writing control codes to the address space of the chip to perform these operations. Apparently the Flash EEPROM used is the "SHARP LH28F160S3-L", which has many features (some may be disabled) including writing (multiple) words/bytes, erasing 64kb blocks, and locking of blocks.

 

For more information on this chip see Johan Borg's file at http://d188.ryd.student.liu.se/ftp/calculator/ti89/tech/flashrom.txt, he also has put up the datasheet at ftp://d188.ryd.student.liu.se/calculator/ti89/tech/f160s3.pdf which is worth a look.

 

Fortunately only a subset of this chips features are used; writing words and erasing blocks. Write operations take 12.95 micro-seconds, read operations 100ns, so you can see why a special mode of operation is required.

 

To program the EEPROM we need to enter a special mode by writing certain control codes to the address range. Two operations can be performed, erase (64kb) sector, and write a word. In this write mode reading from the address range gives the status register of the EEPROM, generally the only value that is used is that bit 7 of the read word will be set when complete. After the operations are complete Read mode is then set by writing another control code.

 

The drawback of this method is that the ROM cannot be read whilst write operations are being performed. Therefore the writing code must execute from the RAM. Trap 11 handles all of this on the calculator, copying the relevant portions to a buffer then executing them.

 

The following subset of operations is used:

 

Code

Function

0x5050

Clear Status Register

0x1010

Write Setup (next word will be written)

0x2020

Erase Setup

0xD0D0

Erase Conform (address)

0xFFFF

Read Memory

 

Erasing and writing require to writes, e.g. 0x2020, 0xD0D0 to perform erase to prevent accidental operations.

 

Note

The flash memory is, by default, write protected by the system. And can only be written to under special circumstances. See Intelligent Memory.

 

Examples

;erase 64kb block in which ERASE_ADDR resides

      lea         (ERASE_ADDR),a2

      move.w      #0x5050,(a2)      ;Clear Status Register

      move.w      #0x2020,(a2)      ;Erase Setup

      move.w      #0xD0D0,(a2)      ;Erase Confirm

write_state_busy:

      move.w      (a2),d0           ;Read Status Register

      btst        #7,d0             ;1=Ready

      beq         write_state_busy

      move.w      #0xFFFF,(a2)      ;Read

 

 

;write VALUE to WRITE_ADDR

      lea         (WRITE_ADDR),a2

      move.w      #0x5050,(a2)      ;Clear Status Register

      move.w      #0x1010,(a2)      ;Write Setup

      move.w      #VALUE,(a2)       ;Erase Confirm

write_state_busy:

      move.w      (a2),d0           ;Read Status Register

      btst        #7,d0             ;1=Ready

      beq         write_state_busy

      move.w      #0xFFFF,(a2)      ;Read


 

tiemu-3.03-nogdb+dfsg/docs/ti_hw/misc/000077500000000000000000000000001220314353500175635ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/ti_hw/misc/J89hw.txt000066400000000000000000000726541220314353500212530ustar00rootroot00000000000000.. . . . . . . . . . . . . . .. ___________.___ ______ ________ \__ ___/| |/ __ \/ __ \ | | | |> <\____ / | | | / -- \ / / |____| |___\______ / /____/ \/ h a r d w a r e p r o g r a m m i n g .. . . . . . . . . . . . . . .. =========================================================================== INTRODUCTION File version: 200501150001 --------------------------------------------------------------------------- This document contains (some) information about the TI89 hardware as seen from the programmer's point of view. It is assumed that the reader is very familiar with computer hardware and low-level programming on M68000 systems. Very much applies to the TI92/+ as well, but no similarities or differences are mentioned in the text. This document is messy. A revised version is underway. This information is provided AS-IS, with NO guarantee that it is correct or complete. The author can NOT be held responsible for ANY kind of damage that might occur from any direct or indirect use of the information in this document. Credits to Johan Borg for his hardware hacking. His document/s has/ve provided valuable information about eg. the HW1 protection chip that I never could have found with my "software only" approach. Credits to Erik Hallbäck for letting me tortu^H^H^H^H^Hborrow his HW2 TI89. With it I could finally fill in many blanks related to the second hardware model. A link to the most recent version of this document and other interesting stuff can be found at Olle's site >>> http://alh.dhs.org/ti89/ -- Johan Eilert -- Updated by Romain Lievin from Olivier Armand's informations (7000xx_ports.zip). Needed by the TiEmu project. CVS: $Id: J89hw.txt 779 2005-01-19 16:23:10Z roms $ =========================================================================== HARDWARE PROTECTION OVERVIEW --------------------------------------------------------------------------- The status of the various protections can only be changed when a global "lock" is deactivated. For historical reasons, this "lock" is called "the Protection" in this document (note the capital P). (Note: "consecutive accesses" means consecutive in *time*, not (necessarily) consecutive *addresses*.) The following protection features are *always* active, they cannot be disabled. Both HW models: * Write accesses to the boot installer sector ($200000-$20FFFF) are filtered and never reach the flash ROM. (This sector is *also* permanently write protected by a feature of the flash ROM chip.) HW1 specific: * Any four consecutive accesses to $1C0000-$1FFFFF crashes the calc. * Any three consecutive access to a flash ROM sector (64K) that is within the "multiple access forbidden" range crashes the calc. (See Stealth I/O section.) (Effectively inhibits the CPU from fetching instructions from the archive memory.) HW2 specific: * An instruction fetch from a flash ROM sector (64K) that is within the "execution forbidden" range crashes the calc. (See $700012.) * An instruction fetch from a RAM 4K page that has its "execution forbidden" bit set crashes the calc. The protection hardware also considers the "shadow RAM" range $040000-$1FFFFF to be part of the last RAM page. (See $700000.) The following protections are enabled only when the Protection is enabled. Both HW models: * Write accesses to the flash ROM ($210000-$3FFFFF) are filtered and never reach the flash ROM. * The certificate memory ($210000-$211FFF) is read protected. * The memory at $218000-$219FFF is read protected. (?) HW2 specific: * Certain memory mapped I/O ports are locked and protected against modification. (These include, of course, the RAM page protection bitmask and the flash ROM executable sector limit.) The following protections can be enabled and disabled at any time. Both HW models: * Write accesses to $000000-$00011F are filtered and trigger int 7. (See $600001.) =========================================================================== OSCILLATORS --------------------------------------------------------------------------- The TI89 has two (HW2 has three) separate oscillators, they are refered to as OSC1 and OSC2 (and OSC3). OSC1 is the M68000 CPU clock. HW1: ~10 MHz HW2: ~12 MHz OSC2 is the timing base for the timers, the link I/O hardware and (HW1 only) the LCD controller. HW1: ~680 kHz - ~770 kHz HW2: ??? - (~520 kHz (= 2^19 Hz !)) - ??? The speed of OSC2 can be calculated using this formula (assuming the APD time is the default): HW1: OSC2 speed = 242,688,000 / APD_seconds HW2: OSC2 speed = 162,816,000 / APD_seconds APD_seconds should be somewhere in the range 300-360 seconds. If the APD time is way longer than 400 seconds on a HW2, the HW1 formula should be used instead. This will happen if, for example, an ignorant game reprograms the HW2 timer with the HW1 settings. OSC3 (HW2 only) is the timing base for the LCD controller. HW2: ??? - (680 kHz) - ??? The speeds of OSC1 and OSC2 seem to be independent of the battery strength, but OSC3 runs slower with older batteries. =========================================================================== INTERRUPT LEVELS --------------------------------------------------------------------------- Level 1: Triggered at a fixed rate: OSC2/2^11. See $600015:7/1. Level 2: Triggered when the *first* unmasked key (see $600019) is *pressed*. Keeping the key pressed, or pressing another without released the first key, will not generate additional interrupts. The keyboard is not debounced in hardware and the interrupt can occasionally be triggered many times when the key is pressed and sometimes even when the key is released! Write any value to $60001B to acknowledge this interrupt. Level 3: Disabled by default by AMS, early versions crash if it is enabled. When enabled, it is triggered at a fixed rate: OSC2/2^19. See $600015:2. Level 4: Triggered by the link hardware for various reasons. Read from $60000C and sometimes read/write $60000F to properly acknowledge this interrupt. Level 5: Triggered by the programmable timer. The default rate (set by AMS on reset) is OSC2/(K*2^9), where K=79 for HW1 and K=53 for HW2. See $600015 and $600017. Level 6: Triggered when [ON] is pressed. As with the rest of the keyboard, the lack of hardware debouncing sometimes triggers additional interrupts. Write any value to $60001A to acknowledge this interrupt. Level 7: If the "vector table write protection" is enabled, this interrupt is triggered on a write access to any address below $000120. The write will of course be ignored. This interrupt is (also) a convenient way to detect stack overflows. See $600001:2. =========================================================================== ADDRESS SPACE --------------------------------------------------------------------------- Memory.devices..........Size....Description..................... $000000-$1FFFFF 2M RAM (256K, repeats 8 times) $000000-$00011F 288 (write protected) $200000-$3FFFFF 2M flash ROM, (write protected) $200000-$20FFFF 64K boot code, always write protected $200000-$200007 8 cold reset vector (SSP, PC) $210000-$211FFF 8K certificate memory, (read protected) $212000-$217FFF 24K available for code/data $218000-$219FFF 8K (read protected ?!?) $21A000-$3FFFFF 1944K available for code/data Memory.mapped.I/O.......Size....Description..................... $040000-$07FFFF 256K stealth I/O (HW1 only?) $080000-$0BFFFF 256K stealth I/O (HW1 only?) $0C0000-$0FFFFF 256K stealth I/O (HW1 only?) $180000-$1BFFFF 256K stealth I/O $1C0000-$1FFFFF 256K stealth I/O $200000-$20FFFF 64K stealth I/O $212000-$217FFF 24K stealth I/O $21A000-$21FFFF 24K stealth I/O $600000-$60001F 32 memory mapped I/O $700000-$70001F 32 memory mapped I/O (HW2 only) =========================================================================== MEMORY MAPPED I/O --------------------------------------------------------------------------- R = data can be read at any time W = data can be written at any time r = data can be read only when the Protection is disabled w = data can be written only when the Protection is disabled address direction (default value) description more description :bits bit description "-" = unused "?" = unknown (but probably unused unless otherwise noted) ... yet more description $600000 RW ($00) :7 Keep clear (=0) :6 Keep clear (=0) :5-3 - :2 1: Battery voltage level is *above* the trig level. (see $600018). :1-0 - $600001 RW ($04) :7-3 - :2 Write protect vector table ($000000-$00011F). Int 7 will also be generated on writes to this address range, and on writes to $E00000-$FFFFFF. :1 - :0 HW1: Bit cleared means 256K RAM, bit set means 128K RAM. Consider this bit "read-only" and keep it clear, or else the RAM will not function properly! $600003 -W ($FF) Bus waitstates The TI89 hardware needs no waitstates. AMS messes with this port on startup for compatibility with the TI92, but the battery checker will reset it to $FF within one second. :7 - :6-4 Wait states =(7-n) for non-RAM accesses :3 - :2-0 Wait states =(7-n) for RAM accesses $600005 -W Turn off OSC1 (and the CPU), wake on int level 6 (ON key) and ... :7-5 - :4 ... int level 5 (programmable timer) :3 ... int level 4 (link) :2 ... int level 3 (OSC2/2^19) :1 ... int level 2 (keyboard) :0 ... int level 1 (OSC2/2^11) Note: Make SURE int level 6 is acknowledged before writing $00 to this port... $60000C RW ($8D when idle, write $E0 then $8D to reset, $8F when sending) Read to begin acknowledging link interrupt (level 4) :7 AE Autostart enable, should be set if $600005:3 is set :6 LD Disable byte sender/receiver (also disables interrupts) :5 LTO Link timeout disable :4 - Trigger interrupt level 4 on ... :3 CL ... error (timeout or protocol violation) :2 CA ... any link activity :1 CTX ... transmit buffer empty :0 CRX ... byte in receive buffer Note: The link hardware generates lots of interrupts and the interrupt handler must know the reason for every one to be able to acknowledge them properly. Otherwise the CPU will loop the interrupt handler over and over again... If OSC2 is turned off (in calc power-off mode), the only condition that can be detected and generate an interrupt (to wake up the processor) is "any link activity" (:2). $60000D R- Current link status (interrupt reason) :7 SLE Error (undefined if :3 =1) Reset link (#$E0 then #$8D to $60000C) to finish acknowledge. :6 STX Transmit buffer empty (undefined if :5 =1 or :7 =1) Write another byte to $60000F or clear $60000C:1 to finish acknowledge. :5 SRX Byte in receive buffer (undefined if :7 =1) Read the byte from $60000F to finish acknowledge :4 SLI Interrupt pending (always =1 in interrupt handler), never used :3 SA Link activity (AMS int handler quits immediately if 0), used by AMS >= 208 :2 ?? External activity ("someone's talking to me!") :1 ?? Almost always set :0 ?? Always zero? The bits must be checked in this order: :3, :7, :5, :6 (AMS < 2.08) Else: :3, :7, :5, :2, :6. $60000E RW Direct link port access :7-4 - :3 Live status of D1/ring/white (1=pulled down) :2 Live status of D0/tip/red (1=pulled down) :1 Activate (pull down) D1/ring/white :0 Activate (pull down) D0/tip/red Note: The byte sender/receiver will be confused by direct link port access, it should be disabled first. (See $60000C:6.) * D0/tip/red is pulled down first (by sender) when sending a '0'. * D1/ring/white is pulled down first (by sender) when sending a '1'. * The innermost ring is signal ground. * The link port normally operates in a half-duplex mode where a bit is sent by activating the corresponding line ("ring" or "tip") and the receiver acknowledges by activating the other line. The sender now releases its line and finally the receiver releases the acknowledge. Whole bytes are always sent, LSB first. An "error" condition (="abort") is signalled by activating both lines at the same time for ~250us. * When generating stereo sound, use tip/red for right channel and ring/white for left channel. $60000F RW One-byte link buffer :7-0 READ: Read one byte from receive (incoming) buffer WRITE: Write one byte to transmit (outgoing) buffer See also $60000D. $600010 -W ($0980 = $4C00/8) :15-0 HW1: LCD frame buffer address, divided by 8 This address is latched into the LCD controller DMA address register on each FS (i.e. at the beginning of every frame). HW2: No function. See $700017. $600012 -W ($3180 => 240x128 screen) :15-14 - :13-8 LCD logical width =(64-n)*2 bytes =(64-n)*16 pixels The LCD controller DMA will send this many pixels to the screen for each line (= between each RS). :7-0 LCD logical height =(256-n) Number of "row syncs" (RS) between each "frame sync" (FS). (This is the (logical) screen height.) Note: The contrast must often be adjusted when the logical screen height is changed. By default, each screen line is "visited" during 1/128 of a frame but if the logical height is set to e.g. 100, each line is now "visited" more often (1/100 of a frame) and will appear darker at the same contrast level because of this. This register is actually two 8-bit registers and each subregister can be written to without disturbing the other 8 bits. Note: The internal counters in the screen controller restarts on writes to this register, but no FS or RS is generated. Use this during grayscale initialization to force the screen refresh into a known state (for synchronization). $600015 RW ($1B) :7 Master disable timer interrupts (level 1, 3 and 5) :6 - (HW2: ?) :5-4 Increment rate of $600017 %00: OSC2/2^5 %01: OSC2/2^9 (AMS default) %10: OSC2/2^12 %11: OSC2/2^18 :3 Enable incrementing of $600017 :2 Trigger interrupt level 3 at OSC2/2^19 (~1 Hz on HW2) :1 OSC2 (and OSC3?) enable (bit clear means oscillator stopped!) :0 LCD controller DMA enable, LCD blank ("white") if =0 This bit is only examined by the hardware at the start of each frame. HW1: The DMA steals ~10% of the CPU bus bandwidth. $600017 RW ($B2 = 257-79 for HW1, $CC = 257-53 for HW2) :7-0 READ: Read the current value WRITE: Set the initial (and current) value for the timer The timer value is incremented at the rate specified at $600015 and triggers interrupt level 5 when it "overflows" to $00. The next increment forces the timer to reload the initial value. The count sequence looks like this: value, value+1, ..., $FF, $00 (interrupt!), value, value+1, ... To trigger an interrupt every 'n'th increment, write '257-n' to this register. $600018 RW ($0380) :15-10 - :9-7 Battery voltage trigger level (see $600000:2) (HW2: must also enable batt checker at $70001D:3,0) %000: ~4.6V, %001: ~4.5V, %010: ~4.3V, %011: ~4.0V, %100: ~3.7V, %101: ~3.4V, %110: ~3.2V, (%111: ~2.9V calc resetted!) Remember to wait a while (~250us) before reading from $600000:2 to make sure that the hardware has stabilized. Keep the trig level set to the lowest voltage (%111) when its not in use. (The keyboard does not work otherwise.) AMS displays "BATT" when the voltage drops below 4.3V and 4.0V, respectively. :6-0 Keyboard col mask, bit =1 masks key column (vertical) from being read at $60001B and generate interrupt on key pressed. Note: Some interrupt handlers in AMS writes to this register, so it is a very good idea to disable interrupts first!!! $60001A RW :1 READ: Current status of the [ON] key, =0 if pressed :7-0 WRITE: Acknowledge [ON] key interrupt (level 6) $60001B RW :7-0 READ: Keyboard row input, each bit =1 means ALL keys in the corresponding key column are UP (not pressed). See $600019. See also "The Keyboard Matrix," below. WRITE: Acknowledge keyboard interrupt (level 2) $60001C -W ($21 = 64 cycles/RS = 256 pixels/RS) :7-6 ?- :5-2 LCD RS (row sync) frequency, OSC2/((16-n)*8) %1111 turns off the RS completely (used when LCD is off). :1-0 ??? Used for sth? -- why otherwise set to %01? $60001D -W ($80+contrast) :7 HW1: Voltage multiplier enable. Keep set (=1)! HW2: - :6-5 - :4 HW1: Screen disable (power down) HW2: LCD contrast bit 4 (msb) :3-0 LCD contrast bits 3-0 (bit 3 is msb on HW1) These are HW2 only -------------------------------------------------------- $700000 RW ($FFDF FFFF FFFF FFFF = allow exec at $005xxx only) Bit SET means instruction fetches NOT allowed in that 4K page. The Protection must be disabled for changes to have any effect. $700000 :15-0 $00Fxxx-$000xxx (one bit for each 4K page) $700002 :15-0 $01Fxxx-$010xxx $700004 :15-0 $02Fxxx-$020xxx $700006 :15-0 $03Fxxx-$030xxx (bit 15 controls $1FFFFF-$040000 too) $700008 to $700000F RW These ports are the ghosts of the ports for the protection of execution in RAM ($700000 to $700007). Any writing to either the real ports or the ghosts will change both ports (eg $700002 and $70000A). $700011 -W ($40, $57 by boot installer when 'i' is pressed) :7-0 ??? (something to do with link port transfer speed) $700012 RW (reset: $0018 => $390000-$3FFFFF) Flash ROM execution protection The Protection must be disabled for changes to have any effect. :15-6 - :5-0 First exec protected flash ROM sector =(n*$10000+$210000) $700014 RW Real Time Clock Real Time Clock. Incremented every 2^13 = 8192 seconds exactly. The whole word must be read : reading the port byte by byte can return wrong values. The timer is not incremented when the batteries have been removed, but the value it had when they were removed is kept. Removing the lithium battery and putting it back gives a random value to the timer. $700017 RW ($00 = $4C00-$5BFF) The HW2 display controller doesn't fetch pixel data from RAM but from its own memory. This memory is 4K and all CPU writes to the selected address range (below) will go to both RAM and this memory. (NOTE: It is not possible to *read* from the display memory.) :7-2 - :1-0 Display memory snoop range %00: $4C00-$5BFF %01: $5C00-$6BFF %10: $6C00-$7BFF %11: $7C00-$8BFF Note: AMS never initializes this register, it simply assumes that the display controller is snooping writes to $4C00-$5BFF. Note: For obvious reasons, the contents of the screen does not change when you write to this register. This register is NOT the HW2 equivalence of the register at $600010 on HW1. $70001D RW ($06) :7 Toggles every FS (every time the LCD restarts at line 0) :6-4 - :3 Battery checker bit B (? ???) :2 ? (set) :1 Screen enable (clear this bit to shut down LCD) :0 Battery checker bit A (? enable $600000:2) (AMS:) The battery checker bits must both be set (AB=11) prior to checking the voltage level with $600000:2. Then, after use, bit B must be cleared (AB=10) while the battery trig hardware settles to the "rest" voltage value (%111). Finally, both bits should be cleared. $70001F RW ($07) The Protection must be disabled for changes to have any effect. :7-3 - :2 activates the incrementation of $700014.w when bit 1 is set. Set by AMS on reset. :1 its effect depends on the state of bit 2. :0 Use 5 contrast bits (default for AMS). When this bit is cleared, the contrast hardware uses $60001D:3-0 only to specify the contrast, effectively emulating a HW1. AND, clearing this bit activate the execution in areas from which the Protection can be disabled : ROM_BASE+$12000 to ROM_BASE+$17FFF and ROM_BASE+$1A000 to ROM_BASE+$1FFFF. The execution in the boot sector is not protected by the protection bit2/bit1 1 1 : State set by AMS on reset. $700014.w is incremented. 1 0 : Auto-ints 1, 2, 3 and 5 are inhibited. The RTC is stopped. 0 1 : The RTC is stopped. The auto-ints works normally. 0 0 : The RTC is stopped. The frequencies of all the auto-ints are lower (OSC2 must be slower). AI1 : ~ 176 Hz instead of 256 Hz. AI3 : ~ 40 ticks per minute instead of 60. AI5 : ~ 13.2 Hz instead 19.3 Hz. Only AMS initializes theses bits on reset. The boot code does not. =========================================================================== STEALTH I/O --------------------------------------------------------------------------- Apart from the dedicated (memory mapped) I/O, there are special "stealth" I/O ports that occupy parts of the RAM and the flash ROM address ranges. Every access (read or write) to these special address ranges will issue a transparent stealth I/O operation as well as performing the usual access to RAM or flash ROM. To make things less complicated, it is only the *address* and the *type* of the access (HW1: READ or WRITE, HW2: READ/WRITE and CPU function codes FC2-FC0) that matters to a stealth I/O port, not the actual data. Be careful when WRITING to a stealth I/O port that occupies the same address range as RAM! "N consecutive accesses [to a memory range]" means that there must be no other bus activity during these N accesses (they must be consecutive in *time*). Remember that the HW1 LCD controller DMA is constantly fetching pixel data from RAM. (Use $600015:1 to disable it.) The Protection must be disabled for changes to have any effect. $040000-$07FFFF: (HW1 only?) READ: clears archive memory limit bit 0 WRITE: sets archive memory limit bit 0 $080000-$0BFFFF: (HW1 only?) READ: clears archive memory limit bit 1 WRITE: sets archive memory limit bit 1 $0C0000-$0FFFFF: (HW1 only?) READ: clears archive memory limit bit 2 WRITE: sets archive memory limit bit 2 Three consecutive access to any address >=$390000+'limit'*$10000 and <$400000, where 'limit' is the combined value of the three bits above, crashes the calculator. Use 'limit'=%111 to disable this protection altogether. (HW2:? The CPU must be in supervisor mode for changes to have any effect.) $180000-$1BFFFF: Screen power control READ: Screen power off WRITE: Screen power on Note: The screen is automatically powered up on reads from the range $200000-$3FFFFF. (However, $60001D:4 is always obeyed.) $1C0000-$1FFFFF: "the Protection" enable/disable Note: Four consecutive accesses to this range crashes a HW1 calc! READ: Enable the Protection WRITE: Disable the Protection Note: No access to this range will have any effect unless the access is "authorized," see below. $200000-$20FFFF, $212000-$217FFF, $21A000-$21FFFF: "the Protection" access authorization HW1: In order to alter the state of the Protection, THREE consecutive read accesses must occur from any of the three ranges above immediately prior to the access to the Protection enable/disable range. HW2: (Note: This is somewhat complicated and I don't know exactly how it works. The procedure listed below is probably too strict. Anyway, this is what AMS and the boot sector does.) In order to alter the state of the Protection, (at least) SEVEN supervisor instruction fetches must occur from any of the three ranges above prior to the access to the Protection enable/disable range. The choice of instructions is not arbitrary, it must be one of the following sequences: * To DISABLE the Protection: $4E71, , $4E71, $4E71, $46FC, $2700, $3080, . The very next access must be the WRITE to the Protection enable/ disable range. * To ENABLE the Protection: $4E71, , $4E71, $4E71, $46FC, $2700, $3010, . The very next access must be the READ from the Protection enable/disable range. ($4E71="nop", $46FC="move #imm16,sr", $3080="move.w d0,(a0)", $3010="move.w (a0),d0") =========================================================================== KEYBOARD MATRIX --------------------------------------------------------------------------- \col 6 5 4 3 2 1 0 row\------------------------------------------------------------ 7: F1 F2 F3 F4 F5 alpha 6: HOME MODE CTLG <- CLEAR diamond 5: X Y Z T ^ shift 4: = ( ) , / 2nd 3: | 7 8 9 * > right 2: EE 4 5 6 - v down 1: STO> 1 2 3 + < left 0: ESC APPS 0 . (-) ENTER ^ up ---------------------------------------------------------------- (I have switched the meaning of "row" and "column" compared to other TI89 hardware docs. I believe it makes more sense this way! :) ) Reading the keyboard (mini HOW-TO): 1. Mask out the columns that are of no interest (see $600019) 2. Wait for column mask to settle (AMS waits ~90us) 3. Read the row data (see $60001B) and test the row of interest E.g.: Status of the CATALOG key: %(1)111_0111 -> ($600019), wait, read bit 6 of ($60001B): 0=pressed 1=released. When three keys are pressed and these keys make out three corners in a rectangle, the fourth key in the last corner will appear "pressed" too. E.g.: If F1, F2 and MODE are all pressed simultaneously, HOME will also always be detected as being "pressed." =========================================================================== HW1 DISPLAY CONTROLLER --------------------------------------------------------------------------- The HW1 display system is divided into two parts: the controller and the LCD. The timing source is OSC2, so it is pretty easy to synchronize the screen update with an interrupt (1 or 5) for flicker-free grayscale. (The actual implementation is left as an exercise for the reader.) It takes one OSC2 cycle to transfer four bits (pixels) to the screen, hence the DMA reads one byte from RAM every other OSC2 cycle. The default width of 240 pixels (see $600012) thus takes 60 OSC2 cycles, leaving 4 idle cycles at the end of each pixel row (see $60001C). At the start of each row a "row synchronization" signal (called RS) is sent to the LCD. This is needed because only the first 160 pixels will be displayed on the LCD and it must somehow know when these 160 pixels start. Note that the RS generation and the logical width are completely independent of each other: It is possible to set the RS rate too fast compared to the time needed to transfer all the pixels for a line! The result is very unpredicatable. In fact, the RS will only be honoured by the DMA when it is idle -- but the LCD always sees it and acts upon it! For the special case when the DMA is finished at the very same time as the RS is generated, the DMA will skip the last byte (it will not be sent to the LCD) and (properly) start sending the next screen line instead. When 128 pixel rows (see $600013) have been transferred in this manner, everything starts over and the "frame synchronization" signal (called FS) is activated to tell the LCD to start over from the top again. At the same time, the DMA restart at the top of the frame buffer (see $600010). (If the DMA is ignoring some of the RS because of improper programming (as mentioned above), it will ignore all FS that occur at the same time as these RS as well!) When there are less than 100 lines between each FS, the displayed image will be "repeated." E.g. if the logical screen height is set to 45 lines, the top of the image will be seen on row 0, row 45 and row 90. (The reason for the duplication is that the row driver is in fact a 100-bit shift register where FS is shifted in at the top every RS.) The frame rate can be calculated: logical_screen_height * RS_interval = /with default settings:/ = 128*64 = = 8192 OSC2 cycles/frame (= ~90 Hz) Note that it is only the logical screen height and the contrast that affect the overall "darkness" of the screen. The highest possible (full-screen) frame rate is 4800 OSC2 cycles per frame. =========================================================================== HW2 DISPLAY CONTROLLER --------------------------------------------------------------------------- The HW2 display controller works very much like its HW1 counterpart, but with two major exceptions: * The timing base is OSC3 which is *completely* unrelated to the timer and the interrupt system. Luckily, FS is available at $70001D:7 so synchronization (and thus flicker-free grayscale graphics) is possible. * The display controller does not fetch pixel data from RAM, instead it has an internal 4K display buffer. The display controller monitors the bus activity and it updates the display buffer on every write to the snoop range (see $700017). In other words, writes to this range go to both RAM and the display buffer. =========================================================================== POWER CONTROL --------------------------------------------------------------------------- (to be written) =========================================================================== END OF FILE --------------------------------------------------------------------------- tiemu-3.03-nogdb+dfsg/docs/ti_hw/misc/system.txt000066400000000000000000001162171220314353500216600ustar00rootroot00000000000000***************************************************************************** The system ***************************************************************************** I ) The processor I.1 ) The exception table I.2 ) Supervisor mode versus user mode I.3 ) Internal exceptions I.4 ) The system byte of the status register I.5 ) The processor response to traps II ) The calculator II.1 ) The calculator II.2 ) The timer II.3 ) The screen II.4 ) The RAM II.5 ) The keyboard II.6 ) The link microcontroler II.7 ) Conclusion III ) Fargo III.1 ) Fargo 0.1.x III.2 ) Fargo II 0.2.x III.3 ) Fargo use of the memory III.3.1 ) Introduction III.3.2 ) Relocation: the assembler III.3.3 ) Relocation: Fargo III.4 ) The use of TI OS routines IV ) The texas instrument's operating system IV.1 ) handles IV.2 ) VAT: variable alocation tables IV.3 ) Lite Pascal IV.3.1 ) introduction IV.3.2 ) Tokenization ** IV.4 ) Auto-interrupts **V ) Developing functions I ) The processor When you switch on the calculator, the processor goes to see at address $0000000 in the memory: the 64 bits that are stored there are called the initialisation vector. They are the address of the memory where the first program to be executed is stored. That initialisation vector points to the routines of the operating system ( Texas Instrument's OS ) .. I.1 ) The exception table A trap or exception routine is a program which is called by some internal ( software ) or external ( hardware ) routines. To each trap, we associate a vector ( the address to the program to be executed ). On the 68000 processor, there are 255 vectors. These vectors are longwords stored at the beginning of the memory in the exception vector table. This table begins at $000000 and is over at $0003FF here is this table: addresses | Vector | Description ( hex ) | number | 000000 | 0 | initialisation vector ( special: 64 bits ) 000008 | 2 | Bus Error 00000C | 3 | Address Error 000010 | 4 | Illegal Instructions 000014 | 5 | Division by zero 000018 | 6 | "Chk" instruction 00001C | 7 | "Trapv" instruction 000020 | 8 | Privilege violation 000024 | 9 | Trace 000028 | 10 | Line 1010 emulator 00002C | 11 | Line 1111 emulator 000030/ | 12/ | Reserved or 000060 | 24 | useless 000064 | 25 | Auto-Interrupt level 1 000068 | 26 | Auto-interrupt level 2 00006C | 27 | Auto-interrupt level 3 000070 | 28 | Auto-interrupt level 4 000074 | 29 | Auto-interrupt level 5 000078 | 30 | Auto-interrupt level 6 00007C | 31 | Auto-interrupt level 7 000080/ | 32 | Trap instruction 0000BF | 47 | vectors | 48/63 | Reserved 000100 | 64/255 | User interrupt vectors I.2 ) Supervisor mode versus user mode The 68000 processor was a revolution when it was released: it was powerful and RELIABLE. That reliability ( which is vital to many systems ) was accomplished using two modes: supervisor and user mode. The processor runs programs in the user mode. The supervisor mode is dedicated to the operating system which launches programs and takes control in case of errors or at the end of the execution of the program. In supervisor mode, you have access to all the software and hardware resources of the system: the whole status register, the supervisor stack and all the instructions ( see I.3.b privilege violation ) . When the supervisor mode is launched ( when any vector is triggered ) , the A7 register is modified by the processor and points to the supervisor stack opposed to user stack. Note: the supervisor stack on the 92 is 4 KB long. There, is stored some information on the program being launched, the state of the processor before the program was launched, ... I.3 ) Internal exceptions a ) "normal traps" * Division by Zero: this trap is called when the divisor of a DIVU or DIVS instruction is equal to zero. The programmer may freely redirect this trap to a self made one to , for example, to recalculate the divisor or to exit from the program with a simple message without freezing the calculator. * "CHK": The instruction "Chk" allows us to test if an operand is into a certain interval. If not, the Chk trap is called: the programmer may well redirect this trap. * TrapV: if the V flag is set during the execution of this instruction, the trap is called: again, the programmer may redirect this trap. * Trap: this instruction allows us to redirect our program to one of the 32/47 vector: you need just to type: " Trap " some are used by the system: look in the "traps.txt" file b ) Programming errors * Address Error: this happens, when you write or read a word or a longword at an odd address. Bytes may be written anywhere.. This is due to the fact that the processor has only 23 address pins to address 2^24=16Mb of memory. Proper explanation of this phenomenon is included in the Motorola hardware reference manual. * Privilege violation: this happens when, in the user mode, a program tries to execute a supervisor mode instruction. supervisor instructions are: Stop Reset Rte Move.w source,SR and.w #data,SR Eor.w #data,SR Or.w #data,SR move.l An,USP move.l USP,An You don't need to bother about these instructions ( I have put all this here just for documentation purposes ) : privilege violation traps occur when you haven't set the S bit of the system byte and you are trying to execute a supervisor instruction: it may happen as "illegal instruction" happen: see below. * Illegal instructions: an instruction is invalid if the processor doesn't recognize the instruction... As we are using a compiler which code the instructions, there are only two reasons to such a phenomenon: * you have branched to a label which wasn't a label with instructions ( for example, a label to a table or some data you use... ) : thus, the processor is trying to execute ... well... nothing at all: data... at best, you get an illegal instruction ( at best cause this could lead to destroying memory, or other such things) * the processor executed one of the following code: $4AFA, $4AFB or 4AFC the first 2 ones are reserved and the last one may be used to force an illegal instruction ( in fact, it is what we do when we write " illegal" to make a breakpoint: see \newbies.txt, section VII.1 ) * line 1111 emulator or line 1010 emulator: these happen respectively when $FXXX or $AXXX is executed: ( where X is anything ) as sooner, it often happens when you are trying to execute random data... note: line 1010 is used by the system: it is redirected: thus, you should never get such an instruction... Originally, these opcodes were implemented to allow the programmer to define new instructions. Note that the 1111 code is used in later Motorola processors: it is used to control the arithmetic coprocessor. Under some conditions a line A emulator error will be thrown, this comes about from an ER_Throw being thrown without an ER_Catch run before this.. The standard use of the Line A emulator on the TI92 is to raise errors in the form $Axxx, where xxx is the error code * Trace: when the T bit of the status register, after each instruction, the trace vector is launched: used to write debuggers: that is what Db92 does... I.4 ) The system byte of the status register The system byte is: |T|0|S|0|0|I2|I1|I0| Note: you may modify that byte only when in supervisor mode. * The T ( trace ) bit is set by the Raven debugger: it allows to "trace" a program: when set, after each instruction, it launches the trace vector ( it launches the program which the trace vector points to: ie: the debugger ) * The S ( system ) bit : when set, it allows to modify freely the system byte and to have access to the supervisor resources. * I2,I1 and I0 are the bits of the interrupt mask. The I0, I1 and I2 bits of the system register are used to set the interrupt level mask. These bits are set to an interrupt level: if the trap generated has a higher level than the interrupt mask, then the trap is executed. Otherwise it is ignored. ( ignoring a trap generally means that another interrupt, with a higher priority is being treated ) Here is how these bits are set: I2 I1 I0 level 0 | 0 0 0 | ---------> lowest priority level 1 | 0 0 1 | level 2 | 0 1 0 | level 3 | 0 1 1 | level 4 | 1 0 0 | level 5 | 1 0 1 | level 6 | 1 1 0 | level 7 | 1 1 1 | ---------> highest priority Note: #0=%000; #1=%001; #2=%010; etc... I.5 ) The processor response to traps This section is added for documentation purposes. till you do not decide to write a debugger, data in this section will never be of any use to you.... If you just want to know how it works, then... The Processor services Exceptions with a certain priority. There exist 3 groups: ------------------------------------------------------------------ | Group | Exception | recognition | priority | ------------------------------------------------------------------ | 0 | RESET | at the end of | ^ | | | BUS ERROR | the clock cycle | | | ^ | | ADDRESS ERROR | | | | | ------------------------------------------------------------------ | | 1 | TRACE | at the end of | ^ | | | | INTERRUPTION | an instruction | | | | | | ILLEGAL INSTRUCTION | cycle | | | | | | PRIVILEGE VIOLATION | | | | | ------------------------------------------------------------------ | | 2 | Trap #0 to #15 | during an | NO | | | | TRAPV, CHK | instruction | PRIORITY | | | | DIVU, DIVS | cycle | | | | (if division by 0) | | | ------------------------------------------------------------------ The exception column indicates the names of the exceptions in the group. The recognition column indicates when the processor takes into account the exceptions. The priority column indicates what is the priority ( ie: the one which will be treated first ) within the group. Finally, the arrow to the right indicates the increasing priority of the groups. Thus, some exceptions may happen during an instruction... These groups reflect the way the processor will handle them. during each exception, the processor stores some information on the supervisor stack so that the OS may found what went wrong... The group 0 will result in the following data structure on the stack: Status of the R/W,I/N,FC2,FC1,FC0 pins ( the 5 first bits of the word ) ^ the address which was on the bus address ( a longword ) | a copy of the instruction register ( a word ) | a copy of the status register ( a word ) | the PC ( a longword ) | The arrow indicates the decreasing addresses. The Stack pointer points at the first entry of that table after the exception. The group 1 and 2 will result in the following data structure on the stack: a copy of the status register ( a word ) ^ the PC ( a longword ) | ----------------------------------------------------------------------------- II ) The calculator II.1 ) The calculator. Physically, the processor is wired on a card. To the processor, is connected other hardware. There is the RAM, the ROM, the timer, the link microcontroler, the screen refresher and some others. These devices can be accessed through certain addresses ( these addresses depend on the way these devices were wired to the processor ). In fact , what happens when you execute a move D0,($xxxx) command is: the processor uses some of its output pins to write the D0 register at address $xxxx. First, the address pins are pulled high or low ( logic level 1 or 0 ) to match the address $xxxx. There is some external decoding logic which connected on the address bus ( some "and" gates in a small IC ) which triggers only the device located at this address. Then, when the data pins are pulled high or low to match the D0 register, only the right device reads the pins. Thus, this address has no physical meaning: it may be effectively some RAM or ROM but it may be the input pin of the graphic controller. Whether it is some real memory or the internal register of a peripheral depends on the external decoding logic. $000000-$1FFFFF : RAM $200000-$3FFFFF : Module ROM, or masked ROM if there's no module $400000-$5FFFFF : Module ROM $600000-$6FFFFF : Memory mapped I/O (only the lower 6 bits of the address really point to something) $700000-$FFFFFF : Nothing (floating bus) The Memory mapped I/O is used by all the devices other than RAM and ROM. For example, you may command and have access to all the features of the link microcontroler by switching some bits at addresses: $60000C and $60000E. Not all these ports are understood... Check the "lowlevel.txt" file for more on these. However, here is a list of the most important: * The timer: it may be freely reprogrammed to trigger interrupts with new frequencies * The video controller: it is not very well understood but it is possible for now to adjust the contrast, and tell him where to get in memory the data to update the screen. ( see I.7 for more...) * The I/O link microcontroler: it is possible to directly command the lines of the i/o port. * The keyboard: it may be read directly by these ports. ( check "lowlevel.txt" and see \lesson\lesson_2.txt) II.2 ) The Timer Outside of the processor, on the card which supports the processor, there is a component, a hardware timer which periodically triggers the auto interrupts (see I.1: vector nø25-31)( not all with the same rate ) . These interrupts are used by the system to read the keyboard for example and many other tasks. They allow the processor (and your programs) to be aware to the time. Note: 1) disabling interrupts will greatly increase the programs speed ( it can be done by setting the interrupt mask to level 7 ) but will require special programming ( for example: the OS keyboard reading routine uses interrupts: you will no be able to access to the keyboard anymore with them: you will have to directly read the keyboard controller. To know why, see \lesson\lesson_2.txt) 2) Interrupts can be redirected to create a resident program for example or to have grayscale graphics. II.3 ) The screen As the screen is a simple Black & White screen, a screen is described by 128(height)*240(width)/8=3840 bytes =$F00 bytes, each bit representing one pixel. To display something on the screen you just need to build a "virtual screen" in RAM: first, allocate a $F00 bytes long memory area. There, the first bit will be the upper left pixel: %1 for on and %0 for off. Then, all following bits will be the pixels to the right till the end of the upper line of the screen. Then, pixels are mapped the same way, one line after the other. Now, if go back at the beginning of that memory area, and if you read the bits for $F00 bytes, you will read the pixels from the left to the right of one line, from the upper line to the down line. All you need now to do is to tell the video controller that you wish him to display a picture using the data stored in the area you allocated (you need to write to the $600010 I/O port the address of your memory area divided by 8: check "lowlevel.txt" ). Now, the video controller will read that memory area just like we did and it will update the screen 100 times per second depending on the data in this memory area. On 92 with ROM 1.x, the memory used by the system is at address $4440 and on ROM 2.x, this address is $4720. The calculator $600010 port is originally configured to get LCD data in this location. To get the exact location of the LCD memory, use the system variable: "tios::main_lcd". For more on Grayscale and the use of virtual screens, look at \lesson\lesson_3.txt II.4 ) The RAM Please, note that this section is not very useful for programming it is there just for those of you who are interested to know how it works. The 92 was probably originally build to have a 256 k memory. When only 128 k are present, then, the RAM can be linearly addressable from the processor: the RAM is in one piece: it is one chip. When using 256 k, there are two chip: this allows interleaving 2 and increases the access to the memory sometimes with a factor 50 % (I tested it: just write a program with many access to memory: you will see..). Here is why: 128k: ----------- --------------- | Wire | | Processor |---------| Memory bank | | | | ----------- --------------- 256k: |--------| ----------- |--------| Bank 1 | | | |--------| Processor |----| | | |--------| ----------- |--------| Bank 2 | |--------| The interleaved memory is build so that consecutive addresses are always on different memory banks. Here is a schematic of what happens when doing a sequential memory access with and without interleaving. 128k: each memory access requires the same access time ( often around 5 or 20 processor cycles ) address nøi: i i+1 i+2 | | | ----------------------------------------> time ( unit: processor cycle ) 256k: each access is done at the same time on both banks: the process is paralleled: while the first access will require the same time than without interleaving, all other will require half less time if access is sequential. address nøi: 1 2 3 4 5 | | | | | -----------------------------------------> time ( unit: processor cycle ) II.5 ) The keyboard To understand the matrix type keyboard, look at the following 4 keys keyboard: D0 ------------+------------+ | | key 1 |- key 2 |- | | +--+ +--+ | | | | | | D1 ------------+------------+ | | | | | key 3 |- | key 4 |- | | | | | +--+ +--+ | | D2 D3 Where "+" is a connected node. | ; This is a |- ; manual switch | ; If one pulls high the D2 and D3 lines (+5V), D0 or D1 will be pulled high if one key was hit. Now, if you decide to mask column D2 (0V) and apply +5V to D3 , if you check first D0 then D1, you will know for sure if one of the key 2 or 4 was hit and you will know which one(s): If key 4 is hit, D1 is high and if key 2 is hit, D0 is high. This system can be generalized to any size: the 92 keyboard is based on this matrix type design A thoughtful search on the 92 motherboard will show you that the 92 keyboard is wired in a standard fashion. It is a 10 lines/8 columns matrix. The keys are wired so that the two lowest enter keys are the same and the highest enter key is different. The on key does not belong to this matrix which is build on the basis of the matrix shown in the lowlevel.txt file. The 10+8 lines are directly connected to the CPU: I have been unable to get their exact pinout. I don't really understand how this works because if the keyboard is directly connected to the CPU, it should interfere with the bus.. Don't know really why it works.. II.6 ) The link microcontroler Note: This section was written by Sami Khawam All TI calculators have two open-drain lines. There is a method under Fargo to access each line individually for input and output (see "lowlevel.txt"), but in most cases where byte-transfers are needed, TI's built-in link routines are simple en effective to use. The protocol used by these routines will be described here: When the lines are not active they are high. You should remember that if an end of an open-drain line is pulled-down (connected to the ground) by a device, all devices that are attached to that line (including the device that pulled the line down) will read a low signal even if they are trying to pull the line up. We will assume that Calculator1 (C1) want to send a byte to Calculator2 (C2). The lines will be refered by L1 and L2. In the text "10" means L1 high and L2 low, and "01" means L1 low and L2 high. -In idle mode, both lines are high. Depending on the bit that C1 wants to send, it will pull-down different lines: * .L2 will be pulled-down if the bit is 1. .C1 reads now 10. * .L1 will be pulled-down if the bit is 0. .C1 reads now 01. C1 will wait until it reads a 00. -C2 was waiting for a signal change on L1 or L2. * .If it reads 10 it knows that the bit sent is 1. .L1 will be pulled-down by C2 .Now C2 reads 00. It will wait for a 01 * .If it reads 01 it knows that the bit sent is 0. .L2 will be pulled-down by C2 .Now C2 reads 00. It will wait for a 10 -C1 was waiting for a 00. Now it pull-up both lines. After this C1 will read either 01 or 10. -C2 will also pull-up the lines, and reads 11. -C1 reads also 11. This will be repeated 8 times in order to transfer a bit. This protocol used by TI on their calculators, is an effective protocol. But in most cases you do not need to go through those details when programming, since everything is made by the built-in ROM routines. To learn more on the byte level protocol, look at \doc\ti-prot.txt II.7 ) Conclusion If you are curious enough to open your calculator, you will notice that what I explained there is not exactly what happens: There are 4 video controllers: 2 for the lines and 2 for the columns. I found no dedicated link microcontroler on my mother board: perhaps does one of the video MCU also handle the link ... I also found no external timer and found no external address decoding logic for the i/o ports. One should also notice that the processor has between 90 and 120 pins ( I did not counted them but looked at the processor ) while the original Motorola 68k processor had ~75 pins. This may mean that the processor has many build in newer functions. ----------------------------------------------------------------------------- III ) Fargo When Fargo is not installed, the TI OS is running and it is not possible to have access directly to the processor: it is impossible to execute ASM ( impossible... perhaps someone will find a way one day ... ). At least, no one ever found a leak into the TI OS: it is very well programmed... III.1 ) Fargo 0.1.x To overcome that problem, David Ellsworth had a great idea: He just send the 92 a backup slightly bigger than the calc's memory: at one point or another, the address the backup writes to will be bigger than $20000 ( 128 kb ). Higher addresses go back at the beginning of the memory: ( ex: the initialisation vector is $000000 and $020000 is physically just the same... Just the way the memory chip is connected ) Thus, the backup will be writing in the exception vector table and on the vectors used to send or receive data... At one point or another, a special routine, already copied in memory, will be triggered instead of those in charge of the backup. Thus, the backup will end abnormally but the special routine ( located at the end of the memory, at the begening of the core.o file ) will redirect some auto interrupts to newer interrupt routine. One of those will test each time it is launched by the timer if the [shift] + [on] combination key was hit. Then, basic routines ( the core ) and some libs can be send to the 92 to execute assembly. III.2 ) Fargo II 0.2.x That version works exactly the same but it uses an "event handler" which is located around 36 kb in the memory. it writes upon that handler the routine which then redirects some auto interrupts. It saves the pain to rewrite things on the exception table and generates smaller backups.... Note: The major advantage is that no "RESET" code needs to be run. Restoring the vector table was just a matter of one ROM call (although it was done with a loop). Fargo 0.1.x had a minimal portion of the actual ROM reset code (without the memory clearing code etc.) as writing over all the memory damaged sytem data in the RAM and the running CODE in the ROM would therefore crash the machine after the backup had been sent. With Fargo II this is not necessary. III.3 ) Fargo use of the memory III.3.1 ) Introduction The greatest treat to assembly programming is the TI OS. The thing is that it will relocate programs in the RAM so that as little RAM as possible is used. For example, if you delete a standard TI program, the OS will move data and variables in memory so that RAM is really freed: the memory is defragmented just like a defragmentation program works on your Hard Disk. This means that it is impossible to know where in memory programs will be executed. This is a problem with immediate addressing: BSR and JSR instructions refer to precise addresses which are not known when the program is compiled and which are not known even when copied in the RAM: the programs they refer to can be moved anytime. This phenomenon is common to all the modern computers. The size of the program memory is limited and must be used in the most efficient way possible. The solution to this problem is Relocation !!! III.3.2 ) Relocation: the assembler An easy way to understand how it works is to sneak into the object files generated by the A68k assembler ( before they are turned into 92 files by the linker: "flinker" ). If you just look into the Fargo.bat file (dos users), you will see that a68k generates .o files which are used to build .92p files and which are then deleted. Just remove the line which delete these object files. Then, assembling one of your program will generate the .92p file and a .o file. A file is included in this distribution: \doc\amiga.txt. This file describes the format of these object files. Note that this file format is named "amiga" because it was originally developed by the authors of the amiga OS and was used by the amiga OS. Relocation is a process transparent to the user. It must be taken care of by the OS. To allow the process to take place, the assembler generates tables at the end of the code. These tables contain relative pointers from the beginning of the code section. Each of these relative pointer point to a place in the code where an immediate address is used. These relative pointers are called offsets. For example, here is a program I compiled: ************************** include "flib.h" xdef _main xdef _comment _main: jsr flib::clr_scr rts _comment: dc.b "esai",0 end *************************** here is the corresponding object file generated. 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 00 00 00 03 e7 00 00 00 00 00 00 03 e8 00 00 00 01 ..þ......Þ... 00 10 20 00 00 00 00 00 03 e9 00 00 00 04 4e b9 00 00 .....Ú...N¦.. 10 20 00 00 4e 75 65 73 61 69 00 00 4e 71 00 00 03 ef ..Nuesai..Nq..´ 20 30 01 00 00 02 5f 6d 61 69 6e 00 00 00 00 00 00 00 .._main........ 30 40 01 00 00 02 5f 63 6f 6d 6d 65 6e 74 00 00 00 08 .._comment.... 40 50 81 00 00 03 66 6c 69 62 40 30 30 30 39 00 00 00 ü..flib@0009... 50 60 00 00 00 01 00 00 00 02 00 00 00 00 00 00 03 f2 ............._ 60 The hunk code begins at $14: 00 00 03 e9 00 00 00 04 4e b9 00 00 00 00 4e 75 65 73 61 69 00 00 4e 71 hunk type | hunk length| code | Note that the name of the program is considered as some code by the assembler and that it adds the $00004e71 longword at the end of all program codes ( don't know really why: probably something to do with Fargo... ) Then the hunk_ext 00 00 03 ef ; hunk type 01 00 00 02 5f 6d 61 69 6e 00 00 00 00 00 00 00 ; symbol type 01 01 00 00 02 5f 63 6f 6d 6d 65 6e 74 00 00 00 08 ; length: 02 longwords 81 00 00 03 66 6c 69 62 40 30 30 30 39 00 00 00 ; symbol type 81, length 03 the last symbol name is the library name/number which is called in the program. Here, flib::clr_scr is flib@0009. Lastly, following the library symbol is its relocation table. 00 00 00 01 00 00 00 02 table lenght | offsets ( in longwords ) Here, there is only one call to clr_scr located at $2 from the beginning of the code. Then, flinker will create a Fargo file with the right header structure, it will add the code to this file and lastly, will compress these tables and add them at the end of the file. III.3.3 ) Relocation: Fargo Now, if you send this .92p file to the 92 and execute it, here is what Fargo will do. First, it will look at these tables. It will get the address of each subroutine called and will replace all the blanks left by the assembler in the "Jsr" opcodes. It will use the relocation table to know where to do these replacements. Perhaps some already wondered who relocated the Fargo shell ? Well, the Fargo core is stored at the end of the RAM at a place the TI OS never reaches. I believe there exist a TI OS variable which gives the end of the available memory. All what is necessary to do is to change this variable ( to decrease it slightly...) . Note: it is dangerous to play with it though, in reducing memory size (like Raven did). TI-BASIC tokens are processed at the end of memory, if a Fargo program writes data at the end of memory and adjusts this pointer then this data could be overwritten. If this wasn't the case Fargo would support TSR's already (most probably). The only problem left is how Fargo gets the address of the subroutine. I believe that in the relocation table, there is the library name. Fargo searches this file in memory ( it probably uses the VAT to do so. See IV.2) and then reads at the beginning of the library a table which lists the relative address -from the beginning of the library file- of the subroutine ( it probably uses the library number to do so ). III.4 ) The use of TI OS routines Fargo solves another problem than the problem of relocation. There exist different ROM versions for the 92. While these different ROM versions correct a few bugs in the different units of the calculator, they also have a great drawback. The same routines ( ex: display routines ) are not at the same place in different ROM versions. This means that using the TI OS routines is not very easy if you want to write a program which will work on any 92. The solution is the use of a table of pointers pointing to the correct addresses. When Fargo is installed into a backup, it initialises the TIOS library so that it uses the right addresses. Each subroutine there is an absolute pointer to the right subroutine in ROM. Then, during the relocation process, the TIOS library is not handled like all other libraries. To blanks in the "Jsr" opcodes using TIOS are added the absolute address corresponding to the routine number in the table library -located at the beginning of the file-. RAM constants which were used in the "move.l tios::clr_scr,a0" opcode are handled in a similar fashion: the blanks left are replaced by the "subroutine absolute address" . ------------------------------------------------------------------------------ IV ) The texas instrument's operating system IV.1 ) handles When you want to get some dynamic memory ( a memory you will free at the end of the program ), you use a TI-OS routine called "tios::HeapAlloc" with the correct parameters ( size of memory needed on a longword ). This routine will return a word integer: a handle. It is a sort of pointer to the memory you asked for. To get the real pointer to that memory, you should use the "tios::deref" macro which will return a pointer you will be able to use. Handles are the TI-OS solution to moving programs in memory to save as much space as possible ( see II.3 ). Basically, a handle is a number. It is the number of an entry in an array. That array is pointed to by the longword stored at address $5D42. The entries in this array are the relative address from the beginning of the array to the memory the handle represents. So, to get the address of a handle: (($5D42) + handle * 4) - 2 This is what the "tios::deref" macro does. Note: $5D42 == tios::Heap , "-2" isn't done by the tios::deref macro. tios::Heap+handle*4-2 would give the address of the word (preceeding the data) indicating the length of the memory block (in words) Note: There exist some static handles: these are studied in IV.2 Please, check also "handles.txt" . If you wish to use practically handles, look at \doc\68kguide.txt, section 1.9: handles. Now, if the TI OS decides to move a program in memory to compact the memory so that no "holes" are left, it adjusts the pointer to the program or the data while the handle number is kept unmodified. If you knew the handle number, you can always get the address: the moving process is transparent to the user. IV.2 ) VAT: variable allocation tables As stated in Fargo documentation, handles between 0000 and 0015 included are system handles: they are used by TI OS and are de facto static. Handles $0B and $0C are used to store the info on folders and files on the 92. Note: They have the same use as that of the FAT on a DOS Hard Disk handle $B : folder table handle $C : main folder The first hex number indicates the relative address from the beginning of the file/folder table handle. format of file/folder tables ---------------------------- $00.W : maximum number of files/folders before handle has to be resized $02.W : number (N) of files/folders in table $04 : listing in the format below (alphabetical order) +$00 : file/folder name (lowercase) terminating in 0s until $08 +$08.W : file/folder flags . 3 (bit3) : locked . 4 (bit4) : hidden . 7 (bit7) : folder . 14 (bit14) : parameter (in function/program) +$0A.W : handle of file/file table $04 + ( $0C * N ): end of the table Note: These tables only change in size when more room is required to store the entries, for speed the table is only resized at intervals of 10 entries. This is marked by the first word in the table, their corresponding size change is $78 bytes. So, the handle $B will point to a table which lists all folders on the calc ( including the folder "main" ). In this table, you will find the handle of each folder and each of these handle will point to a table of files. In each of these table of files, there will be the files and their respective handle which will point to the file itself. Note: this last paragraph is included for documentation purposes: using it to effectively access to these handles would probably lead to a big BUGS as resizing these handles could lead the TI OS memory routines to move your program in memory which would mean that the Fargo relocation was useless... For more on the TI OS file formats, functions/programs structure and tokenization, please read Gareth's documentation, \doc\files.txt. ----------------------------------------------------------------------------- IV.3 ) Lite Pascal IV.3.1 ) introduction The programmation langage implemented in the 92 is extremly powerfull as it allows the definition of local variables and features many high level langage functions. However, as some of you have perhaps allready tested it, it is extremly slow. For example, here is a small program i did to test this: **************** essai() Prgm local a,i 0->a For i,0,10000 a+1->a EndFor EndPrgm **************** The corresponding program i wrote in assembly: **************** include "flib.h" xdef _main xdef _comment i equ 10000 _main: jsr flib::clr_scr clr.l d1 move.l #i-1,d0 loop add.l #1,d1 dbra.l d0,loop rts _comment: dc.b "essai",0 end ************************************* The ti version took exactly 2 minutes to execute on my 92 II The assembly version executed itself so fast that it was impossible to measure anything. I used the assembly version with the maximum value possible for i ( 2^32-1 = 4.5 billion ). Doing 4.5 billion loops took me less than one second... Impressive, eh ? !! IV.3.2 ) Tokenization The explanation to this phenomenon is the way the ti traduces the program. The ti does not generate any assembly code for this program. It interpretes it This means that it simulates a computer which understands the lite pascal instructions. To do this, it has a whole bunch of subroutines with parameters which simulate these instructions. First, when you edit your program, the text of the program is stored (probably) in the stack. Upon exit, the OS creates a file to store this program. The program is stored in a very peculiar form which is explained in \doc\files.txt. In fact, it is translated in a post fixed notation: the greatest advantage to this notation is that it takes into account the priority of the operateurs. Upon execution, two process take place: first, there is an error checking on each expression before execution. Then, expressions are executed. The fact that the error checking is not done before execution slows down the whole process and the way the instructions are executed is extremly slow by itself. A book of mine states that interpretation is usually 10000 slower than compilaton. Note to those interested in compilation theory. The process of tokenizing is likely not to be done by a syntax analysis program. In this case, most of the errors would have been detected sooner. This means that the Post Fixed Notation is probably generated by a homemade algorithm. Please, note that it would be possible to write a code generator on PC's for the 92 using this post fixed notation. However, the greatest pb with this notation is that the code is very difficult to optimize. That is why it is not used very often in compilers. Only in interpreters. ***************************************************************************** System ***************************************************************************** tiemu-3.03-nogdb+dfsg/docs/ti_hw/tie/000077500000000000000000000000001220314353500174115ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/ti_hw/tie/IO-PORTS.TXT000066400000000000000000000262621220314353500212360ustar00rootroot00000000000000 I/O Ports Information --------------------- Note:This info was mostly taken from David Ellsworth's Fargo documentation ----------------------------------------------------------------------------- INTRODUCTION ----------------------------------------------------------------------------- If all a computer had was its RAM and ROM, it would just be an inert box doing invisible calculations. To connect to the outside world, computers need I/O ports. On the TI-89/92+, these ports are used to access the keyboard, link port, LCD, and some other hardware settings. This text file describes how the TI-89/92+ organizes its memory, and lists all of the known I/O ports. Since the 68000 processor has no dedicated instructions for reading and writing I/O ports, all I/O must be memory-mapped. This means that I/O ports are read and written by accessing specific addresses in memory. The addresses in the range 600000-60001F correspond to memory-mapped I/O. Directly accessing I/O ports has its advantages and disadvantages. It is very low-level, and gives you complete control. However, it can be a complex process, and why reinvent the wheel? For this reason, most I/O tasks (such as reading keys, sending and receiving through the link port, and changing the contrast) are already handled by the TI-89/92+'s ROM. There are some times when it is still best to directly access the I/O ports. The TI-89/92+ is capable of recognizing several keys held down at once, but the ROM has no built-in provision for this. When you want to read multiple keys at once in a program, you must use direct I/O. ---------------------------------------------------------------------------- THE MEMORY MAP ---------------------------------------------------------------------------- Memory addresses are 4 bytes long (32 bits). However, the 68000 processor has a 24 bit addressing bus. For this reason, addresses listed here in hexidecimal will be 6 digits long. On the TI-89, memory is mapped out as follows: 000000-1FFFFF : RAM 200000-3FFFFF : Module ROM 400000-5FFFFF : Nothing 600000-6FFFFF : Memory mapped I/O (lower 6 bits) 700000-FFFFFF : Nothing (floating bus) On the TI-92+, memory is mapped out as follows: 000000-1FFFFF : RAM 200000-3FFFFF : Module ROM, or masked ROM if there's no module 400000-5FFFFF : Plus Module ROM 600000-6FFFFF : Memory mapped I/O (lower 6 bits) 700000-FFFFFF : Nothing (floating bus) On the TI92 (2.1 and lower versions), memory is mapped out as follows: 000000-1FFFFF : RAM : (exact: 1FFFF [128kB memory] 3FFFF [256kB memory]) 200000-3FFFFF : Module ROM 400000-5FFFFF : Expansion ROM (TI92 2.1) 600000-6FFFFF : Memory mapped I/O (lower 6 bits) 700000-FFFFFF : Nothing Note that, for example, the RAM range covers 2 Mb. This does not mean there is 2 Mb of RAM; it means that any RAM accesses beyond the maximum (usually 128 kb) will wrap around to the beginning. The same goes for ROM, except that the maximum is usually 1 Mb. TI-89 ROMs use: 000000-03FFFF to address RAM. 200000-3FFFFF to address ROM (soldered onto the board). 600000-60001F to address I/O. TI-92+/TI92 2.1 ROMs use: 000000-03FFFF to address RAM. 400000-4FFFFF to address ROM (Plus Module ROM). 600000-60001F to address I/O. TI92 (1.x) ROM use: 000000-01FFFF to address RAM. 200000-3FFFFF to address ROM (Plus Module ROM). 600000-60001F to address I/O. ----------------------------------------------------------------------------- THE I/O PORTS ----------------------------------------------------------------------------- :RO = read-only :WO = write-only (returns random values when read) :RW = read/write MSB LSB <76543210|76543210> :RW [600000] <.....2..|........> = something to do with keyboard <..5.....|........> = bits <....0> of contrast <........|.......0> = clear: interleave RAM (allows use of 256K of RAM) <........|.....2..> = set: generate Auto-Int 7 when memory below [000120] : is written :WO [600002] <........|........> = :WO [600004] <........|....3...> = set: 000000..1FFFFF mapped to 200000..3FFFFF :WO [600006] <........|........> = :WO [600008] <........|........> = :WO [60000A] <........|........> = :RW [60000C] <765.3210|........> = (write) link status <........|7...321.> = (read) link status <........|..5.....> = (read) set: one byte receive buffer has a byte <........|.6......> = (read) set: one byte transmit buffer is empty :RW [60000E] <.......0|........> = set red output, if direct port access enabled <......1.|........> = set white output, if direct port access enabled <.....2..|........> = read red output <....3...|........> = read white output <.6......|........> = enable direct port access <........|76543210> = read a byte from the receive buffer (1 byte buffer) <........|76543210> = write a byte to the transmit buffer (1 byte buffer) :WO [600010] <76543210|76543210> = Address of LCD memory divided by 8 :WO [600012] <..543210|........> = LCD horizontal frequency (?maybe?) : The TI ROM writes $31 to this port during : initialization. <........|76543210> = $100 - number of LCD scanlines : If the number of scanlines is smaller than $80 (the : actual height of the LCD) the display will be : duplicated in the lower half. Decreasing the height : darkens the LCD; increasing the height lightens the : LCD. The TI ROM writes $80 to this port during : initialization. :RW [600014] <........|........> = :RW [600016] <........|76543210> = Programmable rate generator. Set the timer's init- : ial value by writing it to this port. The timer is : incremented every 6250 clock cycles, unless it has : a value of zero, in which case it is reset to its : initial value. The LCD is refreshed every 16th time : this timer is incremented. : : See also Auto-Ints 1 and 5 in Interrupts.txt. : : The incrementation rate would be exactly 1600 Hz if : the processor's clock rate were exactly 10 MHz. In : reality, it averages around 1400 Hz, and is depen- : dent on battery power (among other things). : : The ROM sets the initial value of the timer to $B2, : effectively giving it a period of 79 ticks. It uses : the timer for Auto Power Down, which is set to : occur after 6000 interrupts. If the clock rate were : 9.875 MHz, the interrupt rate would be 20 Hz and : countdown delay would be 5 minutes. I think it is : safe to assume that the designers of the TI-89/92+ : intended the APD delay to be 5 minutes. : : For this reason, and becaues it is unlikely that : the designers intended the clock rate to be any- : thing other than 10 MHz, I am inclined to think : that they chose the initial value to be $B2 instead : of $B1 for a very particular reason: auto-int 5 : will coincide with auto-int 1 with a period of 4, : the maximum period possible. This insures that the : TI-89/92+ will run more smoothly than it would if the : two interrupts coincided with a period of 2 or 1. : If you don't understand this, don't worry -- it is : only a matter of curiosity. :RW [600018] <......10:76543210> = keyboard row mask; setting a bit masks the : corresponding row of the keyboard from being : read by [60001B]. :RW [60001A] <......1.|........> = ON key status (0=down, 1=up) <........|76543210> = keyboard column mask; if a bit is clear, one or : more keys in the corresponding column are being : held down. Keys in rows masked by [600018] are : ignored. :WO [60001C] <...43210|........> = Something to do with LCD : The TI89/TI92+ ROM writes $21 to this port during : initialization, and $FF when the calculator is : turned off. <........|....3210> = bits <4321.> of contrast :WO [60001E] <........|........> = ----------------------------------------------------------------------------- THE KEYBOARD MATRIX ----------------------------------------------------------------------------- As was hinted in the I/O ports section, the keyboard is accessed internally as a matrix. This matrix can be read by writing [600018], pausing to allow the I/O to recover, then reading [60001B]. Keyboard Matrix on the TI 92: ----------------------------- Row +-------+-------+-------+-------+-------+-------+-------+-------+ V Col>| Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | +-------+-------+-------+-------+-------+-------+-------+-------+-------+ | Bit 0 | down | right | up | left | hand | shift |diamond| 2nd | | Bit 1 | 3 | 2 | 1 | F8 | W | S | Z | unused| | Bit 2 | 6 | 5 | 4 | F3 | E | D | X | unused| | Bit 3 | 9 | 8 | 7 | F7 | R | F | C | STO | | Bit 4 | , | ) | ( | F2 | T | G | V | space | | Bit 5 | TAN | COS | SIN | F6 | Y | H | B | / | | Bit 6 | P | ENTER2| LN | F1 | U | J | N | ^ | | Bit 7 | * | APPS | CLEAR | F5 | I | K | M | = | | Bit 8 | unused| ESC | MODE | + | O | L | theta |backspc| | Bit 9 | (-) | . | 0 | F4 | Q | A | ENTER1| - | +-------+-------+-------+-------+-------+-------+-------+-------+-------+ Note: ENTER1 is on the alphabetic _and_ numeric keypads. ENTER2 is next to the cursor pad. Keyboard Matrix on the TI 89: ----------------------------- Row +-------+-------+-------+-------+-------+-------+-------+-------+ V Col>| Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | +-------+-------+-------+-------+-------+-------+-------+-------+-------+ | Bit 0 | Alpha | Diam. | Shift | 2nd | Right | Down | Left | Up | | Bit 1 | F5 | Clear | ^ | / | * | - | + | Enter | | Bit 2 | F4 |Backspc| T | , | 9 | 6 | 3 | (-) | | Bit 3 | F3 |Catalog| Z | ) | 8 | 5 | 2 | . | | Bit 4 | F2 | Mode | Y | ( | 7 | 4 | 1 | 0 | | Bit 5 | F1 | Home | X | = | | | EE | STO | Apps | | Bit 6 | | | | | | | | Esc | +-------+-------+-------+-------+-------+-------+-------+-------+-------+ Because of the way the TI89/TI92+ 's keyboard is wired, if you hold down three keys that form the corners of a rectangle, the TI89/TI92+ will think you are also holding down the key at the fourth corner. The [ON] key is special, and is not part of the matrix. ----------------------------------------------------------------------------- INTERNAL ROUTINES ----------------------------------------------------------------------------- This section contains some system routines that are used in the TI89/92+'s ROM to perform specific tasks. ------------ Reset_Link() ------------ Wait $4E20 Mask Int 5 Read [60000C].W [60000C].B = $E0 Wait $0100 Set bit 0 of [60000E].B Set bit 1 of [60000E].B Wait $0100 Clear bit 0 of [60000E].B Clear bit 1 of [60000E].B Wait $0100 Flush() ------- Flush() ------- [60000C].B = $8D tiemu-3.03-nogdb+dfsg/docs/vat/000077500000000000000000000000001220314353500163105ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/vat/fld_list.c000066400000000000000000000005511220314353500202550ustar00rootroot00000000000000// C Source File // Created 25/02/2005; 10:25:37 #include // Main Function void _main(void) { HSym sym; HANDLE folder; HANDLE top; // Use SymFindHome sym = SymFindHome(SYMSTR("main")); folder = sym.folder; // Use DerefSym top = DerefSym(SymFindHome(SYMSTR("main")))->handle; printf("%04x %04x\n", folder, top); } tiemu-3.03-nogdb+dfsg/docs/vat/fld_list.tpr000066400000000000000000000022321220314353500206360ustar00rootroot00000000000000[Settings] Archive=0 Flash OS=0 Fargo=0 Use Data Variable=0 Data Variable= Copy Data Variable=1 Copy Data Variable if Archived=1 Pack=0 Packed Variable= Project Name=fldlist GCC Switches=-Os -Wall -W -Wwrite-strings -ffunction-sections -fdata-sections GNU Assembler Switches= Assembler Switches=-g -t Debug Info=0 Standard Library=1 Initialize BSS=1 Optimize NOPs=1 Optimize Returns=1 Optimize Branches=1 Optimize Moves=1 Optimize Tests=1 Optimize Calculations=1 Remove Unused Sections=1 Cut Unused Ranges=1 Reorder Sections=1 Merge Constants=1 Binary Output=0 Command Line= Post-Build Process= [Library Options] Use TI-89=1 Use TI-92 Plus=1 Use V200=1 Optimize Calc Consts=0 Use Kernel=0 Use PreOS=0 Minimum AMS Version Defined=1 Minimum AMS Version=1.00 Unofficial OS Support=0 Reloc Format=AMS ROM Call Format=Direct BSS Ref Format=Kernel Data Ref Format=Kernel Use F-Line Jumps=0 Use 4-Byte F-Line Jumps=0 Optimize ROM Calls=0 Use Internal F-Line Emulator=0 Use Return Value=0 Enable Error Return=0 Save Screen=1 [File Editing] Open File=C:\sources\roms\tiemu\docs\vat\fld_list.c.c [Included Files] C File 1=fld_list.c tiemu-3.03-nogdb+dfsg/docs/vat/vat_doors.htm000066400000000000000000000336641220314353500210360ustar00rootroot00000000000000Doors Homepage

Tips

Here we will write all tips we know about Fargo programming.

We've just wrote a part of the description of the VAT ! Go and see it !
WARNING: This is for TI92/92 II only . The VAT on TI89/92+ is slightly different. Mail me if you want infos about it.

When we have time, we will talk about:

  • How to optimize in size a program
  • Many other things..
  • If you have a tip and you want it to be on that page, mail us!

     The VAT(variable alocation table) is a table which lists the variables and folders of your calc.
    We will describe it in four parts:

    1) The folder table
    2) The variables tables
    3) Some variables caracteristics
    4) Some variable formats

    1) The folder table

    For all actual Roms, the folder table is associated with handle #$0B.
    So when you do  moveq.w #$B,d0
                              tios::DEREF d0,a0

    You get in a0 the adress of the folder table:
    It has the following format:

    0(a0).w = maximum number of folders before handle #$B needs to be resized
    2(a0).w = actual number of folders
    We always have: 2(a0).w <= 0(a0).w

    After this small header, there is the list, composed of the names of the folders, their state, and their associated variables list.
    With     addq.l #4,a0
    You get in a0 the adress of the beginning of the list.
    Here is the format:

    0(a0) to 7(a0): 8 char name of the folder
    8(a0).b : a end of string null character
    9(a0).b : the state byte
    10(a0).w : the handle of the associated variables list

    Here is an example in hexa:

    00 0A 00 03 64 6F 63 73  ....docs   -> you see: maxfold = $A = 10, nbfold = 3
    00 00 00 00 00 80 00 2E   ........      -> handle to the 'docs' folder = $002E
    67 61 6D 65 73 00 00 00  games...
    00 80 00 2F 6D 61 69 6E  ....main
    00 00 00 00 00 80 00 0C   ........

    The state byte has the following format:

    <76543210>:  7 is always set for a folder
                         5 is set when the folder is checked in the Var-Link or in Doors
                         3 is set when the folder is locked

    For example, you can have
    6D 61 69 6E 00 00 00 00     00         80         00 0C
           name= "main"               null char  state byte     handle

    Then the name of the folder is main, it is NOT locked and NOT checked, and its handle is #$C (in fact it is always #$C for the 'main' folder)

    2) The variables tables

    They have nearly the same format than the folder one: they have the same header, and the same list format
    The only thing that changes is the state byte format:
                    7 is never set for a variable

    So, you can have, for example
    66 69 6C 65 6C 69 62 00     00         00         00 16
            name="filelib"                null char  state byte      handle

    Then the name of the variable is filelib, it is NOT locked and NOT checked, and its handle is #$16

    3) Some variables caracteristics

    When you have the handle of a variable in d0,you can do:

                tios::DEREF d0,a0

    You get the adress of the content of the variable in a0

    After that ALL variables have the following format:

            0(a0).w = size of the variable       WARNING! This is not the real size of the var: you must add #2 to get the real size

    Then you can do:
            move.w (a0),d1 and you have

            1(a0,d1.w) = the type byte of the variable

    This type byte can be one of the followings:
    $DC -> PRGM or FUNC
    $D9 -> MAT or LIST
    $E0 -> TEXT
    $2D -> STR
    $DD -> DATA
    $E1 -> FIG
    $DF -> PIC
    $DE -> GDB
    $E2 -> MACR
    All other values are EXPR variables




    To distinguish the PRGM and FUNC type you have to do:

            cmp.b #$19,-5(a0,d1.w)

    If -5(a0,d1.w) is not #$19 then the variable has the FUNC type,else it has the PRGM type.

    Now you will maybe know how to distinguish Fargo vars and normal PRGM vars.
    Let's do the following:

            cmp.l         #$4150504C,8(a0)    ;comp with "APPL"
            beq \Fargo II prog
            cmp.l         #$00503130,2(a0)     ;comp with "P10"
            beq \Fargo I prog
            cmp.l         #$444C4C20,8(a0)    ;comp with "DLL "
            beq \Fargo II library
            cmp.l         #$004C3130,2(a0)     ;comp with "L10"
            beq \Fargo I library

    And that's all for the PRGM type !



    To distinguish the MAT and LIST type you have to do:

            cmp.b  #$D9,0(a0,d1.w)

    If 0(a0,d1.w) is #$D9, then the variable has the MAT type else it has the LIST type

    4) Some variables formats

    We only know the following variables formats:
        TEXT variables
        PIC variables
        STRING variables

    TEXT variables

    Suppose you have a TEXT variable handle in d0.
        With        tios::DEREF    d0,a0        you get in a0 the variable adress

    From then you have the following format:

        (a0).w  = size of the variable - 2
        2(a0).w  = position of the cursor in the TIOS editor or in XeTal
        from 4(a0).w to the end = your text.
        Text has the following format:
        #13 = nextline
        #20 = beginning of a line. It is always after a #13 char or a the very beginning of the text
        #0 = end of the text
        At the end of a TEXT variable, you have a #$E0 char, it tells you that it is a TEXT variable



    PIC variables

    If a0 is the variable adress, then you have:

        (a0).w = size of the variable - 2
        2(a0).w = height of the picture
        4(a0).w = width of the picture
        from 4(a0).w to the end = your picture
        If a bit is set, then the pixel is on, else, it is off
        At the end of a PIC variable, you have a #$DF char, it tells you that it is a PIC variable



    STRING variables

    If a0 is the variable adress, then you have:

        (a0).w = size of the variable - 2
        2(a0).b = a null char (#0)
        from 3(a0).b to the end = your string, it ends with a null char (#0)
    At the end of a STRING variable, you have a #$2D char, it tells you that it is a STRING variable

    If you want to add something about these formats, or you know the formats of other variables types, you can mail us

    tiemu-3.03-nogdb+dfsg/docs/vat/vatinfo.txt000066400000000000000000000146561220314353500205330ustar00rootroot00000000000000\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\///////////////////////////////////// -------------------------------------------------------------------- VAT Description v1.2 BENOIT SCHERRER --------------------------------------------------------------------- ////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ (in first, I want to tell you that my english is very very bad. ) (Indeed, I am a young french and speaking english is quite ) (difficult for me. ) After I wrote the first version of my VAT Description, someone send me an other file about the VAT. I didn't know that there was already such a file ! Moreover it was bigger, with more informations. But there was no precise example like in my VAT Description. That is why I release an another version, where I add some useful information I saw in the other file. ----- This text file has 3 parts : I) FOLDER TABLE DESCRIPTION II) FILE TABLE DESCRIPTION III) SOME VARIABLES INFORMATION Well. On the TI92, there are files & folders. But the file table and the folder table have pratically the same format. ------------------------------------------------------------------- I ) FOLDER TABLE DESCRIpTION : You must first get the address of the folder table. It is the handle $0B. You can get it with : moveq.w #$0B,d0 ;Handle $0B handle_ptr d0,a0 ; or better : move.l HANDLE_TABLE_PTR,a0 ;address of handle table in a0 move.l 44(a0),a0 ;4*$0B So you have now the starting address of the folder table in a0. Here is a example of what it could be : D496 00 0A 00 03 67 61 6D 65 ....game D49E 73 00 00 00 00 88 00 24 s....... D4A6 6D 61 69 6E 00 00 00 00 main.... D4AE 00 80 00 0C 75 74 69 6C ....util D4B6 00 00 00 00 00 80 00 22 ........ The first word is the maximum number of folder that the handle can have before the TI have to resize it. Indeed, the TI don't resize the folder table each time we create a new folder. When the TI resize the handle, it always increase this first word by $0A. The next word is the current number of folders. After, there is always 12 bytes for the folder description : - 8 bytes + '0' for the folder name (so 9 bytes for the folder name) - 1 byte for the folder state : if the folder is locked in the Var-Link, this byte will be $88, or else it will be $80 - 1 word for the handle of the file list associated with this folder. So with the previous example : 00 0A : You can have $0A folders before resizing the table. 00 03 : Current Number of folders 'games' 00 00 00 00 : Folder name + '0' (9 bytes) $88 : the folder is locked in Var-Link 00 24 : Handle of the file list associated to 'games' 'main' 00 00 00 00 00 : Folder name + '0' $80 : Folder not locked. 00 0C : Handle of file list in 'main' (it will be always 00 0C for main) 'util' 00 00 00 00 00 : Folder name + '0' $80 : Not locked 00 22 : Handle of the file list in 'util' Well, it is not very difficult, because TI92 has only one level of folders. -------------------------------------------------------------------- II ) FILES TABLE DESCRIPTION The file table is pratically the same as the folder table : they have the same format. You must first have the starting address of a file table. For that, use the handle described in the folder description, the last word of each folder description. After, if this handle is in d0, you can do : handle_ptr d0,a0 And you have in a0 the address of the file list ! As I have already tell you, it is pratically the same format as the folder table. Here is an example from my TI : D514 00 0A 00 08 64 62 39 32 ....db92 D51C 00 00 00 00 00 00 00 1B ........ D524 66 6C 69 62 00 00 00 00 flib.... D52C 00 08 00 15 67 72 61 79 ....gray D534 6C 69 62 00 00 00 00 16 lib..... ... The first word is the same as in the folder description : It is the maximum of files entry that contain the file table before being resized. And it is always increaseby $0A when the handle is resized. The second (00 08 here) is the number of files. After, there is always 12 bytes for the file description (like the folder description) : - 8 bytes + '0' for the file name (so 9 bytes) - 1 byte for the file state : if the folder is locked in the Var-Link, this byte will be $08, or else it will be $00 - 1 word for the handle of the file So with the previous example : 00 0A : You can have $0A files in the folder before resizing the table. 00 08 : 8 files in this folder db92 00 00 00 00 00 : the file name 00 : not locked 00 1B : handle of the file flib 00 00 00 00 00 : the filename 08 : the file is locked 00 15 : the file handle graylib 00 00 : the filename 00 : not locked 00 14 : the file handle -------------------------------------------------------------------- III ) Some Variables information Here are some information about the files : Now you have the file address in a0 for example. The first word of a variable is the size of datas. The real size of the file (that you can see in Var Link) is the first word + 2. So if you want to put the size of the file in d0, you can write : move.w (a0),d0 addq.w #2,d0 You may also want to know what type of file it is. For that, you have just to go at the end of the file. If d0 is the file handle : handle_ptr d0,a0 ;address of the file move.w (a0),d0 ;size of the file in d0 move.b 1(a0,d0.w),d1 ; d1.b has now the file type. Here are all the possibilities I found : $DC : Program or Function $D9 : Matrix or List $E0 : TEXT $2D : STR $DD : DATA $E1 : FIG $DF : PIC $DE : GDB $E2 : MACR $1F : EXPR $8F : EXPR (REAL) $8B : EXPR (RECTANGULAR) $23 : EXPR And other types should be EXPR ////////////////////////////////////////////////////////////////////// ************************ SPECIAL THANKS TO *************************** ////////////////////////////////////////////////////////////////////// - The Fargo TEAM !!! - Tleilax, for his EXCELLENT DB92 debugger. - Gareth, for his text file about ti files /////////////////////////////////////////////////////////////////////// ************************** CONTACT ME ******************************** /////////////////////////////////////////////////////////////////////// If you want to contact me, DON'T HESITATE ! I will try to answer to ALL your mails. My e-mail address is : p.c.scherrer@wanadoo.fr tiemu-3.03-nogdb+dfsg/docs/vkeys/000077500000000000000000000000001220314353500166575ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/docs/vkeys/VK.htm000066400000000000000000001665601220314353500177270ustar00rootroot00000000000000 Virtual-Key Codes

    Virtual-Key Codes

    The following table shows the symbolic constant names, decimal values, and mouse or keyboard equivalents for the virtual-key codes used by the system. The codes are listed in numeric order.

    Symbolic constant name Value
    (decimal)
    Mouse or keyboard equivalent
    VK_LBUTTON 1 Left mouse button
    VK_RBUTTON 2 Right mouse button
    VK_CANCEL 3 Control-break processing
    VK_MBUTTON 4 Middle mouse button (three-button mouse)
    VK_XBUTTON1 5 Windows 2000: X1 mouse button
    VK_XBUTTON2 6 Windows 2000: X2 mouse button
    7 Undefined
    VK_BACK 8 BACKSPACE key
    VK_TAB 9 TAB key
    10–11 Reserved
    VK_CLEAR 12 CLEAR key
    VK_RETURN 13 ENTER key
    14–15 Undefined
    VK_SHIFT 16 SHIFT key
    VK_CONTROL 17 CTRL key
    VK_MENU 18 ALT key
    VK_PAUSE 19 PAUSE key
    VK_CAPITAL 20 CAPS LOCK key
    VK_KANA 21 IME Kana mode
    VK_HANGUEL 21 IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
    VK_HANGUL 21 IME Hangul mode
    22 Undefined
    VK_JUNJA 23 IME Junja mode
    VK_FINAL 24 IME final mode
    VK_HANJA 25 IME Hanja mode
    VK_KANJI 25 IME Kanji mode
    26 Undefined
    VK_ESCAPE 27 ESC key
    VK_CONVERT 28 IME convert
    VK_NONCONVERT 29 IME nonconvert
    VK_ACCEPT 30 IME accept
    VK_MODECHANGE 31 IME mode change request
    VK_SPACE 32 SPACEBAR
    VK_PRIOR 33 PAGE UP key
    VK_NEXT 34 PAGE DOWN key
    VK_END 35 END key
    VK_HOME 36 HOME key
    VK_LEFT 37 LEFT ARROW key
    VK_UP 38 UP ARROW key
    VK_RIGHT 39 RIGHT ARROW key
    VK_DOWN 40 DOWN ARROW key
    VK_SELECT 41 SELECT key
    VK_PRINT 42 PRINT key
    VK_EXECUTE 43 EXECUTE key
    VK_SNAPSHOT 44 PRINT SCREEN key
    VK_INSERT 45 INS key
    VK_DELETE 46 DEL key
    VK_HELP 47 HELP key
      48 0 key
      49 1 key
      50 2 key
      51 3 key
      52 4 key
      53 5 key
      54 6 key
      55 7 key
      56 8 key
      57 9 key
    58–64 Undefined
      65 A key
      66 B key
      67 C key
      68 D key
      69 E key
      70 F key
      71 G key
      72 H key
      73 I key
      74 J key
      75 K key
      76 L key
      77 M key
      78 N key
      79 O key
      80 P key
      81 Q key
      82 R key
      83 S key
      84 T key
      85 U key
      86 V key
      87 W key
      88 X key
      89 Y key
      90 Z key
    VK_LWIN 91 Left Windows key (Microsoft® Natural® keyboard)
    VK_RWIN 92 Right Windows key (Natural keyboard)
    VK_APPS 93 Applications key (Natural keyboard)
    94 Reserved
    VK_SLEEP 95 Computer Sleep key
    VK_NUMPAD0 96 Numeric keypad 0 key
    VK_NUMPAD1 97 Numeric keypad 1 key
    VK_NUMPAD2 98 Numeric keypad 2 key
    VK_NUMPAD3 99 Numeric keypad 3 key
    VK_NUMPAD4 100 Numeric keypad 4 key
    VK_NUMPAD5 101 Numeric keypad 5 key
    VK_NUMPAD6 102 Numeric keypad 6 key
    VK_NUMPAD7 103 Numeric keypad 7 key
    VK_NUMPAD8 104 Numeric keypad 8 key
    VK_NUMPAD9 105 Numeric keypad 9 key
    VK_MULTIPLY 106 Multiply key
    VK_ADD 107 Add key
    VK_SEPARATOR 108 Separator key
    VK_SUBTRACT 109 Subtract key
    VK_DECIMAL 110 Decimal key
    VK_DIVIDE 111 Divide key
    VK_F1 112 F1 key
    VK_F2 113 F2 key
    VK_F3 114 F3 key
    VK_F4 115 F4 key
    VK_F5 116 F5 key
    VK_F6 117 F6 key
    VK_F7 118 F7 key
    VK_F8 119 F8 key
    VK_F9 120 F9 key
    VK_F10 121 F10 key
    VK_F11 122 F11 key
    VK_F12 123 F12 key
    VK_F13 124 F13 key
    VK_F14 125 F14 key
    VK_F15 126 F15 key
    VK_F16 127 F16 key
    VK_F17 128H F17 key
    VK_F18 129H F18 key
    VK_F19 130H F19 key
    VK_F20 131H F20 key
    VK_F21 132H F21 key
    VK_F22 133H F22 key
    VK_F23 134H F23 key
    VK_F24 135H F24 key
    136–143 Unassigned
    VK_NUMLOCK 144 NUM LOCK key
    VK_SCROLL 145 SCROLL LOCK key
      146–150 OEM specific
    151–159 Unassigned
    VK_LSHIFT 160 Left SHIFT key
    VK_RSHIFT 161 Right SHIFT key
    VK_LCONTROL 162 Left CONTROL key
    VK_RCONTROL 163 Right CONTROL key
    VK_LMENU 164 Left MENU key
    VK_RMENU 165 Right MENU key
    VK_BROWSER_BACK 166 Windows 2000: Browser Back key
    VK_BROWSER_FORWARD 167 Windows 2000: Browser Forward key
    VK_BROWSER_REFRESH 168 Windows 2000: Browser Refresh key
    VK_BROWSER_STOP 169 Windows 2000: Browser Stop key
    VK_BROWSER_SEARCH 170 Windows 2000: Browser Search key
    VK_BROWSER_FAVORITES 171 Windows 2000: Browser Favorites key
    VK_BROWSER_HOME 172 Windows 2000: Browser Start and Home key
    VK_VOLUME_MUTE 173 Windows 2000: Volume Mute key
    VK_VOLUME_DOWN 174 Windows 2000: Volume Down key
    VK_VOLUME_UP 175 Windows 2000: Volume Up key
    VK_MEDIA_NEXT_TRACK 176 Windows 2000: Next Track key
    VK_MEDIA_PREV_TRACK 177 Windows 2000: Previous Track key
    VK_MEDIA_STOP 178 Windows 2000: Stop Media key
    VK_MEDIA_PLAY_PAUSE 179 Windows 2000: Play/Pause Media key
    VK_LAUNCH_MAIL 180 Windows 2000: Start Mail key
    VK_LAUNCH_MEDIA_SELECT 181 Windows 2000: Select Media key
    VK_LAUNCH_APP1 182 Windows 2000: Start Application 1 key
    VK_LAUNCH_APP2 183 Windows 2000: Start Application 2 key
    184-185 Reserved
    VK_OEM_1 186 Windows 2000: For the US standard keyboard, the ';:' key
    VK_OEM_PLUS 187 Windows 2000: For any country/region, the '+' key
    VK_OEM_COMMA 188 Windows 2000: For any country/region, the ',' key
    VK_OEM_MINUS 189 Windows 2000: For any country/region, the '-' key
    VK_OEM_PERIOD 190 Windows 2000: For any country/region, the '.' key
    VK_OEM_2 191 Windows 2000: For the US standard keyboard, the '/?' key
    VK_OEM_3 192 Windows 2000: For the US standard keyboard, the '`~' key
    193–215 Reserved
    216–218 Unassigned
    VK_OEM_4 219 Windows 2000: For the US standard keyboard, the '[{' key
    VK_OEM_5 220 Windows 2000: For the US standard keyboard, the '\|' key
    VK_OEM_6 221 Windows 2000: For the US standard keyboard, the ']}' key
    VK_OEM_7 222 Windows 2000: For the US standard keyboard, the 'single-quote/double-quote' key
    VK_OEM_8 223
    224 Reserved
      225 OEM specific
    VK_OEM_102 226 Windows 2000: Either the angle bracket key or the backslash key on the RT 102-key keyboard
      227–228 OEM specific
    VK_PROCESSKEY 229 Windows 95/98, Windows NT 4.0, Windows 2000: IME PROCESS key
      230 OEM specific
    VK_PACKET 231 Windows 2000: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP
    232 Unassigned
      233–245 OEM specific
    VK_ATTN 246 Attn key
    VK_CRSEL 247 CrSel key
    VK_EXSEL 248 ExSel key
    VK_EREOF 249 Erase EOF key
    VK_PLAY 250 Play key
    VK_ZOOM 251 Zoom key
    VK_NONAME 252 Reserved for future use
    VK_PA1 253 PA1 key
    VK_OEM_CLEAR 254 Clear key

    tiemu-3.03-nogdb+dfsg/docs/vkeys/virtualkeycodes.html000066400000000000000000000570501220314353500227710ustar00rootroot00000000000000 Windows API Guide: Virtual-Key Codes

    Virtual-Key Codes

    Description & Usage

    The virtual-key codes identify various virtual keys. Virtual keys mainly consist of actual keyboard keys, but also include "virtual" elements such as the three mouse buttons. The virtual keys also include many "keys" which usually do not exist at all! A key's virtual-key code does not change when modifier keys (Ctrl, Alt, Shift, etc.) are held -- e.g., the 1 key has the same virtual-key code whether 1 or ! is pressed. However, the numbers in the numeric keypad on the keyboard do have two different virtual-key codes: one for when Num Lock is on, and another for when Num Lock is off. Note that the virtual-key codes of 0-9 and A-Z equal their ASCII codes.

    Note: The actual meanings of some of the key codes may vary on keyboards designed for different languages. Most notably, the VK_OEM_* that denote punctuation keys may vary between languages, relating to a different punctuation key. The meanings listed below are for a U.S. English-language keyboard.

    Virtual Key Codes

    VK_LBUTTON
    The left mouse button
    VK_RBUTTON
    The right mouse button
    VK_CANCEL
    The Cancel virtual key, used for control-break processing
    VK_MBUTTON
    The middle mouse button
    VK_BACK
    Backspace
    VK_TAB
    Tab
    VK_CLEAR
    5 (keypad without Num Lock)
    VK_RETURN
    Enter
    VK_SHIFT
    Shift (either one)
    VK_CONTROL
    Ctrl (either one)
    VK_MENU
    Alt (either one)
    VK_PAUSE
    Pause
    VK_CAPITAL
    Caps Lock
    VK_ESCAPE
    Esc
    VK_SPACE
    Spacebar
    VK_PRIOR
    Page Up
    VK_NEXT
    Page Down
    VK_END
    End
    VK_HOME
    Home
    VK_LEFT
    Left Arrow
    VK_UP
    Up Arrow
    VK_RIGHT
    Right Arrow
    VK_DOWN
    Down Arrow
    VK_SELECT
    Select
    VK_PRINT
    Print (only used by Nokia keyboards)
    VK_EXECUTE
    Execute (not used)
    VK_SNAPSHOT
    Print Screen
    VK_INSERT
    Insert
    VK_DELETE
    Delete
    VK_HELP
    Help
    VK_0
    0
    VK_1
    1
    VK_2
    2
    VK_3
    3
    VK_4
    4
    VK_5
    5
    VK_6
    6
    VK_7
    7
    VK_8
    8
    VK_9
    9
    VK_A
    A
    VK_B
    B
    VK_C
    C
    VK_D
    D
    VK_E
    E
    VK_F
    F
    VK_G
    G
    VK_H
    H
    VK_I
    I
    VK_J
    J
    VK_K
    K
    VK_L
    L
    VK_M
    M
    VK_N
    N
    VK_O
    O
    VK_P
    P
    VK_Q
    Q
    VK_R
    R
    VK_S
    S
    VK_T
    T
    VK_U
    U
    VK_V
    V
    VK_W
    W
    VK_X
    X
    VK_Y
    Y
    VK_Z
    Z
    VK_STARTKEY
    Start Menu key
    VK_CONTEXTKEY
    Context Menu key
    VK_NUMPAD0
    0 (keypad with Num Lock)
    VK_NUMPAD1
    1 (keypad with Num Lock)
    VK_NUMPAD2
    2 (keypad with Num Lock)
    VK_NUMPAD3
    3 (keypad with Num Lock)
    VK_NUMPAD4
    4 (keypad with Num Lock)
    VK_NUMPAD5
    5 (keypad with Num Lock)
    VK_NUMPAD6
    6 (keypad with Num Lock)
    VK_NUMPAD7
    7 (keypad with Num Lock)
    VK_NUMPAD8
    8 (keypad with Num Lock)
    VK_NUMPAD9
    9 (keypad with Num Lock)
    VK_MULTIPLY
    * (keypad)
    VK_ADD
    + (keypad)
    VK_SEPARATER
    Separator (never generated by the keyboard)
    VK_DECIMAL
    . (keypad with Num Lock)
    VK_DIVIDE
    / (keypad)
    VK_F1
    F1
    VK_F2
    F2
    VK_F3
    F3
    VK_F4
    F4
    VK_F5
    F5
    VK_F6
    F6
    VK_F7
    F7
    VK_F8
    F8
    VK_F9
    F9
    VK_F10
    F10
    VK_F11
    F11
    VK_F12
    F12
    VK_F13
    F13
    VK_F14
    F14
    VK_F15
    F15
    VK_F16
    F16
    VK_F17
    F17
    VK_F18
    F18
    VK_F19
    F19
    VK_F20
    F20
    VK_F21
    F21
    VK_F22
    F22
    VK_F23
    F23
    VK_F24
    F24
    VK_NUMLOCK
    Num Lock
    VK_OEM_SCROLL
    Scroll Lock
    VK_OEM_1
    ;
    VK_OEM_PLUS
    =
    VK_OEM_COMMA
    ,
    VK_OEM_MINUS
    -
    VK_OEM_PERIOD
    .
    VK_OEM_2
    /
    VK_OEM_3
    `
    VK_OEM_4
    [
    VK_OEM_5
    \
    VK_OEM_6
    ]
    VK_OEM_7
    '
    VK_OEM_8
    (unknown)
    VK_ICO_F17
    F17 on Olivetti extended keyboard (internal use only)
    VK_ICO_F18
    F18 on Olivetti extended keyboard (internal use only)
    VK_OEM_102
    < or | on IBM-compatible 102 enhanced non-U.S. keyboard
    VK_ICO_HELP
    Help on Olivetti extended keyboard (internal use only)
    VK_ICO_00
    00 on Olivetti extended keyboard (internal use only)
    VK_ICO_CLEAR
    Clear on Olivette extended keyboard (internal use only)
    VK_OEM_RESET
    Reset (Nokia keyboards only)
    VK_OEM_JUMP
    Jump (Nokia keyboards only)
    VK_OEM_PA1
    PA1 (Nokia keyboards only)
    VK_OEM_PA2
    PA2 (Nokia keyboards only)
    VK_OEM_PA3
    PA3 (Nokia keyboards only)
    VK_OEM_WSCTRL
    WSCTRL (Nokia keyboards only)
    VK_OEM_CUSEL
    CUSEL (Nokia keyboards only)
    VK_OEM_ATTN
    ATTN (Nokia keyboards only)
    VK_OEM_FINNISH
    FINNISH (Nokia keyboards only)
    VK_OEM_COPY
    COPY (Nokia keyboards only)
    VK_OEM_AUTO
    AUTO (Nokia keyboards only)
    VK_OEM_ENLW
    ENLW (Nokia keyboards only)
    VK_OEM_BACKTAB
    BACKTAB (Nokia keyboards only)
    VK_ATTN
    ATTN
    VK_CRSEL
    CRSEL
    VK_EXSEL
    EXSEL
    VK_EREOF
    EREOF
    VK_PLAY
    PLAY
    VK_ZOOM
    ZOOM
    VK_NONAME
    NONAME
    VK_PA1
    PA1
    VK_OEM_CLEAR
    CLEAR

    Constant Definitions

    Const VK_LBUTTON = &H1
    Const VK_RBUTTON = &H2
    Const VK_CANCEL = &H3
    Const VK_MBUTTON = &H4
    Const VK_BACK = &H8
    Const VK_TAB = &H9
    Const VK_CLEAR = &HC
    Const VK_RETURN = &HD
    Const VK_SHIFT = &H10
    Const VK_CONTROL = &H11
    Const VK_MENU = &H12
    Const VK_PAUSE = &H13
    Const VK_CAPITAL = &H14
    Const VK_ESCAPE = &H1B
    Const VK_SPACE = &H20
    Const VK_PRIOR = &H21
    Const VK_NEXT = &H22
    Const VK_END = &H23
    Const VK_HOME = &H24
    Const VK_LEFT = &H25
    Const VK_UP = &H26
    Const VK_RIGHT = &H27
    Const VK_DOWN = &H28
    Const VK_SELECT = &H29
    Const VK_PRINT = &H2A
    Const VK_EXECUTE = &H2B
    Const VK_SNAPSHOT = &H2C
    Const VK_INSERT = &H2D
    Const VK_DELETE = &H2E
    Const VK_HELP = &H2F
    Const VK_0 = &H30
    Const VK_1 = &H31
    Const VK_2 = &H32
    Const VK_3 = &H33
    Const VK_4 = &H34
    Const VK_5 = &H35
    Const VK_6 = &H36
    Const VK_7 = &H37
    Const VK_8 = &H38
    Const VK_9 = &H39
    Const VK_A = &H41
    Const VK_B = &H42
    Const VK_C = &H43
    Const VK_D = &H44
    Const VK_E = &H45
    Const VK_F = &H46
    Const VK_G = &H47
    Const VK_H = &H48
    Const VK_I = &H49
    Const VK_J = &H4A
    Const VK_K = &H4B
    Const VK_L = &H4C
    Const VK_M = &H4D
    Const VK_N = &H4E
    Const VK_O = &H4F
    Const VK_P = &H50
    Const VK_Q = &H51
    Const VK_R = &H52
    Const VK_S = &H53
    Const VK_T = &H54
    Const VK_U = &H55
    Const VK_V = &H56
    Const VK_W = &H57
    Const VK_X = &H58
    Const VK_Y = &H59
    Const VK_Z = &H5A
    Const VK_STARTKEY = &H5B
    Const VK_CONTEXTKEY = &H5D
    Const VK_NUMPAD0 = &H60
    Const VK_NUMPAD1 = &H61
    Const VK_NUMPAD2 = &H62
    Const VK_NUMPAD3 = &H63
    Const VK_NUMPAD4 = &H64
    Const VK_NUMPAD5 = &H65
    Const VK_NUMPAD6 = &H66
    Const VK_NUMPAD7 = &H67
    Const VK_NUMPAD8 = &H68
    Const VK_NUMPAD9 = &H69
    Const VK_MULTIPLY = &H6A
    Const VK_ADD = &H6B
    Const VK_SEPARATOR = &H6C
    Const VK_SUBTRACT = &H6D
    Const VK_DECIMAL = &H6E
    Const VK_DIVIDE = &H6F
    Const VK_F1 = &H70
    Const VK_F2 = &H71
    Const VK_F3 = &H72
    Const VK_F4 = &H73
    Const VK_F5 = &H74
    Const VK_F6 = &H75
    Const VK_F7 = &H76
    Const VK_F8 = &H77
    Const VK_F9 = &H78
    Const VK_F10 = &H79
    Const VK_F11 = &H7A
    Const VK_F12 = &H7B
    Const VK_F13 = &H7C
    Const VK_F14 = &H7D
    Const VK_F15 = &H7E
    Const VK_F16 = &H7F
    Const VK_F17 = &H80
    Const VK_F18 = &H81
    Const VK_F19 = &H82
    Const VK_F20 = &H83
    Const VK_F21 = &H84
    Const VK_F22 = &H85
    Const VK_F23 = &H86
    Const VK_F24 = &H87
    Const VK_NUMLOCK = &H90
    Const VK_OEM_SCROLL = &H91
    Const VK_OEM_1 = &HBA
    Const VK_OEM_PLUS = &HBB
    Const VK_OEM_COMMA = &HBC
    Const VK_OEM_MINUS = &HBD
    Const VK_OEM_PERIOD = &HBE
    Const VK_OEM_2 = &HBF
    Const VK_OEM_3 = &HC0
    Const VK_OEM_4 = &HDB
    Const VK_OEM_5 = &HDC
    Const VK_OEM_6 = &HDD
    Const VK_OEM_7 = &HDE
    Const VK_OEM_8 = &HDF
    Const VK_ICO_F17 = &HE0
    Const VK_ICO_F18 = &HE1
    Const VK_OEM102 = &HE2
    Const VK_ICO_HELP = &HE3
    Const VK_ICO_00 = &HE4
    Const VK_ICO_CLEAR = &HE6
    Const VK_OEM_RESET = &HE9
    Const VK_OEM_JUMP = &HEA
    Const VK_OEM_PA1 = &HEB
    Const VK_OEM_PA2 = &HEC
    Const VK_OEM_PA3 = &HED
    Const VK_OEM_WSCTRL = &HEE
    Const VK_OEM_CUSEL = &HEF
    Const VK_OEM_ATTN = &HF0
    Const VK_OEM_FINNISH = &HF1
    Const VK_OEM_COPY = &HF2
    Const VK_OEM_AUTO = &HF3
    Const VK_OEM_ENLW = &HF4
    Const VK_OEM_BACKTAB = &HF5
    Const VK_ATTN = &HF6
    Const VK_CRSEL = &HF7
    Const VK_EXSEL = &HF8
    Const VK_EREOF = &HF9
    Const VK_PLAY = &HFA
    Const VK_ZOOM = &HFB
    Const VK_NONAME = &HFC
    Const VK_PA1 = &HFD
    Const VK_OEM_CLEAR = &HFE

    Used By

    GetAsyncKeyState, GetKeyboardState, GetKeyState, keybd_event, KEYBDINPUT, SetKeyboardState

    Back to the index.


    Last Modified: September 6, 1999
    This page is copyright © 1999 Paul Kuliniewicz. Copyright Information

    Go to Paul Kuliniewicz's Home Page.
    E-mail: rogue953@hotmail.com
    This page is at http://skyscraper.fortunecity.com/transmission/45/api/other/virtualkeycodes.html
    tiemu-3.03-nogdb+dfsg/glade/000077500000000000000000000000001220314353500156425ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/glade/Makefile.am000066400000000000000000000002231220314353500176730ustar00rootroot00000000000000gladedir = $(pkgdatadir)/glade dist_glade_DATA = *-2.glade EXTRA_DIST = *-2.gladep *-2.str copy.bat uninstall: rm -f $(pkgdatadir)/glade/*.gladetiemu-3.03-nogdb+dfsg/glade/Makefile.in000066400000000000000000000320531220314353500177120ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = glade DIST_COMMON = $(dist_glade_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(gladedir)" dist_gladeDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_glade_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTODIRS = @AUTODIRS@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLADE_CFLAGS = @GLADE_CFLAGS@ GLADE_LIBS = @GLADE_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GROFF = @GROFF@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INCINTL = @INCINTL@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KDECONFIG = @KDECONFIG@ KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ KDE_INCLUDES = @KDE_INCLUDES@ KDE_LDFLAGS = @KDE_LDFLAGS@ KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@ KDE_MT_LIBS = @KDE_MT_LIBS@ KDE_RPATH = @KDE_RPATH@ LDFLAGS = @LDFLAGS@ LIBCOMPAT = @LIBCOMPAT@ LIBCRYPT = @LIBCRYPT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBOBJS = @LIBOBJS@ LIBPNG = @LIBPNG@ LIBPTHREAD = @LIBPTHREAD@ LIBRESOLV = @LIBRESOLV@ LIBS = @LIBS@ LIBSM = @LIBSM@ LIBSOCKET = @LIBSOCKET@ LIBTOOL = @LIBTOOL@ LIBUCB = @LIBUCB@ LIBUTIL = @LIBUTIL@ LIBXINERAMA = @LIBXINERAMA@ LIBZ = @LIBZ@ LIB_KAB = @LIB_KAB@ LIB_KDECORE = @LIB_KDECORE@ LIB_KDEPRINT = @LIB_KDEPRINT@ LIB_KDEUI = @LIB_KDEUI@ LIB_KFILE = @LIB_KFILE@ LIB_KFM = @LIB_KFM@ LIB_KHTML = @LIB_KHTML@ LIB_KIO = @LIB_KIO@ LIB_KPARTS = @LIB_KPARTS@ LIB_KSPELL = @LIB_KSPELL@ LIB_KSYCOCA = @LIB_KSYCOCA@ LIB_QPE = @LIB_QPE@ LIB_QT = @LIB_QT@ LIB_SMB = @LIB_SMB@ LIB_X11 = @LIB_X11@ LIB_XEXT = @LIB_XEXT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ QTE_NORTTI = @QTE_NORTTI@ QT_INCLUDES = @QT_INCLUDES@ QT_LDFLAGS = @QT_LDFLAGS@ RANLIB = @RANLIB@ RC = @RC@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TICABLES_CFLAGS = @TICABLES_CFLAGS@ TICABLES_LIBS = @TICABLES_LIBS@ TICALCS_CFLAGS = @TICALCS_CFLAGS@ TICALCS_LIBS = @TICALCS_LIBS@ TICONV_CFLAGS = @TICONV_CFLAGS@ TICONV_LIBS = @TICONV_LIBS@ TIFILES_CFLAGS = @TIFILES_CFLAGS@ TIFILES_LIBS = @TIFILES_LIBS@ UIC = @UIC@ UIC_TR = @UIC_TR@ USER_INCLUDES = @USER_INCLUDES@ USER_LDFLAGS = @USER_LDFLAGS@ USE_NLS = @USE_NLS@ USE_THREADS = @USE_THREADS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_INCLUDES = @X_INCLUDES@ X_LDFLAGS = @X_LDFLAGS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ all_includes = @all_includes@ all_libraries = @all_libraries@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ dbus = @dbus@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ kde = @kde@ kde_appsdir = @kde_appsdir@ kde_bindir = @kde_bindir@ kde_confdir = @kde_confdir@ kde_datadir = @kde_datadir@ kde_htmldir = @kde_htmldir@ kde_icondir = @kde_icondir@ kde_includes = @kde_includes@ kde_libraries = @kde_libraries@ kde_libs_htmldir = @kde_libs_htmldir@ kde_libs_prefix = @kde_libs_prefix@ kde_locale = @kde_locale@ kde_mimedir = @kde_mimedir@ kde_moduledir = @kde_moduledir@ kde_qtver = @kde_qtver@ kde_servicesdir = @kde_servicesdir@ kde_servicetypesdir = @kde_servicetypesdir@ kde_sounddir = @kde_sounddir@ kde_styledir = @kde_styledir@ kde_templatesdir = @kde_templatesdir@ kde_wallpaperdir = @kde_wallpaperdir@ kde_widgetdir = @kde_widgetdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ qt_includes = @qt_includes@ qt_libraries = @qt_libraries@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x_includes = @x_includes@ x_libraries = @x_libraries@ gladedir = $(pkgdatadir)/glade dist_glade_DATA = *-2.glade EXTRA_DIST = *-2.gladep *-2.str copy.bat all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glade/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu glade/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_gladeDATA: $(dist_glade_DATA) @$(NORMAL_INSTALL) test -z "$(gladedir)" || $(MKDIR_P) "$(DESTDIR)$(gladedir)" @list='$(dist_glade_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_gladeDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gladedir)/$$f'"; \ $(dist_gladeDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gladedir)/$$f"; \ done uninstall-dist_gladeDATA: @$(NORMAL_UNINSTALL) @list='$(dist_glade_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(gladedir)/$$f'"; \ rm -f "$(DESTDIR)$(gladedir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(gladedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dist_gladeDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_gladeDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_gladeDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_gladeDATA uninstall: rm -f $(pkgdatadir)/glade/*.glade # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/glade/calc-2.glade000066400000000000000000000053671220314353500177140ustar00rootroot00000000000000 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_VISIBILITY_NOTIFY_MASK TiEmu 3 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 100 100 True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True True True True True tiemu-3.03-nogdb+dfsg/glade/calc-2.gladep000066400000000000000000000014561220314353500200670ustar00rootroot00000000000000 Calc calc FALSE TRUE FALSE FALSE FALSE calc_if.c calc_if.h calc.c calc.h TRUE calc-2.str tiemu-3.03-nogdb+dfsg/glade/calc-2.str000066400000000000000000000003511220314353500174340ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("TiEmu 3"); gchar *s = N_("Use mouse or press a key."); tiemu-3.03-nogdb+dfsg/glade/copy.bat000066400000000000000000000001051220314353500173000ustar00rootroot00000000000000mkdir c:\lpg\msvc\glade copy *.glade c:\lpg\msvc\glade\ del *.bak tiemu-3.03-nogdb+dfsg/glade/dbg_bits-2.glade000066400000000000000000000465251220314353500205700ustar00rootroot00000000000000 True Add Bit Breakpoint GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True False 5 True False 0 True Address: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True True True True True 8 0x000000 True * False 8 0 True True 0 True True True False 0 True Checks: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True True True 7 True GTK_RELIEF_NORMAL True False False False 0 False False True True 6 True GTK_RELIEF_NORMAL True False False False 0 False False True True 5 True GTK_RELIEF_NORMAL True False False False 0 False False True True 4 True GTK_RELIEF_NORMAL True False False False 0 False False True True 3 True GTK_RELIEF_NORMAL True False False False 0 False False True True 2 True GTK_RELIEF_NORMAL True False False False 0 False False True True 1 True GTK_RELIEF_NORMAL True False False False 0 False False True True 0 True GTK_RELIEF_NORMAL True False False False 0 False False 0 True True True False 0 True States: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True True True 7 True GTK_RELIEF_NORMAL True True False False 0 False False True True 6 True GTK_RELIEF_NORMAL True True False False 0 False False True True 5 True GTK_RELIEF_NORMAL True True False False 0 False False True True 4 True GTK_RELIEF_NORMAL True True False False 0 False False True True 3 True GTK_RELIEF_NORMAL True True False False 0 False False True True 2 True GTK_RELIEF_NORMAL True True False False 0 False False True True 1 True GTK_RELIEF_NORMAL True True False False 0 False False True True 0 True GTK_RELIEF_NORMAL True True False False 0 False False 0 True True 0 True True tiemu-3.03-nogdb+dfsg/glade/dbg_bits-2.gladep000066400000000000000000000015041220314353500207340ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_bits.c dbg_bits.h TRUE dbg_bits-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_bits-2.str000066400000000000000000000012051220314353500203060ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Add Bit Breakpoint"); gchar *s = N_("Address:"); gchar *s = N_("0x000000"); gchar *s = N_("Checks:"); gchar *s = N_("7"); gchar *s = N_("6"); gchar *s = N_("5"); gchar *s = N_("4"); gchar *s = N_("3"); gchar *s = N_("2"); gchar *s = N_("1"); gchar *s = N_("0"); gchar *s = N_("States:"); gchar *s = N_("7"); gchar *s = N_("6"); gchar *s = N_("5"); gchar *s = N_("4"); gchar *s = N_("3"); gchar *s = N_("2"); gchar *s = N_("1"); gchar *s = N_("0"); tiemu-3.03-nogdb+dfsg/glade/dbg_bkpts-2.glade000066400000000000000000000234161220314353500207440ustar00rootroot00000000000000 True Breakpoints GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True False 0 True GTK_ORIENTATION_HORIZONTAL GTK_TOOLBAR_ICONS True True True Add breakpoint gtk-add True True False False True True Remove breakpoint(s) gtk-remove True True False False True True Disable breakpoint gtk-dialog-error True True False False True True Enable breakpoint gtk-apply True True False False True True Go to breakpoint location gtk-jump-to True True False False True 0 False False True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True Double-click a row to edit breakpoint values. True True False False True False False False 0 True True True Breakpoint context: False False GTK_JUSTIFY_LEFT False False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 5 False False True False 0 False True True Bits True True Data True True Vectors True True Prgm entry True tiemu-3.03-nogdb+dfsg/glade/dbg_bkpts-2.gladep000066400000000000000000000015071220314353500211210ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_bkpts.c dbg_bkpts.h TRUE dbg_bkpts-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_bkpts-2.str000066400000000000000000000011231220314353500204670ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Breakpoints"); gchar *s = N_("Add breakpoint"); gchar *s = N_("Remove breakpoint(s)"); gchar *s = N_("Disable breakpoint"); gchar *s = N_("Enable breakpoint"); gchar *s = N_("Go to breakpoint location"); gchar *s = N_("Double-click a row to edit breakpoint values."); gchar *s = N_("Breakpoint context:"); gchar *s = N_("Bits"); gchar *s = N_("Data"); gchar *s = N_("Vectors"); gchar *s = N_("Prgm entry"); tiemu-3.03-nogdb+dfsg/glade/dbg_cause-2.glade000066400000000000000000000716011220314353500207200ustar00rootroot00000000000000 True Breakpoint! GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True 6 2 False 4 5 True Address: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True Type: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 2 3 fill True 0x000000 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 1 2 fill True access False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 2 3 fill True byte read False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 3 4 fill True Mode: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 3 4 fill True A breakpoint has been encountered... False False GTK_JUSTIFY_LEFT True False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 2 0 1 fill True Target: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 4 5 fill True 0x4c00 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 4 5 fill True Id: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 5 6 fill True #0 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 5 6 fill 0 True True True Exception! GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True 5 2 False 4 5 True Type: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True PC (pushed): False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 3 4 fill True illegal instr False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 1 2 fill True 000000 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 2 3 fill True 0000 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 3 4 fill True SR (pushed): False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 2 3 fill True An exception has been encountered... False False GTK_JUSTIFY_LEFT True False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 2 0 1 fill True Id: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 4 5 fill True #0 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 4 5 fill 0 True True tiemu-3.03-nogdb+dfsg/glade/dbg_cause-2.gladep000066400000000000000000000015071220314353500210760ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_cause.c dbg_cause.h TRUE dbg_cause-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_cause-2.str000066400000000000000000000014521220314353500204510ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Breakpoint!"); gchar *s = N_("Address:"); gchar *s = N_("Type:"); gchar *s = N_("0x000000"); gchar *s = N_("access"); gchar *s = N_("byte read"); gchar *s = N_("Mode:"); gchar *s = N_("A breakpoint has been encountered..."); gchar *s = N_("Target:"); gchar *s = N_("0x4c00"); gchar *s = N_("Id:"); gchar *s = N_("#0"); gchar *s = N_("Exception!"); gchar *s = N_("Type:"); gchar *s = N_("PC (pushed):"); gchar *s = N_("illegal instr"); gchar *s = N_("000000"); gchar *s = N_("0000"); gchar *s = N_("SR (pushed):"); gchar *s = N_("An exception has been encountered..."); gchar *s = N_("Id:"); gchar *s = N_("#0"); tiemu-3.03-nogdb+dfsg/glade/dbg_code-2.glade000066400000000000000000001315671220314353500205420ustar00rootroot00000000000000 True True Disassembly GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True False 0 True True _Debug True True _Run True True gtk-yes 1 0.5 0.5 0 0 True Step into (single step) Step _in True True gtk-jump-to 1 0.5 0.5 0 0 True Step over (skip subroutine) Step _over True True gtk-redo 1 0.5 0.5 0 0 True Step out (return to caller) Step ou_t True True gtk-undo 1 0.5 0.5 0 0 True Run to _cursor True True gtk-goto-last 1 0.5 0.5 0 0 True _Break True True gtk-no 1 0.5 0.5 0 0 True _Log True True _Linkport True True Windows True True _Registers True False True _Breakpoints True False True _Memory True False True _PC trace True False True _Stack frame True False True _Heap (handles) True False True _I/O ports True False True True Dock Mode True True True _Group windows True False True True _Show all True True _Hide all True True M_inimize all True True M_aximize all True True _Restore all True True True _Quit True True gtk-quit 1 0.5 0.5 0 0 True _Font True True _State True True S_ave True True _Revert True 0 False False True GTK_ORIENTATION_HORIZONTAL GTK_TOOLBAR_ICONS True True True Run (F5) gtk-yes True True False False True True Single step / Step into (F7) gtk-jump-to True True False False True True Step over (F8) gtk-redo True True False False True True Step out (F9) gtk-undo True True False False True True Run to cursor (F4) gtk-goto-last True True False False True True Break (F11) gtk-no True True False False True True Toggle breakpoint (F2) gtk-stop True True False False True 0 False False True False 5 True Cycle count: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True 0 False False GTK_JUSTIFY_RIGHT False False 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True True 00 False False GTK_JUSTIFY_RIGHT False False 1 0.5 0 0 PANGO_ELLIPSIZE_NONE 3 False 0 0 True True True True Reset True GTK_RELIEF_NORMAL True 5 True False 0 False True True True GTK_POLICY_AUTOMATIC GTK_POLICY_NEVER GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True True True True True True False False True False False False 0 True True True False 0 True Symbol: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True False True True 0 True True 0 False False True True 0 True True by name True GTK_RELIEF_NORMAL True False False True 0 False False True True by addr True GTK_RELIEF_NORMAL True False False True radiobutton1 0 False False True True by id True GTK_RELIEF_NORMAL True False False True radiobutton1 0 False False 0 False False True GTK_PROGRESS_LEFT_TO_RIGHT 0 0.10000000149 PANGO_ELLIPSIZE_NONE 0 False False True Go to _address True True Go to _PC True True True Set _breakpoint True True Set _one shot bkpt True True Set PC to _selection True True True View _memory True True Change font GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END True 3 2 True 0 0 True True custom True GTK_RELIEF_NORMAL True False False True 0 1 1 2 fill True False True GTK_RELIEF_NORMAL True True gtk-select-font 4 0.5 0.5 0 0 1 2 1 2 fill True True default True GTK_RELIEF_NORMAL True False False True radiobutton6 0 1 0 1 True Font: False False GTK_JUSTIFY_LEFT False False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 2 2 3 fill 0 True True tiemu-3.03-nogdb+dfsg/glade/dbg_code-2.gladep000066400000000000000000000015041220314353500207050ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_code.c dbg_code.h TRUE dbg_code-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_code-2.str000066400000000000000000000036311220314353500202640ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Disassembly"); gchar *s = N_("_Debug"); gchar *s = N_("_Run"); gchar *s = N_("Step into (single step)"); gchar *s = N_("Step _in"); gchar *s = N_("Step over (skip subroutine)"); gchar *s = N_("Step _over"); gchar *s = N_("Step out (return to caller)"); gchar *s = N_("Step ou_t"); gchar *s = N_("Run to _cursor"); gchar *s = N_("_Break"); gchar *s = N_("_Log"); gchar *s = N_("_Linkport"); gchar *s = N_("Windows"); gchar *s = N_("_Registers"); gchar *s = N_("_Breakpoints"); gchar *s = N_("_Memory"); gchar *s = N_("_PC trace"); gchar *s = N_("_Stack frame"); gchar *s = N_("_Heap (handles)"); gchar *s = N_("_I/O ports"); gchar *s = N_("Dock Mode"); gchar *s = N_("_Group windows"); gchar *s = N_("_Show all"); gchar *s = N_("_Hide all"); gchar *s = N_("M_inimize all"); gchar *s = N_("M_aximize all"); gchar *s = N_("_Restore all"); gchar *s = N_("_Quit"); gchar *s = N_("_Font"); gchar *s = N_("_State"); gchar *s = N_("S_ave"); gchar *s = N_("_Revert"); gchar *s = N_("Run (F5)"); gchar *s = N_("Single step / Step into (F7)"); gchar *s = N_("Step over (F8)"); gchar *s = N_("Step out (F9)"); gchar *s = N_("Run to cursor (F4)"); gchar *s = N_("Break (F11)"); gchar *s = N_("Toggle breakpoint (F2)"); gchar *s = N_("Cycle count:"); gchar *s = N_("0"); gchar *s = N_("00"); gchar *s = N_("Reset"); gchar *s = N_("Symbol:"); gchar *s = N_("by name"); gchar *s = N_("by addr"); gchar *s = N_("by id"); gchar *s = N_("Go to _address"); gchar *s = N_("Go to _PC"); gchar *s = N_("Set _breakpoint"); gchar *s = N_("Set _one shot bkpt"); gchar *s = N_("Set PC to _selection"); gchar *s = N_("View _memory"); gchar *s = N_("Change font"); gchar *s = N_("custom"); gchar *s = N_("default"); gchar *s = N_("Font:"); tiemu-3.03-nogdb+dfsg/glade/dbg_data-2.glade000066400000000000000000000421271220314353500205320ustar00rootroot00000000000000 True Add Data Breakpoint GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END True False 0 True 0 0.5 GTK_SHADOW_ETCHED_IN True True 0 5 True True _Read True GTK_RELIEF_NORMAL True False False True 0 False False True True _Write True GTK_RELIEF_NORMAL True False False True radiobutton10 0 False False True True _Either True GTK_RELIEF_NORMAL True False False True radiobutton10 0 False False True Mode False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True True 0 0.5 GTK_SHADOW_ETCHED_IN True 2 4 False 5 0 4 True True _Single True GTK_RELIEF_NORMAL True False False True 0 1 0 1 fill 5 True True _Range True GTK_RELIEF_NORMAL True False False True radiobutton20 0 1 1 2 fill True to False False GTK_JUSTIFY_CENTER False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 2 3 1 2 fill True at False False GTK_JUSTIFY_CENTER False False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 2 3 0 1 fill True True True True 8 0x000000 True * False 9 3 4 0 1 5 True True True True 8 0x000000 True * False 9 3 4 1 2 5 True True True True 8 0x000000 True * False 8 1 2 1 2 75 True Byte Word Long False True True 1 2 0 1 fill fill True Type False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True 0 True True tiemu-3.03-nogdb+dfsg/glade/dbg_data-2.gladep000066400000000000000000000015041220314353500207040ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_data.c dbg_data.h TRUE dbg_data-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_data-2.str000066400000000000000000000011031220314353500202530ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Add Data Breakpoint"); gchar *s = N_("_Read"); gchar *s = N_("_Write"); gchar *s = N_("_Either"); gchar *s = N_("Mode"); gchar *s = N_("_Single"); gchar *s = N_("_Range"); gchar *s = N_("to"); gchar *s = N_("at"); gchar *s = N_("0x000000"); gchar *s = N_("0x000000"); gchar *s = N_("0x000000"); gchar *s = N_("Byte"); gchar *s = N_("Word"); gchar *s = N_("Long"); gchar *s = N_("Type"); tiemu-3.03-nogdb+dfsg/glade/dbg_dock-2.glade000066400000000000000000000255251220314353500205440ustar00rootroot00000000000000 True TiEmu Dock GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True 3 4 False 0 0 True 0 0.5 GTK_SHADOW_ETCHED_IN True Memory False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 3 2 3 fill True 0 0.5 GTK_SHADOW_ETCHED_IN True Heap False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 3 4 2 3 fill fill True 0 0.5 GTK_SHADOW_ETCHED_IN True Breakpoints False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 2 4 0 1 fill fill True 0 0.5 GTK_SHADOW_ETCHED_IN True Stack False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 3 4 1 2 shrink|fill fill True 0 0.5 GTK_SHADOW_ETCHED_IN True Registers False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 2 3 1 2 shrink|fill fill True 0 0.5 GTK_SHADOW_ETCHED_IN True Disassembly False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 2 0 2 tiemu-3.03-nogdb+dfsg/glade/dbg_dock-2.gladep000066400000000000000000000015031220314353500207120ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_doc.c dbg_dock.h TRUE dbg_dock-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_dock-2.str000066400000000000000000000005451220314353500202730ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("TiEmu Dock"); gchar *s = N_("Memory"); gchar *s = N_("Heap"); gchar *s = N_("Breakpoints"); gchar *s = N_("Stack"); gchar *s = N_("Registers"); gchar *s = N_("Disassembly"); tiemu-3.03-nogdb+dfsg/glade/dbg_entry-2.glade000066400000000000000000000073741220314353500207670ustar00rootroot00000000000000 True Set program entry breakpoint GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 160 120 True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True True True False False True 0 True True tiemu-3.03-nogdb+dfsg/glade/dbg_entry-2.gladep000066400000000000000000000015071220314353500211370ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_entry.c dbg_entry.h TRUE dbg_entry-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_entry-2.str000066400000000000000000000000621220314353500205060ustar00rootroot00000000000000 gchar *s = N_("Set program entry breakpoint"); tiemu-3.03-nogdb+dfsg/glade/dbg_heap-2.glade000066400000000000000000000057261220314353500205420ustar00rootroot00000000000000 True Heap GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True True GTK_POLICY_NEVER GTK_POLICY_ALWAYS GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True Double click rowl to open tab in the memory window at the handle address. True True False False True False False False True View _memory True tiemu-3.03-nogdb+dfsg/glade/dbg_heap-2.gladep000066400000000000000000000015041220314353500207100ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_heap.c dbg_heap.h TRUE dbg_heap-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_heap-2.str000066400000000000000000000004661220314353500202720ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Heap"); gchar *s = N_("Double click rowl to open tab in the memory window at the handle address."); gchar *s = N_("View _memory"); tiemu-3.03-nogdb+dfsg/glade/dbg_ioports-2.glade000066400000000000000000000063701220314353500213200ustar00rootroot00000000000000 Show registers True I/O ports GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True Double-click value or item to edit. True True False False True False False False True _Hex True False True _Dec True False tiemu-3.03-nogdb+dfsg/glade/dbg_ioports-2.gladep000066400000000000000000000015151220314353500214740ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_ioports.c dbg_ioports.h TRUE dbg_ioports-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_ioports-2.str000066400000000000000000000005071220314353500210500ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Show registers"); gchar *s = N_("I/O ports"); gchar *s = N_("Double-click value or item to edit."); gchar *s = N_("_Hex"); gchar *s = N_("_Dec"); tiemu-3.03-nogdb+dfsg/glade/dbg_mem-2.glade000066400000000000000000000647231220314353500204050ustar00rootroot00000000000000 True Memory GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True False 0 True GTK_ORIENTATION_HORIZONTAL GTK_TOOLBAR_ICONS True True True Add tab (F1) gtk-add True True False False True True Remove tab (F2) gtk-remove True True False False True True True True False True False False True Up (F3) gtk-go-up True True False False True True Down (F4) gtk-go-down True True False False True True Refresh tab (F5) gtk-refresh True True False False True True True True False True False False True View memory map (F6) gtk-justify-fill True True False False True 0 False False True True True True GTK_POS_TOP False False 0 True True True Enter Address GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END True 0 0.5 GTK_SHADOW_ETCHED_IN True True True True True True True 0 000000 True * False 6 True HEX address False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True True Find True True Find _next True True True Go to _address True True True _Dis-assemble True True Dis-assemble (indirect) True True True View _memory True True Search GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True GTK_RELIEF_NORMAL True -10 True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-sort-ascending 4 0.5 0.5 0 0 0 False False True Find _Next True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True gtk-find True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True False 0 True False 5 True Find: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True True True True True True 0 True * False 0 True True 0 False False True Hexadecimal strings must have 2 chars per byte and can be with or without space: FE ED or FEED. False False GTK_JUSTIFY_FILL True False 0 0.5 0 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True _ASCII True GTK_RELIEF_NORMAL True False False True 0 False False True True _Case sensitive True GTK_RELIEF_NORMAL True False False True 0 False False 0 True True tiemu-3.03-nogdb+dfsg/glade/dbg_mem-2.gladep000066400000000000000000000015011220314353500205460ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_mem.c dbg_mem.h TRUE dbg_mem-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_mem-2.str000066400000000000000000000016411220314353500201270ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Memory"); gchar *s = N_("Add tab (F1)"); gchar *s = N_("Remove tab (F2)"); gchar *s = N_("Up (F3)"); gchar *s = N_("Down (F4)"); gchar *s = N_("Refresh tab (F5)"); gchar *s = N_("View memory map (F6)"); gchar *s = N_("Enter Address"); gchar *s = N_("000000"); gchar *s = N_("HEX address"); gchar *s = N_("Find"); gchar *s = N_("Find _next"); gchar *s = N_("Go to _address"); gchar *s = N_("_Dis-assemble"); gchar *s = N_("Dis-assemble (indirect)"); gchar *s = N_("View _memory"); gchar *s = N_("Search"); gchar *s = N_("Find _Next"); gchar *s = N_("Find:"); gchar *s = N_("Hexadecimal strings must have 2 chars per byte and can be with or without space: FE ED or FEED."); gchar *s = N_("_ASCII"); gchar *s = N_("_Case sensitive"); tiemu-3.03-nogdb+dfsg/glade/dbg_pclog-2.glade000066400000000000000000000037511220314353500207250ustar00rootroot00000000000000 True PC trace GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True Double-click the row to disassemble. True False False False True False False False tiemu-3.03-nogdb+dfsg/glade/dbg_pclog-2.gladep000066400000000000000000000015071220314353500211020ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_pclog.c dbg_pclog.h TRUE dbg_pclog-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_pclog-2.str000066400000000000000000000003651220314353500204570ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("PC trace"); gchar *s = N_("Double-click the row to disassemble."); tiemu-3.03-nogdb+dfsg/glade/dbg_regs-2.glade000066400000000000000000003211041220314353500205540ustar00rootroot00000000000000 Show registers True Registers GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True Double-click value or item to edit. True True False False True False False False True View _memory True True Status Register GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True 2 17 True 0 0 True T False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True 0 False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 0 1 fill True S False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 2 3 0 1 fill True 0 False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 0 1 fill True 0 False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 4 5 0 1 fill True I2 False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 5 6 0 1 fill True I1 False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 6 7 0 1 fill True 0 False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 9 10 0 1 fill True 0 False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 10 11 0 1 fill True 0 False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 11 12 0 1 fill True X False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 12 13 0 1 fill True N False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 13 14 0 1 fill True Z False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 14 15 0 1 fill True V False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 15 16 0 1 fill True C False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 16 17 0 1 fill True I0 False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 7 8 0 1 fill True 8 9 0 1 fill True 8 9 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 0 1 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 1 2 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 2 3 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 3 4 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 4 5 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 5 6 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 6 7 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 7 8 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 9 10 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 10 11 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 11 12 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 12 13 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 13 14 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 14 15 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 15 16 1 2 fill True True True GTK_RELIEF_NORMAL True False False True 16 17 1 2 fill 0 True True Show registers True Registers GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True 13 5 False 0 0 True 0 5 8 9 fill True True D1= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True True D2= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 2 3 fill True True D3= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 3 4 fill True True D4= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 4 5 fill True True D5= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 5 6 fill True True D6= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 6 7 fill True True D7= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 7 8 fill True True A0= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 0 1 fill True True A1= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 1 2 fill True True A2= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 2 3 fill True True A3= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 3 4 fill True True A4= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 4 5 fill True True A5= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 5 6 fill True True A6= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 6 7 fill True True A7= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 7 8 fill True True True True 0 12345678 False * False 8 1 2 0 1 fill True True True True 0 12345678 False * False 8 1 2 1 2 fill True True True True 0 12345678 False * False 8 1 2 2 3 fill True True True True 0 12345678 False * False 8 1 2 3 4 fill True True True True 0 12345678 False * False 8 1 2 5 6 fill True True True True 0 12345678 False * False 8 1 2 6 7 fill True True True True 0 12345678 False * False 8 1 2 7 8 fill True True True True 0 12345678 False * False 8 4 5 0 1 fill True True True True 0 12345678 False * False 8 4 5 1 2 fill True True True True 0 12345678 False * False 8 4 5 2 3 fill True True True True 0 12345678 False * False 8 4 5 3 4 fill True True True True 0 12345678 False * False 8 4 5 4 5 fill True True True True 0 12345678 False * False 8 4 5 5 6 fill True True True True 0 12345678 False * False 8 4 5 6 7 fill True True True True 0 12345678 False * False 8 4 5 7 8 fill True True USP= False False GTK_JUSTIFY_LEFT False True 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 9 10 fill True True SSP= False False GTK_JUSTIFY_LEFT False True 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 9 10 fill True 2 3 0 8 fill True True PC= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 10 11 fill True 2 3 9 11 fill fill True SR= False False GTK_JUSTIFY_LEFT False False 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 10 11 fill True True True True 0 123456 False * False 6 4 5 9 10 True True True True 0 123456 False * False 6 1 2 9 10 fill True True True True 0 123456 False * False 6 1 2 10 11 True True True True 0 1234 False * False 4 4 5 10 11 True 0 5 11 12 fill True 2 5 False 0 0 True True N True GTK_RELIEF_NORMAL True False False True 1 2 1 2 fill True True Z True GTK_RELIEF_NORMAL True False False True 2 3 1 2 fill True True V True GTK_RELIEF_NORMAL True False False True 3 4 1 2 fill True True C True GTK_RELIEF_NORMAL True False False True 4 5 1 2 fill True True T True GTK_RELIEF_NORMAL True False False True 0 1 0 1 fill True True S True GTK_RELIEF_NORMAL True False False True 1 2 0 1 fill True True X True GTK_RELIEF_NORMAL True False False True 0 1 1 2 fill True I= False False GTK_JUSTIFY_LEFT False False 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 3 4 0 1 fill True True 1 0 True GTK_UPDATE_ALWAYS False False 1 0 7 1 0 0 4 5 0 1 0 5 12 13 True True True True 0 12345678 False * False 8 1 2 4 5 fill True True D0= False False GTK_JUSTIFY_LEFT False True 1 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill tiemu-3.03-nogdb+dfsg/glade/dbg_regs-2.gladep000066400000000000000000000015041220314353500207330ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_regs.c dbg_regs.h TRUE dbg_regs-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_regs-2.str000066400000000000000000000036111220314353500203100ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Show registers"); gchar *s = N_("Registers"); gchar *s = N_("Double-click value or item to edit."); gchar *s = N_("View _memory"); gchar *s = N_("Status Register"); gchar *s = N_("T"); gchar *s = N_("0"); gchar *s = N_("S"); gchar *s = N_("0"); gchar *s = N_("0"); gchar *s = N_("I2"); gchar *s = N_("I1"); gchar *s = N_("0"); gchar *s = N_("0"); gchar *s = N_("0"); gchar *s = N_("X"); gchar *s = N_("N"); gchar *s = N_("Z"); gchar *s = N_("V"); gchar *s = N_("C"); gchar *s = N_("I0"); gchar *s = N_("Show registers"); gchar *s = N_("Registers"); gchar *s = N_("D1="); gchar *s = N_("D2="); gchar *s = N_("D3="); gchar *s = N_("D4="); gchar *s = N_("D5="); gchar *s = N_("D6="); gchar *s = N_("D7="); gchar *s = N_("A0="); gchar *s = N_("A1="); gchar *s = N_("A2="); gchar *s = N_("A3="); gchar *s = N_("A4="); gchar *s = N_("A5="); gchar *s = N_("A6="); gchar *s = N_("A7="); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("12345678"); gchar *s = N_("USP="); gchar *s = N_("SSP="); gchar *s = N_("PC="); gchar *s = N_("SR="); gchar *s = N_("123456"); gchar *s = N_("123456"); gchar *s = N_("123456"); gchar *s = N_("1234"); gchar *s = N_("N"); gchar *s = N_("Z"); gchar *s = N_("V"); gchar *s = N_("C"); gchar *s = N_("T"); gchar *s = N_("S"); gchar *s = N_("X"); gchar *s = N_("I="); gchar *s = N_("12345678"); gchar *s = N_("D0="); tiemu-3.03-nogdb+dfsg/glade/dbg_stack-2.glade000066400000000000000000000220621220314353500207220ustar00rootroot00000000000000 True Stack GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True True False 0 True False 0 True A7 (stack) is: False False GTK_JUSTIFY_LEFT False False 0 0.5 5 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True USP False False GTK_JUSTIFY_CENTER False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True 0 False False True True True True GTK_POS_TOP False False True True True False False True False False False False True True A7 (stack) False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 tab True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True True True False False True False False False False True True A6 (frame) False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 tab 0 True True True View _memory True tiemu-3.03-nogdb+dfsg/glade/dbg_stack-2.gladep000066400000000000000000000015071220314353500211030ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_stack.c dbg_stack.h TRUE dbg_stack-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_stack-2.str000066400000000000000000000005171220314353500204570ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Stack"); gchar *s = N_("A7 (stack) is:"); gchar *s = N_("USP"); gchar *s = N_("A7 (stack)"); gchar *s = N_("A6 (frame)"); gchar *s = N_("View _memory"); tiemu-3.03-nogdb+dfsg/glade/dbg_vectors-2.glade000066400000000000000000000077251220314353500213130ustar00rootroot00000000000000 True Add Vector Breakpoint GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 320 120 True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True True True False False True False False False 0 True True tiemu-3.03-nogdb+dfsg/glade/dbg_vectors-2.gladep000066400000000000000000000015151220314353500214620ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null dbg_vectors.c dbg_vectors.h TRUE dbg_vectors-2.str tiemu-3.03-nogdb+dfsg/glade/dbg_vectors-2.str000066400000000000000000000003121220314353500210300ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Add Vector Breakpoint"); tiemu-3.03-nogdb+dfsg/glade/dboxes-2.glade000066400000000000000000000107271220314353500202720ustar00rootroot00000000000000 True Title GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True True False 0 True GTK_BUTTONBOX_END True True True True gtk-cancel True GTK_RELIEF_NORMAL -6 True True True gtk-ok True GTK_RELIEF_NORMAL -5 0 False True GTK_PACK_END 5 True 0 0.5 GTK_SHADOW_ETCHED_IN 5 True False 0 True True True True 0 True * False 0 False False True Name: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 label_item 0 True True tiemu-3.03-nogdb+dfsg/glade/dboxes-2.gladep000066400000000000000000000014541220314353500204470ustar00rootroot00000000000000 Glade glade FALSE TRUE FALSE FALSE FALSE null null dboxes.c dboxes.h TRUE dboxes-2.str tiemu-3.03-nogdb+dfsg/glade/dboxes-2.str000066400000000000000000000003501220314353500200150ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Title"); gchar *s = N_("*"); gchar *s = N_("Name:"); tiemu-3.03-nogdb+dfsg/glade/device-2.glade000066400000000000000000000310401220314353500202340ustar00rootroot00000000000000 True Communication Settings GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 4 True 0 0.5 GTK_SHADOW_ETCHED_IN 5 True 2 4 False 5 10 True Cable: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True Port: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True Timeout: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 2 3 0 1 fill True Delay: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 2 3 1 2 fill True True 1 0 False GTK_UPDATE_ALWAYS False False 10 1 600 1 10 10 3 4 0 1 True True 1 0 False GTK_UPDATE_ALWAYS False False 10 1 50 1 10 10 3 4 1 2 True None #1 #2 #3 #4 True True 1 2 1 2 fill True None GrayLink BlackLink Parallel SilverLink DirectLink VTi TiEmu internal False True 1 2 0 1 fill True Settings False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True False tiemu-3.03-nogdb+dfsg/glade/device-2.gladep000066400000000000000000000014461220314353500204230ustar00rootroot00000000000000 Glade glade FALSE TRUE FALSE FALSE FALSE null null comm.c comm.h TRUE comm-2.str tiemu-3.03-nogdb+dfsg/glade/device-2.str000066400000000000000000000016661220314353500200030ustar00rootroot00000000000000 gchar *s = N_("Communication Settings"); gchar *s = N_("_Auto-detect"); gchar *s = N_("Cable:"); gchar *s = N_("Port:"); gchar *s = N_("Calc:"); gchar *s = N_("Timeout:"); gchar *s = N_("Delay:"); gchar *s = N_("GrayLink"); gchar *s = N_("BlackLink"); gchar *s = N_("SilverLink"); gchar *s = N_("ParallelLink"); gchar *s = N_("VTi"); gchar *s = N_("TiEmu"); gchar *s = N_("virtual"); gchar *s = N_("null"); gchar *s = N_("custom"); gchar *s = N_("#1"); gchar *s = N_("#2"); gchar *s = N_("#3"); gchar *s = N_("#4"); gchar *s = N_("null"); gchar *s = N_("TI73"); gchar *s = N_("TI82"); gchar *s = N_("TI83"); gchar *s = N_("TI83+"); gchar *s = N_("TI84+"); gchar *s = N_("TI85"); gchar *s = N_("TI86"); gchar *s = N_("TI89"); gchar *s = N_("TI89 Titanium"); gchar *s = N_("TI92"); gchar *s = N_("TI92+"); gchar *s = N_("V200PLT"); gchar *s = N_("Settings"); gchar *s = N_("Have a problem ? Check out the log:"); tiemu-3.03-nogdb+dfsg/glade/infos-2.glade000066400000000000000000000606251220314353500201260ustar00rootroot00000000000000 True Infos... GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True 10 2 False 4 5 True Skin version: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True Skin name: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True Skin author: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 2 3 fill True Version: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 5 6 fill True RAM size: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 6 7 fill True ROM size: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 7 8 fill True ROM type: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 8 9 fill True VTi/TiEmu False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 0 1 fill True Default TI-92 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 1 2 fill True Julien Blache False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 2 3 fill True TI92 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 4 5 fill True 1.11 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 5 6 fill True 128KB False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 6 7 fill True 2MB False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 7 8 fill True external ROM False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 8 9 fill True Calc type: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 4 5 fill True Hardware: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 9 10 fill True HW1 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 9 10 fill True 0 2 3 4 fill 0 True True tiemu-3.03-nogdb+dfsg/glade/infos-2.gladep000066400000000000000000000014731220314353500203020ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null infos.c infos.h TRUE infos-2.str tiemu-3.03-nogdb+dfsg/glade/infos-2.str000066400000000000000000000013001220314353500176430ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Infos..."); gchar *s = N_("Skin version:"); gchar *s = N_("Skin name:"); gchar *s = N_("Skin author:"); gchar *s = N_("Version:"); gchar *s = N_("RAM size:"); gchar *s = N_("ROM size:"); gchar *s = N_("ROM type:"); gchar *s = N_("VTi/TiEmu"); gchar *s = N_("Default TI-92"); gchar *s = N_("Julien Blache"); gchar *s = N_("TI92"); gchar *s = N_("1.11"); gchar *s = N_("128KB"); gchar *s = N_("2MB"); gchar *s = N_("external ROM"); gchar *s = N_("Calc type:"); gchar *s = N_("Hardware:"); gchar *s = N_("HW1"); tiemu-3.03-nogdb+dfsg/glade/log_link-2.glade000066400000000000000000000503751220314353500206070ustar00rootroot00000000000000 True Link Log GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True GTK_RELIEF_NORMAL True 0 True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-save 4 0.5 0.5 0 0 0 False False True Save True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True True GTK_RELIEF_NORMAL True 0 True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-media-play 4 0.5 0.5 0 0 0 False False True Start True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True True GTK_RELIEF_NORMAL True 0 True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-clear 4 0.5 0.5 0 0 0 False False True Clear True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True True GTK_RELIEF_NORMAL True 0 True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-close 4 0.5 0.5 0 0 0 False False True Close True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False True GTK_PACK_END True False 0 5 True False 5 True True _Send True GTK_RELIEF_NORMAL True False False True 0 True False True True _Receive True GTK_RELIEF_NORMAL True False False True 0 True False True False 5 True Buffer size: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True 1 0 False GTK_UPDATE_ALWAYS False False 64 64 4194304 1 16 128 0 True True True KB False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True 0 False True True True GTK_POLICY_NEVER GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True False False True GTK_JUSTIFY_LEFT GTK_WRAP_NONE False 0 0 0 0 0 0 0 True True 0 True True tiemu-3.03-nogdb+dfsg/glade/log_link-2.gladep000066400000000000000000000015041220314353500207550ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null log_link.c log_link.h TRUE log_link-2.str tiemu-3.03-nogdb+dfsg/glade/log_link-2.str000066400000000000000000000006141220314353500203320ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Link Log"); gchar *s = N_("Save"); gchar *s = N_("Start"); gchar *s = N_("Clear"); gchar *s = N_("Close"); gchar *s = N_("_Send"); gchar *s = N_("_Receive"); gchar *s = N_("Buffer size: "); gchar *s = N_("KB"); tiemu-3.03-nogdb+dfsg/glade/manpage-2.glade000066400000000000000000000065431220314353500204170ustar00rootroot00000000000000 True Page of Manual GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 640 480 True False True True False 0 True GTK_BUTTONBOX_END True True True True gtk-ok True GTK_RELIEF_NORMAL -5 0 False True GTK_PACK_END 7 True GTK_POLICY_NEVER GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True False GTK_JUSTIFY_LEFT GTK_WRAP_WORD True 0 0 0 0 0 0 Cannot find the manpage file. 0 True True tiemu-3.03-nogdb+dfsg/glade/manpage-2.gladep000066400000000000000000000014571220314353500205760ustar00rootroot00000000000000 Glade glade FALSE TRUE FALSE FALSE FALSE null null manpage.c manpage.h TRUE manpage-2.str tiemu-3.03-nogdb+dfsg/glade/pbars-2.glade000066400000000000000000001025241220314353500201120ustar00rootroot00000000000000 True Title 1 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 0 False True GTK_PACK_END 5 True False 0 True Transfer status: False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True GTK_PROGRESS_LEFT_TO_RIGHT 0 0.10000000149 PANGO_ELLIPSIZE_NONE 0 False False True 5 True True True Rate: 0.00 Kb/s False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True 160 True Title 2 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 0 False True GTK_PACK_END True Message. False False GTK_JUSTIFY_FILL True False 0 0.5 5 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True Title 3 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 0 False True GTK_PACK_END 5 True False 0 True Total transfer: False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True GTK_PROGRESS_LEFT_TO_RIGHT 0 0.10000000149 PANGO_ELLIPSIZE_NONE 0 False False True Current transfer: False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True GTK_PROGRESS_LEFT_TO_RIGHT 0 0.10000000149 PANGO_ELLIPSIZE_NONE 0 False False True 5 True True True Rate: 0.0 Kbytes/s False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True True Title 4 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 0 False True GTK_PACK_END 5 True False 0 True Current transfer: False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True GTK_PROGRESS_LEFT_TO_RIGHT 0 0.10000000149 PANGO_ELLIPSIZE_NONE 0 False False True False 0 True 1/1: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True Text False False GTK_JUSTIFY_LEFT True False 0 0.5 0 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False False True 5 True True True Rate: 0.0 Kbytes/s False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True True Title 5 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 0 False True GTK_PACK_END 5 True False 0 True Total transfer: False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True GTK_PROGRESS_LEFT_TO_RIGHT 0 0.10000000149 PANGO_ELLIPSIZE_NONE 0 False False True Current transfer: False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True GTK_PROGRESS_LEFT_TO_RIGHT 0 0.10000000149 PANGO_ELLIPSIZE_NONE 0 False False True False 0 True 1/1: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True Text False False GTK_JUSTIFY_LEFT True False 0 0.5 0 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False False True 5 True True True Rate: 0.0 Kbytes/s False False GTK_JUSTIFY_CENTER False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True tiemu-3.03-nogdb+dfsg/glade/pbars-2.gladep000066400000000000000000000014511220314353500202670ustar00rootroot00000000000000 Glade glade FALSE TRUE FALSE FALSE FALSE null null pbars.c pbars.h TRUE pbars-2.str tiemu-3.03-nogdb+dfsg/glade/pbars-2.str000066400000000000000000000014241220314353500176430ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Title 1"); gchar *s = N_("Transfer status:"); gchar *s = N_("Rate: 0.00 Kb/s"); gchar *s = N_("Title 2"); gchar *s = N_("Message."); gchar *s = N_("Title 3"); gchar *s = N_("Total transfer:"); gchar *s = N_("Current transfer:"); gchar *s = N_("Rate: 0.0 Kbytes/s"); gchar *s = N_("Title 4"); gchar *s = N_("Current transfer:"); gchar *s = N_("1/1: "); gchar *s = N_("Text"); gchar *s = N_("Rate: 0.0 Kbytes/s"); gchar *s = N_("Title 5"); gchar *s = N_("Total transfer:"); gchar *s = N_("Current transfer:"); gchar *s = N_("1/1: "); gchar *s = N_("Text"); gchar *s = N_("Rate: 0.0 Kbytes/s"); tiemu-3.03-nogdb+dfsg/glade/popup-2.glade000066400000000000000000000721411220314353500201470ustar00rootroot00000000000000 True GDK_KEY_PRESS_MASK True Welcome to TiEmu 3 TiEmu Menu True False True True Send the selected file to the emulator. This file can be of any type (single, group, backup, FLASH app or FLASH OS). _Send file to TiEmu... True True _Debug file with TiEmu... True True _Link True True Do the link cable setup. _Settings... True True _Quick-send... True True Listen for files sent from TiEmu. Uncheck it if you are running program which use the linkport for sound. _Listen for files True True True _Emulate sound True False True True Configuration True True Save the actual configuration into a text file. _Save config... True True Load the configuration previously saved. _Load config... True True Calculator state True True Reload the previously saved state. _Revert to saved state True True Load the calculator state from file. _Load state image... True True True Save the calculator state into a file (called state image). _Save state image... True True Do a 'save state image' and exits. _Exit and save state True True True Go into the debugger. _Enter debugger... True True Reset the calculator. _Reset calc True True True Load a FLASH upgrade into the FLASH memory of the calculator. _Upgrade calc True True Import and/or set an image to emulate. Set R_OM (image/upgrade) True True True Emulator options True True Run the calculator at its default speed (default) or at the maximum the computer can do. _Restrict to actual speed True True True Enable/disable hardware protection. Please note you will have to restart the emulator or select an image for changes to take effect. H_W protection True False True True _High LCD update True False True _Med LCD update True True high_lcd_update1 True L_ow LCD update True False high_lcd_update1 True True _Normal view (x1) True True True _Large view (x2) True False normal_view1 True _Full screen True False normal_view1 True _Custom view True False normal_view1 True Skin for current calc True True No skin (just LCD). _None True True Returns to default skin. _Default True True Choose a skin to use. _Other... True True Screenshot True True Do a screenshot now! _Now! True True Set options for screenshot (image, type). _Options True True _Copy to clipboard True False True Key Press True True Setup recording True True Record True False True True Setup playing True True Play True False True True Misc True True Open the TiEmu user's manual in a browser. _User's Manual True True gtk-help 1 0.5 0.5 0 0 True Open the Linux manpage (applicable to Windows, too). _Manpage True True gtk-index 1 0.5 0.5 0 0 True True _Bookmarks True True http://lpg.ticalc.org/prj_tiemu TiEmu True True http://tigcc.ticalc.org TIGCC True True http://www.tilp.info TiLP True True http://education.ti.com TI Education True True http://www.ticalc.org ticalc.org True True How to report a bug or a problem. Bu_g report True True gtk-execute 1 0.5 0.5 0 0 True True Display the log of all changes. _ChangeLog True True About TiEmu... _About... True True _Infos... True True Just exits. E_xit without saving state True tiemu-3.03-nogdb+dfsg/glade/popup-2.gladep000066400000000000000000000014631220314353500203260ustar00rootroot00000000000000 Popup Menu popup-menu FALSE TRUE FALSE FALSE FALSE null null popup.c popup.h TRUE popup-2.str tiemu-3.03-nogdb+dfsg/glade/popup-2.str000066400000000000000000000076311220314353500177050ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Welcome to TiEmu 3"); gchar *s = N_("TiEmu Menu"); gchar *s = N_("Send the selected file to the emulator. This file can be of any type (single, group, backup, FLASH app or FLASH OS)."); gchar *s = N_("_Send file to TiEmu..."); gchar *s = N_("_Debug file with TiEmu..."); gchar *s = N_("_Link"); gchar *s = N_("Do the link cable setup."); gchar *s = N_("_Settings..."); gchar *s = N_("_Quick-send..."); gchar *s = N_("Listen for files sent from TiEmu. Uncheck it if you are running program which use the linkport for sound."); gchar *s = N_("_Listen for files"); gchar *s = N_("_Emulate sound"); gchar *s = N_("Configuration"); gchar *s = N_("Save the actual configuration into a text file."); gchar *s = N_("_Save config..."); gchar *s = N_("Load the configuration previously saved."); gchar *s = N_("_Load config..."); gchar *s = N_("Calculator state"); gchar *s = N_("Reload the previously saved state."); gchar *s = N_("_Revert to saved state"); gchar *s = N_("Load the calculator state from file."); gchar *s = N_("_Load state image..."); gchar *s = N_("Save the calculator state into a file (called state image)."); gchar *s = N_("_Save state image..."); gchar *s = N_("Do a 'save state image' and exits."); gchar *s = N_("_Exit and save state"); gchar *s = N_("Go into the debugger."); gchar *s = N_("_Enter debugger..."); gchar *s = N_("Reset the calculator."); gchar *s = N_("_Reset calc"); gchar *s = N_("Load a FLASH upgrade into the FLASH memory of the calculator."); gchar *s = N_("_Upgrade calc"); gchar *s = N_("Import and/or set an image to emulate."); gchar *s = N_("Set R_OM (image/upgrade)"); gchar *s = N_("Emulator options"); gchar *s = N_("Run the calculator at its default speed (default) or at the maximum the computer can do."); gchar *s = N_("_Restrict to actual speed"); gchar *s = N_("Enable/disable hardware protection. Please note you will have to restart the emulator or select an image for changes to take effect."); gchar *s = N_("H_W protection"); gchar *s = N_("_High LCD update"); gchar *s = N_("_Med LCD update"); gchar *s = N_("L_ow LCD update"); gchar *s = N_("_Normal view (x1)"); gchar *s = N_("_Large view (x2)"); gchar *s = N_("_Full screen"); gchar *s = N_("_Custom view"); gchar *s = N_("Skin for current calc"); gchar *s = N_("No skin (just LCD)."); gchar *s = N_("_None"); gchar *s = N_("Returns to default skin."); gchar *s = N_("_Default"); gchar *s = N_("Choose a skin to use."); gchar *s = N_("_Other..."); gchar *s = N_("Screenshot"); gchar *s = N_("Do a screenshot now!"); gchar *s = N_("_Now!"); gchar *s = N_("Set options for screenshot (image, type)."); gchar *s = N_("_Options"); gchar *s = N_("_Copy to clipboard"); gchar *s = N_("Key Press"); gchar *s = N_("Setup recording"); gchar *s = N_("Record"); gchar *s = N_("Setup playing"); gchar *s = N_("Play"); gchar *s = N_("Misc"); gchar *s = N_("Open the TiEmu user's manual in a browser."); gchar *s = N_("_User's Manual"); gchar *s = N_("Open the Linux manpage (applicable to Windows, too)."); gchar *s = N_("_Manpage"); gchar *s = N_("_Bookmarks"); gchar *s = N_("http://lpg.ticalc.org/prj_tiemu"); gchar *s = N_("TiEmu"); gchar *s = N_("http://tigcc.ticalc.org"); gchar *s = N_("TIGCC"); gchar *s = N_("http://www.tilp.info"); gchar *s = N_("TiLP"); gchar *s = N_("http://education.ti.com"); gchar *s = N_("TI Education"); gchar *s = N_("http://www.ticalc.org"); gchar *s = N_("ticalc.org"); gchar *s = N_("How to report a bug or a problem."); gchar *s = N_("Bu_g report"); gchar *s = N_("Display the log of all changes."); gchar *s = N_("_ChangeLog"); gchar *s = N_("About TiEmu..."); gchar *s = N_("_About..."); gchar *s = N_("_Infos..."); gchar *s = N_("Just exits."); gchar *s = N_("E_xit without saving state"); tiemu-3.03-nogdb+dfsg/glade/quicksend-2.glade000066400000000000000000000113541220314353500207710ustar00rootroot00000000000000 True Quick send GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True False 5 True True _enable True GTK_RELIEF_NORMAL True False False True 0 False False True Open file GTK_FILE_CHOOSER_ACTION_OPEN False False -1 0 False False 0 True True tiemu-3.03-nogdb+dfsg/glade/quicksend-2.gladep000066400000000000000000000015071220314353500211500ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null quicksend.c quicksend.h TRUE quicksend-2.str tiemu-3.03-nogdb+dfsg/glade/quicksend-2.str000066400000000000000000000003671220314353500205270ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Quick send"); gchar *s = N_("_enable"); gchar *s = N_("Open file"); tiemu-3.03-nogdb+dfsg/glade/release-2.glade000066400000000000000000000147321220314353500204260ustar00rootroot00000000000000 True Welcome to TiEmu ! GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False 640 480 True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True False 5 True You will find in the box below some news about TiEmu (the RELEASE file): False False GTK_JUSTIFY_FILL False False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True GTK_POLICY_NEVER GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True False False True GTK_JUSTIFY_LEFT GTK_WRAP_WORD True 0 0 0 0 0 0 Cannot find the RELEASE file. 0 True True True The latest version of TiEmu can be found at: <http://lpg.ticalc.org/prj__tiemu> Please report any bugs to the TiEmu team: <gtktiemu-users@lists.sf.net>. True False GTK_JUSTIFY_FILL False False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True tiemu-3.03-nogdb+dfsg/glade/release-2.gladep000066400000000000000000000014571220314353500206060ustar00rootroot00000000000000 Glade glade FALSE TRUE FALSE FALSE FALSE null null release.c release.h TRUE release-2.str tiemu-3.03-nogdb+dfsg/glade/romversion-2.glade000066400000000000000000000140701220314353500212040ustar00rootroot00000000000000 True Set ROM version GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True 400 240 True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True False 0 True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True True False False True False False False 0 True True True GTK_BUTTONBOX_DEFAULT_STYLE 0 True True True gtk-add True GTK_RELIEF_NORMAL True True True True gtk-remove True GTK_RELIEF_NORMAL True 5 False False 0 True True tiemu-3.03-nogdb+dfsg/glade/romversion-2.gladep000066400000000000000000000015121220314353500213610ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null romversion.c romversion.h TRUE romversion-2.str tiemu-3.03-nogdb+dfsg/glade/romversion-2.str000066400000000000000000000003041220314353500207330ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Set ROM version"); tiemu-3.03-nogdb+dfsg/glade/scroptions-2.glade000066400000000000000000000724351220314353500212150ustar00rootroot00000000000000 True Screen Options GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True 2 2 False 0 5 True 0 0.5 GTK_SHADOW_ETCHED_IN 3 True 3 2 True 12 12 True True _JPEG True GTK_RELIEF_NORMAL True True False True 0 1 0 1 fill True True _PNG True GTK_RELIEF_NORMAL True False False True radiobutton30 0 1 1 2 fill True True _ICO True GTK_RELIEF_NORMAL True False False True radiobutton30 0 1 2 3 fill True True _EPS True GTK_RELIEF_NORMAL True True False True radiobutton30 1 2 0 1 fill True True PD_F True GTK_RELIEF_NORMAL True True False True radiobutton30 1 2 1 2 fill True True _BMP True GTK_RELIEF_NORMAL True False False True radiobutton30 1 2 2 3 fill True Image format: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 1 2 0 1 fill True 0 0.5 GTK_SHADOW_ETCHED_IN 5 True True 0 True 2 2 False 0 0 True Skips: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True Number of frames to capture True 1 0 False GTK_UPDATE_ALWAYS False False 1 1 100 1 10 10 1 2 0 1 True Number of frames to skip between 2 captures. Beware: if you want to capture image every 4 frames, you need to set value to 3. True 1 0 False GTK_UPDATE_ALWAYS False False 1 0 127 1 10 10 1 2 1 2 True Shots: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill expand 0 True True True Burst capture: False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 1 2 1 2 fill fill True 0 0.5 GTK_SHADOW_ETCHED_IN 5 True False 5 True Select folder GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER False True -1 0 True True True False 0 True True True True 0 screenshot True * False 0 True True True -000.jpg False False GTK_JUSTIFY_LEFT False False 0.5 0.5 5 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True True Folder & Filename: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 1 1 2 fill fill True 0 0.5 GTK_SHADOW_ETCHED_IN 5 True False 0 True False 0 True True Black&_White True GTK_RELIEF_NORMAL True True False True 0 False False True True Colo_r True GTK_RELIEF_NORMAL True False False True radiobutton10 0 False False True 0 True True True True _LCD only True GTK_RELIEF_NORMAL True True False True 0 False False True True _Calculator True GTK_RELIEF_NORMAL True False False True radiobutton20 0 False False 0 True True True Image type: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 1 0 1 fill 0 True True tiemu-3.03-nogdb+dfsg/glade/scroptions-2.gladep000066400000000000000000000015121220314353500213610ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null scroptions.c scroptions.h TRUE scroptions-2.str tiemu-3.03-nogdb+dfsg/glade/scroptions-2.str000066400000000000000000000016431220314353500207420ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("Screen Options"); gchar *s = N_("_JPEG"); gchar *s = N_("_PNG"); gchar *s = N_("_ICO"); gchar *s = N_("_EPS"); gchar *s = N_("PD_F"); gchar *s = N_("_BMP"); gchar *s = N_("Image format:"); gchar *s = N_("Skips: "); gchar *s = N_("Number of frames to capture"); gchar *s = N_("Number of frames to skip between 2 captures. Beware: if you want to capture image every 4 frames, you need to set value to 3."); gchar *s = N_("Shots: "); gchar *s = N_("Burst capture:"); gchar *s = N_("Select folder"); gchar *s = N_("screenshot"); gchar *s = N_("-000.jpg"); gchar *s = N_("Folder & Filename:"); gchar *s = N_("Black&_White"); gchar *s = N_("Colo_r"); gchar *s = N_("_LCD only"); gchar *s = N_("_Calculator"); gchar *s = N_("Image type:"); tiemu-3.03-nogdb+dfsg/glade/wizard-2.glade000066400000000000000000000737761220314353500203230ustar00rootroot00000000000000 True TiEmu wizard GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-apply True GTK_RELIEF_NORMAL True -10 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True False 5 True Welcome to TiEmu 3, the Linux/Win32 TI emulator. False False GTK_JUSTIFY_FILL True False 0 0.5 15 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True 0 True True True True I want to use PedRom (GPL'ed replacement OS) shipped with TiEmu. True GTK_RELIEF_NORMAL True True False True 0 False False True True You have downloaded a FLASH upgrade on the TI website. True GTK_RELIEF_NORMAL True False False True radiobutton1 0 False False True True You already have a ROM dump. True GTK_RELIEF_NORMAL True False False True radiobutton1 0 False False True True You want to use TiLP or another dumping program to get a ROM dump of your calculator ROM. True GTK_RELIEF_NORMAL True False False True radiobutton1 0 False False True 0 True True True Remind you that you can not distribute your ROM dump(s). They are copyrighted by Texas Instruments. False False GTK_JUSTIFY_FILL True False 0 0.5 15 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True True TiEmu wizard GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-apply True GTK_RELIEF_NORMAL True -10 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True False 0 True TiEmu is now set up and ready for use. Some tips on how to use the emulator: False False GTK_JUSTIFY_FILL True False 0 0.5 15 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True 0 True True 5 True False 0 True * You have access to a popup menu by right-clicking in the emulator's window. False False GTK_JUSTIFY_FILL True False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True * To use keys, use mouse or keyboard False False GTK_JUSTIFY_FILL True False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True * To change to a different calculator or ROM version, use an item of the ROM menu. False False GTK_JUSTIFY_FILL True False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True * You can save the emulator state and config. False False GTK_JUSTIFY_FILL True False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True * If your calculator screen is blank, use 'Ctrl' with '+/-' for adjusting contrast. False False GTK_JUSTIFY_FILL True False 0 0.5 5 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True True 0 True True True Click the 'Finish' button to start TiEmu. False False GTK_JUSTIFY_FILL True False 0 0.5 15 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True True TiEmu wizard GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END True If you want to get a ROM dump with TiLP, you will have to download it from: <http://tilp.info>Be sure to read the user's manual! False False GTK_JUSTIFY_FILL True False 0 0.5 5 5 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True TiEmu wizard GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True False False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True True True False 0 True GTK_BUTTONBOX_END True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True False 5 True The FLASH upgrade you have selected is being to be converted into a TiEmu image. Please wait... False False GTK_JUSTIFY_FILL True False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True 0 True True True Note also that the converted image will not have a boot block. False False GTK_JUSTIFY_FILL True False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 True True tiemu-3.03-nogdb+dfsg/glade/wizard-2.gladep000066400000000000000000000014761220314353500204670ustar00rootroot00000000000000 Glade_projects glade_projects FALSE TRUE FALSE FALSE FALSE null null wizard.c wizard.h TRUE wizard-2.str tiemu-3.03-nogdb+dfsg/glade/wizard-2.str000066400000000000000000000033601220314353500200350ustar00rootroot00000000000000/* * Translatable strings file generated by Glade. * Add this file to your project's POTFILES.in. * DO NOT compile it as part of your application. */ gchar *s = N_("TiEmu wizard"); gchar *s = N_("Welcome to TiEmu 3, the Linux/Win32 TI emulator."); gchar *s = N_("I want to use PedRom (GPL'ed replacement OS) \n" "shipped with TiEmu."); gchar *s = N_("You have downloaded a FLASH upgrade on the TI\n" "website."); gchar *s = N_("You already have a ROM dump."); gchar *s = N_("You want to use TiLP or another dumping program \n" "to get a ROM dump of your calculator ROM."); gchar *s = N_("Remind you that you can not distribute your ROM dump(s). They are copyrighted by Texas Instruments."); gchar *s = N_("TiEmu wizard"); gchar *s = N_("TiEmu is now set up and ready for use. Some tips on how to use the emulator:"); gchar *s = N_("* You have access to a popup menu by right-clicking in the emulator's window."); gchar *s = N_("* To use keys, use mouse or keyboard"); gchar *s = N_("* To change to a different calculator or ROM version, use an item of the ROM menu."); gchar *s = N_("* You can save the emulator state and config."); gchar *s = N_("* If your calculator screen is blank, use 'Ctrl' with '+/-' for adjusting contrast."); gchar *s = N_("Click the 'Finish' button to start TiEmu."); gchar *s = N_("TiEmu wizard"); gchar *s = N_("If you want to get a ROM dump with TiLP, you will have to download it from: Be sure to read the user's manual!"); gchar *s = N_("TiEmu wizard"); gchar *s = N_("The FLASH upgrade you have selected is being to be converted into a TiEmu image. Please wait..."); gchar *s = N_("Note also that the converted image will not have a boot block."); tiemu-3.03-nogdb+dfsg/help/000077500000000000000000000000001220314353500155165ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/help/FAQ.html000066400000000000000000000027741220314353500170250ustar00rootroot00000000000000 FAQ
    FAQ
    (Frequently Asked Questions)







    General

    Q: ?
    A: .


    Win32 specific

    Q: If anyone is getting one of these:
    - ** WARNING **: Couldn't load font "MS Sans Serif 8" falling back to "Sans 8"
    - ** ERROR **: file shape.c line 75: assertion failed: (glyphs->num_glyphs > 0) or any other warning or error
    message regarding fonts/glyphs
    A: the fix is to open your C:\Program Files\Shared Files\Gtk\2.0\etc\gtk-2.0\gtkrc and to add
    this:
    style "user-font"
    {
    font_name="Arial"
    }
    widget_class "*" style "user-font"
    This forces GTK+ to use a compatible font (Arial) and reportedly fixes both the aforementioned problems, 
    and probably others too...


    Linux specific

    Q: ?
    A: .


    tiemu-3.03-nogdb+dfsg/help/Makefile.am000066400000000000000000000003321220314353500175500ustar00rootroot00000000000000helpdir = $(pkgdatadir)/help dist_help_DATA = *.html *.png *.jpg uninstall: rm -f $(pkgdatadir)/help/*.html rm -f $(pkgdatadir)/help/*.png rm -f $(pkgdatadir)/help/*.jpg dos2unix: dos2unix lowercase uppercase tiemu-3.03-nogdb+dfsg/help/Makefile.in000066400000000000000000000321301220314353500175620ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = help DIST_COMMON = $(dist_help_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(helpdir)" dist_helpDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_help_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTODIRS = @AUTODIRS@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLADE_CFLAGS = @GLADE_CFLAGS@ GLADE_LIBS = @GLADE_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GROFF = @GROFF@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INCINTL = @INCINTL@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KDECONFIG = @KDECONFIG@ KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ KDE_INCLUDES = @KDE_INCLUDES@ KDE_LDFLAGS = @KDE_LDFLAGS@ KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@ KDE_MT_LIBS = @KDE_MT_LIBS@ KDE_RPATH = @KDE_RPATH@ LDFLAGS = @LDFLAGS@ LIBCOMPAT = @LIBCOMPAT@ LIBCRYPT = @LIBCRYPT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBOBJS = @LIBOBJS@ LIBPNG = @LIBPNG@ LIBPTHREAD = @LIBPTHREAD@ LIBRESOLV = @LIBRESOLV@ LIBS = @LIBS@ LIBSM = @LIBSM@ LIBSOCKET = @LIBSOCKET@ LIBTOOL = @LIBTOOL@ LIBUCB = @LIBUCB@ LIBUTIL = @LIBUTIL@ LIBXINERAMA = @LIBXINERAMA@ LIBZ = @LIBZ@ LIB_KAB = @LIB_KAB@ LIB_KDECORE = @LIB_KDECORE@ LIB_KDEPRINT = @LIB_KDEPRINT@ LIB_KDEUI = @LIB_KDEUI@ LIB_KFILE = @LIB_KFILE@ LIB_KFM = @LIB_KFM@ LIB_KHTML = @LIB_KHTML@ LIB_KIO = @LIB_KIO@ LIB_KPARTS = @LIB_KPARTS@ LIB_KSPELL = @LIB_KSPELL@ LIB_KSYCOCA = @LIB_KSYCOCA@ LIB_QPE = @LIB_QPE@ LIB_QT = @LIB_QT@ LIB_SMB = @LIB_SMB@ LIB_X11 = @LIB_X11@ LIB_XEXT = @LIB_XEXT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ QTE_NORTTI = @QTE_NORTTI@ QT_INCLUDES = @QT_INCLUDES@ QT_LDFLAGS = @QT_LDFLAGS@ RANLIB = @RANLIB@ RC = @RC@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TICABLES_CFLAGS = @TICABLES_CFLAGS@ TICABLES_LIBS = @TICABLES_LIBS@ TICALCS_CFLAGS = @TICALCS_CFLAGS@ TICALCS_LIBS = @TICALCS_LIBS@ TICONV_CFLAGS = @TICONV_CFLAGS@ TICONV_LIBS = @TICONV_LIBS@ TIFILES_CFLAGS = @TIFILES_CFLAGS@ TIFILES_LIBS = @TIFILES_LIBS@ UIC = @UIC@ UIC_TR = @UIC_TR@ USER_INCLUDES = @USER_INCLUDES@ USER_LDFLAGS = @USER_LDFLAGS@ USE_NLS = @USE_NLS@ USE_THREADS = @USE_THREADS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_INCLUDES = @X_INCLUDES@ X_LDFLAGS = @X_LDFLAGS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ all_includes = @all_includes@ all_libraries = @all_libraries@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ dbus = @dbus@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ kde = @kde@ kde_appsdir = @kde_appsdir@ kde_bindir = @kde_bindir@ kde_confdir = @kde_confdir@ kde_datadir = @kde_datadir@ kde_htmldir = @kde_htmldir@ kde_icondir = @kde_icondir@ kde_includes = @kde_includes@ kde_libraries = @kde_libraries@ kde_libs_htmldir = @kde_libs_htmldir@ kde_libs_prefix = @kde_libs_prefix@ kde_locale = @kde_locale@ kde_mimedir = @kde_mimedir@ kde_moduledir = @kde_moduledir@ kde_qtver = @kde_qtver@ kde_servicesdir = @kde_servicesdir@ kde_servicetypesdir = @kde_servicetypesdir@ kde_sounddir = @kde_sounddir@ kde_styledir = @kde_styledir@ kde_templatesdir = @kde_templatesdir@ kde_wallpaperdir = @kde_wallpaperdir@ kde_widgetdir = @kde_widgetdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ qt_includes = @qt_includes@ qt_libraries = @qt_libraries@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x_includes = @x_includes@ x_libraries = @x_libraries@ helpdir = $(pkgdatadir)/help dist_help_DATA = *.html *.png *.jpg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu help/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu help/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_helpDATA: $(dist_help_DATA) @$(NORMAL_INSTALL) test -z "$(helpdir)" || $(MKDIR_P) "$(DESTDIR)$(helpdir)" @list='$(dist_help_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_helpDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(helpdir)/$$f'"; \ $(dist_helpDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(helpdir)/$$f"; \ done uninstall-dist_helpDATA: @$(NORMAL_UNINSTALL) @list='$(dist_help_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(helpdir)/$$f'"; \ rm -f "$(DESTDIR)$(helpdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(helpdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dist_helpDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_helpDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_helpDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-dist_helpDATA uninstall: rm -f $(pkgdatadir)/help/*.html rm -f $(pkgdatadir)/help/*.png rm -f $(pkgdatadir)/help/*.jpg dos2unix: dos2unix lowercase uppercase # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/help/Manual_en.html000066400000000000000000000136511220314353500203110ustar00rootroot00000000000000 TiEmu User's Manual
    Author Date Version Modifications
    R. Liévin Feb 3rd, 2005 1.0 Initial release (TiEmu v1.80l).
    K. Kofler
    Aug 25th, 2005
    1.1
    Insight support.
    R. Liévin
    Sep 10th, 2005
    1.2
    SilverLink support.
    R. Liévin
    Dec 4th, 2006
    1.3
    Link, link-log, quick-send, DnD and more.

    This current release supersedes and cancels any previous documents. 

    SVN repository : <http://svn.technologeek.org/cgi-bin/viewcvs.cgi/tiemu/trunk/help/?root=tiemu>.
    Revision : $Id: Manual_en.html 2341 2007-01-31 17:52:33Z roms $


    LPG
    TiEmu is the 'Ti Emulator' for Windows, Linux, Mac OS-X and FreeBSD,
    created and maintained by the Linux Programmer Group (aka LPG).


    TiEmu : http://lpg.ticalc.org/prj_tiemu
    LPG : http://lpg.ticalc.org
    ticalc.org : http://www.ticalc.org

    Windows is a registered trademark of Microsoft Corporation.
    Macintosh is a registered trademark of Apple Computer, Incorporated.
    Linux is a registered trademark of Linus Torvalds.
    Texas Instruments and TI are trademarks of  Texas Instruments Incorporated.
    For more informations: <http://education.ti.com/educationportal/sites/US/nonProductSingle/global_trademarks.html>

    © 2005-2006 by the TiEmu team <tilps-users@lists.sf.net>. Released under FDL.

    Contributors :

    • Kevin for GDB/Insight integration
    • Lionel and Olivier for their advices

    Translators :

    • fire us a mail.

    tiemu-3.03-nogdb+dfsg/help/calc_infos.png000066400000000000000000000235431220314353500203330ustar00rootroot00000000000000‰PNG  IHDR ìèôĶsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<&áIDATx^í] |Õ¹Ÿ¤W¯åBA!ˆ– ŠáÞA^" ¯ EA¥–Úê­{½µ/­·íÕú®µõW}ßÖjCQ1˜ìn6 „Õ¾1FýCéùË©³V)ʈ?h» ކ…$D!á`²®IÑ¥5¼À.E4# SAj”e(‰‡˜>#„œé·Z+Àú‰2@`™‘ýaX€À«ž qdâ°ä0âɵèt‹ðAÛáeU­RP£ ˜é1¡,J@ û2÷þ×O6«çàòŽ¥pKŒÄ¾’×Nv_Šs+»/¬Øÿjž¼èí>þ#-\dýUãÂß(ƒ^ qcàÏEÜpÑqCç†ÎŠÕZKÄL Ó#Z’~Ñq |!¹„Ó²ÿµeîs[Ÿ ®|,÷u5w·:}§Ò½þ)÷ùÇmÕdÌMnÚè¾Þ7x¯ßòS#×Vü¼ Ž%ý‰V ¬–çjÄ8s¼¬îÛ[kî_Y½%ϳ>×}×tתI®;§¸VŒ©Z6¤rÑMš,^‘;¸,§ß#O9¸ÿE¯F ÂkßÖHqé ¤VÚïì;å„ã†%ökW‡™X‘f”’CpšĬÁZîýað‰WO?õÆéG~¼ç‡Á⧃Eß ÜõD`õV<(øv ÿ›ê¢GÔ¹«3vùÇß㱡iÀ²ªáËþ>Þ%¡ÅôäÄã÷žzþ‰†Ÿ?UÿÌ#ußS»¯¸ö¡¢š=wÕìZíݱ»£À{O~uÉ"Oñ\wÑ ×Êñy#LðÖ¬áZOHÜú77´ô –w”n0÷‰t›#ìe¸‘¤!BØíT"I̸QøDàé7O?ó›3¾xzç³Á’g‚›¾ô~G£ÇªÇË¿Èß§Îß«ÎÞ­NÞîUÜ4xEÕUSßÖ ©•`Q)nÌÒ¸Q³§°á…§_z¦þGžxrgÝ·KjÙTóP‘ww!УæþUÞí˽Ûò=›ç»×ÏvÝ9ùxþ¨ƒ3¿xÓUZO€ ÀkþFÅ   ,G`çXX7R‰8€µ,ù† ¬xüåÓ{žnù~pýþàšÿ ¾Xø°:ïAuÖ.ÿÌ]Z–Act‰o䯦!«ªzNÿf‘¡SD«$·Špûm °âÔsŸüÞžºom©Ý»¾æ5Þû ª·æWo^èÙ4Ï]4Ë]4S˲VޝZ6ºbÑȃ³‡¼tKO­'·Ô„pÖᜠ¹aÂÚ®bc °ªù«;~ÜõœFŒµOWBõH`ÁCjîýêÔíþ‰[ý£7ûn-JøFlôemð _×8tµëêÙïÐÜ •DÌêY%­Ü¨Þ<ÿÄ“;NìßÄ|øGÐS]’_½i»(×µfªkÅĪ¥£«òo…íÍ¿{¹2/«|Áðç }yôÕÜøê;Z(q£L p!ÛÏ©ôÃ#P[’©%¥3Ìs+1˜GXÃãîPÄXýXp)„‹@ŒiÛÕ %@ ÿÈM¾á|ÃÖù†®ó[ç¿q]ÓÐ;Ýan„ºÄ(‰È VI+7`ý]·¯¸î[wCÄЕ„ˆ1͵b£rÑH}{åüaåóoü8WÄðZ¸¡dBè0¤×6¸‘ïUˆ„.R‘swï¹W2£zh&oéŒY ýb†LåÔ~X]1 ¿,x4°xo`înuæuò=þì-þ[Š}_Ûà¿aðZÿuwù‡ù‡®k²ÚÕgö»tÜ •D䫤•î©°ºÐR©Ý…ÞíºתɮåÙUKni#Æœë*穘7ôãÜ!/ßÖGëÉ­G4"\€Ê©hn‰­s#}9Üæ«Ñéa‰húÉŽá\À]ý¸–M-ÝkŒÀœ]ê´ûÔ‰Ûü£·øGû†mð^ç¸Öí]þ̵þ닚®¿ÓÕ{Ë ] è”(½¬’Yáõpûs¥®JÁç¶¥ÕÅ u2Àꢹ+g][™›Y1÷úOf_ÿÊm½Ãܸùˆ7à"18þ|¯Õœ*ÄZEJ(zPܨ 9í3¬jW¨Ÿd¯p i‰’hÀ$Ž-ñÁe(¸µüQmý +9»Õi;ýïóÞæYâºÙÝFÿ€õê5ëÔk‹ü™ëš2W{zÍz6Z l—(½¬ˆ¹Ú5¤ªåcá2”v1êÞå°Òðl^àÞ0‡‰B®y×¹nP5ûšªÜkßžyhfæ«£zµqƒ„¸ý§­ÅaUÑdªKKFCuW6¸ÑFÖõLIWµ¤~†Õ†êºèœŠÿN7  ׄ‘ʰø²10A£Š}óR?¢>çÃ*¸q¿:q‡:f»ä6ÿÐuÐfõÚMjß j¿õjÿõÍýW{z̸€´Ð)Q{Y%óêÈ¢¥*Tõ¦yÞ’Å^¸0µe±§x¾vpí4îÅCÝ ¹ç^ëÎíëÎíW9§ÿáý_½¹‡Æì2eôg p*ãÛr#Th™+¡ÔQ“%õ mq#Šï´’ðš$¤%Ñ€™±Á7ëÿ½ꢯòöàŠSîƒêôÔI»Ô±;Õ‘÷©ÃîUm ôßè³Yí³Ií³Þ×g•çŠéïkÙj3´ÆJ`/«Dã†æp+Žp¯›U}÷Âê-‹¼wçÁe+ÏÆ\&nTç ªžßß3§'·OÕì>‡§öyí¦+´žŒ©TÆThÜpX‹7úA¡U™7`¹f«T­êA–6µ™µßµNâ¡D‰<™ ºá.Ü»˜³Gƒ^°WfýP`úuò5{·zó.uØÎÀ íþÛ½·zz®÷õXQýïÓ~â†Ö+F ü”(½¬’¼Fe^l?~û pï³a°¢zóOñ<Õ…Ùäûy£waïÜÞÕ¹=]3{~:©ÇYÿ®õd¢W™p\£Çe7®únˆð[ãF­¶lX6nó÷ÅÓW©DH•¼Î(¿Ãáz&F4Ç_„'´G!Ó¹º9{«oúýþ9ªŒ“&?‡í Ú¼f{ ×Ö@ÍŒu¾Ë–{»O ÅN^Éœ‡ÔYªÓö¨“ö¨c÷¨·ì èJ 1«¸‘×Û+feVd»×N÷lœãÙ4·E“ª ÇzW·]§ª™ÛË;»‡kZÆ‘ñ—½>¬{˜@ˆmÜ€¢q£¢’ö¨Gˆ–,†J@ÒÖh¢¬<Ý7¢øN”µÁF"záO½~‰)0 }—7Ã…Z¨/œqØ32 ö@ sg°ïöàl ^¾)pÉ]¾¯äWw™Š­SÉ(™¹;0}·š³Gø :fz3p£U Å*à“çƒíå9}+—ÜâZ=ɽv†ÞOQNõÚ‰ÕkÆxWß\[0Lß^3órÏ”K>ó•×oè¢õdÚ)„Z:Ä ÂYPX®qCwö:=U†غ•þÙiýyxä D)<Ò7Ö´ñhc´]ߥ7€pAo$ë FCÄŸ„«(:Êʳ±˜µžùÍ7ùFoñMÚ.æÆ]Á;ƒWo^µ5xéÆàÅwú.ZTÝi|(n„zeF Í7VɲÓJ~|1¡çñy7ÂåZ ‡ÿ¿†-žÂɞ‰ž5ÙÕ«oõ®Q³lHmþ@Øøís5Ó/uO¸øÓ[.zíºNan=€·Öj•#­9U¥2 ®ühêÜл1†¤kÏ(‚Iˆk6ÿ]?„>Þ(ÔÌœˆÿ©…_â¹°“+5g®ÖŠAnÛâËÞæÏÞ¦Ž¹ÇÛ½þQÛý#îS‡ÞÈÜèwo WIàòâàWŠ­ôuZàIË]§jõ§Q)‚-ӜﱱWBZu|aVÕÒÛ\ٮٮ‚1î‚ÛÜ£<ËGT/ê]œY³°$T4¼S¾âʾèðM^”¦õdvs8t7 ŠJãÆWKµ â– z” ƒü3а=üTtq „ÚbÇA àÒ¹'û,=5øÎ†¯5Ü´¡q䯯¬MY›šnÜÜ4äî¦Ì»›ûmnîµÉ—±ÞÙTוÍîhPr+•ÑZ.*J%zð92êÒÏ'÷96{ðó¿VžwSÅâ‘yY‹²Ž/º±2oˆkA¦kn?÷ì^îéîÉ—¸Æu­¸µÓ¿¾¦¼8 TZÜ ôn„sª ¹Aè‘^tÞJB^¾¯GÐ$ôþZàÍ mo  è¡ó$©¿t·=RxòapAyÆíå½óÊûßQ™¹ìø å—PPÙ¿ ²oAeïîîŒåžK—º/^âé¼Ð“6§RÉù¸ßœßê܈R‰|Vž%Íüá­Žë]:¥é´ÌÒiƒJ§<0mÀ¿¦ö?˜Ó÷PNïC“zžq(ûÒ÷]|èæÎÿžöÇ!Ê/ÇöÓ¸1Ïw7´k¸7È€dy­Ñcýi–!%ç%Œˆae<0ØÿfÓ£ƒýé’ño]>åÝ+r~weÎÛWLy;#猩ï^–óÞ%9¿ïžó‡nSþ‹ïôñ¿Oÿ'eÌ{ýæ¼]zä$K†•’_5n죩þð_Oüó.yiøå¿Ìºâ…W¾0üŠ—Fd¼<"㕬Ë^~É7vsX·×‡ty}pú›×¥½2Pyil¿ÚOJ÷¿Ö`Ä X‹‡ÖäþÝÒ¦ô•šhÞb‘g‰¤oø’2NsRCÏÎSOa÷µ§÷ÿ*|ÝŸ^.Ë¿ƒ‡£àXˆ}%o4v_í×.v-;Ý}…ÿëÚ•\Kÿ´ž¼ÖÐ}^ãë È©ZãFˆP”u¸áÇÿC¯ë ½À§í5*ô[vŠ´ SŒÀ õ+¹1½nGå1¹¶‹ëE&t†¯}ǽ؜®J…ßpmJ»=p«Ê’€&ð%ϧEòI¾è2¯A™} î†÷ê XcÐBÖmÜÐ.ãVh¯!™\š6å<;®=>ÞúÂx‘ íÁ@ öèzH´÷ü´~'_BU_(‰ˆÀT¸‹•† …·Â±L.Óž¶R"㎆’í d |Bõ’2*øŸ@17&—jÜÑCgá #¤&z{êÀ¶½z³äüh¤Œ„gŠLS’K '…ÔŒ„¯Sõ*í:òhõõÝòލ9‚‚td”éʘ£Jÿ”ŒÇ¹hE¹á#€Ü@Ë@˜- VÀ¸^À¸aÅgtäë38v‚7.Æk¸H!D@çÜ1¼úÙð5\äzMD -nDà xœ¡DR-§²Ä úÑ?-'»±¦Š#ú™§õQðÛšr]³P!¿WÞÞ©^¡9Ö¸Á›¦#ÆÚ.“·±Ð'’Ÿ”ì•·o¬:æIã=¯Ll¡‘N<ã&¡÷ê‡ó‡½¯dRùž —¨%&KŸ]×Ìež ᤖ ¼È„"!ËnYŸÉk #Ú±ÜóÉ-Rn…tòئå¬rC8:zDÍW ž{B¬0n$C,sƒ7J3æÎ‡>К>‹ý6ìÉdÜ`¼{Dn Ì/Ì„aÇŒò±›ŽÐ ¸aÉ­ò¦#ÌdèÚ˜aKÄÉ‹'7„sªˆsÔ¾ œácñ½¸QÞq s'“ÜXdÄdF.$IOf£‰‘fóÊÛ×b:ÎÙ­qCOÇV¥&³Æj²|b.zÐ`”p;ÄŒæRH0f€ü0…©  F¹Ü„‡tCLÀ‘ZãF»„ÄäV¡"Æu¸ô}ñ®YGðyñù!T›\„ãFßÖZCäFrÍö6v 70£@¤9ÆØ¹Ôœ¤`Ü@¯‰`ÜÀÇÙ+D7ä÷ž“4˜¦v·mL}›5µÁ¡Gg™FwŽ™RˆDF0bIKŒ:ÏÜãçïú ·èÀJªè#Ú1_” ¯m.ÑÖ &øGÐæ±½ÀÊ/¬®àlŸ3£a4ï&˜a©ºÚÏ©è$Š’¥9æÆ$¡»=WÄ(”Ï¢‘+²z˜nUB™½˹Áô_8vS¦ë1š!>F>ÈöÄÞ4i˜“w)ظ¿!„FbÄŒeÐó­ãed²ô¹ŒÜ›¥è‘BhÔO¡÷59Oæ¹adUr¯IúÆØ‡%s1¢ ?×–¶‘§ˆhBFÁÊE#FZg¸ÁX¹ÐÉ »b„ãBäÛ%˜nð'’ŒÅŒ=Mï"†F¯9"÷xK¥ÞO'7$È›™8¡±q£›éZC¡ëHz35à ¡Y[â‰ÜJ¢œQH1u‰Ñ,dšd£Ü#ؘ2£X·¸!‡Ú("I&Îãཆυßk(ç†Ö<®= µFÜÐÓ‰ ™§ï˜I7h Fmèê×§„×C÷œÞË+ ‘Ñós!¤¯“AÏҔɵ™á†¹Æ~üDÐN™yÞr´¸ažæ-/Z §Äh\–§8aÈ Ãj"3ænÆýt3JÉ1"7°Ò0®5Äœ*%Ý*JظÏýE (ž2„®áSú¶^§Bn¤ÌÔâ@¢D¹Ù6" y¶ ㆕G^¢ôFxx² mÜ0s¡3,b­_Ø·v9i4(á±±@À27ŒîkݾµÑiGn{ËÏ+¿/Áß*69 þ^µÑ=]~»`é6H`““b»™5ngÔö¹ÍÜcŽ©)·}RžÕ&¹XÛtu|v:ŽB–ë©hôI¥'wŸôQòºhI7ªj`zbf yƒcF¡CrFæ§Ü ¬™ï§Ð2fÆ…mA€n„w~š±KÞ}JÒz¹¯5³—6\Kd†f: Žg²„?r2ÓªôÊŽ#JÚf“ù;±6jÔ-Yä¦É/`Ì´·4µ&¹ÁX¤„ùr(˜EäÆ K³éxcËqƒö‘º“f¦Ù¶õ+mUfìÏ$L&¹a”Fò1*bߌ¢ßa&àð]59Flfg¸Á¤}¹a>)·Ê 9uª­YhñÂ<¹aÛ¦:Ð7äù43á…It=z@nZ•ñy—ÐÎxǯwUØƬù¾Nˆ}¸7ä©&ízøS8e ¨‡µn½áo(#‚ˆ@A€^¹õEˆ€†rí0÷õnY7ÐVŒX~‹#€9úHDs*ô‘ˆ€¸÷áŽÀõúQD@_oÀsúßPv‚æïLw+å8ÌdD µFÝ 7"Þš•s£Ý™#,ian~ówß…÷ã%·Ì™[Ýí>êd´Îöí³en˜™ã¤ã†¼FP^vE×­n±ö5<»kÜ0šf#÷É;cÆû Ò¤ ·=£Â¸Á”HEÏ£š+ÛÝÆ㌀3Ü–„HB»1ïžõÚ;Û`ñç¢Ý?£ß|Ç0nØž‘<å†Õgbu“â«MÍpC·B½±<’8•Ÿ¹aO$ܯ7¾%àôc—$XûÛ4ý"mFrÃñ)42wÛMB§øì8¨PŽ€5n“£ÔÜ$7„ mjBw½Á™YuÈ»Á÷!¢ï@sL",sƒ˜2ŸKð9Ý’A„46rÒŒr¡ǹ!ÝOºçBn;ŸD]m›næïÄš—‚S 2½Ñ;Õ1ÔÓÁ°7œ… ¹á,ž¨Í)ÚŸNõ Î"€µ†XW‡˜«QïêD­¡³ôEmˆ@» €q½&"€qÃÊs-íâ¨ð¤ …Æ ôšˆÆ Œˆ€¬]Õ×YD ˆ‰s_¿{MwÞÌùˆƒÅÉŽ@øï‹ëCÙ|nâºÕ9ˆ¾’Êê±}2"à7øÚ*B·?3uV|-­!¦°ÊëÉÞ(£eLûÊc‡€5nè†B›¾Þ9Ý’„{ùc%[âà aè㙀܈ý%²f¸Áx}ƒ̘Z»ŸQN(ìŒ0²%ò¼bߢGÀn00ªÜ¶7¢›Dƒd±d~5Ó¢òvGÀ27$ù7Ÿóé–ðp#W#tä©”„É{ù!FH¦¶Zž‘ßkȘˆp-NP3Ú%?D?6FÐÓ ’щ´¡¹ÄˆÑt$¬Z;ÜHØÁ`Ç@n`Å"`\32®L¡îýEΩ¤&ªBŒè5ŒVêÌÖ™aÇâ†Æ ôšˆÆ Œˆ€0n ×D0nXñqKjñD ‹€µ¸!)¹“ßHföòpÄù®3c^84a·…Õ“ŒÂ„oì˜y,sƒ)‘2ªªHäš ¡q›§+_f"/O4?Ø2¡p†FæBWò‘öµzK#nÄÉ(Ѥ{H«’Ä1þäF”³˜‡·7ãþÚœƒÙMiI–ÅÌŸhIRÍÄœuì•,sC˜XKÒ ~éŸtñ‘¶9)¡w@<,ð='[bÖÌL!¶‰–¹ÁcÁŒmqƒaˆ°™ã|0cÁf¸!áCìú# @µFØämÓ!ó~Z’hÉ9fi‚yóå¿$H‚$ÃK½ÂƉ†€}nèv`|~¯§+tºÅ§pÑ;faª&<¿´F \o$šY;ÒkÜp䔨H X1`ÍÖŒ VÀ¸^À¸aÅg$EBŒŒ)7Ðk"70n VÀ¸^À¸aÅgÄ4‘EåI€µ¸!¹lt_™.a’ßÒŽþ†·UÄ™Âæ.8?"ýÎ=s"aɉðp«=Äö툀enж.ÿ.4µv*oÐ’Ga=•{±Â*q¦ÕÁž8À £Ò=²ÿ¤{O;W½%_jÅÓ,Jè^•H1Ì—„5F›Pa”ÆÃã@{rƒ±6áOKþÛ$|fܼ¥4‰/IÄêC“s‘ÈÍ,sC¸®æßräsw#8ng´B‰ËgÎ+츄3‘MûÆšñôFÅü»¢% :“)Ñy…ð(Út"f81š6{ÃaR&&oÔق܈ѬÅMm(nS®~NÉxLQz•vË’½GÝÈwšÌ|ŒRvɚĤf{x™á†½6’ c¯«xTü°Ï ~ÅqÅ̯(èCt†0i›™,ÎpŒóý—wXŒFa¯‡xT;"`íØQ<5"gX1HjFL¯7âL\<"ÐŽ`Ü@¯‰`ÜÀZCDÀ ZÜÈÆ¿…i²vŒòxêx"€ÜÀŒ0Ω0nÄÓá¹’Œè5'↤ìOx÷š¿ñLû £’Xûy­!}·Ûè¾8_¡ÈT Äz¨?°q£«£õT Ë Y!Km”ÀÄaÂðqCÀnð†Å×9ZÝþøâª`ܰŠ|rµ·Ì >çTtî!7&#Fél„ádDäCˆ¦XÉeØ[›Ü`²m>ÿáÓq3 ºP’e@Äi6à áÚC’õ DZ'Ø ‘°Ï žÄÝ —FžUrˆ0}2“ÑE„[È Z³Q²ÇœsªˆP'uk܈éPÑÔb /*·Š@ˆðüƳáçÅå÷7¬j·Ô¹a .lkˆ±*êG,!€ÜÀj"D@RO•9•%NccD Ö`Ü@¯‰`ÜÀ‡û+„ãF߸Në‰úKÄ•N}X!6Fì!`QÞ‚HnÝöÞѧ‹S˜»øöÇ£’äÆ=‡L_ù"¯…I–ÉÆ~ZBÀn xK¶ðe‚F¾™o±dËÌàíÅ aT1s:l“¤Xæ]hTÐJ[°Äó$aìO®‡qðæ'€Ó šF4.l™¼Xæ=Ôˆ‘A’ŸM¶ZþXf¯mÐVM|—¢\_Ùî!˜´þM3s×pMf#FÙ¹‘ñ1¹“Ίeùö¸ÁÇD˜?ìCìhnƒ‰¥°$3ƒ”$ÈYmF9¶Ià1ký¿ às!‰ šÑ岨7œÊèRÆtR~ Ö¸‘òpà6Ïþ;±æÖ"ÐqÀ¸U¨ˆ€ôoÓômýÊíøLlÇqH8Ò¤@ ü7ÍI1[ØÉx"€ÜÀŒÀœÊÊs-ñôOx®ÄD BÜxëÕ}(ˆ@‡B ¥¥…p527 )þC:bnt“þmšÄŒ}Ø+D „ã†þ^CäF,PFɈr¯Ò ÒëT7’ѱaŸcŠÆ ôšˆÆ ¼¿aŒ@Mõ!Wù?û ¢ìïñ—²ÃŒ›è£ƒÁV~ñ5Œ]ظÑ5ëHõõÝòŽÅ4Z¡òDCLÄUþÑ®ý?½iÙžŒœ’8KŸ™[â#ú¸®È)¸`׆}?ðT–z] ¹‘]¦PõTÈŽ˜c€b<úãW¶>ùBæâ¯+c·¥¶ôÈݽæÏíûÉk»žú™,n 7͋ǿ?ÀËÜúäÿæ=ðÓß—Kù;}‡Ê½0Rp×-yødíQŒ1 ˜¤$ß—OÙ ãý–ÁÓ¿çÏŸOùÏ÷ÿù9Œ÷ßrî?u²¹Ü0Dâ¤àG;w$ôïË–/¿<£úš`¼C k¨¯@n 7dÜ€¸¶ræÌˆgΜNi Âêka¼7>‰Ü@bÈ€¸A¸ ‚A5µ%ð77ÖŸ¬õÀxGÝõ]³ÜÀz*“ zŠ5Ó¹¡ª>ð©ªÚœÂâ÷7Á뼕æ¸ÑúžäFнÉáPÜ ¬hе„(8‹Ñvûã÷766ÔÖy#70›ŠŒÅ ͧ‚õD#´#md;¿7ú³Gì¹Ï×g©­®@nD¶ “Î5…›éÜ †Ö€åé‡ÓßiV·GÓæØææS§ê½5ä–Q™@€æ†‘Õš·N!7ô—¦=¤Þ’~¥ªÞ€l¶7ß¾%pÔ"70h˜B@ç±$°ž(Œ˜ ¯‡ÞÅ7“lj³ÑϦ¦úú“Õ^w¹µœªëˆÏ°Ö0…s'£¡QÜ ]¥%´*:2軄ÍÈ^aû({Eoj: ʽî/"sc\™rµþ^C䆉 $õÈCsÃ烠á07’˜áÓG«s£þ¤¹a*£H=[·:"ÄjÁ³F/´þ;ÙB’3šÙeßOÀYª]Ç0n ="# srqÆÆ“Ñ Ø­„Α`;Ù«·aö’]äQÂh‹¦{ 'NÔ¹=UÈ™#ÙŽÄsƒgMaih¨ƒ1zªÊ0nDöšV-)õÚëqƒP¬'aVÒäg4 =öÔ©šºÚ*wåçÈ äFdtnŸÚÐP›Â7þ`Œ®ÊÏ€·®Ý/«5¤¯Sa=UêÅ3#Ò¹q¢ÎSW猾§žÀÐj¼Ç]•G+Ž}Ü¿ñ¿êKŸßÀZÃŽ½,n\6e+ TiEmu User's Manual

    1. Introduction

    1.1 What's TiEmu

    TiEmu is a program allowing a computer to emulate a hand-held:  TI89, TI89 Titanium, TI92, TI92+, V200PLT.
    At the time being, it works on Linux and Windows platforms.

    It uses GTK+ (The GiMP ToolKit) for the GUI and for the display.

    All link cables supported by the TiLP 2 framework are available:
    - home-made parallel,
    - home-made serial,
    - Black TI Graph Link,
    - Gray TI Graph Link,
    - SilverLink.

    TiEmu was based on XTiger, the original TI emulator for Linux which uses the m68k emulation core from UAE (The Ultimate Amiga Emulator).
    It also uses the TiLP framework (ti* libraries). See the AUTHORS file for more details.

    TiEmu is provided with a default and free OS : PedroM.

    As of TiEmu 3, it is provided as 2 versions: TiEmu with gdb (+gdb for short) and TiEmu without gdb (-gdb for short). Both of them are the same except for the debugger.

    1.2 Features and limitations

    Features:
    • support TI89, TI89 Titanium, TI92, TI92+ and V200PLT hand-helds
    • nice assembly-level debugger (disassembly, memory, breakpoints, traps, vectors, stack contents, trace, ...)
    • assembly-level debugger supports: run, step in, step over, step out, run to cursor
    • nice source-level debugger (source, GDB console, stack backtrace, watches, ...) based on Insight
    • ability to load/save the emulator state
    • file linkport emulation (direct loading of files)
    • works with 1/2/4 MB ROMs, 128 or 256 KB RAM
    • emulate HW1, HW2, and HW3
    • can run from ROM dumps or FLASH upgrades
    • automatic ROM version/model detection
    • contrast emulated (try [Alt] + [+] & [-])
    • pretty fast emulation code
    • sreenshot of LCD and/or calculator in several images format (JPG/PNG/ICO)
    • TI keyboard useable directly from PC kesyboard or with the mouse on the skin
    • archive memory support as well as ghost spaces
    • full emulation of HW1/2/3 protection (stealth I/O)
    • full emulation of HW2 & HW3 clock
    • no buggy MC68000 SR & nbcd (TiEmu can't be detected as VTI: you have true emulation)
    • 4-level and 7/8-level grayscale support (thx Kevin !) for both HW1 and HW2/3
    • the letter keys are aliased to produce their respective letters.  No need to press the Alpha key, just type (TI89).
    • full-featured graphical debugger
    • keyboard mapping and menu shortcuts are fully VTI-compatible
    • keyboard mapping can be customized
    Limitations:
    • linkport emulation has not been tested with USB cable yet
    • no DirectLink support
    • no debugger while sending/receiving a file to/from the virtual calculator

    1.3 System requirements

    In order to run TiEmu, your computer must meet one of the following sets of requirements, depending on your operating system:

    Linux:

    • any personal computer (a 386-compatible PC (Pentium or higher strongly recommended) or a Macintosh (PPC G4 or higher strongly recommended)) or workstation (Sparc, Alpha, etc.) with any Linux distribution installed
    • 64 MB of RAM (most part is used by GTK and GDB/Insight)
    • an X Window System (X.Org X11 is the most common)
    • GTK+ 2.6 libraries

    Windows:

    • a Pentium PC @450MHz or better with Microsoft Windows 95/98/Me or NT4/2000/XP
    • 64 MB of RAM (most part is used by GTK and GDB/Insight)
    • GTK+ 2.6 libraries like 2.6.8 (it is recommended to use an NT-based version of Windows: NT4, 2000 or XP)

    Mac OS-X:

    • to test...

    FreeBSD:

    • same requirements as Linux.

    All systems must have an available port that will support your cable (see section 3 below).

    1.4 Installation

    Linux:

    • install the TiLP 2 framework
    • install TiEmu either by compiling sources, either by installing a package from your favorite distro

    Windows:

    • execute the InnoSetup or NSIS installer.

    1.5 Configuration / Setting-up (Linux)

    A burning issue with TiLP and Linux is good set-up of device access. Linux is secure because it heavily relies on permissions.
    You should always run TiLP as root for the first run. By this way, you will be almost sure to run TiLP with success.

    If you want to run TiLP as a simple user, you must take care of permissions. This is explained below.

    For BlackLink or home-made serial cable, the node is '/dev/ttySx". You must have r/w permissions on this device. This can be done by:
    - giving up r/w permissions to other (chmod ugo+rw /dev/ttyS0) or, better,
    - adding your user to the group 'dialout' (edit /etc/group and your username after the ':').

    Example 1:
        crw-rw-rw-  1 root dialout 4, 64 2006-02-08 13:40 /dev/ttyS0
    Example 2:
        dialout:x:20:romain


    For parallel link cable, the node is '/dev/parportX' and the same rules apply.

    For SilverLink cable, things are more complicated...

    libusb uses a pseudo-filesystem known as 'usbdevfs` or 'usbfs` to access the USB devices connected to your machine. This filesystem must be mounted
    under /proc/bus/usb for libusb to work.

    It could be done using the following command:
            mount -t usbfs none /proc/bus/usb

    An alternative and more permanent method would be to add
            none /proc/bus/usb usbfs defaults 0 0
    to your /etc/fstab file. It will mount the usbfs for you automatically at boot time ; only root will be able to access the USB devices with this setup.

    Several mount options are available, that allow you to set the permissions on the files created under /proc/bus/usb so that non-root users can use libusb applications:
     - devuid=xxx, devgid=xxx, devmode=xxx respectively set the uid, the gid and the mode of the devices files, ie /proc/bus/usb/BBB/DDD
     - busuid=xxx, busgid=xxx, devmode=xxx respectively set the uid, the gid and the mode of the bus files, ie /proc/bus/usb/BBB
     - listuid=xxx, listgid=xxx, listmode=xxx respectively set the uid, the gid and the mode of /proc/bus/usb/devices

     -- Aurelien Jarno <aurel32@debian.org>, Sun, 21 Mar 2004 01:01:44 +0100

    tiemu-3.03-nogdb+dfsg/help/chapter02.html000066400000000000000000000056731220314353500202070ustar00rootroot00000000000000 TiEmu User's Manual

    2. TiEmu images

    Some vocabulary...

    To run this emulator you will need an 'TiEmu v2' image. An image is converted from :
    - a ROM dump,
    - a FLASH upgrade (not applicable to TI92).

    As ROM dumps are copyrighted by Texas Instruments Inc, they will never be distributed with the emulator. To get a ROM dump, you can use TiLP or any other ROM dumping program.

    If you can't get a ROM image (because you don't own the calculator or you want to test the emulator), you can download a FLASH upgrade from the TI web site (http://education.ti.com) or use PedroM (GPL'ed replacement OS shipped with TiEmu).

    Please note that images converted from a FLASH upgrade (fake image) have neither a boot block nor a certificate. They are not as complete as ROM dumps.

    [If you already have a ROM dump or an upgrade, place it in the 'images' directory. Make sure it has the right extension (.rom or .89u). It will be automatically converted and deleted.]

    A TiEmu image is made up of an header and the ROM dump or FLASH upgrade. The format is documented in the doc folder of the source archive.

    Please note that ROM contents is copyrighted by Texas Instruments. You are not allowed to copy and/or distribute any ROM image!
    For more informations, see the License Agreement provided with any FLASH OS upgrade.


    tiemu-3.03-nogdb+dfsg/help/chapter03.html000066400000000000000000000052401220314353500201760ustar00rootroot00000000000000 TiEmu User's Manual

    3. First run

    The first run appears in the following cases:
    - you run TiEmu for the first time,
    - the tiemu.ini file doesn't exist yet.

    At startup, TiEmu will scan the images folder to search for various file :
    - FLASH upgrades or ROM dumps: they will be automatically converted into an image and deleted,
    - TiEmu images: they will be listed.
    If images are found, this box let you choose the image you want to run :



    Else, you will get the wizard box :


    You have 4 choices:
    - use PedroM (GPL'ed replacement OS shipped with TiEmu),
    - download a FLASH OS upgrade (AMS) from the TI web site. You will enter the filename on the next step,
    - you already have a ROM dump and choose it on the next step,
    - get informations on how to get a ROM dump because TiEmu does not have a built-in ROM dumper. For instance, you can use TiLP to get one and re-run TiEmu later.

    Please note that redistribution of ROM dumps is illegal; they are copyrighted by TI.

    tiemu-3.03-nogdb+dfsg/help/chapter04.html000066400000000000000000000041701220314353500202000ustar00rootroot00000000000000 TiEmu User's Manual

    4. Overview

    When you launch it, TiEmu take some a while for initializing it. After that, you get this:



    The windows is made up of an image called skin that you can change it at any time. The skin contains an LCD area and some areas for key presses.
    A key can be pressed with the mouse (left button) by clicking onto the skin or by using the keyboard (see keyboard mapping topic). This is customizable.

    Else, the right button of your mouse lets you access a popup menu which contains all you need for configuring/using the emulator.

    You can resize the window by dragging it and TiEmu will maintain a constant aspect ratio. Take in mind that the larger the window is, the more CPU is used!


    tiemu-3.03-nogdb+dfsg/help/chapter05.html000066400000000000000000001025031220314353500202000ustar00rootroot00000000000000 TiEmu User's Manual

    5. Keyboard mapping

    5.1 Default mapping

    The best way to do keypresses is by using your PC keyboard. The layout has been designed for American English (QWERTY) keyboards. Given that some TI keys does not exist on a real keyboard, we need to bind them on some PC keys. This depends on the calculator model you emulate.

    Note that the keyboard mapping is the same as VTI, the well known TI emulator for Windows.

    TI92(+)/V200
    PC

    TI92+/V200
    PC
    APPS
    F9
    sin
    Insert
    THETA
    ;
    cos
    Home
    STO>
    TAB
    tan
    Page Up
    diamond
    CTRL
    CLEAR
    Delete
    2nd
    ALT
    ON
    Scroll Lock
    (
    [
    ENTER1
    ENTER / NumPad ENTER
    )
    ]
    ENTER2
    End [Linux]
    HAND/LOCK
    CAPS LOCK
    ^
    Page Down
    LN
    \



    TI89 (Titanium)
    PC

    TI89 (Titanium) PC
    CATALOG
    F6
    MODE
    `
    APPS
    F9
    |
    \
    STO>
    TAB
    EE
    Insert
    diamond
    CTRL
    CLEAR
    Delete
    2nd
    ALT
    ON
    Scroll Lock
    alpha
    CAPS LOCK
    ^
    Page Up
    HOME
    Home




    5.2 Custom mapping

    With TiEmu, you can define and use your own mapping. This is done thru a 'keyboard mapping file' or 'keymap' for short. Keymaps are located in the skins folder and have the .map extension. Default keymaps are ti89.map (TI89, TI89 Titanium) and ti92.map (TI92, TI92+, V200PLT).

    Those keymaps are text files with a straightforward syntax :
    Model: TI89t
    // English mapping (VTi-compatible)
    // Alphabetical
    PCKEY_A:TIKEY_EQUALS,TIKEY_ALPHA
    PCKEY_OEM_SCROLL:TIKEY_ON
    Model can be 'ti89', 'ti92', 'ti92+', 'v200' or 'ti89t'.
    Comments can be placed in the file:; they have to start with a '//' character.
    Next, there are some key pairs: "PCKEY_xxx:TIKEY_xxx,TIKEY_yyy". PCKEY_xxx is the input key, TIKEY_xxx, TIKEY_yyy are the output keys.

    If you want to write your own keymap, you may need to know which scancode to bind to. TiEmu can help you by displaying it if you set the 'kbd_dbg' variable in the tiemu.ini file to 'yes'. Windows users will have to set the 'console' variable to 'yes', too.

    List of TI keys:

    const KeyTuple tikeys[] = {
        { TIKEY_DOWN,       "TIKEY_DOWN" },
        { TIKEY_RIGHT,      "TIKEY_RIGHT" },
        { TIKEY_UP,         "TIKEY_UP" },
        { TIKEY_LEFT,       "TIKEY_LEFT" }, 
        { TIKEY_HAND,       "TIKEY_HAND" },
        { TIKEY_SHIFT,      "TIKEY_SHIFT" },
        { TIKEY_DIAMOND,    "TIKEY_DIAMOND" },
        { TIKEY_2ND,        "TIKEY_2ND" },
        { TIKEY_3,          "TIKEY_3" },
        { TIKEY_2,          "TIKEY_2" },
        { TIKEY_1,          "TIKEY_1" },
        { TIKEY_F8,         "TIKEY_F8" },
        { TIKEY_W,          "TIKEY_W" },
        { TIKEY_S,          "TIKEY_S" },
        { TIKEY_Z,          "TIKEY_Z" },
        { TIKEY_6,          "TIKEY_6" },
        { TIKEY_5,          "TIKEY_5" },
        { TIKEY_4,          "TIKEY_4" },
        { TIKEY_F3,         "TIKEY_F3" },
        { TIKEY_E,          "TIKEY_E" },
        { TIKEY_D,          "TIKEY_D" },
        { TIKEY_X,          "TIKEY_X" },
        { TIKEY_9,          "TIKEY_9" },
        { TIKEY_8,          "TIKEY_8" },
        { TIKEY_7,          "TIKEY_7" },
        { TIKEY_F7,         "TIKEY_F7" },
        { TIKEY_R,          "TIKEY_R" },
        { TIKEY_F,          "TIKEY_F" },
        { TIKEY_C,          "TIKEY_C" },
        { TIKEY_STORE,      "TIKEY_STORE" },
        { TIKEY_COMMA,      "TIKEY_COMMA" },
        { TIKEY_PARIGHT,    "TIKEY_PARIGHT" },
        { TIKEY_PALEFT,     "TIKEY_PALEFT" },
        { TIKEY_F2,         "TIKEY_F2" },
        { TIKEY_T,          "TIKEY_T" },
        { TIKEY_G,          "TIKEY_G"  },
        { TIKEY_V,          "TIKEY_V" },
        { TIKEY_SPACE,      "TIKEY_SPACE"},
        { TIKEY_TAN,        "TIKEY_TAN"},
        { TIKEY_COS,        "TIKEY_COS" },
        { TIKEY_SIN,        "TIKEY_SIN" },
        { TIKEY_F6,         "TIKEY_F6" },
        { TIKEY_Y,          "TIKEY_Y" },
        { TIKEY_H,          "TIKEY_H" },
        { TIKEY_B,          "TIKEY_B" },
        { TIKEY_DIVIDE,     "TIKEY_DIVIDE"},
        { TIKEY_P,          "TIKEY_P"},
        { TIKEY_ENTER2,     "TIKEY_ENTER2"},
        { TIKEY_LN,         "TIKEY_LN" },
        { TIKEY_F1,         "TIKEY_F1" },
        { TIKEY_U,          "TIKEY_U" },
        { TIKEY_J,          "TIKEY_J" },
        { TIKEY_N,          "TIKEY_N" },
        { TIKEY_POWER,      "TIKEY_POWER"},
        { TIKEY_MULTIPLY,   "TIKEY_MULTIPLY" },
        { TIKEY_APPS,       "TIKEY_APPS" },
        { TIKEY_CLEAR,      "TIKEY_CLEAR" },
        { TIKEY_F5,         "TIKEY_F5"  },
        { TIKEY_I,          "TIKEY_I" },
        { TIKEY_K,          "TIKEY_K" },
        { TIKEY_M,          "TIKEY_M" },
        { TIKEY_EQUALS,     "TIKEY_EQUALS"},
        { TIKEY_NU,         "TIKEY_NU"},
        { TIKEY_ESCAPE,     "TIKEY_ESCAPE"},
        { TIKEY_MODE,       "TIKEY_MODE"},
        { TIKEY_PLUS,       "TIKEY_PLUS"},
        { TIKEY_O,          "TIKEY_O" },
        { TIKEY_L,          "TIKEY_L" },
        { TIKEY_THETA,      "TIKEY_THETA" },
        { TIKEY_BACKSPACE,  "TIKEY_BACKSPACE" },
        { TIKEY_NEGATE,     "TIKEY_NEGATE"},
        { TIKEY_PERIOD,     "TIKEY_PERIOD" },
        { TIKEY_0,          "TIKEY_0" },
        { TIKEY_F4,         "TIKEY_F4" },
        { TIKEY_Q,          "TIKEY_Q" },
        { TIKEY_A,          "TIKEY_A" },
        { TIKEY_ENTER1,     "TIKEY_ENTER1"},
        { TIKEY_MINUS,      "TIKEY_MINUS"},
        { TIKEY_ON,         "TIKEY_ON"},
        { TIKEY_ALPHA,      "TIKEY_ALPHA" },
        { TIKEY_EE,         "TIKEY_EE"  },
        { TIKEY_CATALOG,    "TIKEY_CATALOG" },
        { TIKEY_HOME,       "TIKEY_HOME" },
        { TIKEY_PIPE,       "TIKEY_PIPE" },
        { TIKEY_VOID,       "TIKEY_VOID"},
        { -1, "" },
    };

    List of PC keys:

    const KeyTuple pckeys[] = {
        { PCKEY_LBUTTON, "PCKEY_LBUTTON" },
        { PCKEY_RBUTTON, "PCKEY_RBUTTON" },
        { PCKEY_CANCEL, "PCKEY_CANCEL" },
        { PCKEY_MBUTTON, "PCKEY_MBUTTON" },
        { PCKEY_BACK, "PCKEY_BACK" },
        { PCKEY_TAB, "PCKEY_TAB" },
        { PCKEY_CLEAR, "PCKEY_CLEAR" },
        { PCKEY_RETURN, "PCKEY_RETURN" },
        { PCKEY_SHIFT, "PCKEY_SHIFT" },
        { PCKEY_CONTROL, "PCKEY_CONTROL" },
        { PCKEY_MENU, "PCKEY_MENU" },
        { PCKEY_PAUSE, "PCKEY_PAUSE" },
        { PCKEY_CAPITAL, "PCKEY_CAPITAL" },
        { PCKEY_ESCAPE, "PCKEY_ESCAPE" },
        { PCKEY_SPACE, "PCKEY_SPACE" },
        { PCKEY_PRIOR, "PCKEY_PRIOR" },
        { PCKEY_NEXT, "PCKEY_NEXT" },
        { PCKEY_END, "PCKEY_END" },
        { PCKEY_HOME, "PCKEY_HOME" },
        { PCKEY_LEFT, "PCKEY_LEFT" },
        { PCKEY_UP, "PCKEY_UP" },
        { PCKEY_RIGHT, "PCKEY_RIGHT" },
        { PCKEY_DOWN, "PCKEY_DOWN" },
        { PCKEY_SELECT, "PCKEY_SELECT" },
        { PCKEY_PRINT, "PCKEY_PRINT" },
        { PCKEY_EXECUTE, "PCKEY_EXECUTE" },
        { PCKEY_SNAPSHOT, "PCKEY_SNAPSHOT" },
        { PCKEY_INSERT, "PCKEY_INSERT" },
        { PCKEY_DELETE, "PCKEY_DELETE" },
        { PCKEY_HELP, "PCKEY_HELP" },
        { PCKEY_0, "PCKEY_0" },
        { PCKEY_1, "PCKEY_1" },
        { PCKEY_2, "PCKEY_2" },
        { PCKEY_3, "PCKEY_3" },
        { PCKEY_4, "PCKEY_4" },
        { PCKEY_5, "PCKEY_5" },
        { PCKEY_6, "PCKEY_6" },
        { PCKEY_7, "PCKEY_7" },
        { PCKEY_8, "PCKEY_8" },
        { PCKEY_9, "PCKEY_9" },
        { PCKEY_A, "PCKEY_A" },
        { PCKEY_B, "PCKEY_B" },
        { PCKEY_C, "PCKEY_C" },
        { PCKEY_D, "PCKEY_D" },
        { PCKEY_E, "PCKEY_E" },
        { PCKEY_F, "PCKEY_F" },
        { PCKEY_G, "PCKEY_G" },
        { PCKEY_H, "PCKEY_H" },
        { PCKEY_I, "PCKEY_I" },
        { PCKEY_J, "PCKEY_J" },
        { PCKEY_K, "PCKEY_K" },
        { PCKEY_L, "PCKEY_L" },
        { PCKEY_M, "PCKEY_M" },
        { PCKEY_N, "PCKEY_N" },
        { PCKEY_O, "PCKEY_O" },
        { PCKEY_P, "PCKEY_P" },
        { PCKEY_Q, "PCKEY_Q" },
        { PCKEY_R, "PCKEY_R" },
        { PCKEY_S, "PCKEY_S" },
        { PCKEY_T, "PCKEY_T" },
        { PCKEY_U, "PCKEY_U" },
        { PCKEY_V, "PCKEY_V" },
        { PCKEY_W, "PCKEY_W" },
        { PCKEY_X, "PCKEY_X" },
        { PCKEY_Y, "PCKEY_Y" },
        { PCKEY_Z, "PCKEY_Z" },
        { PCKEY_STARTKEY, "PCKEY_STARTKEY" },
        { PCKEY_CONTEXTKEY, "PCKEY_CONTEXTKEY" },
        { PCKEY_NUMPAD0, "PCKEY_NUMPAD0" },
        { PCKEY_NUMPAD1, "PCKEY_NUMPAD1" },
        { PCKEY_NUMPAD2, "PCKEY_NUMPAD2" },
        { PCKEY_NUMPAD3, "PCKEY_NUMPAD3" },
        { PCKEY_NUMPAD4, "PCKEY_NUMPAD4" },
        { PCKEY_NUMPAD5, "PCKEY_NUMPAD5" },
        { PCKEY_NUMPAD6, "PCKEY_NUMPAD6" },
        { PCKEY_NUMPAD7, "PCKEY_NUMPAD7" },
        { PCKEY_NUMPAD8, "PCKEY_NUMPAD8" },
        { PCKEY_NUMPAD9, "PCKEY_NUMPAD9" },
        { PCKEY_MULTIPLY, "PCKEY_MULTIPLY" },
        { PCKEY_ADD, "PCKEY_ADD" },
        { PCKEY_SEPARATOR, "PCKEY_SEPARATOR" },
        { PCKEY_SUBTRACT, "PCKEY_SUBTRACT" },
        { PCKEY_DECIMAL, "PCKEY_DECIMAL" },
        { PCKEY_DIVIDE, "PCKEY_DIVIDE" },
        { PCKEY_F1, "PCKEY_F1" },
        { PCKEY_F2, "PCKEY_F2" },
        { PCKEY_F3, "PCKEY_F3" },
        { PCKEY_F4, "PCKEY_F4" },
        { PCKEY_F5, "PCKEY_F5" },
        { PCKEY_F6, "PCKEY_F6" },
        { PCKEY_F7, "PCKEY_F7" },
        { PCKEY_F8, "PCKEY_F8" },
        { PCKEY_F9, "PCKEY_F9" },
        { PCKEY_F10, "PCKEY_F10" },
        { PCKEY_F11, "PCKEY_F11" },
        { PCKEY_F12, "PCKEY_F12" },
        { PCKEY_F13, "PCKEY_F13" },
        { PCKEY_F14, "PCKEY_F14" },
        { PCKEY_F15, "PCKEY_F15" },
        { PCKEY_F16, "PCKEY_F16" },
        { PCKEY_F17, "PCKEY_F17" },
        { PCKEY_F18, "PCKEY_F18" },
        { PCKEY_F19, "PCKEY_F19" },
        { PCKEY_F20, "PCKEY_F20" },
        { PCKEY_F21, "PCKEY_F21" },
        { PCKEY_F22, "PCKEY_F22" },
        { PCKEY_F23, "PCKEY_F23" },
        { PCKEY_F24, "PCKEY_F24" },
        { PCKEY_NUMLOCK, "PCKEY_NUMLOCK" },
        { PCKEY_OEM_SCROLL, "PCKEY_OEM_SCROLL" },
        { PCKEY_OEM_1, "PCKEY_OEM_1" },
        { PCKEY_OEM_PLUS, "PCKEY_OEM_PLUS" },
        { PCKEY_OEM_COMMA, "PCKEY_OEM_COMMA" },
        { PCKEY_OEM_MINUS, "PCKEY_OEM_MINUS" },
        { PCKEY_OEM_PERIOD, "PCKEY_OEM_PERIOD" },
        { PCKEY_OEM_2, "PCKEY_OEM_2" },
        { PCKEY_OEM_3, "PCKEY_OEM_3" },
        { PCKEY_OEM_4, "PCKEY_OEM_4" },
        { PCKEY_OEM_5, "PCKEY_OEM_5" },
        { PCKEY_OEM_6, "PCKEY_OEM_6" },
        { PCKEY_OEM_7, "PCKEY_OEM_7" },
        { PCKEY_OEM_8, "PCKEY_OEM_8" },
        { PCKEY_ICO_F17, "PCKEY_ICO_F17" },
        { PCKEY_ICO_F18, "PCKEY_ICO_F18" },
        { PCKEY_OEM102, "PCKEY_OEM102" },
        { PCKEY_ICO_HELP, "PCKEY_ICO_HELP" },
        { PCKEY_ICO_00, "PCKEY_ICO_00" },
        { PCKEY_ICO_CLEAR, "PCKEY_ICO_CLEAR" },
        { PCKEY_OEM_RESET, "PCKEY_OEM_RESET" },
        { PCKEY_OEM_JUMP, "PCKEY_OEM_JUMP" },
        { PCKEY_OEM_PA1, "PCKEY_OEM_PA1" },
        { PCKEY_OEM_PA2, "PCKEY_OEM_PA2" },
        { PCKEY_OEM_PA3, "PCKEY_OEM_PA3" },
        { PCKEY_OEM_WSCTRL, "PCKEY_OEM_WSCTRL" },
        { PCKEY_OEM_CUSEL, "PCKEY_OEM_CUSEL" },
        { PCKEY_OEM_ATTN, "PCKEY_OEM_ATTN" },
        { PCKEY_OEM_FINNISH, "PCKEY_OEM_FINNISH" },
        { PCKEY_OEM_COPY, "PCKEY_OEM_COPY" },
        { PCKEY_OEM_AUTO, "PCKEY_OEM_AUTO" },
        { PCKEY_OEM_ENLW, "PCKEY_OEM_ENLW" },
        { PCKEY_OEM_BACKTAB, "PCKEY_OEM_BACKTAB" },
        { PCKEY_ATTN, "PCKEY_ATTN" },
        { PCKEY_CRSEL, "PCKEY_CRSEL" },
        { PCKEY_EXSEL, "PCKEY_EXSEL" },
        { PCKEY_EREOF, "PCKEY_EREOF" },
        { PCKEY_PLAY, "PCKEY_PLAY" },
        { PCKEY_ZOOM, "PCKEY_ZOOM" },
        { PCKEY_NONAME, "PCKEY_NONAME" },
        { PCKEY_PA1, "PCKEY_PA1" },
        { PCKEY_OEM_CLEAR, "PCKEY_OEM_CLEAR" },
        { -1, "" },
    };


    tiemu-3.03-nogdb+dfsg/help/chapter06.html000066400000000000000000000213601220314353500202020ustar00rootroot00000000000000 TiEmu User's Manual

    6. Popup menu

    By clicking the right button menu anywhere on the main window, you gain access to the functionnalities of the emulator. If you let your mouse cursor on the item during some while, a tooltip will appear.
    On iPAQ, you have to touch-point on the LCD region.

    The menu is organized as follow :


    6.1 Link

    The Send file to TiEmu item will let you choose a file to load into the emulator while being on the HOME screen. You can choose one or several files at a time. You can drag and drop them from anywhere to the  TiEmu main windows, too.

    The Debug file with TiEmu item will let you choose a file to debug using the emulator: First, the file (which should be an uncompressed TIGCC program compiled with debugging information) will be loaded into the emulator and a program entry breakpoint will be set on it. You then need to run the program, passing any arguments it requires. TiEmu will then intercept the launch, bypass any OS execution protections (so you need not worry about these), open the debugger and load the debugging information file (the .dbg file corresponding to your program, and looked up in the same folder as your program). It will also set a GDB breakpoint on the main function, so if you don't need to debug the TIGCC startup code, just click "Continue" in the Insight Source Window to get to the beginning of your main function. You can choose only one file at a time; any data files required by the program need to be sent separately using Send file to TiEmu.

    The Settings item opens a dialog box. This is a large topic which is covered elsewhere. See the corresponding section...

    The Quick send... item is a convenient feature when testing program being under development. It allows to specify a file to send whenever you press F10 or click the Send file to TiEmu item.
    When enabled, the dialog box displayed by Send file is completely by-passed.

    The Listen for files item lets you enable (checked) or disable (unchecked) the receiving of variables from TiEmu. You should uncheck it if your program accesses the linkport for sound.

    Emulate Sound enable sound emulation to speakers. Check it if your program accesses the linkport for sound.

    6.2 Configuration and State

    You can save or load a particular configuration. A configuration contains the current parameters of the emulator (emulator image to use, size of the window, link cable type, ...). It does not contain any information on the calculator state. The configuration is saved in the tiemu.ini file. This is a text file and its format is described in the command line section.

    The calculator state can be saved, loaded or reverted (automatically load the last previously saved state).
    This can be done at any time. The revert option is useful to reload the latest saved state.

    The state is saved in a file containing an image of the calculator content (UAE structures of the m68k engine, I/O ports, RAM, RTC, FLASH, LCD address, contrast, HW protection state, archive limit, ...) and of some environmental variables (all breakpoints).

    6.3 Debugger

    This is a large topic which is covered elsewhere. See the corresponding section...

    Reset calc: this completely resets the calculator by loading the RESET/SSP vectors and issuing a reset of the processor. The linkport is reset, too. Other devices (ASIC, RAM, FLASH, ...) are left un-touched.
    This is not like you removed batteries for a while.

    Upgrade calc: allows you to load a TI's OS FLASH upgrade into the calculator without needing to send it. If you save the calculator state, TiEmu will remind the upgrade and load it after image at startup.

    6.4 Options

    Set ROM version: lets you choose an existing image from a list. If you want to add an image, click the Import button to convert a ROM dump or a FLASH upgrade into an image.
    You can drag and drop a ROM dump or FLASH upgrade onto the TiEm main window. The file will be automatically imported and you will get the box below.
    Note: TiEmu scans the images folder whenever you run this box.



    Misc options:
    - restrict to actual speed: if checked, TiEmu will run the hand-held at its nominal speed. Else, it will run it at the maximum the CPU is capable of.
    - HW protection: if checked, the HW protection device is enabled and emulated. TiEmu needs to be restarted (or an image to be loaded) for changes to take effect.

    - normal view: display skin and/or lcd with a 1x ratio,
    - [Win32] large view: same with 2x ratio (note: this mode will use more CPU),
    - [Linux] large view: same with 2x ratio (note: the skin may not be resized to 2x with some WM, it will be resized to fit the screen),
    - full screen: display LCD only and make it fits the screen (currently disabled because it is excessively CPU intensive under Win32).

    Skin for current calc: none, default, other.
    The first option lets you remove the skin to just display the LCD. In this mode, you keep access to the right click menu but you have to use the keyboard for TI keys:



    The second option makes TiEmu fall back on the built-in skin.
    The third option lets you choose a skin of your own. You can drag and drop a skin file to the  TiEmu main windows, too.
    Note: the skin must be a TiEmu compatible skin (see the Skin section) else it will be rejected.

    6.5 Infos

    Misc: gives you access to this help and ManPage, ChangeLog, About.

    Info: enumerates current calculator information like this:



    6.6 Exiting

    Exit and save state: TiEmu will save both state and configuration before exiting.

    Exit without saving state: TiEmu will exit without saving state and configuration.


    tiemu-3.03-nogdb+dfsg/help/chapter07.html000066400000000000000000000305661220314353500202130ustar00rootroot00000000000000 TiEmu User's Manual

    7. Debugger

    Debugging mode is entered when a breakpoint is encountered or when the user launches the debugger by the popup menu or by pressing the F11 key. This will stop the emulation engine but the LCD is still refreshed.

    Note: debugger windows are preloaded at startup in order to display them quicker. The source code window may take a while to be displayed the first time: this is due to ROM call parsing.

    TiEmu shows two debuggers simultaneously: a built-in assembly-level debugger, and the GDB/Insight-derived source-level debugger (+gdb release). These two debuggers have been adapted to interoperate seamlessly.

    The assembly-level debugger is made-up of several frames:
    - source code
    - registers
    - memory
    - breakpoints
    - PC trace
    - stack
    - heap (handles)

    The source-level debugger is also made-up of several frames: These frames can be moved and/or resized (TiEmu saves/restores this with the configuration).
    Frames are automatically refreshed when a change occurs from another frame.

    Moreover, these frames can be controlled (maximize/minimize & show/hide) from the Windows menu of the source code window (considered as the main window).
    You can also change the transient mode. When enabled, all of the TiEmu windows are grouped together as there was a single window.

    7.1 Source code

    This frame is the main one:


    You can browse the source code with the arrow and PageUp/Down keys. The green bar shows the current PC location. The blue one is the selection. The red cross is a breakpoint.

    By right-clicking, you get the popup menu:
    - go to address: enter the address to go,
    - go to PC: jump to PC location,
    - set breakpoint (F2): place a breakpoint at the selection. The bkpt frame is updated,
    - set temporary breakpoint (F3): place a breakpoint at the selection. This bkpt will be automatically removed when encountered.
    - set PC to selection (F6): load PC with the address at the selection,
    - view memory (Ctrl+M): open a tab in the memory frame with the address at the selection.

    The combo box lets you choose a ROM call by using the arrow. You can type it, too. It has automatic completion. Once selected, the view is updated to begin on the ROM call's address.

    Debugging facilities provided are:
    - run (F5) / break (F11): start/stop emulation engine without closing frames,
    - step in/out/over (F7/F8/F9):
        step in equals to step by step
        step out runs PC until a RTS/RTR/RTD/RTE/STOP instruction is reached (go out of the sub-routine)
        step over runs PC until the instruction after the current one is reached (skips all code in a sub-routine for instance), except for branches.
        This works for JSR/BSR/FLINE/DBCC/TRAP,
    - run to cursor (F4): runs PC until the address under the cursor is reached.

    Miscellaneous shortcuts:
    - F1: set selection and PC to next line
    - 'd': copy source code window content to C:\disasm.txt (unofficial feature, for various purposes)
    - 'g': go to address (box)

    7.2 Registers


    This frame displays all of the registers of the MC68000 processor. Take a look at the m68k user's manual if needed.

    USP = User Stack Pointer (A7 in user mode, S=0).
    SSP = System Stack Pointer (A7 is supervisor mode, S=1).
    The active pointer is displayed in the stack frame.

    SR is displayed in 2 modes: hexadecimal and single flags.

    Each field is in-place editable.

    By right-clicking on the address/data registers content, you will open a tab in the memory view at the adress contained in the register. Useful for browsing pointers and/or arrays.


    7.3 Memory

    You can add/remove as many tabs as you want by clicking on +/-.
    Use the arrow keys or Page Up/Down keys to browse memory.
    The fifth button allow to refresh the current view.
    The last button (not shown) open a menu with a memory map of the calculator. By clicking an item, you automatically create a new tab at the given address. Very helpful!

    Each value can be edited in-place. Click the cell and you will be able to enter an hexadecimal string (like 12, 1234, 567890).

    By right-clicking, you will get the popup menu:
    - find / find next: opens a search dialog,
    - go to address: lets you enter a hexadecimal address to go to,
    - dis-assemble: updates the source frame at the selected address.

    F1 to F6 keys are equivalent to pressing the corresponding toolbar button.
    F7 and F8 allow you to move backward/forward into tabs.
    Note: The memory window may show aliases (ghosts) which does not really exist on the real calculator. For instance, RAM on the TI-89 Titanium exists at 0x00000-0x3ffff only but if you open a tab at 0x40000, you will see RAM content at 0x000000. So, be careful!

    About the search dialog:


    You can search for hexadecimal values or strings with or without case sensitivity (strings only).

    Click the right button to start a search.
    Click the middle button to find the next occurrence.

    The occurrence is highlighted in green in the memory frame.

    7.4 Breakpoints


    This frame lets you manage several kinds of breakpoints:
    - bit change (*)
    - code (added from the source frame)
    - exception (traps, auto-ints, ...)
    - data access or range (*)
    - program entry (the debugger is raised at the beginning of the program you have just launched).

    Each breakpoint can be added or removed and enabled or disabled (except for prgm entry bkpts). You can go to the breakpoint location, too (last toolbar button).

    (*) Warning: those breakpoints occur after instruction execution so the PC is pointing the instruction right after.

    7.5 PC trace

    This frame shows the 10 latest PC values. Double-clicking the row will update the source frame with the address in the row.

    7.6 Stack frame


    The 'A7 (stack) is' shows the current active stack pointer (user/supervisor).

    The frame displays the stack pointer (A7) and the frame pointer (A6) used on the TI for function call and data storage.

    Content is displayed as word values only. You can browse it by using the arrow or Page Up/Down keys.

    7.7 Heap


    This frame displays all the handles the calculator has. It shows:
    - handle number,
    - address in memory,
    - and size.

    Double click the row to open a tab in the memory frame at the address pointed by the handle.

    7.8 Logging

    At the time being, only link logging is implemented.

    7.8.1 Link

    You can:
    -  log data sent and/or received from/to link port,
    - increase/decrease size of buffer.

    To start logging, press Start button and close (Close button or cross).
    To stop logging, press Stop button and close (Close button or cross).

    The list contents is updated whenever you launch this box.

    Contents can be saved at any time in text format by pressing the Save button.

    7.9 Source-Level Debugger


    tiemu-3.03-nogdb+dfsg/help/chapter08.html000066400000000000000000000055451220314353500202130ustar00rootroot00000000000000 TiEmu User's Manual

    8. Screenshots

    TiEmu is able to do various screenshots in several formats. This part is slightly automated.

    8.1 Settings

    From the popup menu, select Screenshot > Options:




    TiEmu currently supports 6 image formats: JPG (jpeg), PNG, ICO (Windows Icon), BMP, EPS (Encapsulated PostScript) and PDF (Adobe Portable Document Format) on both platforms. Image can be saved as color or B&W. You can choose to save the whole window or just the LCD area.

    Unless changed with the drop-down button menu, screenshots are saved in the application folder (C:\Program Files\TiEmu).
    Filename is built by TiEmu with:
    - a pattern : the base name,
    - a counter which is incremented every time you trigger a snapshot (but saved if you save the whole configuration),
    - an extension depending on the image format.

    Starting with TiEmu 2.81b (20060804), you can take several (n) screenshots at once (burst capture) every (m-1) frames .
    The 'n' value is fixed by the shots button while the 'm' value is specified by the skips button.
    The example abolve will trigger 4 captures every 4 LCD frames.

    8.2 To use it

    From the popup menu, select Screenshot > Now ! or simply press F9 for doing a screenshot with the current options.


    tiemu-3.03-nogdb+dfsg/help/chapter09.html000066400000000000000000000420101220314353500202000ustar00rootroot00000000000000 TiEmu User's Manual

    9. Command line

    TiEmu can accept some arguments on the command line for specific purposes. The text below is an excerpt of the Linux 'manpage' but it is appplicable to Windows, too.
    Under Linux, manpage is accessible by typeing 'man tiemu' in the shell.
    Windows users will open the ManPage.txt file in C:\Program Files\TiEmu folder.

    TIEMU(1)                                                              TIEMU(1)



    NAME
           tiemu - a TI's hand-helds emulator (m68k-based)

    SYNOPSYS
           tiemu [-h] [-v] [--help] [--version] [--import] [-rom=] [-tib=] [-sav=]
           [image]

    DESCRIPTION
           The TiEmu program allows you to emulate a Texas Instruments  calculator
           such  as TI89, TI89 Titanium, TI92, TI92+ or V200PLT.  The emulator has
           also a virtual link capability which allows to connect  it  to  another
           program (such as TiLP for instance).

    OPTIONS
           The command line options override the default options (startup options)
           and the config file options even.  The TiEmu program accepts  the  fol-
           lowing options:

           -h, --help
                  Display a list of all command line options.

           -v, --version
                  Output the version info.

           --import=
                  Import ROM or TIB into repository and exit. Can be used for cre-
                  ating images (as an example).  This flag must be set before -rom
                  or -tib !

           -rom=  Convert and use the specified dump as image. Note that the image
                  is added to the image repository.

           -tib=  Convert and use the specified tib/upgrade as image. Idem.

           -sav=  Load the specified state file. Must be a valid state  image  and
                  target for emulated calculator.


    CONFIG FILE FORMAT
           This section describes the format of the .tiemu config file which is in
           the home directory of the user (Linux) or in the Program  Files  folder
           (Win32). A line preceded by the '#' symbol is a comment.  Each line has
           the following  format:  key=value.   The  config  file  must  have  the
           'RC_END'  string  at end.  Every line can be put in any order.  Take in
           mind that any comment added in the config  file  will  be  overwritten.
           Below is described each option and the possible values:

           calctype=  Defines the calculator type for link parameter. Valid values
           are: ti89, ti89t, ti92, ti92+, v200.  Note: don't need  to  touch  this
           setting, it's overridden by TiEmu. Kept for compatibility.

           linktype=  Define  the  link  cable  type.  Choose one of the following
           value: none, parallel, serial, TIGraphLink, virtual,  TiEmulator,  VTi,
           UsbGraphLink.

           port=  Define  a  link  port  to use. Can be: null, user, parallel port
           #1|2|3, serial port #1|2|3|4, virtual port #1|2, USB port #1.

           method= Define an I/O method to use. Possible  values  are:  automatic,
           asm, api, driver, null.

           adr_port=  places  the  I/O  address  of the I/O port to use. It can be
           0x3F8 for a serial port or 0x378 for a parallel port for instance.

           serial_device= places the character device name of the serial  port  to
           use with a Grey TIGL.

           timeout=  with  the  timeout  value to use in tenth of seconds. Default
           value: 20.

           delay= with the delay value  to  use  in  micro-seconds  for  home-made
           cables. Default value: 10

           background= Define whether TiEmu display the whole frame (keyboard+LCD)
           or just the LCD screen. Set to 0 if you do not want  to  use  the  key-
           board.

           skin_file=  Define  the  custom  skin  file to use. Must be a full path
           name.

           keys_file= Define the keymap to use. Must be a full path name.

           img_file= Define the TiEmu image to load at startup.  Must  be  a  full
           path name.

           tib_file= Define the FLASH upgrade (tib or .9xu/.89u) to load after the
           image. Must be a full path name.

           sav_file= Define the calculator state image to load at startup.

           cpu_rate= Give the number of instructions executed by  the  M68000  per
           30ms timeslice. Default value is -1 (50000 insts/30ms).

           hw_rate= Give the OS2/OSC3 oscillator rate. Default value is -1 (427 on
           hw1 and 732 on hw2; OSC2 is incremented every 6250 OSC1 cycles).

           lcd_rate= Define the frame rate of LCD refresh.  Default  value  is  -1
           (25ms => 40fps). Don't use a value smaller than 10ms.

           img_format=  Defines  the image format of the screenshots. Several for-
           mats are available: jpg, png and ico.

           img_type= You can do B/W (bw) or colored (color) screenshots.

           img_size= The size of the image that is to say you can shots  only  the
           LCD (lcd) or the entire window (skin).

           screen_file=  Defines  the  base  filename where the screenshot will be
           stored.

           screen_counter= This allows you to save the current screenshot counter.
           In   fact,   the   resulting   filename   is   computed   as   'screen-
           file[screen_counter].[img_format]. Example: 'screenshot001.png'.

           console= Available under Windows platform only. You can  hide  (no)  or
           show  (yes)  the  DOS console at startup or even display it only during
           boot (boot).

           kbd_dbg= Display key bindings in the console if  set  (yes).  Else,  do
           nothing (no).

           fs_type=  TiEmu supports several file selectors for better integration.
           The following options are supported:
           - native: native one (default): Win32 on Windows, KDE if built with KDE
           support and running under KDE, GTK+ 2.x else,
           - old: GTK 1.2 file selector,
           - new: GTK 2.x file selector (advanced capabilities and can show hidden
           files),
           - win32: deprecated (same as native),
           - kde: KDE file selector (only available if TiEmu  is  built  with  KDE
           support).

           bkpts_wnd=
           code_wnd=
           mem_wnd=
           regs_wnd=
           pclog_wnd=
           stack_wnd=
           heap_wnd= Set geometry hints for the different windows of the debugger.
           The format is (x,y,w,h,m,v) where x&y  are  coordinates,  w&h  are  the
           size,  m  is  set  if window is minimized and v is set if the window is
           open.

           Think to terminate your config script with the 'RC_END' word !!!


    COPYRIGHT
           Copyright (C) 2000-2001, Romain Lievin and Thomas Corvazier.  Copyright
           (C)  2001-2003,  Romain  Lievin Copyright (C) 2003, Julien Blache Copy-
           right (C) 2004, Romain Lievin Copyright (C)  2005-2006,  Romain  Lievin
           and Kevin Kofler

           Permission  to  use, copy, modify, and distribute this software and its
           documentation for any purpose and without fee is hereby  granted,  pro-
           vided  that  the  above  copyright notice appear in all copies and that
           both that copyright notice and this permission notice  appear  in  sup-
           porting documentation.

           This  program and its source code is distributed under the terms of the
           terms of the GNU General Public License as published by the Free  Soft-
           ware  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 MER-
           CHANTABILITY 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.


    SUGGESTIONS AND BUG REPORTS
           The   canonical place to find TiEmu and some miscellenaous informations
           is at <http://lpg.ticalc.org/prj_tiemu>.  You can also take a  look  at
           <http://lpg.ticalc.org>   and  <http://www.ticalc.org>  for  others  TI
           related programs for Linux.


    SEE ALSO
           tilp(1) for the use of a linking program. TiEmu shares the same  commu-
           nication box for link settings.


    SPECIAL THANKS
           - Jonas Minnberg (Sasq) for Tiger
           - UAE, the Universal Amiga Emulator
           -  Kevin  Kofler  <Kevin@tigcc.ticalc.org>  for  creating  rpm packages
           (Fedora): he is the official maintainer of this package.
           - Julien Blache <jb@jblache.org> for creating deb packages (Debian): he
           is the official maintainer of this package.


    AUTHOR
           Romain Lievin Kevin Kofler



                                   January 27, 2006                       TIEMU(1)


    tiemu-3.03-nogdb+dfsg/help/chapter10.html000066400000000000000000000045731220314353500202040ustar00rootroot00000000000000 TiEmu User's Manual

    10. Skins

    Bad news: TiEmu uses its own skins; they are not VTI-compatible.
    Why? Because the VTI skin format is somewhat limited and doesn't take care of some portability issues.

    Good news: You can re-use your VTI skins!

    Well, how can I use or develop TiEmu skins? Julien Blache has developed a multi-platform skin editor, called SkinEdit:


    SkinEdit has all of the basic functions of a skin editor and some add-ons:
    - import/export of VTI 2.1, VTI 2.5 and TiEmu 2.0 skin format (for all calcs: TI82..V200),
    - load any image format (not restricted to JPEG). This feature depends on the pixbuf loaders provided by the GTK+ libraries.

    Note: the TiEmu v2.0 skin format is documented. See the docs folder of the source archive.


    tiemu-3.03-nogdb+dfsg/help/chapter11.html000066400000000000000000000157201220314353500202010ustar00rootroot00000000000000 TiEmu User's Manual

    11. Link port

    The link port can be set-up with the Link options item:



    Note: no DirectLink support!

    11.1 Direct File loading

    When cable is set to internal, TiEmu uses its direct file loading/saving capability. That is to say, you can 'send' a file from disk to TiEmu and vice-versa (Send file to TiEmu item of popup menu).
    The port and calc settings are not used.

    The timeout value can be increased/decreased to adjust timeout of direct file loading which is not the timeout of real cables.

    Please note that the calculator must be on the HOME screen while using this feature. No need to go into the VAR-LINK menu and set the calculator in receive mode; anyways, it will not work!

    11.2 Virtual cables

    There are 2 virtual cables: VTi & TiEmu.

    To connect VTI and TiEmu:
    - run VTI; next, run TiEmu
    - choose the VTi cable, port #2
    - open the VTI menu, go to Enable Cable Link and be sure that Virtual Link is checked.

    To connect TiLP2 and TiEmu3:
    - run TiEmu; next, run TiLP
    - choose the TiEmu cable, port #1 in TiEmu
    - choose the TiEmu cable, port #2 in TiLP

    To connect TiEmu and TiEmu:
    - run 2 instances of TiEmu
    - choose the TiEmu cable on both, port #1 and port #2 respectively.

    Note : the VTI logger can not be used with TiEmu.

    11.3 Real cables

    At the time being, there are 4 link cables useable with TiEmu: GrayLink, BlackLink, ParallelLink and SilverLink (Win32/Linux only).
    A cable is plugged into a port. There are 3/4 ports depending on the cable type:


    BlackLink or GrayLink
    ParallelLink
    SilverLink

    Windows
    Linux
    Windows
    Linux
    Windows
    port #1 COM1
    /dev/ttyS0
    LPT1
    /dev/tipar0
    1st cable
    port #2 COM2
    /dev/ttyS1 LPT2
    /dev/tipar1 2nd cable
    port #3 COM3
    /dev/ttyS2 LPT3
    /dev/tipar2 3rd cable
    port #4 COM4
    /dev/ttyS3 N/A
    N/A
    4th cable

    Note: the TiLP 2 framework does not rely on Linux kernel modules any longer. But, you have to take care of permissions (user/group, rw) on the device node.


    tiemu-3.03-nogdb+dfsg/help/chapter20.html000066400000000000000000000074331220314353500202030ustar00rootroot00000000000000 TiEmu User's Manual

    20. Problems & Bugs

    There are several ways to get in touch if you encounter a problem with TiEmu or if you have questions, suggestions, bug reports, etc.

    If you have general questions or problems, please consider the users'
    mailing list first.
    If you want to discuss TiEmu, you can use the TiLP
    forum.
    If you want to contribute to the TiEmu project, there is a developer's
    mailing list.
    For bug reports, use the
    'Bug Tracking System' (BTS).

    20.1 Questions

    Please read all documentation carefully before sending a post. Most people do not take time enough to carefully read the documentation. If you are sure that your question is not answered in any of these docs, then post.

    The TiEmu team will not reply to questions which are already answered in those docs!

    20.2 Bugs

    Most of bug reports I receive do not contain enough information (because people do not read the documentation before mailing). I often have to ask for subsequent information which is not very efficient for me and takes more time for you.

    A bug report should always contain the following information:
    - platform type: Windows (which one: 98, NT4, ...), Linux (which distribution, which kernel, is devfs/udev running, etc.)
    - calculator type (TI89, HW1, HW2, ...)
    - cable type
    and port (COM1, LPT1, USB, etc.),
    - TiLP framework version and TiEmu version
    - [Linux]: TiEmu displays much information at startup. You have 2 ways for sending them to me. Either launch TiLP by 'tilp >& log' and send/post the log file, or send/post the '$HOME/tilp.console' file.
    - [Win32]: you will have to enable the console first. Open the 'tiemu.ini' file and change 'console=no' to 'console=yes'. Launch TiEmu and send/post the 'C:\console.log' file.

    If you have more information, you are welcome to send it! You can send screen captures, too, just don't exceed 100 Kbytes.


    tiemu-3.03-nogdb+dfsg/help/chapter21.html000066400000000000000000000033351220314353500202010ustar00rootroot00000000000000 TiEmu User's Manual

    21. Thanks

    The TiEmu team would like to thank some people :
    - Jonas Minnberg for making (X)Tiger from which we have developed TiEmu,
    - Rusty Wagner for the calculator skins,
    - Julien Blache for SkinEdit (a VTI 2.1, VTI 2.5, TiEmu v2 skin editor),
    - Lionel Debroux, Olivier Armand and Kevin Kofler who answered many questions because I'm (was) not a TI hardware expert.



    tiemu-3.03-nogdb+dfsg/help/chapter22.html000066400000000000000000000043221220314353500201770ustar00rootroot00000000000000 TiEmu User's Manual

    22. Copyright notes

    TiEmu is based on the Jonas Minnberg's emulator (XTiger). Jonas released its emulator under GPL licence.
    The m68k-emulation core is derived from UAE, the famous Amiga emulator, which is GPL software, too.

    TiEmu relies on the TiLP 2 framework (ticables2, tifiles2 and ticalcs2 libraries).

    For more informations about license, source code and homepage, see the LICENSES file provided with TiEmu.

    The following people have worked on TiEmu :
    *  Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin
     *  Copyright (c) 2001-2003, Romain Lievin
     *  Copyright (c) 2003, Julien Blache
     *  Copyright (c) 2004, Romain Liévin
     *  Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler.


    tiemu-3.03-nogdb+dfsg/help/dbg_bkpts.png000066400000000000000000000265441220314353500201760ustar00rootroot00000000000000‰PNG  IHDR_ÒbŽTdsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<,âIDATx^í] xEöïN]P‰ — 7" —Üá¾!\I€p„$\!Ü—"¨,²®¸‹«ëª»þWÔÕOåX]E¼E\e ‚œ $™œœ!3äÿzzR)ª»««{z&3™ÇW_è©yõêÕ¯ÞûÕëêc"¾ùî§k×®EFT¬^½úñãÇ^¯)IÒÍ_ªÀ_)2Bþ ÿ*W•«DJ#¥ë7àoDdäÍ7¥ë¿J*H$éW¯ t>à?>2ÂøOˆk›´ÿÀñ[„¯*ŸÃÊÒµëReOd^« U®(×I×åò‹'®+Ý”¤ŠáŠÒ/7¥«¹ksRúÞÕhÚ»7¾ü\½ïÇc»¾øþÝ-;#F€RyvQ•%7¢Vݬ÷¤\š®¿ÙòÙ›6ÞìðÂÍÏÉ%úÏréóÝ¢`á ÀA¿Ðy `ü䕨$•hU9–o-ãP ä+Ï».õ9(uøVêµ 2†k×®J{}ÛÂåO/T˜šÔPaÞå*Ë~QBŸ¾ 8âM¥ÈB)t%#ˆ@€`TŠÒ—r¬¹²œ+1K TÒ•…Ÿ%Ø¡TYxŠ4ñŠÔó`q±»¸Ø%µlÛSê÷½4&CŠ=1³Š4û¼R€)"8#^¾–Þˆ\rŠr I¥r TV^ü+¤Š$DÀó~ÅÂAP…o•TBO)i×*̼™Z9órD’SšV(Mòü\½5I$¥L9'ÿ…oãó¥‰r(q™Ò€CRôI—«HêÜc¸Ì#þ#M:]Zs¤”<…)€#”"3…N‘¿›H™yì B`ú¹H(ÉÉùpEš”#MÌ–K¼Ã[ ì•{V.cÎ@‰ˆ9) ‡rLrT.pÔÐõ©Î{.×Iêø¥ü5°Cì oQhÂC„#¼ ÅœB‰”’¾’y„æ$…„°è"'MÁ‚ø€?S"PIü—°Ä¿R:.€Û Ñû½¨8J­×<ì¥ß÷°õ ÇÊ}Ò¡0‚\)Fr¾”˜'ðxÅb…´° a€@¥IŽY/8ÎÿrÓä?hm•0±®ä…‚Jã=Á˜ŒJãÎÌz.Çqμ%NWê¹_N`KØ õÇR‹-vhö–;dѹaÂ)äÈ’„Ƙd†d5x@#@r<<ÐD@I}C¤Ìz>ï¤ãÆÒWŠ“6ºãëŠYãºÊÙÿaçÀGœ½—Ê¥çb¹tšW¥}ZQ«E¦^ì<ûÌÁÿB[e˜¾*}Ã125\;{²à™¥y&å,ŽÏN‹qÌš•Ü?kúÀ¬i½¡dNé %c|'¹Ä¶?Óêä Fb;_|ñM—ÞzáÂ+ë ž]ž¿aAþ©ykgå­NÉ]9-webîò„œ%㳌q¤ËJês&¾ãÁMwŒhïÈ¿æÍÚ|§ÁòIl=L:­°s3¡ ¨g¿eØÓC| žrß<ÔØaæ&÷_>¼úÊÇמ~÷êª×Š—¼R<ÿÏ@Å3ÿ(Dò³î©¿w'lp[ç¹Æ5`…³ë‚ÂVÓ2k Þ%‡R Åø¤Øa„Ìykg^zç/—·¼ráÕ§Ï=·ªà™%ùëçç=‘š»f&Dޣɹ+¦æ.KÈ^8Α62kú€³ ]oõn§Z²%pfØá¾ï¨ÜÒ Ø–€ è#.Ó'v0 @Ê/Ÿr/<»õêÚ7Š¿\œö|ñŒ?¸žrÇ=éû¸kÄjçðÕò¹$=–užWØ:9³ÎÐÝrLzÐðUIL¦Â¹Ë&/\Üüìù?¯-øýâüuiyÍÈ}$1giBθìùc©#©Ãås¤>™SzœßùàÈÖ[ºÔ‘-érP. ;À¾ƒ÷ÌÙ¡|ùkéE,—ÿ€¸÷¤kåß‹Wo–©aösÅIp*±Þû„+æQ×àÎ~K=u[¤PÔq^Q‡¹Eíç\n“’uïÈ=4;ÐJ ÏîY%%ì³pܹçVž{~5Pƒ{ÿW 'gIBÎüXGjLÖŒÁYÓúeNРê¯ìÞšßátlûC£Úlíq¯;ÔÛ#§=!w8)'9³|f¡•ïžêµÇ·i¶E‰ïcA BŒuH¡SÀµ`'öy²†”Å“!exÜ Ô0d…«ï gçùEíçµSÔf޳íg»9…m¦;¼ìà)£ÄX%%ì;‘ü~d D‰‡†dMë Ô1¾3©Ï×öô¸v‡b´ØÁ»+ ìéD_ÏåP8¡µÀ ¹’R&f+ßVgRl‰I¢SȱtHDD‰-Öúb$¶ EÀm¯tÂ.PÃÌ?'>íž°Î=fkøJ×€åÎèÅÎ. Šœë|`޳ÕlgËYÎÖ©Î6s [§d5ù);ÐJ ÙURÂŽ™ƒa—A>¡X33wE"Ñ“•< kjtæÄ.¥Ô0ªeƘÖgƶ9Ózk÷²%ÝŽÉTpÿêÌ‚f 1óì9n|ÊS‚ B‘˜4t[”@/ aqº³«#á@yB@a¸œ™ò¬|N1yì5¸G­v yÄÕo™³ÇbgçEmç:[Íq6›íl2ËÙ|¶óþÔÂû§gÕÁ²Q:9Jà[VÉï¾°C\¸B—MÎYGèvJ©!¦Yƈ&1ÍÏŒ¹ÿç‘÷oë^ßËÓa¸d w+”D¸ø5 ;œ“ïÓ¾…òáþm*Þ¼Ç%ësé·t i¢ó¶W‰|gxÉ1°RÉÑàái¯-&ØŠèÇD€Füª×’"¸$&¦>-ïDŽè5®!«œýqöXæì¼ÄÙf¡³å2¬ñö‡jËì}Rêq\RÒ¸fõÌ­ìàyNË4;$]†‡Àä2ñ`Tì] ¿‚cš˜¯~!’·R«PÍ šj=´Rj¤àq ÁÉbAÀ÷:Î-ñ˜3nküoÝñëÜpõ!æq×ÐÇ\ýW»z­ru~ÄÕöaW‹¥îÆ‹Ý ºÌw5H+jœ]sèçrLzœŠQ"³ƒ¾ø–U"³ƒ¼¼eÄutÌ‘³(.gñøÜEñp #{^ S9ñ-rÆ5ÎÕ ;¦AæÈG7øg§š²%=3¤žgdvhzDÎdvh`œ”sØÏ³ÆÉ.ùáPxVt’“D©ÂôGͯh»5 †ä1(L¤£\¯G³õD?Ý#éü‹¼b t xȳŠà^†Qk]Ò±ë\c!°Ÿp]ë°Ö½ÆõÐjWÛUî+Ü—¹ë/v×YஓVT{ZÎC¾ð°ƒw¾ßö6/;A@QÊEÈ왉ü*;˜z«¼pJÄ ¹ ”’®B¡?~¥'¯VÂQ®×£µzÆ$¥_,ˆ¸VéWà²%oø]Ù«íyûûT–-rQæ… ä'¸!wPØaâjóˆ»ù w£‡Ýu—¸ïZP|{ª»RRQ…ØìˆhÏ5 Ï`}U3ENÕOõºN.ÎÆuÈœÜ=+1:kZtVbOGbwGb×ì©s&·ÉиÙ!MÜøà †‡Õ?Ü¿ö‘¾Q‡£ké^íðCjñUké½^dv[t ;ÈW4)vPÞ] ì l4Ê‘v•åˆ%7RУ†@N3-q‚5…(dkb« P>Ùᣗ7~Ÿ<ìdÿFG{Ö;ÔµNz§{~x°Ö¾¢6·¨µûÍmuóߟŸ³(eÆ#±ñq£,(¬]/*x˜Ô‚ýØ$Ðf‡ªŽ“;© w%Á˃*wøæƒ7¿OòßÞ Žö¨w¨Kô޵¿°Ö·D}Õò®ÏšÞñr㨟öíôqj3ÏX³fiœç6ÅôK÷>Üû|\¾tîÀ}àþnX¿ÚGð9"`#VØÞ†TÜ]a‡I Ÿb^9)²I©Ö¦÷ÞJmÍ?—LW¨á`—:?5´«õm먯ZÜõi“;v5¬þa½ÛÿšgÁ?l|òÃ÷ßT~¶{[÷þþCÊÝuï0¥ †öÕ¡öýdÖ'_f½óÖΗ æÄ® W¥]Ü?iÓò6˜P˜Â…ýŠ€vÞºçÇWÿ¹—”çßúØaÝ_?úÇŽïÜûóŽoAyþµ­"¾®hûæÇ“ü"¨íðw;¿ÛíP÷º?Îp`Þ¤ýs&þ{Ö„o§ÇûÅÔq»‡ôz¿öm›šÔudüd ÖGW-ž2/aìä‘ ALž:.iéèq]W®œoJ öÓÃïíþï{s¶ìËßþÕñ÷·ìy*îókÖŒk?}qU;Ì LAŠÂþCÀ";@$ðKò#Ï ²ƒÚ¾ýdë¡þÍÒºçÂ… n·Ûét^¹r¥°°ðÒ¥KP“ñé'[jV}þŽÊÇ|k Ó|à™­Fψ¹·A½}ß츧AÍ´uqÍÚ6€$”ä•6,øcüâ&.ùsÂÒ—&¥ýqŒÂ7ó~=›¿w8œb˜Ò‰Âˆ€Ÿ°ÈËŸ~ ®P¢ÐDêºÍt¥à% ùÜûVmŒòQ„k¾ÝõÞ÷ïù¡ã=„.^¼xþüùsçÎþäã·kT^ÿ›*?îÿ4×qئõ›Ô{òk¢Gõ¬X©bÊ꘾c:¹†) CøÓ»k“× KùíðéO O~jˆB —ÓcnžO¸ñ¿¸s{Gˆ Ól¿(X@À ;l}ïÿ˜­§^ÝI®hÒ_¤¡Mjmzû"ÚN¤¾­]·«õïèVßõm÷M¯6Ÿwiµ§S‹íšý«Õ}ïÕ­¹¹ZÅ…õj}úÉÖ“Ç¿ÏË6A“§ÅÏ~rÆêWWvÒ~ÚŠáGö Û†c$ôÐ&=Ö_¡†âôÑ7ÎÆÝÌõÈØ“;aî Ž'Júmv¨Òᘩk°Ë<÷;ümTïoî¯ùEó;÷4®ññ½ÕÿU÷öíµª½wW•·«Wz£ZÅM#’{÷xûÍ—~Jÿ<'ëgqpÝ7wÑt ˆEÏN<±kâÔñâmÕ’À Í›7Q¨ÊÍã®S°wÄ3s[⾃/Àb[¸…–ÜIÒìðÃî-oµû¾7øÍ¿êܾýn™Þª^éõj‘/UŒH¬þ›¹©É¯¿öÂͱ€§cg^÷ÖêNµæf§A¹ñI¹3²æÝòÅ ˆ§çµ>øn÷Ü/‡ŸÚ1èññ´Â,ª(ï?Ê!;XŸ¼ùâ‹j~Pç¶mwW{÷Î*oý¦ÒëU#!k˜R£ú¤øÑë»jLJoÙE~γÈÂÅ‹‘‰ÃLÝã@º ÙTÂýÀJ*ÇfíAyDÀØÃÿøà Ø;•´,x–¾ûv¾”û»{k=s{å'n«”V«frßž®\·?ïÜñ\³0»+IæÂóšàAÀv ·E69øÓ'÷·÷ã]¿åó=Û¾ý棟ú ît´5Òlì l`‡`dž‚Ü£pm2(H A>Yh^P!PþÙ!¨àFcBÙß)ˆ Fï•„wCY»¢B\ˆ¦"ˆ€8˜;ຠ˜;˜y¯8¿¢$"P^ÐΪRwR‡í/âÀDÀûKy½áÔ›½ï¤&ìPn~‚ ÖeW“ òÿ‹@Âd$ADÐFÙ=@Ê;ìÛûœMyâ%5,¹fì` M½VÁãCÁc ²ƒ½>æmÈ8Û ž˜ KüÏöê ;À+a ‘ÑTîôBÅ 2¿Bja¼TîÏY”¼±^ÍLð3ë3a&Ô™z8ZØ2Ù[c5_pxЬLN>Ï'G=-Cç»%´+ûŽŒžÍŒ!ÐO¢¦©š,FÏšµ°öΈ vÐ\²v BvPS’:³ ³ L gïJí=4 ²ƒ¸Í~²Ä^§m"¹Cвƒ:(4]Nm¿fVk;¶â ‘¼çDâY4“"ž¤Î8Ói?Yb~“ðdÛaôQ¡Oì@s$'‰qwñÕÏ0ig¬Ò ¤/;~ŠI4 ýd‰^¨nêì`è`"Aa;ªfê±Ãqåw4éAjn™¨©™Vq¶dÔÑkj †ûzË,³ØúuCÈð,šœMk{˜Snú[S–ûh‰šD(ÉÔ„*Â;9g[ÏÌÅYŒCSSiU³MnaòÖÙªXvÐÔë'Ï05ÎbÈð·ÞGSÝY1Òšf³­‚Ǿåh§Ù™õ‡<²ÞIÌú.²ƒYÄü!ï;øÃ ³:C‚ÇÈà±s³®xùg‡ÀC†="a…€ç9 ê×nȾCÆÿþƒ@–ªtôîJ9øDgJžÑ,¹“š°ÃûvbApF@—¬½[!ˆ@¹AÙ¡ÜL%°d›Euˆ@¹AÙ¡ÜL%°–ðw4mÕ!!‹€ú~‡cÊSX!;"QÃáQQÑ S[+b¿ˆL MRDÙeÀÑYmª¡%"“¨–aÒâ3†³cLlâ?DÙÁ fDN„îwNÓÑ*Dð+2;ô†7Çm–¢6JRÝt|ίp£rD „@v¡ÉBS€"€ìP¸±3D „@v¡ÉBS€"€ìP¸±3D „P³ƒ÷õ!44@ü²ƒ?PEˆ@y@Ù¡<Ì"ŽðÈþ@Õ~"±¨{U·²ß2ÔX~0ÇÌ#:–òí…RK$ÎE07”yÆD-c­ÅØ#Ò{ù ½™ ì ø|T€¡c¢aŒ`hþÈDXO-c­F¡½ƒáLbÈu!ÊÌsxd:õ²‰²Âð¡Câ¦ôhÇ¥GªŒ‚Ö)ÞŠƒ€ÚHÃÕXÓ*µyL ?ê¬Å¹µVÄ0Í|Ù¡¬â…߯(;´P“þƒdv9¶1tÆñQkÞ/²ëE¿­šékõ<À,\|Kèщäâˆg䄃U¾²ƒzM+CÔ˜Gd™R7‰7NL2 éE©fÎÂдˆý¦Øèç2q4DX£ ý»fbÆÕ™Bæô89Ë,¾¯–j‡³·GmÈöÖbÍÓ ½ð³f‡-­Ì¦Êšë¤ÈJ("#“"ÚôdDÚŠ[¢žhý"2z™ˆºÞO@%¶ P®ØAqnåÇÕ2LF€¨¥ÙD¤#Ó #Iþ¢×£žµô l±„(áô裌->JìB@”ìê/øõÉYRð…–{Ø)Fv(÷NDÙA(CÂd‡°›r0" ˆ²ƒ P(†„Èa7å8`D@dA P ;ÂnÊqÀˆ€ È‚@¡"v ;„Ý”ã€A*c1þÓVzÆá]œ¶àAÛ.KDÙA}k½wÿÝ~/Ò{ ý ð}ù‰D€Åiœn‘˜‘ìŽ#fW/Bì ~O“H%ypÈO5¾ÃrüÁ8­öºHLŠÈøn•]½Xdµc²†ÏšÌ³‰êGiÃ…Qdu5;z&1jÚIdè½!ó½$S&Ò—YƒMžL«zŽÀT²dòÝOoA5tT¥ {ÝÕ";УUÆ#2ývɈ¸™ Z˜‰¾=Ì D:‘Am³^+³ÚôÐ`šïߘjN´È\¨eÔáCj8³ â!"ÞÈ—±ÎšŒ@ÕX"­DrAv`èVsöef.Õ2ñ¦^8ì ¢MЛõˆ¾Ì§ÕÞ)ð“6ÍÈgü‘Ñt?µëÒb4eЙ‚ïø2ØrÅfs&• CT=‹¾ ÌÉ_|L»ÔC÷‘uL„¬í’± á²ÒcøëœzÍЬÑd[@ð°Ã)éÞÍRÔFIª›^µƒÆ¯ìZ¶]Nã‹»3ÁÃù(.é#îöÂ"¢MÏàP™VXsklË9³0Åâa"ˆ;Љ.'ù¤ó"¦T2˲ï5g̰ñ£8¬|IµI"gz­8°ë%GzÓ¡Ç~šDµåv!\&zÈp W"ÀA@­DoÔÚ ç]QvT‡bˆ"À?‘ !|Bh²ÐÔÐCÀ®e¼LFŽìP&°c§ˆ@ €ì“„&"e‚€ÌÑ'¥†ÜkebvŠ e‹€.;tHÛ‹@Âd$ADÐFÙ=@ð\ @Ì ÀæUJî¤çÓ-;"€È¡‘UÂÞ5ã¯êµC‹È`øPÇ_”È•”j»j”NCk_¼ÐOì*ÓZ†v2×MMb¨{¬;ЃÔ°ZÆ®B ¡Žµ)Ç2ÌDÐà˄ʴƒÖÖ'‘9òÅ+üÝÖ";Øù"zHÖ`ˆµ"@ʇ^¬êJ‘eÊÇY1eMŽJCÆS9 šYv™»dÌN+=j»lÑC» ÞÕî§ž)k,㣿Ynn‘ÔS+´2"ì )ÃL›¦_êÉXFV¯¡t[¾ñfµ©5kz°šƒL&b•fš ©µÒýL±ÇTfݲݯü¡ÐÃðö—×¼oѼf¡9fz´šÇ¦\„ï|šË¾†˜V‚ööey2hýJ4^P›xÔù´Š»¢àt3Á/¢_„÷Õ\@ϵá:gÙ»ìmì`м5…­åöÍ…/~¬ö3=ÿæ“©HTXƒÑ0)3 qÛè<ÈT™|ŠaLd‡SÁ“‚–;z­5ú°ËkÅcUÄ›™<Ÿù迨 @ôŸÑŒ>)‘_ÙÅÜÁLŒšÐBs\7Ds3oÅ -ŽGk ÀæU:Wî¤Þ±}Dg¼¿gqïf)j£$ÕM§Ù¾a D ¬€ŸÅ1`¤+¨@‚dÜŽBmüÎx»´-KD¨ÃHûß—µ­µÒt'UÑúÍê'µÔ£å<ÍE„õôˆÀÄ—Ñ`KÀ›RœV‰!ö¬/æYAq4h7¶¥•à1F˜ÓVƒÈÝP°U+Ø«Þé-Æ,=Ít½z0z5ŠJw|¸ e 5X˜N>‚ÚümUðë·P\R|Ãé³Ü£ÚÛ­™$h€fø³ƒæ½’ ;0NÇ!ß&ÃH6ä µ~NÞÈùtÃÏ\4Û@ ÎLÓ$%Ò ‘!Ã44ƒiBÐÖœPAn%b´Ô}©Í6Œ‡ ÄJíºÌ¸4Ã^/”EaÂИ@d%oîÀg&bLQwLªžjwg@±@ ꬉ€H%BjtCM%t°©ñáO†@š`ò)!JÔš âc¨VÐÈÅŠïØ"cWûóü¥EseÕ‹D=Ö3€tm;®Œé­Ç5Ð ³ÎÐŒÎ`§g¶fèr† ¨–3"žDKÏ34)FM.znÍÇŸQ®f[ñQГbœ5ƒ!A𝭅®)¬¬u!âü†A«7p˜š‹™aG6°ƒ8cñUûŸ©f¨œ\5—4÷ë±çBÝBµßëy†Ú<½ødSÔÚÔþCÏ»&YkN |B÷IýÇ‚S  ¸&˜„_bfÇvg,M@"T‡®H geSŸ¿xò»‰> 4ƒè­$œ^8 ¦ ·Zuâ&ñ‘×ÃŽü-Ж&áêUò×q44õˆO)0ÕVé-½´ÚRvPÿŽ¦ï»’„´˜Õ€Ïë4Õ)3dX£9T¦•žŒÚ)iwT»ˆá DØñ õ575³Ðæif2hû9ΪIjè«ÔF ÂEwG+1ä Í(ò+MH9^¡g9Ÿ}ô¢WsÆÕÓÄ ªÇ|„ØApþ4Å íöE¹ïm Íc å}7)¨4„ÛxMoÍÕ‘“:™²ÊGazPaÍ"³Îì ‚¾êÍMA¤N£ ‡oJ¿¡6C¦;cv0Ôˆˆ"P.0`øÿ!ˆ@Ø"à}û ½+YsœCyL•ÑùzEn†@Ê7p£dÛÏ$šª9qgÜéÛ†¯Øï˜^‘zŸÒ. ÎÞÒû¤¤Y¢OIºÅš : õ ëu@€z XÓf¥:{Qµ¤x`f\îÅ‚ éÖæYB•/z OJ]HmöH ßð¼ªö6ùíÔrÙ\r |/ÐP¯ˆ+¡$·Ì޵Uzf[hÂGÞÃ¥Yx sPÕÿJ¯#N=:³A›îŒÛí öºÏlK¾j"LJôÌ,ÎÑòäÖÿ«‡î~Yþ "€ ·"ðÿv6ŽüK/zIEND®B`‚tiemu-3.03-nogdb+dfsg/help/dbg_heap.png000066400000000000000000000240711220314353500177610ustar00rootroot00000000000000‰PNG  IHDR¨æ DsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<'·IDATx^í xTE¶€oˆ€:Ÿ>5ʃaADp¢(‘ [¢„°Ë¢("¨ ã8£óô óæß¼~ã7‹#KPöå!›aÉBB l’­³±™¤ûv–¼S]›JÝ­îšîÎõ;_¼}SuêÔù뜪[uÓDpÔ#S"""áÞíš–è7‘ß·¸]·Œäîˆä|µð3"2òvímÎw‹kÖŒkÆq·êùàƒmÿ!Síø/¢ÚŽVßÉÁumƒv«ð'0¦WíãZø^ÝŒkqºÇùÔø‘5¿Íqwø ßÁÕÜæªŠoì!Ý…ˆQé -æ¸[.­Zyûç"é´îöcŸÞŽþävôúÛ}?GóG$ýÿ$+¸€=¢`†¹¿²§;’¾…›ØíÂO B,SC| @³Å×?ƒ‹>v»î¿À äͦ•õf ÊZ.¿Eö?¾ øŸø¬^``!o:ׯ=~Æ‚UákÌ!Æ!Ü$?âpsi¹¸„›TÁõËÀèýàœàÆäqã/D̾ Â͹ŽAä"Oäâj ܲÚÈ¥·Að5ünâ |³Å’[0pÉp’ˆ·ìp4„½½Š%b^u³ÙU‘‰îÈÙe3<ÜôrîUÿÏ)åð1pgÆ ËÔkè'ü6®”›t Ü™Ï Êäb.àG¦p¯^©—ø"nV € 2‚~ 6 2» ìsļv-dæÕˆ™¥•A¸W‹¸I…Hâ\¢XÆç"“{‰’Í ;‡.€zŸ“\ëùÁ÷úýÀ¿<üìü40·œ¤.1À¯Ð!‡_vH 75ì¸R‚‹¸Ö¡­ h±`Ò€¦ö˜Sê€ä¡~ð NÀ4/Oä,€a£;f–rñ%H€¶ÇЗ毺þëªëz°&b¼€ZP{@¿’õW›OôÇñ˜¼æãr>/r]ÓnÉGWš÷;…=úÝm'×å?øGÿ&¾€Œx¼›à]„J #”JAB.²èBHqÖ\$¬/½äª]öEåŒO¼q¿âcWóÃWz¾åü¶ç…eHú-AòÔ7HÏy»;L»Ù{NNÆÅò„?”àÄ †”Àòk ¢^{éêï–•¼;£hI\á¼XWÂð‚™ ^\0ýü©ý@ò&>…d|Ϝخ—†tHßûfvFÂGWu þ‘݈ø½ïqñÑç˜S͆"žqP×/©(·†A`³W9ôñ­¿T~¶¥jý¶ªu¯|ó/•‹þT™øŸÞ„ϼ³~ïþ‰7þwÞÉ¿á'®ãÇ|È¿´ÊÓÿMO¯ù妿÷œz¢ƒ7ªÄ?aƒ’kŸ¾uó¯Ÿýô·õ7¾XwõÓ7K?ZTúAbÉš„’U³Šß™^üN|ñ›“‹–N,\4Æ•øRÁŒþ9q½Ò‡vÚ1²§«´:ñÝ“%À£Y¦ùW¯Ëýú'~òù¯nMX÷[ ¼EÁ-©Öâq=ý™÷OßU}±³ú㯫Vn¬\úEåÂ?ûÊÙÿØÏüÔ;í·ÞÉñãÖò£VóƒVxú,*ï:=ÿ¡¡»‘—êÀRàG"ð%kfÿôÏ?•}óÅÿùøÚç+¯þni麅%$¯ž ìKÞY¼bZñòÉ…‹Ç¹æ*xmPîä>#º~ýÔCÈHõ þÉDÄC€%,   ù†ÀÛIÝú¶À“~ÍòO7U­ùkå’?WÎûCåë¿÷Æì_{'|È}Ÿ¹Ê3bJþî}—º{/(ï63¿õð½ÈÝ~ *‰ÍÇà‹—Oä7¿üôú×\ýí’ÒµóJÞ{½øíø¢e“‹O(\8Ö•8Ò•8%ÿýó§öÍ™Ø;cT·oži,y& s| Õ;àeƸl܇ü;*W}‰¨Ïù¼räöuÞñð±ïòCWx,óô]ì~vðv÷ZàŽžïî9·¬û¬‚‡Gí#Á“JTgRZIø¢Åã®}þε?¬êÞS‡@OÑÒÉE Ç»c ^Z0}@þ”¾ù“Ÿ…û{7åÅE_ß3st÷M}–ÿó}( ôƒˆ¿„R“„ÒɶëþCÛÉ}‰T¨KøQ|§þéÓŒ%ý+\›Õ(„Ìëoøc}Ö'•S Ðß÷õa+ø—uOï…îžóÝ=溻Ïõô˜ëyrny÷×\ðc]ÜXäOR‰*xZIxXÐ]ýhÑÕß¾±.(ñSV0ýE ž7±·p?o\+ãžÌŒ•XÜxH/úŸaÊÔ~r1‡eR!nøîÖk׋ï˜EE07gEC sè;˜Ñúìÿ¨ŒÿØûÊZï˜ÕüˆwøAozb–xžYäþå|Ïs=]çxKðtKôtŸ[ÞmVA»QûÉI*QO+©ïš=ft”áWÏ.^/è)˜9¨`ZLþ¤gê©~,oL·œ±Ý3c»mz®²äÙlDùñt"Õ“àa„j9 öjJ0{ûÁu«ÁóܬOQ’ŸòÌëÞÑ«øaoó–{ú.ñô^äî1ßÓu®çÑ9žG<çxO,üµ‚¶#ið‚p‘‚ø-­dd`ŽðÅ+gÃ~.ŸR´h‚@fôzê±æ|$/¶sΘÇÏŒz|ósmàŸÎ–Ï‹ð^:ÂSHõ~ð×Іpð¥h£8®” ëºäß €ÂMè “¤f¡¡z;¥ªHêQ¸ Úž_ê†E;,ݧ}Œt0»^Í[éð¶§ïrO丹î‹=-ðtšÇÿb.ÿH¢§óÜòγ ÛŒ< ˜M) Jà·´ˆøX´âΟö<,ÚÑÒý­i0».ïš?šÊc+x¹Sþ¨_äÇ>’ûr笷ôiS=ìá Å,ó  -€Ùïé4$¯ ^`/—Ç (NÂuàü`ÒUµvý‡ ……Z’à¨2Ìšè³È=öþ•uˆ:üË:ÿ.?à¾ß OïåžîKù.‹ùGòíçóæñçUtœUØê¥àI% SA ü–V2ö*^(äOîS´plñÒWŠa¿ä•ÂEãÐ6Μa‚Ï]¯twïâóˆ+¶½+¶CÞèŽg_ê¸åéV|Ì%®ïy=¬ê£~×¼ÿG3øepF„dÒ É€O®ëQÞ&ôP×ðQzðþ›äGêWd-M× §×|÷È÷<Öòå[ë…õyìûüð÷ø«øçWò½ßæ{¼ÅwYæí¸ÄÛn1ßn!ßnž»Ý̆ÿrwa¤^^ ü–V‚À£HÈ›ÐË5wdÑŠ–L,~#ù… b©H+ŠëR4®cáèv…±íòGµ;;´ÝÖ§@–ôËãúå ð΢ˆGà;À&þ%ñ°ÆÖ~&Žá”ðUO½ÇñP˜R.Ü'É4€Àµ¨ëÀk¨™jH¡ Yål~"Á Ïè£×ð@küZ~,0ûÀ;| ?h ³šzßc¥·Ë oÇåÞ¶K¼­y[Ïs·š^ôoÃúÁW€PJࣂø-­$®ŒûÜÏ}ù xF/œ?-_¸h¬àÒ¢Ù1øú–§¬xBÇâ1m‹b[Œh}n`«mÑÿ†,P̽˜‹Ø?y è?ýàá3_ЦêéTæø™|¤_¿€“wÄÉ€OÕ%õˆuRšé1GŽ?ÿpÔ-ÐtçY1ËÜÃßõŒ~Ÿ]¸Óc•·Ë;•¿Xám³ÌÛj±7j®û¾iÅwöG|]0PJFÀ|Ÿ¶†¸†~ ÿ̯ jÑJ|\ÜÏÙ9?>Æ5gxá‚Ñ… ÇÔSOX4ûùâYõ«ú’1mŠGµ*•Ýÿ¾¤wÀ{ˆûzðû|)ättï¯éý2xA$âu$õ?£Šó ñ( ën’¿e¼Æ:)Íâ¤øšª%÷‘ÔMj?­žÙà`æ¥wÚÂßã=oç••íWTþû²ÊûzïIpÿlrQ‹þˆ¯ó¥dÄjïðÕü5ü€÷ù~kø§|¨E+´ç†ûW†´Ï›ôLÁ¬®9/ 6&)š3 èõ~ųž.ï!Ü/qáà{ÎõûYÒ-%Ãn"Ę=:–…ˆÇàGÂY*/DžÀƒ€ûêͻp³kë£Ó?È¡ \“¡OÝ„_Áȼ‰ï“BµE~”»¦ì7ÑzrÅ“‰î¾KÜWHƒï¶ªòÑ••¯¨|hYå½ *ïzÍÝ|bQ³þþˆŸá U%ä`¢•L­â&WB_l;öIxröžï·ÃÂÙƒ g(|=¦hÖ³Å3z•LíV:ùQ¸ïÝõeÉð{]/Þuî™æ[kìü³¥hã¶.Õçq#a-^ÖÀ ¦¨Fä"ô¶Œ¼¦Ã×â;ø·Tò&®K±BA3( Iš$Ù:i0©ÿÁ‰g¡½Øç–¸c–{b–óýÞô<÷–§Ï O¯·ùîo{;¯ðvxËÛf©÷þE•?Kô6Ÿán6¾0"Æ¿ªŸ]‹ƒÁ=SQî¹üüƒís'DçOy® >¦`zLA|?Wüs®ø>…ÓzMé^üJç’  ÏC¸þYALó³O5ÛÒ%Y2ª"ôvèøŸ§¡ð÷ƒê0U ñcÿ'ñp?ðnÝ¢Û0°H:QÓM¼r-\L“fM…Aù½c®·›r³ëk?ý2ñ§§æ—õ^P½ kHÛ¬­Î¾•sïÙçîÊzúŽÓ=#uãþõ|~¬»xô8G€Ç¯lx¼^CìçUÑø—ÖbÞrÔÍò»B†§š°üœÿåÓ/”uxøžþ;î¼ÿ!{²ûÁ»£†ì‹ºÿ¾!îrðî!ßß9ø0¬æ"ûŒè˜ëw ÃèÝiÙס.¶Óˆ’„ÿö`ð öÜ8›¾}p׿=qÏ7=ïÿWôÿìõà?{>ðM¯¨M½¢6Gß—ÔóžmOÞý];“ºµHêùÝc›å¾y¾Cé™´„?À¡4xXÜùçxÿ& üŒœQ†…>¼;ëÇeKäü±à~âlaàIÔ:ižP®'W^,×P êbÃô+ùsEó™^ôh0µªy¼7á¿Ð–€¦ÿ\×|@½ùËå æxHõuï{Âp:xCÒÿ&¶ÿÝìúw„ɨÑ2žè$^SEV~DËf[Ä®NÁÞ¿šƒ•<Ú€g¹Wxn’ \ĹQìâŸøB±?q£nÂVOà·Â¤ó:)xޝžèrÐK¸ƒÒ"§Ãûw輺×uá5^,èèõ?¿ W¸ë®ñ…ÿD! e(luØ"@Žã$Ût žƒÀN+–.>âû øü„y8…Á[ôp?²4øAi¼Ÿ½€Jp$By¢býo…bÖ\€µöH ›¸‹…=Â[¶U}›´–½/´šwãθËWK/:ä¸V’åÆuWmm5û”å¹áe\¿ \ÇrQŸpœ>¤†; ¨Þð¥_ñÈ®:’á=˜îÝŸêÝ›âÙu’ßy³=Ùûíž-GÝ— ÑþÏ•¼\|'6 à¤W¢ô~ÙŸÞÏÖ€ÄÎ\¼÷¤øv§ÔÀO þ{Ï8àÃ<¬æ ÖS.¨cê;ýìA0ø¯veêÇtÊ3“ÖÙT¬Pµ ­S#”×j•Ž&l¨"™êaéýDv-ˆ@_ìH °ßsÍñ·‹Àß%zŽNc©þ¨R‘t1Ö&éšÆO¾d†©öË®ªMH‚‡Ç6!ÃcÞßg¢l/°ßAE|<ì÷=¼1ð//ç U…xÕ^¨2h”’à¿Kæa /†ëCY¾ýûí)ÕÛýs¶g T¯ < ݃¼Lº[¬P2ɺTÚ r’\ŠÂ¦RVÉ¥«…4Õ¨$ø¤xxlƒGv`?gÕø=g|ÛÒPÜÃϤ“Õß&£FÍà)`Zçx1x±BÉ;r#FœT#Xr8’#‰Ò€?jê¸ #Cü¦Ã<<¼ûÙ9È÷Y5~g¦ïÛÓ¾-©5›OT'%ëŠxMýg‰xFð‚+É@ˆó‡¦Èó@}Çé÷-§j6¯J:j;xÊwr‘Ä2Ä‘Lþ’ŽSXÕS&iå6Ɉÿú`ÅΓU»SkÐFMjõÞÔªÝi5° Û–R³õdPßœìÝz½2¯yq§Éʳ©qð’9™ _1Fð ÊUg$ø‹ù•;•í:^òXà&umÉî¤c[”ŸÏG ²ùàYzqwgôyêXVné¤Úð8µ*7!f@MÉ UÁK¶®l• \U›ƒ?|¦ˆñXvóWàX–\Õ‹Á«!W 8·J‚Ó*­Nƒ¿^VñõÁÜõIçó÷ìµ_e¾·ñÌê «6d‚À5–¿:»~ëåkå^|Hî× ¥F_Äp"^kÀ5zyÉ9žzCx¿ŽA¾ˆQT”¯>Ç7z'ä< ü"†ð.>›'_Ä8vú’,ø¼S rPà{õÙè@öØÙZ´yç cÏiœÓ{õ;wÂâîlÆ!G‚Üx¼WÏi`ˉÿmÜÂæ]šOi¯^ò‡]޹(ð±,¼dw,«öná€dOºÉãcY‰ˆoŸã bèÀ·¯;–uÀ7"H­M;àµz,LÊ;àäÖn8àµz,Lʇx8!Ið+®Ã²T7ì/œb÷# Þêkk©„*’”ºÉ¢ßº2&là(¯êåðèèéeâ’Ž6ë>‹…’,ÉÜ£`'‹~ëÊ4xcW¡  .&“ŠY×,N—ëˆÖû,m™[&´ÁCÄKNdr™À\xF´5x}S.6+¥›5)ëÑ‘äôy‰±V(R½dÚ7=ú=¨Ú.5CiUkQùƯ{ø“ȃ!âµÚ`Ej-Ç»ÂB—ÑhjI$«z¹Þ‘ý%-×=â½Ä^ÌðìÖ¨– Ç©šäðAÈ*ó̧so&óõÿü™ô—?“vÀ›ÏÇ2xË\ÜŠðÁÍÇ2ëð–¹6¸}Ë֙ホ¯¬uøgÔl3Á;oÙ¥ac}£àc.síëçlïìÜ™56lo0Jä)u. ö”Ü º>#%µ™…Ç:=v€W%ÁØ=êœF|2Ær².YFr…ƒ"Æ5b1;ÀSdé?˼T¹‘'Ö)XÂÇ,C¥wö—1ü–-Û/NÑZ»ª<É’âŠ?Š|IÛT“ãÑÚ_«Ë7x}½¢\̘ê¸* &åÑ 7˜ôõ«Qj…xaŽÆ8(lZkÉåÕÜÐ(€å5¼ÂéœñT/¤e ¿ø¾wäÜׄçxâÛ«åÀ‹gAÁ!™{%5SK9qE}µØË-ƒ*Ä)c G<xû¯cĘØz8©rÀ‡M }1z,Ûð{BÑàúÆ-ê€o\ÿ7ZëøFs}ã6,þ†û%,ßsç¤úÆ¥©¡u…ˆÿdk%%¬_p¨¡}§h#yÀ„ˆ¾Aø‚ÃFê‹Ó¬˜ñx þš¢rDzs¼ÜWš:àƒ†¦CÎãÅs¼ôwÙÚ ÞÙ¹ÓÀV±¨o≵ø°Gng^¡×âã]–ýüðÞ«'¿½Úœˆ7ñüŠÂ£ï8UÙ…zIð&öάPfÔcøÕ«K{ªܤ#c+#ay¥Bì–ÃbeSð×&­e¯À??fEpè/CAe¹#9zÂàXVû?TïÜ _[.^Gˆ«º˜1Õ‹ço¹¡@µÈbsØD¼ö¨€<‹g&2îYÀ³Ìè¸i–´¯Ÿoï8rŽ^Ʊ€§R´&ÞdaÊÅŒ©^¡u–,¢lmxDüÛ/1BùúPÁë.&ðF¢\n†fŸ›•Á(O,¾ð×Ë*Öo9¿ö«Ì÷6œYµ!S,«¿ÌZ÷UÖú­—¯•{ gI¡ª3=KÄ/ö.ëPþ™.üsÅ® ¥Å—®]Ë/»é*+»Æó7y¾ ¤ºº¢¶–ÇåõG¼ð’[<¿*Ü!W¸™È;d[ª¦†úo9x–Ì©ZFƒª§ö€ðï€oZC"ÄÀ7-8VöÖo¥wƒX·>ˆáXiš%à£çu$È=à€o¢cÔï€7o'ȳœcxÀ‰x'âC!âa«5^ñÒ×"¯=:tjµ!Ë[ñÔ#‰APå$EŠ´*`ƒàÅ6È0ƒ}7·ºàͲ˜CعT–;bcŒ€·HfVßM×Ó8àuøW‘t´¤¯…òB B“FB˜ê°M˜GB…º‹;±õy‡<•;%ѺÃ3˜™ÄêLöÔ²¼8ýâ;Z»ÇžšÔ%£SÓ¤ÀbªøLVGY2«Œåà­Hõ¸óÊš5 r蘞å, fö¡^€­ •,H ¦hñzS.ǘ¬¦è1 öêë¾¶\òõjs—?$$swú2“ÜÚBœ“L¡e¢ËÁ›8Ç‹_ªwpªÖeñ² „ZXè˜/Xš3±ŒàM47˜gM»iƒ*¼ NÆ&B |0º04mrÀ‡&7ÃV;à »04˜ ÞùW¨Bh ˜^ø3i¼>„<ÐDMu"Þ¯ëõêˆoÄpR} ¢‹x;wâÍÔÂc©v€7ø‚ÙyñQµ+Nµ¥p:Gn³+4¡êzÉÞ5‰½zâ˲[Í»qgÜe9?êˆWJée#§s j2ÒܳGÕAfb£OþÓ$-£YÁkr.î­øÔ\ù U(/Ÿ\h Þ7¡ÉÑ«kjËxá0OMêWÊeÂè_hr.YÝÄ©M“ š [«)¾`œ¿Y2YF¸Öm§ÂJB ; Û^9æ4õ–L§Œ©^¡uÉGë4D•W¶JSg--lxS<¢ že¹§: 56¥›–"ÇÊíONºâËØIÉ<,žAا9ÀZÁ‹ 3e^ct‹îbv€×mœ¸¢&*&¶~ªÌoÖ­Þ¬!høº?“¶¼YÝvô8à›èpÀ;àuË¢-['Õ‡ààq">¡™a²Þ /† |B3Ãd3Á·ìu^|o†‘Žó=`<|ÝÙßI[^ǹa,Þ<6ߣ!¢Ñ&ðâ#,} Tõ0îÕ“ì: Wrg^_ïì3v€§¼ ûüŠ:a9‹“kË l¤~³”[:ìP ê,\@U…„ GêZòÈH¤Š-´”œAåažšÔå¢SáðTu*RiÉ ëª x–2ÎßX•r† &i¡ŠÂhP°=±tÓž2ø×]µµÕìBynxǸª7Ë5$N嵂VðFV’Èš˜Ø=kOI<´Xx×~Åw"»êH†÷`ºwªwoŠg×I~ç Ïödï·?x¶u_*¬‚’Wòrið Dzªà³«2x–å™´æ… ¯¼Ü³‡¥¦V(ð@=·ôÖ…Â[gr}§sjÓ/ûR/Öž8_›œ]sô¬ïP¦o_jõîãÐDÚ¹Ë<Ë!8JÞQ¶[rîTÕ¬Ç uG!Ži±aúæ MØŒ¦ÀC¬õì|ßék1òãÙ¾£Y¾£™ˆútß¾”ê=§ÜÐîþ“XÁ·R2žLTÛUQàœñâXO¹èä ÉY5À{oj-ˆø}§PÄ'ÊrÀ‡ð€¡ÀH¯Déý²?½Ÿ­Á¼÷¤øv§ÔÀO þ{Ï4øöt™N‡ÕÄzÊ_ìÌu8â: ;øƒÿjW¦>È`j1‡ x€ Œ±|ŸY²#QÇ‚âþ$šã7nwÀkqt°•¥ÀÃcNï${áFÀú“(âðÁ†R›=øï’y´†÷‹À_ ê©5ÛSª·ûç6lϤzç[¯´¹<8JSà“~àᱠٱ췥Õ`I:Yým²Çô XAßt˜‡‡7`8³öP–Øï9ãÛ™éûö´oKjÍæÕIÉNÄðxT¥ÀsÈlÀþûŒš§} û3k€úŽÓ(Ü·œªÙt¼*é¨>Hè0ƒÿõÁŠ'«v§Ö šÔ꽩U»ÓЂn[JÍÖ“U@}s²wëÑò‹;;çxöÍTr³O¨EžØpZ8T¥À_̯Üy¬l×ñrØÇ×0©ƒlKv'«Øz¤ü|>=ß|ð¬†Å˜„Ð*UËÈ^=¦Gmæë’;ó:ôØ<šHð‡Ï1¶¾ùˆ+p, ‡4ª/ö‚>¿PÇ!,gqʇ­¤Ê%åü"YKߘft½YÅHð×Ë*¾>˜»>éüoþž½ö«Ì÷6žY½!cÕ†L¸ÆòáWg×o½|­Ü+ þq.ü†uË—KA™Á‘pò„{ "þžaî›påî—Îß1 [¾÷T¨£*ðv‡ 1—¹z‘«K–¶ˆê,MË•‘­Û°9mæ]0ÔM7æ15!çaùnöIçºïãÚÿ•‹ú„ãZmF>‰ä˺ ü‘ø­ ’6¢¡$)¤*²@½B¿fÙ_ÍÁÒÀBÒ<âš,/W·Á}=œ¦æ–Ý”q¬~p©Æ.S^m@í¯ÈÏmÿÛþÁ?£ÿ9ÒÄ<ðÿ×€ª>í-qƒIEND®B`‚tiemu-3.03-nogdb+dfsg/help/dbg_mem.png000066400000000000000000000377661220314353500176410ustar00rootroot00000000000000‰PNG  IHDR.\ sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<?tIDATx^í ¸Å™÷!É£“HÂ'£BPQBÀ⊨ˆ,ÊvEeG\PcDã¿$š‘If2‰f"_&‰n1‰ŽÑ¬.™h  „ínp¹—{ν(ËW}êÞ¦¨®®~«ªûl÷Ÿzàœ>Õo½õ«ê÷_owŸ>m<éoÄ[mÚ´cÛ}ÜÁÿ¤]›æÏîè¿îÐÎ;ª·ÿû·M»v‡òöôÚ¶õÚzÞÁCûÙü•%bà¯Ü´ù¨Üz„þø\b¢âÝx Ý²C¬ð×ìß`#Á7½ô KbxMâ'ÐfÑA”ò#À&ëÛ<>óÒfÁGmgïk7¯¡Ýìº632Þ5õÞÕ¹§Ô³·Í[fìöx™ºÓÿ—}:q‡wU­_ØV&ló¿ã Ü HȈ·¼«7.Ó«½YÛ¹œ0!áÅ—“ˆâÊ| Êì:æ €€@±¸vg;VfÖ¶™¹ƒsbÅ»ºÚ»ªÊ/+› Ó^Æoñ˘ͬ´µÁ»‚•uÞ°÷ýÂ^0ý8÷ÏÞñOä$¤ßïü™„Œÿ ¹p-É©H $Í©Éüz/(-É ûÈQ¸¸R¡”íÞT!ÀB*\-B Ñ"-RÁD‚®L0Xa—@¾Ù\˜~0á`åsä$„•AÿË.‡DI?Á%žãâ²áoaÉÊÌÞôí~añ…{Ì• @@પöWWÎùÚÊ]2üc{±}y,µ7òÝÚö“r¹Å˜­íÇmž³²ºr§¹'÷mj?àM?ùèûš/½~åödNBNý©JB*Ä,$@6å¨ökZ'¥EA~„e@ Hrñ¢œðS(i˜óí*Üøƒ¦÷7Nü—ì¨;³ÃoÏ\zKæ²[3Ýè—KýrÖ¢VÎ\ÐÐóº†nÓ>ì?wóÛ¯gûòÑq5Â.xñõã£-j¿uãö¯Ì¨^:±jÁ¨Ê9Ã+f^Zqíe×\Äʶ©XÙ:é,¿Œ?s󨞆t[;¾ÿ‡ëÞžsß&_?¸„œü¢¯Ç~Õcç³ü÷ßl;¤9 1’Iÿj¼”y”ÓÑ…¾€@ÙH3tB™8Toy¸éÁ§÷}÷¹}÷þ¬é懛¯iÞ¿5Îy°qÖ·¯¹¿qú·'ÿßì¤{³c¾–½üŽÌÅ7gú-¬?eê¶3§¾Ê2†dŒä.l0Ov>pˇ?~pÏO¿»û÷Ö>póŽûï¸{Þös¶ß1«æ¶kjn›^sóäêe“ª©œwyÅŒ‹7Oì·vè)¿qf厚³Þo($Ä?çÅ.‡\½‰Kˆôå‘@Wüï¬HŸJRËmtAI ìƒiëì $$},fÎ~°ñ{ÏïûÁ¯>úÆãûn¤iÙš®ÿw¦"M³ÿÕW‘™4Nûfãäû²ãîÉŽ¼3;xyæÜÅõ=¯Ùö¹¡/úñ¶E‡œŒ0 áKÈö³÷<ö½º'°û‡ßعòöÚo-ÛqïõÛïžWsçl¦"Û¿2³fù´š›&W-W¹`dŵƒ·L>÷í+z>~Öç|O؉,V˜„|þ ! a‰ »TÂ.ž°6&ls’_# ° zÕ׳L<X½oÅ›–~¿iÁwš®ûvãt&_oœðµìØ»²#îÈ\q‡j‹¥ ,k迨¾×ÌmÇÉÜ9k®FFmãRsÓUL<>\õÀ®_QûÍ¥;îY°ý«×ÕÜ:½úÆÉÕK&T]?¶rÞˆÊyWø§¶f\¼mê›'õ{d¯'Ï9Þ÷䜷ýÂ%„] i>‘ ÁŒÔ°à;îkÙÛ~ÔtÇ*_?æ®lšÁÎ\ÝÛ8þî쨯d‡.Ï º1sÁ’†ó3åhè·¨¡ï†3ç×õžUqÒÈ_‹"‰½â i‘ê%ãv®¼mçwî`úÑøæï™êe“«¯_9oTÅuC+®´mÊÛ&ŸÇ¶ï}iõÖ‰}7?óѽW_pR„„üó¯ýÄdËB6øéRNëìOdåv?|—q‹xJ[ð@ XŒ­ôPR&À¢"»„ήÜË?fÝß4…%w52ý¶<{É2¦™þ×7œ¹°¡Ïü†Þó3}ægΘ_ßûÚÊf ɹ'‰•ÙH‹„°Kèµ÷-®ýæ ,ÿŒäôcXÅ5—0ýØ:©°}ë¸>›ÆñÎ(•„4_Ng“Krw³sÁ2¹Æã%w;V³µè9ûÉãï)–&µ…: J,½-î|0ý˜ý¯MÓ¿Ñxå=cîÌ^q[vðÍ™K3ç,nøÒÂÌçgzÎÍœ>'Ók^¦÷üú^³*Nù²˜…ˆFb%D6Ò"!•³‡²+þù«;g×,ŸØ©˜9¸bÚÀmWsX?FŸ¾uL¯Íc{¿3ª×êóOô=9o¯_X+œÈ%„i¹„´›Æ¾E¸=PI3 !8¨@Z9.!ìŽÞYø§°¦ÜÇ®4޾#;ìÖì ›2,Íô_ÜÐga¦çüÌ©s3'ÏÉô˜›ù¼ú/\[qÂYB#̦ÆûT62¢ùZ“šÛgÔ°û¯Ø¿7M©^±jÔ‰ÛFžøÞП9ë8ß“[½›} 9å=? ñ%¤{xÖ? a×™í$dfÖD0{bðÕ™@¸lÿúmO©—¼?õ5 ¥‚ôú°ÆDTh°œŒ…mŠŸâ5€€L€ýöJÊX\úâœöÑ+²,î¿';–Eÿ»‡¯È^‘xgöì;²}noyÙoüÀݲ@—ŒŒ¾;;â®ì°ÙKWd/\‘=gEc`„í%a2±Žmß<¢Ç¶é+ç¯Z4ºêú1‡õcÞ¥Õ³/¬™uøŽ¬ícºÔŒì\1¬Óº‹?ýlŸO6KS–‹––ø²ƒå8þO‹ä$Äè·‡Ù˜°Òæ:¿%Ä›Ñ\3xág-¥×‡³ˆ lG±ˆõ¥ð@òO€¥®Óö²;wÙ£/ÿÊá•®¨%}¾ÚØãö¦®Ë›þÏMŸ¹¾ñ˜9 Ÿš\}ô \’ qa#WÜÙ8üÎìÙAwe¬ÈžÍ$¤Å«,a©ÌĶ}Ó®[¯:§bÖ¥•s/¨š7¤zî êëÔÌ:{Çô>ÁöíW|¦ê²cÞð©g¿x´ïɰ}±à*â?ìe!\BF°'´û,äáŠÂ-Šƒ·md¿„ÅŠ7ûÀá”"''â5p?'hј š˜šˆ ¤|-î%Uà&ɘ¸¯A”¼ûQÒ&Àb×ñ“÷ž1¯á‚¥ —.WKH¯;šN½½é¤åMŸ»±éØEMŸ¸¶¡ý¤ê¶ç²ÜQŒˆš$™ºÏ›ÜÄ*üã’ã·Œ=ƒÝ¿ËT$ó»_°-U³WÍTuÝÀêYçÕÌè·}j¯“OeÛ_Xµ}ø±•—|âýsÚ?szÛf a*Â$ä¼þcNZNdmõF°»•ü8ÏI²•š´[ìÿÂ"+LKXá²¼Vn ÎbE}JÙKj‹ïÂJ ]Á¼ˆ"ÀV~(i`A鳓öö˜å?¹äü¥ oÊ ¼);àæÌù·dÎ]žéwk¶÷­=–7v»¥±Ë²ÆÏ,núÔ¼Æö3ÚŽ¯j30wGVnŒ\0šê¯ì7^øYv.kË„¾Û¦œ_1}`Å5+¦¨œ~~åôs«¦õ«žÒ»æÊÛ'tcg±X RsÙ§*¶זּOŸÖÆ÷däÞæD„I{2–/!ÿ¼ÆOIrÂôƒ]Òrލ´CLJXæ_‡^|ˆi /…:\4¬Pž ]׵ǎÙuâ”{^»çKóöœµ°®ÿ¢º¾‹êû^_Æ’ú^7Ô÷¸ao·%{»\ßÐiA;…ÕaÆÞ¶WïñFmõ.ðŸÔ,Ž]Œ©Ìºsýûà7Žìùq_Ú4ñ¬ÍWöß<±ïæI}·L:cëÄ^ã{TŒéV9²KåðN•ƒ©¸¨ÃæóÚþõKÞã§äžÑÎ$„«“æYGJW‘vó>båèEû;,9à—e¹rÓA©½ô +Ͳ찄Z’çâ™®<7ÝšCD°#P¹û@Ïé›:}yÓ 7u¿zk©[N›¶ùÔ©[N™¾µûô­]§o=ášÊÎÓ+;M«:vJå'®ª:jBU›Ñ[½!ïtýB !ŽFüTfÆþÊ]Þº¼ç›çuzó¢Ö\Ö}Ͱk†¶fè©k‡òסÝßÒõÝ!'¼{iç÷.éôîÀcß;ÿïž}Ô_Ïlóû^Þvó%dlÃâßÔ+H»ÛK¿Bî«È‚}²,;À•#J?ì'µ—x-)›° .æþWvíu='ýᘋù™Ë^>nÈKŸòâq—½Øiȯ; }ùÓC^9fÈo?9äw/û»~Þîâß¶¹øÞ€Wº~qͺ]l_Þ´‹‘9e¸„Ìù~f÷{kqYÏŸ~ñ˜'ÏüÌ}{¬ßg;ó¸'ûuZݯÓS}?ýì™Ç”+ös>fA\¼ÖMyÍ2¶Û—c±7òý½íg6ú·uMÝ×~zãœÿð¿bbôW¹s?Óö_®?âZ;‘Õ’…ä$„=A…=©—ÿøyî;†Þ ÿ{»ÙuÍÅ—“ ø·`I…u’ßò‘ÿ{æÐb^àÖ²$€¶ °û¯r×ÏÙ]Xþ×JؽWf½«ýÂ^Llðó þ/”±{¼‘²/!6\ü`×?į…–ÿ¾ÞÍìÔ½ÁkÚ\¶–ýŽºÿSêìw s¥Í¨ ¼ø?kÈ”Æÿ÷\a¿/¼æ/rOòB(CÙ×ÂPÊŽ‹çìѼʑ¼ÁÿuVØsIx¹èƒæ·|;+| û—=‹öEþh,ö‚ýËôB-!ƒ×ø’S‘@H¸œH…WðKP_Øñð§A5¼(}ln ”æC˜¿(eD ŹÊpÒ|GV—5úÐyÁîŽ7þòéûP@@@ Š€_Öð:oÀ^÷ǼN÷{Þ‘bt•A@Z¦+ñ²sûº¢-\‹Ö=8 eL $„i`º EKR¼ VÑN8 œ$  `Ib k$䥟žúÎ^ç™)ï@žM°¹Wÿð|‚Ö` @òI@-!Ÿ¾ ™~¬]¿íÅ×Þ}ð‡O²×ùô>8Gi´OŸ>”jy®ÃˆAEòÌÍ$Eà°„°ï´ŸôHó÷BL%„éÇÍ>5ýFö˜ß"•æØšMoº»§ü•-‹ÁxãÕ_qS>ýTÄ v(­BBXŒ~ë^ýÆŽ;ÛQEØî¿{ïå§^}ô§¿ydѽ³fß=Õ K;Ø^ÿ¨zïÍ /¼üöªÿYûCövÝ»¯Ä€  @'PþÂõãñ×}æõ§¦Ü6ÆQE˜µ—ßyá©7V?ñúãÌÚ˜…C-$„íò£ÿþχž_rÇC—°²ìÛ°-ï¬ý}ØP@Š€„ˆ×ÏùÙ~"ëê%_—ÎóP®®‡­)O±JkúËé\?žÿós?ÿßgW¿ö úŽ* þæo/=ñú£¾ö yö+ÇÌîŬ=ø?³yå™b˜ ð@ŒØH y«ý—>ójP¾óÓ—™„ÜóÐ/~òË?½ðêß~ùÇwXùÎ#«)+tníÙ /QÖ4ÂõãÙ?=ó‹¿üâ™?=Hˆ‹Š0›¿ÿw yøù[8I?þõ¯á¤–Ñ Fe°”î™fèËÌ[W%ÄÅZ”„ô<ýÔ ›yñ/¿zêõ'Ù¹,&Æø—C‚?Sô\Bíg½þS—,dámWr8áÛ±¸o¸4b:4¨ j éØw}ð°÷ðM½,ÀÝüGØýWAáZ2ïžUâFâ Zak’‘à­Rb¿ÂöúŸ¿þÏã¯>ÊT$SТê0 ag±X"Hˆ© 1yà»Hnp9aÛÙ•vŠúšöõA@ Y6²ú‰ÿC*{ýõ¾ÜÔ+~Äjƺ¶&Þ*­Q$„e!ŽÂ#ûòU‹Ÿ|ã±çþüÌê7V󜆗˦ô6ø\EØi«€»°Ù5vSƒ±œQ@'`#!’,ر+Eû½æÞKk_d)ˆK»ÌLÝðŸs™x<úú£< ±Óð(rýàÉ»Ì I|¢Ã €@Z…„<÷§gûãÏØ÷B¬Od蹊üä?~úÕIé»—ë¿Ç—~³Vã ›  V!!w>qëü¯Í{ÿµW\{é Iç;FçêÔqÅnùï?ü?‹óWÊ‘ã'µØ=Z\<¸~à©' Îr˜H‰@2ò“ç~Ë.zžq“ct¶è$åZHøâŠECâ.ÌàÂg$ØYþ}u~§/ûc?qô»ƒ€@$ !âõpÊõód{+!É6'žÑJÖ2W‘dm€¤J  IÕ¿Xã…’XÇ,*àä•4ì P@j éÐwæ{!t7Üt9IHQ…3  Kà éÚò°wHH,8T€„à‡oA@, @B,Áaõ  PòÂáûÓ¼f4ÄK«  Jlï ¯óØo§‡/§ó5>þ@@@ Š@¤„Ô}¸iËkß®ýÞUßê]ÀRñ½ 7þþæL‰l‚€¸ˆ”¦»Ôwß‹çzã–_9Ÿ¹Áœqé$öHƒ@¤„l\5~ß çzý‚æsæ±³ògϪ¬úùKoüõ-– !JcÂ&€@‰ˆ”•=¼ÿÁ")Ì™Ší; x:rWÝÞ_þñ­µï­…„”èD‡Û i( 9Xà¿۶ײL’Æ,„M%P2ràÀþÜßÇ)üQ¶¡žFƒ„”èD‡Û i( ùè£}…+M™†ú=»w@BÒ˜‚°  PºJFBšš²…*™½u»wí¨‚„”îD‡ç i( Éf²Ù½)™L}ÝžÚÚš­4¦ l‚”.YB:¶ü^ˆòެàwdÅ;µØFé-¯fTGi9°Àœ„”î$ƒç åJÀ—‹6x'­ò:Ýïy]Öh$DT…൤vu”{‰ ”“–‚Ô%œüp{íŽm•[ÿ )¿=p!P2²gÏŽBö¥5[*¶®‡„¸L5ì  P~JFBjk+Ya×$vÖVå³°F·ûúñÁ惄”߀¸( a7e¡€€ -[þ¾móZYBô{/à}½h@@ H0[û—ß´H{Øû#ꇽ×îø; €€H !PGKKpXŒ€€”¤„¼þês‡rW¯z 7Rµ@<æ£Ö­ÿ£B§£‹M[÷‚ïHÜ]¿¬!¢H|4M1†{!Ež`µ'õ(Š’Åú’Ȫԫ%&!aÄÊ-QÚžâ±3>ñ³D“Äú¯ :’èR¦W⇫ä9¥#Åy*Ì4î¤'!†Ⳃ24àb!¼ÚÓ;“ø|0J¢„ð°#â…„§YP-ß"N…pŽ"qý¤O|ý.Î'âñ–†„˜-Å)!vÑ´ïb+ịŻ2l%b!jɬ„œÒ• GLG6 9ן!ÐçjëKÓC DëÛHˆú'f!±3IZpiÖ_)… ÇCE‚;-ïQüˆÁ—Ó–±XŒšÕ7± ) €ép¤t €!Šƒãq{àKCœ¸„(£–Ø($„r”…ëXJˆ}x0¢¶(ç¥tÔE„‰_ÓY®[ă6^8†-‹$„OžT9‡5J„ˆ»§!Æî3Šx4¹,Œ(9Š‘ŽÚEä’ÛK'!ú©oê ñÒ‰)>êÁ_xˆ‰•ƒqÒ¤ ʵ’d0v0¢®¦ÄîTЇ ÊA›ÒYãðXh:•¸¦©XÁ7<£b‡5«kF‘Ò¬6 |‰sHj,bGÐTB¢F'¸‚XddŒ|.ÅÊ! Ùèß ‰’"é§&å'z ʵ3‘žæp… ‹b›Qփتv„„à'xÀ p‚œX>hµU©…²³H$ „X(a þƒ€á÷B¢¯…lýÇ[(    IÈ{oÿ@@$j éØwø°÷?¿þ €€HŽøá[áaïGHû\ü€€€D‚)  `Ib »€@B0@@, @B,Áa7H怀€%Hˆ%8ì   –éI½aLµü‰ñmRåDj†Í*G.x³ø©rcxw^n6jê¸øÀmj,ç«£ÒÛƒF‰$c{ÅYê]ìˆÐi(-ÝF„Ø\l[Qxó<£èÝ1uXcY3¦D$ Fs’ØDa«SN•¡¸°ÛHˆÐ¥à®ykQSÓRÄ`²ðFͱJ4K±D(1Tņ-MåØ}5]v÷!ÏÂ} ‡fÊ‘ŽYDŒôi£˜ ÎÉÄg WÐÄi›ÖzRŽÙ9“Þ^AÜ£,)uÒs•Y¶‘À!eΡt7¶¦R- "!áeýøQÎi£‰^ "Ž`‚aˈC”„£CQ^Ç¢]qÄÃë\qUN<8£¼í…ûŒŠš½vëwÉzV¡„fäƒ{,Fâ0¹W Rb¡‰–Dm V 7dšîDÁ±—¥ë.5§¼(˜¢"}šŠÇƒòP‰©î|QIˆ©þ`sç ”QÏèca7”šÈK_RD ¡~»RÂE-´E —…ÇŽ…~4%Ëš©¥lˆØº»<-ˆâA \šàNlÑ®šQ®£iÂRB¢ÐÄfQLñd!šÃ;v²º‡NHHT5Í'ÄE«¨=Ž;¤ƒMSŸbÊ}F)´Nl$ ë}}vÇ01 ÃØ~%[Áè܉{âè¼È‰ÚHˆ¦Uý±aÊU£Áp?ØôK3ÊdMÕŠQqÖbÕé²nuçÔº5ÕµsìÑ먉ŒfR+w—ù;š±$“²@lÈ¥šQÔÒHˆ‹Ä}ID,%D<ÆÝUžY£o-HJC?«¨\JQk"âîâÚ–ï"öÂÈH¸²ézÍ…ƒf‘îØ Ãp”Ó=v8Líè(êÝ[ˆuÍÀÅî›ÔŒ¢¤Dœ¨)MSG’âä <1=.”‘$ñáØ(FH u¸uåùü :ê 0,„#EQ‘4:&SMe0¥Ä»pì3ê×uúd–ŒKÏÆ·0åbÁ¢9%”ÁÄ(Â˜Ž—QýX%ÇLe U6êØw=% ¼ w; DlMÇN†M4¤ m¡B§2F)…N#Ü{!­vEƒÄõ¬;M¼–ô vF…ëÓ-qS9'c›´'j)žð:Ö4;GÓ½ÉF vbåïsÄ*&‡÷Õ÷=Ö`weM{ ¡gUÄšA®$u8¶‡R¸±žèêD%˱[RaK³b̓ÅÐ åXÉXJ½/Mb#…rÈbÇQjH\€a—b$JxLcwâb7šÖGwÔRZvbÇ4‘ F‘Í1 w“ÿꔾ¦¥„XgñER?ÜsåaC9Þ4 OéRâN$léW¬±½p÷ÁÝ‚’•QÈPf!±}Wî%:cêCT‹tO-¸…¨7vÇE"ÂG!Á°pfì9+Ê©¤D”C2BâZÜ( )Œ„hXKÑk*¥"vÔ“ úI™ñ‰ðEÌŒ•D/bæ”za”…hæ e:E-üB§rU”g ±c;šî½Ð“Bé‡Ý™Ž‹×,ºYbN$& > \W&PšJ‰&p°N‘¤…o§p[PÚÔ˜rôA¹ÚWav½È³…<ô‚2 iŒET×”ãµv/¨)3JœÆîÓ2ÏôcAMå6ê…xlU&F™A8:ÑwWŽ{ÔîÄ,DÚ]ì£ôšØº>üZžÈ¢2Ô(Zá¥|”«šš¢_8 ÅNRì#ÿ@@ h @BŠvhà€;HH±ü¢% )Ú¡c  PìHÒwÁ«(   €„@A L°õ*ä™$¤LÂGžç šK” =¶°œ8H$Ê„´'ñøƒ± !e>bGJ…” TF ~2H” hbzþ @BÊ$|äê Å”@ R ³i°”à^eÑ'¾Qò’^SÙ=åîQ 4m–Re#˜o¦õéĈ½pçàØ…(FfSê…‘|h\æƒ{/¸ÒCñ6?¬c®Ë¡ê ­Ý¶ØÑFBD:á£K•à­¾fµ¨ÝÃõ•^i\Õë²]Ê´ ÔÑŒ“{/R²`4·RòÁh4Ý}ô#ªÝر¶óAi–ø8ô@±ð‘ÀÏþsÆÜhÚ‹†²R¡ÏgzM ‡w±‘MX:¨ÂÛ•[8w»ðmw¸†3iÕi4xšîS¦TTÓÖ>;YШ¾4@±“Ïz4• £^Û|° Îâ( ¦»[Kˆ2su\"‹“'*ÈÄŒ)U°—eO¬7jb 1l¹‡ŒØƒdÄ­»¸[ˆšýÄéµ 3"5²š X™PJÎù Å p¿bc„ûX !Ž’`º»‹„Äæá ú¹$ŠG쬳hÝe ÑôAúÈ®f°—éo±â£/`)ËŠØ;T±b'P²Üs)w ôuI²KŠXÏS åBBL5À±~>%„>‘x§bÃH>+XJHxAµd³«)ªZЖJèÄÔRŒ t z(ÃïÞ G ”¡ÔwDiAÉVŸ¼KØ•ý2²`êCÚór¨ó^CB%Átw.!’œ‡§==2(3åîáQ‡q÷`‡3ub4Ý´‘ʼG;Êx‘ „$hÊ4.ç¡~R½ËgB™'":Jý¼Õ„à«… P”‘Qún1YI*ÈæAÄ&ÄÎjzªï]˜XT/ŠMBò& ¦ ABJ |˜*ê—4zb'v{åY0¤æÂ>GõBÚ®«é$„xAB ! P¢²e¨•ìÁÕ”`{aõÀ´u}d$¼$„ú“ª )ð‘Ô`ÃNI0ÊB”§wÄ0¬%—…ÄÊ'‡(¥tú+êl˜ž²âÁ „€@ ˆ £bm…èD ™ÒeeŽ‚YDÐT#Iˆiâ‰ú É€„h®Ž„%SR”¨·±’ì –¥5HHY+:UnZ³„„¯pH[ !œî‚„lôNZåuºßóº¬éØw}ç»;Nܸò¡‡÷ï?X@ÿÐ4€€2†j«2¤*¯±—Û°ÿÁ%HHÇR@øh¨Jî8µcÅZ/øvz±:X,~ABŠe$àh@Bò<= !Dà"(TB€„ä™>$„B…j PH<Ó‡„[JÈc-b3|›Ô0¥¦rGnG¹{Tß” ó1hQôS¹QÙÇݙͤ,ç½tƒÒMýÁŽtŒ‰pàíJá;Ï>5G'Œšz\B­PÜŒ"aâNjZ·‘«„Xó–^3迦¡¨°ÞžçåñæK Šá2Âb»u7Nج~žÅ6¤Ù]s‡ qr»÷ÂÝB?ª;±ˆÜ},ĶE‹jDE•…˜FBb‰Õô­ÛHˆ2ÄóQ¢­ÌNÄð R:b Î1|óõ&ÿ}£/q h%„Î!J®,,ðA)””ò¦!!ÄXSNÕÒÎBÄu}l†DBÍ #ø ¶~XBnðºš|/D©ÖE4’rЩ%(Öa+ìC°…²LpÝj|ÃñZF‰¹ˆi/Qãca&HbžÊ£r²ú9Xak–馨“jÝRB¬³¨ FÙz'%|ÖÙ€2ÜÓ5 Á°e-î>(%Ä(|‡C¿´{¬Då1±Û•ÜÖ’Ê)éÄbCI‚¦bÛ*Ý y@b¯¸¤!!Iµn#!šë/xˆó‰rÕÄHBÜC',ˆ>›g¾é{…ÃMT°£A÷ÑÔ«‘R&5KGŠZIëS2Ö!žÒµñ¤váˆüùv}+E(!<èÇê ž¨Lš½ô§Ñ,%$8•&Y—Nê‰Õ45•Õx—$ƒz:ÁŒ‘B!eÆ„—É|’I³0væ9ú ¶h× w úOÙÁpè”B¯ Ü¨Ó°Œ‡RjΚ¤&…€(?aŸÝ-¤Ç Ñ%‹½ÂCìn$m á£U¹°Pº¾¢ ߎyˆ“ÛÔœõ¡ìN‘‡ ½u¾‹„¤=ð° @ ÙQ!ÒH¿õ•ÃZ%-­Šy¤ô >ý§ùÉB”¢D^µ'Bž˜ÓhZ‡„$20éPÆ»p¾Äw)çЬ¾Ã)+K–cÓñtqЬ+ói¶+%—̓„b¡õØ VR­CB  £*Š@”„(“¢*ÄfR¨¥Ÿ*%Jê&‰k”«y"¡äè†ZB:àaïŽ\±;$J Ï¢ô’è–‰1HH™ $ºQÞ %!A»%z"K“—ɵRŸ·RAøß*8JHp@y{XøÜŽtÏXÔÕ‘"¿"¢¿€¤Ÿ78‘E<® !DP¨…$PäÁºhÒiBä !‚B5($”$Dºg‰r«R!)ä±mH6$„ Õ@ R’Bv©¸Û†„ÇB…j PH<Ó‡„CBˆ P  I’gú"pHª@! @BòLB.HÈFï¤G¼N÷{^—5øj!ª@~@BòÃ9hBn)!Êç«hZ~´»éã½(ý‘nfç»(7FYÓT&Ã(]°p,¼‹x›{£’âˆÄ:æ>šAs±mé+„ŸóA¿sɽš9ÉÂþ!žt !†²  M}1®Z?Êø÷¨9oÚ®„ˆÂÚ zF¯©ìfweÜ 6J_©%†å÷§L£^Øbëš(¦qL¹1ÊÇÆÍ(qŠÈz’±»sáwM£#ÂrL#ü޽PÎäÀ& s˜¨cA€(!¦ñ:VoÄ…xleMØtÙ—›%Z°‘œjžk/õ6ê1÷Qcûãt¢ßn—¥úôÝÃ9D"b—…›¦w$ ž¹fÐzx ,rˆ%¦£é¾± Ø…"!Fk\b\.¬„ˆãrye{ Q6`½1j0èY•{ÐÑ[ ‡Ne„"1‹À^Óµ0J‰‰jˆ¸»;‡Ø oቘÙP†Ã}N&•KAL P$ÄÔ&%(‹i ¥¾©”ú¢ŒÅÖ·”—lC©Æ±ÚKÓýp²@_;‹¸í²e\³[·ŠA\ì‚]è4µÕŠEë±b œåJ‡M{¡WÜØ¾¸Ïɨ\*öÀFG­YBˆ “}¢‰æúK#š,©h%D¹ššXn‚õfظ‘„Ć-â¡å¢šÎZp°“— L³pŸv£IäF\T‹%¸„Ä.‚¥Àm” Äv‡XÁâÔÜYHWÚM½ÁÉ%é´¸=ÀAÜÈê‡kŠ)‚5¦(ç‚®¬¬´¬_üбÆ(QV¦;À×­á^¸ûeY©yú^P¢ûh*vä`4±c;«¼µ† tÄßNWTFÿ¨U²µƒ}%#Q6éÊ®©±N¢²‘ú0 &€@"(¢›HC0 $›…})‡„”â¨ÁçVG’ç!OVBòì|>›ƒ„ä“6ÚKÅ#!aOŠÙ7KÜIg!ÖnÿŽâ#xº¯%ѯ—$ë "!R£:Bé ñÊ(²âQ !‚B5($— øM‰°±Ì¿„Ð[”j*û ‰b£ #\¨ …! •ÞDÝ6&m×Ü]þ(œë(3ƒÀOî3ñÞ6 ðÂÿj$StO?ÈBˆB…j PHt kjVåšjb?Å„þ pK[”:lAÚ]5¶ãbV›…@BŸÄ‡%ä¢ ñ{!‰;ƒ .‘T\Ñ'"!Ê #VBÄ娂ä˜RÂ("¥bÓáÄKì…†9²â! !‚B5($ØH*ÒQÊ(u‰MVÂ;R¶(õÀTHb;N”LÎGúƒ„¸ÏiHˆ;CXÔ D­ÙByA$Dr‰’‹„ëXt$|öLß4²✆„A¡’€&ÞI§ŒÄå¶>Nòˆ•56O4'»Â>„O(ñ-D¦QþHÂ`$W"|}5HH"aÒ%@¶éúÑj¬# !5$„ Õ@ ò&!á ykº|CmCBˆÃa)!Ê_‚Jä¹ÊçSR¦LÌ5Ùz£p:LOº}ˆºÜgÔ G‚³ \,ð}éä£NÚp4£Î)‘t„@ ¨&(] !FK£W|nÁFB4Ï”×ü^ˆÅO‰=¼^y…M¹QÏNŠYFÜ}( AìAqHɂѤ/’î>pýþ5"€Ê.JWBX¯“U}$d£×u•×é~Ï벦Cßõìî8qãʇÞ¿ÿ`ÔH(@¯¬L©)>(ŸÉ¿„„W£Ð™HÈÖ âCxñv,VŒ£*PΈ ™Ø4q ï>EeBÌ%bb_Mõ­ZZõ *a¬”šAëY ðQ!;ö0v÷A¦ËIBŒNL¹È˜ûX‰¢d¶’p–·nJYˆ—’]ãç­G. '²Â}·ÌB¢ R²p†•pä9 —½…ͤå$!Ês\Äd%VÂE;E"Iå”F}w Ø—KH@¦Jˆ¦ï6¢!hqÁ#¬(bFB6÷Q@R\2¥N a¬…ØHçΡ¨,(%„…9ü%B < !ÄóI–ÎkÄ-ÒY)éj¾²&OD4fcC_¹‡Ï“˜ž×7²”Róéƒ2‹Â«w bsR(§£p‹¢µ¬”)ÇêXPžÈ’N³QK²®–ÏšÊκ¸$pɾ„XŒvp!€Y.ô,öÕd!ÖÊxHH.ºV> !yKQBôËð<;VlÍ©%¤#í¦Þbë ür% ÉóÈ–ô÷BòÉê 9鑿ï…@Bò9h b @Bb%[Bä !‚B5($HHžéCBˆÀ!!DP¨…$ É3}H8$„ Õ@  !y¦ !‡„A¡’@©HHØÏRñ\]HqºCBˆ P  I@ˆÅ¯pÎ6dCB 9K ѶZB:ô]GyRo!F› Ð DIH‘(‡ÆÂJšõ\ABDwXBnö !D5ÈX aNð:AMéé,ú·|GþÇûC«ÜK´£4˜jm@Bˆð !DP¨…$`*!R}M* OîÅÞŠ»‡…JÜ%ªfx{!iÚ†„ ùU !DP¨…$`!!RÔ‹Š˜gˆ™D‚jÕ”I†˜IYQØB!iÚ†„ 9Hˆò¡1š‡A†O|æ¾ÑÓi¤ÔÛ"}VZP®Ë¢øºû>‡ Ü¢`w4ˆËч¨ˆ£ °cŽ>DaOÊ’š\A£a}åîa³b‹¤ZXBˆ!«HüÏ›6Yˆæ— 4¿Bÿ)‘ óùÿÉ)qÙ%Ž´FÓèGØ‚i ¯9\¥^醲9#4••kaeìväR/Ü9¸[0]‘hêÇR O¾ }ˆ£ê»Hqå-*Rf!P‘0+ Q†x¾Ñå× Ã G‘HHø(JOB”G—{Ør·`ø”Jl䃤ßáÖcÃPlxµàÞ z¤ŽQQ#œÓU\÷(«‰¥ šúÒXHZì¨ÔÑ¥Â*DlëiŸÈÃѹ–XÏó\Á^B”ja½1J-èpÝC†Þ%â$âCTP ñD|PFOJ¤ ý q ÌGy̸sP7´%$ÏÁ¢U5—¶„H îÒÍoÔû¤^—lC™¯Dýd¡&ã‘&´{Ȉ²^XÅ®ÅhëtŠÁQÀ¢B¿$?=Ö·kÁ}>(%Ó},ŒH†×ò’H‹“³„ָŝFy@EJW?XŽ”ÚÃÞ5¦_ð Ô,’YôcÞ=l­:„¨dÅ(ø:êG”bù T)k ’µX ”ëh.!!Ä‘²”1i² —\•—CøFJ”§8ˆç=‚#V¹”£Iɺ¤ÄÁè1rXi9¥^9¦ñH£z¡™ÃÄÇ@C/Ü} YPyL-ÛÕ'>°\cܺGšÇyÙ|;]ó3š_1ý¢~/D<Æ(Ç›²eG>ðÊæŒ|HɂѤ7r8J?‚í5#³©r hJ>q&Ux];²ÅÐ wb»)Upצ-ÆÖOÄ% #ú8l#!¢J¹‡ýVn‘´®ä$ÄQ?ŠDB¤(#†r¾ŒëQ1.XHÆqî¦ÙRBÙØ(æ9i*¥±óVÊ?×ìôæˆ5-¢¿Ô#i]nÑnØ{ Qö'ñôç!»‡ŒD,„ÓmzÜ,ªÃUR £ÃÕ$GQp¢–ð”È[$£©œ~ÿ”ޏ¦»ì\æ1\jÖǦ¯o-!ÁŽv¢˜J¢¹’a—„²¤³åQ{ĺlîb³÷^Ä]î½p·¥šíR¿Ü}HÏ}e“ž¦Y] $Ò úˆÄN¼ò–bÉB4bH¹àÁ‰’¯@B,•b8àc}ˆ=’c-¸Ë˜‘6húRl½w9BñäRa½1ÊŒc§qíkj§êÒ°ÃÉg!ÁÉ%1-rÜÈE%|ÚŠ~"‹Ïu)ÕÚ5®°ˆVø¤¸n =z’±»Ãh*ûk¡z¡9”c¤<4Êã¸PžÆÑl”>2Ý=¬Iáu3ݦrÙMß]Ÿé~*×ýö×BŠA]က@ !!'=Òü°÷Øï…Ðc4   P$ !E2p@J$¤ôÆ ƒ€@‘€„É@À (=ûëï+¶¬õ†×yÙߪ®…¬|èáÒë<HŸÀú÷_¯ªx'RBÖ¯‡å)(   `ùÓm›×n¯z7RBØÇ(   `ç¯XþÁô£¶æ}…„7®²ó‚Ý'nìðå”â›@h…Ø…>¯q-ä˜a|z¦O^¾þ¨Aë(Å»h#µ°Æ R.ÚàËÀ©$ÞZ»Ä^øÕhƒ’øpÛeÕˆM ­ùÕh¨ ªh2»LŸ3Ô.ª¿ä9C$CŸ D†T€ôŽÐç*qPè‰57xç®õzÿÚëúãÜW ;?åu}$WVµ¼ào“*Ì,¥$Õ\‹v·@²…„Þ( Ë*ƒ^ ;ªÄZ'ºAª‡” CpŒâ¼X‡Þ¢ådû›ÊJCM'C­Il7¥ ”\´!ÎV-y2t†ÉÖdô~ìGõÊIÈg¿ïÿ‡  †þ?ŸR¡)ým1VIEND®B`‚tiemu-3.03-nogdb+dfsg/help/dbg_registers.png000066400000000000000000000246761220314353500210660ustar00rootroot00000000000000‰PNG  IHDR·å%2§sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<)ÚÞ*XÁ INN@Hr Ià~sfÏdÎîìÎìžsrNÂä÷ý`ÏžÙog¿ùÏ7ßÌ|ÙÄl{ºD¡~~öΙ˜˜88q±9Ž‹Q¿ìÚ 'Ä)]â”–Vø7&.îbëE¥å‚«Ä*Ê¿–ø©TóüÄœÀMQ#ÑÏ Ç­ÕhŸ n]•ó-JW_ UºvAç”$;ö¿¨(]|…»(Í•¦Êms¯ PµýéSXb¦éºÌ•°¾5qÛÅ=ˆ¤ÿÃoxübÚcÓ~uqä“H2~dôÓ†‚ DDLjÖ¯"ò°Ì†€“¸È¿¸Õô‚Ú4P ­A é»®lQFQÒþFØP¶?s øˆ]XˆÄ®¬KØxŠP’¹¬ÜôD›4Xè“ò¸-‚ßãÆÆÝ·8IÄŽ€nt„5­ ÊÜeÔŒ‡²ãÙReìçÊŒReÖw1ù5 ʲ3X€˜¸Õî¸5çeCkÜú‹ øþ%'ñ>ÙuÝpE¸ä¥#1+/DDÀÂp_Ü4¸ °ÄÍoŠ+tÅå×Å乕EõÊ=¾ç×ÃGõLÞYË‚Óè_ø6§Z™[ƒ΀Ì.SÆ¥d#Bv>ï@”LýB¹çd›ä:•%U˜` "Æ@зP'"ùuP?)°À½§ã@×Ä,®†ÁD¹Ç©Ì­@’ãPšˬSHf”€Äd+S@Ž)™ß"@dø¥Ç«ˆ%ýcô5P2ë;U0.>P+ªƒY^¯ñ»ø ñD³‰aŒ€T) .14‚ÐAàçÀOp€cL€@8’qP@عîE% c?‡ÐĈ<у&—³¸ZÉ­B-„kŒá½Ä$þGÁojgš/Zü«àZl.ûJ~U?Çç!f”ÆÏ,)xÒé8m½&{NÆ:ˆ\HÚ߃ÞS¾æ£dÀïX””Ó¾„PBÈ àp¢’gs#^®}ˆ/mçŸë.xªªØÑºá¹Æ¼Ç¼9?õdíôLÞæ·É=a‹ûŽ HF­CrËJHj‘+e©«ïÂÚ¡ËJŽü³®Åþ?X%_Î@ˆœ?U\ó‹ UÛóœër*в“Ë+¿wBù¢;@ÊŒ)s ’Y©%Y)Åûž5´öØ‘‚='"˜’~ûWÞ¯ÀÀƒ>gŒ¨ú’¼y»~^|áÅ6çAûvn¡h¸¯Áƒlz¡ñ‰7›~õû¦‡ÿ»ñ¾W?ÝXøKoÁÞ%ÿê]ô˜7÷Þy?÷ÌyØ3ãAÏ;Ü£ïs§¯¨ï¿ ,uÁ_¡ßcJ‚Uâ 2@ÉéÇ7Õ¾ôĹßýêìs×<~_õžÕÕVí*¨Ú±¤rë¢Ê­¹•÷Ís®ŸS±z†£ðÎò¼Ñ%9é‡'õwjª£ú¼êKÿA œ 4¹çäˆ#v¯Ý=wã\ŒY0ÎÙ²v {”i·Á¼K¤ˆñ7pþÞ§ßizî½ó¼Ò´íÅÆõÏ5®ú5€Ò˜ÿo”Å{>ê·Ç3ó!Ï´žñ›ÝÃW×§,*»nÒ>hWBIPJ€’©ˆ’ª]ùç^~ºîµçÎþö‘ÓOn«ùÅúê‡WU=PX¹3@©Ú¾¸róÂÊó*ÖÌtM+¿wü©yÃLIyå–ëPM`ÄJ~üwÊ—€{°¸Çì²C%ÀDá …´¤NÕK´Œ5DÓk°ïÜŸy€Ç_oÚõRãºg‹žj\ú¯Þ\ ãgÞÙz²w{¦îpOÙÆ p$#×»†®¬´¸¬Çäý¨m|z‚U’U†)©Ü8ø¨Ýûø™_ïªyt]õCEU÷/­Ü’ëÜ0ϹfvŪlGáTGá4å.[0²dÎÐ#Ó½6¬ªÉ°#H0%—¨#ކŸ/aR¢9 ÐHJÈ ì;óAÏÖÿhܱ!²ìÉÆ<böÎzÀ“µÝ3i³{ì÷È5®«WúJWÚ WêòºÁKʯŸöM ­„k•ø)q®™yúÉ­§ŸÚˆx~zœëç9WÍrf•/T¾hlÙü‘eóFÀù†ý¯—検•úÕôÁ¯¼Þ€’}€ÜË(ð%ÅÈéå8ˆ/&h&¸”ÐOUìlÞôÒ¹¶iºpw?PÜbãˆ]’íP²‘€ˆb‘µ>/²ä±ÆùàBv{‘ÌÍž1ë÷ÐU®Ô®!Ë]ƒ—»‡,wß¼¼~𽕖.%Z%~J b­Ù³ºæÑµàEˆ"™å‹Æ"¥s†’ó¥3‡œœyóWY,JÔè(÷2Æ7†q=Ç‘ššJÇä˜I Z·™W©ÊÜ |ãË{<òØ/ÿÇϽȳ$€ÈÁ#U ~üjÏ›õÀŸ%…íSvÒV7D!€Hþ¿5æ>â½û!)[=ãïsg¬s[íúÉ ÷MËÝ)ËÜ7¸º/¯´¤¼÷´?Ѿ„VÂ¥D«ÄO‰#D!h Ù™_¹9—è)_<¾|aFÙÜamˆL¿¡tÆ ’ìÁ_e zý¶Þ¨&#Ž!$nZ ÐçxËo¿8ì(Ú²?æ.t¹ÜE«öÕ¸Õq™ùK_Í,ø¼Žª'ݯö,ü˜†ðî8|µ+ûÏÝ#Dàß™·%Û=c·zFmvÝè¼Þ3p§ß*OŸž¾Ež¤¢†¤%Ýï  „V:M”À·Z%Ù58B*›7ܹ*»rýÝ•0©YwwÅê™hmmY&Åq÷`ǬŽýY}Y}K§'½3éÍ[»#J2Š•‘ÇìN`Ž“ø‹@Jð~ ¢Ð” p†MI^]\^l6"™{VCë#ÿù=´e—‘ûq;ÁqÜŸÂ8˜ø´×I{ÇL9†Rþ(ÂÅ•-pRfU$$?×ÒßÂ1S-]&nÜç±™_2õ@±Ð T5}…kêýîÙyæüÔ›óf+Y»=“ï÷ŒÛá¹}›gèÏMž¼Ië¼½×xz¯òô.rõ^\qÍä?£¶ñÕG£Qb¬¾Õ*A” ŽT:;ݱ|ªsílçº9•ks`ÊS±2KÓ:ΜΙIÓ{Wdõ.›Öûè¤ÞoÝr ªÉ¨ReT ¢¤ÿQäK%}aƒ§ùˆ11%°‰¬(ÌÕA¾d±mFÃÞô=nÒð+6¼Ç/üçÁøaï@šúÁGp0¤ñÒ·»à 8 ä„ü…á8imÉ’ZøêåOëá³Hna¤VS>2õ¨dc¾ƒHŘ‹çM.X ™¾ËM;ë!O64ðÞÉ»<ãwy2vznÝá²Í;p³7i£·×:oÕÞE®î‹œÿ’ù‘†8o¢¾Õ*É©S²ÏÁùSwÝk!+¦Î5³*Vg“&pægàã îºÊÙI•3z9³z”Oéñí¸î¿OûT“±•ʘS”›‹%×ýÒG |F”T«ˆ,ªYÚ ¾…óXº51} *ã³BšŽ÷D œ¹ü/pL:=žþ`é·Q-ÅövöTÂÀg5Jbç8ж¢àî̹F8Ö|ËTKÊىɆ1KÕÇä| ’ÉK26¸&owOß­ašî1d‡wàÖÆoööÜàí¾Æ›¸ÜuÕÂÊË'üµ¿›i”LÀ3u·'s—gÜ.Ïí»<Ãvy‰¸J«(É©ƒó%S“Ër3Ë&W¬œ^±jF"…ãœù·W.i›ãTÍèY9­{yfâ±ÑW½=är•_⫌^É”ÞÉ;=wyÆîöŒÚå¹(ñ+ÂZ%àrc>9±OéÜaåKÆ9–ÝI*PQ8ѹl¬sé¨Ê%·Vç!竦\]1áŠoGýà훺¢šdÖ"0((s| ¦d*l÷#Jð ̶/)ºArˆ’Z7!†fÂÏ‘~í¿…ã­Ïœ€–†'ÞG>?jßËŸ£°ƒüWµæ<}žF >âoœlOsÙõ·ä$¾…^-­—aêÁ_…D”¼¨gy 7ºF®sÛ̦dÐŽÆÛ¯ßÜx݆Æ+W6^v¯+~Ž3vôŸ}”ˆ*¡¦U² I™‡¦ßéq*ûf˜ô(îÿg*òÇWä­Xšá\2¢2/½jÁ êyà¼÷{«&_ésÙ·Ãâߺ!V¥@JFT£uzÿˆSªL…T6”Ö”hHÈSÄ©Šš­b”c¿ú"Îç\@°cÀÇÈÍ.F~"ýU8ŽŸð)´4|ìÖ喝Egúßß:﾿áòÔïl­·Ëô¯i%ðQõ4)ÏÃ%X'9‰?jÔ2«ÁÔC*ätÜC®Ó¼-½ß¶Î•±Ñ±Ñ3ê>÷m›ÜÃ7»Ó·xoñ&oööÝäí¹Þ{õêÆzãó\±³*b2|sœ(Ô ‡tâökaÐ95;­lþmå¹å‹2ÊsG9rosä¯X˜îœ?¸òîäªÙ}a¸GR9áåñGo‰}s` ªÉ´Õ%°{ƒ(ùÑ!äX|”hIWÈx¥Á¹®D0:mÉ­>\°}ÿÑ Xܺ¶Êü²2°€‘àåÑV êåŒ3½çצÜ{î'…çnYQ7te]ÚÊú´Uõ7¯©´¶>ymCß5 =W¹‹\0Ö$ä5ÄÞsNÉ*UF¢=aü8A*!éØð+ÿ9¾÷‰i)ßÏüÉÉœ[JîZ’“V2'íÔœ›Ks•ÏJ.ŸÑ×1­§cr¢cüåw$”Œˆýò'Ê+ý• P¢Ž8”`PÔˆue N§/‚$œ m !Æä qó…ç_9އ¡âš Ͻ[ÜÌÏ‹\Ë,Yng[SrO&Þu²WÎɤ{J“œ¸°dÀ‚SýsK“rKûä–öZäèžëH\Xqå|Çes+ºÌ®ˆ™^ªLüªïô?J‚T‚R^‹ãLëw¦‘xðŽ^‡&$ÊL>”9ðФ‡3û9)éÈÄ>ßLìõ͸îGÇ$~“qåÑÛ.ûæÖ._¦Æ|2Hyõö¾ˆ’l—êN0%h&LQ‚s¬q\‚ǘÚ@DÀÊzu2BÄZS-uwñ†àØÚåþq-®ZöïžÃßÕ¥ÌùôŠÑï^=áO×LÜíÄ}×LØ—8ñƒÄIºjâ‡WLüèò‰w›ð)„«q£?Šý©2êþÓ÷:v®ÅŒ’‚çݘ’‚gÝgþÄ”ßÝtÅk©W¿švÍËé×¾œzÍk鉯§'¾‘vÕÛ©WüþæËßÒííA]ßN‰{熘7(¯ÝÞ·úëCOÁ\šM D¯¾¸Ä·2ÿÂBäT 3ÞÇ $ Q­^Ô@Ä?y&³èv;ÀC{¤$¾ Ú‰-EŽ¡ßÃUp-®¶}%Ï6Ä/ö¢‰Ò‚¦ø\oÁoмÁÒãt W}@\Bù%°{ÂjJ³oyÍ÷km¿.@ÿ.E!šÔhOB8½´¨ M"!zd˜ÑøÂU˜× å˜ßíQæz‘ÀAŽ yü/> ’}N™V ëoê·…à@D##N‰o2\‚RìÇŠ™pr`Q¬?’ô± d6€ ¥àúý6‡ÿøv›.9™ N‘h2ØfÞz|1Ê…u,w|§~ÄçAðøvm@`;oßÀü H°)Qâ…°‚‰Ñ.€„”§.lû–k—¨|DD5¶@ûJŸ¯Ð«sœž‡†~×½èl·œ§«Ž…V,‹QRøÝ7÷€H;(“ë”Qß)I/+‰)Ф$O@NHJ,P««ÁØ+J܃¥jHJ°¹$%fØHJ$%|·")±C ys=ô0OêÇ&~›D_ JðS_"v°9âÑ–2\€×€a¡Úù¤”â”DÈÓéí¬ùJÓ ,³h)¹Ìx&¬ï:ГìX‡®9n·“ª Ô€#Jô$ZìÀ|:&LƒØQkq׿¨Î„ƒ§$à}~þÀS[Ú Cè ÇòdÁPJ;н_ßÌgÑ8i4QÑ9o#¤t%CO‰Ñl9ª)1à)JBiÿÇõ>ô£¼ž'ÝíBOI(ûP8¼Žy ìFLJôÈyCiÜÒ"^„;â˜4Ä¡ÚÁ&%AE¯áh{q\;RaD‰fjÓ®ñ™ùèÃ}:f ÈÓi’Í„Ûy:£aˆî1ú€Ÿ*,N E?=æ¬ÚÙÅO¸5LÑW€ek”Èú`,€¯˜€G]I‰Y“ȵWuÓÌ„»¥—™I‰¤„ïØ%%’I ß’¾¤/‘”HJø”ðm$}‰¤DR·›’„´cr&,gÂ|ÔUµ>þÌJèí+ͤHâ´(·ÑTN< ¤³ÚÁ%MÒUëàh$¢ð¤%JD6q´+ô‚û8`&%™ÛÈÌ}+^†ŠMJ,í‚jö/ÀšTUÕã(< •Ï/±ãKÄ÷±ÅKbžD~LRŒ²Gý޹Þ:ܼŠ(‚Y¥ )áÚ! 9™ú6NQÂܧýŠæ85éKyÂAI(sÕ¬ú3àféq 7%Ü>ÔÑ} 3W͆O —/á5¹v8H¾±éK4᪥èµP"2òFÆ—p½ŽvŽkÄãKB•«…Óf•¢%WÍÞ'pi8KÒ‡ººù”_dš–HÜmeä }ÀÚ«ÈGR¤:|F£¤„鯤/‘¾„?¾IJ$%’¾Ø”t“{”é¤/i£äømò½êo“KJèþ%)‘”ðý­¤DR")á[@R·‘ô%–)1ÊU³ó[ÔüŠŠ6²¸[ZQñ`+Vè£WM~sÔdu2 b62¯˜»!<©öš€‰SÂ4Óa·ëAØ/Bb¶¹œª¨MJ˜9žæÝ¨í¦Ü}KÙ7AêÔÐæÿh5WM$c-¼v`µ±zGM›Õ\5Ú—˜gGí˜ÓÐpóKÂ’W<%$s‡ReƒÒUÂn²^LbTÎQ‚Ï32N(}üë%ö(áÆYÁA¶hX/Ìò²JI»Ú9²ˆûŒ‚fÐazqü†ñŒà(Ñg$1³¹ÂëiÃŽAv´Q®Z{ÛAÐObš‡y9Í UÞ&%´_ÜOïL”èG^/¢ÍÙúñ‚—˜Ó̈£Ÿôj:Vžã°º‘x®Z4Ú>˜ƒKàðп²àK}?ßÓâd=‚Å媚çˆÇ%’’ -ÐÁsÕ¨èUî Ó®KúÊ—Pï¡—”HJôC¼öMž’I‰¤ÄZ(,G9âð‰‘”HJ$%| HJø6’¾Äˆù†ñ6z$%”ßí3y½ÌUÓlßmï™/¾ñ=Xô•Ðþ6¹9%äù™»}¢YH¾·ÊàŸÀɨ;Ù1rÕ4T™ÈbÔ&%ÁäªÑpã(< 沚_Ò®¹jê` ûk»úÍ^ñÍg7J° 62Ï/‰B ˜U²A‰%;XÈÙ3Ùå7ʱt^ƒ‘Î…†K}¨SbÉ–)a6¼¥“úšäƒ4ÇÐS¢w$ØÍPý¡c¿É“é)™yIæ>Õ%â¾Á$' ÚÀœ*ƒkmRLôÚÑ}‰~j£‰ÒD£xñpA$‘¦èO23[ Ò]Û:6þ‹lmo¹I7\/ áL¸CÏq˜”`Pè¸D(Kp>ÂLG?‰]ˆ>3Íü$…¦?W¼‡Þ˜’ sp¢o€_#¹ªF­ªA’¤„ÅŒ¤DR"} ß’¾¤/‘”HJø”ðm$} ›™÷J³#)¡(¡ÖK$%’½Õ¯½Ê¿îØf%éK¤/‘q ß–)1Z¡Ù x‰hÝ"_N< IŸŸ%´BùGª…‡Þ¿Ðïe˜oqi(éÐû8t…píãˆoÄ07wŒHпˆÀ ¤MJ4¯Èb¦®i,H*ÐÑ÷„õÏN{S ½ÅÞž°ø¦®y &OìG÷W”L÷„™Yš§Óç—0)ѧRpí`!¿Dœ'ºÕyh†¹&Ü\µ딘Ç+¬ÎíK4L˜ìŸ·µ£xÛ‹—¤¬Ì¹sÌU³J 3«Þs±T’–2§3ÖrÕÄ2e®ZÀ—‹Í*¢«”…9N6Š®ç«\¡·¼ö*) ÒÛ—À{èÉÆåž0íe¤/ió%’£ñGR")áÇ&’I‰¤„oI ßFÒ—HJ$%| HJø6’¾Äˆk¿Mng/”ß:ÑRBŽÜ~¢_{ Ç»ÔÞ¯IñÝIÓó,Ü=ø,$ÁukRÅΚ… v ˆ0™ÐtT}‹0›mÿO‰Õ­ÎJI4ص¨ÏgD%Vs´:+%Qe.%˜$ý Ã†‚÷%ëÐ÷¦»W§qô¨É<ÂJ¤ìÀl{¦w ûˆC"5ñ0¶3Q’\µpøT¦‘™ñ¬ysh¨²—h†^:ÚçFøfŽ£yRºÃ`ûˆ¯°Ý»ÿ¬=‹ÑC ÌjîżµþZËë%‚1¼ÌU§$*…*aÁ—HJ‚´€ÌUC+¯Éz9âð]­¤DR")á[@R·‘ô%’I ß’¾¤/‘”HJø”ðm$}‰eJèm$z‡y^¿vÂo“è+!ž«¦ÙÛÌÆŠ¾'f×È·özB¹~¯’ø˜¢ô<Ô-ÍÚ{Õôû^"+ôáØ¿‡NqJìÙ!,ïUóoÞ¨ Î|ãMà‘öºKlR¢Ù+×4ñ%áØ ‡N°¤%Ì-q²÷)º-þZñ’îën40é?RBOI¤ò*H÷ ĉN”pí–·Ü@¥qëê)Ñ;æK³Xô„†îv9t/}+úžEMÙ ²EÃq¹ J,Ù!,”0_®Gó¡É‘Ö¥Lk ó5[è)áö¡p´h8tQ¢@f.#×á¢Dï!LF=%,nlRBw‘Ô™|‰æyMbf€Ò8ŠGâ%)͹7.¡"\k”þ!Ò“’aµª)ÊOZú V{‹êÛMÂýLD?^0§0ô[Ôh×bt9=N±‚ ”p3HDcû޲J`<Ç Æçé)gë%bïŽÆ4ôˆÓÌ$×^ÕqIRbB­¤DRÂwj’I Ÿ\"È¡Vs¹è]£©œÿo“ëöq I‘ÀÞÔŒ’h¢YÖ%’ÐR’`¼'¤ãäSÚ½7ö%A>x'q$%4Q2zeG¯’I‰ÞóÊÇl4’¾Dú~´")áPb²óIïù &½vôzýcjÎtn;Ž8LJôÛžâ)=—Þ´$_0Oª0¾_Ð(—S¯ÁD'ß•¨æO­Od4ߌ, 1¦ˆmì J¬fKmŽkÏ<¡†™”Å3º¦¤{qMhzKv0y"“„4[vðQ9ô/ª9ôdŽÃqŒúP(s´Ð²Ÿ.‹ÓÈ»0BsÊÙ²‰Kô‰5š3zŸv;Ëp³FhÂëÌï-S¢ÉÞ³3‹÷!:;ÆÜs°rgСqÌS®0°íbMœGЈ +Zõ%zJ4k‹¡ìCæyV47âäYéLú9ŽÑXÃ<¯7E@/^g¦˜—3-qÉVž=Àº!§„ÿ[[âÖ1é"C¯‰Åì %a·ƒ8%¶F[!J˜^”9!Üæ°ÛkF #Ã\B1âp§ÁØVíjs/+h1±®b6â>³x1á*EQA¹ª¦Ž`F#Žxó –Œ¢Æ®Š¤$€’>º™°`Û‹nš(*()‘”ðq””HJ$%| HJø6’¾DR")á[@R·‘ô%’I ß’¾¤/i£äømrõ£mOÁíP~›D_ “÷ªÙKØë 9{þ¿#F‰fC¸=ö/ŒR˜HéwmB±£ßô69ÃÝÐáìgµã.•x¯ Š®Ehk¶ÕÉÒž°ø~¦¾dö„™C<­Ó~æ13çFÜJâhP%COI(óK ¢Ìç×;£bzãZ1wÄ1IzåÛ[7s ‚îâ–°F‰IwCǾ/ÁL0mJÛ1l™&f5Q—¹‘Gær&‚iIk”pGhMV M¿™ÍŸ™Ù±¸ègGî‡PÂt*œ\5#O©Î+:FpO'ŽPP”ØŒ^ÅãnÉ(£DÄ ìÞ¢i1ƒáÚ¡=â’JÿûKL~OØ(Vµ3ÌKj̧›pgÕŸîDFïh4y̓úJô–Þ‘3¡~:a3øß ,B 7ò0/ ^§è)ÉqlØ$zžN¼&ê›<%%L“IJTG†ÿò‰¤DRbâZ¤/1ó»Ò—H_":.Û>L.½k4•Óúò·¶äë ¥°ÐLQý‹lþÝ>š’h¢YÖ%’0¤$´nVj3±À®ßîkg!Ž®°¤äXÄ DDš-Teðí¼^W]]ÍÙ³ÎÓ§ÕÕ¥••'Îï+*N”—oh¨…’’È“A·AD(D·»˜¨«; kk«|Д+’’èBp‰% R_† ræLE°”ôÎÞ-"V¸ˆN(cUm*J`”ñ¹äE>ûìw€,0ôØ÷%ÐTÅÅßbùþûã%%ÿ,-ýÞá€! nPU[ ÷«µÑœpIié ,ee'ŽSNgYu5@­êlh¨³¡VRbÇ`(!9w®#‚¥¦¦ Ÿ’„´cÝ‹ÎvË9¡·2¡Ä{ÍI(1BÄín”„*t=4%6%ô_dãRb‚ˆÛíb6§&G愉HÒÞ$@ÄëõQ"˜´A¿¢É1`Ö„q4¶ !D¡„ áíQ‚¥Ä“æ4IÏŒJ@gSS£|l~ñ[ssÈâ¸0¬”à(!Ãáˆ#îK˜± 4àELšSŸíG›À±0Ab8ƈœ?ßt R&DȈ(ÁBSQ-{&,N‰>\¥in>o@u)¸‡« 5ˆ´´4sGñžÝþ%ɃeÕ3}I¸)ùãïgÇZ>?Ö Ÿ|ÝüÑ‘æ÷¾hÙ÷Eóû\Œ9Ž8%š‘ÖÖ{”à ƒö"€Hkk+7zåzõö‡ƒÜ‘[7=%áC„ø’÷>wÿýh3Èÿmþôëæ¿B”¼ûæw¿hÞw !(JèI¯‘ .Ø£Äh Áˆ˜«5Î"‡žq_ÒΔ|ò•EJÈž0s&L¯aXð"Ж =JðZ‹»‹DÌÕv JŒÕø’°"Bû’¬Åc_BŽM}‰.s€I Õœj¸J#b›‚!\¥1RýÓ`<³Ã?æ{Âô\¦}(Áq ðâ1JüÍÉFD¤Ó3áÃ^Ä{j£a¬¬CDVèI\B@ˆKÄ(Ùs4 )&¢“½Z½iT•,%½(bÑ«%QeÙÎT™ˆPòú§˜ô~x¸\ÈG_¶ÀÁ_5¿}àüŸ5½ýW£9ޤ¤*b¡äÕ]š¼ÿóü£ "oýÝûÖ_ë fÂ’’KŒ’–5¾÷·º?~V¿ï³,püöÿ5"ÇË<JÒí w&'UÏÒÎI¯‚®‹6‘úÎëÉo“KJ"çT¢Š]IIÄB¨åÀ¼bÒ—Hbø”ðmÔA@«m’0-…I-Ø(Lš;–Ú°b’0eG‡C-¦$š;–Ú°Pb¾'lž@o;;:jiJBžÎŽ ‡)ùŽmµô^«~ß5˜ ›l8£6v ¹"ûÏö ñýÕiaJìeGsÛÒ¶Ú0iX*Ðmú%¶+lN‰=µ “›g޶ÚZ¢Ävv4~ æÃ€Ñí©Õèdú{šMÚdöÔr™^m4]nÍ—„);ÚžZJìi&>œi5ß/i©Q0Kܼ·ØSnG‚º·%_¦ìh{j‰uŒLïûŽ€_P U:·mµæ”ØSu”ØÎŽ6·Ž=µ"”ØÓl>Ò|Aª5yí©:JìeGsÇã¨eÆ%ÁkÖ:(qŽúM÷f‰ÛVnP¬8ö²£¹”„D-“ÛšÍgÂöÔrà Ն}&|½ØzI˜²£Ã¡OF¡¹c© ɬGõ%‚”ˆlaX­–ˆN{ÙÑaÒܱÔZmfy ”„ä~RIG´€¤Dfð- )áÛ¨#öþÐÖYR")á[€AÉ538>á®j"¨œ”KÖ°!<äC…žã\‘ùÝU³O^~çñ.cAD‡¸LDàÏžÓ’qBi T1Á:˜ÔÖL]=ͱXmi›ÿìÈVb÷54²FƒÉC™>ûðÃÊà”>/)‰)J÷7P¦ ’½þüQ/P€ˆQ™}FBëÔ”iÓ¼W{9ý•¦VðÛ"D´¦kKÓ—hŽÍ”hãMÌbÈm–åÍĤææõjî^Ïû(¹öYôŸic ü?-Œ$M7û­IEND®B`‚tiemu-3.03-nogdb+dfsg/help/dbg_search.png000066400000000000000000000233731220314353500203150ustar00rootroot00000000000000‰PNG  IHDR2¿òýÇ sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<&yIDATx^í |TU–ÿ_‚Ò5Ê€ t„ ( DdG !D ìYdÛvl[´é¦GÚž–±?Îh»·£í§qkgü;íI*©%ûVõª„üÏ«[õr¹o©ûªRU/U'ŸóW¯î»Ëïžï=÷ÝzKBMåiú»q•+!!v´]ì.íNLð}Ùíji»{¢Ð5Q¸Ô ÿ&$&¶µ¶ —. ]º]á²?—Kð!ÿ$Ñâë/áB|µW¢‚îeØn½Bò dé&\¸$tó"q¡‹Ð­«´O¸$ÙE/PWµ BWoâ®ÂÅ6¡ÅQóZ·+²,‰%Ì9Öm³ûÖÖ¤=m7ÿL²O´ÝöL[êÁ¶Ôß¶ûµdéÏI6ñyM# âÍt‰Õ¯â­‹U=v(ä &J“ ºÒ.0`­ÛÆKÂÄBê2ŒÂûo= @vYV LvÙØØ}ûeH*“™üTÀyû¡vJ‰Ñ;qˆm€b¤™d›ÐEE6ØI$¡N6BX÷Í­`Ââfaü £ÐÖÖ&Lú»eæŸMX[ &¬«%ˆ&º7_P…m­‰[ÛÀÈ6ü+ï$dg·-—!Ø’”h±­@ÂÆËñfСÐdÂñyb º¬mIÌw&®mLXá–7 xÿ]Ò}{VÔ Ä–ÖHÿ·9UÂâjÉ`Ø‚raÊwBz±„¤tn XÎþFx ¤ÝòìªJ‚(ÀILBTäo¡N²­m„ú¡¡±¯ÀêšD°•Õ +«`¾ &<`Û$˱ú x#6¿L²¬R°„ŒbaØiaÆ’Á09ö+¡÷Ÿ¼Ë=iŸI_–óÏúŒðé%S†ÓB×7 ²ùƒ*|%L„þø²Ja)Z(Ô1FTPçÏ€GŒp‚Á)eú×>&F°›^òb 6éïpz©…%™ÜÒó[‚¢´‚êÊ*!¯R2ðKRc2Z ¡áT ÇRëáwj›ÅV˜õúƒ£àXâŸÁgòvmÅÞ˜eé± ôð[ÕÁÔä5G‰ßHA2õ Ãaƒ_÷b9è5,+èh)c)£HÑh—RÊã¾å8óòD%~6È”,zvøíšbkë¶#žÝ9?3ö‰3÷¸&ïpMÝåºw›dã·H6z£lTsÈç€eõcÖ•žø± Ž%55X”É’˜¼PV\ýô¶ÊGVØ·äØ 2¬άX9¹bõÔŠå÷‚•/fY8Z²ù£J3†Op|þ˜úÓ'¿æ˜$XÞú¡Äãµ 0—•>§Ýeš/Zx¤[˜?~ç-„(pÔ/z½ÕòÛw[žøOÏÃ/z Ÿ÷äÿÆýà!÷ªgÝ˺óžvçþB\ø„˜õ3ñþ½®‰»Ò64 \Z>jéÿBdë˜L¼'ŠP“šgvÔ¿|¨á•ßÖy¢ú™‡«ž,¬z,¿rÿƒ•{W9v/wìÎs<œkߺÐV˜eÍ¿¿bÅÄÒœ´ãÓ¾?{”T-‡©‚¥4ß…ÓËJ–Ì/Å2«ÒoªÌ· –1U‡ˆšËµ‡ÜÏ¿×räƒ O½Ö²ç%ÏÖ#žMÏ™žµ¿’È\ùŒ{Ù/ݹOŠóçì§ìt-l²¼ü¦éJ>ìg;¤LËÙ–•û×6¼ú|ãëGê~ÿTͯ÷T?½µê‰M•å;ö­2+YéØ¹Ì±=×¶yžµ`NÅê)e¹cOÌòÚ蛤š–`€åO¿¤¢% §žp2 e,( Ëød[ ÀQÿ‹@>óFËþ—=[^ðö¬yÖ(þ‹{ÁÏÄìâì½®Y{¥i-„Êq[c66 [YÞ{æ_%¼u5“Œr‚¥cûb²þè3µÏí¯þå–ªÇ *]ãØ•gß–kß¼À¶)Ûš?Ûš?KšÖ®˜X¾t\éÂ1'æ {ý®ÞRMî:!ÁÎ-}“XÄ2^Õ¾€Ž¥¥8ô¼Ÿ‰»ÿàÙ{Tbrݯ=+`Öú„{þcbÆ#âô®IÛ\ã6;ï.i©œ£Ö7_UqËœc4–t&ÏàØLüXÚ7Ï«ùõîšÃ{I÷׃|ì[sí›æ[ó3*ÖL¯X>©|ɸòÜ»aó_߰䤖Ìõ]æð7ÆÝ¢åÍǤ:¢e±Ö½ãGð“Xÿá¾L‚’›Ç_Ã?Oâ=M¶UˆªÀ2œO>ä“«z–@<à&gìïÛ LºÆlrŽÚà±Þ9|½kÄz×ÈõMÃW[}Xz+ÏdK6?–°ÌSýdaõ/‚8)gâerFÅòû€IËÂ1ò~˼%óF~—¡†¥oɰ„zŸ÷×8A Ë\‡@l±Ü£÷ã`a%G.(ÞÙÛÀg~aÁ¦ïvÁ™$0¹öWž¼§Ü‹wgígí§<ìJß⺫ÐyÇ×íë]CÖ¹n{Ð5,ß5|}Ó°Uýæ|DGK:“€X²™ø±´®g’ÒÜußZÇÎ<9ŸŠ•S*–¥—/¾«ÉÌÛ,YÃJ³‡—1ì{úI5¹û´ÄàÐãÔ$–ÆÆãX&.ƒ+* ™ -„Ïpt0bU;WžKøudÕ3ÒôuÉ“p>éÎÜ+ÎØ%NÚî·Å5¦Ð9bƒkÈz× u®[t¥¬s Íoºº¢ïlK9ÈS'ø–Íd¶ïܰtìYá€uWøwû{á™C8“lg2ceö­–Œ”Ò¬¡ßÏúæ=}}XÞyZKø~uô£Å¿ëŲFº´Ï¬w(ª¢„äýœ;&SÇ”ŽcRè÷ [°Ð Ë­Ëž’–yà¬2sŸ8ckÒ.׸í®1[]Ã7»nÛèX þt½xk¾+e}SÊ*[ŸÙË>Ãdu2oÙL ZfH«¤åË&ÀB«´ÜºcœUÚ6Ï·nÈdboEöms–ÏùiyÆ­esSNÎJyklŸv,IÀ„+ ¤%Xü:½B:Oð^;ë›|^É¥\€òÀ²LÿáRaä2\ÿž+f¶þ¯”;å0òLX'YûlÙŸ§\nD7®†b³5 J³YÿWô¶œX™€Æ’ä웫åCG‹ÀsÒ68g?êZð¸¸ðçîœÇݰ¦šq@œù¨8y¯8a8f—8b‡8x›;y‹»ßf±ß&±_³ßJÛ 3?ñ† Ÿ¯Ò™HXjgß²™HXJ‘̲ ͺ~¶ý¡ö- åÀ¬mc-í9ƒíó’m™ýlýÊçô;5½ßÛ£oj2Þ"Œ/•°xJŠ––àbÙb)ZÂâApX®¥[WàN0Âç’¦v2©mš@9*^Áž?±Ä•ü‘ÉŸì—³’¿ÅH(÷FÕ ßoÐ ¿Ifî¥ù‹Ù@Ôcî™ûÅ)ûÅô}â{Å{܃wº“·»ûnq÷.t÷.pöZnÿ§Ÿz±”êÏdu2oÙLr…ìØ_6÷vøMÒ¶!€´ožo+Ì–½Ý¾6l_v5:$;²úÚ3zWÌêýÃä^ï¦þ“T“Iá¾2‰Ì‘Å–7ýÆ‹%|–°¬’N—û¼ÜÀ¹åJ1ÑkäÖ2ÙdZhI¸£Q„ôrf[ùQ™¹N¦>aýè•ÈØ„ÀmRV5§osÎ|Ä•y@dBù8b¯{ðnÏOwºûls÷ÚìNZï¼n™£ÇÔO$¼•Tf’ù˜8û€8c¿8y¿8a¿x×~·œ $f3,saéì”ò¼t뺙¶™¶MYíLæO¶¯àXÕ¾[™ÕÇ1§WÅŒ¤Ó¯{gD–@&ÄÌv,!nJXVA,–nÍôbiè-p(XÂÉHm„-`J,åô·:Ûª_1™3iÈ·hñ 8XÿeÍð+\ž~ÿ#¾ÁsÄ£î”=žþ;=ÿ¼Ísý&wÏ?ɵw›ä–~/e2™µÏ=sŸ8m¿8é€8~¿x'`éÏŽb3›ã„ý%Óú[ßU±j²uÝýrlùÓìë&Ù׌w¬º³*o„¼¿rÖõ¶©=ÿ“wnï&ÕdF½ !Sº± ¢%Ár6Ü%a)™LB©7ÿ^úc—‚Ëpw6˜°¶ŒÖ…FWTåNøŠÞI¶iÔUÕ:D>7§€°âRt \¢wnóÈ|ç¸-ÎÉ;Õ±¶×3hç–ž›¶y®Ýè¹fµóª…ö.½ÑÒ[žLh—f3YÚ"äz Áùûz—e„ßB€L×gÿ {lk§ØÖN²­I·¯ºÛ±"­ré°ªÜA°ßý—£•3¯µÞwÍw]õöm]|X™€åÝUÒ%xþI¬E˜ K¦Òƒ d,媌œ‰…Ò“À€ObòL6øwʉÉáòúÒ%Ò‡àv¸ £p \ôÆ…Í)«¤«êîÙâLßîJß.ŽØuÏר®´]âð]î”î;Ü}¶º¯/ôü$ß}Õ g—ù¶„tïJ¬?Š„” °½Tšž›p#Ìcˤ–/¹§"/½byzEÞxkÞ=Ö¼±¶eiö%ËR* €,„JÇÔŸT¤_ujt—·'H5™Óì ˜€%\ +ays‘:½X“pŠ(ÇF'ÉŸV´„ý¾'Ö¶ŸÄÂí˜?* €ï]›UÛoIýÕ wä7ŒÞÐ8fccêÆ¦ÔMM#77 {¨)塿››ûlr&8aúÚ}Es—„ ‹0Nºƒ„hb&rÈ==öÚ§ô;7gÈùyw”äŒ.]4¦4'µtajÙ‘–œaóS*²Xçô±ÎL²NéYqo÷Ò»»üãáµÞû±KB&`é›Ä^‰%!31ÿ<'<“ žš%™÷±Z´ÁµÀÚ$E‘)#'ÈIä€;‡ä•$Í-é›S’ü€%eiÙàe¥ƒ–– ̳$çYúçYú.·öʳ&-³]»ÄzÍb[×¶„L‹0í»™‘± 1)䮸™|sÿ¯ïNúúÞ¾ES“‹f¤Í\4}Ðñÿ1=ùÄ´þ'§õ=9¹×©û’N¦_{êžkNÞÙõ£þ6LøÓ„–ÙÎ+°”~ ¡°$ê,É*ŽDfA çÖVB£“‘ï,1>8ü^Óñ³C~Þsâû×Oýè†i½qÚ‡7Lý0iÚ±¤é]7íãžÓ>í1í³«§~k<‰?M˜ø¹0þã™®…c‰h!eòç&‚åáw›êNÿï©C^¹½ç룮ÿSê ¯¦Ýøê¨^OKz#-éÍÔëÞÕóÝ‘=Þqõ;ú½3$ñ½ÛÞ$¼>a@Õ÷E‡ßnЖ|¼ç–ä’€%M‰+%“Â&<ÏÎ '±—ˆ%n¸¨4ÒNiãÍ¢xŠ·E÷X×røÏí¿Ó 3:ÛÙà(8–è|&ï6öXå’–s—¶ôXî:üŽô3‰¡?©&o7ôÈn¼âÜ&±þhéÅ®îƒ;H|ÏDò>»Òû4Ëög Ҝ̗–^ƒF’u¿xXW´1ÊË’ÑX¿Ž†uWמּJ?{¯#‹Da±[2ØÈqJqüK6dËnæÔÃ…¾oå“I8Ÿ¤œ[¶c)ýFR*=oJQÂÔãð\éÑ>þGèÁ£õˆI/z¥Ç yMz襛lx¯ÜE‹ ¦ÃÏÝqfÀÜ2¢Úê)ÅÒÝ‘`pͱ{Ïú>’ý`dü WÀ‚ÁµèäRXØ€Au,§IXzÉ”á$ˆ2FH&§§lÿVNë [¼™¯ëI¿Ç…±—ÉÅw¾•Ø>EÝÇœíUPwuÎ9ùÍ$¸  V@˜Ù(Œ?+$¿*$ÄÒÿβw‡ Ð –¾w¢[ æQ±D,QÓ)€Xš®KÌ3fcM¢¥‹å5¸äƒ§—¨@´°„ŸUnyÉ·äƒXFk€ÄrQö³›Ëý¿ÿ ˆOT#SDKèCbbT 6ÏG,c£+±±£/–W§ž‰üU>-cÇѰ%Fè4XÒÏC0Ò@L‹ t>ËÎ×gXã˜W šXBÔ_û¦'±-cÞ±²ƒ%óä;€- rã¶šV±D,QÓ)Àb•Ë >ì'¸¡4LÙW™ Šb+¢X´þSf‚“ÿÀè¶}‰>–L];ªêœùp&c_¢ÕZ¹-…¿§¦T-:õ‘Ÿü¢_¥pP„+ære ‰ÃTÉ0eËÙü΄%g“BÄÒh)˜>2XÒ¥è;_t]“¹0U2LÙrzKÇ`ÉŒ¾ª¯¡å=ô3¸ÈN-yÙO磓XµS•ÇÊyÊé™RT+£Sa”E5ˆ)UbŠ`Zª_7Æ-”Χ*‘V0¢)+&ÏEuzŸž¯2õQõfØUú㪾DWU¿‹9AêØd†±¤•¢}šWÙ[Ê™‰ÒGõ÷¨zS¨²ÃtfDÊÎÐò­f*}ZUU5”yjU˜uZªÓ)EG]N†¥r‰5|¨tTYá«!÷ÐËr‹´Vbõó§5œ)WA í ºèNz`'Ã’¨¬º´¦½¬¨cÉ(£SåW¡7Ÿé/eò쉮†ar-lY,ÞoɬFj}Tí`åJ¦ÖÚ¦|8³ÁŒ÷¤Ëµ2¡¿¥ûž©[ˆe)åVÖ–î ú@ÕV”K5A@ƒÆR 0R …e5ôkWd* 9­³°GuWåW<‰µ°Tí`-Þd¢H™Ceñ4JU´€UUº,Ï!ʲhà™aB?±j X-…™qG9 ©îÑç6òA,b%†Š¥Rn­QÕƒU£M‘ÎvÀ ­>3ʘDY¡`©5*Ñ£ƒ¬2R)ySuUö´Ü+`b,•™ÌV+#–\ï 1Ô+†«N`äÑ]˜N¥\yºZó@eU?F,#ÍÂ]PHÑ’'VèÌ6µÂ…oZNpÆ¥êÙú3až²xPÆ ý *¨ –t€Uà8ÃŽ~XãùVµ±¡GK}W 7$‘ÏŸÅ2àU>ô´Š8‡ÖDK-™céÃõg>J·#Yiy'Í›œR'¨ö:]¨NY:Ræ S1þ|˜lõ]V ¦×”µ¢åUVŒ< Â‚ÇR‡I—Ë©ƒ%}i˜ê}FÌNæö1e&áÓsF"¬@Xê3év‹üXªÞ<p'ÞraGÁâ"©@XªžOÂÜâ$0ÙÒâÑÂ’¾…W•LƒµÓ¿ß7’ªaY¨@XKåÍäÅ‹ø±¤'±Z *÷c´ «[`æÑU H,™uW†ÉÖÖK†°”%P>›ƒV£et}K˜AbIÿ¢dòòå˪X2ÏkQ}Ä žªíG,#æXPtKù÷IU&ÛÚÚ´°ÔŠ~Ì4—|¢ëXztKrÍ€“†°äy sþ©ÿ,¶è Š¥£¡+$–úLjazu1T ËஉUž[â‚j<8¶Ñ¨Á`i´ L  †@,ñÆ.TÀt –¦ëCÃ*&ŽIKÄ0ˆ¥éº$&‡l”!KÄ0ˆ¥éºÄÐ°Š‰cRıDL§@0Xò\K€ ‰ÉQ‚ÄÒb9G¬¼¼Äj-³ÛË«ªlôõëˆedúK‰IBÂR‹I—«±ŒIwÁFEF/–ç„[Ž I¡OÑÕ©ŸªÈiÅÉä£ÉÀ$ϳ|LòŒ,å×x™nd<KÑQ H,Uã$0 Æù,Sõ ¢hªîÀʉ%9ŸåóIÂ$<_ëÂ…žÛ eõ•÷O2{tn°ÔO©ÿ¨K¨€-åè­?ñ>O&2 ‰%Yã!½— “—.]4„%ͧŒ ³“|dšÎG-ºTQ>Ž„gOdzK‰C‚Ä’¬»Ê4Òq˜lmm5„%Ó˜ÓNæ.Mº“¦T¥‹9ljÄ¡ß`“ꀄez±@½¤kÉGkîJ˜ÔyÄ–²1JHäÀ¨ŒxªZ0óO†[­¨Kg®Z%–aí Ìh÷Õà°¤žåÓ,ŸOÊLê<4D¹¸¢…%}â§Š–?Î0HχuÎ$™9³N=ÑŸPŽU Èhé–ô[Yã¡™Ô–rFuË`ÀÌW鈪“Rk+ï§7ô%”ªV£c»sC‚ÄÒûÌ;M&ñ[èX¨@( °Xv络€ç²XÕÓHfáD9§ ¥1x,* ƒel´[ ˜VÄÒt7õ˜ÖW°bS±D,QÓ)€Xš®K"6$cA¦U±D,QÓ)àÅnìzÉwcÏJ¬iǬ* –¦)cñ°¡(€X"–¨€é@,M×%¡Œ²xll(Ë÷ßz @"£\µJ†–ý5–| 6ÿPT 2 paSl*й-;Wc°¶¨@l(€Xâ’*`:KÓuIlŒ÷ØŠPð?U¯òñ®€¡¡fPÀ–•ö“%ß–û{iñÿEËŠOý-’&7Zm9ÿ4DÐï9T URuQ~_2†%Èm+;¾ç¹ÿJYô¸0a{\Y¯Œ}ë~ñ’£â˜>–¨ª¤F@_2†%„ `2çÑÿø´è\d~Æ1O)'KÐðGž{5`´D•P%}¿ èK†±„8ùÉ·Åð$ØøûkýäÛ¡ùµUgõ£%`‰*¡Jº€ð%cXÂùDçÖÖK`Þ¿‹ñc/^MÐüúÚ},Q%TIŸ‹€¾ä{ÙüTuýû-!€â¤¿–83ËÙÔPWÍo¨+ -Q%TIÀ¾ –ÛããÊÜnWsc]m•KT‰gðB•TU KQtz­9~Ìåjjl¨®vXø±D•x°D•:KdSü˜ËÕØØPUí(3‚eð*}üñ_Øöì³;‘ÈV©)CW•G%6Z꿤œ[B= ÷ø1§³¡¡¾²Ê^jËÀ*íÙ³+7w1±cÇ>$z~þù§wÜ1rõê•¿ÿý‘¤¤¤ƒÙYt“J¥ùœõäQÉÿ~KÿÅwˆ¥ª¸,Iaà©¡ySPˆù„žCÀ 47×××9*m&±<*A´,:ùÛŒ¼3åÅ_ Õxå•—ÈGˆ–sçf¬O‚ΫiýR)žöÊGñ'V¦ ‡h<¾„Xr .¦åEª!Zÿð€žÏãKÊ—Æ’ ¹‡hÐ<’ƒrCÞ)pjJzg(µmjª««µ;¬%ü+±<*=ú›ï¾ “Øßý¹¹‹ òv{¹²ÚÊF‘=´ÉG©îTŠIw9„éú:]½0©¤UÚsTÝ#`Z7e)AÎãc<*Å–Œ v“ 5”L´äÇr˯ò!Z2Xž9sꫯ¾ll¬UÅRµ¥ŠI¬LOëä©ìýW)&ŒG%aI;¼m’Žá‘’‰¯ª*ÛÌ™3åeïzzÛð;†üû¿&I{m¶²… sàŸ´´THfV#*É…šÙ=*C'àQÉDXj[„óHiKÒ„œœyÓ¦M&å9s2'gxáĉéabRÕÅ•AبÈáSÉhMÌœžG¥`°„^0X»kh¨©©¶ÚÊ Lb9U*//«ai%ÿøÇ£›5kVïÛ·>vçRgQ€§ž<*±XvO;ð*2ôñc0½¬©®°•óŸ[­ÒÉ“Çy^¶÷ßÿsgÑ9’*uM”õäQÉ÷ˆ­[Ž I¡O–¤$È=~¬¾¾²ºªÜjù‘KT‰ç騒öÓ ŠCXzi¬Š+ƒÛGªe–3^,ËxUB•Táñ¥`¢eMµ­ºÚ §[°ó-­”˜<[zî{À²±ÎÂãp¨ª¤DƒÓ—ŒaY~þkxNû'ÿïï–’S¥ç¿/;6bÞ ™%Å'~üá›÷?úšßÜhÓw8T UÒ‚‚Ó—X,õ¯ò±–=øäK³¶~ùÍ÷Nÿß8±“ÇÿçdÑçï|ðþÌÂCOÿ‡ËY­%ª„*i¡ÁéKÆ~ ©´}ùè ¯Åç«6ü£ÓYåë¼± UB•t_œ³ }_2†%¼XõßÜh]µn±Þ#6xÜ‘¶ ÄHÕÀ¦O“ÇÝX_{^KT URuQ~_2†¥Þȉu@b^Äß ˜NÄÒt]ó¡P–·ðÝØ0;L€  ¡+€Xb´DL§biº. }¬Å:»ˆ%b‰ ˜N,o˜g%÷vuŸ[¥jÒ1h¨*>Ò‹… ô’OÏg¯[PÒãþ3]'V5áÞs*…n÷ ª–~NP1C%ªæ Q-Q­ÐjC TUI+C‰¥jh4'|B©¶=Œý¥Õưuº¦¤Z%òIƒý5ö¸0ü˜Ðÿeïý–½Þú¿äµ£þ ò‘ÇàUã9ÖŸ†~Óª•jêu;ª^œVbÍ!…iЦ%”Ú~e¶:{ŒUÏH5 ûCÈžàsBe>F܉ËoeßSëDP»CúQÓ£´„zY¢©ïï¼XÞø‚ô*€ ˜Fÿ£Œfˆ ¯Y§IEND®B`‚tiemu-3.03-nogdb+dfsg/help/dbg_source.png000066400000000000000000000417511220314353500203500ustar00rootroot00000000000000‰PNG  IHDRHAšy¡¬sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<CgIDATx^í|ÕöÇòô Ey"ˆDP  PBïJ Mš"¨ˆ<Ÿ ʳ vQ»Ï‚å!>Ÿ ¢TABz@Bväf'™\n›;³³»³›Ãç~Âfö–s÷|ï93;;©0wÙÁâ£ÇS{áéÚç²qÞ *Á‹³V…ŸžJ´Ÿð¯J5íuÕJžó*yNŸŸ*U:{æ¬çô_žŠ==ž¿J*zNÃ/øOW@Sÿi T8…:h œ%]^Ÿ9G–“úo UϩӞ*~¨NUôT9O;æ9­•?ýHV>ëñœç¯|žçϳž“YG6T9§+{ÚœŸúø¼BïPªL,¬:ëLgÿþ Vê/={ýг-–ŸmñäÙ¶Oh%ö)­t|FXô Xä*IŒÊ·Ð ¨õ…ã:VÆO4¶hž[O(@k•©§=wzZ|w${¯^<:Ø€tÅ‘Ù@uÅ©ùUçüU ¶ë=r à}Ããe8× y_£¨€\àH/z5ýµÎ§DuÜŒÉ_õpkS(UgœârÂÓngØžN?xR<öWŸ Å3ñ¨^òJÓ½•fœÔ=³ÏTšuŠþ~õúÁ*3ÿ‚€¯×Ä‚  T˜úPŸ:M:5z©tªâø“•&VŸ_aŒ×3ºÀ3ÌÿsxüZrdLžG/#Žh?áÝÄÏ\­À(S=]~õÄ(‰ØØq?y†*+£2=ã²uÈo½h Šö.Ød”ñù`T0WàŽ#• ŒÍ­06²f(ža™ž!ZIL/)@¬^ÖJB2” ñ<½ ìõôØ£xT·ùŸçÊ·4°=-¿ÖÞ°ì/):á~¶ ¼KÂøäQJ;¼¥mäv¢ïXFd{° ”À-Ut†nKÑ-ÐÕ‹N2` N­c,)@5à åò—ý`Céôœf‹ÀÖSt2K×aÖŽ@`›ã•­˜€n±¾ß`AÜ­@åaéžÎM?úçY‹ÿ ´Õ=Ü~'OæVäà )•û'Ox"3ýˆuK–ªÜîG-P·øN¹ñÇžoûÁ¾nì42b`0ä‹_äë¹ÀÛùno×{¼fk¥ÝL­Ü4µJó¤Â†wÖy¬ÕÄä¿@[}:v—·4ªO>ûèìì{ÇdÎLÌHŠOŸÐ3mlç´;º¦î%uD;()ƒnÒÊ€æÉñ t«»c@«c{wNXvH£ZûÚO5¢/¼Ï¹ö{컕DlK›—öѥщQV—!­3 ®~÷óÅ¿sòÉ÷N.}£xîóÅÓŸ)ž´ªhÂãEã+½¼hÔ£ECÿá´Ô—ð ïö…ÞŽs½-§Ô‘Ú|ÄVˆ®Îtâ?aKެ¸ûØÚǯ{2oÍÒÜss–MÏy`Röâ Ù ÇeÍ5TÖÜ¡™³eLOHŸt{Ú˜ŽÉ‰-wt¯ÿQ\óôœS%»É÷°µ¬N³‡ÒÁ¦n'0h×>c§Þ¥À.ŸÁ™;k$œºêã2¼Á“Ç?^ôÌ'×||ê‘ '¼\öùW.b‰U£¡º/Ml®>(ÖŒÀ[ºÏ÷Â5P=~eñ¨GŠ/)JXäë5ß×e®7v¦·õô§xo˜ìm8Ñ{ýoãIÞ&“ K«Ýû 2b“˜‚MwR vúøîpF­eà‹ÆgÍeô“6¶KÚÈØÔ!­Ë¨îs}JBãä~M~o¼ñÖÚš%·ìÕ(n´ƒHÅI°a²v¥‘p/J¶Î6É•¾ü:á*®`ln}ê úè*b(S@>ë·BK‡/ƒóê¢> }=îñušãm;ÓÛjzaÓ)Þ†“½×Mô^;Á3ÑÛhRA£;Ò®Š£Á6:>%À»t'q%çØvÖ‚1Yp ~Ξ9} A2œQ—Q]Jܵ)ñ1É ~ëÝhÓ­W•€}ó^Øðy„ÜR8Õ¯ŠûÁ>¢Ý°J€­ÝÅzn97C.{—Úáü»@ލ2Ù'Á0§7•ÑK ­9ûZ~DÑHV<â`‰ÛÏ*„‹Þpé{ä#Ú38»î³È×c·Ó=Þ¶s¼­fy›Ìð^?Õ[?ÉwÍdßµ“¼1“ bÆeÔŠûÒ±K<‡ìŽK:wéN bÇkW¬SG¶‡‹ÞÚ¥ï»GÂÙuÆŒéSúPt¤õ»>­oýÔÞפÆ_{¸oÌ®^1ï´©U¶´áíâ\Fƒ8Þ=M;òßS^âÐç’m À~Ü`l—Á¦ß›^ZÈH^Ò¿ÿ-ö¸‘ÀŸ“ÌŸÛ›Þ­|,m¶Ê£S½=à ‘=¢‘³v£%\`ÛL/ì÷€oðRjøÙ.›Ø÷ú:Í÷µ›çm5ÇÛd–¯Á ßµÓ|u¦øê&ùê%¨7.£æíç€Mv}J:wéNúåê'ê©CÛdNë—5kp\Ÿ98czí6•‰= ôÒ7IÐ =áÚôø:éñuSúÔÛ}{½wn®©¹zìOÛ}=hÃUñž ¶ÿk"–Á“ßAÑÊ<¶<øÕ(äqÓ×¢ ܵO ¤¿.Û†ˆ_õš¦£SuH°õÎɇí“5¸Vp†–S ãîó\âôPQâ’"¸¾¿¯ç}¾Î }íøZÝãkz·¯Áì¢z3‹jÏðÕžæ«TX{lÆ¥=·ø#G‰³‘h`‹;wéN4°µ(•2°eúä¸Ì»fΔuW"\$ϘOEìÌÄ™ýëeô©_;µwíÝÝk¿{Ó¥š%íR<í’5°ëïÖ"¶v]¸‰ü€±á”ØØc}Ú×Êà[füeØè¨—ò¸ékj2zØ${ƒ×¢¨µ9Ÿ[Ùtt¶sîX*FR6—ë_á«Âî+°ˆ7L(„Ϩû,ö–øú“õ\ìë²Ø»ÈwóB_ÓE æÕ›StÕÌ¢+§]™TXstæE=¾òƒ­MŠê~•tïÒ$æ{ú‡ã‡ûÞŸQgLéHgÎ1½Ÿác™ãcõ×yó³ÖËJ¸*3þÊ´^Wîé\ó½i–tÊòÜvXc»Ù ìËWùÁ†ß5°s´SåÑ%ÌX8Çë«ä/€·Á€þ%R£ÇM_ôبI‡Ô[ì ¦#R–S³àNJÅH}³ÃâZ`cƈ]Øó^oŸû}ìf Gš.,j0¿øšyEµfÕœQTcráÅ#³ÎïºEé4˜QôyÀw¿¯Çb_çžö‹}­@+º;1Ž'ÇÅ¤ŽŠMŸØ3cjŸŒi eTOêœ9¾}Ö¸²«âÙ µ²z×LëQcoÇ‹77=¿l`âvØ»5°s оºíÛÒã©à âP*Ü©Ϙ“ºAð‚|m``Ô‚pieê5[YïÍ($TÜ·ÈÑÏÉ¥#J¬â¾%:Hƒ¿º\p¤:#OÀgZðÅÛï- KÞMï+ŠYP\g^ñ³‹/™VT}BáC3«tòGìR'§:鵨¨ç"_·Å¾N÷ûÚ-öÝ `—v­èN ì'ÂñCÝê¤ i6®súÄÛ 2&uËœØ)óÎvYãnÎÕÔ8žÝë’Œ®Õ÷´»`ó U4KzÓÖÙÖ¾¶ [;¾k©mÄ.ƒmó\K’¿VLú žÿÅ3þ À›”¦$Þ R•¡¡œÅ•õí£,„ú¥ŠS£ë–#’Š©‘¬aåùˆgÌiXÐ+‡žh6©°íÌÂÎóø`7^X|Ý‚â«ç_>»øÂ©Å»£°ò ÌŠýÛ?)•NHŸ¤;qÒ3´*üqÛ•‡û5ƒO¶€mïבŒñ]2Æwʸ36sÜ-YcZfhœ3ô:8^ôÉ+Ù=/L¿ío{ZW~÷úŠ%`Ûö-9Ú¥¥©xŠ'®3k[1À6L1Þ•¦kO{„…Ì¢åá]²2¼Öës{ º"G Æè¶ûVnë›¾Û 8ùeƒNÄŒÓî½ufaìoì_»¹Þ[ïö¶™çmy¯É=E1óŠêÞ]TkVÑ%Ó‹/˜TTyLaÅbýWÅý3 ´ØFh±ê`ûË ?<°Eêð[ÓFŦŽMÕ.}Ô­é£ÚdŒl™9¼IÖà˜ìu!‡pÕõ‚´ØÊ»oªøNƒ š%½O”mî×Àþûv-|ûÁªáTÙˆÏz¬Öÿ‰"6/y®Õô³@¸^Ê­ûâÄ#KðÞ ŽÖ~¬áÇoœtü¦)ù­¦æ·˜ZÐbZA³ï*ˆ¹ëDÝ'jM+¬‘TIxÕ1'*;î‰Oñ´Õ¾Ý¥O6ÀNŒ°¿·Í…¿w©}°wÃ?úßx(ñ¦äÁ­’[$jqxP³”ÄÆibÒê¦÷®•Þ³Fz—êiª&ßRñ—=êû¿m `ëlØ%©ø¹`ëlWšt <ÓTú!<ŸP+þ’]¥ì‘}ÛäåùEdyy9´6=ïLÃQ‡jô=tUâ¡zÃRbFn02ùº‡ëJ©7*¥Î¨”«F§×•^cdÆ…ÃÓÿ6$ã¼ú¤xºýZ·Ï'Øv¢…ý1§Óžùéö†?ÞRãÇWmïZo{˜í=lï~ÝŽõé^og·:»º]µ«sÍÝ·ÕØ{áî[ÿ¶ëæó~i^á›Æž·Ú×ÕÀîWxØÚÇ]Øú#lýz˜ÆvÒIïYgtžET—CÿÀ)G¨_ôíØŸßpзÕ;~tI×/.íöÙeÝ>½´ë§5º}^£ûwû²z·¯Îïöuµ®ßÂÕ²J¿ªÐñ[O»/ëöùtûÞ£ÐVŸu LxΫƒ=áYoÞîvm¸î†êo7¿ä­—®oyÙúæ—¾Ý²ÆÆ–56µ¸xsóêï5;ÿƒ¦Õ67®²¹a¥®¯°é:ÏÛíëæü¶}¿à3>ØpñÌŽí¿É~V“¯-tóGýxëeêi½Tšò'[ôyêÑ (à¶SJ´‡R ò„?-òÊ–Êkˆ®Ð Úê½ÙïäÙ•Çi—ÖGœ¬<ªhÂÓÚGâ–þ¥9 TWî[pÎ96¤â¥Û6ܳ ßî*yúœÿIÅþg—=?•|Àð$í28UôKâú‡^Xü ¸ñRp˜¬B—ð+×ÀýWËàJ¸ö18|Ö5ØçR¤x‘X¨Å^ý§þÂ(ýŽ{zƒ[YJÞ5Nªá¼š,ú9vØÚ'^ÉÚCL»l¯Ðu<ÿL{ZéãNá1¨zѱük_óíÇ¥¯õþ;Ú± ´Ýá^ ,~Êàë\\)ºо= îÕK‡ý%¿êÇ¡èGà'ܾå¡ß"/à'PÌ»Ëv l?ÛÞ:äTÑ+hŨO4,{רV._€˜XtJü_Õ%ô[JK®Š×Ú^µÕþšIyÕÑ _ ¨@Ä)àé™ïi·ßSo½§ÆrÁ.ý…·h0*@*€`—ü©Qt T š@°lT @°£pQ£)òà\ì),°á–r{EG«r>ýèXĈž…e°É/xIflÏjÿdçìk•¡UêD´ß ñ.WÀØÆ”$îlÏjÿr°UV4¨æ©€uʹ ÚlDr]P6°siQŒÿì"±äPpmP\l•ˆÍµœ;ký !‹äYSÑT¬† p Áþ›Ù *Qú¯ò|U½Žú"qÍ ™Á©8i3e¿út$²P¨c„W\¬¦¨€6܈zõË%7¨Ø› VöPW4šÚJwõÎY¼©·ä[‰Hî®l[Z ¬,WÀ1°©alÉvÃÝ/ŒstYT p›=u 0 ©Ï'Ø©8K{ñYtRÍæÜ#êš`MTÀPÀØìe*#Ú¨³Õ$×–¬&¢’®ÊæFT²±ä¢³tÑ96)«iûš+© ›± *PH¬žcI8«`[2#¨[²+£¡QÀrÄvÖ¬ Fª vî¬Ø*à¬aÛÙÉ`o¨*à®T×@T#6~» ˆBh°«µØ§?é£w–aAPHT@û³ÔUqlK5ÆÊ¨*à`'2ÛÁ¤»BP(€`Gá™Uü‡p¹6‚ D¡v.ªËƒ šlˆB{ÿžm_~¶I/;~Þ‚ÝÈÞŽÜ+îH'öì—·Ú·gÛžß´…€Ÿn^…`Ìûdì•-sçàÚ¯Œ¹åšZ.ë|{»•=N Ö¹Ù{ Ø Õ\¿i<>ï5‰µÇÆÍí+W<øÖ†×®¾øÂU«V]}áÿ½øÂ³p$õð/ö&ûËö-Ó§oÔ0¦råó À øÚë […E>ØU[ì5nPOÃD–-¾oNóŽ7Œ˜7`úªqSWx·v£o¬Ý¢fß~=ìMÆ/H`¿ôúÛlCâ‡l7ç ÂÝ)ààwû¿Sè¾…³Ÿyæ™·¶þøã§uj¿aÆ®u¯Z±bEBïî6Vvj€yâMßÜ·î¯ýküØûâ—Û]0¸n8oÙ蛄EsÀ®Súh$°×¬^?¢Û›–½þÍóϾêÁ w*qàC]»Îl}ml­Ä}ļæßk¨;´Jÿ[¿ý€üÎvjîÞUÏÂ_'³·¡ÉI_NÞîûÞFŽôæº5*6Hê@oó^™NÙ¿¾¹íME#W?ýèk¯­½wä°;w.?î믿Njwóúõ뮫ûÄOX]@÷Ê Îûxðõ™#¯HZ#yp=ý.ý9þâÿô¼è©ÖÔ¨RÙpÅCÖÜ&Ø?öPóŽMV½ûÈ7»>û~ß7ïý°þ±÷—ÜñÔ€~ßÖãÞ[:Îl~E³‹F¬8 ’½¶®ƒ_çΞҵkGx?—-]¨ØUí‘e÷5jÔèõõ/æäee=”sR™¸ò7¿~¸mÏ¿Lû÷×ië×}²Žìÿtð‰_“Žý8ìñ¹M,q¨TC«íû~Î9–ºýà—;“·lݳéß;^ÐË«QìS‹ÕÞŒüƒÏè`“å—wûYb*½û‹/~ýdËoŸ}³çK½¼÷¿w7l{ؾ¨F5ÝrE°a6¾½nH‡v{öìyaåc¹¹¹«Îß¶m[R›o¼ñÆÐúW¿ôÒK±—_üÂó«WN¤ïlQëððZ{ÔÏËH9–ž¼}@ßêç>P|"w߯t¼°Ïß+C5•5Å:áUÀØpéµ^³«½8ûýÿmøïþoø}ë[ß½úÐÆ»‡?Ñëö‡Út¹·yÛ»·sÅ ?¶üA•é+±ë­Ï~_»5óím9ï|³oóÛŸ¿÷|šðWÚ§~ë÷ô‚f–âö¿ûš¿÷Ùúœcé¿þö—C_nùuAµþb씦lC…‚ci\ªu¿z¹§i'†PsÓÖ77}¿ñ­moBÙðÝo~÷úÆï7BâýúÖ.~én½+E°áê÷55.ݲeËÊ»g§¦¦®ùDz]»vÝÛ¿÷¦M›F7¨óꫯö«]sÍš5u/¨öÕ–TV.’mèVó`|ÍÝ®9žz®­xsÒçf>}úÔ‰cûú7}¿cõ4;ª©ô†u«€M°ohßàÁ7ç½²eõ›ÿyé•-Ï,ß|ÿŒ—ÆôûgÇn÷ßtÛ=Í:ÎjÖkNl“.1ê`¯yoÙô•‰3Ÿ2ë©¡³WKZ™ ƒ}6gè_älí9¹ºRÉ÷éÓçÔýûÓ^µqÜÂçn£Êлš* Õ¾]×/OþU’?î `ïûvTøç?©Ø5×myù­m€g(ë·­ÓðöCþÎ÷_ûöÕ)ÑSô%¯.25¶×§žzjÞ€ø;v<:c ü\4dà'Ÿ|rG“ë \÷ ˆØÇ<ýôÓŠ«iöqí¿ ÒïÝýë{çé_fðþñë¾mvu¯»9¶úëm´l\e²X'¼ Ø»nÓ«¦<>úá·<´aÞ¼W“&?;lðòîÝïoÕq~ÓÎóZ ~ núò;ZvnªèRàÄ«6,»äöqõºãá^cî¡S¿=þìÑ¡gþxdkœ©£“:Bå¿Üx(û·¥¯Æ³T˜ÜØjoŸ¯Â²½ë…ÚÀöæi×TVªM]:nøüné:¼äŒªAÓ>µˆ}éÅ~øá=àšÙìÛ»Âëñ76òS}%Dì­š}ôÑG7Ö©­±Øo{\øSï‹îsÉÎþ1Gst°}©¿ÿ2âæï:]¾±]õWZ#Ø‘q7‹°áþ‡n½;Ä%ušñ̸)OûxÿAt‹{ m§ùͻοiÐ=ç>9uêCwÆvkóÁæ×=^TðoØ}uª‹·÷=sxàÙ´A'w÷;ðQ7K[ëáÐöç>œTëÁYÿ¿Z¥Ú8ïýòõÀ¶ÑÕê)Uá×C÷úñãi¦Œ`D”îdÑ!7¨ÖSq°a^~鹸& áS®)ÚmÞ¼yÜÖ­[7äšZk×®Ù²ÉgŸ}6²{ççž[­¸ c?Ûæ‚ïz^ôS÷:9÷œ9s¦ðà¯P€í⼜ßzŬ¿µú‚†U1Wqé°×±6 {Ôo]'qaÏá÷I\Ò£ÏâÝ´îqO›aKãç<•ôÀs÷´ïÛfŒòUqò,4&æZj(g÷÷?µ+!wkÜ£S®·tŽ lì:üÀxÚ?n5¨ƒê8»0Ðüó—Fë½Aî />yðü}o4Ó?SYHcS _PT«ƒ­­ÂŠá3­¡-›nܸqT‹àšÙ˜:@õèÖÍÿýïOðâ‹/Ž9HÅ6¨WÅ^sþç]/ú¾kÝ‚};½éìÕú¿I¼Y)EG³÷ö¨ÿÒÍ´­Q /ž)êÞj6Á†K² ýooÚ=&~n§ÞwwŒ›ÛknûÑKÜóÌt zÀ´¸¦Í)ÞØ¨ß‹¢ßgvéeÁO`û‘©wn¸5ëë^?êvÿõÉ!7ˆmûÞ°¡¡ñ‰”ŽS r“=èlCÐV›»Y±Úì**ýeýâ{ÀYôÀ&×C¬Ø8æõ×_uk«Ï?ÿ¨†O³›6npèàÏŠSÖ?îZÕ¶Æ7·]¶³WÌm]jnéqÕŽ¾wönøSçÚ3¯«Šw)Šöj6ÁÖí†û궬;즄™ÝÇ?8|æòI“ïÛ¶w+ Z}b$ØF+¸úx9ð^«÷V–ôÎJ\ýŽve‹¤Ýj?\ÉÛœ°vÕ »fL°×3w¯ƒ½ÆuR߃`V®\yÛµu bìЮŸ ïÚéùçŸoÚÈòåkHÄ.­Zé±¶W¼Óá¢Mí«ÃIõú¶Õ×Ýò/Þ|Á´úUÿ¯’oP±·Ð¡oØ`.ÜÿЭW‡ë[_Û¾w››:7kÛ¹dàŠ±:x³Õo8{çÛ'áçsk Æ@¯¯}:Oùß|ø ÃÙ‚K¯‘¨«÷ «ðÒ‹k\qù /¼Ð¬nçÖ<¸z¬&Òo)«Uå¡&ƒKe/¶:îõU[_R o)U_7Ô l˜ÜÿW¿õ¢x&3<¦-þü;©‡>KVA·ÿý`ÊŠE½‚Ô¿%côU€«ß°ð3ÀUÀ/Xß…õÛ…³“à*€ú&Ž ¿úâ†×_׬YcxŒþ±OT ¢ì@DÁ¶¨@¤+€`GÆý‘îghˆ@°lT @°£pQCp8*À»šÚT\84 @@2°;ð\ýЧ<_¤ÖvìHü«Eh3*€ ”ü‰.Ønø+Dh*€ ØS@û£|\°ss~Ç‚  ª‚û*… ØQ¸¨dÐl° ö¶­ïAêï wåB“ÈI¹Ü¼ÀõÇ\¢€îivˆ"6‚í¿z3ì!­{‚õD¹d‚6‚R\â÷QolãOüÈço5þÀ—(©Ù#*nÕ${ÃÙ6;4æ™Nʶý¦=c—(PvìAOÒ;Ï[ÿ4wzáÛx&‰S¢Ûƒ ¶ãæ™NÓ¶ý¦=c—(ý`“Nì”CÛî‡;æ™ú–mûM{Æ .QÀa° ¡ü• JƯz5ò§þ+öEÍY)rD9e€Þé(l+«ÁÖYó é$ÆËÂ%^ˆf8®@ÐÁf#÷ˆhG }×ÀO¢‚:9F'Ô¶ÂŽÂV1]GÌ3Fç^­5Vp­n›ÄŒçlØ ê9Ôn"A…ùƒ´ïpÓ®nŠö»Ö)ѰÀplÒóŒ\Z1bSñ“79$w6b+®„Sû]2×P‘]Ñf¬‰ 8 6)zNÈz!7ë¦2On"ªxuJî÷ŠOd¶zÄñ©‚¥\4•"Ñ_ÑfE‚¶î»Æ?ƒXòK,ŸEm¹3Tü<‰›B›$™ˆ%¹©ÊÔ¸\Åȃ¢]O$©!¯ÕÅIa5*ÀÛx‚ŠÜb—ÜnA©h7Ú‡`y\n^À!B£6<éeúÑH¶³Ë€`;«'ö&R œ‚.‡P;\æá¸Q£@@`G 8T *оËKÅSþø *€ D¨B°wïü *€ D¨B°ÿ·í,¨*¡ Á¶÷4cl…  nPÁvÃ*  ¨€Ã °`ï«™”W-ñ Ãã`w¨*BJÀ®Svƒ ‚Bùq(T 8 ØÁÑ{Eª€Ø¯àXÈ=Ö™”«ÁáŽ÷r5_œ¬UÀ†.)ŒT_!2ŒP9¢WVñT•:ìüuX“L†Q=CØ3‰2Rï„êJÞ3û.i$ù].£&»ú ÜãVÝë»M5°u¶Â›Š婬ï²\É¥‘Ðe©!k'×Tv»á’$°å“ei4ÝLgí6¿D{TÀ1°åqŒaHx¸ñ“ ³ü$ñŠ›H¢¥ÄfÊ0Ûk@…V.~¦á]ÅNvuÙ’lO[çÁVñ3S޸̫ø=rSà7•ƒl¶Ì=buÁ¸;‹¤gnîC¥Ó’›UÞªÁX?"plKTëîËM,IOåÖQ×t oÄ6VÑLtMTÎD»!FlEŠÐj4ØU[ò>ÇV¾x& ˜¦¹«Š›ZõEn¢«œÕ£¨U“¨”X²gÉ{&-¡KaÏx„z-šmª€lø?¥7¨pÀVû¸K%æHœÕ*Ø*D™2l:¨i¸S1C²¢„MÅ%sa”1ÝdM+¸_°Õ&Á•#\'#R!Î’SŠ`0úg“[îö¤×çZ"2UM³’¸T%÷ ‰ý’tkj€ö+N«…^ÇÀ½é¡1Àȸ©˜H®a¹êÁV]n6n«¶ ¸žÊiNÀƒ`Q¥‚Uˉ“AtlôT @°£pQqJ¨€ìI[± ¨@„*€`ãþ… D¡4ØÆßîŠÐ ÍFPP€½W|¯þÌ3T@"W; Ó°ÈuG´Ü)lˆBœÛøŒÁØuTŽè•¡¦d¯bûQߨÈO>بwÙn冩›ÁíY2¯àˆÍØ6Rp lÒõ×*G ª%~Ìö£..Û-uÄ´óà&Z^}šX p l²_SœHì¹»éÙ\Tüž[Ç`ËA¯E¬*à<Ø6¨¥âFWÜ”Þtª‘69eÓ bT@¤€Ã`[¢Zç™üGfæFÐ6Í–EsS›Ý5äÙ‡SÎÄ͸‚85¢ƒýP_¶Ç_C¬€éR dÚ’{5ˆ:¨Â¹3õÂãÁ›7Œ`C«œkØX#§š„ý êÔX~~}ÿý÷A|Óut l†%ÎÊMA¹§ßr­î,¢]#)±|ÃB°Ë«–f°©¤šÍ*%y&ååTzÌfËê~/±Š=·gyfÏL7KÅ òžÕ'¨8œ³Õ0b[¢ÑÁÊ¡ÛY¿ÁÞ\®‚í «–ºB°£ðv"÷ÐŽ`[¢ÑÁÊ6‚DlYµÔ‚D·vOä —%=éÁF°ƒ¨€lõg•;²;D ØŠº ¶¥ô+—7DLZbÕRe‘ÂѶº:ئþ&¼óÌ´%V(Ï p}KB;÷©ìÔŸ4¡~%åeßbãuD7Æ0IÒƒ>dô`/´ ¨† ÀîpÀSçOåO­íÆ£‘‚=ì?¢P›¬Iµ½%ÏóI\×lWäVÂ}—Ú8¸vÅÇ¡ÏQ@6ý›H«‚:Ûe˜%ºœõIZÁ„ÛYñ±7 `Ë‘3:RŒØòxK¥Ü’Î.!u‚À=_ÁÂK;úeˆ0Š@æ#2[Âð‚-§(\Ë!Ék¨e CÄ6½>!¹D Aåû1×ZÊçÈüµÊîìqÂ&„T+Q•ÛV—DáÈžò’V¬,ìHUQIŸls6†³ŽG™$±ÐÞ²Úh¥èN¡[e«mK"Ÿ³¡uE„u}2K¤^˧À†|Ôͦ֒»w°C¨HMé ²Ó¶òö¶ue°¦HPƒ-ò$$.Nòà#®" È›}Íb°ÙÀ"[;ÆOSa%0“mí!j¯• \É½Ï qÕÆœm6°M½“tM2’‡DItu l–yv¤˜;©˜gÌŽM¹ÈʼQ©ÝÁ¢öZ9ëâå³7Û`ïÓÿˆ=Õ,Q­ƒÄâ¡rDŹ ,ßk¨!¸Û;ju¢âpÜLØtâÔù «7O‘ØiQ{­TdÁ:rB 6®‡=‚GHðz¦Î˜ìM[ÙSÁ¶§[¨[ ¿ uà™y¨ÅÆñìh\U×ÌI²qpO1Ï•DÕ¸§ê¹F6 A°») ÛR¦ XÙô b¹Z&»\-w¨'ËeRB»])+EW ÙjÔ)€âŽjQB2‚™Ëë ê`sã­.›è-ªs¶‚mêwÚ£‘Î}‚е;Ï<°:®)%îâ{(e\nžµuß-§k„hGÀfc»©gGk=bËK[ÛšC°k”°É€ìØ’äÉPB¾Ur'è9ج…ç„?ÂBÖfVjj÷±ÑD²… lJãš\È@rÛ@!›B…bU—­cP°¹žF°)nYU#çKMS¥‰ ÀvWa·'ä`S>Ć Ñ.ó¬Jü²´góˆÍzªáßNì,¦BhW} 䛛Ȱ¦rm–To"?ÝUÄ;Hn3 |`ËÃå¯r®$®ÏsPs°Ù|Õm`SR!]¤µY¨ï_¶³;Lć lKTÓOFbÎÌ °¹þ͸¯9Øêoëò˜µˆMN_d7amF’¤Ceµ4e»m•jnöκ²r’llr¿°»”y]<IÇUƒ2Ûôê£é4•&Ï#ÂäØå}ØGì@¨&¯«ÉÁ–F;`Ë/ (C«òY‘9Ø*s§tfÏVØ´Ü´ ‚9ÛE8À¦f6°pC ÷*‘èTSz2É›ì‡kOÁæž_ˆ&.O¿å1œ ¶üDÀtGs4× ì_à=6~èZ‡lSW~~H þ¸*áZxK©h©8£àõì߸¾|ÎfÅ«Ám8–6zL!ؘÒû°¼²-]:<‚ôNy6ªÉRqEVÕ«•jØ*t¹l>*³|vòˆÜ;BÀVgÕU5¥_Û$ýž D܏įyݹ g[±Ý–웥 ›p‡ÖH¯¤¹¼s›F7"SqWáªnŒY*NbF!Çz<¯H´äÑŒÜÈÀ…Ú#ŒýB~¨Ê‹Ô3U¬ÂG#uiÊ{ç¦.ÈòÉÆpKRé=7 GPÄ–§-÷B°Ë;{A¿ °E¨“çÒܰÉMÔE™¶J‚íˆmª§1_;¨Ž]Þ;eÔFÎL‚GIrO,©†Tÿ’nSwòÌVž¢5ƒ·Æ¬z乆r;xë‚=—]¯v§êÐöc*që%;H¬ØxnC2ͳ1zP›DjÄŽâ%á®w„Î7BÍ*r¡é< `«Ÿ_qÏ1äWMmlä¢ó4ÓS¾Ð¬;_öD‹ÑÇ’‡µR޼:j`44Œ¡ª©˜ª2ºJ òWê/i×~£CîÜI1íõÌZ«2M¬ãˆ¡›rDjíYßeW6Û³º@l`¡¶ ’vù.£n€JM®8~T?Üy…¬‚­²¬Aªj°ÉiXr;Ê­¹‘S9SÏ6<’T²é°qÖ§©€ÉZ¥²Ù…¾ŽHùæ$G/oÝZþÈË%â'ð;ÏlPM: 7>“áKK#lj£!§‰©x ¹UyãÓö|ö%ªu·fÏ©ølÛ]äñÖx׈“ŠÛ·[ÛëÄæ ¤,¡Æ*+h#bSÚRâ³Rg"ÜmÎG¯lèFúñ7YS¶××ñ†a[Å'DT°+-‰fŠbY›íVÞƒ¢¢jÔ¦FEoOØàµ’œPû»mq+pÁ¦¨³ÚXÈls¶çFTp¦X´–Ç2ÍÆEvš2ÌÝzÌu‘Öà†kÒÛDì©íT+`“»7xr÷5r 2&½±$ñ@²u¸Ž¡lêˆMÅ#/¢Ö€Z`.ØdÃËÉíVlÊ nC <Ü=^4«Ëšíß) êÇØÜ —œ¾:Ø¢½›Úy¹›l+ÙUm,eÈš„ìM¬œ ÄÍ Ü3w‰yr¢¸‰dÇQÇU½&NÜ#¬©%¶©D®®àf°©ìIrúCÂ&ɹÔÁ&S0òœE”“ss.ÛծƅQ7ï;вDè0b+®/V³£@P© ¯2P¯íØ*hÔ)8h'Õ‚ÛwÂ>4öà”N‚íÔýÌÔܹqн/šìœ½Ã™zWr×”ƒÞo˜ÁÚÆ]fÑ=íêÍE÷¢=88;§<û±¤ vµûj&åUK nô3 ‰V‘èÉ‚-¿ “²M´ŸŠF¤:7¾UOÀúnP ì«KÿÄm°åáB˜ȭ¹Ç@E;Û`›6¤62cD±—Ì)LwÓ Ô¨ ÚwŒãÜ *Øž,6 ¥΃m‰ ÖÏ$y¦Ü)åäpwcï ‚ž¥)¸Zìþ%ß¼Xö,…\‘†lŽà`J DØÜ†ƒm 6^©€mgžÄ³~梤Àê,lØ#±Alã,†Ä•””5 #v ‹Am;$‘„bÀž¸ÜÀ^°©MM²£©œæ¨4—ÈÍóí©­Â®€c`B5éR*ÛF–h l‰‹Û8¬±(§ è#:©VÉÏEûšK"eɽâ_<ã&oäAƒ%ã ŽDi'…Ÿ¢ßP£³Hj²o…ÀuXP)Ñ$$s§I6WY)Ið—wÅfõ! ‡`p,b£¸ÁV@q;å Á6O´M‡r\«lGv*b£¦ÁVÀØÆ‰F°­¢úç¦c!¶‡Ó6w ìª-mþí.T@Ü£€ÿÑHê­5ÀÖqP©B±M½[P—w43+ýµTœ{Î,çÙ€ßØ¢”Þ%`ë™0EQ”Ø¢#Ü͈\KÑ¥;®=ä ᣞ—OûXa!PÇc­Ù· ŽæÍÈJÿÁ.y²/%Áœ Œ„Q4&L%b³õånJíîȶ˩óTÀža)¹Ì; 67!gO˜-El²2½Ý±ËW¢D—{%ñV´³ˆÎ)Å<Üý0“`ëܨ–J~þ‘£GÒ3ÓZ‹Ød}”e0I½à¶5rOËÙ„Ü=ϨԗŠ¥TºÎ&ÕÜ|^ÔÊjĦvŸÈrñòi­6œ-CÉÏ?j©?~äHnzFê¹`_mëÎ3Qtµô)·bå0ÞyÆFHŘ$ ïèAšvK€­ÅjˆÀ–Êñã¹GrÓ2Rœ±l‰c±W§Â…k ò5 `ë<¨–ʱcÙ¹9©é)¿;¶b°u¤Z#vÔ¸NÄÍ `ûyαZà¬Ãi)ûü`.yü°½ˆí±Š ØnvJ´-p °äf俦Csfx­R r¶Fõþ䃿Øùy)và+‚= (`§þñ#<·l˶RíNþã·Ãì‚*j:°ó÷=?}ôÅÐÉüŒHfŽˆbÒoŸ°ìå^3ÿµvÓ»wlU/»vüg×öo7üQÏé'=úª·07bÀVÌØ±*¹ dgüÆß÷ìÛO)ºüµÂœ"_‚í–GÏF®;¢åN)!„Ç•ÈÏôyùŽûŽÑåÔ)Uˆ:'‹ Š‹òýƒö¥ýÓk&åUKª-ž]°Õ™¶µêP_ žcS¬ŽÈZë Úf‡§Éçž:k=5–{<57iO?ÓÊ+¥/ô_ ´âÅæD5Øi,‘…¢Nøvú·ÜD0;øC‡Ü"S¤žø¸h«C ë[7IÕU Ñœò§ú±á«Á_h‰» ‰[«9óUÏùÁ¾ìYí?,¨*E ü?l%hò]|AÿIEND®B`‚tiemu-3.03-nogdb+dfsg/help/dbg_sr.png000066400000000000000000000203731220314353500174710ustar00rootroot00000000000000‰PNG  IHDR”Þð¡sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ< yIDATx^í |Õ½Ç'‰<ÔT‰r¡ !ˆHEy?Bb„‡@Ñ„ ÈCD@©¥VhµjýhÛ{¥ÞOïÕú¨ýX[?õÕzÛÛkm¡(ˆH²ÙWÞÉfgv¹ÿ³g÷d˜ÙÌÎÎÌ®»³ÿ|þ˜=;óŸÿùÍ9ßýŸ9óH:xð 'ú;ø÷œ¤¤(è¾Ð§$ù¿ìÛŸ,÷Ká®Há.vÁ¿I))Ý]ÝÜÅK\r2—Ìq—^.Âü‹¨äá_DHꌈ[tJè7]XîºL˜ú A_®ó"××Ç”Îd®ï¤Œ»Hì‚H}º9î ßÊWpº¹çÁYo]æ ¸Fÿ’–œë»ÑÝoGWêÞîï>AlÔ“Ý7íÎ8Òñ|÷ôg‰e½@l拽]-r (ˆ_éT rG =ERª°)gäF(t¹ÀV}·\äfžä2þÊhÆ1¨%¯«¨%oië·ë¬ÊЖöT7ÐíÖgz 0GM\ˆË¨*€ ((¡FסËO4…¢´a…â4ÙbF1Öo[·ªË+|YXž¥ÏÒêÒg¶Æð#9\Õ'ós’¦eü•plÜï¹1oø¸6úWÁ¸fçkŒkŒe"œ9Èš À’’e’¸` ,-Çà#İÒçê*m];_öñ|OÈÙ/,ÜËÏ~˜Ÿû÷Nb™Û‰Ý¾Å 6©Ü=ö÷Èu-S6VŸüÆÛR•ô:3ûyj5• Oï¬{´È±½À^žc+]hÝ0Ûzÿ\ëú»Áj×f‚YVÜNl٤ꜱ•óFžX6¥åÌÉÒÃUj”k7½O€6ð1†£äsÖçÉóüùZXì&׌Hr4Û:D¢¦@b" zúÃ?÷>óvÇó¿íxò¿¼ýÜ[ñ¢·ì'žÒg<Å?ò¬?â)|Ú³úŠ'…¼'„Eûø™ñ“7»F­­´ö/[ãÄw² "i<úp˫ϴþêùæ—Ÿl8úPýáŠúÇËê”Öí+vîYïÜSè|hµcÇ {Ež­l‘µhfuÁäóG½—=ÉVßéÏׯÿ-×ÈN±ÝWE¹&¹ÁŽ\['ùVÂ5tT¨uòÜQ‚q­äÏ‹ïv¼üûΧ^ïØûŠwÇËÞ­/Ú¼%?&hÛpԳՇ…¥‡„%û…9»ù©®±ëk¯Ÿÿ>@Žºœ×² ×ê”´¾öbÛ/7ÿâ©Æg÷6<½£þÉ­u—9÷—ÚêÝàܽιkµ}ÛR[ùëýsjVO=¹xìë·_O"q(píÆ¿‰ò5Háàôœƒ},¯ÕÅ5$*€ ĉÐÓW}_¢}³ãÀ«Þí/yËŸó>ð#O!°ìûžåOù…ì}üâ}dd ÉÚôî)[\ã6ÔYøGB_5õ:É©¥\sîZDk9v´é… ?Ü^¨¼î±œ:v®vl[nßšo+˶•-&#Ó¢™µk§W¯˜rrɸ7îB"¹ó$1Ê58¿æ‡"×â¤!öÌ|cÀ¨€n€KŸöü‡wß1µÏz‹`àù¤gÙãBΣÂüÝü¬üômî»*gîÉ[ܛݓ6µ/¶Þ°ä1×ÄNBžÅ’: pͱmiã³{ŸÛPó|þgðãØ±Ú±u™­,ÇúÀ|ëúYµk¦×®¾ ÊÛÿø¦¥ £jÙ¤/rÇ¿9ý†^¸öÝH — ùZ%I,}Ö> lîw¢[ú°z²\Ó°6g¿?ì˜iØ7‰oòm\´s˜+€sjú2µâ#Þ5¦ôÔìîÙPã§luOÚìž°É=~?a?q“küý6?×|BIœ„äšÔI€k0WÐp¸¢á‡B¦Æœø ¶Àºþ€šeÅVnY:¡jéÄ/r‚qÍ?o\ƒîßE"p>E×V;9j«ìtÇW 9&F›Ì©YG¹Ïˆ÷. @}gcN‚n¢?Hõ‘àš¨@D€Æ<gÓj%?ö>åYyÈ“·_X¼G˜óŸµ¿³Â}ÛfþÖMüØüÍ¥ü¸2~ü&׸bëð%Šó5±“\“: pÍV2Φ‘áçþçîBæÇºaŽu]Víª;{ –{³%o\uþø/rƽ9m8‰ä®3b·œCÅ\‡Ïµ”up nE› pÌ']îÍ”¢æKci¡Œ¯ä²±j°uz2#Ñæ¬Ð¤hâ½Hv*Þ;ÛP^Hc“ì¢g<+ 2¨[‰V_±z—E¿ßnÇÀ½ÇµЀ§V¸óV>I ÿ.…àڣ¬=Bæn~Ê.~üaÌ6᦭ˆÍÂÈr!­¼=­Ø>xÑe\;Ÿ Nà[©“üz’®võTÇÖ|玕N˜Ý¾Ò^±”\»qC›måxÛ²1¶¼›l9#l9#-¹i§¥½}Ç`‚š¬Jnú×MÙ`>4õé˹æ»3>l®µÁm÷ÄV5SëÉz./ñuòËVÁË¿•dúQÎ(ô»ï7/ÿ:A÷ÒÛ®•÷r+q´4H& . 1¥4æÉ›ÝÙñË +¾ç)8ä™ÍœƒÂÂÇ„Ùû„{…)Æìô¤m÷ ß& ß* /wß`´ðc_ââïËb'„k½;o¥N×H2aY>Ù¶)ÛñàrÇöÎ `zÔ¾%‡‘„.8 Æ8–¦Ùs‡Ûs†×.~zþðßÜ>ˆD’iá2« ×F&ùáÚH¸q´’äkpæK×6äA"ð\0 ¸5®´‰>’NøJœ¯IÊÅä_I<³=õ, †m˲°Þü‹Ë‰p—×Kò­Ø­8 ql¸ À3¼Æ ÝÞZê†kÓr£e‡„|@Òãž…„9„¬ýÂû„ {=cv{Òvy†m÷ ©ð )w^ïøÎ‚O|\#ZIœÀG'ð­ÔIA—ß å5÷Þ ×¦Ù7çÑÛ–Ù+òY·r”dÑåK|›syš3o˜#gˆuñ¯fþmÆwH$³œÜ=5m+ ×®ÿ‰kð™p­žœ&[ïGRãÐ BŠÏè“’˜±ÔJÂ]VؾbT w¦ÔØ.XlâBº,ßWЊuËÄO{˜Ÿº›Ÿüˆ0þOúnÏȇ=Cwx®­ð^]æéSäN^fOÊò͇ò]NŽkÉØîÜŒë`(Z³<£vÍ4ka–u}–µ0ÓV8ÍV8Õ¾n²cÍxçÊôºå#a ÉšsîÕÖ¬>§oO~{L‰dI»?e®Á]¡„kß=N’7×jpšŒegb¨‰4qúåþgØWtà¨Ål«&”ÓbÂÆE-0HT@³Ðàæ5 _Ó2öþÖÛÊZoßÜ6eK[ÆWÆV×Äm®qºÒl¹­}èVwj¹F ýŠÚ“ïkår,Ütò<º_NXÒwfêÀoæ ?·dìù¥·UÜ^½rJuAFõŠŒš-ã¬ËÒ­y#mK†Ú¦Úæ °Þݯú®äÝÆ½>Ê÷x!àEpÍ?½œkm)e`ðö*ú¢x 1ß»ZÄoiëy7‡mŒq±¼ NYúËÇÑφæÎ†FM[s×ØÂªÔ{«†T¥ÝgI_[3f]õèµ5£ -i…–…–aëmƒ m©ëìר®\e¿b¹=)×ÂÍûbdî×t:!I_ÑE[S×?ýü®ÔÏïv|nÚñéÇŒ9>ô‰£þ5?íä¼§æ ;5{ðé{ROe <=íÊSw\ñ¯IIÇýzÆHµ|÷e\#×yˆ¸Fßþ\£SmåRºíè¢8ë jQ;*†ìH<ÅdÍIÑI¼(°ñß…gÛÆ®øtÀÌ÷®ûá y¼nÞûƒæ¾Ÿ:ïƒÔù^3ï£ó>¹jÞŸúÏý& Rf~’4óS.󣑹ï?ÓÛÒjêqRú3žr­ô%¾ùô‰ßÍû«[¼1éÚ_g zmòu¯MôÆäÔ7'§¾•qÍ;“üvâUïNèÿθ¾ïŒMy÷椷FsoÌYÿåñÒçàJ‘à\ƒyßù5zmíWJQ1’¸Á[¦|t£¶å"µ”ÍäFëIs=´È) g°š‘V Oé ‹dÔò#äV°lKÃÓîä¥ö>;‰­7’ Àì§o¢æ@Éåop‘ÇJ[å! n’yÑé³üVnI \Áëÿ–Pƒsjb£ç×z¸F.õ¨&¯«šs~ñèŽÏÇG1Ëžç1ó5$]dÀ÷¶Ä â4ÔÀu¹ì9àÈ5|ß{„ÀqhœÂ"ŽÂŽ×Ä·\è¼’6ŽÄÅPƒ*€\Æi¤\Ãër#­8úG®aˆ´Zž+9<ÿ ‡.¿‰DXG¹þèD®OìhÒÛ± ‹k±SŒ$Ž›F®UV~Eíüù¯««¿±XÎÛl§ÓÖØX×ÒÒØÖÖ¢I†8±XÎQ«­­²ÙjŽÚúz; £½½-j‘˜¬:ú…5Šk†‹N$‡ú…™4‘ÔNË|(S¤7¨Éi4_S&£J$)CçÛÕsM}u‚þp™¬:ú…5–k±pt 9Äè¤7Âê9ĆqM!žw«¤‰~'½ejiÇÒjµH²W`´JMb§:ú#1kúÛ‰!GER,c¸¦\9M‚æká: š%~ÔÀ ŒŽ¯®‰!Nb§:ú#1Šk†‹NäH2“&!¸¦f>HôœÍJÔÓÄ'ôœPŒS£P¨uvv¨áš!‘â$vª£?£¸fˆ°èDÎ53i„kð>*öp•\“Oˆ¡váB§„&AóµpÍ×èDÌWH vñâ5\3$CœÄNuôGb× ȹf&MŒášdöSµ®®‹jhbˆ:ûÉp&ÎÔj]]]Q‹ÄdÕÑ/¬Q\3DXt"çš™4 ɵÐ÷‡)Ä—tÈ¡véÒ%5ùZ¸N‚æk½ ?)Ôä‘ubH$†8‰êèÄ(®",:‘sÍLšÃ5ñbìœ ?!S”ÀÓÔdI†8¡—ËùØÚÎΩ1¨E3“UG¿°FqÍaщœkfÒÄ®‰½¢@ 59M‚ž_ ×IÐT‹AÎWÀDj*¹fH$†8‰êèÄ(®",:‘sÍLšõ@£5•41Ä ÍÔzƒZ4#1Yuô k× ȹf&MŒášš{åÄ{ÂûC©b½uuZ®FÕ8rb×ÔÈ’Pª$ŽÚ‰!Õ1€kÊm¿E”ë¾wР¹?ôòë×BχjØ ÝDü6ÍNpÃxW¹ïG0öã*×b_Œ0 ×¢ r‚ï¹Ùgù'xó Z}|o ¶ŠH+€\C®¡¨€Ù@®™íˆFú—ý£±¯r ¹†  fS¹f¶#û¿¥!*ikÈ5T0›!¸F_͆  ¨@ì+SíþKe•¯Ë¥—á*€  q¡€ˆk縎q©G8nèñþ¼ß Òƒjô  ¨¹µ‰äkÈ5ßm^h¨*`kˆ3T0›÷"ã8ó5T0‹È5³ýR™cµ@ô( åZ?œ70ËO–žfkÛÖ9NY«þYsî³êÊÿ‹¾UžþsÔŒÕ*k9ÿw¨5Ô]ùp 8r}k˜¯Åнí5'ö¾ðßé+q3v%‚ ÎÙ¿ñ¯8­'Á”¹†â ×â ÇZ® ñ@æP+xì—Ÿ?WQéòT•êûè ¯…Ì×Pär-.€® ™ÚÇÿ¬„·8&Ì_×ÇÿüjÝTVù§Åé…kpýÚ+þërñüZ,¤'ƒD8ÙcOx;-˜ïï‚é ^\)¸]Pë–¦*åö€â ×â2[AÌAJ=¼“üu$†yy·«µ¹jÝÚ\2_Cq$ùæ 0_Ã9ÐØV€rÍëõx½B"˜Ç÷·57ÕÛÕs Å£Íϵ8íŽà)åš ¸}ÖnzãyW[kCƒÓ¢žk(r G£q¦@€k”h.ÓÏ·µµÖ78kÂáŠÓÓª1_‹³ž˜‰[€k.Hd ÏÇ‚ÁËp#†ÛÝÚÚRW輻kѧ·ºGT¦¶qÏ•Äq(ŽCcXc¹ÝOÔïA‹jº.û…3\˜2¿äßFTä¦`fS€v]Ú²¡Ïë4Ê5ýNtzPؼ½½¥¥ÙYg#_3PXo*…[n¬PjÄÁ|Íl0å@Õ@®±>)^ ¤S.‘ôvùÊtZ®“›jº®$_‹(×äúˆëȾ¨&L5â ×kq åmÙЬõô=º¹|²¯B–]S\¨-T—«¹¹Éá´U©?¿fˆ8be‚Ö‚ÊÿímC¶¦~M˜’jÄñ?WrDàùkx¿)óx¯T€k-n7 ©Yù:ñ _`…ì«%âT…n%ÞVsœ.WSs“Ýi;× G¬ŒDVS‰&AµËb”&LL5â ×â [‰w*éß(®I0$'Q¸%rŠ™k½Q^V’ŸÍ o¨…køÞý=®åmÜЬ5tEñ¶ô£¸0Üåm5ÇÙÖÖØÔhsXÏ©Ï×ô‹#W†–ôVÇpµÒ¬†dC5âÞo¸Î¹fxŸD‡úøÖ¹F»7û÷vq¡„š{²š®+™7ˆ×z«;ãDñúr2jÖ„m¨FäŽCã@Ê58a ÖÖÖdzkmmll°ÙkÃÈ×Pé}Tä={=×åž\ÞÜ¿àœþßXô€ ¥@€kdX?ךüŒ”è_›«Öֆƫ½¶Rý8”¦3Úv'Þ*6G¨FùsÀ‘kq¿Å‹xñC¹F74kÓ[KK]C}­Íòz®¡8²ûÞ+9ÑuÈ5äZÌ)@¹æÃY}"ÜlPבּZ¾öq­FÍó×P%®á¼A¼¤0 'åZcƒ½¡Áçž`Ù¬¬#P;[}îK’¥6[Ôp Å Æ5œỾ aA+[{þsx?ÓÇÿû™¥êtõù/kΟ‚³Ô®ªòä7_ýã½?„Z··Ù•Š#×'p~ ¹†\‹al5ÇK¿²xûs¯¾õîé1·:ñ?§ŽúÎïß[XñLùÓ¿äÝ Ê\CqBs­ßä¯q>ó£XS Îþ%„ôØK¯'ÔûC·ùO·»Þ#4+'8×î®än`÷‡"×b8m‰5ÜD-x×¼–©½Í!ðM¡Å+´z=ѳÎN!j&ª—«ÃëòzÚZšÎ+ëŒâ ×bn¦/jhÀ¡‰£€ÿ9E,_ÃùÐÄ9öXSTÀ¬ à¼fp¨*`6kf;¢fýÆz¡ê@®!×PTÀl ø¹Æî{ÇókêpMTˆMkfû¥ŠÍv†Q¡ÑT ×-µÑKsûÝ[¯`dK4T@bP¬JnÂG=Ï_ƒqè€g¯Y^uÕ¢¯¯˜uFÁ8xl›²ëÈ\L¬`Yç8%Ó˜¢såÀÈ·ŠºéTLs½TYóßê9(úœëjK°ëo/ò»%‹®Š‡¬µž>*ò|ê nü܈W¹Ô#7ø-nÄ+>;X µ8Q0m>[ÁAͲ:Êž•*u,tTÊ›+Ç×*[ˆª)‘P߆ܻ ¡5W¬ZÑBErïJ+įs]Lùˆ„tR·È­±½Jà3ìg>®]÷ù @P³(ðÿftÛÉQ6NIEND®B`‚tiemu-3.03-nogdb+dfsg/help/dbg_stack.png000066400000000000000000000207011220314353500201450ustar00rootroot00000000000000‰PNG  IHDR¨Üh4sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<!?IDATx^í tTEº€oăOò`@!ˆHe Ⱦ„Ä„¢‘ È¢"¸Œãs”fŽgß9ž3stÜÇY<:::of<óôQ†,ÝÎBÈÒ};aËû««»ºú.º]·oßîç?ávݪ¿þú¿ú«êÞªtR$Å¿ì/SRÒ ­ë|ot'-%p¿WtÝ;Mº,Mºp~¦¤¥u]ì’.\’RS¥TIºTt>Xö™jÅ¿”sVÔ‚üN·®/†ÕÛ‰?1½¤s¤^~§ŸK•z]†Ò¤ HÎû‘]Þ%I—ù3_&ï’:ÝÒ§ã´›²¤¤×OïíÓ÷týà $ßêºù@Wæs]™?ïšú’¬_ ™ù¢®à ÖH3̽eMs4} ‰Øíä'¡„)\Ðìµù‚4óˆ”ù%{@žº¶¨§nní½ód%ì‡=Óøo}>$аЉâšßàg,X¾ÆüpbD ‘þˆÃ•æÒ{ëEie»4íÅ~Ö¿¤¼©àDJi#ˆ´á èiÞ´­ç +H;.¦mïÁ×ð“$â œØkÛ%0pÎd’”Í—¬pT„½½Š%¥ü\jigZ™'­´5¥Ø+­k“îñÿ\Ý)ÅÍ–5Mè'Ü-lV6"eµÒœ¯¥¬“Aö>ûKéžÓ!)ª“Jêq'üXP'Ðtl"RÚ ö 1Ç÷6¥¬oLYߣ2ˆtO´Ò…¤Ð Š¥ I^HJÎIi1È1iÁwHà¨Oú_iÀïüà'|Šnø‚Á=ÀÏžà Û$"Án¡.Bw7Ü¿¬ziMÒ pUf¬âD h±`Ò€¦ö¬/Ô7Èõ¯øÁƒÌúLózàñ@Ï6Ja}ƒTT`‹qL|黯yðÝ3íòÅ.ƒÿ ”ň^É;gú®ôÇq^MßeUßnŒÆ’×Ý}g~‰VvzôŸ¤‘oøÁøxñyáï쇼söÎØdÚ6$·oö€Œ/÷ŒºÏ3tíÙ‰ªŽ|ßvð&<ð—X~å!êçªO6>»£þ‘âºm…®òçý ëg;îëX7¤vÍ4šå·#)_•3ê伡•Ï;rðu7¢ŽÁßô"~Õ£ñásÖ©óo¨s£ÉBå±a˜Ã¬U®xèåŽçßîüù{Oý¶ãÁ—;*^ì(û™ïþç}%?ñ­{ÎWô¬oÕÉËŸ’óžíõÎ|Ð;aSÛð5µã×ü¢ƒçU⟰AIӇξú|Ëo~ÞüÒSlxº¢áñ²úý÷×ï-qï^çÞ]ä~pUÝö宊ÒÐ;Å]ø·¦Ú÷hiéó¾ßï|éOçžy½sÏ+Û_êØò `ßQúSÄ~ýßÚûV=-/}R^²Ož³Ë;©¢mÔºÚë瀼ϥÀg#ðõûK[^{±õ—šÿû™¦ö4>»½á©-õ—¹÷•ûúGÖ»w­uï\åÚºÔY¾ÄqïœêU“Ž,õúí×#K<€¿ñs*â¡/ÀPDzZ.ðVR}]àŠ•?’ù7;÷¿Ú±í—å;îû‰¯`ÿÈ·ì 9ÿ19{¯wñ^4øC¸OÝ¹môúÚ ?Dîö[È«$§ƒwï\ ÈÏ:pæû¼­áÉòúGïs?\T·cUÝÖe®-ùβlgÙb4øϬ]3µjùÄ#KF¿qçdÉG`ð0džz^§Ë–>!ïþuÇÞCˆú†:ŠalÊWð¸œóˆ<—wÖïÔ­žÉÀÛ3a³'s“güÆÖ1%Ž–|Dƒ§•t;“*•Á×m]ÚôÂ{ºï‹Ï@OÝöUu[ œe9Žûæ;Öͪ]=µvÕdHoÿðÍšÂÌÓã¿ÎóæÔtÀÿà#4À x¨ƒ¡ÉßC£êƒÅJø‚2²rWíÊÐ.·° ƒyý¬—<×±ý1P_°K¾k;P÷NÜâ¿É3v£gÌFïØÞqÛÆÜë €ÏwJùÈŸ´’nÁ+•Á®ñéŠÆ?±N”ø©/p¬» ¨×,ŸHÒk–Ž=½tÜ×9Zà‹;ƒÀ]þgA˜2£¿Ê-aYéÂ÷ð$-º~@´i‚TT„+%b {¨bþn/Ìè@½ô§EÏøV<éËÛ'/Þ-ÏyЛµÍ{g…ç¶MÞ[7zGmðÞ|¿wt™wÌÆ¶Ñ%ŽÁKþBG<­¤[ðJ%AðÎÒù0££~_©{WÑãX?DZ6«vå!ê¹7×ä®ÊóuÎè7§ F–L>†(ßRI õ4xè¡ÆÁ§­…w5õ˜½Æ@tâkv‰ž¾¹°W§Î‰Áó\É4ȯ~æu_î^yÁÃò¬Þ©Û¼+²Ð<ü sR…'ÿqyÅSˆ:ü\ Ë:ÿˆéƒõyÎcòÂGåÙ{åé{ä‰Ëc’Gîð Ûæ¼U¼E\î¼ÞuíÂOü]?`-­×Ww•Jx95Ë&87f×=°¬nÛr÷…°ÈwmÎQD|]áȺ¥Ã\¹ƒ]9ƒk— >:ð;·_‹,™V#M«Bà‡EÀ…—ø'QÄÃìøõ2Ú„]BÜV·…ØSøà--Y â j%¾®œduª,­'êkÐ|ëýxFÏÝ/­‚'å|`ö¸oá~yÎ~9kŸ|Ç^yìßÈ]¾a;}ƒ¶ùTø”{ú¯«ûõƒoQ(”À]¥’ÂV)¿Ò«ï¾žÑ]›ryÝÖWE>qr]i¾¾ämu/æÎT—3À±xÀw³û¿—ùÈ’Yné®jÄ~ÜIþúŸùÁÃg¾MÕëÌ Ìñëå4¿àa"„¤t{MgPkPÜ ‘ö÷6ÅÇ@Ä‘O@sFI{ÖÏÂG¼¹ÉŠðÂÇîõÜÝqã.ßÀ¾þ[}é=W¯u÷û rwÐ<…’ÜÇåìÇäûåÙûåéûå;÷ûˆ(¥Tà [!½*;£¶(˹a¡ks®kK^ˆzÙìºÒéî’Ъ¾>o {IÇ‚ôc3¯~wlßx`q±À7Àx‚¶îýà /ƒ )÷!ÁÖHÅ ! ×êÌšèDñªŠp Îø‘.H²¶žÙ`cfÑ#¦À?öQ_ÆžŽ!»:þsGÇ5[|ýî÷\¹ª®×,ÄÍS(Y¼Ï·pŸD*½BûçtŸ ¯INœG]ôu)¢–¤Sèü ô>â" ¬jW智Í3{—6øÑ{;Fìé¸aWÇõ;:®ÚÜqŽžË—×¥ÎôG|ñ%tÛ•JÖtJ«: ÿïP?žÜ€½÷Ó?@Š«tŽ«t–뾬º’Éîâ õkF7¬é¾?ª_x•ó®+¾»óòwnN €ö~rzqêk¤lXi£Ã:<1¥ÛèO«@§…@ `¡×Y$‘¤«ó@~½‚X•!Íz5* P¤ âkpÂuËÛ3JлØ)Û­ìœÉŧ3áü$ÿKZàh%HèP%Åžt‚˜^ĺ?ÁNö¨¢ÓéwŸTxzØ=5kªG®­±¦zxQͰ¢š!E5ƒÖ9û9Ó׺®Zí¼b¥ë²e®”ÜiÞ×CsÿLÀs*AÃFñPòå¢Q_LNÿbÆ Ãs‡^qxÁÈÃóGT.þÕüaGæ ùvÞ og÷?zWú·YWrÅ·w\öÕø”ÏFK¿›>Ï÷„Gsx|dÀãõb_Þ©Ä¿ý"æ­G=Ö0¬Ôðý¶Ê­£–ÿ­ßÌ?^3÷/×Îûðºy\;÷ƒôy¥ÏÿËÕó>î7ï¯}ç}Úgîß`5—6ó¯)3ÿ&MûxhØT.%¿oÃà¾×Ö|´òsGýæÖ~oŒ¿æw™×¾6áº×Æ_ûÆ„ô7'¤¿•yõ»ãû½7®ïûcû¼;º×»£ÒÞ¿9å­ÒÓ‡6|søà;-zàaqçŸãñK˜ÕmiÅ­HPèÃÙY?~,›/`IÛt^-¸x´°Fð$;黡óàïCï$è%X„kˆN(e±aÑ+y¯µo‰=¬éì»Î{ð]ôPgè²ä–¾ù­as< õÁˆ÷ƒ‡w°;8!é?‰í?›:#L .CËx…@#ñªXóÑ(6‰hÙl‰XÕ(XÃûWs°’G¯àYn…,­ô!‹BŠ]ü_Éo‘–œ…W=»dR‡y<LJÀ£'º*twÎᔹ•pþÁ ×…c¼XÐèèøŸ_Ðîà5¾ðï($¡Ì‡W–P€í8ͺæœD»ç ð¦ËŒ8§ÀOx3»0ø=\ÀO ¬ ~ÎaÞÏžàÇ@!8’Ÿ*ºK²Å欵FÍÄmŒ±Ä°Eø•m`U?ðpï‰'ú—7÷)<ÕTLH{@ZØ*M;! {MJN’øÓÝø:° ð¼ê{Ì8kñ"âEÄ‹ˆ7ëq¶ò8ŸˆørÚ“4Å•CýŸãñ¶,i¼b{^á=H†à©3³¤Øí"l•"EÁãxxßwÃ+çxCàiÙy˜ÞOEQ ‹OE-Ñ1ž˜h´=t7W\«?ª3“@¡GÍ>G¢G]$:ïp–2ê(C!Ák{ÄG žqžÆÙ43GÖ YP­ŠÓSÑWôEÍ~¯×¡£«‘±” ¯ÙOÕKñJ{G͸۸!à­ŒFÿF€J›=`T'O~VðôDae·àéE"Õ3\Ô¯¨…Ç)±(«×}-æꈌC½Þ`«gw„Þ †MOÉ,±Œü6êY">ý¬["^o=¥W½&P껚ù»`ÍÙ´ÛöÇ4=LÒí »D|ŸÌãfíÇǨI1RÓ`Cåʈ7|,[Aݬ>[ðfY)ô˜î¾ïÎѯlÍêMï§B¡Y/"Þ¿/"Þ¬²¹݈o={ºú?i|qœëÙ1öÇ‹ÓO}vl¶¹»ícž|ïÌcø9¨7ÿ:³óƒÉ]ŸO·¿œÿx X 6Ûdz6·$~Hp?ž€?u¨ óÏ“»þ9=Q¬›_ûà“~û~¢È¡ßøùW_Â@eýX¥ þ…_½|á¥İÙQøŠ6C¿I¯ÌgZÛÿø?_V­๺€¿”`ÿ.ÖÖ7Â(%Àó‚¿xñ‚ÿßù„óçÏÉž6˜˜x^ðçÎu&Žtx=m-Í <uXŽÀPßÑ!'Šø|ÞöÖæ3 ®äûiœ+D…† ¼,{d¹=!Äëmkmilt×$x|ˆ€°TÉR0Öƒd¨7¨3ë7<(Çý7ÍÄ>¤Ð–ØàiÒì„b ˜µÑä×}"”ò³A9É…BçGZ­×ÛÚÚÒÐè®N€ˆ'ÀX«‡h2Zq÷ÅGEŠf¥š]"ÂJ V®HQä!INE½üFÓiµOKËÙú†ºªd¯îš?Φ™™Eƒ¼d¢ô-Ò-N§UÑI‘SO‰ºo%xÍø£I¬“WÌtÐk,«?øVp(P…¯é R“Σ¾&ÅÕÊ5«ˆ¬ +io?{¶Ù]ï²}ÄÑ4Aê%üŠ>A/9#;”T„¯Õt¢"â)K²hjÆùîR›ÔÖÖÜ|¦ÎíÁýxSvçô™ûJ‡h›±C±@íäšþHú}WQ„.«ÖCk w5/pNM“Z[›Î49ë§â~ü~ü¡ÀïÇ› ^oÀç¡3x˜8[[ÏD- <ê²,iý--MMNWm’‚çal´¬Ç ð±ó¸M4 ð6aµ¼Õ·I}¼M@Xm†oµÇmRŸoV›ÁöíUäd/Ȩg#û¤t)ÎDC$PfmðŠmY½ö0òîWÀ0ÝGtäš3Ñt#í£O}_= xvê8mÖLaÔ©é>NÆšÅíÃÉtKLOFT:¾5# Ëæ6F€7äOÓÀëE!Ý!b:Ú ð6OLaê Ù­Î,Àr`ô¯9sGŽûý€¬É Y¯^7h.$yyì±sY+ÀGŽN;{'‰mãŸÄ~Iú¦ ðIX»zà¨@ÄHÖ~ž|Á!ù.[^€OVôÐv‰ˆàOJb¨ï9½@D|ÏaÖR^€C}OêÚß{‚xŽOò^~‡ü¡>ɹwqg90£wä-Žp¼Ž}/†ÙPglÁëgbé1FáìT„4ÚkòGÞ<–ƒê]sC.à ¹Ë4ðšgî°)š]ÄP¿ai’Ïâ%’Ç4ðzµêà q2=slÁG +À›ÎÒBmð,çêõÆpºz½ñ_oðçì êU}KŠS•!‡&Jf½W¶¿4y?>jNQL·ÚßN.ðöož°PÏ|í¼¶;Ç4Ç÷PŸ%E³EÄ'Fãàû,)Jˆýø¤Àh¼¼qŸ%E >)0o„oÜgIQB€O ŒÆ!À÷YR”àϲ×b“3wê#Vê?š¦&eFÄ|ÜÏÜiÀž˜¬Ô¡]Ñ¿Àa wâ»n5ÆâÌ;ã'·’<üiò‡ Xb˜žÓ¿œŒxIxX€çì…ö/.">ð]«"âY#:5ãh¯¹~VÇçía\«³ç´ìFgaôÏ^Ó,–]{D)Fpg¬Cd³¡xB±Â$=ðâ÷ã­ð~ëàãèüxV-ÀÇÓûq¬[€£óãYµOïDZn>ŽÎgÕ|<½Ǻø8:?žU ðñô~ëàãèüxVÍ^½×¢™Â¸;Çïö=7þ@~kã«!¶àíyæ{¼‡ïF^ÓqzÞd¢Žö£Wzà5Œ¨í±yAÓÀ¯1ì¦'xqŸÀé~wŽ1âÙÇÎáO÷]Ncì_Ü´ˆ×?#„µ#ÞþØø-Œ¼æúHSoü×-8{ãª>‚U=gš7qÙqYΞå\ÑíZžÖ0îÎá}EÍ#êD{ì\Ö ðŒgr8ÝÄ~ƒ='§Iv.=xC'pXÆÎhcÇÉžÓÎä8m3 ¼æéâbðœ-aÇÉž“Ó$;7 ¼Þ\®wÍô³ì8ÙsÚ™§m±OŒÏÉÉôâуÇkc…AÓiÆ]œsŽ7´V«z“Á3vLÓÇyÆzE6â.ð‰ë>qÙqY.Às¹/q SàOI7’ÒŸcýªÄm³°< À÷Ðn À ðb¨ïI}@D|O¢MµU€àÅPß“ú€ˆøžD[s¨Ï û»sÝJuX²4;ñQ€7wwŽß¥öÜÔ»ˆzgîøÍH 1ÏxB‹ßY¶}6°çä·Ê¶¢ÏB4Âö«æhÁ³]ËŽ“=§m±ñfx½3wšÃ/ØÍÃX³Ùì8Ùsòû×¶L[ÇA•'{NÛbã7L€;=fú8ÄO(F´Á÷føfKÍáZoæŽ0†ÅâÌæ„-WT§—3F~»Z“Á3¶§ç£C¬ÏÆÞzsEfy@€7Ë“ ¦G€O0`f™+À›åÉÓ#À'0³ÌàÍòd‚éà ˜YæRàáÎ+sõŒ/pÌ2Bè±Þ¼õ>·E¼-0Xo„o½ÏmQ£o ÖÁžåÌÞ9¸X4U¯.õ¾{ÎXØi±¯wä!»sšuq&ÚPŒlˆ¼&<ž8œûñœŒ#ˉ‘ëã«6 ü#ÏñjÆôYÒ*ÍAîšô¼¡ždx\+OIJ[Y€7ä@>pæN õè«P_Ùš»ªçœãñxó€×›• ER¢dŽ>âyæiÓ'øDq·}ìäoŸfKŒz@€7ê±$É/À' H£Í ¾~?ÞÈs¼ÑšD~[y@€·ëŒà­óµ­jàm…Ã:cxë|m«šx[á°ÎÞ:_Ûª&ÞV8¬3F€·Î×¶ª‰JüC¦ïÎ)Ú£ƒxœ»sØHþMB[Ö3&æà±+éêctó †ž… A1 #£ÏræŽÄ xu1üàI¬÷„]cÓÀÓî"„¸‚n䜆:2'xR\ õÍ} O½ð«—/\¸¤ Àšˆggox͇݌DÉiZÄkŽêüC=»xv_AÎèÁëMɊ霞È-öU½¡—sUa¶2äӄȬ ¾O´_pÈÓæž°¤âñ¹eÃÀ“/F`o®)B›•à­ô¶êàmÃJSx+½m£ºxÁ°ÒÞJoÛ¨.ÞF0¬4E|ïÌcýË»yek¥•¢.Ó=@ý& õxÓm7…¼ÝˆXdo‘£íVo7"ÙÃ^½­¢™¢—hâ) ì-³vç,ò}\«‰9x̃n£=ÏÜéYW:1¬øÅQ€7„S°oOæðˆ·|º<KCe£¯9†³ŒÿzGÛô ì½A¬êÙÙ› ž½bs'xžz{fY.ð=ÓeÉÑj>98n…oØeÉQ@|ï ÇÅ~|rÖkEØ#Ü@~?^€Onìa¿BuRŠ>³üïà ñ3i<ÀñÐZ!Éäˆa&ð8Ö…$“˜À'SƒE[ðlÅ^D|òu&ðÉ×ìÞ"݈WoËöpO%_ó™ÞÜé5[=h¦èÍŠtþ …<{Ós&&råŸEý… ƈgO|Ä<„x¼Lk#ל‰<öؼlô¯ Œ‰ô» ÈìÕýƒeøà#w»°9ÞhÄ«ã•~˧&œŸg´ç nÍâ6Zóâñtÿ0q´àÙû™!dw"âÙÉñçŒ>â59ÿó·Þú€}üç\Àkçw± 5pE’†¼*¥?'Iýß’†¼â—CÁ üQ!p—ˆf†WPWÒZ!¤Ð¯Y÷Uü2‘0 ió¨k:¿^Ù°t=!NëÎ-aÍÔq®~p©Á&+¼FíUäçA¿òƒ¿î—è?!=Ìÿ2ée=nÓ×IEND®B`‚tiemu-3.03-nogdb+dfsg/help/linkport.png000066400000000000000000000227261220314353500200770ustar00rootroot00000000000000‰PNG  IHDR¡oK pHYs  šœtIMEÖ /ÈClT IDATxÚí}yœ\EÕösªn/³f&É„Id…‘ `¢FE²Dð}eÕ¸C?QY’ ~¨(ü7¢l*(‹ Š*;!"Ù&™Lfïé{oUïÛÓÓÓËLÏt÷,=õü:“ÛÕuOÝ{ªž:U§êžK—߸½`Æ5¿o!’Ø€¤Äoá($!"áH( G’”¬Ê@ÀôJQeYn7D^¹ÝËþõ¥ûýêÿy@žBØ€'vàP€‚ObÀ8ðnÓe§ÕôÓ܉§ýoÜëÒž|Ò¹@hÿƒ¨ª¢:*"Q¨p¢¨d Š Ò‘›Æ”!cDÙõ¡šŒVNßß\èñÓS:\hëFg‡ö^Ø€Ž®Cù !m<'âHI•›K¨~ºSY¥B:$€G$Šˆ‚„]x}; Ñž‚…ÅX€êµ+Žìûªâ½‰Ñô¶*Œ“b‡Üþf©÷D’YðVwwìåm׿Õ|FøÂ WDØz1&MæX»páú­Áé"äp@!'ä¸Ì’G°Ë!$)"D¬AÄ ÂVáX·3—›‘ “ñ˜#,Yhê3£Ô£Ég’>´6¾Ã¬áK„4($0kP/Ÿ”#ÀbñÄÄÄ!P=ˆÒKÞOQŸrŒ0à7£r2wwõ±ÒlŒJ„”¯!'÷I@¥Œñ Œ"%ûh¬µm”c½…•ß-¹½ó–ÄÌÆø`Ø€g¬ @Œ°p/»‚ÍH+ÖTð’àúèŠã¿qoû+÷µ#Ú;щ„’´@Rprœ(B)=Uߌa_ö1µ a{ñ9K3 Í`“F ÜW¥)ƒ¶€$J€b˜^O‰Çðc°íušv`RQŒ#•Ù],½—ÂðÓYbbÍ€é½höú&8B‚Ï}WøëgÖ͘ì éÄ oÜ{ûß=ßPAB~¸÷öÇ⾇„9÷Ý‘¯Ÿ=uÆ”! Y½õößµøŠáù ñT7;P»æ-@Öz©Â©D آˎ3lì ç.Š®øèäïþÆoéPÝqŽ{ð{ BÀó hDqŸƒã¸‡×o¨l¿í’ÉÐfÝ_â… a³îQ0ç¾;rÃÒîöÛ¿½§­ÅĺٳòÙ÷ ”€µÀ^<˜V/®â=]µ k®¾ ˜²î®]‰[Š îBãz̘†ª*uLm%€OV\3û Ùƒ*eöÌÙŸüË’>k˜´-Êc,gÀ¿>på­îŒ)äH´ws[7\žÏÆ@hføšµ†§ázsÑÓííí5xã÷׳ÿ…;‹ ä¼øžY-ß])§Í 阮vÝÙÆž Ïcc k 0”ÏZ³òØs9SÝmíí;C5GÜþÔþ'?χ/k‡hÁž—û¬•‘`2³qóÆÙSgot6¦i¡©©iÑÔEɯÛ6B,Dú ’„maZ»xN#IIŽDÈamÀ†|@2C€Ìfa 9‚C!‰»ºRQ… ÌQG«3sI é‚ÑlÊg–€™ƒI@$ò'ÔÕ´cFCÂ!øfD ë‚Ctž ZMMM‡,:$Uÿ°ñ^Ü›š²xvþƒý§Êe:“)¿Ž ôwÔãŽÉ1—{\¸<Ÿ=_ÁW¬ <Å x ¾†¯Y8œ„S!:±€»;MW9Çcìö°ë²ç±ï±ï³òÙhö=€Ù÷ }V>k !„”À@ D¸—3iÈ=Sª[P—J¤'®Âö¦¹à)´u³èŽ#‡ë±ëÁSìypû ®bÃP`D!‡r ùî‘K|Ûòî¬BØ÷LW„äžîê÷ž=êø¦¯œß3¾ÇÊ…ï³raÌÌŸÿ³ë‘»[×]ņIr²Ïêˆz„CPH‰ä„~ã_6OY7?éô…ÑÉÕòß[¼ ×µ=ýúÚ,ð¯k§xûW÷Žº¤–îúGìÌëÛFúbJ_'¾BwBÀóàû‰çÃSð|x^rZ"€@ J»¼T!ƒß“¡~Bú8ãs¬R°ëE:@ãw~¾óâ°òà{¬<ö½~õ/Õ'Úzã•!ë€ÉxH,mq¡Ê¤½Ž«8€ES¥}²^¥L`JØzI-·íwúÂè±ËþPyÀšÿ¾´yÙÜíÔ¹wLõk‹ž4Ã{ˉù”^ô‹)â "cXh† þ24`h@Ç %jV!NÿVÜóØUð»žfW“o  6ÝTé§ Iqܰg!` ´núÂéß[`ÿÛÙþ?ïœù‹'„ùÈÁ0l â[Ãa žmî#B ÑÔÔ”e ñË›§6.=ii? ©¶ÚƒC f>ýØ ÷Ü÷¢?óHŽNà½å½C‘ê W¸ùáž‹néÀw5¬¼³ë‚“¢ó‡ŸwWý¬{õÙU‹çG¶4©ÅWµ¿¾Ç š!€ÎhÎ<¾ëñ“æ‡'W‹‡Ÿw/\×\äYñ‘Š@ø–&uẮG_ôlþ~ý¼F@ÆYèÙú:£9MHæ}å*=Uu[šÔ¼Fçûk—œ÷Û)ˆ¢gá§ÐR¶Ò³_L®rº¢vñüȾ.óÚn½þŸîÚû{N<,´ú쪣ç…R•Y\Ä\v}v$À0 f†'Xƒ‰ m`a&"”)$pqå@ú ¶Ñ˜xLz.¤ÃÄ;—tÆ ÷˜yÇãAA;N=Df6ˆA¦o)jUWC„Ž‚$´–uuuY8sýM™‰Q'š` å¼ý[ßhÓûIÉϵgW]¸¸bÙŠ'>tÆ.®X³¤%Ø·æÕ—ßðâ¡'ܾx~ä?k&_tý‡,^?¯ÑyäRI^çàzï©üÛÍ™Çg]xÚýÇ-ù‹çGn9+N^'}|o2ÏŠ¥k>Qý›‡ß¨˜ó½gŸzõáEÇvH:èKms¾÷Öwܰx~dýEœzVÕô«*ÿvsÐ:!מUyáâŠe—öÞ×Z’Ê9ã¸èÂ¥”ïHUÝ…ëºZÛâŸþŸ£¶|§âÄÃB©„¹ø[ÿ ¤­;£3Ùd–žy1¹Ê ³ðc÷|êmGÏ ½oN«³í™»¾\{ô¼PãQ·µïÞ³¤æ™´Ë+Ö|&îÁó¡4 ƒƒfO"’€$±$–0Z"R½Ë”Y… 2„ôîÿ‚òÙÃ÷ Ø€™˜w^ôd);—N‚‰XÐÄŠXÁh98 ª¡ÚþGIphãÆ~SÿÇ.Xpì‚gŸx6»bd2¤MN}0‹+ê™ü\pbÀoïxä-opþ)³B[ñ··þnSè°ÄЃ¿zµêíæÎª‹<÷»<2¤=f”~¼ý¹Ÿˆ¼À‰Çí~審y.8±À7Vü\7tÚ/¦ûgoˆÎ@Þôéê/|î¥'—8ê°©á §ž[ôÙÄ#D“*üöÎÞû:uVhëSÉ ÛŸO)}ÓcNòóèË|Ч7?úØÖ¹T?òêNŸß 霾0à§?zð»g8í¤é¡ÍK-.­ô´¯¹Ê]|?‡#0Á€ È7ð4|ÅJSê­¥ Qšt°JɹMB€t!Rãjö\öÜ`á?I˜]¿/Ø{pó9óƒÄi÷ì$ã í±òŒÍ„ÂaÔ„­L…4"N@A”`°$ކ¢ÙÁÂC`_¶ùxû7»Ö¾gÏÞßàß[Í×>ÚÐyٽ¶ÝyËiÖþrç7®ù³šwLŸêRêš²9»se _½[ß¼Ì{éÉå럈' úù“¸îa#[_;ïG^5;¼eùÚ7 µ…/þù"Ѷí¥'—¯¹¿û–ßï;ÿCûÍžU·Ñk»èÎú». uïºBœßo!å²{Mæ}åSúÚ‡ôÍKÛøöiûºyÍýÝß\ñ àÁ%]ºü¸úºÐk;ã?½æ§!š­]tÑ*µô´¯ƒ–õÚ^>z;`ËóÕ»õº¿`ýgU¿_7ç,»5cBXœ}qŽäÌEÆÞå Ú½4“ÒP:±ÙWfòûoD\Ÿé/Ä ƒ‚±™Çnœ@ì±*Oøà® N ³"£a4Ý|ÖÁ ?ßÿãOa4+0/eâBGáEf=™u¨«@DÄ!’r’„‘D$‰n½¯Ö~+õ¯¼òJùyøÎ“Ï“Rw«óŸäÎt]£:ì=ã¾ëã_°Ð]}ü¦~~Yû®áÃD†Œ‘‚ Ö’5-Øhm`´dãi6³N¸éÞ+þ\1Ÿ\Ÿ\Ÿ‚š€ 4\“îéxœ=Ï|kõjßûþjE¬ˆUÑ–JÈ™ÌÇiÆ{è*ÒÛu|MJAkhCÚ> ÞfÃÆ°aæÀ+`Q®¾nmòøÆ¬-Pš(„m ­™hb “?2sŽÌb¨ãQ…™Ùp2¬Ü%_^&ø›J˜`µS–²K.¼Û*JÝ¥VDjGV°X¨še/JNhu¸ÞH‰iŠ ú¬q1K§åRRk®¸äцtŠÒU—¬\ýí5Á×/~y·÷]Ù 6”ç!Ù‚iHÛqLUà˜¸è~¶QĪKV& 3Z>·Qt£•®F®¾níÕ×­½æºµDøöw×~çÿ®-Šß¬PÚäþf Ž‘Þ©¤†%¨ŒÌ‰Jþçš¡ dÊËéƒÝ—^²2Î÷99Øf Q²%šBmeMI;«êKº^‚ºjíä?Ÿ¹båÊÀѲö; ª|fùJ‘Ü¥<’ó™C4 œaÐs‡7èJÕuêÌ>ר,×OYÏ-b]*•ØH–âˆé'9äP0SŠа<Îií>WäSy†ã*pœ\ OZ0Ÿ¹üÒÉUš¯|iEL4ŸˆíÖ ‹2Çe—®@ʲæðX¨±(ÈÔh‚h¿wL"Yƒ°aî÷ÃÂØNm˜ˆ¹$$B’„à¯|q¥Ö0’}ÍÚ°T#;Ÿ±(Æm4“0¦ß¢´fbÃÃĆí@ U³QŠd²ß1†´aÁ† ñ5[Œ0Ìu6o‹³!ÝÊ`Í §&p 3ó¡Új*DÕ®1”tª0Xb3|­ë3ö šÅA3#ÍŒLÀùx¥Pµcõn12ùˆ9%zm‘cõna1$Øç™,,†Î»>ca18(ñÏÚ ;6³°(%l¼æqë#œOë36^ó8Ÿ×3ÖÇiÑÇ&F>^s®wŸäb»,ºªâÈ…}¥˜›‘K“Çc´)b¼æ¬zTùiFf\¸yFÒo¶â++®ë ?{ñò£Ì™C0%¼o&hLq©¤ñš3+"WíŒî4fbÅkÎÚôÖ\xxß!ùƸ¦tñšóœC0WÉ´*%­¯R×T©â5[X”=Нyôæ3ÃñšËÌ«iã5— l¼æ‘Tµ×\°ñšGVÕ%ˆ×l1°ñšÇµªm¼f‹Âø×œð_ÚxÍCƒõ5[XXÎXXXÎXXŒ>8á{³œ±°÷ Ë Ë ‹’øžúÇ=V/–,]•2¥§ ‡“+«Õ—…E¾væ˜ãN±î2 ;Ÿ±°°œ±°aØýfÖÎXXŒ†`"@íÇ]mÔ¨„tQž;rN< ¼kD E#RH«œá)gârÆ»ßòÀƟܲuwç—^¡¶Ø“ŒœL®­|ÿѳ.?ûhÖ6 ?î !~ôÀkëÛ´iGûDhÓê+OyçÜo|âm)‡xBsư^÷û—Ûöyï]xÄ=mؼ£mD‹ï…6±èè7±ëþèþ ŸûØ‚A•ó£ß½º©É»eÕYï^0w"´‡ [w_yÛC?¸ïåÏŸz˜›åÄO¾¶è˜Ã·6uýxÕÇ˾emâÀ†úõñKg¼½/Jg¬lÓº•?áˆ9$ᡳ>sÊ Öüò˧9¨r&(g˜ùõ¦ÎŽ¿¿|˪e‹ŽœgŒB”ñß·ÎiüóÓ›Î_ý«¦VWÈVîÀÊÙ´£ý„#fo–ÂxÓ:3¿ãMûmÚÑ>¨r&.gˆˆˆ7ïl;áˆÙZ+cŒR¾1º\ÿú¾ç»ñÍ;Û›Û8èKyƒ Z›‰À–€2¾çù^ƒ¼±˜‚š‰;6cN´Œp8ì ¯fTî5Žs'¢ÛiIDAT¶íÛ "ÊwÊgôá 3­´Ê7æùD=kŒŽÇcÆèòníû<7@äýæ÷^Lˆ™amŒåLÞ-£²²:ë,ï6Q3irsÓC=o‚pàÞOÞœ¡ ÍŽÅ:ÇB˨¬¬Å:Jtím{¼xÏй6Bœ©ªšÔÝÝžzÑû”ùd…Ý;pee †ÊÊÚÊÊÚ…¤V^Ñ1©nÚhy«ª&e=8çXÆD›1sww{QÚSáBJÔ¬™¹u_“ÇÊ[3¹2sWWÛ¨¼53ÀÚ™B»·ê꺮®¶®®¶êêºdJò3@Jª„4™9Óò õ“Ç”ÎÓî1M™¿–B'ÖÎ ¿ÉÚ½ ¯Mtv¶&k78ÎLÉì}™¹¦¦>3gp0ì‹dæ}-»FËÎtv¶×ÜZ 0—6Ò4PSS_" s>“ä c"¿®‘««ë;;÷ìxÉuÕ5PJMM}Zzgç¾Âæâ“ÙeŒµçØ˜Ï Ê÷››wø~ðà|ŽQl´ÚþÆ«Ê÷DB2ÏÛdæ‰òü 3ÃÏ\9OÈé  u•/lÞÞаwgëÔ†ýc]mSf”Ù߆†ýc]í3|Ó†­»ê*gL”çôUù (ßW¾*×ïûžçzž«|¹=%¨B˜þLdzå¤c:š[·ßàOÂôtwÿ•{ßyÄÁ­í?~ÎQsëË·k`0onê¼ñÁW§7N}óÓ?{ò¡n¼c`åõ…ûuÙ‡ç5V6ÊD7>mŒV¾¿igÛ'¯ÿë–;/ʪœ©çLG¬¯?ŽXó› )ßÌ\Óc*§^ù‹g·ìj+ïûm¨«<ùØC–-zk(24¨r–7÷º»ž,ïÞ$³O9턃UÎĵ3Z+Ç ÿ⯯ïhñj«ªêª£!GŽXozðÌ©#SЦí{HA‘°SSi˜9|Nº;÷ ¬)ïÝûü/ÿôÊĉovƻߴú¢÷IádUNª!L&ÚXY»pbq†Hrœ¨tÂD‚FvJÈðˆ•e´—,–ÌÜkÑʳÊ’r¦ž3ÝÍøïßѽwÂÆj2Z¹ƒFå±Ê±Èî7³°°°œ±°°œ±°ýa«åŒ……µ3–3c _³jê©m¬Ÿ¹¼•½šÌL®±š²˜ÐènFÛý8ãww›=žèV^<Ûƒ×:cCAÛ¹3×ȲoåáK$ίà¼ï…ò>7ßœù¯òpÕšãÜ쩘ú/ð²³V_¾W˜ÿÅP¾ú÷ºÀ$8ЯÇ[:â-Áù#££â·,Í4ÿÖŒüª‡ Qzþ·œg[É¿äBêt¤ÚC¾·RìJBåIÀ@{˜ft—s„o ‹ââÿ”v+NÿònIEND®B`‚tiemu-3.03-nogdb+dfsg/help/log_link.png000066400000000000000000000261461220314353500200330ustar00rootroot00000000000000‰PNG  IHDRÞÕvLã pHYs  šœtIMEÖ  ô§0¨ IDATxÚí{œe•÷§ªº{2™™Lî“IBÈ•ˆ!@B¸ÉDBÄË. 꺠»û* »¢+¬ÊŠ€”€¸Š€ˆ7P@¹èbr KBá" 3I&™ûtU=ÏsÞ?ª§§§oÓÝ3ÝÓÝs¾Ÿ0TW?õtÕ©S¿:Ïé§NÓ¼%#m³Hd`?6ÅÞ×À&Dl86”†c“m³f(Ë‚˜þ.”¡¬±Åe ybƒò…íÁ—’ô®üÏÂðÂ< a(ø!€Ÿá¶ð&öäÄ—ÞÜg€ðÌ4~\]©€q6œÔ2Pƒql¬ÌòkŒœ½²Æ’[gy#WPe]AÆ@+ØÎÀßLôùÉk:]hïAWç$:v#:»ùùƒ¤ùÍ}ÖÑÄNíxÒ!‹¸QDjЧQð€° /¸[øî—tOÉ™a¬ ú£dÇx©¢ý+k’%ÑR0NBTí²û7$›"Kßï¶öÒªü—cÒ¼mòàLâÞ¿Æ‚ ×ßln…²PÈ 9.³ÍÇb—9B X¬!b "VÀL š=#”oÈ&ã1GØfKÓÀ‡ú4ùL¶­ï0kø6B ²0kP¿l+Ç;èÆ’Æ€êC ÑÑoðSóûõÜß…ÚIÜÓ= þŽÅÆKY!åkX,'H–Ø€êO´k,£HÙw ­å B¿˜ œqa!–SŽe† QÀÚÀ0ô2öîñ`A3ÒŠ5¼„Mp}tGñöf`>á'Ñ4ÔšúØÆ‘P\mq<¹b…nî‰2†}{à† ”5rã„áŒkR$Î04ƒM’òà«-!Óh±R ¦ÿ‹_á÷Àßßt e;&Œ#êåHmÚ=¡þ]aøI+YbbÍ€éßi##2AŠNÈâ W…¿ú‘ÆæIN^^rëîuñ|CÃêäû»×=õ  8d™ ‰|õãSš'çÙÉ7ßZ÷Û6_1<ä#Ú ÕÀAçv4ÌL=ä,ÍÚ@¿"sâý e-Ò\ư käU [ó¥3']ÿ ¿­SõD9êÁWì)X<­Šú,G=ô¹þÔÚŽ;þm´¹í‰èp;asÛ]À\xLäæ³z:Öý÷Îö6ÓÛÃn”•ϾË‚ò°ÖØ‹€ÖÆ‹ªh_wÃÔo]s0ù¶{ß‹RÔ‚åÁ}ƒÐtš§aüx«Æ1 µ.wí¾ öÒ(ûÎÚ÷‚'Nˆí㑲’ñ² ˆ4—ÄT÷ïóå¹Í“ɱÑÑÃí=p}x>e  ˜ákÖž†ëq¯‹®^ÝÑÑQw~wÃa3/Ù1|z;þ圶ë¿lOk&Û1ݺ«=žÇÆ@+Ö`(Ÿµfå±çr´WõtµwtìÕ´î™™g¼χo¡·Vvnˆ½€Hhóë›÷²ïfgs’ZZZŽrlüåæöͰN¬äÌ É×rå B‰ØÛÍs›È¶É±rX°!°™aÌfËÀ¶È±8d#dcû{݉™‡áv×{Ysɶa;ä„`4†ò™mÀ̃ɂkc9¡î–íÍSCÁ×0`µ!6¯™C°Â° : ϲ---‹]œh‚Í¿ßü L\³¿qÉÃì$©ŒòGîr‚ªˆ®^îì…cs¯Ë}.\žÏž‚¯à+Öžb<_Ã׬ , v0µÁrF {&{ºLw'9G{Ùíc×eÏcßcßgå³Ñì{³ïAû¬|Ö–eÙ6pÐ V‰O9‹Ý¸´1Q¯×ß°^°ºfÙQ-ÿú1øžñ=V.|Ÿ• cfýô¯Ý=°÷¶o°a²,rÒ±çÀšˆp €›@Vü;½ÍOlÎ{¬|o3Z³#iý³ÿ5Àò+vgÚð‘«&-›šüÉÖ|{„jCž°Í_¡' Ë‚çÁ÷cÿ<ž‚çÃÓðâ)cQ’©;úüÔÉ€4ûÜÛÛb׫Yv€¦ïütÇg?Äʃï±òØ÷fÿüYu'œ½÷Ö«BÚ,ƒñ›Þ΄jã#©¨Š8vʱIÿÒî¥e[`Sâ(¬öÏw¤¥õ¶G^øU¦£=qIͤ:{Ü_ïÎn”´= BUáÈ¿œÿ®Ïžσ¯ 4+ eX(Ú¡˜}C±šaÃÌ SîdH’;f×x»û~ëåç+›oý5´‚ÑÐ*Ðe?s1Œ&6€s<‰]“!¡¡-d“×þbûú%1¶í@³†æ,9²åWì΢˽)_.LAò"ê±Ed kÍ0Á_† ` ¨`™á ˜¦íÀ¹ÿõ¨·€ÐxÂu°Â×€lhl766¦‘æÖ¦®¬qjbÂL€Cƒ*™ÚÿGÝÝŸŽøAPËcÍÊšçüzå©w¸$rûÇ¢äu |ÐÅu—œ8î¼/­èºïÙmÛúI×ó}||Ðøô5?¹äÄqß:µ 6=rÕ„—DV|øWgœ}Ç¡óC'ÍÝël!q«±þOª_!êÁó¡4 ƒu%Ù€ØÄ6± cA[¤ˆTÿS$i;²u¤tÒ_ÓÊg7 ߃V`fbÞñ™S⟲ã¼Éb"¶ÈXÐÄŠXÁh98 ª¡†Áù ›àÐæÍ›1Ж±À‹ë_Lo;@Å¡}‘©^{lý»/½²õðO8~åÌðkë€yþüûOrи+oÜø›»s÷?YO[¥_ h à¢Õs®ºõO'.9ÀËOoì;ä\Ç9ÛÞó˜Úg¹8ñgF*Qš5<Ŷ&b°@ÓUÈDl` Ã@kC1ýåçwd뀶waìûFy–mƒ˜˜A` Íßÿ}|W›ïÙØ²f?0³1`ÑÐ £À„AˆÂ #2€®EÈ”Û8¿óê–°4xõàcf3 …PˆÙ¬Ä¨9CÒ:a=×MŽ­kß,Ì3À KÇ_·`¥ž±xÈ&ÕŲÛAã‰ãœ÷þïÖSæO·—Ø=x€ç_Úa·oϸ?‚PnhÙäëÃõa[pl&êv-&€, Ï]Cš%4;²u@ êÄ C1ö]ö\¶lr1óŒïý:è¿å⣛n{ Àô;ŸÝyþR²˜µ&RÆ ¢æpì5¯ +âè/õ‚C°ÃèÓîËÁÍ£ük[¼ÿS‡§Ú…›”¶ˆIH­%JÓ)¹¥Íª“ôõ«Nøð‹/:¾eíÛC÷°§Ûê¬ÜÛÞGÊ;é¿Ý7®«ýßG> à±—z/»øÝ0-ÓþŒAX~ި̑'NòÁSìúpl€èW_—Ú`É¿GÁÄ`Óÿ ¡6ä"Ý_S3±s0˜ƒ´S¿ 21€¡Á Vm™•ǾˎÈšqÓ/cºüÙãnýÔáÓ´j¦ß·mçêf°Ö¤5Çç>P¸88N, W„Ú0€à·cºl³M¤3; ›A¡èÁ׆©‰ëSÛ¼õNû¹?™´ûh÷š/|ﯶM<0{·=i.?ÝZýÁŵG†Üq÷óìD~þ¹GžôÃ7¶Ð“÷ñ–žÂ¨9qì%U5‡ìL“„ Ⱦa¥a«`hÒÿsMI(MlLà@û;à êĶ‚{.{.;!€š×>ôüÞgO"f0¼ëü%SïzÀ´_îØyú$K+VAB#û@õ@_mB#¤q]¶ˆb7 ›8–2ްØr`¡ÄK6÷¼wÕ@pÑ  œôË44~ä‡ôè¿F~ðéñçÞׇð Û`RÏW>h&«¿ÿäös|ûž_»öq5ÿ°m»ùй¢foì4W< ïNž *dX£d„—WÔŒ¨ÇæÔg@bù!¦ þ5€fRJCÇʱÙi;ùÝ×j²%œ’:q  ¡á±eÇÐûÔCµGŸöÞÅ'†Y‘Ñ0šÞõ±…Sº5ú‡ÃhV ¾âx=8 .t ¼œ—1«ãPo#âÙrâºl‘Ml"¾¢á?wñꫯ¶/eÁdÀà×Xj¸&éH¢g%¾>ËrâJÚ¹-ò—ŸéæÅþŽ÷“©gçù‡œ·^ ®P~`îd>,ºáWwÿÀ¾û4þ߆ÏïmN;ÿ 3kñc¡ü1¾„9߯n³¦~¤{bÕCMŽMbC0ŸÈ¹ á)Dy{Q­»:yçfóÔqt±N.ÔPšïo;jª=a"«³"5d; € Á†Ø'ã‘rI{P¼({žr½Î^ýZŸõš¡3ºá+°NÀ}ïþÍ?092÷¿´&Xq]†EÿÕýFÑñ?tlbAÅrdîš«X¥ñ­@F³,'®äió_¦6HDrš:ä´øËµ¥Cfþº?í9oÞª#À›oï ½ð+Ò,TVH¾Ì'jö¼>ײ‰Œ†c4mA|Çð yJAy¬=m<í'šz8±ßpõ}ÏDû,²É²²&Ö ±²Œí‘ò <øŠ}¥|í+3 À!>ä#µ”‘a¶”†íÄžî³A†ÓN·"¬a3kêäQÅ3£é[çÝÅß\öú¾:{b#½±·?¼ë Ÿ¼ƒ'6î^•ÓxY‚2¡Jر×47tîê{pC¶c1&¶(xP“í34“oXiÒ ì)D;æLáë$DðyÇÓ3©™÷î‚ÏvØ…í6DLlˆµ í“Ѭ}RŠ•V>wø sâ$±Kh~s'ǶC!Û"bÇ@6Ùòc_Pö 4ÌæƒN)RW¾×ç¼ò¸½ýUò]SÛh¦ÍM «A¨.:4úÙUþyW½¼½µË EˆŒcD6ˆ4“†¥A†-£µ60°Yùs&û~ûеO»ýo5ÃìäÖ?×ÜöL |¾x…ûÍ£¶þõÒó:ÞÛ9LdÈ‚1¶Ek›5m±ÑÚÀh›§Ù4Í9zíƒW=>ï¶?Ùð¾B‡oÞ~&ˆšžŒá¨«mÇfTHG ÙA¶ÛÏ\fÍiô—ÙúgP.NH/=I/=i Æ7RΫÿnªå[&¡J¸c}ˆ5oúùªübí=ækD×= æûÞÉý½ëÖ[`…uÿkAÏÿÁ£›òë¤M_õ³žu4ÇrÍqÉBó ˜;ãaE‰%Mbsœ ìØá~¶/é°I™MǾM¬°È`Y#Ò\îwO1Aù¢Ç† ºi¶c“C˜a TBv71a¬|Fˆà8Pˆ¥/R+Ý Žšö4­»¶‰(ø ª Ü„ú¥cÛ¶aÇÅš“ž\byI†‰+Ò\Ƅ؉³'n©*vWÕ£uXtB8d ‚ÒtAâ×0,‚Ï~)%\Ô"EÕpðS(±:¤–ß_¡.þ¸Ê@îbðÑÀ‚PÞ0Ë×€e\Be>¤á!G¤væaj¼AbÍøÃÑôv ÔfD\oÂaS:wí}÷ŽqbyA„QaÊùVìhñäq}A„²C¤YA¤YAiAiAFBšEžAÊC’-¨>@ Ì Båó½ß¾-F(Wò¤!Û´í|mÄ?W¤YÆŠ‚y[õŽGD£=ž×§µ2Æ£ÑÌÌÌÆ¨ ¦ÕÕ5ã£+Xš§L_¼»uóÈþ_*—bÄnc™ÉÓö <¯/gŒ¤`c ³1Fwuí)’4W|ž9ÐÓù;eúbqGA’ÐZ£0›¸.»àA¹DÍK?sO.Í^\{^’(¸ÊW%˜W„¥|Û ñæÍ›æÏŸþBT´ªAÖeQïæéÿ¡ÿh­Û¶-ËþZ–õ¾ünjBcÄ3$Õê^ùšW„c4³!¢Í›7xã7æÍ›[ì-»„F&á°,«HAn<1r͹›WÈä-q‡I\ªž@—¶m{slIsZáXúà!ÁºL’\!ÿNªþ2Ë˼cͶ¹i0® ná‰Ëeh“'ò‰ÇŸL]) [¯½;Ñ ,RÏl°\Àu䔿p"»´Qóf!ª;jÎ×¼©fŽ©+¶#r¤å`“'òØãŽ]AöÛoqVVÊÏ=›‘èHùzWEÍp¬|äè$áÞJM·gnRžI·¬´kªØ·ò5oŽ1æ6Oв zÊ0ŽÎ´·™–³oj³LñÔ0=3“.§®r$˜ŒÌeNZŸežÆ0oð—‰vض `ùïŽxñ¬çã±ù¼MD”)jNœô–GÇ—“Ö$µ Qs¾æÍ1H;+<í)ȱ«rÐâ,»‘øVÚ=/§NÚLòÃ1H<@äXtyØ#NŠÿuœR`Œ¦øõå Ëyè •YB#å‚åTá ²2|Ú«¢°+³ŠÕ9_ófw©!-œ¶AÚ|Ê'^Ž&¦EÚ2õœÝ ùîL\ˆã¢k‘éáDÍ´V9FÍÃô®2’æ` 6 #J3âÎ1´)àʬҨ9?ó&™%I/†´UîÆ¬³çr‰–Ì4È(†AR•ZÈWšãÄ7Ì&þf¦s=ÌP¯ŒrÍñ‰\¯œórªpä•kΫMa+4jÎݼi]­£¥jz–ȱ ì<äQä’åHêJ¦è:[¶¼ü –·nÝ:äü¹a>`\^Q³Õ?‰ áHæ2eŸs´ZÕGÍy™7K já¤5¹œ‚Ô1êöÏrP¹_„Ùë™Ô¹Óe‰‘“rÍÂðY´h¿¸.kæÍ›;d6#1É÷´–•4Ç„#˜00¤pd™Xš´2íh1uÃêÎ5çkÞì–ÌòuVî§ ¬îˆ;Rî•¶Í–Ä0rÍ9®òRg .LL:g9_™Îr%Is¾ K ¢šW„´ê¼hÑ~ ¹æbQ.Ò\@a©¡QTó ‚Àl´öƒYL ,ê55B³ÄÎÃæVºÕ’fïç¯Ôk!•x¥fæX™ffcLqë‚Vp)ý¬ÔŒ±QÛH¨nâ¥ß…‘¥¡arww{·2L¨3F74Li!#ÁO% Å‘æ) SJü¡"Í‚Pñüó爊Ähý¬—…ØÛ‚ ÂhCªàk@A„êC¤YA¤YAŠ4_>óô/Å.‚ %ã°•«‡–f§­¾BŒ%‚P˜9uHð+'é[‹ÉAŠJ²(3sæ$×,‚Pvˆ4 ‚|Ò·°MJÜaùãähŽ,ùx³x›Ô5©ísiœWÏÅk\‰ûœö­¤£(ýn$]`IíËÖtØ9KË´În¤ö<²vÎÒ,ûU3¤Úæ¾UpPc*Ëê ÓpIg.É‚©$­ÉÒ8¯ž‹×¸÷9í[™Nh‰w#“S•­é °s&qIÇ‘ÚÔžGÊÎ#²¡PxB#÷¡Â0‡•xþªÃçäÊ)CÚ¹xçbÄ{Nì0µçìŸEý¤JGâʤå¤f‰kRGÕêA`Î5'"Ë9ȱY¦»z¾›ÔÅSû<Ì£Aû–4”[E…ÚyÈaejÒ#Ó>¤m“’Mœ\îÿYF£©6Í~s+‡1Quìs¾»‘{ãâà Ùª'“m‡o,YŽÒër¦ûPÍM½Ç¸:¥(hê·4ƒß BQu¹€DPbâ~l ´•ï¹Ή¬DçŠ1Êi«8¿¾.瘦ÈqbØØšs4PÚ|Y¦{]^ ÓR6®Ä}–ÆåìH9¦˜Fd7òº~ 8À´ÊÔé(CNÑËtøIÅLÓ Çæä9r|‘×ÊìR.¥±4.jãì–ï\‹Ùù´Úš%9>¦¯ò ¶ ¹‡öU™ *[DšAÈ/^.}?c0ˆiAi†=²fƒÿDAFœáÎÐHj\@)–ÄõTÅf´KeA+ÒÌ”ñšÌåJÎ÷AµìŠSpÏUß8»eÄ•¡:Æ&4Š1^eYCIeA¨Ú„ÆpÈ>=~d«¾–fŸËì{+•e¡š¥9íÅ_Xç´›§VMEQÈ+E0êQd{+•e¡J¤9{ið1N5•C’Ê2‚PnX¹\·i“•‡{Õd¾J‰.¥²Œ T^ÔL¹Õa²L Æ^›Ò—CÊ¥ØT–„ÊÄ‘ÐÈ4ãM*bã\šIeA ¡Üò’´‘f¡ìÔ¹d[I-"Í‚ ‚H³ ”7$¯¤¸UÕÔР!ÏJöImª¬¶2ÔÊ~ŒR©Ä‘µKî‡yº³t^p)«´/‡¼0³\°Rܪ2¤y8ç¯êk¥ r¯:4–ë1•²q–ø.¯ÆÃ<ÝY"Í‚KY¥v(Å­$¡QŠáRE¬G)³çûëÎÃï'ÇyŠÃ¿.òêPŠ[UyÔœc¹Ÿ|ú·jàÏ‹j›rx^|ÈÌ^b0>ê.!Å­ª\šÓž¿!‹»g¦•Im£á -‘s¾R"ŽšÑÕ‹ì) \¼}ÎË©¤¸UK3Éi(U#Ö¨¾ >mðQluA§’âVeæR±ÿJšk®m*ì($©>oõsšãHq«ªJhäxžª¾¶Qܹ”*«BHcªqêi*¬qö·†#g—²J»KY¢Z)nUåÒœc#H"i\Õ ›Ë1ü+¥° ¥¸UÕ O B9R&_ KÈ,Ò,B!1uQû]]i–™‚ 5—C¥XŒ £Âpgh$5®¬ G¹”¤ÉEm¥XŒ %’fä<{¦+I<+BU%4ª£ÂQöŠ‹I-¥XŒ e5LùW8ÊýÞ ÅbA(/iN«˜…qN»ù(V8Êt¤9–+’b1‚ Œš4Yt¼:Ùƒ‹aø kNÊJ…#)#ÂhFÍ9ŠQåÖÇ‘ªùR,F„ÒIs¦oUSá¨àÍ¥XŒ £ŸÐ¨VFe›„Ì‚ ˆ4ç&o+ ¢AiAi®@¤¶‘ eKNœd‰µQñKm#A*OšsŸ[V¤ DRÛHIhŒÎ¼ŠfHm#A*&jÎ^¢(K³7Nf x2éÎ!µA( iN+:Ù“¶Cf2ÅŒ£+aRÛH„J’æbúÝ芗Ô6¡ \s\+.¨”ÚF‚ ŒfÔœ£¸ä›kN !3}Ô6A¤yˆ±y^+s¯@4dn·àž!µA# ªAj ‚ Ò\¦ê\²­$ˆA¤YA¤YFŽMRˆJ¨>†;C#©ñ¥…’œ>©}9—C’Æ¥iœåúž2ÍÔUväIN¡|¥9OùÊ·´P.uà èYWzãì¡k^õª¡rÇà‚Å<Êe& ÝcýÙïèIÛJ!*a¬DÍ“ËS'9Žp!Õy²LB—BTBõKsZÅ,¬ˆsÚÍS«&É" yׇ¢Ƹ4'=m,U&ñi]]Z(¬\œ8mæn8RA(¶çH!*¡j£æ½¼Øuˆ¤ñ˜jœô DbÖ+¯/02y©¢Ê|@Ê*Í™¾ñ GÒXsC)D%ŒÅ„† ”0b(‹)k2 "Í‚PHL]Ô~D—‘fA!4K„ ‚ Q³ ‚ Ò,‚ Ò,‚ ˆ4 ‚ ˆ4 ‚ "Í‚ c³H³ ‚DÍ‚ ‚H³ ‚H³ ‚ Ò,‚ Ò,‚ iA¨YAiA¨H2þ6`ÛÎ×Ä:‚ e$Íò<‚ e'Í?øM1 B 8õ¬Ë^g“æAMA„Qš[¹ZÍ‚ £ˆÌÐAiADšADšA„‚¡ ˆ†#–m´uµQ£2Ý[ynÉ>Ë GbÞADDÙ¡šˆmÙb1ާ”ÆiÎ ?êZ–uËCÛî{jëÖícá§M¬]}伯}âÖY}HŒ#Æ㌸qf¼iª°bj箽ïÞì‹§ÒÛÓµöá7¶¶xÿtö‘Ç,7ùÕ·Z¯¾ã‘EM‘KÏ> ûí]Œ#Æ㌔q¦œ?½»ñÖ_гKrÍ9qßS[?·zåÑÍå±ÁûæLýÜê÷>µÅ±Cb1ާôÆq+Ü,d„™·nï8ú }™ 3 ‡|ø¢é[·wXvH+WŒ#Æã”Î8Ì\s.­ÍXðžÀ5|Ïó½hüØÅ8b1N)#ÒœÆè|}Èñ´  ùIDAT³{÷î¶¶¶Ü7©¯¯Ÿ>}z(Mb6Zi¥ŠjœÊ |Ä8bœG¤9/Êoصsçί~íÚ­ï´v´½7£64.‚1̰fcN›e¿¹»½aú¬¦)_üü%‡ºÌ²¬Ñô!ÖÆ¨¢§‚/°RgË–­›6m:昣Å8cÍsDšó°m¾>ÔÖÖ¶íÝÖ½ö–ÿÍê)<³Öf_­™H“­=×(Œéè®w:g¯8å»n}ùå—–,9 ¦¦fT”ó¼ZxŒ\`%3Ζ-[oøÖ5{ZÞ}é…ç.¿òÊp8,ÆSž#Òœ×m/_bfîéíîíîkëÝ‚m˜ÀàhÔ…l¿Ï%‚ßÛãQ¸Ïžòö;ïìÚµÓu=ß÷#‘È(g@‘S©NPã¼úê¦=-ï~ñ’¼÷Áß~åʯ|ûºo‹qÆ”ç8ò›&Å»Q²‡ÇÙûœüáYÓ§Ç]ÐhC13¬5[ö£·ßåqaÎ-T']]]Š­3O>î†;kdâ´Óθì²>ùä“W®Yóу^zÅ_®D Ƀڥ1µ6Äš8)4mz–;ªå³ÑZ‰.çÎøñôôTá³d§Ÿ~ê®ooذþÔSO;hîÔO}êâýè69ã©uÔª³Ï>÷…ž]´hQ¢WtwwW¤4KB£ÀtF>ºßD)ÕÚÚš¥e4eíãcŸÑy×8™¨«kÐÝÝžKË Ùøñº»Ûã/«Ã8¶mOmÞ瑇~S?.|è!m}äÙM›6-^¼x˜¶-ª‰FÅsÎ>û¬o|ãÚƒ^Zà?ž|ò©Ü»-óäk‘æ"_ÉFmtssóœ9s˜9˜Ò,$¾´,‹6Z¥•ª€HO·FµšåC:Ã"ºsíg¬:¨¹Æ{ôá‡i¾é¦›]×]±âˆU«ŽŒ7Þ°aC}}Ãþû¿o¬9Ï¢E‹nºé†K/ýB]]ãM7Ý_Ÿ¸œ)(gˈ4=ÈR†ÓÚښ厩”2ÆX`‡L‰oæeEüx“Rÿ&^]q%FÜIï&m[)|ðŒ†#‘›®ýã—-hÙö6løãÿþ-·sªgžÝà8öG´¬¯o¨­­›ÎóÉO^pé¥_üð‹_Ü›”}®8ˈ45¡¶@6[ÝÝuuS§NÍÒ9±Ñ6LÒ7©ŸX_?1XèêÚ¼ —“Ú4òâ¢'{W‰ uu]]{ƒ—ñåÄ£VÆ6Ó»‰ý {XZ:ãœxâ ¶m}ì7{ú—þå‹ÇŸyòU×|¹aBý½w?ðæ›o~øá;wî¼ùæ[¿þõ¯&~J`Ô Ö¤ºGZ§J4c™{ÎM7}÷ÒK¿,?÷Ü3‹-ÌÔçð-SØ•UÈ ’*EÃ0<¥­™óö«‡”ÛÇ@0IÃÓì€m;V}Êó<®÷´érÿ .$WHâ´Î—½M‘¸ÿ‰ËqËdº³ôSYwÜq^ß•?ùÁ çꜦ ˜yß7ÔÙÞ×Þ¸xñ~MMMW^yùwÞ5}úôSO=eÈÞÒºGÚ»{¥Xìx4Ðå<`ãÆW–-;,Pç|ûIµL’JueI üí•÷tzÃÊ5&4AMÔ½ëïÆÀ GÇVJ[Ž¥ ì*ƒˆš8}6ö´r¬¤ÀÀÔô®®= ®°@}ý¤ÄèêÚ¼U_?©«kO°á`aâütŽ+¾çñãÜ-'Híž,;ýÝá¹A©F_Ýòú¾‡Ѽh€§Ÿük½ê¸ö+\wóýëÿúôÖ×·ýÛ¿ýËGÞÛÛÛÞ¾7áÑAδ3©î‘äTý¬ÏÙ²eë9ç¬ –gÏž½qã+–-;즛¾{á…çgýÐ!÷„û!†weÉ#'å̦Ïu;ßy§.º}þ¼…õ"¡p1Úöõöõv¶ï}çÍ;Ûûö_^;mÂxcü!õ+A¬'eŽ4÷Tf€¼'I©sÔô,Ç›ýÝŠàû·ÜÒÞ·ç¨ãVøÓ#ON¦ÞO¬ùÀÞëã=ë’˾±æ#Ÿøñï^¾|ygggSSS.Ou'$G§*O®»î;ýyŒ zèáà套~±µµõòË¿4|‡ l,—Ì—¤^sÑ#mc´¿ë­WWŸ~òÊåK:w½óÞ›¯¸pŸÃÚïÐýç¯:tÉÌ)ã&LÙÛ±'ä8¬ta”I€*îJËëƒñk&x™öÝŠfݺ»–|€G~÷Ç5곜fÛöyáÝÖ=~ì”ï|çú_qÝhSÓô;ïüq¢}r©T.]ô™{î¹7ÐåE‹.Z´ðþû÷šk¾™És ŽJf:‰šsÙ‚ç5&°Qzæ¬Ù­­ï=÷ܳ½==¼ÿ€††z6fÒä)µãëhw;X‡ˆƒêÙñ¯ &Ç{ëìlcæÎζDŸHÜŸørb›`«|tT¾ÌIÚÕøñ&WRƒÔ¿Lz·;”q<×ÛøÜ¦¶=»M¯ù‡sŽÝövË~ f½ñŒ{~óô¾sš/¹àƒÿsÿ“ûÛsW_ýï«WŸ™Ö “êiª€.±qÎ;ïãõõ þö·õ .:9é¤n¼ñúË.û7Þx}Úžs·LüL5T¾UÈ×€BñÐZ{žk´v£}FëÞžÞî®.cL4Ú×P_7qÊÔ‰“¦8ŽÃÆSJuûÚb?ɇÒ:Ö+Ó¶)sïC•{Åà÷¿ÿÝ)§œþUï?óü5‘HØ7xàO¯Ô5NXºt¿þð+V|ð’[Þxï[ßúïŸüä®\¼"Õ°•è?÷Üó?n¿ýÖ¤õ^x~æ,s~–ÒPÅšY&h‡ñãk'ÕE^]ÿxdÂXÔÚò^´¯gÞÜyŽãŒW3uZÓ„‰“¢Ñh__ò|ãöic(·2ÛU‰q&æÍ›ûÓŸÞ}ëÍ×ßußãG®X5´yË[ÏlxiÖì¦}çÌØ½ËûÀ‰|ð7ŸCUSd‰šs üÍ‘¦¦ÿtÉ…·Ü¶nÇîVîÍ·Ü2¡¡È ‡Ãxô‰Hd=YÔÙÑñüK¯ìíC¤¶6Ú¹{ê”I3gÎh i0ÇþÕ8•ë£bœeË–]ð©Ï=÷üsë~öGfízªyöÜÙûÌðå/ÿ¿p8\ÆÏAãˆ4çaÛ„¿¹×±W¬8¢¦&òê«›|ßO›ijlœ°Ïœ}e׎¯ŸtÂòeË–:Ž3ªe¥ên9gÕª•«V­|ôÑ÷íÙ³Àþû¿ïÀüc×8Õç9"͹ßô ù¾" /_~èÒ¥ù¾ŸÓh†( ‡BΨ–72£ø4`Ù»Á(焎OêYŒS•ž#Òœ—â@¶mÙv¤¦&ßÒø£™Ñ`cA5*ªq*ÒÄ8bœâÇ@R8”ï¿9@9»]eºØhå{®ò}äü¿GŒ#ÆãpL‘%jÎ!Éš6±vãëïÎoª3lTÅ“(˜Ù­|ëŽöik-Û/ÆãˆqJj‘朰lû¬•ó®»wÃGš»lÞÄ*uÁüzK×­o9çè–ãˆqÄ8%6ÂŒjšjVLíܵ÷Ý›})h­lÛ¹ñÁ—ïùÓk[·wŒ…Cž6±vÍ1‹¾ù™“lËééÚ)ÆãˆqJ`œ)çÏ@Ï.¼ýôìiÎ!¡A–e‡§ÆvÂD•¶Šªe—îWîöâKfîëmÓÊãˆqÄ8%0N¢4KB#—<‘ÑÊÕÊSˆqÄ8bœÝ<Ä‚ åt×iA¨YAiAiADšAª’Øä9ÕÒ×Ð4qÖç÷²W?ä6®à ‚ Œ0=»ÐþÎ iö{zÌNÏêQ^4‡ß¸ÔC?eXÒâØ¹ÌTÏé§\¸t;”SM)*i„>k¤ú±Ç¸”NV¾Zn×ň٧”ýäæ«^7Ø€lô›Ñ¶Îh[ð#¨§%<å忥¥”9Œ+S ]pÄÎ×H;PŽXnŸ5Rf.3Æú h€³ =]2’A(þ?8¿Þ|ê^ƒIEND®B`‚tiemu-3.03-nogdb+dfsg/help/logo_lpg.png000066400000000000000000000031261220314353500200300ustar00rootroot00000000000000‰PNG  IHDRJO{ãð`PLTE¥œ›üøù I“JJVðµMXŠrmuÐÊÌQU`Ÿl)(1ÍŠ í»#¿»»íÌ'Š‹4AiѤ6Ö¾´Þ¡O8ïéëccm·’\´Ž4>>Leq¦Ï¥XÇ—,z‡ÁâÛß¹}jbKGDˆH pHYs  ÒÝ~ütIMEÒ '1Òé|IDATxÚ­˜zÚ0 „q„K–ˆAéÈû¿åNrB jGÙWø9ÎvR·œ+?ÖòÉrIO³ÜC’Г0÷PS òË="y¢ø[¨ø¬_Qþ·QþE”ÿ]TÌI¢üìUTt¯®Ê2¼¥ªîÛiò¡í«Þž½ŠŠ}5D• Šu[¿¢*Š«|”Òy{ö:j‰7s½ßï ï ¤Œ~üü<€Tï©rû¿«ÍßǽkÓ;(þRÒ«Í×þÔúc÷ÚŸ Ö}H«´ûØ­ßA­GÔf÷a¨ø2j–¶ö¡õ^qzu€[» úÚ:]Œ)¾8ÁíaQGW–ÚKeÍ Êê°ÖúÚ–}›áC·æv†²t‡Ãa[•ýb±håeÔ¾m˪ÂVI ­§dÝCy!•²2è,Ëÿ/Ê'{w?JÒr/¡¼/“ªž8,Ü””Ú)ªYnzظ)©méñ!6EE×oo‡=l«ˆn"*º<¸¡Mi*Òë‡)ŠÊ[¯2MÆSö9”~ð«@+[âäDL³(|nXÜ­6Ÿ¬—g¾0ó(œ/‹V«g¢õh %ÄfPxaZÌV£˜,Eà»(ŠFx¥Gû|i¶(Š4EÁÒ•.Z¼Añ¤…^– ®‘¢4]AÝ©+š¦à»(ôçæ9zÉ%"QŠNÖ·[W(/ý·Í×pˆvx"tHM¡M &¾ƒò÷“ &‡¹u]’à¡ „Ý5‘‹³[îÇþ"'’Hl<8Ç!aê:–žuÌ”®‹‹Pµ Ì›!'Ô®®SœU âHæV¡8¤t”u‰’ ”w˜q­È©2ÿãã!LQSÍê Êî‹ÊÁe˜ƒFLšRþ%–H;ÔoüL }iŠ@Q"¸ÂŽä JÕhoêX„T–êWâ7 W0!1‰¯Ox®ÚŠðܡϠ,ˆÊ :FÍbèUo>÷ÞqÀËb*4™cUÕUPëƒöŒFkQLVâaQŸQ‡X>^€€az7¸T™ßø€ÚæX+†•—ê$<¸uF­VÊ"ý¨Â§Fb€¬m5¨²0¨W5nÙÖR›ð”R2Y#ês¥¬#œ’®ó®6ɪÜ6Óra8¥ô†fU–¹å.H«ÕŸ5Ú+°ï]Ãi‚.gq° ç[M±@ Ì#•ÐQRÔac‚ µÙ0ÄŸ ß5îW[ÌP¥Á á–•lÙ¨ÙÆ,0©[®1™uD‡>¾9EŠ–ª ©Ì]~»sÄ1RÒY kD nÝ V¬ÄFÛÑfè¹­ahØŒÕ*…!eˆ§yœQ—,„óƒ]m™‡r µµ˜4•)¦ª{<ܺN†Úl®eᕘੋiÔƒ_ʱ@i º¤º”³¨hG·œ L•·N šätýéSìÆêVÈÀü @]y… ^Û29:6Êœü¾ThKšMýÒ_Mðš³¢qTŒj’¬‹Í'ÖU‡ÍAO¯L²ƒU,¢áźçe‹5óQO+Î>ŬKd¥`œá¶5x¸E­ôý)ÊY(ØähŸŠ¤”µjša뻎‚Éb›<š¡ËÍD‹C<Ïzˆ‹ï#u5)ÕXl–i—Ñ„ñ¸£ã¼i®¯¯Ž»Ý-‹rt#Ó3Ð ‡êÝKµ°Æ½‘V^Ö;óF.õÉ–‰‚ó6n¡â‡«¾Ö¸‰´úXËà([ÂMåÖ°³\Ú3¹¶;ÀõÚVÜ`¡, YN O_lëÛ2£Øú“qf &üî?ï¼FŸÍ4m Žñ‹7¼ã‚aÛw™Òë6”A «Qs6?yà “íkËçkæO¬š¢Ä¼\¾Ò¤-ÿ³Üò×ê¢W™_òÁž/IEND®B`‚tiemu-3.03-nogdb+dfsg/help/logo_tiemu.png000066400000000000000000000712341220314353500203760ustar00rootroot00000000000000‰PNG  IHDR´Zžáë— pHYs  šœtIMEÕ &9oytEXtCommentCreated with The GIMPïd%n IDATxÚ̽uœ\ו'~.=*¦®fXdÉ–d&b‡™“I†²;;ð›l†ù7L&¸“ÍN&<ጓÌ$q ±±$£lYµÔR š»ª‹éÑ…ýãUW—dÉ“lf?³¥OK¯^?¸ð½¾çÜ#¤”‚ÿ¸’JJ)¥RR)P @!Áß?Ýs(¥TûŸÕã ?cŒZ}úw«Ë=VAðBaŒ0Æ£ Þ+ƒ€àAíÆ#„áàu‚ ¥RBJ¥”l?>¸cŒI»y5@ÉÕÇK)UpJ]Ø-„1£v÷ hIð)ƒé¾ZëÈÏ0ÊÿÞ‡þ‡ÁB)Á¥ïqÏñ\Çã¾PRZ&ŒÂxu¬_úY ¤B !%—BH)e{(Û£!B1e”2Š B«óx9h´gE®N<Ƙ2ª›L74¦QŒ±‚v|×÷=.¸æ !Àc‚)#”Q¦QL°RŠ{Üu<Ïñ}Ÿ !•Jƈ2ªL75ÝÐ(#˜`„R ¤ä¾ð<ßs|ßó¹/RH)Û-F#J Ó™ajAÃÆRJîsÏõ=×çžB(©ºÐ„!šN5SÓõöÿ‡RŠûÂn:µr£¼R«•vË\`„ƒ)$J”ü»èPJ .¸Ï=—ssŸs.„Ý#Bfz{%€d{ ¾ ”’J)¹  #VȈ&#‰t4’醦”j5œz¹Q-5šõ–çøR0B˜`¦QÃÔCQ3³tCB6kÍJ±^¯4í¦ë{¾äR*E6L=·â©h<‰ÄCº©Š•T®ã5ª­j©^+5š5Û±]ßãÂBÈ å&DÓY(jÆ’‘D&‰‡(£žë7ª­Z©Þ¨¶ì–ë»~P¬,]}c,¤¡øÿ p2Ãn8+Ë¥…3¹¹3Ë+‹ÅfÍæ>GJ£„ÚþwÅž”Jpá{Üs}?‡/¤ª D|0[¦¥ë¦NiÏ¿ºŒäPJJ%¸”B!ƒ)gŒ†ãVOjp¢·´'š . ËåÅsù幕r¡æ´<ÁEð:J‰f0+b&2Ñto"q.ŠË•å¹B)WiÖmßõJ¡Ø°ôx:šL ŒeûG³ÉlÌ0uî‹J±¶4³²pv97_¬–êvÓñÝ÷mI€"k¦‡3ýɱžžÁ´aiÍšŸ/ææ ¥•j³f{®/;x„)6L-žŠöŽd†Öõõdâ騎´Ÿ_~Ðÿ;Ãs½J±6wzé䡳g'çò ÅVÝ\B0&„Ð@¹’ãßG›’s^ÁeðéV´ñyè¶K.#9ÚªIª@?QFB³g0U+7|×Ï $=ÇŸ^:slfþL®R¨9¶'¥¥:X´Âf<ͤb©碰XZš-”WªvÓ\H¡(Œ±f°h<Ô3˜®êžË –Џ޷4³rêð¹ÓGg–gòµrÓu<îs)””²ÓTŒ1Ó¨53}‰b®24Q3ÃFµXŸ?³¼8“¯¬Ôì¦ãû¢Ý€c¬,š ,f–‹1b:#”°ŸÛþ ÿbCH»á®,•ÏO-œ>2s~j¾R¨{®'…Ô±ã0Bp)ãñ2UÁ\&ÂÚ¬wlI@€0"#²*ŠÔKÚ¢«–_ð˜`ÝÐÕ¦ðƨY·Û;;9;}tvyn¥Ykq_S˜˜`Mg¡+?_ÇBRÈJ±^^©6ë6÷¸\Uj1T^©VË ×ö0Áº©)¥ì–»pvyúØÌôÑ™•¥’Ýpë²»_„`Í`õr£Y·«¥ºiéÕR}if¥°TnÖ[¾ÇÉÁBe¤\¨ÙM—‰…bɈ2(%ˆü'ƒ¸ÇÕf~¾8fyi&_ÊW[u[±féwúý3=¹3f :“ß1Ü֞طÕ^ú±«²çúRJª1ÝÔZMÇi¹3S‹K³ùJ¡æ9þ² BÈÆ¸Õ°ë•†nhJ*Çöœ–ë{\µ-ÕnÏõ¹/0Æá¨™HG™F]ÛÍ/—ç …¥R­Ôð=_µ5ÃZ÷‚~·ûžà¾hÖl¦ÑVîjªí{«ÖF×` ž‹|cŒ"ñPïH¦¬'‘‰ê††ÉªZQRº®_+7VKùÅR¥XwZ.çbëµc[WJ¥\µZ®×kuéÙ– :ÝB]ŸÕ1’B¸¶=£ñõ[Ç¢©P"‹$B¡˜iÆÄó½Fµñ½xtif@†˜ÆXLËÒ5P‚nk“ÀJA€1fŒaC†BV,‹õ„NoDé3_ˆD"„ülËäû_ýñÿÿžÿå{¢Yo–Ê­¦Ë=^-Õ]ÇBn½aâøëîë—çó¯ÿ¯‚K%%p´ª¨ÀŠêõå÷‡Â¡Î•ïúí׿jì}¾Ë–[+5Jùjº¯Ž ö<ø®J*#¢ýý÷ÿì’ »oôÑç;)¸pmû!$¥ Þ;´¹÷Ÿÿè‹oY™¯<óàQî ×öœ¦ã9^`ÿg¤J÷E«áT µR¾R¯6i<¶u`ûµ›/ºc¬iš¦i/ýL„ÐÒ¹Bpœ_,¼Ä•BH`‰Çãÿ¿éž]€•”Ò³ýj¹a·\)¤Ór¹Ï•TW옸èúÞÁžM׌{òÌ9w½õ†nd@2ßzÃÄÁGOúì†z¥i„thsd•|Ã÷}ÆØ‹–ì‹c01ݱs‚ {å»o{ñ•»nÛvð‘B§åÖ+ÍZ¹0R 0YeM* }}}Áõû<°ã†M‘hÒ™”R*àͺ l¥T²/Ö9n6šáH8øZ\)­qƒd•œôŸާ®í×ËòJ­^i¸Ž'…T n}íµÁ5ÞûØÇ>ðE×v ¡Œ1¥TµTãŽRÌÔÍñáO~ïO;_ïÙ}‘«V=²¿¹ïš{6?ò½ÇßøK¯ÎÜöúkîûò^!¤c{ÕrC34„ÀwýUR¸»öR±N0ÆÈʹÄÔdV Òj±–êi«WÇq8禎PBh¤ø¿os(¥Vò…³gÏÎÌΞ;;{êÔÔüÜ‚ç{®çÚ-·jj¸e"Éô‘|öã¿÷ÅÜ|Ñ­ñκ|4ÿåd&qɇÿé¯~$Ý0°içøèÆá#ÏL­™œB¸®Û ² ¥”tQ -ºÁáûíõ÷…ÝûÕüàR²KEÓVv(=0š˜È*t‰5ºãæcÛ¶ÿèC¿ù«wÿÁ;~ýµãh,zók®~ôÛà–×ì ä–”òè³'?üõßÿƒwý]×ßqu(n´j®çøõJ“RB¶[®à2pv¸ åÝâVÓu×/nXG­Ô+‘ Ê…À€ƒÀ=!c øç·G/Žf£yêôéS§NŸ:yæÄÉ˹eÇum»ås_J‰´£Y "Rzk„iJFh~ªÐ¡ ;¬×ë—G½^ð«O Ovq`¨ã H!<Ï_cJ0$;²4À$^·Üjµ‚c3¢_쨶b×VæN??wéÑÈŽkÛ6æâÜ’¡›†©_wûUÝÿÔí¯º^õîÛpÜõæƒË8>±y$žˆ›¦±¼ïèÓ2ozÕÎý îóVÝF„Çv;LO÷øH¥º'F™ âE Ãñt¤ Ù†ŠZí%äJ%v<² ñ‘Ö±Žb¡püøñ©©ÓGŽ>s¶ÑlÚ¶íº®TRJJ)„$„) ÊãH %‰¢Ö9uo÷H)Ðú RªeÛ—|}½ÜêBFÇE\ƒpܵ¼ÖÆSJ€£;|€jÕœàø†;vææ ÕjÕ«+Ûn‡ˆ-ÓŠ¤Í¾¡žo~â~ßã—1D†£ñö<ýÈáM;ÖÀ[~íþËŸ ÀqÃ]»}aèºÛ®.{àûï|Ó p×›ozèÞ}ïùí7çïyëÍ}í !¤ëxJ*LpM À! ïâl82D—e} BψhápÛwm6›¡Ð*8<*pVÅŠ)ß÷mÛ%#ÜÖ¶AêÑÏŽýûŸ<>ùü¡CÓgÏ»®Óh6Eï’R"˜"„AIÐu#ÃñhüäÉe¿ \`´U¾Ï‘mÄM vÓvŽÂ@@!!$¤ÜK7«T,u"AØ6`·””ª‚ ydMö !|Ïo#¦ õrÛÊÛ~æí7lº\·ŸyäðÔÁ™Kþjמ­ÝÖñ/ÿÑ› “M§û'œ¾âÊõšÆîyë-T#FãœØ{èw?ö>¸õ•×ýÖëÿ¼Ž^¶3’6ë;ˆá¡Uÿ?@?Õ×ZeYÝZæ’GgvíVËÐU—ÞWJ !jõúñÉÉÓËǾu?WÇH€Â SB1Ñ4Í0Íh$Gâ±h&N&“Éd2›Íöd{Ò©4Ó.fäè_ýÕK•ŠÇ=¥$¥TR(@€¡·§ßÐÍD,‹Æ× ‡­ÙÙ¹ÂJqa~û~<ŒÃéTJCšp±på‘ç-Ì. ××UI‰”RJ^­ª„U%š¡i:U <Ç÷\/@ÕEáìÎèH¡¸/„p78Ê…êO³&î|Ó —Çí[;$Û‰çOoØÜöißù[¯ûæÿüÁ_|æýðKøfÃl«­'>xå5›£ [½Ù³S3ãG7û®7ßø½xDI%•èÐÊÒ4Í548ŽÛ‘ p™„Êtÿš#ÆPšßMFÈ2‘tjØìJRPJ|ÏGq.”T\pÏ÷…’Fsfvv~~²,kÝÄÄùÙ™âc€£Ñj¹¾·~ÝBèÜìù+6mö×%¯W„ ¹¥“§¦DŒ±h,²yãét*27nÜ iL)‡#õj3›Îž==‹€îêùzÑUJABídÒK‚£a:Óh8j…c–”²^iJ)¥ôUÇí[õT×ÀÁ%’ä"§atúèùcO^Lc·MvÃgþüÛ“_`©uòèôàx_goÜ:Q)Ô +Åt&•îYãîÿÆc/û-¯w¿ý¦¾ýدÿÙ{‚¯¯x×­ßý‡‡ n(Ýhà¶2Ãú.ÿå]•À#«ª'X?N¡”&“‰t&:4uà€Óh)ßóOM¾†¦×ëµuë¶nÙúŸûÇBq¥R©z¶?“Êl^ÅðP<OÄãCÃC‰DüÌ™s„`J)Æ(æ–ó}=†ilØ:Š1#ìùÖ«¶ïø ‘öäáK;î¶m …i,³™˜Bpé4]ßóÕ…¶[r ØÅ¤ Â'Ÿ?ûÀ· …Bš®“U%Åœs!”’ýÃÙH,Ü;гsϦ¿è Wì‹DÛsöÌïºu[÷oßük¯øîçú/ôŽÎ™F½ypïñ¿üÂû;g®¿}ç>tïûS4uǵ[†ÖgçNå:aÅΕftMŒ;®c†Œ—Äôô¯Ã÷ý•R®ç­äóʲm^ÕLšÏç‚A“RRJ•R–ea©$ˆ‚e™wÜvÛ¿íÝ ä ‡^Øsû,Õu!ôäSO8pÀ2´T,võ•Ûz2™h4œL¦B¡B¨·7ÛjÙÅbI)U( Áñx,‹ !LÓ±BVà¾sŸëº60Ô—›­q›ÙV H—G0Çï«›š1„/˜FÁA†7%]^“—õ‚ô0„î|ãMÿåOÞþÓh–Ý{®|18®½}{·Áñ[ú…îß^¿gçW?ñ/ݳûáS×ì¹²;âûbÇø‘ç&·ïÞúžwÜô¹¿øî‹éÎX"Ú»Û渤˜Mõ­Å}î_důVí„l%1ÂRÊ€JWJBB‰„”BH‚¹Ð ýš]»æçPGñuKŽÂ4ŠüÕ_þ‰’ªX,ÇâÑr©lšF(dÕëX,’Ëå}ßÐ4MŠF"¡P( ;™íÌrE¢±ÈøÄ؉çÎÖAH)ƒžvsFVy»a‚)% u,^Ú å‚¯%øt„3qº—ãK’ÙKp©»oo‹ŠF£yþÔü¦ë/ ,ßõ†›úÎÞW½ýÎU?eß[í=ä•ïÜsÿ×÷à€—¿ã¶ÏÿåwÕEŒŠ ^ ŒjÝ2ò’6G¦?Ù¸¸Àz 2"<Õò@:Øå{Ò&ì1€ÂÛ"Ðp!Ä(q xëæí+ù<(D/”#K…H$R(ãñX€ñx"… ÓÔ GBJªÜrN)…BI³îþ!FGÇ Ýl¨¦”)pñ-—ˆ  ‚öîˤrUãv¥¤S¢›íE\.TýÎS/Ž'>x±Áa’í×m^eÍm½fËCê¯|ÇíïÓ_½òmw „Vr…©Î\wçUÝLð•»7ô÷>çy¾¦1[?¼ùÚñãOí~N<[s=l»Ûþ¸œ·ÒÓ—îNŽéÜÞñ{ÁDIŽ˜fˆùÂÖ5F0¶— PJÙMG×µ¦m# LÃ}}ƒó­2Æ8‹ÙûƒƒRÅu]÷ø±Ûwl„W¬×u={ûžO Ò£çææ*Õj`õ ŒÆùó³¹¥%Ó4o¼ùÆ@§bLb±x</cG(@J)¬¬°u™ì ¼ µºO¨Ž˜îéé6H;¨êvg(¥6}ïžù›_û‡ŸÉ­ßvýº³þôÇ®¿ëªÎ¯ÎLŸØ8wÖm=ôô±«¯ßöðw¿åU×tnùögxÝ;ÆÖ–ÇÓ¼åå×µ ·Ýr8™5b7]=|𥗺½•n Ř8AJ*Ïó¥Ð|O6r3ªKÑr‡1û¢V¯G£‘Z½‹ÅÊ…ò†M•jRªs/’clY¦|òø‰L&Ýßß×Û›Õ ½³Š•RÓÓgæææÏ;¿¼œ‹ÅbO<þă÷?ôàº÷ÛßyâñÇ—––äZòÓ’‰T;\ `XÓ.MŶQßÎ(AªØêÓ!¤[wç'£Õµ…îÖ÷QsÞÏJîì2?Ÿyäðuwîh‡@s+ÿý ¢-Éßø+÷|ëÓ÷:åï¼uU5ˆ¯}ì~c[•¼í–û¿ñØZ"È›oF¦Ýg²kÖe³ÞŠÇ. ÍÐÅônßx*Û×sQVT{Í0Ü^[í%Žë†I©f»žn˜SÛu±BÔÐ Á…6ó…•H4F)¤4]Gu"k³Ã5 a|üè¤çûLg# X @Ác?Ù[«U²\×õ=?Û›-—+¾çU«ÕÁÁÁZ­K$Ôê'Hÿ'’¬°yÉ”' ”)¥8çµZÍ>S›[@J‚ßR¾£”L.ˆÈKævK‘Up¬ÁNÓ4î·m‘D_'ú²üŸ „·‹á¸¥íÄæ—W\Ç ¾Üwlv2·ïgö¼ê]7T+7ž|ìÙR¾rõ m<íèéÅéÂ3?9ükþ.]?\È•«•Z, 4ÂŽ›7Ú»æc'ú"Ý ˜¾ AîKûÿö©GææK©h"KE¶ìÜÐÖõ6  BˆªëZ8lÆ’F(jËX×õZ­:11&AT(EAY¦V!J)¥Q&•êVЫ©n˜º®ÌÌÏæs+ãáÑŽ¥©”â‚‹ÅÅÅÅ¡áaÓ4õ†ëºcDZÃ#£†a˜¦µqãzBHp£’ûBgš¦i.¥ š ]ޏ ƒ”Jx~‹{ÐâJ‘‘R˜Zle ¤ì"Ë Ýðœ6üïzÝ-»rWæ—ŠÍŠí8ŽÅ3MS ‘pÔŠ„#šÁ ùâëÖýf 1™A¶ìj§˜<óèákö\ÙyõóûŽÀCßÚ€^ñŽÛþøíŸxÓ½§ƒÑýü#pæØ,çøÂS'~ðõ¿úw/Æ#w¿ñ¯’s^X)-ž_^š]É/fN.u¨¦i“µ¤tDqoþüÒØúÁt&%A`„•B„aŒ°…‘ 8h%%¡ \×¹„CסŽëLOM Jd Œç—–2™×uæBá€ÜïÍöVªµÁÁJI:^þ —¾Ï—ºfÔ‘ÉžËæx†°7˜é†ÆÂ ‹{Üo)ß—áPø:èÂÄŽ?ºÅ|[vôe*“Le’/¡GÌP«“¶îÊáN*蟾ñžËŽ<9OüëŸ{Í{Ú>ËJ®øä/@£drÅÞ,¼ìM·üÞÛþ¶Ž[^½ûãïÿ§ÎŽÎnëÒ´Œ~õñKÿão=ù®ÿþêÝ·ì „T*•Éç¦O¾pöì‰YŸ{º®ÇÓÑáÞLj`¬wy¦Ð‘©š¦B$çmÝ¢d7†ÝLe–@HIPÀ Xˆ`·TJQ‚€mÛPXðd2V)W"«T®?v⎻÷`Ôvjµúý?¼¿¿À0MŒ‰”Ò2Md™áh,ºs×Õš¦)¥0ÆBÇqª•Z«i—rÕüR¾Õ²)¥•îM\nztCvK_⥂«¤Bœ‚À ðE>Îö›×’ÇÃH“Ê[‹Ñ€¦•™âOodÜw´ãÛo»ncÇÂ=øØñßþÛ_세ÎM.ÿô£‡n}åuŽ„>öýßío's|k/wP¢ÙéÅ鞤Ö§Žž 8Ùá±Á±-ýg.´I‹ é]7mÿÁÉÏ|âÈ“úÒGïÛ<¤mbËÈuwmço¾¶cóv>ß>2Üñ„5M#ûn[Û`D\×פ642X,(¡ ¤T!D(AJ"„„Q¬$¦XPMS :FÕ8ÆÆ&æ—LÝR²|ìðQÏõï!¤i콿ü^¦1„’ IŠà¢X,U+UÎy$!3•çËÏ>ûÂá'Ož=¼Ð\ñ@”ì]³Ì‡Ö÷~쇿;8ÞÛÎ+N›í Sƒƒß–ÂQR)¹ ­úÂuÛž–i5=§±hì³_üççö5MCÓtÆ(ÆVwE¸¾ãû^ïPχ¾ôûm–âëû:÷nݽ®C¯½ç_×9çNÌù«©ÿòÅà€ën]-ßÿò#ãóSó×ÜÚvs~í/ÞYÌU`Õ̽þî«:à˜™Zl6[Èj êvß¼c÷Í;^ìíOŸ8·ùOþ—ÃûNÅÒáG¿r¹½9¡p¸±R*y„Â!Î¥mûŽïr!£‘°nj •Ź@í­dí`6ÂD)¥ëº/„뺜ó À1>>¡1M×™B¨j×O?1:6lz@9ŽS)W…™­éZ½ÞØÿÄ“g¦§gçæ§§Î¸ŽË…6 "@XÊ â*ok¯žÁôåæ8žˆ™­UqAe0aÔõ8B…Bá—¢8{â…ùj78BakËŽ+~JòÌ£/‰†`DØðøÀ%/››^Zs—¸:sâü®›¶w_ð¿ÿa·ž~öߎ\¤¹×Ôâu›˜NxíCЪº÷eß¾²/š¶n}Íî=¯½n÷mWvìžcÏŸüؾpxïé@[ÕŠÍå…\2“¼}!„äJqäû¾ç{Õ”Rˆ2ŽXél8Þ§aV©ÖM›s¥aÁn4Aû‰tS)pl‡sÞ­Âho_¯2 ¥a+T©–&Ÿ¸ëž;fÏÎ-/-—JånºÞó¼'O?~òÈ‘#§§ÏÔêu)¤ŠHR P )@(aH% Å ‹1K9BpñäC†‡.ä@Q—ÙÑB $q€Bd°ãôàÞcüÞoè GCBˆfÕ)æË+ åüB!¿T¬.·ß”|sßO“Ä¢Vw£-øá×é"Чþä«¡„n† 1äsßnÙN•?öÃgÖ8\úîÿñ–_y&›j6›•r…sñ“{t’ºÀÂéüßüƧ×õÄâqC×”!8Õr•0$üµšD @IÕ(Ù÷}qß}_Ü«YlÛõëvÞ¼µ˜¯üëg\‹$˜Ò7^ñ[Á^Ñ (Èö("€ bÑ Bt„ J(¥C&(*”ˆAkÅsTWæc,¤l6›ÝvRJ}ö3ÿøäOÍ/äæ—f6oØòÁÿõ‘#G¼ptffæÌ™3åRI  %„RB© ÅK!@„E¬h«^AX¿ö¶ÑuãÉhÊ«ªG¿ö%2ª…yÝ‘\¬14èt¬VSL°nÑpRÅõ É£Qvݦäj_ (Ý“ÑÞFöSìý»°¸Òerãá‚RO/âsW70wmG8 nÛÉÛ•œÚU:Å¢d‡Ç êKŸA„"-L¢Y-5ª'GÍhZ×M£X.F¢!)ñââr¶7…`µ"ÆÁèÈ`µTJoK¦ÒŸúŸŸ¤”þ݇?4±nÝi‚Ã#ÃÏ=÷¼eZ€ðäéÉ×½þ •…O!¥@"©,FP212:´q+#±#= (éÛ`šf!·œ›É åWëóÄQE1&Ðê`£ › €P‚Ú¦(¢ 'Œdo(ž a µ‚CH£Ag_\Ð(¥H;f ðÌ…êì?o£(˜/ÁE" ‚ máßžSP€‚H‰ÀÈjC¥ (m‰@IQ9 Š˜Aw„AA‘va±Õ&¯ÁFtS‹ÄñdØ ›A¼£Y³[ Ûµ=ßãAVN;ûIgLgBpÇq=×.F”  r&X7XPƒ2b„X8e¤†¬p–´ì†æbÛõB!+ÛÓƒ0-•˃¤ VõêkÛ“„0¦qß«7玎Žº¦a*\uÇ|) ÆÔXÅ®ˆeú£©äìÉÉJnnóÝoêÍŸŸ¯+4sâ`¡¸ÒlÔ¥h1…Rád,‘¡(*ëÊ­;ÂAÖB”r\G‰™AB±¢‰+3‰g-@(š2u‹–sÍzÙQ\ ¡:ø@ ÉuC f#ì¹#üâ«kPqÎB±Qw1"€÷\é„`Ó20FRªVËæ’ ¬–¶/¦Z{ãB Â(°«°TKŸa%Ça ãYÃÔF¾ë;¶ç9j¹¬®aLÖ -šg’ÙÁT4¥š5»R¬U‹õZ¹Ù¬·\Ûã¾àœsé -Qw¹‹(D"¥”¦1Çu8÷©®›êû"„jH³”ž”8̵M¦ÒšI!A½ÚB d{‹+e×s=Ïó9÷×÷…ãxÍš3þæ«”JI³é¶šÍ‹Á100ÀÓ42M[Hƒ‘jËg¡DïàôüÂì©k_ý¶lÿøDöØ\Q¸ôÜÉÃSžz¾Vk—¥ß$ ¨à²žëO'2™Lv8”]§8ûèÔ©ÅpÓ/ÏÌ`L)A!¤Võ+Õzj´_Á¡Œh!I±Ä …M¥éÔÙgF5 Dy dàô ×uͰi;v4’J1FA¢F­©Q¦$4[6!XÓXWÝ p]0vZ.0R›.ÌÃkV$ÙhVê ¡B%c)_ABH)SÙ.'ÑTO4biŒ6<^u<ÛçRB WK„À¶}M#«7n ELL°k{Íšm7Ïó…¤U(„L¦Œš!=‘Že‡RÙÁt4FµN­Ô¨kËóùé©óKó¹ÊJÉó|L1Ö›ÈÀ‰0)}ƈ²XjÐ0Z—õ|a„†˜Aˆ­¦°Ý–B¡v¥š`©c‚0ÆšfꔆCÌ4 ÝdvÓ‘J€¦é‚sÏ÷/G$éïï/K¡PÈo¹ë®¾1”¸~÷5“³‹X¨{?ýçKÓ33'g-.WJ+Äo0îÏž|ZS 1='bÑd*MD‚<¼&IãÞT˜jù)…«3³ë‘$ƈú帥»ç˾[Üš § _z6·{zãZˆDâ&`dE5ÌQ<tÒJ@³a»Ž¯ëÌó|ÍÐVŠ+¬††ŠXár¡ …|_ÌÌ-€‚ёޠ"‡ÒqìH(Û´ír¹Ž5íÌr‹aM‚l¶ ý™¤–)Å#Ji8d†l7+Ä$—79×ÉlÚ8šJZWS •Só…–m ÏCB(¥ôF)šµpÃÖ"]{Çv3d`‚<ÇŠÀž" ;M0eÔ°´H<œHGc©ˆÒ›-ûøÑÉŸ<óØÙSsÅ|I£ˆ2Aa ÆVˆPésP +î÷e‹G—´„Å’ 3]3(H2#VROd# ¤QòŒ¥‡Ô‹u·éÅû¢˜`·å6ëMª˜Õmáôd{I‘ ä…y&¦7õžs+'z7Ä F²™t¡\'(CD'†ÉlÇ+Ô+Ê÷û²½Ha׿‘^FQ€æ––¿ªgફ×AœZµaŠÑ¥\ehKjq1çèµt*a†ï‹h¬‡Tju–WÊ`ò@Ë®B`“Š‘ÂÍ–­i ÌÕtåZvË@",‹|%䶦« §Ÿš·Âñ¿þ·÷ׄ÷ÌÙ¹\Á­-ÕË¥T–5ô¤É™Òu„‘Ú¸cŒi a$¸ð=ß÷ºjH*è”vIBFR'¦Nþð‘NOŸ™Ÿ[t=¡(P,L‰Ä’«v:#™žØ=¯¼½¯·G ñÝïüèÜ™yV÷›‘ž0.i«Ñ²[…V2×,’ËO©K!FÆ ¡‹K³ÕZ aÕß? S}òù“•Z a4:8Ìy³6ÛBœòϼò•¯‘R[ä.JéhƒcxdD×5Ó´b‘ðéçш¦ë†1Siktpce4Ø(ƒBX!€žlÊ2ÙJS‡hB÷Uyþ¸™í½*œš=ñœ…rFXϰç[µ\Ë'hÅñH<î4ó£½=ç“‘ŒÖõHBgÑdËiEæ’`Zf(dy¾Í0‰F£Õj=Õw_74„) ×uç—¢ISJ÷FÍÒÛ›YÌ-˜1k}r V³Ç7÷åòÅÁL¶MNèž-5¡k’ù¾ò¥’.´Y7cZO&Fu]?19™#ãns›_‘Ù2¬?Z^*±þÝ^«Ä¢¡¡”±ÓEì´¶¸¨¤nxóÏ Ž$m§™ÈD\ß% RÙ8 RñÚ›:äZý±v^YãøñÉÉÉ“'§NŸ>{¾ÙhF 'd€N°b݈¦4ß­WJ  1ÿø±¨Ù¨7ò¹ :Ò4ÍuýõÖç º¥ß¼ç–}{÷E¢¦ÒÀúúõ'/ä š®'ã©þþÁéé3ùåœÏý;vû\LOŸ*•Ëõzãå÷¼¼R©ïÏFy˜—J#²PHDX.W³ÂQX³­1ƒ¶\B\ é3]è0+hµì©S§&'O?~rròD,*׫µJXÌ p!‘B“LÀ¦mï¹ûö¡Á¾'ö=õÝï܇1ñ<ïk_ý:ÓèÜÌ|>_aĸóî›wìØöÍo|¯Vm¦ÓéZ½~ìÈa©|McÑhxnvѱmÆX,žð}_JE1 Ã2õr¥\«×ÕP,¡”=ýÌÓ¦a&#˜"„0¥@ÉKIŽX<žˆ'Š…¢ëqʘcÌ )_ÓQ½„°þþp$R«×-Ã8sæT±X§™P}nf©QkñV³º¸rvîFKà áRKTdRèLë™(NÏ,L>›ŠiÉl˜s?•ÊR¹|¾Ùj5š !+…FPa0ªÔê‚ûž'MäÆÊ¢Uw‚iP 4Fç–sKùFË=;;»ãÊÍ ‹ËéTÆóùÓÏò9Ìf2©T,¨}J(@¶k·ë†Ñl5¹!y"D—ò¾}§‡Ò¡R“SÇ­ðÚŽÞðÙ…|ÿñ‡qH)É ±¾ÇÊô…5Fº6=£îÅæºîÌÌÜѣǟ{öÐgŸ‹'Së6®Û¼mË»ßýVJH,S >þñO?qà ÁÌ•vrh}¦wSdpèØ_iV Û¶¬ŠÜvÇÍ÷Ý÷ ÷ñúõ£†i=ÿì@ˆ *$/—Ë‚ó7¿åµÿÉ/'‰pJËå—-3¤ªÕZ¡ˆ5yrÒÐ ¥  ŠÅùÅy]×â±ÈÀ@ÿÜœӲ#ÑP £±H£Öܰ~¡´#å.-9`||lfvÖõ|%e, wßÕ3:ëë k:ù_Ÿ9>u–;N %â±b¡Ø²]â·Î<ûWŒ°˜š/{!Íyü¡ïmÝuãÊò ,jé­}iÊ´ççç{†‡Qk©'VJÕêµx,N±Ö“Ig{2GŽ7 “Q63¿0>:â¸no6OŸ‰'㄀㸾ÏaZPwœrjzfi9ŸŒÅÒ!³X-e’ñrER‚#–U({³™J­qüØéÆW ¥þ ÿBˆ ¤­kz2™Ú0Îj5¾Aœ¡žˆÁ°¨»Jˆ‚'Fn6N&"ç„o#ˆ%<-[ˆmÔec ‚s!”óóóûö?þÄãŽOž¤LÛ½sÇu7ì~Ç/¼ ¤wêô©DñÐää”iêã[÷ÜôðCûn»m×­{núÿܱc§‘kÏ:öšWߣéz$j¬äëÉÔ@"ž¤„F%%Z_o¯¥°ò}?‹Ä$0 à¾È¤Ó ”ÜûØ¿a„Ó™ž«¶ï@ )%1FÁæ|!ø¥Á1:>f<õt£ÕBMŒé·Ý: @8ôfØÞ'<ßÇçŸYL¥S³," õdGÌžD,’¦I4;ù8vr'¿7•Œ-”eØcçr¼^CnËRÕL2ŒÚ~„bL«›‰´î8n$r]»Õr6NŒÍ/,R¦qÏó|><ÜßlÙ®ëq!\Ç [¡l&é¸>Å)ôÄSÏ >È™¦%ãñ•rcÂ9G!Œgç–£áPÍqVJ%D@ˆÙ®b¶c7õ¥•AC72IQ,0Íd“¡s‹•€ãJM/ûƶl¿Ñ®WB™‹‹+ÌÆ5§gƒ˜ ìÍ`èÞóž÷ÝxãM×^Í{ñ,SŸY\\œ™9ïy¶aXë&Ö9ŽwìèÑ‘ÑÑþþÞñõcÛ¯Úrô…)¤¡sÇžÛtU³\œzáXÄŒÞ÷£‡~ÿ÷þ?)U:•ù·G÷MšÞ¼åŠ·¼í5Gÿè#˜ëBáO}æ Û·n­U[i…B­w,ÂmáÔ]„1ÂH(‘H$A¢ x‡Â”‘é“gv_}Íù¹ùr©0·0{Åú+‚Ÿ‚â\\NrL0Q„•RÇOæÎ«·šÍó3å¹ÙêÌÍf2JÉÁ¾ÌöMãvÃ[Y®»àÔU<>±#›ˆ+,£Ñf³óšÆw³†¬O4ˆ¦X S!ˆï ]c±h¬Ö¨QB++õDša€¾¾>ŒP,ªû¾Èf³Ͻ\Ê”ãÅãñb±‰EªÖr¾€>ôÂäÐà ÆèJ±€$‰r©œL%‹•Šä’`Z­7B!ó5/¿`¥Qmv.'™BÜçMàù^±\ŽÆºe>ûìs£Ã#ˆ„•’Ò`K®K bÊUÕ¢Îsßð¼„p@H)Ÿþô'^š1æ åyÞÈðð¹ó3ËËù^Øÿ‘~<·œãÂýÑý÷õŸ¾¤úÛÞòÆ£‡ÿFGºÀþ¿úË Å#Qf†<¼¼˜Ëöõ†ÂÖöÛöîÝõÕWîÚ½3–4[MJ0 Àé#íÕ´¸Èåªña—™Ïià!Óý©VËöê~8’Ö5Ë—#Ì|›7jÍR±È˜¦éT3£Ä ›ž«1ãä©©T¦7Ž€R€@\N­d{³ñX¼\ªØžÇ[Ñôi„4¢¦ iR3“ŠDã‘(Z^Xœ¶ ù3Ó Çø´h4„ݰ Ì¨ÊV«õJÍÈ„\ÏÉ-6n¼b` ß4õx<±oÿþz£A)A0Á$Ø ‹Àó=‚ `Xʹ¥r5X–™_^!Œ,,.Çñr¥¬@%’Qd:ݶuÝá#S‹‹K„ÑÓgf®¿v§ÓjöfS™L2dê‚êVÈÔHPa,¤XuÆ£ìÜ™ógÏžÕ˜FíÚܳü³ÀƒQOvËOK%äHŃýDáá4 hy„(D U>÷OO>|ôè >|xn~F*Y©tìšë·VJ/9üä“OÝ~Çž &úû³¹b)‹±P_¼÷ªÛ¾øù/ÿãç¿|ǷΜ?êÔYF?ñ‰O×êÍ-[¶lÛ²!žŠlÙ´ùÇ?öÃ6tø…öÝ,•ËïûÕß@è'ÚÍ<6>>?¿ÐtB¥õ°DÚ ÇsêÉp"¿¸²~ãÆÜâÊâÜbµR¥"Ïß‹0 ‡Y(nY,Úª7NŸ™õ…‰'âõjÝqœZ£ÞhØÇŽÏå—1"©dYʲb¹…’T>—‚`"»B„!Ìho_””HH¤çA£^O%""bÑ0e”R©ÖׯY·~!Ô¬7¹Çc‰8Á¸P*Ç"V8˜q¡ÆŽ\‹^BÓ'&&^v£ázøä´ÛðÌ!*¯ÚŠI<3£f-rëÑœÙEÏñ5î»W¬3mG-å!8Â))%¨û|ø©§žÜ¿o_¡X¥tÅ“±«wn[7<8ÒßכކÂJõûâ?ç;/»ç.ÁÅË^¶ç«_¿8M/½1}|òèÔô)Àìì©…ssßîÛrS(=à8g1‰/-]×ÞsÛuCƒ½¥rõÉ'Ÿ~àþG( Œq­Üš=ú“| aŒšÍf.·‚@I!sùåz­!…_.—‰¸çywÝù²¹™Ù\>ßÓ›Îô¦j¥ÊΫvžœ:Ñj6\Ç*0ªKò›ô™§ŸFAî%SQŸsé¼âWªe…äc?~˜`J‰D"fÜB®N„Ë¥–ÎhÜ  ôŸ˜<1·RMÄb¦i™>g;ŽR²·'söì (•ˆGc±d<Ù´[Œ1·åf3I…1BˆsN0j×…ÒƒhrÛ÷FHH®ã./4¦ëš…Â!Ч1ι㹾ëkZ¦·7‹W ¯< !1 ”çû˹åûÍÕ4—WVrµZ/€$„J¤Š¥âÒ’yø¸†VkN×jµ–E€„â=¬'¡ÆRÉßýÝ÷3Jc±È¶­ë‡{‡ûÒ½éx4jš†Æ0##Èô$v\µeÿ9|lÛö­¯}ý+ð¯6êv,zlÿþ®GÃP,{Ãm›7Œ¿|y)÷á~ŠÍ4Ù?ô1¥$#º öíºúêF½±÷±ƒÓ™“§ÇÆÓv8,C¸Ñ²)Õ)† ë7FÂ1#œ6¬žLúá}÷%Sé±ÑÑÙù\­î‡Ãá©SSKùüí{öX¡!$øon. Žuë×QÆ0žÏmÇ9uú´” •דˆ§’iÛrú{GÏÏ祖e%â‰å\~vvn÷57X!«Ùh¬¬›M;f…–rK˺É2™LooËnô.æ*ŒRJ(`„ÔMPò¹&=ß_76"A!„• %Dª7›Õj#‹eªi‘H821F ¹åÅü2(%¥lÚŽëz©d"ØËR)•’§ÎœoüY!= ü5 ò<·V¯ÝyÇí\©‡üãt:S«×¯Ü¾- y®?yâ¤ïù.ƃCšnìß¿¯7›[˜ƒRʹ¹¹ôMi¥¤Â÷} °çÖk{2™¾ždÔÔ ‚Õ4FW7aa‚5»®¹òÙgŽ|ûÛ÷nÛ±•1vû]7}ÿ‡* C=ý˜Ðl_rÏ/{|ÿþsç¦w_½™QšJŶ_uÅñã³þÄØÄ5×îÚ°a<±Cýƒ¶ãxö…VSù>”KÍDÒšX·Ž™’êôÔÉJ¥,þwyï-×užiîprª:•ÃÍ9‘“(Q%+Xê±½º-‡™žvKÓvÛkì5ÓãžÐaÍtO¯5²×ز%Y-‰mITbE@@éÜœ+Wª:ùì½çǹånÉ¢f–Ýîé½ð÷P랯öÙûûÞ÷yIÄ¢P¨ÀñG1SÉÙù[cÃÃg.¼ijòôé÷¼ç=û„w&—”ýèâÈærÉd²Ó±lÇËšQr)ƒQŸRàzB~æöêá#G†dIö<¯VkD„¾øò+R$Jã##²$NLUÞÚnÊŠF)ÅwsvIÕŒl6cš)«Ý‰"i ë†*à±QÝÐTÊ @ˆ1È(ý?Š®)º.r¼¤*Ï‹–‘øÔ½&,¨;žD$™Ð1Ä%|Ü·Ã!H¢ˆP‚ &r¿53K¢ˆÆá ‡Ž¢à‹_ú"csxxp!ôüóÏSF1⦧öYYXœ¿½p"XÌAôCofv¨(2„´ ˆ àž‡ïQxÌc† Œ8‹«F±ðƆ†ò{§ÇŸé…ßýÝßI¦’ýÈO½òòiÇóŽ “ÒéôÜìÍV»¸þéSg§¦&<ß}úéÇoÜøÃ}ì©ÿü‡?X¼½ ëŠëy_}ök×oÎõû>†¥ Ùr2Ù¤®šAà1ÆöïŸþü>:D4«Û 23¦¸µºŒçñ¡}ËËK!^BŒBv7RŒþè× Bh||l{kÛf6°Ûé ¥ü©ižçN½zºß·oÏÏ¿uå­^¿ÇÈgÒù|~p¤RÉzÛE`em "”23ƒåzµÆ$„XíVà{Ž7K))UMFo¬Õ_9w†QFvk–1ˆ•̆¤ŒA1 @À‚ˆkaà.*“!Œ!€b(†øn‚„ã9ÆèúÚju«Š1‚‚À:x18Pä*Mˆ:°w?B¨EÕ8Ž26X(eáF%â8„~ôÁGu 27ÖÌPE”P@CYà0Ú}{Åú.„áYÐ.{a¤©â=÷º~}øòo|ê¿M¥“øæùKï¼@ÃÝÆûA×ËÆOL\¸pcL ³{rjo/½ôŠÕ³DNÌf³ÍF]—µR¡œN›Aù¾O#²±¾­fÚLÚý>ñ–ˆ¢h;îÛoßèöz<Ç•Š…V³CÉe3¢(*’ÊóRÅ,lh°pâÇΟziqq@àºdqqÝLÉ®g3ÂÉä£=8€‹ æ%‰Žïû÷íü ‘H˜¦E$ŒBÆvQý+}üû¿ÿû?ø³¢*çΞó\Ÿ2J(›_¸½±¹ø^"‘Le“€ÑÑÏA/ )`¢Èc„¶v* Çår¹Z­ÞéXɤ¾³]mw:€”iŒS™)sœ¢¨’(¶;Œ ¡LUßó\ÇA˜C)”Òèp%6ÐRB #!„JIDBJã<®ˆÑx@K% Ü db”îÖ‰'a€B8ƨ& !ef2Õh4=ߥÔëužçkZ»Ý–Uumm@è¸Îöö¶íúµzÍ÷}„ÑÆÆf®cܾ½M§Ã0à¦4bŒŒ @`!†È‹BŒc Ä»j?Àq˜ãù(ŒÎž½tï‰{FGF2™ÔòÊòN¥Îp\/k¦?lšÚüüÒ©S§ÿýWŸ;{æm„„°"iÙbyjbðäýÇgfgëÍŠ¢[µåå ¸[ ðÂÁüôÞ©N»ã¸î@¹”ÔÍR¾Ø±¬N§5X,jª& r½Q(Þ;Ía\«×³™œ,+·fnZÎô¾é#GŽüÈ#Ng³«ÓíÛ®¡)ûö ¶Zý¾ …¾0·¸¸ƒxhšæÈðp¥²C ‘$asgUÑÒò’¢*“ã“Qèß{ÏÁJs¢$ËžçP7·¶SfJUäb©du­ŽÕM¥S‚À'R©‹WÞ$Œ! !aB(„ìÎÍ "Œ)cr3Ž ‚˜áïƲû8z’BïèÁâÐMvÇÊ1À"1QƒÀït;zcXÈ«ÝéZ‡L3…jwZ~è;ŽËóBÈqí3gÎ"ˆ ˜ã(»#ød”P†0ıè@F ƒˆ1@)À<¸@GGŽí}á»gþï?úãGybôØï¹|éÂ<àüÕËWÞ¾¤ézÖ,(’!Ê¢YH• ízëü›dûö XNÒ€ÇÂõë·²¹¬&kAØ.ë.-n¾oY–¸Ý^_–e×sƒ °çÖì,£T’A ¸|é2/áT*»"(!@úל9îLhÇWVÖ  àÛ‹›˜—JÅ¢nÈFƒ„ÌóAÏ–—V)¥Cƒ†ž([– DCÈF›µ0І88Pl·ÛER®Ý¸U.—®¼}- ƒd"™Ëå\ÏK%SÇ?ü!è°²Îc£ Ê(Xݤ–º2K›¸ç"@Y£y—ŸÄÃC0ù W©³8wç.-#œ¦’°å‰°˜…¾Kj͈D÷Œ$ ÎöÏñêÞ}žçávêºA)ä "½PDÝwü¾áØïQËæc¦,¥„1 Ä"È ¤r»ô§ÐÅ(0ËÄ©´¹¬yòäÑ×^»øöõkG>~ü¨n¨¶h²:.ËF&cš¦i³33õz%MŽD×5es{ýKϬšI=•(¦RZžÏÝwßáB1711ü™Ï|ÁéG€׉êµv¦”öí¨k{õVU7UŽGÃc{‚À"’Ós %IâyžCztÿá}ZF­V»øÖ…Ë—Ïc$• cú`–0äÁr­ÙÜØX}ì‰û‚NßMªk[ñ«ÛõM BAl¨ ñ]¿×ïW4YSu“EÔë¾çgÓY–£( ! I!øñ;ÇØÄ¸('DQ$ âöö6ÄH‘å„‘¨Öf2Ñí¹!%é„FÁ×®v‘§”õz]˲lÛI¥M×qšÍF2i˜ºÉ <…Œ‚’%Áî÷û½/ˆ¢È]{qqAÓ ßs;ÝÞÞ½SW®\ñRi3iv»%R„±xíz±X´¬n§c¼ÿžóo¼™Î¤2©Œm÷m:¾l÷íl6×hÖ»ÝÞC=pöì¹l&§ëZ³Ñ ygu``kšë:'ï¹xdTו oœ{c <òè#O– •F£Ùi·=øD©”­ÕšW.¿937S­ÖÊ¥µ[Û[Û£Ã#”‚¹ø<œT„0p"¼ËÞALßµ30ˆD æ÷NŽÿå׿þÉ_þûå¡'Þ÷èWŸý& Fpis½þÊW¾ü¬®©dޱq|:•1M}umÃêwŒäÀᣇ—–—–ïøŸe)Ṏ"êŒáØ‹B(¨V:ª†T…Ϥ³ýž%‰b³ÙTe%‚( IDÚVÛñ<çt]Ÿœ¢”1Ê"òãvÃ0Š¥‚euC?44ux°ToZ0Žã:V!V­µDIT1_(Ôª• C_\^á¹Ïqª* ó?59š+ e³yUQºý~¸Í› «ÓÈòkkë¶mû¾o& × –——ûvß0L„0‚`}uME۱ͤ 1j[n¿Ûwz `„xU+U™ï{€1BI¬Øî÷zù|0…áêêšç{¶ÝWÙü¥åÅn·Ç!ŒYV·²Si6pB©ë:ÕJÅqzív¯Ûµ|ßßÞZïtêŽíVjBˆã:§Ï¼Îq¸oÛ£## N×"@!G1Þ%f "à;mÞ;4ÌwöMzôž?úÿxᥗý×~EÓµ£G¼ué‡ùr& Ý31Ýîô9º}ÛTµ½ûÆ:ôÝ^ع¼uíÆõ³WÎç¹|®ΦµC‡Ÿ¿uëì™”BYžWz¶½sýmI%QRU¥V¯·Úm©a$ʃæeEˆÂ !"„Þ±Gý8öùÞé饥lÂøÕ­ Ïq#ÃCù|neeàù¾ã¹V×Z[_gŒ ”E~ü‘îØÝ¯?û•µå†UùÆ·¿«+‰Bf "Á] ¢°o;<‡RéÂ>ðx«Õnf22FÄŒQÐnÙ¥Á”, ‚À¹®±¤jº,ÉB«Ów½r©”2SAzž—„0 CØ@~úáÅ199Éó€ŒÈó< ([[ÕÕ• /p%AÎe o(§R©T:•ªÖªÛÛ§?ô‘0 Ç'†®_»–J °o_ºçä{–Ví¾½²¼†ÑôÞ=Ñ‘‘b*•ìX¤\ßé§L#i¤¶w¶m»(“E’ä^¿×·{"ÌqŠ("­®¢$IVUͶûvßn·Q5M€ùžE}V̪$sbÛj“ˆ,¯v #Q CaAMZ>Ë­oºµz³T,¼ÿñBßfAHΜÝAòž}Åvê\P:VÒD C6·!FÄ\fÈ ¡`Fc€Êsx÷*µË¶#‚£8pÅÐ哹zùv¿ßKšæÀ@yïÞñÅÛÛqÆŽÄKßyþë!'4eá`)k÷<©ï{{§'GGʯœzÝíÎ_­Uí^¨&s…ñ©­ÅÛ4IJ0bíFÿ豩f½Y¿V¯”‚"ʑյLÓìõ7|Ï+ Ñ0bÿì‡ÇðȈ(ˆ‚ 8n ò\§Ýìt8A“F²PÈt;ýB±|øÈ½¢((ŠT¯×BË++½ž¥ªF­ZC×ë ž—æoVÖ„fõR±<<4\©nˆ"l¬W]×'”%“ Ìq‚ÀGaÈñI×q»]KÄJu'ŒÂ=“{––V2©4€Œ„Q*Ÿ¯×ëŽ¨Š¶½³Òè$í¾Ëe)%aHÒ)³~s080¸¶¾Š?Pè÷[ÉDBD„£"äzîÏÿü/ŒŒIG)øíßþÔñc÷LL?•J›ÝNoyíO;ë‘Ç~9“IµZ€]|î[_Ÿ[hòyA”,«c& 9n×#ƒ1F€PˆB„ c f£´;û#”rGlÖ,«ë¤’…§žø©ßúÔdÊŒ­Á{§÷,ÜÞ ”& c}sMjйt‘’¢ ]§2>\j[ý¹ù YâOŸ}•Ñ“Íz">—GŽ•ÒfÎT’<üöÖ¼Ûó)¥ÂN'Z_ßnÔ+‚Ày¾»¾¹!"„L–dU‘+Õš"‹…Ba—àN"ð×·ÏßaÍÈòÄäD»ÝéÛ®ªêc£C•J bŽÇ8\N€í–¥ªz80¶ìp¼ª*ßùÎwFÆF #ÍfKSb¡4ä‰=㆑¢”ó=—2V­Uçç–8È™j2××6­nOUµl&“Ïå›­†Õíú¾Ÿ2Ó"Ï#€Y&$t\W8Ï÷\Ïíö{®ëä2y„‘‘™4†ã:/8ŽÍfÂ(è÷ûåb#ÔíZ \n4›<“‰û8Ž~¿×hÔ%Iô=êy^µR ¯Õê8ŽCHX«î6­v»Ea³ÙhwZ!/ðï{ÿ“ls;Š"¤àIÈ8!nˆÆV7â?ȶýF³§I†Àkc£‡ï9qc sh<¼ÀA ‡E,r ¡kš‘¸5·œ3³Ë++ÇíϦS—ú×Lc”ƒü—®íåH¸ÑÚÕ3¿ùoÿ9¥#|íÍÜúÚŽã" 9Æ ëúš®VjÕX]^øŠ¬Š‚¬ºÄ /F„0â` BßÅÎØ35õöÕ·1‡Cë5Çš"NNޝ­¯s^ÚÙÚØXÑu­ÕjUk•z­.KR&e2¼f2Ù¼¢¨$ fjUÏGy9m¦ŒV«Õ¬× #ázþÜíˆa·Ó§”–‹!ÂÙò„47ã¸.Ïñ†žà8^e¼¥ÅE]ÓrÙ €$¨Û[Û°|61ÖUÝ÷½F£šN™…l°Ð¶ûëë«¡R±(`˜0’¢$5šµ´©ärˆ!À!JiDQŸùÒçCˆ‚EQ|óâÙ·®\ 0ÄdIôüàK_ü,â!‰‚ÀÐôt*E ²YžBIAHH#@Àâ0âæ}u§ ~ÿô¡§Ÿ¸O”ÄØ|F AU+õ•õÃG0ÄdY^¼½Êƒˆx¾'Ëx|ôÀòÊj˪ }õëÏ¥R™á‘ã‘¡Ñ#Å\eg»Þ·8Œ>ûG\,•Ï=oYÁðTV°"»Ã ­z·ÑZÁ·¶¶"Ir6›][Y÷„™LvttDQÔv»E¡ï{±ùê]Hc›Ï ¢ >õ\‡çT×u+ÕúÎNAÞ0ô×Ïœ¦¼P,Ëår·kÕkµCGNJ’¼o_jþöj„ªióósccS¶åû~»cU*Õ‘‘ážÕI§õé=C­Ž# #ˆür©l».‰ˆm÷:VGDÝ0IîözQät=‘0”ѾÝëXIVL3%IR·g9n/a¦™J‰0Š\Ç¢®¦é);=¡¥õ@1ÐÌlduA„íÔñ½±ah&¸³—üDB›Õ³© iñA n7ñž&KÀ±)Câ­Ûèø¡r!‹Æ–å7ÒYÀa¶¸Jw§9» ¡žíÝ^YÛ39}ÿ±=ù|av}J°^ib„ }}ssq~½ßïÍ-Ì?õÔû¾ÿ½×¯]›‰QE>™„¶yù­«ss ¢"e̤ž>| •Îï®mlçSÙÙÛ7î=y1ŸZ}îÙÈ\¿¶¾²Ò2r£†9+ CB1‡!¡¸PÚÜZuN¥ Œæ:VçÊÕ«¢$ç²YI”Â0@E$bï²8†‡‡Ó™”m÷¯Ï Ü®T(£[;Û†n —;KWÍ'Ž)Š*I\§ÝN‰­­Ív«6<<ÞluUEêø6‰HµZýËÿÅT2éúAÑb±`Û½¡¡2D°myžç÷ûŽ¢(6Ïiª. üzeÇêZ…b±Ýj1 jõª¬ª"Ï1ûýží8<Ïå ùZµA‘Zµ–Je[(ŠÂn·Ûë÷dIêö‘çû”ÑÙf>ªô’‘‰Ðë,<«iºç{¿úÉÿzbb‚àãû§¿ý©téñ§>ðE=Ïýüç?+ðÖO}üŸ*ªEìÕï¿Øyó¹µõÞʆƋr†µ6›œ  8j( sËõ¡‘‚šßdüïbŠÇ\ü5¤”ºŽ/ɇ¹·.ßh·­„®ÔÕ÷½ÿ}ëëëi%ÁáÌ¿ð•K—n@Èg³ÙáñQßî·vpï J=ÃÔÍ®ëõ½ÐÆ-ï½?QÖl´r™¡?ÿÒŸ‰d2_ΦÝëï™xÿS3 Mýßþ—Ï`¢„F ¦«²*#žÛÞÜÚàP>ŸOG ^@̧Œ¹®‹‚ïò̯}û÷ïloCMØ-4;6‰(Ïó®g‹ñx*•©Õš§Ï]xöëÏG4D Eaô‰_þGºÈ.¼þJ½Ö¼~í\½º´S©ºnêf«Ñ¼93ç‡Ä²í„ž˜;,Æè”Ôìw=Ƕû} ÂûN,X]­Ù6ûÍßú¬”Ê%Žç¢ÆãGBaà¸Wߺ„1Êer³76Æ'&ãӲ繊¬>ñ÷Õ«Í] Ï»ß9ÆÆÆeY9ìúží<‡À[[µÐÝ~ÒH¼üâwyQf ¼81:†¨5*CÃS{öb }ϱ:ÓHß^ZˆÀ{) ~@;V-›Ioml®¬8ƒÅB!ƒ0óÃÈÐÅbÑqܸë…‹ñÀcŒL&Í8<6ΞA J³®Ñ†<ÏÝstðøÁño½îFã“ÜÖ¶µ¾™I¨ˆIâå ¬2€Ęïu-»Û.äðö“D‰RÚn7GJüÊf(Ç <ß=¸—ƒ¿zÎ×õúx*Ujá­‚ PÆ(ë[„Ð\>Ó·½¾û=àŸ}á™÷½ÿ±C‡öçóùë×ožzýâŸá/±ÈGatèȱÇß÷@mcvu½2??ÿÍgÿ¬ßënmo”òåéÉéÐöïu=‚ 848¾¶UKdrïwš®(êÊôȱ‘ÂËß;“Ðׯßà07¿p›çƒ…\ ™ eOìÛóÜ·^\˜[¡’U­Õnõ{ý|>§iº„!£c“˜W5(åSœˆ¢0ˆÃ~¼ÛâP5u`h°Ùl¹^@k[­ï¿v ¦HÒÐà¥,—Ñt6›Wu‘€DÑve; "ÌKðÞÖÆfEŒ‘#ûG'ÆÊõzõä}GnÏ.aö{mÀ/ }Ç[ßܘ˜œÈçòï§dÅLf „ŽåÙ¶‹­îÂÁ|q¦§§oݼKhúÔä`D–åÈA#;ÕÎý>NÉf“ëëëÃHÌÍÝ@XV{gs›˦tMÊ Û†CƒÃ²$t,kk{³'M M¨‘Dc°ÜkèB˜2Ó-Åxü("Œ1P<‡ìrÖ<è÷{"/`Œ>Ìóüé3¯— %B"ESzô«ÏþåêÊæÒJØÄX 2¸FÃßw¼µus»¶…9Üîv¿ñõgR†^Ìæ'O'øõ¥%Ç®Ì\{³\(//ÞX]YÒ5!IwÃ]\©?:XȦ̭Z©8põÆ¢,mO섊"×h5ʦ‘•Gç—ˆÏ?óÅ/ýÁüÓ4¿ó—âž_³e©*¸ÿþG-ÕëT"ßu»V>—“dycs#—/…a°‹&÷gŽ;ZžÃ%°Û±|© =—+¦RÉz­Q©V*•l6[©Ô)¡õZ½ÛëÉ¢têÕo:n(KZ9_X^Y²zÁ}ÆA“«k«~gûÄ“÷mì4znØì¹+÷“‰D…€Ýá4C#˜cMOD„P £0›Îr<{íôk!„,)½~occ}mm s8—Í ‚dµæ c2žbßo¯®-ïÒø(ÛÜX?{æTœòQ¯×Ç>wîu(` Ùl2ÛmË‚˜ç±íºÝ¥¼JxÌmmÕÞº:#«B|m»W­mü~%-’‹o^„Œ¹¾ý‡ÿîŸEiš”+ –Ç&ƒævòV––Ž?ô¸(áJ£êøž*k/¿ð­„¦OMO¼ÿÉ÷ å3¹õ/?sñÒ…ï¼ð=^RÓFAS¤ÉQ]’‘ âåªiÝ~¯ÞhšºÔ¨×eA ¢àW~íÓú¡ï…^E'ž_˜ÝÚ¸J)Z_]uy}gaiµX2UU¶m‡Å’~‚âh#—ûîIDATI¥RÝ^ßv¼Z3“Ϧ²F('òÀ[C< "„ âÏÍÏÏa„b¹9Çñív«ÕjB€‚ÇQFoܸ r'ÂöÜ©0¢‘GC2"ÒÝž¿p%S* ýFµß #/}÷k²V­!«ryt }Áj»64<1>:æ|íâ]U¾ò矈ꢖ*åJcˆ¸~Èv¶w|àÁ¤©w»ÝÇX;Šˆ™ÒkõFÛò%A®·jO¿ÿ± dë•B¦üòK/*ª¢© -¥ú>×è4Ö6 4¡¥÷ŽM]ºržã…¾ë*’*ðrèû”±RiP× D"ˆ` Ûµ"BcøÅOP㩽{7·¶¡QÍÎÎAàú!cÀе”i” 9‰cŠ–Ò40Ðé¶]Ÿd²ù D‰õ{‘ª*£óçÏì›ÞçûÁÎÎNµR%¬ ÁåS_“1Ô¬ªæ8ŽËÙ¶½³B€˜Å~J¹ÝàŽºÆÞ;ñ;wQ¢(BÅBÃ]Èü2ºð~7„—îvƈCú`p3¸XšÊóüî0~×6ç0 Ï÷¥R apëÆ[ºuãJ«ÝK›ÉÈõTYOåRÙ|ù±ÇžD‘5ss®Þª¿úÒs×®äk•M#•Îf²‰d†ã°Ý³÷¸÷ø±{ª+o_¼ô ð¹ç¾uèÐ^‰—ò=§N]\\™ûÄÑ8~ô+_ýÆÂöÎö_~ã¹¾ëgÓeIí;Á ß²Úׯ¾£‰jBLc„ C­56«ÕÊØø$‚€²pum©88˜I¥xÈNOq<¿¸p;‚^¯G¡„H²ô`jïÔk§^CFÂ÷Ú…‚Û¥$C× î½÷aYQ²™d­VëYdÒ\XXŠBƒÀuÜÛó ét²RÙÚÜ\I×Y(‰R)#ïzÛ ")ŽÅ £0޼s³¢ 0@Aœ;÷"ï>ø˜§óÎí0ˆ%”…ôŽ„"öYBF 0>àÒXLwÓ¡îÒ)â¿`”x$ Œ! ±àã0†ˆÃ0 ü„®)‰Ìúv•ç襋g%A+är÷¿7WÈÜž[ßÙY˜¹^Ènݼ¼ÓhåÌd¾” jFòƒþ„©D¯½~aææÛßþÆ×¯]¾Ø¬ofršªdŸ{îÛ?÷3“uøØc,¯-»ø&c°ÙªFrÿô F  @h£ÕØnïôœ®Ìñš kJ’!"‘Ô åTϲ>þñŸ]\^9ùðc†žÚÜXybT©T®_¿!ÄX¬‘wbçÞuqLí‘e‘9ß÷†‡J$òÛ“dI7tá­m˲4M÷üˆA`Áuá³ÏþE"™ˆÂ’HÂTÊÜ Ü7 ]Ò+„BŒ0 lnn~`  J"¥ŒQBîFz19D=,”í &(eBŠŒmÎŒ0¡wzô—ôkˆ‚cH(‰Gù’,!„ƒÀ÷ü@QeÏñ á$E6²*H~Hû¶FÎñDZ¨ZíæÊúVÇj»>sûa¥á”ŠÅ‘‰±^»Ûl·ÖW—E=áöÛk+Ýž§›æés¯¢Z0³ûŽË%$×v®ÏÞº5ssÏž«+3 ‹K ÃÊgÒ…|±\6’È鸭vãÜç}ô‘Zµ633WÌ•;Ý&/H“SÒ(%=§Õ¨Vl§K”1N"Å0 ]“%ä8£î›çÏ0fo^- ßžŸã0Çad;ÎÀð0¸¥åEÑÑ#‡7·¶<ߣ„DQX*²âÐ chxزz­o6!€ûöOOOO5šÍÍ QÞ¼|ñ>`F}g§!Èd’Œ2¡$É»˜máZ¸R¶Ë†ˆ1ÐétºVohhèwþûßÖ4•ÆΔ„aHIÜM`±ò*VîPo 2€Ü•N ÄaŒ!ó<Ïó|œšÛ „<ÏÇ­‘¥¥•ü©æaDêyi¤4»=Ç 2}°œ-Îî4+ݽ“{GÆÆÖÖ¶ì•õ…•Åžã÷m¯ßó5Å, çE70u¶S­í+ægûÀµ%Q}ö+’E¥PÌÊy@h¯ëÌݾm&Sš&,-¯øŽŸO¥_xñ’¢”‹yCÕ;–ã¹ÞG?ñKõ­ù™›7DAúÌÿõ§ö¹¯ø!‘ÅÏKi³LhdÛÝÍþF϶ Ï¢JH˜LèÉD¢Q«dRªÛwºÝV§#/Ì •ê–c÷{Ýî@q€x«Ý‰"20TмÈØÜÚtm@è{þèØØOV€É=“³3sR'ðÄ•Jc}}»Õic ³éuݳgOˆEá9BE$–ðÓˆn÷ö›¡ÀȽ‹"ïuû]Ë ”KýØOŠð7¿Jåbà;ñˆJQ ‹Gª&ˆÅÜ`BM³ÊBsæÒÂÚÊíÕ•J¥êØ4¡&<(bJ€Îàèàý'Gܸ~£V¯¾têõ¤‘¬ÕkšžÒte45,pb­ÝßsàÀþ©Nmã›×šôìW¾M$µŒiʼÌÉâÓú„™ço\pœ­åù[ß~îkÕÊF£Q-f †˜K<"¯çx]DzìLåeC€ŒFeY-ä²#I’\»w{aÙ÷ܤizAà‘`ckA Š"C¨Þjð<_,²YFÆXVäÙ™ÛãúžÓx''÷üÄűÿÀŸ‘ãx]ã¶w*;µ£@–dUQH‚H’(ŠÛMý‰ç“»Ž‘wÂ>w ïï@ËIDû¶m÷mÀ€nè¥ò{yè=ï}ø[YÉdRÕË¢”!ɘãiý ÁñÃIMßÚ®ll-+¢9¿¸!ó˜çp!—˜Mg³•jmfnööÂ-]† +kµº•PuMÊ`È—òÅ|¹|ï½÷EnçöüjµÖ8{úÔâüÍåµeITtSÔ4-4Ì„¾Sm¯Ýº¾²¶¸Ã¡+Wn„”óùæÎš„¸\ B.}'p:ÝŽØ2•¢ÌdŒBÄ MΤRvÛêYNBÓÅó½b±TŒ©´Á(Šâo"ÇqC€;© »Œšj­Úl4£(Š{ÇŸPù'.Ž‘‘Y–D[èöDÂL&˜¢h²$ñhWÏÎ(»ß2æÐ]Y~¬ÌgŒF!ñ<ßvÜ !b ]Ϥ³£##O}ð©É=àokñ—{ï£ï½÷ä½?*æon?zèÚÛ‹Š€1FD P1­cc6C޽ǧóùÒ­[³ƒŽÿ­o‡RªHšªêÙl’çäz£Úî6‡â©V+ŽoB_|ñeY”3©R6›0UU7ô*Äïû¶_]»¹]mPHºœI¤é4P˜@)ìö;]·çø„PÄœ$È€AP…ÇýØÇ>üЃ¦Ó©(Š^xþ»½ž-ð<£”BÊC®Ój×jÕø+ŸÓãSÚ®Äk7ÏaW&ÉŠ,I4Šîì茚N›O}àÿaJ{a€Õ••ñ¿þ‹F§Óm»ÂdRçy.Þ#@4Î@»‚ ‹ ‚€QÊ(Š/)²a躮ŒŒÞ{ß=GýQéCÓë7.~úÓ¿G©z—vt70#Òu+élÑ·í¾ÝÏæJ©l!p»Ûë;Ö“ï½?W(ݺµ¸¸¶Ôj4‚š%‰QA$JÊàÀpR`®íµÚZ³åخ绊,ª²‚Ž£\H£( ;^ÏóÝ(p£<Âñ»Xäʨ"ËÇ}ðyä=åL[>uêÔ§?ýßeÓÂX…ñu@æù~ßî÷û}Ï÷"BîÔÃîa]‘MÓÌTJD<Š]PDÝ®õ¯þõ¿üÀÓOÿ ~z·ÅÁûÓ?þ“sçÎÕ›ÍNÛc”A´[ÆDKõAŒ.D!"ˆœ(ò‚Èiª*Ër&“>~âÄÞééá‘á•'ú·³ÆG?ú‹ŽC!”b†„ @F)F@ 0F”‚ýûG††;ÍÆÚNuaáV>S@ÔZu*’¨ò2šÞwH€¦ÈW¯ÏíT6‡†JVÏul?ˆŽ˜e=ÛþÄ'~îw÷wÿãÇñn7sá/üÒ/6ux{AQœ~ß!„Q ¥Qˆv˜⣠ÁíJÕ œñôð#ï}äè±c{¦öü§­‰wÒ¿3™½São¾u•FB ! "Hrùäý“Šˆ"ÉÛՆȋ²È)™"@J‚Èî»}ߦ$¢Qˆ1) ÃÀ#˜/d;þ¡>ýø£þ•páó·~KÅÏþÉŸJ’¤* F˜Ä<FÆœ"ÜñußÝ!ÛMáqäªï^àÿÚ'?ùŸúúPÞíÎq7Äõûß{åµS¯5»áIwî'»!ìÇA9Ž1‘HLîÙ366:26’J§Àß±õÌ3_ý?ÿÝ2*C(`ÅMv?tŸ~ú‘ôu~añÙ¯}ç¹ó]/PdUä#Çwÿù_gFš€hãÂ+so]D( …IBÄiyȂЋœÀ¶C7bLD@B0ø¡‚<Ç—Ë¥Ç{ô#ýðÞ©©Úý׬™™[ŸûÜç_?}ÚuœÝd°xӆ臟þ£ŒQJ¡ PƘ™4Ÿxßû~ægvß¾}?² ¢â¸›¼º¹±Ùh4úý>` ×ë#Ah·ÚI3é{~.Ÿ“$yhx0‘L€¿Ã«ÕjÿÌOÿR«Û¹Dìee 1ØAÃ43ã O E ²#dž‡&3¥RòÊ…Õs¯_“2#Z"YݸCWÖtÆ(Ä! hß÷‚ |’`7ÔaGþ¸cLS•G}ïÃÙ;wäxNŒÆ\"™Èd2?ö¿þSÿZÿäŸüι7®0"ÆcÊ€G×õááQÅP‚ ¼zùüÁãc‡í™_Üš»µÕ«AØãyŽçe "„‰ïžë“È i¿[Å9ó;•DqßÞ½Ç;vüè±£GÿšHÔ¿S‹ÿe¯~ð©·®ÜìöÊÂØD—Né™\&© ;bŒãÜìù ó2ML ÄñX£Àéº6é:€ù @y‘@ƹcltläÐÁ‡:yò¾¼qüç²þKß9cÿð¿ùô[Woø¡#pé]ŠBÖ×$m«Qè,!Èq\BƒÐf4`@Ì "„Ž(dŒ0Š¥â}ûN?þä“Od2éÿì â×ÿÁ}M,µê[IEND®B`‚tiemu-3.03-nogdb+dfsg/help/no_skin.png000066400000000000000000000215571220314353500176760ustar00rootroot00000000000000‰PNG  IHDRø¢㦗ÍsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<"íIDATx^í pTE¶€oÄÂU£ýõés{î i|ðýoúôéè¹§¥eÀÿÛ¾é‰^f¤áw½ÐqÏ ã’ ãüø›–‘Ñv¡Í8ÿ­‘žn¤Æ·1Eã<¼HÞÿPߓ￴sÉç3ö¸8_¸¨#gñ+è]ãÜy£G²séFKÐ9ã<’o¢ˆ^Úf—D•/1¾i3ÎÇ b¸§-:Òc]¨çÖ ™»Ú¾û’¡·x¦-ûé¶ìŸ´MzIÎO‘L{ÞR°B’ŠM¿ºò[Im!KpcFþbðxAX^,€+ÐÛcãycÚa#ûYÖñôÕ@yúÆæžÛ¿UÂú'Û@÷›žíà }Rë8p…_ˆ1¯8ÉbüˆÀIú%NÇD0· =7_1Vœ1&¦XŸñW£ ÆXòEZù cÝWXúŒªpÆæs€¾±íBÆÖ6| ÉI|€OöØò-,XSKÂ"¶ñÛ$xŽéÂaI«<—^~6£"”QÞœV6Ö´wEÿ®l—±3¥§ ,«N¢¿ðnQ“±â8²´Ö˜õ‰‘s´u=÷cã®cRÒ`”5bèw,z Aï‚ODÊ›Á?-:n"p÷É µ'ÒÖ6A•bÜÕ`¬¨GRˆ ŒeÉq$Õ iyG… GŒyŸ# |âÿý~}ü‡èm}É1ÁÄGY'¸ÇÒüúƒH{⇷Д §žOI)Æ*-‰pÌfšã¸åv e,˜lÀJóœb”Þ ×¾dÆ_¡L·—4tUƒáFg ñ¯m2J‘"Øc<ÿ´$[z¯ ìë«3æ…6‡ÿÁUp-q÷FÞüª÷Šhž.¨é½´zÿ'ÜxòJ°÷´Q"‡;Q{Ôoá¯FAö èutF' ¸)¾&™‘ÌCÖšd9 kbràܳìóäÑÀ…m/´–>)úž™·Çœ¿+<óðìÃS·!™¼É-C ã*C#ï ^ýõ„uÕ‡ÿÙ×b¼ÛÅDù¹ãGO<µ­ñ¡Ò†-Eõ•y{ç×­Yw÷ìº5SAjWM©Yv ’%ãªóF3øÐ’ _9¼ÿ• ¢ƒ~ûˆð+6P¯s>JŸËèŽ&3*~˜,ž\ˆ¤†·žÇŒÂÐ?ðóÖgß8û“·Ï>þß­÷ÿ¼µêùÖŠGî}6RöÃÈš§#%OEŠÿÝ\ö¸Yð˜¹`wxÚýáñZ†®ª·ê ûúc$Zpƒ''Ÿyàë—ž=ý‹ŸœzáñÏÜßôDUÓ£{ïmÜ]ܹ&¸³$xqÃÖeõUŠu¥Óª‹Æš;ô7¹ã'8£þ‹tTå@™~×1 :³IèG{üÌ» èÉ’¼…~&)÷þ^þläùwξðÛsO¾rv׋­[_hÝôS`½µüGˆõµÏDVÿ Rü„¹xŸ¹h9kGxbUËÈ5µ×Î}QÑ>[<Ðsè{ËO¿ü|ó«/œúÏ'O>·ëÄS[›ßÔøhEpO9°ÞøÐÚàŽÕÁíÅõ›*ÕÝ=ëxñÄà G¾r˵È@¿þ/TFö¡„‡¢ÚXZë ô¤¦¼Û;C¿âû& þÌkg÷¾Ôºåg­•û[ïùa¤àþ~décfá#fîîðÂݨ˜t>ikhÂÆ–QkkûÍÿ=Â+@¯Fòj1èÁí+ñ¯<óÕO÷žøÁ–¦}•ß|°¤a[qÃæ¥õ› ¹Š…¨˜)V»jRõ² ‡zõ¶~È“Û#Á C+]4èÝqÂèâÇÌÿÕºû¢|Ýs­¥P«<Yò¨™÷9wGxƶð¤Í¡Û«€ïÐø¡ì ¡që›G—Õ]·è=tÚˆ´f´ƒÞ°yñÉçvžÜ¿(|ô'°Ó°µ¸aÓ’@E^Ý=sëǪ̈]9©¶øv8æ÷¯Õe[2î“üѯMºÎôヌ’<|€›Œ°ôDg¤ëÒŪWfÛ'=­Ù±?긘óT+>ﺦ †уP¨Ëï‹æò²§[WB"$”ÏÛaNß ”‡'l Û³>4z}xÌúðØõ-£ïÄ@úÀ‘‚Îin@O¦…n—ñWÖgøèMÙ‚MØZYý$º…ê<9oWxƃáIÛö†GoØZi^¿Þ¼¡"œµ¾%«¬¾îûxñ0ÑFà¥x—5=íˆÔ®ž›*hkåÕP×o^ØÏ¬u…#êîZ»èúÚ¼Žß™õé¬7&öï'uøÌÝŒÂm)äù¹u¨È‹>ãôÖñ#5íFPþ¡Ý¥õᘔ=Ì1c³âvû|»V:Ä%Á7sºÕd€ˆM¬ >j.QÃm(€þ9c§9yGxÂöðè­æðÍæ ›ÌAÌÁ•æÊ3CÊêû.¸tÚØ´1ï²F OàB¿¶xbæÂàÖåAØfÙ²¼¾j1úØhÝ<O`ùèÀ’á‚yƒyƒkò‡|¶`È·öE Ãƒ\“þaऻ.™O] zô±/Ç —6Ã3eHVœ"BA;IŸ!DZbfÅ)á»`Må¼U»¼´¦>æ#¿!”ûpxé>sÙ÷"Eû"°’÷ˆ9ÿasænsÊ.sƒæ˜ÌáÛ"C¶Dn6n2V†®­¿zþ^Q#tk#ð.k޲mÍÒñõ¹ ÷-mز,x_lÂÔoÌc2zCÑð†ÅCêóÖç ¬]4ð³¹ß¼åjäÉäcr5}èg(£#ÐÃC0GQF‡ w ¯5Ñc“ð%&~eKd¢3êïÒšVǤQ¦]¾Z3¥ŽáÁk?"vÓ½!Ø#ÏßkKö™…À裑ù{ÍY{Íœ=æ­»Í1»"ÃwD†l ØéWéW껦á;ó>ˆ‚ŽÜ`ŒÀK#ð.k¤¨Ù(< çßyì‘×oÈÄ6/©¯*$”7”çàãoÃÍÁ¥C‚òúÕ-ì÷ù̾ogy2#hL?ŽX{~í£ Ãkz*µ×ÄUÿd4c­‰?(Œ…@&<£þ.­iulÕ.ß ­)<ŽMWtåê`ïÙDxE#ÆÉÔÌ}Äœ·×œ¹×œ²×¼mo„eÖ€^Ô ç«s³jKrëæ×o̯ßTÐAyÅ̆ò)Á²Ž]—Æ‚þÁE}ëæe™vå[czÇ@Ö!¯w€¹Þëzt= º£/ Âò i÷ 1JcB žQ—Ö´:&MÀŠ­¯™è Z}öáA®Ųƒû˜‡#Y»Zíhý·m­WmŠô¹7tyqCÑŒ}8`Œ,Ü™¿Çœ³×œñˆ9y¯y+€Þn”Y#°,…àü±9ƒjVÜVW63°nñ¡¾bNú ÷L–ÝÚT2†œo\xUýì>ŸO¾ü­›z Oæ}Ƭ£Çt!£cÐsáÙZ:IÆ„uÌ=¶HŸ$/Ó+¿…å@0ñ8ü’9ÃÄNø.”ï¼æB¬C Ý.2/Òó¾D¬_ñ™±¡I[B3wˆAµ»uØ®Öëv´^»­õŠ­—ݺtYCú´?FAGn¨¡Ç‘5²ê¬QÜ ÿšÞïxáXØIÖÃþÎԗϪ/ŸQONCÙíÁÒñ«F5ƒó‘ßhœE`úeŸßvé›#Òc ëúíMèA€öÒ¥ÆÈ…­ôe$:qEšÝ3ªÐ·¡@€xZð¦ÕúÓ"¬Fë[5r9Ó¨^3eÎàã]`ЯYv&« }¶Ç–PÎöpÎvsòýá;OÜÿ 9úÁHÖŽÈà"ý·F®ªj½¼"rii(}I}ZNt×%êƒW#0[V¡Dùå”k z9¾4»våu%9ukrêJ&Jî”L¬_=¾aåèàò¬Æ¥ƒ¡ntœ}y]Î¥ŸÝ’þÆð4äÉ¢3±¤ Ã.ôïDé= :P¥6ÉßV)œNð ûfdU%eênѼ¢à«+¿y÷é›+Nß²¡yÂÆæì-Ù›ZÆnnu_KÖ}go>ÓS(³2EKÏÒ3éw6òjŒIèéE.FȲpdâÿœ5ðËE#ÿµøæcE·T/ŸP]”]½,ûø²±5E£ê–dÕ ,ꘟ˜Õ§njÏêÛÓÿv³ñÊÐèÓµ:f@•.ƒŽYϨ8¿€¿M ßwFýB4-ðUhޝS¬è“ë »‘ÍôžäYr,óÎcŠŽ ¹«&kÕñá««‡­:>´¤fHIÍ ’šk}K™«ë¯X¸lEý%KëÓòkŒ9Ÿ ÎÿÝ£´,”ž#/ùÑí™Mppöƒó²Î~pî°Có†þmîÃs}:gÀ§3û~6=óÓœ+>»ã²Oo½äoãÒþ4Êøå”ÁôÂÐE £íE tükß_"Ö+ϲ¸o½€ù¶¢¼›³’ÔÝßÿNË¡/šG.ûsŸi¿¹jö®žóûkæ¼{õìw3ç¼—9÷WÎy¿ÏœzÏù°×ì?ÃÝgÆ´Ò¦ýÙ˜üþàüwù ®Å}÷däW-ôýo·œúìЯgüÅM}^wÕ/³¯~yü5/»úÕñ™¯Ï|=ûÊ·Æõy{lïwÆôzkT·Ff¼3"íõaÆ«S7ýýàþ7O[7£Ñè³²%£´ JíðÝþ(îX6žÇ’±á^p?ñj¤â½ÌMj ½×Ýÿ«Øþ2sßoó²/\×â¾»7òvsï²0ÚºYu¶÷šðþ·Ð&££ÿ'ožî]Ø|Q¥K{F‚ÏÀÓ‹±ïóF#ú[¿X@ÿ EÚfa„l¹$óž?Û¾ì81Ò±±›dÁ‡=–èÝ'ì´ mxØ[\n+"Hà („r3þ‹ˆž6} -ÅÞ%E9Ôå´à½t´ÃX~$`ÖÁ´Ù‡àû£è+¤í?'?3€} æúújTÐOj´ãƒè9Z¹ðIHr P+ Ÿu==ŸÜc™úEì%>‚ÏÀ_x²žÚ¸ÀüªÅ Ï:ˆ@²NpÇÐ3‚}êÂŽw‰Z’@÷“Qb£€‡ Ù$ŽÇÄv]úì9ዾ•§z}y°ú£ÄHÞ]ËAÓ–n¥KE ‘CoÌo6&a yÙÈ|Ú0Ü‚Ž=&¼:7~½Ån8r¦KqòÎÄoèùÐù:1íÔ{§úêÃÏ€NÏC~èù X¿4ã7ôqÅ4ñë-½ÎÐdÛû5ŠÚŽ4ñz9è—¹ªÑ²»è¤t‘‚îÈgéj•$tØ«¹îÅXît¦^—v8~½µ)]èB ÇÏ iº­B"cŽjtï {ªDöÖ‹ŸúZß#ȡנ'hÕwJRÀ`g‚Þ+ûô>ºë[LõaHdoÕ½Òš ˆ@"‡žÍè<è¤Ò¥·çøº–ß°SŒT"{«è’VKL9ôrÐÕ7.ˆ¦£0%²·ŽÓÊñŽ@"‡^ t’¿™Ý «=;GJdo9¦•ãD= zÏì#ÒøÇ€îÎowWÅ{ ´ýD ‘C}Pû>:zŠõ6ÝÑM¨G K€N>÷Ñ:)ËŒž}Ó]РХ‹þÀ¨[D@ƒÞ-†Y½nNUÍN.]˜ýÊTrªö«ë”FÒû:i†þôT% ^@§íÓ0-5i,Ü)¨tÓ^Ç]»î®¢ƒãÎ}•zßݵå£}ß@g|"KÇØÝ3`V­0£â.ÜöWÑsÛJÓ/É“vÐßæ¨®LP¿DÚqô^í©·ÁgqEÊñ….@·¢\˜lâͺ]<ÐR™Ò@Ų"?ô©ðÅ‹±/^¸®ù§è¨ýŠi“Jù¥F=Ü*š<ètÈdƦ˜\åtøUüQ\¼›ROgtTØ aQQVä'. Óƒjï«»ŒÎ@cÕ¥G0 Ó ÑXóL3sÀQ£î”édäÎs•#é\… §ɾGþ€®Þa>¿*ÎH¾4a¼fP;t:31 óë€/äÙaÒª/Í©»£$íHY‘tò¬ ¿;šm6ápÑùÀ&Í»nE…Y>\Ìœ¤ý‰ß ä³/3ñTzg¯“d ç|i j¯ÑЙ¹ÅŒz?­4]#h•…©ÌïCk¿°XÙ·¡¹»®8êuŽƒŒn:“)™Tê‘uw [¥s¡5eÅ K³št"u:èÂeÇ{÷ÕGßE àèi_¢Û‹É–Ñm \áüŽkA¬>Ø6Ëštœ<*tЙŒ`ãUÜ3:³½Ø5K)è4R¤ ôGnèËUfQçftºu«cwQŸäÂQH8èÔ¹ÛGWï0£éºt±ªxO4è]tGœÄ¡tînŠ»¸JñfÂiõ¢ï¨ŽO¨ì¨9©r"ýQo«ëfti@ýRðºMU@²>]ðùå6±ÓÕJ& ^^Jc•Ô _ôFÒ®zWpº ^V·>Þ}vº\$²F÷B¶4k0¡s ºº>›T®’Ž)ÿP—Љ+.jn Ó­Ø_NÞu׊4|ŽêH«SiE]§+ƒn•zø´ÕuAççºâظFŽo„ž{t¨è•ºšÊÚ’ÈŒ.¬†ùBËQée •\KçšTKG+ ЙF™¸ÓcéÈ%uÊí©²ÁKå-Gn(VS|T&ª_ «OŒ¸gôžã]–.‰ÏètÙ  ×ÐH/t4xBei.¬Ò‡pÂ{Ì5*f«Š…(«XVt¾ý“QòFžAWlØ—tk•ÂùÒÙ+Š—¨dÄ—.6žû»²9QŠ5?Ù·/@WdB¨ætb03„Ÿ{rÒ‹“*踣Ù_ò¤}ô·9G ª+$Ô/‘v\º %Œ7ôtÄ­*ÆÔ#èÒ’쮢éBG}0¬4]4êúÅAQ´¯ÞwEƒŒšöYÐÉ#<¬4‘8^ÂU›Ÿöt º»Øé«|Œ€:ˆñÖ”vÊòËÑt†f¦T çƒ~i Ñ K©Ë*Ä_uûÒÉA§kb¦ ±™D3~ «/RÜ­96f™9/,ä„—{t•,GÄ]»ê Òqt•¢² Ó<ÑøÒ¡á»oЙ‘QÒ@Ø(ð+9#\ßø(ÑÌñó“Ÿ^¼å'• ÿP¤GH@ì9Å&¤s?`äj{QÚŒ=F.Ò‰tf¾Ù¬EŽæÍòèïXì/N¡àûÂ`ÄL3&YM%DŠÒH[瓦J+Ro» è^r:Ý,¤ÊêéàY)ÐSHXmÚ$TGª È$iEÐéì®ÒŠÔíd÷ZrÒKº¢†E¾9zÁeVÞCuù:D:¢tß™•GÚ=§é@A!èÂ5G8ý›†%‰A—öM+Ä;Š&@MÚS@çg­´a«|©~¡ÖÔP€d{QÑU1ªr9s§¢r‰ÖÑpØ/u‘0b>U4GÃJgw•Ë5è*QÒ:#àèŒê·5tC¨/W‰€]ÿFÝ"<èn¾x¡2¥¬ttF÷=þZï[þúãÅšlÈA—6ÆW)|ɽµ*f¤ö½Dª^k_4J£­^sÆ;¶RW9 é6³»Â¿KÎÍé6¢¿ýqÔù”Tf†÷‘>)Uè añ ¥ŒNKH0 %DaXéPúÞ¥®0N蓌˜µ”‰¶Õhv¢ÿØaß9è ÄNAçç¿?ã{¯:qœ˜9ñžØ,ÂB†ìõ;Å~®zwC^ºXµJ¦Í²(Ì):]­y!§etþÞ©s“Ž 0N‚õ•2º;ÓŠWÅcRlÚ5:…óu‚/M82"-Á¥)ßQs>*Çr º[È]t!‚Ò´ŒNB„]b"FŸŒßb˜”-~`â1T6y‹]8>f>{SöÝO<èÂRJˆ¾r¿F3YA'iÀ*oñç¥cìŽE›ŒîΠǫhÜ{t€¹\˜‰hг$úºÐoÅx¹à)C…9Ã*Ü~e«ÞѾ‘®ñ Œ©æc¥¢Ö•3º°ta"§êÅ7Ð]ûçtfRÑ©Ÿ4jö‹€ C*:Œ¼{Xþ«bV]§ëƒn“òùñR︽¦o [ÍK©£NA§s!ŸË­hò'õMEÁjåµZgº»Š…YvTú®¢#]B†éå*>€Žo K+3›µÞigxj™I^& £+‚ÎxÒ3ºUÄ袀AE””Ñy/ýóžÑ­r'í@çfta}E/MбRQëú¥ :ï³ïË‹?]eâšÑUÖ3J¥_î2ºU‰¥Ò¢½ŽÇºÅéê*uX˜†hŽ…Lû>XòGèTmÅ“—èxì’0H£ŸÂ ]-£ã…‹eaFgæ§ï$¯–èrÓ{-åtß#’ì» è]!¤rÐI)Iß?1÷RÌKGÓ ; —T¹«•.R‡£ :/¥AOÌð¸hEgtaЃNJ.+úŽÎèN#&½µQFÛËí–¿ñ×Zô/ë™OFÿƒ½²õ—£}x¤ÑßArdM—.Ö]ƒ}|TK G@gtÍw·ˆ@—Ôˆ^ŠE›k¥E*ÿYŠ'NÍ’VøKTš“¦^Þ,}OEŽ}i˦/¼ŸL‹VÝ÷²gYºä5¨ß^tS£3î:uF™Þ¤çw6ùþ3CGz$è(¨ ³tS•w’œ¡oÜ™~Ù¸¤â•tÚ¡ ÷qjT¸cA·%/>ñ¹›í¿¦ëífÔÆuéA·ÇÝŠ-{è…C+`Ú=æØh› À„KÅmimr§t®ºCGè’U_x^ùUEÝOé¨ñ¾ù:ÝÉ@öÄ#h?r|@m0²šÃ|ög¬åí»Euæ'ÉËx4* ÓU÷­üdV*õùïèÌZ¬8fVð)(XΊ0zÂðùƒÉÇÌt–VƒDw×±qxȤ áÜVTfíR,]Ô‡L=/§73ŽLô„ˆóƒå4,è=]í£Û¸.uˆ]ª¯t\DÀÐ]4L§L_r‰ôµ)9è8㪳(,0è8òµŠºñ”ÝÁ8E@º°*”üIaάô8®6K" :};Èß, ïœø»«™àh¹Ð#§#à.QÐáY—cu17£B¬é›z´â°Ùp×}•Ž€J$ “)¾ä oÑ[?*ÙÝjNÅ]ºÑ8é+šÕjÉ9èñîÓÒ…Ü;:ˆ_/7¬RT‹ŸŸÝÜròÎ, ÒñKÀ®b©‚´ZÁcb ²¨Ñ=ZW¹ÜiFï‚ Óžp^Ñ «ÄDëø º?OcÛälÎ}§Ö…A@'cÉܼª8”Ý&©ët®‚A¼u|qT½2NIЙ èDïÕö…hÿo5:«:å$:§ö÷¢Ì'oνÄÓÇk}øäˆÂþ(ÍiL|`m G@ƒîÏÍ(=Ï…ü¸Î€? {éCÊÔè6¬ã·¬>áò=}­bb¿@¾ÍñB¢k±]q¨´š—H@g€æ¡d¶˜¬F2™‹©:“¼½ ¾Ö¯(etžWr§…Uø—¾ÊfРû5–ÚŽMXÐ…¿½H£ÌàKgtwº0Õ]×è;Û©«}ß g ' VçÉ[õ³ûdt}3Ú‰¬K@O€gNA·ÂÅþ|:B7¡?'JpÀ¥Í%+èÒŽ1·Å„<õ ½hjнD/ײ ÷Ì>Ò·òT¯¢/ãјЦӌî±4Áx¥Aw1Lq½„ÿrtj‚Nn”ãMá2’˜u+öðtº0pZ$$ Ý2[C `BgôÙQ¾N'3Gé3 3·‰Ž¤•S#¾ýÈ(ó©Í'DÂr65¢©{Ñe#кÅ>º¢ß4Öü§KöFœÑ{¤ÕR,qÝ»¼²ú´qºn¨[–NN›òŒ¿K¡'¿ºÏ)†ZçvÇнôAtlŸÑ¤_ o7y¬™]×n3àòŽ1wŒ'¼·N—AמwÛ % Ûl¡HÓ¶bê²Ï‚îÎð“Ä—üjÓ;~ [ägK·¥0gAï9þ¢¬K…-:× ©¥g Ÿº¬.aÌ’RAÅ%a+t:g¬¹4•m2º•·Âî¸pC_¢Ø7ŒÈ¿mºp ¶'$TaùÁ$LíkŠMÅÂd\fi"hÚØW)Ó…:ömÑú¯8rZÍQœÎ˜VI®BpmJXGÞkeÅÈAg’Ÿ01Û'H¾tÑ +Vó+,èÂ/^øÕ˜ÍB×&´qË]’†õŽ@ D ó÷Ñu²ÑH@ì@göXøýáB\æ·¨‰ü6%ï‰Õ> ÕµÌ®¹ù¦ïITÚkL¬Œó·FÌ®+³C* s7…£-£Sú¨Þ¨tzhi¤x¼˜í'/.о¬£J¦UècO‘ÊX}èh¹P©Ä¨˜@BÎ%@euÍj˜(¡)õEÏåeà|ïñ·ÿúÓŠñŸþó¯ðñ—YŒ•åÛëU_˜òõï|ÉŸøø‡ùSôÇø«?ûwøµÿþë\†—,†ßYõk©¤(’øê×¾Â7¿ùM^Æ— Ró‚¯õk„^ðBj•L‘µИI`ÁÌ ŒDS:›Ñf•Z+PJ!¥ë:yIœu”åHL µa&”RÔÑJ&b«öc4Pú$´ÖKCDPÀš I¨Ð.‘P]¬„-TZR´,BT±Úh­APª‚e¥K¥GZ¬T„JÂ*¡ÄkB0Z+Ĩ´ÖV¯Fk µ€Ð¡¡"b´Ò#\`ši¼AÊM ‹†£b@EÛ*Äk$DG…*E$Ъb-¬ê“‚5ßIHD´"¦ïðª\!!¢•Vª†´š0Qd¶Ä´`Öt5PRæâE  ©™ª‹PITWODS@­k‘å›ÌËù—P©´‰±Ðr!jz78 oÇÏY\¼è¡•k¨‘”Ëå’Ö!ƒVÀ*j@kD¨–!—B­m…Ôƒ×Ã5½T"ÆvqÉWåÛøüÓÏèú ¾ô¥/1,ßbµ!¨PªÍ„X;ZÂêv’ˆt²j;bˆ"J'Õˆ©Ñ] ˢ–­òч2,®˜_t\~8£J#甌–3# ŒË Jß'f!‘B•Õ @£ÖŒÕÆ\#=‘ º­€H¤UÉ`Hás$_básM1Sš4¶ÒìÍÞUPUbŒhRZ iHxCê?ä%¬444jÌÖÖ"¢†D¡ÖŠ´ˆY¡5YµIZ¤YDbŪ¡-ArnD™!"Ô¼b‰ M†j$çB¬›ê»‹Ö•ø­ê.+Flø˜>ÅȘ)ªR ÑÖ‘ËjïJ£V(VA Ö }Ïõõ[ºø’†!µ‘ˆ0θè:ã‚7ãKB •oÞ¼!Ìç¼ÍKš,Áæ4)ÄîtÖQ‹‘BBˆ˜Zeõdê „Õ€Ç‘Åb–V÷Ñféö_)“ÐV‚ÿfñ†~–¸ì;æ} oД„"F •K\^^òé§ßâ+ßñí\/G‚ X©D]Õ«6@4#\Ì k‚™œ3f«ÇJÄ´BÄÊJ‘t±§ •W¯^ñû¿ï{øì›ŸÑÅžRFÞ¼ù”¾ïe>ŸS«¡m5æ—äZ!0 ¢ÊJÐ% H)@«Ä8#v=¦F“‚„•¬ÊúÁ?iÍ„ÿú+ÿÇyîüÄOÿ,}¼ÄŠa†þ ;Ýqž#¯_¿æ“O>¡·Kh…>ԤѴxï8“À(Ð “„†ömˆ4ïg"4Rß±FTä[¨÷ˆ3º>r=ľC«Ì±½WœI @ie@k]½Èqœ)0–ÊþøãßçœÑ¨y$nëÈr_¡ŽóTH±çíâ-šÅš ¾3³')e9 ’P£"âKÎ4A*BCg³ñ UÎDÇaN­‘øÓ?þ·¼GœÉÐws B߈?ÿ ?À~ãǼgœgO¬•!Mѵ9Ó¢iû"~¿‡js&Ųd‚Ôžæ_÷vú.Gx“íÄ>¢­’¯Çãjþ}<µö­ç¡Þûžs›ç˜ëXÊë¾{÷¯4]%ŽÔy<á?¥sÉ1£BÜu­Ï%0×±ïÏ]㡊Íúw>¼¥‡Ù³k§m0­ (µoÛž³‹i¶®ÜCæz΃â!T¾ïÑ&èOýäÏíBÖ ù.Až6Œº]ß&²M§›el{Î>ýf]˜ë\MŸcE”i•œójÿ˜à®ÇÕ)nò©ËÍžÓöÉKYe­òÛç±Ôy p!œ(I0¢èÊìyÿ–÷\gÿÏõ)ðm÷åÝÍ,òHi3ûÝí ǾI7ãõì²tu[x›:o³n>rÈ~xìk~Êû¦‰üÐû0»èkC‘ã™=»dºë³]– · ŒµKLÎ];ú˜¹îkã¹›w»ÊÅC¯ÉF URß=Ͻ=‹ÞYG­†¤Ž¡¶ç¹·Ç'³ÎZÅ“¨ïêt&F2òpVˆÇZãwœ³° –…y÷‹ågîÌâL‹t ’&7{œi»ÄX2ÄæÂïL‹eiAPå¼…ÿÿÉ?x´ro—ýXu»g3³h¥Ç[ê¼}ãÿôŸûË'P7ë¾ýÿ!ëØ§ì»ÈͲÖ}ïlió™Ù¼ç[Ÿ¾=î:ÿc ÝCÛte¾?÷vÿ¬ûÛÙ U¥ÖŠJ<Ùs[‹½7Eî2Gn¾Éd¹yü:3ãæww³Íù›þ¾«=Û–½¯Ét»Ü]úlR¤¦”RÏã ï&Sd—§Å]å쪙mÝ>÷eß¼®»ž7Ë=—'ìÙ`J)™‹y<Ÿí 礉¶mËClûs3Õ¦By—€®Öz>ÂN7Ô…ëùB 6ƒSFlÛ¤-Ïý)p[ÛŸBû?æ5>çùAk 1CÓ‘ÍžM¶êºïîú|Ó’ßCoÔ¦¶<¤¬CŒ}–Ñ7ÏjÂ,ö eüó÷Ï V{{žÛV`Ÿì9ïyýú5Ÿ|ò åoþ]¬6JËÏo?ÿ¡´¶óö§þÛ™H6…ô§„sˆ E™’ÉçcóoÊzrÊ|^Îó2 H$O`©Óß9¨9-‚О@ީƦwg¹´‚•ù|þ4Öù}8‡|€‹©rYWø7߀óPÁÈ"äœN›™e]Æ’û>wœ½iïVÎ<9Å}©égg™j¿kyœµð» ;‡fY2Ì{ÂõèÛœi¡bÐ !~gZ\t‰Sqáw¦E– ÃàÂïL‹®›Q¯3ÝËËí&¼¯_¿ö^sžüñÆïG5ºYªn¿Ús_¡Žó$Ìž–é4‡-W{\ðç¼ëécÄrñ¸=ÎÄ(•¥5jðÕgb˜A,ºð;ÓBD0 H3~gZÔZ© f±Í™)t$¨E]øiÑ*¨FÆqùt…_§gâ61¨z‚-Í·vŸmË·ÚÛÉýØõ9¿Gëmþ“JìfÇþÇšc ¢ þÓ9*¡)]®pSÃîòïÝÌêæg÷s×¹wý^׎mëÛ¦ÝÎq-‹Ût(]칺^žÇÞMfÅ6Ÿo*g׺Zß}ívN«hkk”²`>¿ôÕžÛäûùÝÓßCPº.p½\úÞž‡>9œ'$øÙ¨1Óé5¿ÇÝqÎa!¢‹)Vœ‡÷®pWpÚ}íãulÛ·Íù·ç‡h·sÁÈÃH7Oä¼8¾Ù³®‘›‚ZÝþS0«ufË6åoÛ¾uß×nçôÌf3®ÆÏèúùñ„æ=´`¸&v6Ѩ“åiÃ>åzœ§ÉØ*)$Z;ÔéLŒ ÔÖÈx^gjfO.ƒÔõ.üδ0IÌc‡-¯ü%—3-’–ËJŒîÃëL ¡ë:rÎÏ/»¿Evî3{rΧÑü§ÞîûXun[®ÎÓÞ×2¡ÏÙÅq¶•¯ÖjR:îÞûœY¾x4­Ù;óûm\ וy{ŸÎ]ǽ/o]»×s_¹»ç^Ϊ˜ÑÚåäÚ$Èû>1öq4¹ùÿ&ÁßuOÏ>õ;3RJÔº8á [ø¡eÞ÷¤ºOH}pzEúÿ›=d ÈÅùº1žc™÷™9ûÖïšþ8‚ÐTÑVHQÝ™å1;ú\ž€.ø7ŽA‘X.¯ÏÓ™å¾óö9ç®Ï÷u¤¹ëøûÊ=dýÎþŠ(ÅÈr\’.ú§ã̲3ʶuíâÔòÐrw9ÎyJ¦×ž†ªu¦ö„!К'¡v&§ø­A?K.üδèBGJ‰q|K³3-2o)£Ð‡ ×üδh5úDõ ¯35B”\13ÏÀî%@'r|7FÇÙV.Ö=‰ò„¾9hâ¹üÇ .µîóûòxÝÛç®öoóù¶×0åAñƒw—)h5bŒÄŸúÉŸ9‰ ïšõüÁ¥ÞרÌé»”¿ï5LÑôyÌ~±A€ñj þü/ü?ú;{³çIíN5¹=Vb¾ç`ö<ãQ„¨Oë%×!;éTÂæf͉e¨B"C¹~ºK‡ÔÜçö¸ë»ûþw¶·ùDZR8~ˆòmµà!‚;m;aºo»ëÄkŸzõò²íjb'\¿]K:}Þm³©¯+㾋HÆ÷]ËÙe@íÚ–çèêÁÁvTA ªÏ{cÛ®/ÖZÇ.ïœn°‰A¾^>oá?†Ð=–vr‡R /..X,¾±Í™³©®ÇÁ…ß™˜æ ê>¼ÎÔÇ‚4¡”æÂïL‹¤U%/‡ãîíqœSD)TZ°ãîíy øÎÊçMË I;bN®Çμî¯ûmˆq%òfv\›ÿý6…瘜ÎyÔ6`ѨÚÎ3ï6Î%›ŽÝ5cú.ç8OÝì ˆV¢ÄóÍûγi[G”mìxÏ„>=ºY¢02›ÍN·«ó.¡ÞVpe2¹é5=² «'@kÄ7éê¨6ÿ:¡Û¤™o›3‡ÐÈ™¡Ý9_B (Jã] Úc?Þï›ðî²ïß…ÖÙIøX©˜¼Þ`áè¸iÓ¯sòØÆ±d]ôMƒm߬ïÎ3 `ôáÝ~þRÊÑLžuŸíâ\²Ï6âCfpwž.ãØ BÐwš?¥Ç×üµÀ9»'¢‚¢5†åI4¿ã]ó[¦·H²9ʵÓ¥÷Š3 ZX¥%‚Fü_¿öÔÙ…÷Š3 fÝŒZ2 Ä_þ§ÿŠþK_ò^q¦aòמ¡|NŸzâÿúÍoa¿ù[Þ+Î$Èåš ‰±4´ JÍ÷Š3 DµÄ¨h 0ë&ráò¤Êua›GRê@Ú›QdyÁs¡qŽnó+Ô"„ hM#at?vg"fOX%¢~óvAlÍPNÛ -²³Üüî®ýþÛ8ì«s›´8îóLÌžbT]Rk&ÆÐeoÏ}lãÌrS°n·ËùÛ8®¸Ì3ÕüÒÆŒˆsÎô±>¹‹x¨ƒË¾ó Ÿ§!" ㈖*´ßTùâç®Ï:Èîò­]Ã美¾«½›Ú¾éóÛqˆÖ¿.…ë]íÙ¦¾Û¿·mï6Ÿoëw½ï x¨ª-DˆˆÝ¬'[;Êè^m׌ê礭֙E‡¢µÏ“ð”A¿Ë~¨5ñþøZ+Ñz%ÔvT¹O£íÚaûtü>öécNR=YÙÝOù”{êíÝ…îb޾;_CJŒãpV‚óPsj“Ýü&°Oméù˜í}èÓz¬ÔÕRç§Ÿ†J;z=$£ú}&Ì¡‚Gík*ˆÖ]vù.Q§Oôë¦ä¦9ƾJ,¡ÄY±µ†ñøj°j×U€Ç bµn¢¸Mðªû¢ÔíÛçôë1äâÁ«=! R þê¯þj;}ˆòs^Õy mv,³ë˜õ=…—€A{·…?öóXŽ —ò#Mîv)ë¡OƒcÏkžÂK@Ë…ÁŒf‚¾ys…†Þ%Ü™áÖÇ‘8» XiÞ+Î$Y ‰s Æiã•÷Š3 ᯕ"BH !ðÿìŸñ^q&AÒaµ½AÇqäÿÈó^q&‘ˆ¢ÔaDSwÁÕðô–:ÝÇÙ‡¥ ¨*%7´äk¾ãÕì(ºiëísë¶;ç£ U•Z …H3rü]“xĺóËÑÀ}}Þ¤!*´ÖˆÃõ’û¯ÿãYŒØ»öól›0ú.»«¬ÛÇ­Û»¾©ìmëm“!~×}ÎÃ@­•.­¢F3ãýÒ/DÐ× â¶£xÐlr(¹ëÿM‚¿kÙ‡(Ç}…oÌ5-B"bÆÛo½}ÒfÀCmës4u?+f Qˆ!FrmÏf”?‡Iæm³ÈÁáYÍ•q&Ìç—hÅè«>ažF ‰ô¦!¥› ´ãhþ}œvÍz¾nò¼ƒË}N·?_瀳kÝ>Ù}O8Þ}¶ ‚‚ µÝ<¼±Ïé†n;·9ÄÜÉÙMÁ…j¤Ð!VÑF@s;‹F?GæZú|5ám䜡 ±æ%ýL.ëlÙCøãÂieß¶ìZÿ¦ 4û´ëPYiž¥àz!” M…xyÑ1är²Æm²Ÿ÷uF9”Óʾ`v=ïÙI¶-oê4 j X#¨oiv¦A@iVÑ(h”@nÙ{Å™ƒ.Ò–#ºX,˜yôg*š?FÚh0€öݜŰô^q&A^,Ñ gsïgšß“†ICCjöT¤Î4ˆô ëÐ7Ÿ/Ž´ÊqNM£’Ë€^|pA×ÅÉv†¿ÚIW\ZÉ,K>š =õí¶>Xžö}ß^£¬öGE!iGiœ¿ytN.ca†ÆH‘LÌyåÓx.£öfr†û2›¬û|׌'»”}ósÌOoŒ– Mi¥±ÄX¯½Që6\mã`²ÎaãPOR¶ó´€Æ@®Æ,ÍÐalt]w”FÝ܇~Ÿv—ƒÈ&Àmm>·ÙŸ?›”“Ä@)1ˆÝ ÅJ}²´‹öŒ'Ó|+™yß1 ÔK,>-!Øä¸}ˆrž§à$5PMˆÐ—åè{W6“u°î˜ÇÌx²M>ˆž–àfF×͈9]íOÚ¸‡dPyhÆ“}œL\èŸ.˱b’éûKb5޲ÔéYNœóxB³î­þ_bLÚ*uAwNÏ‹ åSÞs¢X%TLg´Ü1ñ¢›£Q|íÛ™Ãb$‘è² Ëæ²ïL¹Þ–kÆnDmÈ+§^Ǚ„w9ò*¾Âº‘ØT¸ßn<áõë×ÞkΓàã?Þø}·WKºËDüŸßü?„\¨ã<Bê #ñêËÄßúß¿ƒÔÑß™™B¾–ãÿ@¯Þ~NFïg¤ Ìû~•œ¢S¡½WœiÐàzXb(ÚÇD•àâL‚Z„îrÎ8Žhúð%_ù®WÞ+Î$ÚbADÐW/?äþ½¿ï½âL3£¥@±F|yñßÿU×üÎ4(­¢¥­R‘ÎãŒÖïgf)Ë«kôÍòsJëŽRé¦ü³îXî¡öœÎ£Ê¡5jTÌéxox]°S2”€ b±rü½=ÛdIß7Cºã¬£E@lM†ñ4[ vÉž~û7œ}H:gÁ´ëóßfx›Ÿä…øpvÖüA°’éb þƯÿ7Byzá =›º³±VŠ9gT–s†XžìÅÜåï»Ëÿδ¸Ð„¡ÖJl&G ]rW”†m…Û£98‡âZŒFGl2®^{YC?$Kú&ß¶gšØ8ÒDÇ‘hŒP¼Sœ©ýÔu°l(ÒÀªwŠ3 ¤O„ëYf¢Z‡úv~g"„¡£0¨¡¢…Z›÷Š3 r¨€ !4Ÿ:A)EjËè0 ¨¸æw¦AJ)ÄQM/(Ñ_ü8Ó *Äk¨J&Ôi™=þ–wÂV¢44çáh·K°ªCdlyì¬/=ˆNÝîg©$Z#ÆŽRFb ÕŽ“}×m Ǭïñ·ÑÔ§}סYGRÿÁÙ˜ wiëuOŠÛÇìRƺ'Ð]ŸoÚ·é)¶®¬mË¿ù{›öîÓŽmûã¾ãž %4´¤ØU•¶<¾ ßŽÀ¼ÉAå1žÛ8Èl³ oÝ÷Û\Ë.›ü¶mï>íØÔ®m‹ž 5j5¢„Ž"ÇÙÞ°i3ÚC:ò\½»Ö¥XÚtýq Û”9•y€–Æ"úùý¾ïýÞª.SIDAT¾ûû¾ËÁGè·3̼Â÷?§jǺÁ±M»n÷ç$A”¨!?š™¯|ðÁI´¯Ö»}Î9jÿÛþÛ^Ë©Úqè'ʹ±¤aIh²$öupmGò]…÷æMÛ·£·-cãÌ:ÁÙTî.å<¦@ß׎›O†û®ï9dÈÇ‘Ùì‚F#ÖÅ‚\OŸ™å®´M'oš¸mó÷¶u=öçÛöŦö®à]ûmŸãž ±›A3L˜Š0†ø$/d“֛ʹ»sîØ_!"”ÕÆ¶,Jz¢®\·'_Oy"vˆ>pî烗3j­XST»„1x¯8“`qµ ˜Ñ¥„¶Öèâ—½Wœi<)› !1\Ä2fÂÅj?ÿëׯ½wœgÍ8ŽHéûž(V!¯B—|òÉ'Þ;γFƒÑ ù‰¿ö7LtƬ ”b3e± _˜º€Õ†IC5bV AQZk4Yyż˜_°BH3J)„YÂjCŠ!©£•‘Ø'–ã@—z¬5xç;DiM­ejRŒ\/¼üè2¶U;Ì@…ʈQ‰t˜A±J´HFúYdÔJ76®Ì˜õ/iÃB·Ê8i*ÔZ(Ù袢*,ë€!H¤µ†t‚Ù»uîÖ°¨ÐŒ¤y¬t½f‹ëj¤¿H´ñš”o®¯¸xqÉ8dÄ”#´ŒHH”²òÍ;ÆqALJ s†a Ö̇¾dq]­ŒãÀ|~AµÕŠÎ0¬úxÖ‹%"BŒ±ë(¥Pëj›JÍ™fF×u\]Läaõ›$”adÖõˆËb+'(4V…2Ž„ äV™Ïç”Üȹ’úŽq¸ «\¶QÑË’™÷‰A`•.Îh¹±¸è.{Ú˜éãŒ<Ž­A7›ñv¸¢¯‰pÈC aÑfä<Ð]Ì)c%¥Ä8ޤ.0  ªˆ@^$ 1F’*C)ˆ*:­ mu_߿宕aÑ.ÍÐ(CG%uÔBZ0BP0%„ôneAÞý¬^z,ó@"ÔF?¿„ ÔÒ1(¥Ž„ȹB „ðÅ2™Ñ•-f`&ˆ‚Ìg3®>¿"çf™j…Å0@…(‘Ü*õ];j0BŸPIÐK‰#åú-AWÇ-®WñÙûVí¤’tN…VWeYûBpJ'•„„€$cFÌŒ#]Ÿ¨eùîZ Ks¬6â»ë¬µ¢"”RVJ!Å/‹„ZŒeAÜ@TD…F¶FP@@Ù7Y—çs}Ïyã¼9ã{ß§¾ñÌâ(‹ ¸ ˆ"[74 4Ð[õNCwWeõR ßÍŠêèèĘ̀Ȭ¬-ërîi²³"#oüãþâFfeF·Q¸#÷·iÓö]hì }Ò®Mèó‹;jÛÚ)µSMð³M»vš.(óJÛ¶J[E9ß\Q~ÁDMIü§)ЦuиÀ†l7µ’¥žüZ]¬4”‹ƒP5´U.¾HÛ§4k "Ùþ‚¢\,|‘ÒxA©/U¾¹ÙXá6£2Á.žãí°¬©Óó~þŠf×½váÆ7/ô}ãBß·/ ø½fƒþ¨Ù½25RM¬’@@W~„ñ@àúö¬èOšÞ4 [à ´^¼0 Ü{HéûÏ6 ÝvjPÝvau‡ç¡(e»ûo.€Þ7½ÕbÀ91v'n£¨€Xàˆ)F¶ Ÿ$‰ܨÁNöW’n©NÁ:,iS&Õ*1lÞ£Œ)PÆo3«L™s†@Þn±¯Ý’@]YÞÔnÙ0² ?éN²Av^¼ô<$|R   ´Yx Aà'¡‰PC¬Íü†¶³êÛÍõ¶›UÝfºOy¼Fy4øó±ø5´gz•BlJ¥ö>M/W&Uh{À&*C²”A¹ÍlØ#÷+žn±i%ÊÌ29àMLƒÜÄ´OÁ'j³ªÁ?4T¯À•íÀfT´™Q³f0åÑeR±féž±ÄÆçk6&¬MZ®òXŽ2ü¨f°Tß±W¹òŸA°û}£} `?2BxmŠw(Ï«Q¨5'vøHØá„ŒhSÊ4T€S¸åŒ0¬ã¶Ýf€]b„dÀ .­í P 8ƒýì½ Ø`ƒ÷Àe¶ØdŠÎÎÒ ÌÚHì3Ê•iešAˆÇd¼AC[özfÿW…çLã‹ÿà(8–D¸ýJÞ®h?1˜‡Ç´—7û÷%žJëž¼~ºýÀ}Z¢†;gr¯ÍÊ Á¾þ¯F`±›‚Mafx.ÑJÒˆ›BйDjnÐn9d‚Ùì?”åzš–¿S7ý ú¿ªi«ÕÏûîÆ÷À³¾{–k6p©f·.ô‚Ý2ßÛóIo·©gûÏÉ;t¢Ž%͉´¸½5F£º!?·âwËË^˜^²4½x~šgöˆ¢÷=ñ@Ñã÷€NV0ñVÍÆß’—Ö3wh·ÌñýÏæšýúijöµ[4¢/{QÑfäðû }m‡†2¶¥ÁK›ÌsYƒÐ+`H&!ÔŸùŸº·ÖÕ¿ýIýk«{úêÿ©nîúg¿åŸùïþÇßðOûò¯Õ‰¯©c^Q\å»÷i_¿5×M)¼eÊ.È®ÎT¼`O*ß|æì_Þ:÷×·«Þy­âͧË__\þòܲ5³ËVÍ,}îñÒ禕>=¹dÙÄâÅc †7Dò¬·üú¬þÍ ¿ù°þù÷ê–½S·èÀvݬÿÐØžñ¦êoý“_WǽªŽZ­Yé»cqMÏÇ 6l‹FAóèQ%öH ì²5³ÎýãOÕ½SõSùûç+~·¬üµEe/Ï-]= Ø.{aFéÊ©¥+&/ç™?ªè‰!ù“ï8ôPÏoý™æ LÅÁì_ìf26$q¸‡‹r8DŽˆÀFªQäQB}Ò¿©€ô›ׯùKÝÒ?×ÍÿCÝ“ÿîŸ0ÿ›Â+êØ—Ô‘«|­Ò&ç®,óö_XÓkFá•#¶i8[i%i…ìÒ“é³ï¿yæk*~»´üÕùe/>Yúì´’å“K–L(^4Ö3w¤gîCÚä|ú½…SäMìhT¯n¿RóäöCš°á;4G°“'[¾AŸ#V÷ŠúÜ»u«Þרžóûºé0÷~Í?þe5íuØJßàå¾K¼w.ž½ýzû.ðÞ2¯º÷Ì¢kF}Á‚ÍVöJ–¯¤ì’%ã*ÿ\åVÕþ}; ž’e“K÷ÌM+zrXÑムP8ùNØ_»íã‚ô¾§Çß’5º÷Ç®1ûç_hIX/½`jìOÅ›UbKz½4l4³Ÿrû¹ §ÒG†HZUÇ«ò±%ñ ún˜ÁuõSÁ\=óºÇ Q¿äª‡¯Tï[Tûú/òÞ²ÀÛgž·÷<_Ÿy¾›çÕô~Â;Ø"®’°`ó•4ƒ 7Ì*^_\ñÛ§ WÓJ‚T/zü> º`bº¿`\ŸÓãnÎJ3;tó À†$~_ð»2¸"²öäR…ؤbrâK®|,lÄ›`+áêÔÏÕFKF;¾cv¢h7$뇾öœ®¨êYÿQ7í7þG^õY­>ôœ:äiß ¥¾Û{µÀwÓ<_Ï9¾gûzÍõõžWÓkfQ—Q_²›­$,Ø|%Í`{f ƒ+jm¾zVéÊi´ž¢CЦ*œt{ Õ£o,Ó+olהּ^ßÕEóäÎâ_f2Sql¬ƒÝn*<‹RFØæ¢œn1fHpûé¯,Õôò†Õ—Œ)ìG‚³;Çâf:x"¬ÊYØð]×Ì7µIøc¯Ãuµô*uø³êà¾K}ý{û,ðõœç»~ŽïÚÙ¾s|¿œ[óË'Š®ɃM+:•À§|%#CרvéóÓKá8ü\ñXÉâ ”d¸¢n¡:íú‚‘פõÈóËã~¹ö®«C`ß–c6|ŸßB7Ã)W<v¥öÀjó±AØÊYc‡1²_¿‡–gÀn)ISwÕPålI³£ =áj0óGà6× A£ˆ´*Îü5Ž @§Ü½Ì 7½áÖ÷Ôßh7Ìàêzôjuøó¾ÁÏú¬ðõ_æë½ÄwãBßuóÕ_ÌS¯ëë1¯¦ÇÌâ«F~Eƒœ«~TŸò•@ÆNÓîXN½nzk·¾Ÿ™ W×ÅKÆ{ŒæòÑØ‹¾®pÔ/ Ӯ͸GöC=ÖÝqU Ø$iÃ3*ÚÍ3¸y|X‘v |¦œÔe ì¶›×j §7ïi5?×í§…ÙòÜá-èêj¦G‘óR9´Q ¹0ç{"ZsËÌ¿µ‡P€YBéÊbÌåCËÀÚrûãÐxj:ß±Ø;öeõ‘×4ªáç8¸m`¿ ~N¸Ò×…¯÷2õ†%굋Ԯ ÔnóÕîók»Ï,îü`+°ÙJ •À§|%c+È…záä;J-]öH)Ü_úHñâqÚc*s†Ó`ö<ÒÛ3þϘk=i]=iÝ Fw?ò`÷u·uÖb^üpL!IîŠwú]k°ƒ¯‰X{z5¼ƒ¢Ù¤*b-Ù‰ù5ÈXè#ý6=–=¼™Ÿ*–r,{"¶6–@²ÍÖÌEyf† S[M&…\b[$S [FïÐýxG¾è›ðª:ñ_ýé¯úáþvÚKêˆÕûW©w?¯öVíóŒzÃr÷¥þ.KÔ.‹Ô.ó½]f_1âë` E;[‰¶y%ð)_‰¶–Š &ôóÌYòÔ„’¥KŸJ‡›äÅ Ó(Jd£$ý†’qÝ‹Gw)NëR8ªË‘a]Ößz…æÉÀe`žöuG´Œ­Ý "ÏÕ26ÜÁ¶ö U{­ Þ2#„?VÓÂ6³Ý*‘6ïרk>Š=¶UêcêdËëɤ`·¤ÇÖ•Sßô˜‘œ¥…C£vqÞ²…e¶¹V»üWxU8ñ ºé¦Ù^øŽzôhÿª:˜|Ù?b:d:hµzÛ*µÏóþVú»¯ð_½Ôåbÿ•ó½/ù—áÛƒ`kâ*_•À§|%éÕÊØs°?ÿá›à;êâ£é’%ã‹¥Y2kÙ>ï«.нtÌÕ%iW=tåÑû;Ò÷_4O—*÷åklßœ«ý³ÿ ‚ ¿k`—k—ʇ¢ÙÂT|†Ú.häÅQjzê«Ä -`v WF_ÞlýN®~Z-XÂe<¤åIµ†§kûÑ–0ð±ûCC!Ñâ¡tG™µƒ–{G¼àý’ÊŽìt»Ï*ÿ ÏÕýb¥ÿªåþÎKüæy/ŸZzÉ_k8}ÖW2úeuäKêð5êýkԻר·¯ñÓJ 0_ €^ ûóFö(œ6È3gDñÂÑŋƴP=÷þ’Yw—Îl¹+^6æªÒQ‹†wʹ÷ò }. lCÞnr·v9Ì´W·ƒ`[Zž ^kó¤fÄez=˜>âéN®ù•ZKô3õ°‡p‡æÞV3çÖõS7ج«biëXÍ4«œìG‹»Ðw]§ÖÂwZðâǃ/„†]ï>/ú{<_×ueÝÿY^÷“EþKg{<¹äâÁÁŒÝŸ\%­öX­]£~I¸F½ Àn®Žâ+´Ÿî…ý§‡v-˜t{ÑÌû=s¤>ÏZ2gpÉ“KgÞV>­Ý_öÐOЏôèÀo¸ébÍ“ág5„ ÛÚk›± Ø#á]K lš‚(Û„óPL7ïem;ÿ<¬ÿ¦Ìjcu %çfà)ZÆf²Mãö°‡pU±‡\Y°¹úi=Ô=:$ ªåÎÎ5´HÐv¶m¾¡c®Ü©L$ A]9¹öæ¹ÞK½÷¯4»×ªºëŸ¯»feÝÏ–×]¶°îGOxÛO,i{ï×A°µFÉTÂ_É”zer8uß•ùco†o¶€mß7aOñ¬!ų?9¨dæ¥Óû•MéU>ùzØïÿüý²—yîûÑÑÛÛ¯¿±ml`À¾³\{°´y*^ Œ„Û×Úb+ì4•ƒÙ,·[¬­ö„c'´â´0-ÆÖÀî$u†­Ÿ0«‡«S öD†îÑÖqM“÷6„kµ‹%ƒ~¢DøO'Öö˜©=+z×Rï ¾A+ÔOûîzÆwÇJ_¿gÕÞÏú{¬ôw{ÆÕ2ÿO×ýx®¿ýtoÛñÅmïŠ7g²ˆ*ÑaŠ–NÞýS˜çOè[øØ]EÓ=>¨hÚ@Ï´»<Óî(žÚ¯ä±Þ¥ô(›Ð æá®KøqÑ öGnm»î†6š'£jCIÀ†'Ä5°ž¡¥ï Ø@5\*ÓüLr5ùg–±ah]«Å€pb.Plš›€è½lÌ™.íùĹ_Í=wë‚êþ «û.¬é»¨ææ%5½žªéñTm·%µW-òvšï…Ix‡éµm=§¤(´·»ˆVBÓ~ΗÒå䨞§Æýêtú­yôÏKï›7±oþÄ› Ò{ïQ4¦›gÔUž"ª?]$`Žœ8fCÙŒcˆDç3¶>‡s‹ñÓf„%bÙJÛfÀ Ð'dj& ‘ô4›R ð`wì{LþµMnVÌN>õÑi8&; g­†ÃÙÉeVŒ#ÊðWù)º8'sõp¨sm«Ä6Çp“Rщµ­@D`Û>+ˆ  QUÁváã„Q¬<)@°lTÀ… Ø.ìÔ¤H)èdT@°lTÀ… Ø.ìÔ¨¦¬<)@°lTÀ… ð`wè›#ÿ=vR ]è$*‚ „ÀîÚüÚ&‚‚A€MvŸ¶ §aî Sl‘Ulp¡¶ ;ÕêèŽåݧ€°7­{ @Q€Ž)UgÉÐò6üܰ·áÓÝ>Ë`w”xž¤“‘ɶVEÇòqWÀõ`ÛVØ0c4 S…/·€íYÒ`ßd7Ø›³Ÿ ¬;иvOÆÝrûø3ºï‡þŒ®#`s›¦t¢›á¹AŽì!†Ã?޶C-êÁæ&n†=kú€±á³¡KôŒÜ©ÙýfAhvç-çªU°?Úáƒ/´€ío5~u0óp zÓÁFH×ëö5~üCý†]±›c•[ŸÛÅÙ^?(ŠŽS}±½C$Á– qù&è‰2 -v b©fÏÅË [ÜxÁhì·×nÞ[¿å@£ö ʆmê·d4 ³Oö7®ß[T¯Ýí_¿«FêæYT36˼™:ú4®×—k˜ðåûKFC³ôÈõ£$؆yªÛ2` N¤Ÿ'r¹DÌ‘€}¢°nówÕŸÿP„ƒm¸¨ûd·wÃwµë¿­9V¨Øk· só,Ú`s]"Ù»úYfi«Á³ò΂-ùÉ€öDïØdì‡K$_Û\û­'ük›1[^AƦ—ÙòQí’‚ Zñ•”¥QÞR+s`ýÌY™\˜É‡.礥©ø™êڷ翽áدÿ–óêY/¾wxõ»‡V½›ÛÄ^ùàÈÛëOVÖøã 6;Í6T~*®¯ÍRgcá() ¶a÷鯭¸ÛQöFð°`‡Lv6ÎfÃýfÓIK`;¼Ð›±eV)å¾îŠR¬`µI¤@‚< öâ6ö’Z}@…[h®µ@–[`Z()) ÷€ÊI¥kó×]vìûÞgD°Í:Ñ*ØÜB t­òn6»ÐÂwsl| $º ØNzVyFž'ïÀ#¥šŸ?Ó,…‡Ï2Vž·vÁ©ýh¨*`[C°ék›°ÈÙwÙM`ðl)¼à¶53@^É&¯mF+c9´ @l+`vü§â{¿ÿ @l+ »Ê{ž³]cK>"ƒÅPTÀP°×Øo¬¯ãÌþ5¶üÛ]Ø[¨*‰âklƒŒmù^Ûlþ3ºv$]…Ç¢ò „½ÆÖgl‹_w!Øò½%Q‡ˆþ56‚íPWa5¨€¼Ñ¿ÆN°áñzVîWyɰ$*ø $ë56}G‡Jv<ØÈ|‚.ÛAt;l@£¸2ì»_¤Éú Ñ—1Gï—HHz"ùšå»ƒÖ™”רú~µºGß…òÚaɸ+`µ»Iy«G±9#l“ ÇÃôiÃÁDB« ;ø‘Òˆ§â2’Yê3®›Í„f`v¬e~»$lè`KœX нa‡Zíe1ºúIƒ=+ÛÑGJ[}¬óüªŽé¢?½KÞÇ6»6ûH¾Ù¹YÞ6#ßlàw°c°*Iô}ÁÍ¥åC‚=0r°ÃÖm°I ;øí®\¥kË÷ØvÀ6MÍ2¹~†Y×0ŒlIºâXÌl{!ÁFX,ÅM6ËíbÇ”Qœ±}»+:`‡Íêf6flÃ(ŽU…=YÍØ\Â7›3 šlFµáå½àt‘¨*Ûá©xä[ ^ AÆ6œtq¨ë'‚±@З‘t+£€Y´†Wï✇âToèj4‚G ¶~ùa²1Y„˜]~xÓ·Gí âDÆÖƒM¦OÜ$Êp²­ç–Ô&ѹ¡Á|îì2ˆeœU€ëÁC‚úž•!=» äăQäúÀ~gc®dýî( ¿Jé ‡À–ô)ÆÅdº<Æ.áéPP@ó –~{Ý1mááw“U‡9[ý~ökdË.?ìJ°1]#< ®öÑì…§²<`…GK=ÇËKs++ «Ïzª«+Uõ¬ªVƒ54Ô65©Ä |Œ¦â ®#º‡ $”1»C?›_w%”dè *ø DlX̰ù{l;ñ=t‡¶;ú[ ´RÁÆ€@\¨‚íÂNÅ&¡6Æ*àBlv*6 ˆ)Øñ]¥ÔÆSb6ÁBAèƒÝê‘Ò§ÞÇ6| —{œÓ×¥6tª 6KÍqÖ«DˆB«>èÌæ´¤§Õ³Ç ‹m»Džd`“ Þßà>e²ÁƒC̺D0èØkŽí¾wÍ\za0T—u±ÙK Ñ~¤ÔfƦT¿Å¯ÈÐ2úQÜìX³g¿ÙÌÀ)\‰]ÒGf#Ž’Fq˜µÈ5TëGpØ‚ñÝA°%“ŠLÛî¦$›_…¶ÅéQ0{çúC"}‡I^ XÍØbOd†Ûq“PÊglA~vØdLO²©8‹“>)™Å4K‚!E†éN0çWHó³>‘‚`Û/ÌÀ¦Sþ4xØ {nÈ\îYíbÛž$wÆ6”RÜÍ”RüúÁÛ¬?dÀÖ÷Yr°Ú똱 /m åe3AØQÕ6Na¯Ø­v±mO\¶ ÛÄLJF†á( 3/‰!Cç9hÙYW^¸àXÛ’È †r®͆TÁU±½†›¹är°m¿ÝEçTl4sbqs*ý‹;–­“n‡½Æ6œŸ›íäfÜY ýgÇ~³òâŒm6µ©‰|”@@½túx0Ü#i/=…a7üÔ,ðl»ŸŒmlí Ò6jKÒCP„$í¸ÈÝŽéÍ3;ò“©AŸdŽÂ2nRÀµ`»©“°-¨€Ul«ŠayT @°“ “ÐETÀª¶UŰ<* ØIÐIè"*`U˜‚ß÷±­JƒåQäU ê`ßïc¿¯tzCQ®Ê@°“7PÐóäRÁN®þBoQ)RlaÙ8DJu,„ DY$[ÿ=hbãÉ[”Z=Dü²àÁ`KͱêU”C(Õ³~Ó'çYy-ééTÄüqŸê›àˆ´Ú$›4^º!üœR6x°tˆ˜[ꌾN{Íq$’ºNIú«%=-u±@.qŠ]r°艒lÊ žÃrÂŽˆìp`Øfc­Y%ìà"3¦°='¶LyÖgnLÑ»í`è$NUò` ôt l™.3‹C%M2°9Œ,…¶-‚‚IŽë†c“Y°êãFï€Ì¨ç` Ž*`‹GUGZd8R’Y:‰Ä ZgŒ3¶?£+αf›1i&1‹7Aд,Bô‰Ô°Ïdš€`ë¥ ‚†sNg¶ ×S¶Ñ2Ëÿ‚TÄ]ZÚ>5¥°¬`ëÓ¸›©|b9YÅ£ƒ¥ iÖå\¿N ½ÂŒ-?»À#諌YíbÃ)›Õ“šElrƒ-À@>c ô5›,˜"3`‹‡$ý`aVÁ ¶ü(!Nf‡¡–òUÇè“l¢'7wâ¦Uô¶«2-Ï–OöDgAœWú齡?zôÍaCG/7 c·ITžv9m ?ÕwS[Üe†aÆ¡S²'Ø6šíT‡Ù8uâ‚"$N_ÄØ“äÈØ6DI嘎F*°ÑxHp-ØqÔO Ä];î]€ Î+€`;¯)Öˆ Ä];î]€ Î+€`;¯)Öˆ Ä];î]€ Î+€`;¯)Öˆ Ä];î]€ Î+€`;¯)Öˆ Ä]$›{è—H¦¸Jü¸U؇±ÌžTKå'Øâf^ °Ž´ÔvŒ9rv®áI6õžjÁ½A˜ç”2Ø2f/o8¨8Vå¸\G ÞÒ ‘ûö±‰±dz „­b¬ï0«™™ž‘v ×Clöˆ<>°yäÁæqùSØ+i5ÆìÅð¨$[>?‹g΂OÅ¡Ï2CŒƒ†U…£›‹Ÿ¨Ši#Æô‡¦™$›Š³§¿¤á¦CúÔ*PÁv0¼bS•YÆ&—câðˆ’‡¶óŠSþ$wÆ6œYE¨)‚íTlŬØú-G|{а"wÃ%`ξÂÎÙHqXp5ãT<ò˜s¼†°`K†‡#ŽBÖCGNm˜ç’`*NgV,úi¶áì‹2¬ÿTrÞNŠ™m6ës¼Ã°BñxÍM¼-…‡#Ú²f8 è/ 9/W =Kr€ ¯3-Ç}Æ Ýª‚iÏÆf$ŽÔK<>Å@°S¬Ã±¹©¡‚ýŒ­L1ìëplnj(€`§F?c+SL;Å:›› Ø©ÑÏØÊSÁN±Ç榆vjô3¶2Å@°S¬Ã±¹©¡@€Í=ÔMúEÿ¼WØ'À¬¾þ%~ß+5Â#A[©0ÛðYqñëÑh›S1fÛ·dzV\/–uCøYu¸·8áôŸŠËÛÖtP³w§l„‡#^%BŒÑ¶'GƦ’qïZ‘Ô­§Ô°ŸœM©¬W†É_ q³JäÁæ†øèyåTŒÙö0ÉÀ¦í ¶@Y§Dç| Õ†õÍvoá2#5×ô’-fT¦ñÙú“u*Îvm‡½à"\@ˆÕ̯#;ÆYÆfoÁè§åQuÒ©äaÛÉfì“Ê5ï+ÞP”«2:ö=Öy~UÇô“p`f›Ö½.î0³‰wØÁÏ)Ñ1cÛ;gĉ~¬ŽøæTŒÙvÆ%`ξ¬^’ÎÙôÓ*³)7NÅmGa„†ÛRxDèŒÌÌ_~VhÛ™d›Î¬XØÈ<œ˜éÌÜpÔ´1oן‚í<³©¸Ù<ÐvWá2#5׿VÃÑ#±ÈÝ >Dÿ®xÄSñÈ[¯b3ý‹Wë𼉬‚í|ïèGnçÏ5¢Bl TÀ… Ø.ìTl*€`c  .T ê`ÊUºFö=¶ UÇ&¡QVÁ޲ÀX=*ìx¨ŽçD¢¬‚e±zT  ØñPω DY”Ÿ‹raõ §@€Í=N$4|.—{B˜Šm ì(=7&ã°àÔ–špQæ´Cì{DÃgÅ ß&pÚ—–úÄ‘#‘û»gÅÙ¯»:DüÚ&¥šƒÖ~`‹ë±­»¾Z™=¶O—"rƒþµ<ý©…’À¨ºDÝà2vÕOSSƒ|{¡¼àÝjeDµâØ4›‰VVýˆÎu³>%&IAfàæ fã·L¿š9ÃÖivºÔÉí 6ËŒ8–$#MBÃSëÁ†bÅUÌÓ=9õßòoÏôyÀ¿m¿ïó½êæ=¾»ýŸ~ï[·Ë›[\%OäÇl}î5•žÃfxÃaÞ°NhŽO®3ºY…ºj6 °^ N‡`ÎÌmLß"DË u. 9Û_” C°êüòóÇ‹ÏÎÌkÊ<8p¢iϱ¦Ý9»Žvd¾8аå‡Zð<ã¨h5Ç2¶ÌÄ›6‰"ÇåyrKq 5KÑaÁ–¶e†ð°§‹YàÚ ÷h%Ÿ±YÔÉp¸×7–ƒYò(¢Ñ‚ ¹¨Î) <ÕDþ!'°+;°+K£ú«ÌÀû¶îóÂy¿Ü{<ÛªLúò°oVa.¥Á¤Ÿ5p3ÛFëgUagC†aïÔ†GYг|¡?b°¿=ì'¹zÿ‰ ¶;»xÞv ‰dì/öi{ÃŽìÄ[0åúÕptçVÁ¦Á'“½Åþ`ƧAÁØ%„d²®`¬''Ûx‹Áþ*³N›~Ÿ N¿4ž·îlÙß?ÁØßv8ê`³©UŠÎ´)±fX†eX_-W9;Ñ%…%­b¸S_9»‡ôbè¹í°H®¹n•Ñ6z 4ëbqçš…™m?Å`ÃÝ2ÈÕûÒf¼F26P HƒÁ²AÀþàó¬X€m»)x xÒ‘‚‚¤f“ ¯±á8À û&«lÓjbZÞÞ«]c¿·ÁNŒÀaç‰ázO Á†¯µÈô›e›ná› iïÕ2¶ذ˜á{¡uÅí= Oyðܨ@r*`ög»UíxÐ(ÏdC£ú@ãÆý ƒ_w½»ñP¸©8‚œ‘^'µ†`oø^…¯µà+kb”íO2‰mØÛðén‚Ô]λYC°?ީ—[Àöά¦Ù0`{ëáÀæ¬À§ë4®ÝÓ°a7fl7¶-¹0û£>øB ØþæPãW`_f5Õ›jézݾƨ߰ ÁNî®Gïݬ€!Øn¯Ý¼·~ËFíA” ÛÔoÉÐn˜}²¿qýÞz zínÿú]5xóÌÍ‘mKj Á>QX·ù»êϨ‰Á6\Tƒ}²Û»á»ÚõßÖ+T¡ák·‰ÊÍ3A¥ø*€ È(|ÒbðæÎÃ%’CÕÚo=¯mžTºZüºKòôX @Ä °`Ÿ©®ýp{þÛŽýúo9¯~õâ{‡W¿{hÕ»Y`°Mì•޼½þdeßy°e†",ƒ  qT øÚ¦ÅŒGwñÔ¨* £‚##–A’K;`Ãä 0TàhöŽT6Q¥ñÂØ––\ƒ;VWiÃÛ-ɨÀ;sáÞOᩬT6h$Øv†K® V]£‡ÀË+ð˜;¼›&cPØ)ƒ“ʘŒWde¹°&s:Ç¥9©ƒm¤½ ß¾B¿½î˜çTV*› 4 lÃ%×àq³U× Áäx ^[!o‡5º‚DäôñFX—B«Õ4/m!p,ög$Ú†5ÛH{ž©€.†oh<…GSÙhœs« Ј"Ø÷ÀŸÑµò=6xo¸ä<­n¶ê=[„hØ“Ó$cZa§LE‡‹ýƒÚ†5塌¬òÁÞ„§£ ‹_|÷p©çx*›!ÀEh̵¸ a$Ìkר6ÀÖ/¹Fß/3\u  ë$Ã*m¡°“ÄU"LÃÆ±µ‘9VåÕ¦$úŸ"";£µÖ=?cN#Yž£(/ÍMeÓâ¼õj„”  ÆlnÉ5–jÃU× Á°ú9¬½øÝ‘&xËô»ì&);¢•wÄè ®â )¯Ày¯é7Ö×é Ná9Odšéø¡B veea*Ĺ~5BJ‡Õ ã6]r]Ÿ‰¬´¶9¸¢"»ê‚m†œã˜…eÛñ3²`WŸõ¤²Aœ³hÐÕ)Ûz4"¡7ÌK 6¦âdÉ5¸¸Ò¯ºFp!  «®‘úª;³›à:^"—²ì&(½¥D HyΛxeš±ÍïiExFΙf:~F¨fìêêÊT6ˆsй—AV#ãØ–Y0æm^cÓ%רU×àpBuȘU× ÁðeüeX… ­oh…²àba-BÇÌÀœ7Â3òúD¿ú3BÈÍ3¸ÆVÕ³©l »hgÉ*(6Ö-‹Øf+3Á.†‹3!Øfl»ìjUM]ƒ8çЀ)•íuËâ¶áÊL¤†‹3‘) |˽õ``kV`k¦œAa§ N*c;7ÏÀgígV«Ÿ¦gøŒ­$ŠIù3fÈòzÁŒºTCÛA–;gÖ×-‹lx»ë} ˃÷†+3ª g‚Cà/€Â,féŸfà \ÆZMìÙI¾õm8©ŒÉxed“9ãRÈœÔÁ6ÒÞ„•= ‹W¿ŸÝÐP›Êfˆp±-«ÉƺeqÛpe¦Ï3Ìg‚Ãßõ…5œ ,ŒL7 °S¦­Æ,a:&s:Ç¥9©ƒm¤½ ëõ@¿öAvS“šÊ"XE#zÃÝ·ž± Wf,Î †¿Ö­­á´·–;‡[‚2…28©ŒÉxed¼’9ãRÈœÔÁ6ÒÞ$«pÁÊ©L5´D°ŠF-¿2´“,ÎøÏÝ |¸£ÖëIq°m ‘@` Vf2[œ Ø.))üî`.ü]4÷)°éÛ£äUäT~Ún;J®`µ¨*à”ÁT,^c;un¬@¢¤vǾÇ:ϯê˜~2JçÃjQT  „À¦FÁŽèx T Ú Ø¸J)*àBlvj´³ÖŸø Ø6*àB€½iÝëh¨*, ÀCPd6lw?/…­C\¦€1Øúæà×]‰…¢b‚ –nymÁvábj ؈1*àBlvjªe'l¯^ÁF\¨@]V’]tú@þÉ=y¹?ÄÞr숙ÑÖAc Ní…VCÛÅiÅèƒâ$tƆø.ÎÏ|þïñÈ«ÊÝ+RÁ:§­žóë÷J‹‰ÁFqú 8 6ä. :ýÅÿÝžqÒe_-š5'ût)´÷…?þ#lÆFq`£8áÁŽãÛ]Ð=«¿>{>…þ5}}à´úLùqqÆFqÄ`cäpú4_c7ÿÝ8‚ œ0ýnj €ÿ5ºÞTo ´úì™Ób°Q>(ŽyÆN°!)Aˆ7hÿêSÃê|ÞšsUåÐêsUya36Šc&FN€]W篫SSÁü~_muÕ™òby°QC¶ Ø(+NMÅI÷¨ª7hµ®7Ÿ¯¦ú\EEi<Ø(Žl'ÁÁ&H׸Þ|¾êêså¥ùVÀFq &iN (N‹8 ˜±k •AÐ'‚)Š=7¼ÞsçΖ•—äY;ĉž2Ps‚‹cQ *¸Œ8®$Ž\åÈkD¿L÷ÐÉUsR² 6QÃÙæ8['T,ÅáNͶK °þÓ¨jØúÅmùa»Ä{è×Äqä•DXƒàðÚÚ³g«JËŠ-dìHĉ\ ®-ŽWÈÖcqØS³í2k£ÕýÎF‘Œ8ÁTr•kèûØ®›êÎnЬET¦¿ê “OéO¶0=–ýÔ^·Ét—±›Õþô‚ˆÎéiO³£b,NX°õÁcúxs0`¨“2â$ØÄ{p=}Éáú º“~vaIv§=WkjªªÎ””zNË_cG"Ž@ò‘¤ †’ÚS@pTŒÅá<Ñ B °ÙÓ-r­dÄI@°Ïz½ÀdU$T\«A¿AwÒÂîaS9Š=Ö¶Ÿ55gªÎ—zNYÛ¾8Mô’ßc»ùâc,çŒaóipcHlÌ80ÔIq\6Ç¡|Œš¡®ÇÁvÖ¶ŸÕÕ•g*=%E'å3v$âÐV˜mØ“ˆ6_8ùˆëI¹b,ŽÞ+qsزª›¤‚b2â Ø­‚ÍölPÒý‘+×U2ÝÃ%%Û`³þ ÀæšI ÿ nö‘ò1Kq ½Ò§½†¬,z¡ºÉë`XRFœ„n €UWŸq½;WYYá).´±£*bâhžhâ$Ž2à‰Œ8<Øq|m“|M†(“46Ómë·WÕ¹s•EÅ…¹òSñhˆC‚í¤ì‘ÔGq3ZX1eÄI¸'ÏHÀu×ÛÙ³eå…ž‚ò`£8‚—@Pœ„~ $Èsy*(NBƒ]V|ü{ñϦԺâ ßøÀë-÷«Ub°Q>(NBƒ KðÂbµÕ%ªïŒ_=[§ž«óÇÎÔ˜Ó®šúºš:õÙ3§Ä`£8}PS°¯I€UJÅ‘Ÿ¢¨€¼¡ï±lyɰ$*ø Ø.üK‹‰vèa´@°lTÀ… Ø.ìÔhg¬?ñ@°lTÀ… Ø.ìÔÄÏ'èa´0ûŠqžÎó«:¦Ÿìðp¹¡iÇ ¡¨@"+0(Wéó•Â~Ýuéðã—O8}ɃÇ.œchÊ=' êrÊ`IdCtR16«§6«šfrj§Zmµ³ò°ßTmóÖE[=3—âÖ¡VÊ›¨çX½cæ­õ½#Séý…Òõ/J§7¥óZ¥ë{A{¿yƒü*ip”¡I΃‘Æ’™yhV‰±ŸAç-bÒ:X«ÝÐLÅ4SÏ|¿Ù)¬žÚ´¼u—dC…ŠæTÌ8UX~G ÂÕ”¸¿hÁ|õÁþ韵ÿÐPTÀE üì{}Sfd„IEND®B`‚tiemu-3.03-nogdb+dfsg/help/screenshot.png000066400000000000000000000363761220314353500204200ustar00rootroot00000000000000‰PNG  IHDRmoNð|sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<<|IDATx^í˜EúÿàÝãý=¹ã‡'‚+ADðQâJ‹¤%HFâ’ƒ$A ‡ˆ"¢'‚z„E@@’ ‚ˆY@–¸ËÆ™ÍiÒ&ø¿=µÛ4¦Óôôô¾û¼ôôTWW}«ê3o…®®”™v•býým¼«R¥*pâvquút•Je_V«AW¯BÝS…*)…+U©r»ô6Ur‹ª\™ªLQ·Êc)ø§HZpü“¥@¥"YÁ0Qà6»jÁqé]Â’O i5ª¨„ªækÃE•©j÷Ðç¨ÚŠ}¨z›¢îñ¾‡*¾M:2¿ªvWTÀb•úž«6ÙY}niÍ%·ÿñ:mõWÜ~ìÝÛ-VßnñïÛíÞ§-|m?5M¾bâW䫊!›*œ$­˜ù—´k¾Ñ­þn€ªM/¡:^¤ZüÌÐ˜Ò RyT@¤òô¼êóoAP%a«nƒMžX{Ç+ÄØ'ñ@L¥4[b$Uä˜à€¸¤u3'Ù‰3ÁÁXõY¥`Ô°ªýE‚àÈ«TçÓTÿ$jÐõJ3À¨ÉYÄ€)UfºªÌ*²PóJ«Ì½ FŽá_æ$9 '«Í¹î ‰† è®@¥é·Ðä+úC`ÒxI#%V)ª¨òÄÂ*SœU&æUë¢ÆäS/øþ‘ËΌͦˆÌ¤ÿ…o#Ó©a´Á°ÁÉT×?¨ðXš#Ë—§9Òçwê…ø;6:•ŸF˜4!F3EÄèo!MŒM̃ô¡¡¨€éx1³ ظŒJãÒ¡ F½J ³Ói+3±A‰´õO«Kõ»Jõ¼BDZŸ¡jïðù#-OÐ_G]/3Jš”9)Só)ÆÊÝøŠ&›^WhrH£F¢¡Q0Á1‚ &ÊIQÎ 1  ‹„Ÿ-3€Ðìï›|ë|†HÄ8Bú;ì.a}Ü–qéÔè4Ú 1¼¡¡¨Kª/Ø&ý'ÖU|[á\×’¥>’gTâó2ú'U˜0éýT[¦ò”¬Œ¯Úþ,톴ø™æF“CT£>Ž4Ø&Ä‘¶?Âp„a ©tHx‰ñ”ð@BÆÄ¿ O;4mÒ‡i±¶Òy¼cW{"ÿåŽxÅÝk‰«ËW·E®gçÑÖ~mOMw‚5r6žà¬7*§Õä„‹7òáZ’k­‘ÀHh"E‰±ïÌK{ylêœH{T„mR¯”q]R^ì–2æY°ä‘íÁ’†òøúDâ쀔d¾» gëÚÜmÿÎÞ°"ãÝ—ÒWÎLmJÚòIiKÇ;q,íxixêÜ!ö™ýmSžKÛ1!²åùõöinK/*óGšþ*Àº C$/Ä·iÓæÕÙ¯›?ŒcFv‚óŒ-š½H¸/ƒ®‡RT7ª xaˆsdâZÏGû 7*ZõUá’MÞ¹¼3ÖJ¼ߣQ2î]Ϩ·=ÃWº¾áîûŠ»ëBWë™ùÇ$ÿ½Çahù G4EéCs$mùÄÜíåíÜýéªÌ÷—d¼37}ÅŒ´×¦8^™(I{yœcá(ÇüáöYmQ}S^ìš8¼õÅÞ¿zêïtJ _yäW–?. ŸÀ€ Ücpr›V4G€S>™Â¶æM›ó {4wF¹•âÃW0 {Ó ywWáò­Þ9{£>ôNXã ìxÓ3øu÷€WÝ}–ºz/¥{:àŒ´›ël5=¿É¸äÚ½¾£[¯O.­‘D$Ž8æ‚äl~7kÝòŒ·ç¤¿•¶l‚cÑèÔyÃSg ¶Ï`›ÒÇ6¥7ÝÓÛ1yd»„!­.öm²ó™ÚtJž¹Hጔõk8ñù#‚ᜬ G#¨€L |ݽø¿Þ¥›iˆL~ß;:2+<ƒ^sG¼ìî±ÐÕyž«Ý,g›™€gËéÎӜͧæ5Ÿòpߣlް#ñ;bˤœ#©³f¾¿8óÃ¥ÏÙ!žÔ¹ÃSg ²M‰H™Ð#eLçäí’‡·óßíJŠl?¨ùýšîj÷°Gþq”vQÚƒ?K;N‘6Æj° ¨!‡#ë8³ JàfÛO¹dê `÷±CˆÐp6-UéÎÄ‚)½ ÃP6*d ê!Œ­Â˜ÈlŸ'2~µw¸!¯z"=º;͈¸ZÍp6Ÿæl6ÕÙtª«ÙTדSó›¾h+ãˆ/ãœHür„I9G`l5cåÌŒ·gƒ'ÂDâƒHÏ”1"ICZ1ç“6‹øäB)gŽ€‹ÒÉ7i ýíH[óæÍÙã ̱ Gèu,Ãe6Ì~ä‚îݰÏþ¶½þ›ãÞq(>€UÊŸW 8;sÃSí‰-ªýÆÎ½1Y¹Þ¿»&ž•»ócS‹™0‘³Óª7øOs·¶ŒÐ4z,vÁh@dâ{ÞÑ«\Ž0‘@œ‘Ð?êœHú”GKÆ:`vþ?"uæ`0r" ’ú<šÑ0¡ÿã—ú>þuÛ‡Ê8òôUŽÀÄ2¬þî¨]»6ß“ÎùÙÓg—s$“^u?Üë W¶|²å,½Ÿe ¶Àï<|ÿv}-‡|EÒºþˆÛçÐgà˜9É\.x‚m?åÉ*(…ƒ#¼aÓ29w$·¢Uîv޹]\|VÕæ;™[“0p9;=$Lr,–6Ád@ÏÄ‘ÌòÆI'~¬8 @•è0× Ó10)3j=¶ ##ý^q÷\âê¼ÈÕn¾«Õ\WÓY®Ç¦»êG¹™ê~tŠ«áÔü†ãíö9ÆÔCN$ðQ"ø– ø#Ép>yT˜Ž¡'eŒ‚‘û¬A¶iý|ƒ”¥<_?¹ï#É&>ß0¦wÃÝ­¼Ãâ’ÀR4zœF\ÁKé‘Bw;}Ïá4nܘϑ=_îás¦~ G|. ’®ÿÊÉΡ»6qÉpLžêYðyœYµ%®Æ#k¡±dåÉÊ=ÏÁy’Övôœ|¾Zÿ ‘)¯Ÿí¹6쌃0‚'™kõÜݶ×&|ôTJ¥çéðŒ‘È#œ3p#ærø6j=¾ñË+$s¹ù¸r=Î2ô¥_HÚV}vWxN2Ýþï©O?oƒø9 c'²ìønæVœvUÑr µ¢õLç€×ÜCWÐÂ+päewçÅîö ]­æ»šÎu7šå~t†»î4w½(wXTAØx{­çîâ;ˆS"ø–É€ 2È’<¼uêŒ޹C0A3g¨}æ@z5Úäž JlC›Ú5²õÔQ×Q/©_ØåçÂv?]‹æHx,ÕîE\˜¯©ùÎÝ!OòÁ#À¬u"@08#Ì‘±yUÆæÁc‚´ Ë{`àGOÄ“ÔD¾gbô°+´ÌªOï‡Õš~~O»ïà€i¥Uºœ®Üói~¬Ê³'á†Wª¶Ø%x’}m¥çËîU½ñg$ÄX8Ãþ–¹ÿ*&Ødt9]Þ—&;$¿íºo¤Ù«7\Ùa' +¬P+ZNsöYæü†{È¿<‘ox`æ%âUw¯eî.KÝ–¸[-r7[àn4Ï6ÇSg–»Î w(gqöz§[oyÅfGBsD<ø– Íú2ipKÛÔ>©³§Î☠Ó7öé DÈAjd£Ôaö~uìu’ûֹܣΞ§ SÒ>‰jŸ@s¤þeÚ¡9R¼‰¥ý¶$„)JpµÇO¡ý‘qn0úAcxîŒeHúÆ/¯’öV¥ÛÙ;–|[nœóœ<ÀÇ{ë¬< 1°¯ŒŸûvЯ¡ ¡Ëá^œóìüÛñÃ3aÂfÄ%äÀÇí'óá˜e<Öªìy²Uâ‰INXÒo¹ÿ 7ܯyz-ww]îÅýôRw³%žF =aó=ÍñÔžé©å¬5&õÿõüÁÇ:ïœHà£D$ð-7’È­$uÖ ûÌL[KNŽo¹òƒÃýJ¨Ò»ö•.µ¾iñÿè”tvPi”<Ksäïø8Ÿiޤ—AdL~¥ …°=o‡‚"bÕ¢ ý:Œ%„&l#IöÆü˜  e}2Áà c‚'!0Óh9ÇÌ-Ö£G( BÎt[E÷¶VðS°ø—ïH2ØÑ²?²³aó¯­<ĵ˜ƒI"8ædœó± ÁÄhÖUêCÃñáóœ½^võ{µl(óKÙl©§Ñbï# =ÎóÔšå©9Õyÿ(ÇŸº§[¯O~$ý^s÷yÕÝs¹»Ërw‡åîg–{˜H 07àHdœOèÓ0yt¸mr/ûô~öýï@dJ—Ô‰ãïÌפõÐÑ·VJÏšW;Þ¿·ÙŸÊ8(¯äGÀ3¡9’Þí‰D áù8BdZqå¨[ð/ì¤&ܯ™Boˆ—€­?Vræf)5¶0l~!Ü\¡}.ØNg¾üÆQ8¿ý·’•û‹áŒixä#l⋲ n‘`‚'9×râ!±ÝåÍÊ-„ŠÊ}¯ÁGHUV~1Ý·j{˜}9Ü‹¤óÞ:oÃy¸/|¤}–»S‰ó0”CÂHxö­™ã#—ÊòHˆCB¢¡PêŽ*€É]x6ï¹—Ë~´¸Yæi¸Ä[w¡÷ÿæyÿ:Ãsß$矇§VëìóGÊë$'’Þ¯xz½âî¾ÜÝùUwûåî§#å‘ÀUÜHÀ©‰tÂùøîu“†=“2¾‹mòsLìSº§Nîœ:¡½cüÓ飛1çÓzÿÕÞí¾+íÿ¼÷‰jtJzæÐÄ (¡÷ „p¤<ìOs žBbÂþHÔ- l¯FM, [\òݯiôï°óÖ[{t»}æàËâõqЧ€ó±i¥úì«Úþ0œ¼óîc  ÎÇÙ<·û˜<ɾ–‰íѹy¿_ §{áoûé’ÿkµéÞ‡ß&_‘“$Iö;˜tF~DcþØÁhWeBá†=Iä«U_Øèð¼,0É`"9_Úä™™›’8Ñ´(@- ]ƒR{xÁ“Sœíæ8»,æH“¥ÞK¼/ôþ}ž÷/Ó½÷¾è¬:$µrÇã>ŽÐy— Óþá€ÉÈBj¸ÎßìT;qÀ“0Å (q8gì»Ú'v¶OO߯1¶eÚÈ&éÃÀyÏ·›ÓzýÅÖéÞ+ÏTÝóXe:%À0àH›tzu|y¿&‰ê³ôÖiÀD`#FØ-‘l˜Èy †QªÌ¼ F6z Ð΢¬ͶBKƒöS-ü(9 VµÛÉ~çá_CN’þ †ƒ 9ÁO²¯åÇÃ$¦zãäÛê-wTžà"ç™6O’T­Í~& ÷ô»$3#_±ó%˜‰îÎd–M•0´UBd‹„!-‡<™Ù$ePÔþõl}´õªiëz_ʳÕÚT¾ðOê«úTGJ€#eýš»9BPR6¶:½„l žmws„ìê,††)æ<`8b†äUðÖUq²oË.m<:¾æóñEƇ½Ôpdb£Q F&Ö6:©îè¤‡ÆØj¶ÕeÿËÛ½Ãì÷ ¶Wê—Duÿ£^¿oŽhŒ„vjƖزJ®ñÙ65Ï>ûPt·°èž £{6ŠîÑà|Ïúz„]ì^7¦ûC1]j]îT3&ü/—ÛÞóô=šWú± µ£C=š#œe. á=ïËâÙ-šŒÞ LÓÀÈÈ]4™[Ö̓H¨T ±®P¨¤Ór LþÌ}þz^ã!'ïëxð¯Ý¾ ûwë~øn‡kv?Z³Ç÷÷w?v_÷þÔýDn'a`µJÇ*u„™caŽÀ8«o|„¬%‘KËh£ØÞGbåc®0þÊ·²!‰ò©bfΤÝ?¦\‘U'CKf‚Ê9ß®‚kɽÔGòqAÕqzÒgdaÕÑžIÿ¡—¢(ú³e–Dª>Ÿ×øËñqÞÃó¾eÛÒú¤ù^Zqgã|ö›%¦Ð4ƒL’¡xœáS¨@ÏA>{‚µK‰0;ãX…9zù LúuSÃ<´ÁA¤“ö,ȿ䀱¹TßX±Vö-Œ†ŽÝݯIðMý&ÐÛÉw®Ôí<ìÕJo×Z¾ñGÀe†)^1ˆ”––Ì~·Òñ±ž¸˜³¬¨¤T'X#~ý,¿i3‚#º°SÌì†pà*ížháßmñ«80Lù!Cx0ÅË ¬Â˜tgÀˆ={Mb¾Fâ÷Ll@ó §BÕ aŽèÂNÁÖÎq8ý ç‚_ö~{@|`¡¢¢y‰|Ž@ª`JÖ‰À/ÌÎp 2vÅ6±õ#rz1‚?6Ú4&˜ù­UÚÓ,A#ü]Ø©‚#‚”sU8?ü_ iŽ SŒ„Ì{)â³Ä ¦xavVaLº3æ_Ïj†+àH ûhg'§·ÉÇ9û—Al‚ÈtU]VN<0ɬâÌq„¤'ä–\›$Á~8òl,õðfªæjŠz0Z GBöÔr¼E PÁ‘@'ɪñÄ‘…½UK½‚ä 9bXAÊÃr…7B@äˆaÕ9‚ûXVärIJ•Û°¢Å!G «è °,«r9bÙÊmXÑâ#†Õþ¾w°RÁé¢rDåDâoZU·|ýrDŽ Æ< G + äv ,«rÄš1É^ÃÄÅWäˆaúä0ëâ'­ÜºãÈ©øÄø¯ý:õ/Lû”a€7 œÈ‘Àiˉ٠ŽÀszC—~²ýðI›-1559=ÝNöŒÙw2zäk[4nêÏÚV]BëFÈÃÊËŽ}ø!{Æöè–Gj~pÿú_?ˆ””=sM¾?¢ˆ#†éˆ72¡Èà ÅŽÀØLñ’ׂÀ˜tgü§Áúß>Ê.Ȉ”––Šmê¯Ý1LG¼‘ @ŽV(Fp„Ì×À¯ïU©ôÀ*éΈHoê/¸™5£Ž¢ÍŸ Óod#†„ÌÀ X'S¼|ˆHlêOTÞÒ™à„d>¦#ÞÈ„ ¨àHÈ-¹6I‚ âÈ}ž×î‚ÙX…13oêoÂVIRª€"ބܒk&ÁÞÜ /9‡÷ëEá­€AY#®ˆ#×jEe׈Œ,N‰ˆ˜ð&a§ÒêˆáCTE è’ë@ Ž\²aÛã 7’’n2/9‡· ½4®Wš`ÿ©{gÞW+G”&ãZÏÕK®Å:Ýœ!<±ºêÜ‘ó!Bf3à­€bkÄ%F 83¡~ב³±ìSóªë¨e.”ÏÕK®ÅÞ¸Æçˆ¾ë!!ÁÐáx""¾Ù '¼dOp¸Ø² ΢ÒÔ"G#–U@>GtYr-8{È>©# !Á0&Âîΰ!³ðjQ¿k²Ó¦.ÁÈ˶"kmˆF%Ÿ#º,¹6’#`XeÆD8uð~b¿kÄ¥9b¢~ $*`Œ·oßæðN>G´,¹–xÚ‹Y” ¶4A5 }Ôχ,gº3d]Eqq¼ä\ÌK0»kc®~ )HüCŒQ@5Gt\rÍFŸ#œaÕïDJKKä¯ç û5ØCAîR@¾?¢zɵßõÖ¬èÅ’`˜âå{"‰5â~¬.… ÆGª·Äy_l¨¡¤€|Ž@ãQ·äÚo³›LUí‰0B‚aLñÂì Ó!‘X#.˜`NO‡q£ä'ÒGà½åëGŒäÈ*XgäK‰!ͦ€"ބܒë; ~o'ÌÎÀÀ*Œ‰k¸©9ôz©t´)è Æø]%½ð:ä–\›$Á†rÄ$yÆÆVAPäTM”Mƒ8¢ô!(“8&IF€ÊÞòÑ"G +bƒ8b懠†Õ6ƒo„1Lp#8¢â!(‰IlÎ2;E«îe•à"ưŠˆ!G¡ª`œFpD—‡ Ä¦µ9ój*„CX¨-$.AŽVL 8bä{'$Vþs¤\ÇÃ_,¸.XGˆÃ*b n„ „ªªü‘Ø;ëGTsD—‡  õ‚­Zš#|:ˆÑî×Vfx#™ Gd ¥=˜?DލxJ/D>GN!P´×*“Ä€1¬ Œàˆ^AÔäˆaÅ€7 „È‘@¨´~Ї ÄækŸ`2&ç[9ŠD„† ÞH»ÈíÊŒÁ’¢ú!(Θ(ñØ'ýÎû Žªuø´ÂU™õ&$‚!G +&ƒ8¢ô!¨ ´giwư"Áé¥rD/%ýÆcGH:Lþ|MPàå·„0€j#ª¥Sz¡Ž¿o€ÒÌèÉ¢»¤FFˆ1LmSs„=~¬cÃJo¤»ÈÝ%‹Ð¤1,ÿx# +€1¬p‘#¡´Q aÕÂ7BŽVŽÈäˆe@Ž G,[¹ +Z¼rİ:€þ˲ G#–­Ü†-ÞHGL¾Ä‰_¦&I°Dõ¾LæM’gl`DEa–\Oxs3¼‚Þž /¾„wÖÁë¦à©øÖl¢™*Á~8ò,ì°™ª¹š¢ŒÖÂSåÙlÓ q`¹döÇn$%Ýd^Á ffi×MÁ·J¤êhM•`ƒ8Ð<Ë\u*3˜êrŠͦ€|ŽGÒù!¯à†wÖÁ·†ŸA¿Ï‘’KøÁ4j¥=ÁLs icÒÃ|ôû,; FpDuž9e ™€Ðx¹Æ‚ÇËW@>G`‹èÎp<‘‚‚GÄΰë§þ"²kˆßÊÆ (ì¢]@Ä Œ#ì™p˜Çº»WÁíP°›´Ì‚6§¨Ø*ˆ%€CÁþŽ˜£Ä'—XllŽ€VZ&Zy‘^?©¨ü6É”¯Ø–XµkJ«Ÿtø© beÓgýYÐFþýR–ݤÙûmçˆÈ)QiÈÁ¹¯àÿÖœœjd™¡•‰õ¬‚Uf#ç×dNq Ö=ÁŠä÷gL0I&¬lz®geI¬óû)b|á8|ÀK§_ŽH”½ßú$°@8‡§ 䬋—®~üšÀîðúý…“pp˜ìˆU6±½ ¤B}/1;GÄ ’S„„ÐÒèaG¥´öp’!ÁÎWú–ƦHÀqDÐà Að£ßŸ(~Å<Ã!TÐábGØÝ¾ l¯O"$߉`DއÂnç~¯å8|FˆÅ&öK¥¨`` Èä§î±«Ÿ`³çühñÃ+0û.œzÅñq¤ÀÜ •-PÑXðrT@»r8¢ý.*bºû "ÍÒ— G´.ûÕ½H0B½@Žè¥¤ßx#ÈË*`ZŽøm–!9bÙVruQ÷#Gt—T,BärIJ G#–­Ü†-Þ9bX@eY#áHh=‹© Ši©1)ñçãN'Äþ&f±—ä.Lºyb€x8Í9bް—Üà1*ÀQž¥ØÏ/Y÷eáoPæ+µZ¯L~k“#å"rÄ0pÈ‘š„Qü¼¯à³•PoBëá.L­a @%ƒ{7‰\¶å‡è8·Ž‰wÀµ/¯ÛŽþH° ÷ ìøÄŽQÑ6*È% GÀ9~.ö–Ê¿Òãçn@ Yé×åüHJÔø ¶ÃP¿µ)))‰‰‰Y¿~ýš5kV¬Xñ/ßß¾}û\.Wi0˜MAG`€ú2¥¥%`¾¿bEV\\ävæC 9YñÈ‘`ñÈޤ¤$/ZüÒÚV¬ßðîÿ^ Ë–Ï;nØÉŸN”––b«° 0þP ˆþ+Tn^—3?7;bÈÍN09G–z8$LN…”#5k|$Žzx3Us5E=]£…Ô{°ÄÆÆ¡_óÕW_Ž;üòµc\9vñÊS¿mŸ5gÔš5oçååÉI4†±¤lŽx½¯×­Ô<WA^vVº=T8bþrÒA"íÙ%ço–œ¾ZøÓEÏÑs…ßžqøÕ³ïWמS±¶BÁ‘PþI92wÞô½û¶\ˆ9tò—ÿüõóS§·ýrö‹÷×-yqâˆ_~ù9999õ½^¯ùåÆjW€Í·Ûé³Eæråçåfd8’#Ú‹ƒÄ@8IL¿uÝ~ëR¢(×JO].ùñb`Êáß ‚Ñž=;>´ÿðú]ß|ðõ7|shÝÃë7þÖ‚Å¡w3hPDû­ÃÃÛtìÔ®sç]ºvøì³O¡—,­ ßêUo‚ÏÝ!ÉWd.W^^nz†#9¢W9Ž€'¹’\z!¾”†HLɉ‹%Ç/”GŽœu‡#íÚ?õÛÙý[¿|û¿[W|ºù_[¶­Üô¿7ÿ»õÍ-ÛÞÚöÕš_´kφ=û6î;øÙ¾ƒ›Ö~¸¼_¿~†N`üž¨Ã¦9–à³BA/e1ž)p7GòÁ¹.(2§377'-=59¢WŽ;ï7ä\, ‘ˆq+ŽF—ù½„ØÑ³AòGkÜà‡“»V½;oä˜~mÛ5oÓöÉÖmžlÝöÉöZ´oÙ>¼}СE»öðÕ?›6kX¿~ý lß¾=-ÍÁçˆØ1âè¥/Æ£»lŽ|YAANN¶#ÍŽÑ­pGvýz¹ Bìà¹bÚ~/>|&H©ß ìðÑí/N¼æ½7Ù}èÈQ;¼cß/öîÛvðÛ3gM=rä[†ÄË`<æXÂûÀ¾n•+0ùåˆàò_6hÇ‘@lYFš¨ÉÿØa r%ÁåÈþC[{÷íüÅ—[®Ü8z>fo¹í9‰¶hŸûc÷™ó»~>³ý‡Ÿ¶~shýá}þ÷ùfé~ ¿¿ÃBÄäõ•ô±á_XÏ ½BàÇ8(á|›ŸŸ•ê°Åkï×pöL•Ã9aØó£‚1[Ee8Â@äÄ,¯DGÂc©ºšç}ë7xdëçëÞ~ûõ„¤‹ç/}söÂNÆÎœßAìtôW¿œýfs¾?±iß·­ýðåÑc†|{ø:Ž˜­lÌߤƒ’»9’ãtD²ùÆ´pþWùùYÙYv‡í¦FŽð‰ ‡rÂHs„ñ²ƒ¢¿àM9ýš_.GEû:5ªû5ºp$,¬îÆO×®[·6æê±ŸÏ|S¿`?ý¶íGßLð‰Ÿ·ÿiów?|vè» »÷ý¦r&N2kVTLÌ%Aˆ˜§RJ§D&GP¦‚ˆ (G~1,àœñû‘³X‹ãø1J9š—#uþÇî=[8ñ͉SÛŽûôÛ£}·ñàwþxÿ·ëa>xÏu»ö~ðåÎ5[¿xû³Í+V¬š;xHߟlŸU)G"A©|ênÊæÁpA‘ååefeÚRSâ4ú#ôc©åe«§X¯C"~Ûû;Ãß[as„©¨f«±$‘ßžñüvÖ¡•‚ÁÁ—ЏX|è÷’ÿ9£|ÞWäÿ¨}ààöÓg,¶ïzï‹k¶}µúÛßÙòÅÛ[>_ÀÿûÆG–°îå5ï/|ûÝù£Ç3fÔ¹s¿Ò+çØC­~ÇY9Ýiuõ¯2F6G`¤,//K‘åæfffØìÉ:p„ítȤ‡,~»9ްëª1‚˹ ß9y‰îÚG‚ܯyªUËï³~ãÊ×VÌXöêÔ—_™¼xÙäEK'.\2á¥E/Î}iìÌ9£¦N>qʉS"GéׯÏÍ›7Á¿OߘårÊ Ã0 ÜÍÚÿB‘åæfdf¤Ø“cµû#9Âx14 ­qV2ï ã#°ŒÕ9th·n];wî$Çzöì±fÍ»II‰ðØ–ß&‡ñ+‘™°9Bð\Pd99iéɶ¤&áÛ‘‘î×°mS•¾ü‘;«H‚8_“žžvófìõëW¯]»â×âân@xXÏÊ,f5•ʘ`sćt¥‹ÐÒ‰)I×|I”óªà¥ì.†Øø …9#ö•ô8+ìOGmUGÅá¬Ñg|¤ºÚç}a; xšÓív¹eüAÈââb„ˆêzB²9’™aÏȰÁxË1œFCäzBÜ%àH^v’jŽp. ÐÇ[‡Æ^ÏªÛøˆjŽ„PÍÆ¤©áHòͳ°Çêñ_N'Å_N¸y)ñf È1{ñÆ•ß~ÿ=ÄPgGŽh/>þ8+x%zŽ G´ÆÀV€pÄ–=iå¦Þs>ÜúõþËçOÉ·˜ó?ÅDŸÜ{è`¯™k£ÞÙârf G´W0‘]'Ý0Å{ì| ¸!?\(ƒ£ï=Sôõo…{O)¾†=﫚#ò1Z (U6Í~ 2²ìã¯Tï?}õÿœÎt;9¢GvœpÂ’#çŠ`£bp Ùó«gÏ©|¸‹©ËFšzåQÚ9¢=cƒµ€ý™akÕ‚¼T·+ËãÎñºs½®¹9Æ “_èÍ÷zòr²nÊ©ÜAÜç9„ÆGn${ýœ÷íoù°k18ÞûK@äZ²ÛhŽX೺ ˜í=X!±9«LØÉA¶nþHèVAL¹0G, ©Xü쯱_caá0kæW9bX!G,û–lÃêio„1¬hüqÞ;±©ì½*æk ËÞà+€1¬V Gб¬È‹p$T¨1J0¬‚j¹rD‹zŠ® ¬?"sÉÚë#¬—;(VE•,XÍÆ¥°Vx95VἯ¶ñ䈜" ¹0Èud ‰æ@©ó{9Ñ#!×ÊŸ`äˆå9¢ó{9‘#o•¡wäˆå9¢ó{9‘#¡×ÊŸbäˆå9¢ó{9#u5¬ b‡·\ O#–çˆÎïå´6G5êX#Èùo{!!Õ5EEWi™¯ D ƒø³*¿ Ùûéö^Näˆü¨8!ùÑþnE€XG8[´r8¢ V8aîhªšÃßçY÷rêÚ¯áÇþH\öËÈ·ŒÄb׊…|9ˆDLU–&OŒF޶IÁ–%|9 [>Gø±É‰_&Θ`lŽpê­yJœ¿¯¢ïåÔ#œNÿ#"l|°ùÂó‹A"~¤#1OAš?%âÓÞHVêãhy¾F‚#ìÄðaGÒIþH$$Ö¯áTÝàV€àˆƒÝ R<¤Ù³ÿÄÈ"?rDߪ©…#bÍL5øa¤=ùþˆ8tN¤ Ž05\ßÒáˆÞïåÔÏ!yc£[ Äp¨ÁÄÃñY$âGŽh©Xük-ɾ7$ms!êèñ^N½9"Ö§ÐâJpÜB9Ôà‡Ñ·¥Y;6Õá79Áî9)§ëèöªüú#Œ"‡&!ÊÞËùl¬nëG˜Ž‰àÐ)Ÿ—s9Ÿ;~°ûGœ4X»Ùëž;uó¾‚cì†Ê” ¿ƒ L%Šú5b£3l¨It¬(áH;ນüùó5:¼—SGŽÈÏ †4¹X‡&ç÷œÝ,å„—ÏabþC>ìȆéBó¾d|D·÷r"GLÞ¤ƒ’¼ r„ÓŒѯ‘ˆS¼$.¹uhº½—9”†jò›‚#J×bÈ /ß‘›ôœ®œB‘#¿\.Ö὜È“7é $¯ÂrD,¬áèü^NäHPªÉoŠQ”òGt~/§vŽ€vhÖS@]C2ø*Ýû5ÓBÑù½œÏÂú‘ÍøÞ Ë±a˜ürr$$~Qä¸Ãœ¢÷³Ï3rÄäM“§ûú”T…Èô5,«€Ùüí3T.AŽX¶…J \:‘#Óû5ŽŠ¢r9RQêºa%]o„1¬Ðõì×@\h¨€©€©¾nªZ&1|©‰òT¯<Š=_S£ÅµZQÙ5"ã!'g®àÆ+À©®Æ' âÜQ ey¸ü½Ò1̃¡¨@)€Á1TЪrD«‚!ô£IE¤r9‚  Z@ŽhU0@€ÇhQRÀG,3_…APÝ`¦ýs¤âLhaNQT@©w­aæ}«·¸*±~$„-L**€ ¦í„Ã{'îì?‚ÁTP¦rD™^†o„ „Èä*€ hU9¢UÁúÑÀ¤¢R9‚P -5&%þ\bÜé„ØßŒ·ØË?fLî ³I7Ï@®!ïÒ ÅáëƒAŽ(ÍÉžx~ɺ/}ƒê0¿"X­ˆW&¿µÉ‘rLš#(r©!KøeˆD.ÛòCtœÒ!>&Þù}yÝv¿þŠãŸ#¸o@€:¡-4ðDŽŸ‹½UþJŸ»¹ÎJ¿.]X(Ž8Gpÿß¶NhD,€¾Lii ˜ï¯ØòV\\ävæC®s²â¥«ŠƒARÈR~r¡EÑ…ü.g~nv:ä:7;Á¯?‚âp$*gE–„#^¯ÇëuWóx\yÙYévùAqØ(AŽÈú}®hý·Û鳞˕Ÿ—›‘áH’Ï9‚ìð£@9GAò-o.W^^nz†#Q GPœ;µýdŠ€åɇjhcf0Š¢— §377'-=5A GŒG,ïÕ„Q[Ž8ÈäHÀ9Õ]{׃†ä4Æ×²ì|Ió‚ÿm@5ÑÄ‘ê-¥Þ_Sц *l~IS!5 Ú˜F#щÆ$./(ÈÉÉv¤Ùø#:ŠÃ$LL%¥çõJŽ8¾ýÐb©‡™ýG#8q“vUGŽ0m€}@È"}†ÓºøIr^#§ä4Ž?PŽðõaç‘ù6 š0úË9‚ýÑ~ ©IP´Ôur9ÿ€9É|å÷Œ`HöIuIÍÏÏÎÎJuØâåè"[Á\“üÅ.dBjׄQRŽ8ÈäˆGrœN@@¶óUh:þs’ùÊïöO1¹Š}­êtæçgegÙ¶›J8¢ƒ8le8"09åh"¨[½4aÄ”#r9@Žpš=¿å+=ç†õ8"FU9Zq­¬ì ‘#È• ñR™ ©6¨úìkÉGöI¥g¤¯Uμ¼Ì¬L[jJœ|D»8|eȱ<*ÕJµœ 刃þˆÊ–fí©œ s„4'æÝºØ'9­NuË‘ÓT8ã¬ãˆXÞ¾p”a‡ç“Hµ&Ì…rÄár÷ °6 dæŽpØÀòò²,o¹¹™™6{²ÅÁuñèƒÈZO~‘àçH_㠚蹺Ørs323Rìɱòû5z‰ÃBR—…À]%G\ÏŠLg%Uª‘å-''-#=Ù–tC>GPôG²ü>Ò+‚ÁbÖtGbJÒ5Gåì?‚â G#²8’™aÏȰÁØ[Õ ƒi4D®'Ä]Žäe'ÉኃAŽøQ ùæYØ?ýø/§“â/'ܼ”x3¬j»øØ‹7®ü~ðûï!×yviŽ 8¸¯"D–¶ÄèI+7õžóáÖ¯÷_>ÊÚsþ§˜è“{ì5smÔ;[\Î iŽ 8ÈY­Hæä¨…ƒ¥Ù/Aî–}üU…zÍôÕÿs:Ó=îlé’Eq#ÈY À»`Ûô‚¼T·+ËãÎñºs½㬨Èm˜±ò•_èÍ÷zòr²nJsÅåÈøÏ3n€  j([?‚±p'³† Zäˆ,??ÐÅ€ñ£!­r9‚  Z@ŽhU0¤F0ñ¨€. G#¨* UäˆVuÁ9F‚ „´y` ­VTvȸêϧ‹}*€  DðXªÙ1Š=ï{_Ïë÷ŽÿÓs×îé|ŲgãD bÔÝàÕbG‰šº”ˆG(‘ Ý‘ˆ¾’PXeJ$d4Pa©|‰×(#«Êê­ª^©Ï—ºRS[ ZŸ§š¥ên¥j®¦¨Z_Su7ùlsùù¨ÈàZ1S+0pN…I$["6ÑÄo–JƒÄURÉ€8EÌæ"‹%v/éó*Ó¯*…Êj»:é^ëtPUå—(š@Ô©j,-ÈVºÕ?´ÑÇ‘¿}Lÿ‡†  ¨€Zþ?ŸÅ›Úe›IEND®B`‚tiemu-3.03-nogdb+dfsg/help/skinedit.jpg000066400000000000000000000712251220314353500200410ustar00rootroot00000000000000ÿØÿàJFIF``ÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀN˜"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?Ëñ.üUªM<’;iâOôkVáFv’¹ ¾ Éç©ã¨Åsøô·'Þ1PøäƒZ±’$ÞÃ<`ž6œôç¦kÔâ¹3L­3ȰÆÄ²Ê›6œ.ÝÇë“€{¯áõø¼Â9|£B4î­}íßËÈða‚x§*Žv×úêy¹¿Œøô¶ÿ¿B˜u(¿çÎÛþý íüQtÇÃwvÒ8iÔFBr>e “œvçØsË'†­âÐ,5mCP–Ú+ó0†D´ibŒÇÀ°;”±ªÇžÇ8<Âz^ÖQåÖÝ_KôG5l ©Ô䋾—íú”?´¢ÿŸ;oûô(þÒ‹þ|í¿ïЩµOÏböKmç^.-NMä£îÎy< ¼±ÇZn¥ \ÙÞÛÙÁô÷kÒÆö2DÑ»¶Ý€0Ëa¶Ã‚XÍvƽZÏÐÅáæ¯u±ö”_óçmÿ~…ÚQÏ·ýúhº¬—ÒX¦™x×q®ç·XÈ£ŽJã r?1LƒJÔn¯%³·°ºšê,ùÇ 3¦T Œ+Nj}ÑÍù–?´¢ÿŸ;oûô(þÒ‹þ|í¿ïЭm_Á¯¥Üëé-åÔ–3[ÛÂaÓÝ–áåJîRB/SÎF:ŠÉ×ô+Ïjòé·ÁL¨ƒ mŽÎT2:Œú‚;VT±*´ ïøõEÏ Rž²Aý¥üùÛß¡Gö”_óçmÿ~…fQ[ò£.SOûJ/ùó¶ÿ¿Bí(¿çÎÛþý Ì¢ŽT¦Ÿö”_óçmÿ~…ÚQÏ·ýú™E¨9M?í(¿çÎÛþý ?´¢ÿŸ;oûô+2Š9PršÚqÏ·ýúiÅÿ>vß÷èVf(Ũ9M?í8¿çÎÛþý ?´âÿŸ;oûô+3bŽT¦Ÿöœ_óçmÿ~…ÚqÏ·ýú™Š1G*SOûN/ùó¶ÿ¿Bí8¿çÎÛþý ÌÅ£•)§ý§üùÛß¡Göœ_óçmÿ~…fbŒQʃ”ÓþÓ‹þ|í¿ïУûN/ùó¶ÿ¿B³1F(åAÊiÿiÅÿ>vß÷èQý§üùÛß¡Y˜£r å4¿´âÿŸKoûô(þÒ‹þ}-ïЬÌ{Qj9PùM?í(¿çÒ×þý ?´¢ÿŸK_ûô+3ÔcÚŽT¦Ÿö”_óékÿ~…ÚQÏ¥¯ýú™j1íG*SOûJ/ùôµÿ¿Bí(¿çÒ×þý Ìǵö£•)§ý¥üúZÿß¡Jº‚;[;fbpˆdšËǵkøTÅ_¢ñÿ/ðèÅ©£+l8ÂòJæÉеE~Ÿ¥Æ{¬—6èÃØ‚àƒìi§G¿mtaÿo¶ßürµ§¿gµ‹¡!aÜ_HIR>•ÇN¥ivûŸùrÃÒW÷ÿÀ!šÞî È-™jòÏþ§ÉT•díò²’>‡Š¼t=M~õ–¾ÆòØìõkBm©§¸ê%Õ}?Ðã®®Ñt+4]ë7³Û3JÑÆ"\‚TžŠ½XUÆT…­ü›êÖ×ò.8Jú¿¿É™ÃýzÛh£þß­øåTû5ëêcNM*Ý®ˆÜQ •ÆwnÎݸçvqï]–³iái4[é´RîæîÝO.DÂí2*rƒûÞµ› IäýÇm¿ôâk:¹„éáå[—kèÓ[+÷4£—Â¥hÒRÝ®·ÝØÉok*yÓôÆòÛÿŽT/ jÃ?è:8ÿ·ë_þ9]ù²¶™,ú|†MB´¶¤ ²v)ëŽãÿ­œéðéVPÛÜ\ïÕŸçšÀ) À'ûßçПš—ã"¹¹#oŸùŸMO†0r—'<¯Ûú[yœ~‹ã]GÁzò Xm£›míÎÖS€Ä! oÀÖýKþ!ñ—¨¯šÖyj—wÙ3o"™^^óÊ m<¶:qXþ0»´Ö|a¨j–RoŠìBø1²´x‰T£d`TýÒÑÍYÿ„#Å¿ô?øÿGü!-ÿ 9ÿÀ˜¿øª×ð$¥ËM7]’ÿÛQž.¬\]7¯“îßêsžGµGµtð„x·þ€çÿbÿâ¨ÿ„#Å¿ô?øÿ]ßÚ?ùû½TÄÿ#ûŽsÈö£Èö®þÿÐÿàL_üUð„x·þ€çÿbÿâ¨þÐÁÿÏØýè>©‰þG÷ç‘íG‘í]ü!-ÿ 9ÿÀ˜¿øª?áñoýÏþÅÿÅQý¡ƒÿŸ±ûÐ}Süî9Ï#Ú#Úº?øB<[ÿ@sÿ1ñTÂâßúŸü ‹ÿŠ£ûCÿ?c÷ ú¦'ùÜs~A£È5ÑÿÂâßúü ‹ÿŠ£þÿÐÿàL_üU?í üýރ긟äqÎy ×Gÿ?‹è ð&/þ*øAü[ÿ@cÿ1ñTh`ÿçì~ôUÄÿ#ûŽsÈ4yº?øAü[ÿ@cÿ1ñTÂâßúü ‹ÿŠ£ûCÿ?c÷ ú®'ùÜsžA£È5ÑÿÂâßúü ‹ÿŠ£þÿÐÿàL_üUÚ?ùû½Õq?Èþãœò A®þÿÐÿàL_üUðƒø·þ€Çÿbÿâ¨þÐÁÿÏØýè>«‰þG÷çhò tðƒø·þ€Çÿbÿâ¨ÿ„Å¿ô?øÿGö†þ~ÇïAõ\Oò?¸ç<ƒGk£ÿ„Å¿ô?øÿGü þ-ÿ 1ÿÀ˜¿øª?´0óö?zªâ‘ýÇ7äš<“é]'ü þ-ÿ 7þLÅÿÅQÿ?‹è ÿ“1ñTh`ÿçì~ô?ªâ‘ýÇ7äŸJ<“é]'ü þ-ÿ 7þLÅÿÅQÿ?‹è ÿ“1ñTh`ÿçì~ôUÄÿ#ûŽoÉ>”y'ÒºOøAü[ÿ@oü™‹ÿŠ£þÿÐÿ&bÿâ¨þÐÁÿÏØýè>«‰þG÷ß’}(òO¥tŸðƒø·þ€ßù3ÿGü þ-ÿ 7þLÅÿÅQý¡ƒÿŸ±ûÐ}Wüî9¿$úV·…â#ź1ô¾ƒÿF-^ÿ„Å¿ôÿɘ¿øª|> ñ¼ñÍ’RXØ:0º‹ ƒ~õELvPqUcªîІ'ÈþãOÃáû»iF¹5¶Ð¾W” Ý×vp­íùÕ/G¢AxƒE»–æÜÄ <£>NGÝc»Õ“᯻éÌìrÌ/]2}p³€>€íH|-®·_éÿø0—ÿ’+ÎŽ&„jûOiòæ¿3ºtªJ¼¿;;•t'ݦ[Éý×Õ¿ôŠ:½oqe} ÛÁ&£om,w¹Y–C•eŒ6©þ騇‡|e_Ák Š[Çq'Î0ùÜä¶áÁÉ<: _øF5îÞÓÇÓP—ÿ’(•|;³ö‘ùJ=ßP„*«®W÷>Ëüˆ¥û†›ªmÕm'’{uŠ8âIrO›Œ)ïK¥É·IŠoú‚7þœ=¼+®·_éçþâÿòE"ø{Ɖt².°ù×ÏÊò³Ÿ8ÏÍœç<ç<Ö¹Q¯‡(ÕŠm=\£½­ÐÛ ÏC ²ƒi5¢OdïÔÞÓµ« 'KûU±óu‰w*³§Ël½23Õùÿk3Äú†•©ZÇ©@>Ï©»º·UýÛ¬SÛ>Ÿþ¶„x{Ä£þd;ÿåÿäŠcxsÄŒ9ð>›øßIÿÉñÓÉ«Ê<¾Ö¿Ä¾ÿSìiçxHTöœ•/éøo±ÄøÙ7_+ÿÔ>Ìÿä¬tT¾4ÒõÛôvÑmÞä×F@М €=(¯¿‚ŒhRŒZ•¢•ÖÚh|Š“IÉ«]·÷êwÿÿãÇPÿrç%uÞ&ñWü#÷öŸñ,OµÅ4žv¥¨}’5òÌchm–>fqÇ k‘ø/ÿ:‡û9+µÕÖæÛ^ÓõK}6öÿʵ¸·híL#cBÙ&Iþyc§8ÀÏÊgïõ>_’;pÁ_?Í”añ”mªÇ ÒY Qk$’Ém#Ï™Ú2*«¿wÚ°¡CÊc•Ÿ©Zê–í5«¹Û%‰¢’6À8dpN8 dzk”¸ðX×î.õÀöÆíšO°ÝÁ›M¢M®Êé›0J‚2²•#5ÐxDM ÂKt[$i%2ºØÙ­´ à/Ê€“ÑFK3ç0£Êv:Mjå×ÅrÍâë ô€öó¤E'ÔÌw2)‰%gHDgpÏñ í<Šê+ŒŸþ=+ÄÚŒº~Ÿ5ÖŸwuÄ›m bØŠ(Ø#µÚÄ}L|õD‰¼mluË+KOžÒh‹4ó[Í;íâC›6ȧÎc•È?'Ì î­_ ë±øA´Õ#·š>$vŽXv³(b²®õù° Õ„ž»ß¦E.­ YéQE¤kfVO-'·”yæÍ‹e\…Q–'«¡ÐtÉtm" 5îRxmUa¶eˆ£UB¨˜†|Xû¢‡`4«”Õ|}¤èé¯Çwseæ—Ÿ*Ò[ÄI.¿p’ ò2\ À<¯á]]qšÅéƒÅl:>§s³»0}›d{­£‡€ó«66g¾žä@_×<_ga¥êÏi&ûË;[‰"2Á ‚IbFb‚Lv[*­¸m~›N/Zx“K¾¿k(%›ÍÉi-eŽ7’2C¢HÊØmn“…cÐæßáô7‘ê²³mB+–Þútmy— û„“!•L­€›NFòÝDðö¤—1Ë©\B–Öºíí­´pâLÉ$áKɼ†R“1ÀU •Éà‚hWERQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEäÿãËIÿ¶ÿûNŠ>:ÇŽ“ÿm¿öö™oû•/Gÿ¥3Í©üYü¿$^ø%ÿ íK€NØ@{Ëë^¨ =éÒ1ü«Ä~éך¥¥ÌºÝî–«r9µHØÉ†`3½OMǦ:óž1ßÿÂ%ªœÅu®ñÿLmÿøŠðs¶þ¿Såù#£üóüÙ×î;sò÷ç`Çò¥ÉÝŒN1°zvõ®Cþ=W$ÿÂu®ä÷òmÿøŠOøDµ\cþ­wõÆßÿˆ¯*ìé:ðIìN‘åFã·?/~v *ä?áÕN?âº×xÿ¦6ÿüE/ü"z®Iÿ„ë]ÉïäÛÿñ]×äîÆ'Ø=;zÒO`ztŒ*ä?áÕqøNµÜ×þ"øDµSø®µÞ?é¿ÿEض©ëßµ} ëÚ•¬oq"ýÇÆÈ쨌þõÎ'5ÖÿÂsÿC—ˆÿï«_þ1X>ÑFñ××WÓÞi×ÓÏ=ÎÀÌâkhú"€Ø×ñÏ5éupŠq»zœ—ü!?ô9xþúµÿãÂsÿC—ˆÿï«_þ1]m\±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅð„\ÿÐåâ?ûê×ÿŒW[E±ìg%ÿEÏý^#ÿ¾­øÅ:/Oo‡8÷ÉÏfœ\h¬šg/ñºv›OÑwcw—+3ó(þ”T?óöFa“ÿC¢¾Ÿ’ÃA/?ý)œmÞrù~HÐø-÷oÿëÕ?ôa®úÇGÓîm¦k­6ÖGyîy¶Ë–S$ÜƹK'c‘#|ϸ³p?¾íÿýz§þŒ5é:ByvR/—³7W ›zÌç8Øsœàç9ÜùÞß7ÿ¿Ôù~HëÁÿ|ÿ6VÔ4Í*8%•ô»7]¤Ýü‡ÝœŽsæËŸ_1ÿ¼sÅÜ_\ :ÛPºÓü?Z›Ÿ³@ÖM4²‰<–b²È[þZ?÷Žzêf]3O’âKK}NàÛKwŒm-´Ñ›ƒŽO¥s“x{]ž-6ÒìØÚ[hs,‘ê°¾é¯T û™C†ÜzôWŸ¡Ð˶Iy­Y%ݵ¯†çŠë-dAb|Àà‚sœË(`yùß?xå4íBu »={EÓ#é­æ;uòÞR¬Å0$ÈA<7˜ã«|Ùþ×ÿµ¼I­ß²‚ÎiÑã{¥2*…‘ñŒí_\°cÞ´u« Û·Õ¿²ï4ë?Su’xä€ÊU„j„q„SŸÿ]; :ÄÑô¹üß;L²}ùݺÝíÞfìñÎ|Ùsëæ?÷Ž[q§ZA¨éó[ÙB’¦g’8ÕÌÙ$#cæ‘Îrœ»|ÇqW¡à9næð•£_\5Å™#i[«‘”øÔ“êIæµïÓ}î–Þ^í—LÙÙ»oîdÎÆÛ×ÊuÆãœ·›eÿ%'Mÿ°Eÿþ•Ã]½q_òRtßû_ÿé\5ÛÕÓøPžáEUˆ(¤'™­kúvƒdnõ…Š,á{–>€w  <ÑŸjñíWãc t­0å{‡Á#ýÑÒ²ÇÆmxŸøô²E?ãWÈÅt{®}¨Íxgü.=|Ž-m?ï“þ4ßø\^ ?òïiœÿtÿ?g ¹î¹£5áð¸âŒ×ƒŸ‹~'ÇÜ´ÿ¿ýzOø[^(#îÙÿ߯þ½ÎAsÞsFkÁ¿áløŸ¦Û<ûE@ø±â’:Zûd(ör žóšlŸt¼¿ÌW„Šþ)=~Ëÿ~…nxCâ¿­øªÃN½6ÿg™›~ÈÀ•æ1øIƒPð<‘Å=šZ †@Qn00< |DZÜ¡¯> رÓu_ÝÞA¦é ¨ø~Vk¸$„$“ÛîÉhJ3«8VÉÉÃw©ªêZ–™ª@‹axËœL»&Px%\®zt=k§ðUÓÃý¥}©Ü[Z}²v¸ÑÜ|¨ÌIÆIÉ8ã'Š¡/‚?ä[þ»Oÿ£¤­[ôß{¥·—»eÓ6vnÛû™s±¶õÆrq¸çcdø†ðÄ9Y$•ÔÿyZW b#ëZ×é¾÷Ko/v˦lìÝ·÷2 çcmëŒå:ãqÎÆÊ[”ŒÛ/ù):oý‚/ÿô®í눲ÿ’“¦ÿØ"ÿÿJá®Þ®ŸÂ„÷ (¢¬DsÅkk%ÄÌ8Ô»1=äšù£Å¾'¹ñF±-Ô®ÂÜ1X#è;~>µí߯ÏÀ‘¼ª°ò:†`ü‰¯œäàc©íZÓDÈoLà3Ú•YÉààR’Eö­EaÛ›±?cxþtÌã¡ öÇã@‡ù§ošãø4œtç ï]߇>\ê¶ñÝjÓµ´NX|Ä{úPÝìpþ{n9lLÒòß{·­{D? <3örH}]ÎMKÿ ×Âßô ÷Ù¬ý ùOíúÒ›Ž8Ö½»þ¿…ÿjÿßFÿ ßÂßô CõcG8rž.>ÿó£í'¦ïç^à~øWþQþf”|;ð¯O옿ÑΧˆ}£ý¯ÖÜýê÷!ðïÂßô†—þß…ü £œ9O 7ô<Ñö¢TüØ5î£áß…Gü §‡¾ó·üáÊxOÚ0Ïõ£íçwî§áï…IÉÑ­ÿ#J~øWø’ÛþFh§„}¤wsùÒ›’Ãï×»‡Þï¢[ŸÀÑÿ ÷Âô·üÐ9O7íRë^óÿ ûƒþ`–ÿ‘¥ü+Ÿù[þF—´SÁþÒ¤rý(7@ó¼ W½øTÌÛþù¥ÿ„ Âý´[_ûæh§ý¯+÷À¥ûX |㧨¯{>ðÇý­¿ïš?áðÀ9þÇ·üÐ9OûJõ.?1J.S¿¨¯}ÿ„Ãþ`öÿ•(ð7†èoùQí”ð/µ(?¨¤IÙñÿ¯ ?áðÈÿ˜=¿åGü!Æ?±í¿ïš~Ð9O7kÓÌÏÕ©¿k_ïŒzúxÃ_ô¶ÿ¾iÃÀþÇüí¿ïš= rŸ>‹ÕÛ÷Æzõ®»á•ÊÉñHPà’dã?ôÍ«Õ?áðÑþǶÿ¾jî“áMLÔíîìôØa¸¾Yr20Bje;¡¨š·ñê¿õÔè-Yò}ÓZñê¿õÔè-Yò}Ó]_᣻ž[ñ£þ<´úã'þŒ¢Œÿñå£ÿ×?ôeôØO÷x|ÿô¦r}¹|¿$h|û·ÿõêŸú0×Xž$‡F{ËY4ËÖŠ×ͽ»¸‰#Xà‰ç›ç`Þ[·ú·cµ‘È2¹¹?‚ßvÿþ½SÿFê,ü)î³}|öYT¶é4°¬…nn]üØÕcY„«÷ƒ–åÁÞÿ7ÿ¿Ôù~HëÁÿ|ÿ6oϬhñC<×”q[ÿ®w¸UX²æ?˜çyî¤u°õ Þ´6wË ´š€YaFx•ç•“œ¶ãœÔÒÅá›»H&³ŽÉ¯ Ö.µ2Œæ4¸óLʸRCæ^v·Ü Ó‘Š<7­›­sKH-|WNÙstòº¬ 5Åã°ˆydLPMДÎü»¸òÑÒoE¦ø"ÁçÓcƒCŠK(L³À|­ðÆ%Ü@ÁqõµZâóÁvš…Õ‘´ÒþÕoln•?pžhS(uBÌä0¾ìà/#œg_øöæ=RÝ<–YþÝ-½ÄÚ…Ë%ÂÊû?ú¸ñç\n$v‚ù]moÃ7sǪÛéQÙGm¨èÿÙÌBÛbÍå•URI›|»BänÎ07 Ô4ÆÔ¥Ó ½µkè<–«2™QxÁ)œó/8î=j˜Ôtýf]6çM»µ¿†+Æ -³¬ÊäÉÕ•X)Ãé÷±¸çcóÇÁµÝâÏm Ý«Ëy:yÚʉ â\ÇäÝÃÄ̦EÞp Ú eu´ë JÕ4åÔæûD‚ýÞ$Ýçý–?!Ô'šb ýþvØß>ÒíÒD–_òRtßû_ÿé\5Û×eÿ%'Mÿ°Eÿþ•Ã]½iOáB{…QV#Ͼ1 ø#®?Òcþf¼ôWň_‡·Òî‰âuúïQýM|ì1×¶+z[!ri8ïN#i¦îæ¬CxéA8…ƒ@$ž>Ô ÷ÃO Ũ_ÍªÝÆ+F žAŒçð~uë¤p}ë’øk ÇáÊ1¾îfo¨!’ŠëÍa'©b(âŽàzÒƒHi™â f-BºÕf‰¥ŽÝw2©Áêõ¬ïøÛK×l-îC}™§i$Œ]˜ÎOA÷…rîõëkxí­ɦ^*X–,”r9÷íô5À,×–ž3®ž¢Õí…“1h‘¤mÌyûãËAŸqHiH4Ñ,^kH‚> rÀ(ZŽ+ÛIŸdWP;ã;R@Í ë\ç‚mCáþ•©fòv4r®2ªÄ.Aÿd á.ôÔž}2 çþym¶`²2ÿÕ©íØ~4ìÙ<ðsÈÀõ¥sƒ§^¯5Ö5 SL´Ñn†©ul/‰´¹†í÷µ°bzHPÏNkBóÄ“iþ7Ól>Õ$šr”³›zî$ŠÌ¸ã „à~€;¬Œ¯?J`š&IJÆeQ–PÙ*=Hí\O‡u­Aü[{a¬5ÊK+Lló 0\Æ­S‚Žõ›â¿‹ÅúÿömËÚÞIm§¢L |¥ç sœ `ó@Xô±Éèyè(ë€:ŸoƼª_ø£TÓç6Ö—+©[Ëoþ ›$àK¿Ë'¦@¸ Ö´|ëFçÂòÙëÚºÛjm*J¾n l‰t†S“ŽqÍ Š9]ÑÔ{ÿž”½3ôã§ù5äV^ ÖŽ½=«êwê­s~‚IÝvH±ƒµQJðÀàðIëÅk]jº›øOEž ù–ê]{‡e`I‘bBŒu O^ç@,z>xÏó¥ç8è{×™i~.Õ5­gÃÖNe·(³Å©„Î~Ò±¸r:›Ž?¼*ލxŽ÷Á2Þ}§RŠöT·\Kp$YYæ YT¨ Æ3КcÖÇ8î={RŽ{ݽ«Éæ×5}WÃþ!Ô&¹½Óu 2Ú2Úµc›÷ºŽAŸøZÑ×.µ?ê–FKFçCH¦%àrÜ–Âe”ý×¥±èÜô§š@Aä6îx?çéK@‚€3KE RÐ)q@ ŒRòM-T¶üÏû¢Ç5-¿úøÿÞžÃ#»µ_úê?ô¬ùÊkBëþ=Wþºý«:VŒdyÐîDªN~™®Ü/ÀŒ*îywÆøòÑÿ댟ú2Š>4Ç–ÿ\dÿÑ”WÒá?ÝáóÿÒ™Éöåòü‘¡ð[îßÿתèÃ^™s¥é÷®Ïuak;²ìf–bW¸91$ƒŽÃ¹¯3ø-÷oÿëÕ?ôa¯W¯šÎÿßê|¿$uàÿ‚¾›(¾‰¤Ë¿ÌÓ,Ÿ~íû­ÐîÝ¿vxç>l¹õóûÇ#èšL»üÍ2É÷îߺÝíÛ÷gŽsæËŸ_1ÿ¼sd[EÉo5‰$äÌã©ô _³CýÙ?ïüŸüUyZEWÑ4™wùše“ïÝ¿uºÛ·îÏçÍ—>¾cÿxä}I—™¦Y>ýÛ÷[¡Ý»~ìñÎ|Ùsëæ?÷Žm}šîÉÿäÿâ¨û4?Ý“þÿÉÿÅQ¨_DÒeßæi–O¿výÖèwnß»VŒÇÓtüÒ€õ0  òý+*o è× Ë.Ÿ+\¢ÿ–¤`·×ç§ãWýA“ÿ=ºSÆ¥ä.Œ§ßÎÅz øgFHÝ?³à*ñ[+œ¡9 çÔÿ*ü#zGökiÿ`‡ì ”ÄàŒ¯ò¯8ÿ…ÙÏücöÿZülaÓE‹þÿŸð¢Àzež…¦X]›K¢œäUÁÁê=‡ÒŸ&‰¦Íx÷’XÂnféJ Çayö ^`>6Éÿ@Hð ÿ…ð»ÛÌd,Žßi?áE€ôûÝLÔr/, ¸É™#ä?BE8i6ì¥láÓ&ßåd`íô⼸üm—þ$PàIÿâi?áwOÿ@+sÿo'ÿ‰¢ÌO”#Ø4ûm¿h7X1õǬŸï{Ó!ðæl³¬UœBu+(HUwƒÉ™íÒ¼Ìüo¸Çü€m¿ð(ÿñ4‡ã}Éÿ˜¯þ7ÿJùêm¤XI6ê`q¥ÚßmE€ö¾ô  õ¯µOúYÿßmH~7j£þa¶CþÔXmïÆ*H?ãâ>GÞëÃáwjÄ`iÖ_÷ÓV÷‚>)j^#ñޤÏgkS³îd-¸mFnÿJÐg§ÝÿǪÿ×Qÿ µfÜI#—Î*[¹lc?õÐÿ/´î¿ãÕë¨ÿÐZ³dèk¯ ð# »ž]ñŸþ<´úã/þŒ¢ñå£ÿ×?ôeô¸O÷x|ÿô¦r}¹|¿$h|û·ÿõêŸú0׫ה|û·ÿõêŸú0׫×Ígïõ>_’:ðÁ_?ÍŒyxÎyô¦ý¡=¹ïëWšJFv–Q‚s·ErSOPÏö޳w"ž°ÚŸ³Gôù>r=‹ó4¶¦Ò¨£¹Þê^&ÑôŒ Bþw#+8ÞßEŸÀVT^?Óf¾‚²Ô–åXRêXqînÌ“ÇÝî+Í¢xô…6V°E Ô×"ÜLPÇ9ÀùŽÖCÉÉ,{ TSj—o¥¼Wr!fd‚ä.ß.PE/Ø Î€:sÖ–†~ÙÜ÷dIœgZ}fh7ñêšEµü_êî!IWØ0ÍiÐÕ™¹ÏÙÉIÓìÿ¥p×o\E—ü”7þÁÿúW võ¥?… îQEXŽ?â—ü“[éÿÈ©_7t#ØWÒ_~êßîÇÿ£R¾lnµµ2d)ç½!û´ÒqÍ4·?JÐ<·©AÀ4qN#Ž”úíŸ N|) Ïl—úvUÆü0 øZaŒbîOäµÙšæ{–%A}t,¬.nØea‰¤#Ø¥OY>'ÿ‘WUÇüúKÿ hõ›»ÍWP–âêBóLÛ›ü?Z«m¦3¶;fµ’ ÷ ÁsµIÅGo«ÛG¦›“oó6Ǿ3ô©›¶€‡&Š…FTUÍɪÛÛB´l͆Æ0G5×­Íš<±¹¢Bì ê3ê)°Ýi×Át>ô²yQ’¸<ò8÷ÇéYs43ŽŽÉWÄ-fò©STg¡ãŠÖ:"Ýk¢¶²Óïq} (ÌÄþóä?¥[|}ÞsIÉÈG8ïXVšz¿Šníú„Lÿ/ñ¯KûÎ>µÉéöàüAÔ“y þ‹MHÿ±“Ð~Tb¦9 ]x³Ý Ù8?Bi908ÿìdô_Ã4b¯ ýk°û Ç(GãIö0Àœ=és08ó¢¦yQ@ÑPœm®ÀØŽ¸?b\Ž(æ`q’hácb€o JàgœVZi°É¦Ü¶OÚ=ÎåZ½ X¦N:ÓM‡æe‰T¿ß8ûßZ|ì;ŠÉÍÅ´e —ûÀŽ[ú~5Å™k[§.VUQû968¯Mt|€^: —âÆ$ÜÃ“Ž´{@8K=5n ÞT8ÛÜ}jÈÑ»qô®Ìiʽz1šwØs¶Žp8£¡ ì?*OìDþïé]¿Ø Æhpî8£˜'ûðþ”b' ü«·+ŽV—û9U~èÍàpãCCØ~UÖ|2ÒÖÛâ&“(åi;Ó6«¿`L’·üd±x¾ÁÀk7þ€Ôs\I»ÿUÿ®£ÿAjÏ“îšÐ»ÿUÿ®£ÿAjÏ“îšôp¿ÃFw<·ãGüyhÿõÆOýEÿãËGÿ®2ÿèÊ+é°ŸîðùÿéLäûrù~HÐø-÷oÿëÕ?ôa¯W¯(ø-÷oÿëÕ?ôa¯W¯šÎÿßê|¿$uàÿ‚¾›8ωVÒÏáá,3[·Ÿõd!‡òÇã\œZåµÜHö ×…Õ\,D×'¢2pØÏAÎqéšÜâÅŒðkÁ!š æêÔ^›Kˆn]Æ7LÇ·1ŒîÂÈýºƒ^e®‹«êi]IwqâO,‘o‘ŠX†2+ çå±F~ð;1ÏbÖŒ°ÈÈÜD¥ŸæÂŸ#*3÷Aó``a±Ò³­ïod(ÖÖsÉ.õ‘¦º}¤°òÏl“®£8á©«öž֯ .%D@X–8?{?»^„r(Qfjœ™è¿ ®ÞOËe+fKY;e$bþy_ø w5ÊøAAÓ¦‰!XÚB¥ˆêØrzšê©Ks©lsö_òRtßû_ÿé\5Û×eÿ%'Mÿ°Eÿþ•Ã]½iOáB{…QV#ø§4q|<Ô‘ÛS'¹Þ§5óyêkèo‹Ç”÷óÓ­|ñŽq[ÒØ™Ý)M8ði0jɤcÞ—4ÑŽýh{Ð ö¯…ÿò-\sÿ/oÿ ­v¦¸…¬†îGqvßú×pk¹bb²üF»¼3ªße—ÿ@5©Yž"]ÞÔÇ­¬¿ú¤€ùëûNÓO—*N3Ž•Z GC]ì-vC“̾^xÝ»ÍCPµÓÌ&âÑn7¯öéPÃâ­*3ÎŒõ¦{‚4›UÑîêHµ]DÊÑ´Y!ˆÁ`{Q6«£ýƨé*´LåEÆZ|i£¨ÀÐ"õ'´´ývÓR†I­|?f±DB³Ë"¨Ï8*XÒü] éÚlVÏw$¬»²þ^9'5pxûAyÒ}vVSköËfn×@´’5ÎB:–QœdŒqTŽ´¼ñáø?1þ­p:Cãí÷³gþ¹×7gâ}2^jNÒ}šX© ÏAþi¤€4Gýóþ©¥ÚÚÉññM¬~Q·Ví.vŸëM$€½ÿ A?òÒnŸóÌÓOÄ »ÌqÐùFºOìÛùô·éÓ˿ٶ9æÎÜÛ1Qt4ßt2Ù/qÿ~¨t!žg?öÈ×E-¦Ÿ&û{eÞv¨(¼ŸAúÔ¿a³‹HÎî×ü(º—ÿ…ƒ¢Ÿh?öÈÑÿ EΟA®£ì6¹ÏÙ þ¹ð¥û ™Ñå}²3íÿy×üÎs÷¹®“Ã?dû}ÿö'“ÿ÷•Ù¾Í#ÏÌžw•Ž6ãÊÎß—vÿâßNì øc1ç8çÒ¥¢Š‡¨Î~ËþJN›ÿ`‹ÿý+†»zâ,¿ä¤é¿ö¿ÿÒ¸k·­iü(—¸QEb8Œ'þ(V½Ê&¯žùÉ&¾‚øÆqàqïtŸÉ«ç߯JÚžÄHnZ /~¦›Þ´wÍ;µ6‚x føTâAzüýÿì‹]ßZàþ°þþÿ¯ñÅ®ï=« nXV~»ÿ"þ£ïm(ÿÇ hU hÄŠÿÓìòè&’匥©èvÿAXik4Žˆ‘»3ýÀÞ­ïóöOuëéÅ]Ô¯-R vµtI¡¸@Olsn)IêåÍÒÄòµ¼íf+šÔÓõX¬ü9¨Yœî$P.F;Ÿ­kÝßBñx–¸O.FV‰sÃö®4ãœcéR3¤K­1<.`†íà»ų™zgÒ¹º3š:Ó_¾>µê:?.1ÞÑèµåê¹aõ¯QÒ3ÿ üÝ?ãÍ:}¦[ÛŽù¥ÉÇ#ŸZN1AÀàŒ“ÜVr¾'/uaaqù2]’¡Æ@©þÏãZö—¯owö Ö&Oùc+p$‡³õŸâõ…íôñrå`ûZ—`pGªÎ·Z•gs©KgaÄ ×'¡ýO5I]ë^TŽ‘˜Q–ÝÆ=iVD–0ð¸ta•aЊåí&ŸX¼WêÂÚ,å'kÇÿëWPFŒ(JMY ÓàÀð äfÐsÍ äž('NzñAÆ@ëšAÐã4XÇç®+’ÔÈûw‰qÿ>Iÿ šëq“ž§< áõç»¶¶- ÍDžiç¡UCq ~æ;k;{‰…µªcà,¤d¾†µÞõ/äðíÖó%rwuÉJ©¦e-"š#¦©–%ÜKœ¶š¯zºµ½Þ—m9LÂ0Œp¿/zl Qµä­Åä&2£Qò˜ïËíÏLzp;WU£ø¨õ¿˜ó"¯Ê+.-?P‚ù¯cM(\?ÞmääžøÍ[ðÃÜ6³¬½Ù‰å2&Z,íû£¥`:€sÉàVÇ…Ž|GdG÷›#þkŸ^r+cÂùÿ„žÏÝ›ÿA5 q£µ™wÊs®¡üÆ8{TðØÆÃ™®Ïý½ËÿÅT/ÿðýjütV±”’²ci9ñæ%†ßI7cl§,ʼn9N¤òzÊŠÇï¹¥¹/óJ+ì²ç|?Ÿþ”Ï:Å—õÑÁo»ÿ^©ÿ£ z½yGÁo»ÿ^©ÿ£ z½|öwþÿSåù#§üóüØQQrÙ"8dºVÎ3×…?Ηý'û¶ß÷õ¿øŠòŽ¢J*?ôŸîÛßÖÿâ(ÿIþí·ýýoþ"€$¢š‚\Ÿ3ÉlvbOâ¢@ý—ü”7þÁÿúW võÄYÉIÓìÿ¥p×oZÓøQ/p¢ŠCÒ¬Gž|f•WÁQ¡`®Óh=ð?μ×êkÛ>864},zÎÿ â˜5½-ˆ†›O¦ž*Ä4u ô4t œŠžÇð§þ@·ãþžÿ@Zïºà>ø“ßúnŸú®üVܰ<Õcøöòè&¯U-WþAŸõÁÿôHhùòÖÞ‰BÍH ô­›-+Obsgýð+*Ãþ>}¶VÖ™uo4ÏS#ºõ zVu74£ÑôÓ€,`Î?¹Öªßÿci³Cºz¼’‚U"„1 w­F¸ŽÞ4αÆ:»t²/â‚ó^±¸ûTk´LìLv>â³Ô Tèí}öc`‘œ®ð€­žÀ÷5|éZx 89ÿ¦b¨N³ÜjÑÜ0Ž+8@eœ¾C:c·Ö¶TµHÈ9ÎhÔe_ì»N,àÿ¾rÖX¯ýÀà~ÚZã,ð~'Ýã¼úPÓ³8ß½/°¦ç·4âr}*X¯Ž-šïJ¶¶‹d·*<ôûiˆc[X~KKo’VÇÌξžƒ=ÿƬk–2kζ*&·†$3ƒ»¶ßñªø.âä)—\»ùF”úã>õK`·:ý”ò)kFr$ˆãyÀè?¼;ŠÚ±½™e¤ ¤Ví*úŠÊ¼6é ×®HÛ€ úäsL‹DÕ¯&t¾Õî°¸xÝbP}qúPÒ¬=O#=)0OŠ¥P;Š€2{Ó³ƒÅ@ §qÅ(¤ävã½ÏçÅ.Þ¤uö¯?ñìÆ­øI=OWXíZÑ7!¿$|µŸö<òõ¯áb‰lùænŸîš•¸ÑÛ?ü|ÀGõ«ð}ÑTþ>?à#úÕø>è­"S<ã÷ÜÒ¿Ü—ù¥|~ûšWû’ÿ4¢¾Ë.ÿs§óÿÒ™æÏø²þº ø-÷oÿëÕ?ôa¯W¯(ø-÷oÿëÕ?ôa¯W¯ŸÎÿßê|¿$tàÿ‚¾› *½Ñ =k6MB(Ÿk”Û¼nü«ÍŒ¶:±µEd-ý»c/·>£úô©ÒD“î:·Ð曦ÖásBЂ߸¿ ž¡« çì¿ä¤é¿ö¿ÿÒ¸k·®"ËþJN›ÿ`‹ÿý+†»zҟ„÷ ‡¥X'øâÁ´Í ÈšCÀ…x¸$ýkÕ~81þÕÒÓ„×QQð4 ò£ƒëPßjV:pO¶J©æp\泸ÎJí¼ùuód-=šTíŒqú×AáÆ‘m峓s-«ÕÜrãÿZÓ†âÒâF4e€¸ƒÈdmê@ÎsÓ­ ÛÎy®6×åø¡wùà1úWgÃ)®2Å Ž Í¿?¥(½ÀèΦRû¼(S‰eb3è}j ¯iÐEpË!•­™Dª£A8ÍÙ—êrÉÄm®NnU¾öqü5˜|5z¦ícž,‹nΜަ…fäš½’ÆŒ× ǽ3ÏËê?¦ŠóÍY]£)ò®OÞ\g8+&Û@ò/,îÕŒ!ÙÇûmÔj·k¥½½Íü’0hî›\w§p01ÍU¶KÅùòDË´`ç½ZÖ¤ »ÝI⼎ÎÚßÏœ€î¡€(§½J÷v³\Í q¤·Q¦B9>™¨otÛ‡¿ŠúÂTŠãhI ‹Ê*+= ìu¹oa™~Ï0Ì‘’ÔU+¥¾²Åe3iŠ‹<í§Œ£ÿUMq­-´W'O_²ÁŒ0#sàñN_²YÅ Ì—vny¥—A¹»-ur¦IHȸCg‘ëF€ZþÔÓ–Î;’¨VBM£ úcÚ¬6£kÚÚ®Ï1Ô¶=3Y~óã‘…ÖÉüã4n ‘ŒïS?‡d]ZÞþ;’l :ã"AŽÞ”Y{CÖWW´’E…â(å#‚G¡®«Âœx’Ìcø˜ÿ㦹7OþÍIaW͹bÑ ®z×MáQÿ-—_¼ßú ¥×A£·øøÿ€ëWàû¢¨?ü|ÀGõ«ð}ÑW™ãÿ¾æ•þä¿Í(£ã÷ÜÒ¿Ü—ù¥öYwû?Ÿþ”Ï6Å—õÑÁo»ÿ^©ÿ£ z½yGÁo»ÿ^©ÿ£ z½|þwþÿSåù#§üóüÙ™­Ý‹KeoâbBSŒÿJγ±´šÎ5>[Ë"d¸a–‘º½Æ2#·Z«ñÚy´›ymüÍöòù˜N¤c~µçiã «LùwJôŠæ<ΰ “†RªI§ªÐôq¡Ûݢ'’6Œ¹nCpŽFNGCÒšúmý¸ Ò,é‘ó222=Ç×3¢xòCi±ì–E<¿–Á³Ï¡©üA㕸Ò$H š)0ÃÌà(=@­½œÈö°;OêI©Ø´ŠrÈÛð$øâ¶+‹øk ‹¡K4€ƒ3‡Áük´¯:¥¹Ž˜ÞÊç?eÿ%'Mÿ°Eÿþ•Ã]½q_òRtßû_ÿé\5ÛÕSøP=ÂÒÒÕb´êa ë Éû£ÇñÆñÚôZó„ßñé¨ÿ½þƒ^šÂ[–-VÔ9Ón³ÓÊlþF¬z¯ÿ ëŸúäßÊÑóÕŽ×|m?ÌÖýƒ3fyùsÍ`Xô¡î§ùš~œþ]Åä¶èngE8“$cÛëYUÜHíÓ‚k#S±–ë^ÓNìçƒb+?ûBù´…ó£„ÊUîGUOï~|TÒ^K˜Z©•–-sÎYOVþU.§£Jš½½å¤Ò~òeó Èqø×GæÆ\®åéÎX ~Æ2ïNÓnäyf•/J¬Ç ²g¸§\@.íuE²iü½ ƒ€ÜL@ÎÐ:tê+Œ‡ŸŠã<Û×Q¦m:e¾É^A°|íÕ¾µËÄü- 3ÿ>ù¤€ìº}ãúP¤9ÏéKׄ€ÄdÔ€qÆìçÔCó“Žr3Jxj›„µ¶yå`¨ƒq¦½ÜW"Å s~zœp=+‘ðÖ¢ÇRÔ#šØÛý¢ä˜Øœäã§åÍuÀç“Ö†°IÈæ¾”ojRx¥ ç?ZE;iW8 žÜPƒëÍV¿Ô-ôÛSqrJÅ3ïÚ¬(Ûó{V/ŠHþÌ€Ÿô¨º÷ù¨[ˆ_øIôìd%ÏýøjÄö8†ìÿÛ¬í3JþØû]ÅÅýê°¹t ’Ò¯Â-m›ýCžþyªiöñU‚FÌÉt8É>Cqõ­{y’ꞘäVÿëW%¨éˤß@°ÝÜÈ“E*ºË!`@S]ƒÿ +,ƒ(RitG €W±­ ø©l¿ÞoýÖ7Ý#Ž;VÇ…I>&³Ï3qÿ4–ãGnÿññÿÖ¯Á÷EPøøÿ€ëWàû¢´‰LñÿßsJÿr_æ”Qñûîi_îKüÒŠû,»ýΟÏÿJg›?âËúèƒà·Ý¿ÿ¯Tÿц½^¼£à·Ý¿ÿ¯Tÿц½^¾;ÿ©òü‘Óƒþ ùþl¯vªê¡€#ž a_xgJ¿εLžàWK\fã¶xBßÅÂtß²Æ$eùL·,U&æ4Y L¹ää’ª»ŸÍOC¤Ë»øc¥LÛ¡fˆÿ²qT×á‚5Â稜9ÎH®¿LñƩƒ¬¾LGÎM$±¢xÕ\¡‘±÷¬~T|à©}3ÅêÚˆ²¶ÓïD‘Å—^o–†Í¤ÌT• ï ‚>ê°É#?+aó±Yô«Hì­E¼C€W¨¢¡»Œçì¿ä¤é¿ö¿ÿÒ¸k·®"ËþJN›ÿ`‹ÿý+†»zҟ„÷HsŠ !«ó¯Å‹¤¹ñõÖÀG—Fsêÿ^¸±]7ÄS¿Çú·=%ÿͦk¢;ÄéÚ›Šyüi¼“T!:ši”ði3ï@3Õ~ÿ©Ôí™ýøW¤×›|&ÿW¨ŒÿÏ?äkÒk nZ †óþÕ" “åUÚN}¸«Q·Ê0x=kWÓæÔ5})ã$E»;¡ûVc,ÿmi‹s˜™DÎ*ªžý;qZB4QµT(=Bô5%œéâ_:Þ)r®öõl§|þ5ОGNi4£¢Žì+‹Où*Î3m]™Åqiÿ%9³ÿ>ôG¨ Ü@À8ÇSIŒF}óJ ý)¥xÏé@ rW##=3ÿê¬}jSrðéh7´üÊ„`ˆÇR?J¥qe>£â[¨ÛP½µ‰"M‹ »zã­S±ðó\ê—¦MSSýË*Ç/Ÿ’A€qëM ¥WÔn @ÒÙÞn]ÍÆ6òOÐWYiuí´w10xäVÇZãto‹«½R&Õ5}œM‚ãøæ¥Òt"ÞE&©©CäÌQ#pƒ¡Ç§Zm&ÀíÉäàûÑœœcñ¬ Ã,l¯q=ÄÌò°sç€x#ØÖø9àf ô㿵4äÇâ( 3Ç?å?ýzvxäqX^)ÈÓ"lÄζÏ'±ƒ†Ð,²åÅLÀÒ"¶<-ωl‰ë¹¿ôXÜÀ?løXcÄÖDõÜßú ¨[»ÿÇÇüZ¿ÝAÿããþ?­_ƒîŠÒ%3Çþ?}Í+ýÉšQGÇï¹¥¹/óJ+ì²ï÷:?ý)žlÿ‹/뢂ßvÿþ½SÿFõzò‚ßvÿþ½SÿFõzùüïýþ§ËòGNø+çù°®ziöúl60MuQÁYV\³Ã³É˜¸2/–¼ã *ÐÑ^QÔs×¾kË;K9îžú?¶ îæ½*ddFÔ ¡66P 4m&~f$Û—A†çÄúÅÍÌÓÉk¸ÚÂëKvdØÅX s‘œ†b9Î8\kQEÀ(¢Šçì¿ä¤é¿ö¿ÿÒ¸k·®"ËþJN›ÿ`‹ÿý+†»z֟‰{¤4¦šì 7@2jÄ|³âˇ»ñv«4–7.3ô8þ•:æ®ë¬úåüÈr¯s!Ûqª™®˜ìf÷O߯•©½é‚ öéM#=M:šÜƒ@£ð˜áµÇHÏþ…^™Ú¼¿á)ÄÚ€ç;ùšõ ÖÜÐ1Q\ôI¿ÜoåRTsÿǼ¿îåHž-Tÿh`g«üxÖ}¼Rh—ì³ºÇæ;`»ƒÀÕ£ƨ@ìïÿ¡Û° ÌAQëŒVu¢‰š÷·æþÊß{Æ|´„t‘ õöç Ãu®˜‹s3MHÒc±¿Jí"DÜË\އ>•^ûR°ÒãF»q™„&NqÏJÎã,i÷ {§A;€"#ÅNÉÁ>ÞÕIõ[ZÙKí3倧üмz:楀€Ø<}+çþpã­¿¥v8+Ïzã‡ü•ÿ¯oéN=@ì‰óŸn(ž9ö4Ð'¥.=ÆiŸ¨ØÏq,7V“$wp©—\Gz›O²M:ÌB¬X’Y‰é¸òqQj‘³ØÀnn_>\YÛ‘ÜäñQG®Û¬Iöì[ÌêY#Þ=àѨôù k#©ûHè}ª{í&i®kiÖ12ys†’¾ÜðiçQÓ­o–BMq™8\g9>œUy¼MbšcêPžp¤m òq‘ê)±op[Ç }ÈÔ*çÐTýê+yÒâ–2XdTœ‘ÉãëRIS‰ i  ààÒ)íÆ3@“šÄñ[Ñw9ùhËØnµŒ¯äý†S4K**î(à ãš.5uqtÐj!K/$ŠÐ唇_SïK-ÍÁ¹»!ôÒl<²ä¾:j}…î‰{’ý‚Ø,q$„ª†äçåúñV¦¸Ð"šÖ3g7 ]qÀÉô«¸ì‹ ,Úp-g(FàÄ­ý¿âž°8ÿ– d÷ª>f‹ö1sö8±¸®ß,nÏÒ¶ 1½ºù8ùvô¥' 0výàEkøT“âkxÜßú ¬@F29Õ³á<ÂMeþóè&¥ntÿññÿÖ¯Á÷EPøøÿ€ëWàû¢´‰LñÿßsJÿr_æ”Qñûîi_îKüÒŠû,»ýΟÏÿJg›?âËúèƒà·Ý¿ÿ¯Tÿц½^¼£à·Ý¿ÿ¯Tÿц½^¾;ÿ©òü‘Óƒþ ùþl(¢ŠòŽ ¢Š(¢Š(Ÿ²ÿ’“¦ÿØ"ÿÿJá®Þ¸‹/ù):oý‚/ÿô®íëZ %î ¼8²œúFÇô59¬¯ܽŸ†u+˜Î+w`~‚­n#å†;œ±9,I˜Å" (ëÐgÞ]Kc26¦{uÅ3¶E¥4óJOqHyæ•𜟶ßúy+ÿ¡õšüFÿîšH¢Õdÿ®’èF¶leE”)tÓàŸÂ±—fP:‰¥ýª…´Þ^­ž!%Ѹۓœª„v¬ê-EÑã#õ¬½cOžûVÒÞ=ËNÎîÝU=õFÓ¦½v22‡X£öÜ~cï€k2-CT•-£‚{‰Tß2¬pYqžxèšvþÛS_ ­cœÀÆ,FнEuŠÊê\a“ó(üë“‘¯mHÀ c‡!¿3SÂ; ÉLû£X$Oï– “[YÁ9!©Üuéšw`s÷~Yâ¹ÙrÑÊò bqü *Û¶ µŠ&ugŒX j\ ç¯õ¥ÇPG8¢ìnG[^ ø–Ë×sè&±GÝúÖÏ„ÿäe²íó7þ‚h[Ý?ü|ÀGõ«ð}ÑTþ>?à#úÕø>è­"S<ã÷ÜÒ¿Ü—ù¥|~ûšWýs—ù¥öYwû?Ÿþ”Ï6Å—õÑÁo»ÿ^©ÿ£ z½yGÁo»ÿ^©ÿ£ z½|þwþÿSåù#§üóüØQEåAEPEP?eÿ%'Mÿ°Eÿþ•Ã]½q_òRtßû_ÿé\5ÛÖ´þKÜ+œñíÌv¾Ö^VÚÕÐqÜŒÔ×G\gÅFÛðïQ=‰Œ;ZÑn#ç`0x"Ð\ŽG½![*¹p°Èkc##?p驸‚yãÒÚÙ#¼…ƒ\]²æ&<0d¶ÇNvúz”nÌêM¦aüw™.-4yPœ2KÁ™úôU/6:?§“/þŒ¢¾§,óÿÒ™ÄÝç'éù#Cà·Ý¿ÿ¯Tÿц½^¼£à·Ý¿ÿ¯Tÿц½^¾s;ÿ©òü‘Õƒþ ùþl(¢ŠòŽ ¢Š(¢Š(2ÓN#Ä6Úј ­Í ‹fwoœ9läcXç;»cÿ¶{ÿãŸýzΊcŒ``’npI¯Ö±l¼Pu+Û˜m½¼_µMŽýÔqÎ8çÿ­žªT'8¦™”ª$õ:¯¶{ÿãŸýzÇñ.kâ+û:öâæ( ‡o³áKc 9ÏáVñͨ'o˜T|ÁGrÿ‡ðЇí“ÿÏ_ü†¿áU<ßPu"qÿð¨¼9øÿÕ¿ï¸ÿøšOøTÿŸíWþúÿ‰®Ãí—óÔßµÿ >×qÿ=Gýû_ð«ö{“ÏÇ~xhÿËö­ÿ}GÿÄÑÿ wÃYÏÛõoûî?þ&»/µÜÏQÿ~×ü(—å÷íÂaW¸{Hö8ÏøSžÿŸý[þûÿ‰£þ熿çÿVÿ¾£ÿâk´ûeÇüõ÷í—íSï ö… Hò×¾ßöÛZ=…^áí#ØÄð÷€´ ]½Å•Õó»Æb"b„`{ÏÊ+¢û,óÒOûäUKéÝU„À©»_ð§}²ùëÿ×ü)<5Nãö±,}–ùé'ýò?ƃkë$ÿ¾GøÕoµÜÏQÿ~×ü(ûeÇüõ÷í—ժwk–…^’þKÃy©ù#H@hñ–$Ÿá÷¢…z ßkެγǴ~kªûdÿó×ÿ!¯øR}®ãþzûö¿áCÂÍîÃÚDÀ?´vÙæj›ì}ë–Aϧ 8æ§oiŒŽ¿oÔAcÃËÊý>Z×3Ë3DŒÛ·Jü dvè8êƒõõ«eÝ•aR›¦ìË‹RW0[ÀúcC°_ê ßóÑ|½ßú?Jô°Àý¶ü€0GîðO¯Nµ½öQýÑùQöQýÑùVv+Cþ#9ûMîàáY­ð·@m}5ƒ{©ý¡#òÂîf1Ž›sßÖºï²îʲîÊ‹†ü!:Nsö›ßüsü)G‚´¡Òêø~+þ·öQýÑùQöQýÑùQ`Ðç&ð›+†MST‡ý”ò±ú¡ª¯ðÃAÞ½Ô·]ƱÈÙ Œ—­u¿eÝ•eÝ•¡ÈËð·ÃrÛÛ@e½ÀÁ€?œ€GÍòó×5øKáå¶Hþª#XÔî*g#åêsƒí]§ÙG÷GåGÙG÷GåF¡¡ÍÙü<Ñl¡x£¼Ô ´ŒãqO—'îŽ:Õcþ'9ûMïþ9þ¹öQýÑùQöQýÑùR°haé#þ^¯ñÏð£þ$ÿËÍïþ9þ¹öQýÑùQöQýÑùQ`ÐÄÿ„+IÈ?i½ÿÇ?¨jß tMbÁ¬ç¿Ô㉈-åÁ>Ü©®«ì£û£ò£ì£û£ò§`ÐósðÂŒêšéAÑ|èñùl­Äøc¡­¥«_ê’%««ÆÎÑî;zòãÖ}”t~T}”t~Tõ KHø_ è¢à[^êMçÈdo0Æp}°£Ö‹†Ÿ©^_Å{©´·dÑ•L-u¿eÝ•>`'Œíxv÷¥¨haÂ¥g?i½ÿÇ­iÞÓ´Ëønážéž"H·#¾´käºfžo &E*]bDÊ®ynG@?È"Kd^Â.!™&·xÔ„QÑIôÈ9ÓõIZæ^Ò7.Ü!– |Á€ß·Ÿ®©íTM¤Çþ]×ÿÿû]iQYB¼à¬‹•5'vxïÆÈ|½?G%B³.ÐÛ°C×<±ì(©¾:ÇŽ“ÿm¿öö|œ°tÛóÿÒ™çÍZ¤—õ²ðnh¡Kæ–DŒd³“¼×©ýºÓþ~ ÿ¿‚¼ÁZŒÖCMµM^ïK†þöYfµÁrY'Ø¿2°å ㌞k׿áÔ¿ètñý÷mÿÆkç³»ý~§ËòGNø+çù³kíÖŸóõýü}ºÓþ~ ÿ¿‚±áÔ¿ètñý÷mÿÆj¤z]䚽Κ¾2ñ7oS³¶ÚVF‘TÜç9‰³ÇqøyVgQÒýºÓþ~ ÿ¿‚·ZÏÔ÷ðW5ªiwšN‘{©\xËÄÍ ¤<‹[*ŠX˜@έ[ÿ„kRÿ¡ÓÄ÷Ý·ÿ¢Ì ¯·ZÏÔ÷ðQöëOùúƒþþ 䦇ÈÔ…„ž:ñ0›rÆÌ#;cj<¢ßb9ÊáX‚w.Ì3s[È’ºøûÄÁw«4Q¨I 9·ýð%ì—@>ò䳬–?µiЪEçÄÍ8u ¸g8Èô85‰¦hÚTóÅ´æù¡£bÑ1<€»þ?RÕít/íÛs*x¿Ä3,lQ’â(ãl†G€2œp@È ô ÕmÆçY¹Ò—ĺÚÝÛ³)V†×!v`DÀŽprNk²–'’*6ØÂt¹ÎÍaŸìعuT  r9”ôú2þuÙî¿çÚoûàÖXð}ÊÃäkÂ.›Ùqùy5CNðÊêvÏq‰uåDžht´tR4lx‡¦PãÛ)Çkè‘Ñù_óí7ýðhò.¿çÖoûàÖ?ü!/ÿC>µÿ|ÚÿñŠ¡¥øz=^Ò+›ox„E,Kµÿ|ÚÿñŠ>¹äÇÌØò.¿çÚoûàÒ/|Ðÿg“†SvÙÿÆÇçYð„¿ý ú×ýókÿÆ*9ümíä™üM¯K°Ž+gbÏ °O°š>¹äÇÌÚŽÚé"HþÍ1Ú gË=©ßgºÿŸi¿ïƒXÿð„¿ý ú×ýókÿÆ(ÿ„%ÿègÖ¿ï›_þ1G×|ƒØù›E×üúÍÿ|<›¯ùõ›þýšÀ¼ð °´{™¼Kâ1‘´?'"[–={zÉ[}6HÙãñ'‹Ÿd¦DÑ÷µÿ|ÚÿñŠ>¹äÇÌß´‚oµ[ù‘2~ø6c€Ÿ¦Y1[žWÓò¯5Ô4ÈtI¡¶›Åž'ónUÝ"µ³ŽveB¡‰Û6.¼ŸZ`´µ7q[x‘d“`ËÚÄ©8RG6Ûcs¹pŽC|Ê1ó óÕªç+ØÒ0åV=7Êú~Ty_OʼÛOÓíõK††ÓÆ~!gÛæ!xafL¾&kp$NWæBG̼üÃ:_ðˆ\ÿÐÛ¯ä·ÿ¬¹™v;+éùQå}?*ó¨´f•µ0(wfdû:Y#\)P ݶóÈrT :ysnËG…ÜÖöþ0×£Š)ÕÔÚ2K€ì‘BARUÇcò“Œ$æacÑ|¯§åFÀŸ1 É'µqðˆ\ÿÐÛ¯ä·ÿ xFèG‹uàGôoþ3G3 5=?V¹Ó½Ÿ™m3­/”ÌBÿÜt8è—Piº0ÒlÚÚÞÖXâX¤p]Š‘’{’HE¼ ¸å¼K¬“êRÓÿŒS¢ðKÀáâñ>µŽŒ‹jþˆ®×Œºz{N®Šæÿá½ÿ¡ÃÄ·ÿ¤ÿ„ZôOŒ|@$µ°ßšà:#ã§üxé?öÛÿiÑYßlÚÓBÒËê÷Ûå¸+=éMÅq0TÎq‘“ž{WÚe¿îT½þ”Ï6§ñgëú#œÐm®®°³ÝM¯i?“*³¬byÄ.v©êEz¶¿¥ê:Ü“Üc=Í€ƒOiÞúUÈis9;ÎÌî…·DY¿wÈTѼg} ym`±¤±ýÙ$©Á”àá˜ds†#½nÿÂäñgüþ§þCÿÄW.a•UÄâ§ZI>÷ì—`¡]S¦ âúöïêz¯áÏ^xŠæêÊ ­/®>Ó_Ãöh ò¼©]ÒYƒy†Ê†RTaSï<'=ÝÝÔ–›HÓì¾}Œ dë`ºÝˆË<-†–ýæ>æGÌ«\ü.?Ïòÿà4?üEð¸ü[ÿ?Éÿ€ÐÿñÇý…_ùãÿ“‘·Öãü¯ðÿ3¼Ôü%zÞ¹´—A›Vi´Ç·ÓÒy-¤}>RóÅ?–HF"/•´d"ìüG¦ßÜýš÷G—ÉÔ¡Ýn$Ú­¶)°®pÇcåÇVòvŒo5âð¸ü[ÿ?Éÿ€ÐÿñÂãñoüÿ'þCÿÄQýƒ_ùãøÿ}n?Êÿó=…mnmõ[M3ûõ´=?ÉŠËÉš‡åUIJï”Hvvœßó6͘©áífM?D·m9ã}δ±âñ£žÖBaõ|y›9tÎ>m¾qÿ Å¿óüŸø ÿGü.?ÿÏòà4?üEØ5ÿž?ù7ùÖãü¯ðÿ3Ð/4ï?ÆQÝj¾}E/Öòæ=>U¶’HB¥Œ[›|ž^s}Ö'=ÀŸGðž¥e­Y^ëZzj¯*K$¬%6öIöd á^Þ\Ÿ¿È!NkÎ?áqø·þ“ÿ¡ÿâ(ÿ…ÇâßùþOü‡ÿˆ£û ¿óÇÿ&ÿ úÜ•þæzÏŠtÝG[†Í†ç\Å-ÂGmt ¸±ûáRYÑ™[•,›˜Ü«fÏá=Ií¤ŠãOKø¯5bí¬‡ìÖÿÚ{pNÖ㘟pPw ¼ãþ‹çù?ðþ"ø\~-ÿŸäÿÀhøŠ?°kÿ<òoò­Çù_áþg°·‡.‡¼W¢ÚA ¥µï›ÂÃ=´jp«‹æù„€:’psÎeÆ’<[â=;W“LKU¶3Ev±¶ÆŽ;åt’2OÎ4JG8lÿtãÌáqø·þ“ÿ¡ÿâ(ÿ…ÇâßùþOü‡ÿˆ£û¿óÇñÿ úÜ•þæz$^Ö"ÑE¤ºw™Í…‰ÔaAo$“\¯œguYsJ_È,ïÊ `¸ÂÖ´çÓ|3=¦»¦}¶æîÂâ×G¶¹’Õ§¶K9]‰¼Å%¶` v(ÂÌÂãñoüÿ'þCÿÄQÿ ÅŸóü¿ø ÿGöçþMþAõ¸ÿ+ü?Ìõ-#Ã7¶¾4“R¸ŽôËö«‰^ï}²Ã,._Ëp_´I´4cc€¦A!Ï4ûT¼îÕ𯨮ü3l ä_ð¸ü[ÿ?Éÿ€ÐÿñÂãñoüÿ'þCÿÄRþÁ¯üñÿÉ¿È>·å‡ùž³qq§ßÞø†}"hZÚÂXÚ ®ÖUº¸&1[X¢±B¸Ûrñ’ŒÃ ¥ã:MKHŠ(í.¯ N$û<)‘É…l £™•^s»æÄ-Çì¸ ù†¹ êih!š Cí­úfžÞºu¹…ÞTh@•ÈT•„’°nàvÇ ÿ Å¿óüŸø ÿGü.?ÿÏòà4?üEØ5ÿž?ùÖãü¯ðÿ3ÑüEá[»‹½U4­$Ó¦·ŠK¨­öÄ>ÌcŽ+G  X€Êë³— ®~vk>Õ.íµHm´Ÿø™Ký Òj[âl†XçÛîÝæ¦HדÁùW>wÿ Å¿óüŸø ÿGü.?ÿÏòà4?üEØUÿž?ù7ùÖãü¯ðÿ3Ûô4}{PPÙéRÚÛùq[ªÇ˜4Þcl^´Ä cdíâþ‘Ù¬¤O±}7Wåù¾fíÓ;oÏmùßáÝŽÕà?ð¸ü[ÿ?Éÿ€ÐÿñÂãñoüÿ'þCÿÄRþÁ¯üñüÈ>·å‡ùž—®økW¼ð‘±·´ßsöýVmžb’hïDG$ã“4MÜãΆ5c¥Z\x{Pú‰¸¸Mfê;Àêmæ@Ff”à9Ž9lÔ)ÿ…ÇâßùþOü‡ÿˆ£þ‹çù?ðþ"Ÿö çþMþAõ¸ÿ+ü?Ìô}7ÃÚΗ.‘|tçÚÁiqwRÇæ\]˜n¢¸~X+HL±va¸/V ÝÓô[«ÏÜY]Æú}Ü×—7pù›dkw7O4.B±V*J6ÜqƒÆkÆÿáqø·þ“ÿ¡ÿâ(ÿ…ÇâßùþOü‡ÿˆ£û¿óÇÿ&ÿ úÜ•þæzËÁ­ÛXCÿ»ÙfÕe{½TØÏ Í !@¬Ò @±™çg·õ;[˽";;=#ìÐZý‚ê„‘©>\âGTªÊ±(vÒ\ € ¯ÿ…ÇâßùþOü‡ÿˆ£þ‹çù?ðþ"ìÿÏü›üƒëqþWø™êÖÖZµ§ˆæñ!Ñ®¤K–~Â’ÃöˆÃÇh›2ñ›WèäáÓ½¶iòÚêZ5‹2;èZ ±»’2J¤òHU8êˆ8 IÇÍÇ‘Âãñoüÿ'þCÿÄQÿ Å¿óüŸø ÿGö çãþAõ¸ÿ+ü?Ìú2ŠùÏþ‹çù?ðþ"ø\~-ÿŸäÿÀhøŠ_Øÿž?ÿ"\ò¿ÃüÏ£(¯œÿáqø·þ“ÿ¡ÿâ(ÿ…ÇâßùþOü‡ÿˆ£û¿óÇñÿäCë‘þWø™ôgH ’NŸ<âáU™­Øâ(G rÜœôAן©ì+À_ãФBy)ê­k ÿ£þŠŒ‚O¶G¼ »¾Ëq×s¥'Wþxþ?üˆ}r?Êÿó;Ë*é9šMò3ÜÝ_õ\/·ÿ¯½æ¾$ñƯâ¨!‹TœJ!Ýåâ$LnÆ~êŒýÑùQ^þƒ¡‡…);µ}½[ëês¹sNRµ¯þHÿÙtiemu-3.03-nogdb+dfsg/help/tiemu.jpg000066400000000000000000001226751220314353500173600ustar00rootroot00000000000000ÿØÿàJFIF``ÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀjC"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?óÍ ÎÚÆÙ†7˜ÈÎ}GÒº®bQÿ–äûÆ+CáÇŽtŸ¤¿ú%êo€^%×µŸ_[êšÞ¥}é’:Çutò¨o6!‘œ3îkëñy„rùF„iÝZûÛ¿—‘àÃñNUí¯õÔÎ7ñÿ–ß÷èS¥üùÛß¡Xz滬j-Ó,ïu[ë›Q§ØÎ!šáÝcgÚN7ÌIêwZéô]NÕí¯¤’þò ,le¾œ-š:lŒòªÞh%ˆ ò÷®œ&aN½^qåIÛ«íÙyœÕ°2§US‹»jý¿RŸö”_óçmÿ~…ÚQÏ·ýúv×ð^ŧK ú„qßêIe \iÅT£dÞ“†Ü»7dãvß÷èVer å4ÿ´¢ÿŸ;oûô(þÒ‹þ|í¿ïЬÊ(åAÊiÿiEÿ>vß÷èQý¥üùÛß¡Y”Qʃ”ÓþÒ‹þ|í¿ïУûJ/ùó¶ÿ¿B³(£•)§ý¥üùÛß¡Gö”_óçmÿ~…fQG*SOûJ/ùó¶ÿ¿Bí(¿çÎÛþý Ì¢ŽT¦Ÿö”_óçmÿ~…ÚqÏ·ýú™F(åAÊiÿiÅÿ>vß÷èQý§üùÛß¡Y˜£r å4ÿ´âÿŸ;oûô(þÓ‹þ|í¿ïЬÌQŠ9PršÚqÏ·ýúiÅÿ>vß÷èVf(Ũ9M?í8¿çÎÛþý ?´âÿŸ;oûô+3bŽT¦Ÿöœ_óçmÿ~…ÚqÏ·ýú™Š1G*SOûN/ùó¶ÿ¿Bí8¿çÎÛþý ÌÅ£•)§ý§üùÛß¡Göœ_óçmÿ~…fbŒQʃ”ÓþÓ‹þ|í¿ïУûN/ùó¶ÿ¿B³1F(åAÊiÿiÅÿ>vß÷èQý§üùÛß¡Y˜£r å4ÿ´âÿŸ;oûô(þÓ‹þ|í¿ïЬÌQŠ9PršgS‹þ}-¿ïФþÒ‹þ}-ïЬÜRcÚŽT¦Ÿö”_óékÿ~…ÚQÏ¥¯ýú™j1íG*)§ý¥üúZÿß¡Gö”_óékÿ~…fcÚŒ{Qʃ”ÓþÒ‹þ}-ïУûJ/ùôµÿ¿B³1íF=¨åAÊiÿiEÿ>–¿÷èQý¥üúZÿß¡Y˜ö£Ôr å4ÿ´¢ÿŸK_ûô(þÒ‹þ}-ïЬÌ{Qj9PršÚQÏ¥¯ýúiEÿ>–¿÷èVf=¨Çµ¨9M?í(¿çÒ×þý ?´¢ÿŸK_ûô+3ÔcÚŽT¦Ÿö”_óékÿ~…jØi÷ú¯Ú­ôÛb¢Iž(ƒ×Øgð®_ÕèšeуÃZL||ÖŒòbjçÄÎT✻fÔ(ÆrjM™'EÔ[MÛí·ÿ¨®4ëëky'k6D‰w?‘432¯©TbqïŒU›»éœùUm>S6¡#¿b¼ÿÒik/iUEÍÛO'þf¯JöMýÿð[i:•Õ¤wI¦Ø$2 Èg–‹Pǽ<èÚ€ëk£û}¶ÿã•ÖéMos5•ä°°ätûÊ«hÇÓÒ¬M9ß®_¤GÿW$±Õ­Ë~ºE¿ÔÙ`©µ~oÅ#½´»±µk‰ll`¬öòC0BznØÇn}êeÐ5—…%þÊÓã¡€žh#lFUœøŠ—S·KKÚÆÌR v‰Ku!náŸzîå–Òç]¼µ½¸6ñ›‰•e­¼ãw·ùã­qæy½\$`áÜ›Þý“ïæwe¹E,T¥ÌÚQKoWåäyëh¾9°ÑÇý¾ÚÿñÊÅ×´ë›+UþÑÓm>Ï)*¯ Ç*nà²ïƒÍz“èØ‹Ëv_²Y[’ŠÑážw#*#ÏQß'éÆ _?׎ï _Ÿ[ëOýq\8!Äâ1PÃÕ„R•ûßóg£‹áü54ëÒ›|¶ô×ÌØ´øà[ËH¦ñ_…¡Ô5²»nn—M·7)Ë09Ú<žœbŠñkž.ðþTW}L· ÎýÞ½ÎHÕŸ*Ôõ†sý“ÅZlÊÐ 1"D'—ËG‘£eE-ƒÌUxóÀ'ŠÌð"k <[ª\j|ðéS<ö ;»Åhœ341Ê©»n*V* –̳y#µˆªdÈ9««y*Žb?oš`èbkóJ²‹JÖÓ׺îyø|EZ1j4Ü“wþ´1á²½Ôµ=]Ò y¬–,R‘ÛB–ÅÙÙf ÷Y¶– H8Ïk ÞÚé–~!ûS²½æÖ¨Î^GjáAÆ}Oˆo$ï ~tßµÊOµi„¥„¡‡–U“»½î—o7ØÆµLEJѪ©µc­Ñõ{ -C³žfY ñ$wÒ¨ˆXV,$ uí×Ú¥}vÍ5?ßK­Ízu:ú 1å]÷ÌQ€èð݃\oÚ¥?òÈþt¢âcÿ,[ó­' å){U­ú®¶ÿ …LLb£ìö·sµŸÄ:Z}§ËÆÏ .=°IÅÉÏÈ¿/û¼Ž=ø§Ï¯iÊæv¼+3øLé möyYÌãv9T)´ñƒ»<òpRj^S”t!‡jgöºz‡C×ñ—Þ¼ÿÌ¥[Ÿðÿ?/ò:Mö×L²ñÚ]Ýh×°…Frò8W 3êx£Ä÷¶º¥î•öGi®kk)(ÊŠ_r‚@Î29×7ý¬ž†íeô5ÓσöþßÚ«ú®Ö9ÒĪ^Ë“Oø)–¼j­ˆþVZò=¨ò=ª¯öºz?µWÐÑõÜ/üüÞƒêØåe¯#Ú#Ú« P€¦”êxꦮáçä~ôW¯ü¬±ä{Qä{U_íeô4j¯¡£ë¸_ùù½Õ±ÊË^GµGµUþÖ_CGöªú>»…ÿŸ‘ûÐ}[ü¬µä{Qä{U_íeô4j¯¡£ë¸_ùù½Õ±ÊË^GµGµUþÕ_CGöªú>»…ÿŸ‘ûÐ}[ü¬µä{Ry«j¯¡£ûU?ºhúîþ~GïAõlGò²Ïhò UþÕOCGöªtÓúîþ~GïAõlGò²×hò UþÕOCGöªtÑõÜ/üüÞƒêØåe¯ Ñä«ý¬ž†ídô£ë¸_ùù½Õ±ÊË^A£È5WûY= ÚÉèhúîþ~GïAõlGò²×hò UþÖOCGö²z>»…ÿŸ‘ûÐ}[ü¬µä<ƒUµ“ÐÑý¬ž†®áçä~ô?«b?•–¼ƒGj¯ö²z?µ“ÐÒúîþ~GïBú¶#ùYkÈ4yªÿk'¡£ûY= ?®áçä~ôVÄ+-y Õ_ídô4k'¡£ë¸_ùù½Õ±ÊË^A£È5WûU= ÚÉèhúîþ~GïAõlGò²Ñ€Òy'Ò«j¯÷hþÕ_îÑõÜ/üüÞ‡õlGò²Ï’}(òO¥O¤Ã®\›m:×ΛíóxïU&»’Þåí刬¨ÅYsÐÑõì/üüÞƒêØådžIô£É>•ÍëÚ\Éo»…ÿŸ‘ûÐ}[ü¬‹É>”y'Ò¤Û{ÿ>Çþû»/çÔÿßb¯açä~ôVÄ+"òO¥Iô©6Þϱÿ¾Å^¶Çþú}{ ÿ?#÷ ú¶#ùY’}(òO¥?ý/þ}ýô)qyÿ>Çþú}w ÿ?#÷ ú¶#ùY’}+¯´–Þ8¼;ä³Zþõת§ÚfÉÞÕÊbóþ}ýô+B-JäZCow¢ÚÞ¤94Ò:²rTÝr2IÁÏ$ú×6'‡œRŒÖý×fðôkBMÊ/î;=nÛÁÉ¥O&™ªÝOz1åÇ"§æÏÈ;g½rzTµ†Œ¶W¿úK-Cöô#þE[ ×ÍÏÿ j3D²ý‹@³´–HÌm4RÊî†2F# 3‚Gzä¥Z”iºn¥ïÕÊ?¡ÑRœå55[²gMk{¶·w3¬1.÷°$)k%Qœz‘ÐUIì,ÈwOð ÿøÕs믘Cw¡Ú^\[(ˆÉ+ÌŽxìu`g­<êpŸù•¬?ð"çÿPªÑŒ®¦¶KIG§¨Ü'(Û—ðf•ýÜ7ú§‹¦·}ðËÉ`Œ©¼„ƒƒÏJêEÆš|Yª VW[h®§b‘Œ™s…öϯòê8 u9M¬Ööz5­’Ï3Bò3HÈRdvÀÈž•fM~æw3]h67¿2LòL!õ!$UÏ®ÍxùÆc!c8û­èä¶´WOC×Éñ±ÂJ~Ú2÷’Õ/6úúõω4Ýr¬µˆ’ÖÝAk) L›l ÀûÊp?N ð:‰ø_Q—ÖŸú.â£:ÖzøgOÿ¿÷?üz©êÝÕ—ÙbÓm¬­ƒù®;ØbìÄàœ ŸZóò¬ª­}:õªBÑ}%«=,~m†©‚©‡¡ '+n´V~§ t¡n\z(»9ºûÑ_a?‰ž>uÚR²‡#ø?©­%}0j¦ˆ%œJ ’P ©®•4°©¾C“×hí_7›ÿ¾Ïåù#l/ð—ÏófF0¸¦•LãŽ=kJíQ2ñøw¬k‡$œdsÞ¼Û›–B.fŸ:<Ž çY«tèÀ•÷­(4‘G,ëL =gÚnÀ£ôŠÑÖ¸Õ$ÿq?¬ê)h©à³¸¸ÿS ¿^Bú ŸÒ·4ÔóBðJѾ7)ÁÚr3Pž”ÆjSQµ6=(Cfï„ü=®êÐ5µ„—V°ÏÚJŽKwüüz—‰¾hš–´a±I,î­ÿqnÅUÛ{ï#0Ú0N@ÏW”xkĺ„õC{§•.ÈQã|”p}@#885é¶ß#ÿ„eüBÚ€:Ü1y ¦³*Ç$„€%Æ78±è ©w¸ãcÌn´H4ÏÞé¥ëÛ­´˜[–/ƒò¹ÏZØÖ¼q`ó­ôWf¸6ӴͰWÚÞÿ6Fxö®oSÕnµ^]JýüÛ‰¤ß!.}‡à+°Ÿâµ×ö¢É¦]Æ—÷‚å„Ф/aBLg#©ìzS ~Ok±X­ëZGöV„Ïç-Äl’üË€y9¨SºÛÜXÀ,\=ôh·ÜÊ¡£Á%‰' çVݧŒt»]MhR6*‡•ó÷0Û‡ ³ >SòàõëVÄ´y u¦ºMkpòZKep!hQ—nÁòœôzôņ‡3a OuâkmibŽiåH÷Æë*Ý*pzö5=Ï„uˆdS«I¾sC6åE‹vãׂ“ƒÏvçÆÏãk?8(·hØÄ”¨ûÌÁ@ÜO\-\âðC5¤V…¬¦´–†Y3µÜÈ|Ä ¤ 6ŸQéØ ¥ðGˆZé-Eœ^{ð#7p† ýÒ7ðßìž}¸£þo|Ñg§Í—P±m£sm²ØñšÜ¸ø×ÚMËéóÎö&o:æti™vàG¼ ùA眓U´®™¥Å§›’ß}ÇžÁ^E”cåm¹B1ÔuæCC|'­¾¥.ž,×íq‹ÇçGǘT';°rY:e¿…õ›™®!ŽÉ·ÛÜ%´¡™Wl¬ÛUrO'5ÐÿÂyfºÈÕÓJ›í’½¿Ú¹ ÂP€£fA>ZòIÇ5kþ–8ÅÆš–âÖáÌr2Ée¾^Y€Qí´QvÄž×í%m_²¡y¼™ã“`;Xô=Gjrx/^hd™maÙ£6n¡ÆÞ7gœñëÒ¶®> ´w7šdw^Ë·M:8PvÝ«ärÀç®}±T/¼b·Ñká¬Oª›}«˜H|¢8Æ91OPÐËÔ<7ªéVþuìF¹ ËçÆÎ¤ÿyCnˆ¬žk¸×¼{³áÙ4çÍ$¬êÉsy2K$Jv†©=1’O sšá°hêhô£PG½¨"€ ( P0£š( 'Š3Í4cÖih¤¦çüj[XEÍÜP£„Há ’œ"dõb2@ ( ÎãáÝä b¶tg7ì«j©pù—s~NFO5ÎÜè·¶þ!“DØ%½[“lgåwÝ´`œu5¿/‹­¤“ öy±¢ló¹>7Ëø sQ_xÍæÕ.ç¶²¶Š)¯ÍÚÏä ºAæK‚AãèÔC¦øy®¥ÜðK¯6v¶g·œ2Ã*‚Ì®„€ ü++\ðåöƒ¬·/o5½Ú³[Ü[J$Ž@¨þµÚêž?Ð5Dµ³º±½šÃí{wû¸¢ya~L’rÌpMs~4ñ †¿qhtáwµº²Gm2"G œ`"¡>ù'“Å+±Ù>3Âkl ãrÉÿ HmãºñÉ‚L2›Ò¤züÔï…_ò*cøÓ·P1ؤ#Ðñ@'úÒõàŸÂ€´v§ãœQžÕ2Ú\Éœ–ò4GøÂœuÇ_­&ÒÜv+ãÖ¯j¶¶7m»Ò’¡ùúå—ó´Ë‹[‹B¢x^"F@`E%(½ J‚~´mŸ´Ž{RñÛëT!»x8çúÑ·¥; ¥t84†4()ÁpiGLg½.0s@1Œëš—‰0*öÁ×?Æ©ÇÆ¿©‚yó³øsW¹ãƒ×4݃wÖƒàñÿê§p1Jxô¦"ƒ5 é‹y½6åS’G~Õ Çü{ËÏðåZPþ,}WæLþyå×ü}Iþõ\ÿÇÔ¿ï+ëçñ3–? =#Á¡~Æ\‚X"… tå¿úÕÒÌBŒäñùŸzç|3dÃÊ ñzèn_ŽF}‡¾o7ÿ}©òü‘¶øKçù³Ÿ¾ûÄ Ä¸n§Žkjý,Þ¹Åa\õã¥yÆÌ¨í’NkKK“pPzβŸ½ié#HnÉEkþBî'òª–Ñ î¢‰ŽÐîŸLš¹®Œj®?Ø_åQéZtú•Ï•ÐÀd³N)½Þ†¤VvšeÄÞ|‘n EÀ—+üchÈÝÐ ã½#k‡þú4¿ð†èXÛö?ü|Ô{h…Ï ¹è:6®ó¯f> пçÐãÞ4¿ð†h}§þ>iûx…Ï ¿Ý?G÷Oç^Ì|¡>Çÿš?á пçÓÿ4½¼BçŒm_CùÒìÝ?{7ü!zO±ÿãæøC4/ùóíýóG¶ˆ\ñƒû‡ó£`þë~uìßð…èYÿ?ü|Ñÿ^…ÿ>xÿš~Þ!sÆ îš6îŸÎ½ŸþÍóö?ü|Ñÿ^…ÿ>“š=¼BçŒmû¦Œ/¡¯gÿ„/BÿŸ?ü|Òÿ¡ñþ‡ÿš=¼Bç‹`tþtmÝ<û׳Ÿè›p-H÷ÝL>Ðÿç“ÿßT{x‡1ã{G÷OçAQýÓùײ¢gýSÿßT¡ÿÏ'ÿ¾¨öÑ ž8#ÈÝå¶Üã=© €~áüëÙ?áÑ?ç“ÿßT¢Ï)?ïª=´C˜ñ½«ýßÖ‚ PþuìŸðƒhŸóÊOûêøAôOùäÿ÷ÕÚ!ÌxÖÑŒm4lÝ5ì§Àú&Õ?ýõGü Ú'üòûêmó7´pþtlû§5ìŸðƒèóÉÿïªôOùäÿ÷ÕÚ"æõuùÐ`ò€HÃÖÎuG?ì/ò­«K©\Fƒ,ꪹ5‹¬œêoŽÊ£ôÑ|6™-üF'•±o1ô²kJÓV l{LãO𵉶S‹™A$® ¿çÐò;×3§ø‹P²ºŽFºšX•¾hÝË=9èkn[KûX£6w0¬’»<×;Ç̪y8ÉÆzÏ»µµ¶Ô&Ô§„,ï··aƒ3ÿ{oP™Éçé]4ùlÓÖäÊ÷VбâÍ)"'T¶_ô{˜œ¿ÚÅ ü3_=Ì1#}kÙn5 »¸'k‰ä‘V9äð S“è+Æ¥v沯Æ2a›º!8ëùT=êqÔ~Ί‘ÙøGü&3ñÙ«¸ñüöÖ³ClaeqtÎ É…ù#%ÆHäq‚C3ÀjНžT6?:î®LƒÄVf%VXÜíVm ð`ƒïƒ\Õ>1}£-vê–šeÅ܉sqe$Ã:…Àq eÚ bcÀº1ݵ°@åk–¾$Ñâyãn @Y/.×obHóøPžìÍuºv¥«]é×W:/Ùgp†Ý®C4¬¹ï´ŒÎzôÁ<¿…µ]CáöÔêW–K¶¿D2¶výÒ>P…Àã夋±Gú•þ¥%ÓÝ­šÒâZ5¹¹ÞI6gç•”<á•Æ®ÒÒݵˆZ{Ùæ9d…RÚi Q±Ê3|­’X©8$à`rÍ™ ê³êVÏ?ƒ–Ý<ѾEÔSh÷nd^‚K ç’0Nk>[A!Õ^Ôü¶)qr‡íO–æâçæÚ ‰>âü¯Ç憮:¯ì?ùí¨ÿàÆãÿ‹®zî³É¬È÷wZÙcà·$nÛØß3-Í#M{Ý:;«˜u:áþdŒêsJÈ; vç¾Òõî*‰ñ Þèkwqu»[êpCæÇ8$£fû®ÊFÇ`Fæ)'¹ÕYuÇ´’æÞWTKfŒ´×¨;Ó Â‚Ä”±‰#œa¶–í¬BÓÞÏ0),ª[M$ 9Fo•²K'œ ÎY©Þé›5½>ÊÚ[ÁÉ,³3_\1 …¾\g~3†çc5˜×- :ˆk©!™>Òúr,Å<Û´\dy§"/”†ê8ù¹¿}sk‰¡ž÷”’KDY]@ñÉÂäcwx<倂Åoÿ³÷®‹¨Oy ÉoqëS)W1£nvrøëÀÁ=ñÒG¡[˜Ë%úÈ@,«©Ü0¸xÈ÷À¬íK^Ôtß6b·2)̨?w ¿™Ãou ƒÝÅ“%ÇŒlµMbþapÙG¶Ú;ƒ½·y›ž@(Ä(e@ÙËmÎ0ý@ÂÄðA.£5ÕµåÔÍ”¢av…¥bŠûÙƒœ8 qÊ…ŸûÏþ{j?ø1¸ÿâëx¶,'Õ亞Ýåµ–;)c†I ¼äÅ3qÂXœ`ç§ËÅX,sÖIq4Z—3ÍÔTÈê.î7ò ¿h$‚ à ¥•@5Ô`ÙÿÏmGÿ7ü]bÉâ Y.£–¥™W÷rÙJ¢3C7– (VåpèiúލÓhîu)?³æ‡P·‰ü»£å».å#8Ipv–ã³³ ÿØVËÌw:Š8å[íó6ÓØá˜©úG¨5¥»kµÅìó’É ¥¬Ò@ £”fù[$±\à“€9Ë5;»–]bu7R-òÞÀ–¶âb7ÛŸ+Ì",áÇ3eˆ8Áämâ¤ð­ÅÄw×ÓZƲÎÖž\¬…å7SîÚ£ýk GòÝG7*ÁcûÏþ{j?ø1¸ÿâèþÁ³ÿžÚ‡þ n?øº¦ú€¶×u¥‚Fºš§[11b\y™ ¼í$yyÀî9æ¤%»}êîCo„tH®Dc,~ò°•\ rÒ.Kp³ kgÙ„V2Þy·W"Ò_\8UØìN<åé·×¦p À¨4T´Õu-RÜÉ|¢Ò_,(Ô'$î¹,%9'fpUq‘÷§ÒµÍOYcöT²UŽ‘‹’|ÆóeBÒ@ åçp-·ý¼ät’H"‰ä`ÅQKªXàzÉ>´;ûÏþ{j?ø1¸ÿâèþÁ³ÿžÚþ n?øºÌѼAª}ª("²¹š-‹yËmmü~í¦äõÝÐc—êšÕݕŬjEÄ«¹áœ—TPÇ/¼²qŒ6äœö‚Ì,h`ÙÿÏmGÿ7ü]-” ýÆœÎÒ¬G,r9Ëmrà+â#aùºFrAcmomQÝBÒÚH ÏÍÆ=~Gÿ¾[ÐÕ(¿äg¾ÿ¯+oýz—±2Øã¾&BÚ ;¯ó¯.O¾+Öþ#`iñsƒßšòQ̧ äô®Š_ =™Ûü/.¾8³*…›l˜Çð5]´`ŸíQ%8mIK¦z0U_…„Ùœ Ÿú-©ö_/ÄøoíAÿ£+I ~¦'ŒH>1Öý>Kÿ¡M,þòÕ}Øÿ㢓ÅÜx·UÉçíRgŽû.š¸žÐã‚­ÏáT!lð/u°zýñÿ}¥Kiâ%²Ó¡¶KwgF%ݥȽ‚§n'¿<ö…¼ý?W¸Zâ˜eÚH`zôéM2ZŸìIGüJÂpM»«¡Ý–ãñ@XeCgûÉ©IÄÄ#,Ürzž£’}j͇üxhüôi8ú–ÿëVo›e×û aõ’Cëþ ¿er÷wV±Ç`öðAœ ó’{’iF 5ʬe­g6\ú¯þ„+«‹ýZa\ž´OödŸï/óéZBX7‡¾qnnw>|ÇPÀ`c†#ߥzXir¦ý ¦®ÌqJsÀ®ŸÊÑŠÚ³›TM˯»wÊzrìg*+:ö(ü¤2 `Ä“lûŽÌd“‚Gõ®˜Ô»µˆp±,ñÚB&p]ØíŠ0~û€¬Ø šöW¹÷7FoA辂Ÿ–Ôo|ÖùP•Oð'oÄðýUWUÕYYlìÎFŠ=MqÖ¨êK–&±ŠŠ»,^j¶ºpÀ¦INpˆ2Çë\Õ”SêZô‘^Í´¹AÐë[¶Z}¾ž¢K–d¿1wïøþ* !øÚvR1Åm oVKͨ´¨-ÀR®=Hc‰?„~U¥t0H—7S]I™± +ƒ¶x#p{ãšÆÕ>ø?™­ ¥aÂŽ¤ð|îoþû?—äpßÂ_?Í•š0õÀ§­²FF&™5ìü3äöÿõuþU6®Î6ƤËùy¦æ»È‰î8ŒäŽJ¡6¬°ïà±õÿ=úVL“É(ùœãÐtj×DÔ¯WtŽÃ±?.~™ëT¢Þ¹Rãæ}ìû™ÎI÷®‡ÁX:…Ú®IظãÜ×2êÈåXè§Ã4¶òo†BŒe})Ó—$Ô««µý«ý“™>Þm¸Áòä!ˆôâ°5[—vˆ=Ô­ËI3uÿ?Zá^Ie9’Fcîi»yÀäÖòÄI¿uX…·6/¼K©_¯1XÏð(Àü« œzÑ‹CÔe¶’ámFŠX–ààwòk=Ù‚2çê+ ó}¢•º÷©ÇQøUâ« ÷‡áPŠ‘ÜxãÅǶù× Ýé¦îê˜ï.mf…0Є9V*H!Õ» ¯=ð(Ýâ{ÜHoç^ ½ëš¯ÆBøŒÉ4{‰¢x¥ÖïÞ7R¬¹ PG•Ȩ­<,œÏ¬[Ú®v†çðâ½áý‚™<ÃÒ%}MsaÒŒ]GÐÖzµ:ïO¿{1X\+ÇÍ }ÞõŸ£èr[k­r-ž(V-¹uÆæÉ5ì©+þEsú€ç§oñ­)ÖçÑ¡J9›¾¤w¬¹q“ÖµoÌk.ugԚꉓ*ÍiÉsnö‘$€2Œ}Tà Ê~µ œf©«…É­&k[‰$÷&AP{p?@(ñ6žuM1¯-íeŒå°œøÏ¾OÕL±Ü+ªðì¿h‚öѹBHö+ÏøÔN+—Q§©æºlø“o¯J5¥k[èîÔ—Q´R{°ãü*MB!g­Ìƒ€_xúƬjq‹Î9ÒALàÿ1^}8òÖŠó_™¬µƒ<æëþ>¥ÿxÑE×ü}Kþñ¢¾º_9cð£²Ò?ãÆŸpuúš—\»k{[xa%Kä’=0:}Içè*'þÛ7ûæ·üÒnÿÝ_ë^}8)O•›7dKeáfÝy8PÜ‹’ê4Ý£y,ìK—sÊ’ u$ž•·á¸`“Sg¸ b†”†]ËòŒò;ŠÚ:å‹é÷¢Cné!}ˆP‡ÎÅ …ä(àóšë²¦í™Úê휃Ÿô{ž?儃§û&¼®q‰{šõ93ökŽ2|‰?ô^[rs$:ž+<^è)•±ÍN: ïV; ®4k#·ðÿŠžóüëÔ¼»À˜ÿ„¢÷°Ãqø×¨­sUøÈ_ê(¢ Ð(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)¥-#R{-ŽâF²××ÿ®+É—ýezÏÄ ²öÏõä©÷ÅoKáC§³;_†üx¾Øäçkóÿj½ü”Èÿì(?ôeSøqÿ#u©Àé'oö ^ˆÅ͈c?ñ4úlÁ4ãÆZÇoô¹ô#I§ßYõ ÇáNñ·5Öëò_ýÔzqýõ‘Ïoäioô:Œ›Q¸ R—€ ’J2ÔŠìeñ¾ƒû«{9ïôô†(ãŽâ”ÈR7s呸pÁ<ã#k…ºÑî^òI ØCœüÄŒT?Ø—Øû°ôþñÿ V Nú?èë%´Ù¼XVD+`±¯•Fo1Nï¼åè>¸¬GV‡Yñ$wpÜM2£2«‚§ÇÏ#ŸNýú 翰ﻈ¿ï³þ¡¥iwp\#KåFÝÁ$“‚?­H.ËúÈΙ1ôÛüÅuVã1'¦s—°ý¢ÒXs‚ÃúUë;ûï³ 6ð0J6AÇá]8z‘‚|ÎÄN-ìnÆáõôªÓøžÉÿ]ã‹H’k àèàÿtÿ…QŽæi¯MÌÊ¡ÝÃmBx@ëøS¯^œãh;„`âõG+ª¾ÿŒôcó¯hðQepx'+ýkÅuñöÇ!û¤ ~½sáõàİ2êúŠPք߯Žî_»\ö ~_·%c´õüñXz—qíSAjTÎfðòsY3“¸ƒZןxÖL«Íz0eF¨$ïV­A ïüêÉ o½Î ®Â$UsÈ*ß÷Ms§¯½tþŒ¤óNx@Ç?†ýjgð²–ç âa·^$c˜Çoö<ÚEÆç‰ëõ¿'®¾9Û޽òOõ<¿&sÇü³Ç>äWüÄ/T[øæ—_ñõ/ûÆŠ.ãê_÷õRø™Ï…Ž•ÿ×?êj/ŒKû­üêm#þ<"ÿp3Qx‡ýtú7óó™¿ûìþ_’5Âÿ |ÿ6Uпä;iþñþF½"6xŽõs';Áº×•C4–󤱮‡ Õû½búÿýlíü+Àý+ž…e´Ñ¤ãws¶¼×tûCóÜ û±óúÖç‹î_rÙÆ±ïc-ŠæÕC€ 7§zÖ³ðΩzAˆóÓÍ;r7Z¥M"%­ÌwrìY‰$ú×GàÏøúºõڿֹƒO-—÷«W÷zdí%³ìr0xÎkRåš“-««ž®Ñ+7™å©f'†²¯br6ñÎk SŧÈÈpxýN+¡†„iˆ“è*á‡öê×µ„çÈt2júcê±ÝJ!K¼á%ÜÃÓÓô®9Üsž3ÔŠÖX£ÈR~BœÖÑÏ G„*àci©ÒËU¥qÊ»žèããó§Ï5³"·özÕ|ÍÛNO l^Ÿ­9; jräH¬ÃÈcƒƒó kCªÝZi“¢Øá$¼›Ç®?J‡K±s¨]Å*4p†ïa€óõ­gø§\Y ]>Ì^CcÓ§>çüë9ÎÊ줎r6{ÍBYÏI#è:UíjA•cïM Àö^¿Ì~Ti¶þZ— ôãž•WQÿIÔ§SÌv±Qþ×9?θi>jÑoºüÍ'ð3‚ºÿ©Þ4QuÿRÿ¼h¯®—ÄÎXü(ì´øñ‹ÜÌÔ>"âh2;?ó>Ž3aûƒùšƒÄ|Í ³1_7›ÿ¾Ïåù#\/ð—ÏófU´upD2îp8®ºÃÁñ€örÞ©©®wAÿí¯Ôÿ#^±áù-âÖìÞå‘aWŒ:þµc‡„\Ú½&ÝìŠÚW†œ•];Oê3¿žÃæ>¿ZXT¥Ò)!À?mÅâH~Ñqs,åBB‚sŒüÄœÜà` gŒV%¹ÿIWj†ÙFk®[5dg$º3ʵ—Q›Ô6~¦Ïª\4p• ³1à f¢ÁïåaÈ'9ü+oÁ¿ñõt?Ù_ë^}8©TåfÏEsBÇÂèsu3LAûª6ñ®ªÏB’+iÞÍ`‰Y›ƒÆx'Ž*燮 ³Ô$šr¿$ q–Ç=½^Ån–—ˆd‘Ýe ónÉ$c=zý+¶Ü®Ð‰–VÌvÇ1óÉóŸ÷MyeÈÄÒ¼z“þîÒâW!#8ÜÝ?­y\ìݽXšÇº2¿ñT¡þ*›9ý+‰Èíüâ§»qó~µêKÞ¼·ÀŸò4ÝãÐÿ:õ%®j¿?huQRXQEQEQEQEQEQEQEQEQEQEQEQEQERZF¤ö&[/įùÆ=Çô¯$Nd¯\ø•ÿ x‡8Íy"­ZޗЧ³;O‡«ŸÛŽ ‡ÿÐ jàÿÂÑÿÌHèÊÉø~â§€c³ÿèµ¥;~'óÿA!ÿ£+f(œ÷ñÿ ¦®}näÿÐC¦ÇÅÏn?:—Æ¿ò8êßõõ'þ„j/›«O¡þ´ ©$Äš.­©!µ‚êÞèæ·Ÿv׃• ‚­]‹ÇW1Og2é:`šÍ™­äXä_,3³” ®ߘŽ;÷©®4›k¹ÚY#ùpHÍ5!jÑ V,âK†-:y<ÐSfÖgflc=êiöÞ)Õ5©E½ë«B&YT ü„&Ì.IÀÀÎ=Fj[ Ú[Ç Œ2&]ê¾q’?˜#ð§YéV–’ù±ÆwºY‰Ç¾3ŒÐšz¡ê&´âZÿï¯þ„+Ðl$Ò—ÃÆY~Û*™ž^vx\û€{Q^y®ø•¿ûËÿ¡ ëììîncÞÚY@˜ã-Ê»0ѺwvØÎnÌê$Õô0Kh¼¤YvH"\“ÆÐÜcƒ÷³Ö‹MWL¸–i$†ÞÕX¨  ,@œ õè1Ó­gÙhsÉkq5Í­ÒŠaDd3ƒ» uÎß ÍAu¤Î$ðÚÝùƒ¤‰Êcð:zûÓ’ŸÃry¥½ŽRmš€høÌHàúœ°É÷À_Ê »´‡Y·ù.WœŽ¹õ.©ÿ)ïèOYÍp¶ì¬Kn$m $ý5Ë[øŽÆ‘Ø‚ÚúãN˜Û^|§¢·fÿ>•¥À12©àÀ}k\ÜZj6íÜjàŒnǧc\Õæs§Þm˜HŠ>Sœð}ëhb6SèK‡c¾ûh‘pqQ·Ìx®&-~æ%¸ëЏž*Øò˜Ÿ÷k©U§Ñ™¸³«†Ñ¦œ“Z®-Qï"šá#XdQŸ_—•px¾ý—m¼lŸL ¨òÞÞ¯ïæm¤ýÕà©ïYμ{”¢ÍÝ{Å "µ–˜6ÅüRu$úûý+ž³±/&XNI=ÍX·µxœv…h¢…Œc¶+ޤܰЮV4ÿòÕÇûDóô5´zåX³ñ©êþ™8¥Cø±õ_˜OáguÿRÿ¼h¢ëþ>¥ÿxÑ_a/‰œ‘øQÙixAÓêj®ƒ?ÝoçV4ef³TJy5‰Qã¹…$VV 0G5óy¿ûìþ_’5Âÿ |ÿ6TÐä7iþñëô5è¬ñÃùcíf¼ª7x¤YŠºœ‚8"§–êâå·M3ÈÞ¬kžgXÖp»¹×ßøº(r¶°n…ä#ù ç/uÍBÿ+,ìû‹Àª¶Öwm¶Þÿ²3[ö~ ¼¸$M4pÂŒ?>jµv'̞݉I'©®“Á£ý2èwÚ¿Ì×9"4NÈøÜ88¥†y­äß ¯2§9rIH¶®Nº¸‚Æ"÷2…ÿg#'è Í_xĆ)e(ìîwõ«–’I%ɑٽI55­Íãm¶ä?ìŽãÒº%ˆœÝ£¡‰nO>§}{&é§vã'ʨµt‘xJûìÒË4Ñ+$lþXäzúñ\ܪUÙOcŠÂ¤d¾"¢ÓØ„žjQ×ò¨‡Þ©»Â²EHî<@ñEßѺ}Mz’÷¯.ð“â›Â:ÙüëÔW½sÕø‰ûC¨¢Š‚Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÒÒObe±Â|JÿD]3šòUûâ½oâOü‚!u¯%_õ•½?„ª{3²ø~@ñD ÿè&µæÿ’¢9ãûLèÊÇøÿ#E·ÑÿôZ÷#þ.[ØGÿg­d9ßÿÈ㫟ú{—ÿB5”1wkøÿZ³ãùõúû—ÿB5š1scô?û5Q(Õ¹Õ µ›ËpÌØè¸8ýj凌ÆbŠ,‰0I`20õ÷5Æß¹mRëw8r*üÚ\è6z ”2Ü\IÌr»œçþúTÊ*JÒÚz3xŠ91æÉ4˜nlÿ3SYj0Þ1TÈ=ƒÏz‡Äþ¸ðõ•ÝÛ^Çq¤è„ oÝž~R¥0G¸>•‰¡ÇìgÒU8ü„•´ z›šïü‚ßÙ×ÿB×YNöÒC4xÜ„ßð>ÕÊk‹*OPWðù…z/‡ôûKÍ-¤¸@Î àïÆPG‡s]˜i(ÆM‘5vŠ’ß«éÒZG‰|Õ$ä€À’O9ä~_žJèuý6ÊÊÐ=²8'»€ÿx÷ªo§ÙIåµ½Ó*Í’žnмŸsÓØWL']u!§{Þ©ÄéŸùà¿úÿd+ÿÄòÍIãkŸåÿ×­­e]Æ¡‡æzÃ\ÿoØÿ»&?!\øåýƒ žÞ–Ì‘üý7©ÚߟÇ5Mì'E&9VAþÐÃ~J¾jþ“§6©q,K ˈÊIÈ ~µ×R6¯#8ÊW²9I!$Ÿ6Ý×=Ý1UÍ´$œ"ž{W¡Åá‰çÇ•:e1œŒ ›œÎ™o¡¥ÊÙì¿R×LÁ–z¯Qú×7²§ÒF——cƒŠÅ˜r*ìzQàË&ÙN?Zì¢ðÔ—̉s»Ê ±NâàôÛX÷–íiw5»2³FåK)È88­iR¥}5&NEh"ŽßˆÐ/¸ïP^ÚE$Ѫﵔž`ž=ˆaêjÏCL½çLç ž#úšÒ¼¦ü‰ƒ|ÆIéX× [Xõçð5´Ãå5‹vßñ7ÕøõþF¼úŪüͧð3‚ºÿ©Þ4QuÿRÿ¼h¯°—ÄÎHü(ìôf)i A Á95‰\Éq3$1$œäädÓôŸùÅßäͪ?}ûl÷[ùŠù¼ßýö/Éᄾ›2¬í^öî+xØvÆMvÚo„ìâeóÜÈq…#ƒø äôr×êô^± ÝÃc­ZÜÎÄGÄ ñ‚+,<#Èåk´\Þ¶&Óü3y$¢Ù!ŽÐàadùzçhì{U |ý©9Þ+B }à¸{¥µƒíyNŠSËëØpzž¹÷Íf Ò {‰V4 ³œWTyÕù¶3•º[~?Ó¥ãù ŸIÒ¤ÕnÕ,O=j½ã¬—r:©#•nø4ÿ¥]ÿº¿Ö¼úQR¨“6z#fÖ(à4ou!?*7#?AÖºÛÜ$ry« š@…Ù$!X;(ç¸íÞ›¡_ç_K<ÄÇ¼Š ƒ‚Åxr9¨›S‘່E’…Ê.Ðö{àþßÊÓ傱ž›²›Ÿô[Ÿ_³Ëÿ òËŸøø—¿Îz…̱[ÙÜåXÁ…ÀÜy$©+Ë®i¤ ñ¸‘ù×6/âC¦WÏÍRúcڣuÆYÛøÿÅUw×xa‚FGº`‰¼¼ž§¥ŠòE«$Nnà“Ž Á8ëÇJ™N1ø†“{ æ·©^Ã<77òËó åFnLcv=qOÐÀûr*òKÇ`3Íw—zÙóIÄX.þHäéìj¤ÑEnÊ"“xdV'ÜŽŸÎ”jF_ ·(jÑ™4É•A-´>†º ?ÄbÚÍßS# •c'?ʱØä}zÔ–öxžRñÇ\°'ælà`èkxVT“ºÐ—m›Ÿ-Ü{.uD•3»(#8Æ*®u[2Zúîƒ â«®„Í·÷ð)™dlÜ»—£5€Ü2þ£Ú7>r¹t±µö«cÿ-ãÿ¾ÅOk«­‹»ÛÞBŒë±²U`äv•k¤ ¸ahwÉ'—´§Ý#’O¶9©ßò £Ì-(pdPÛ‡±Ïê+If4ïÊÑ*ƒÝ‹âY£%ŽþÝ™vlÇ Š-xÛ›sôCìåš.Tí-×ëøÖ¶öbß÷O¾Q&cÓëPyKýÕüª£Š‹ZD7Üéeñ‘]Míº«í,#T@J’G@:j´ú½½ÍÄ“Ïy K#fÜ9'’kÊOî ÔÒôÛ ÀVs(mè¿»UÀ Àwúçð¢XØÓ\Ü ©9;\“ûBÈuº‡þû˽BÒK5†+ˆä•æF “’IÅgÏ)pë¡°7c#ëKª 1ŸJrÅ9FÖÜ;1Ïý+ ôÿÄçV>¿ýzÞ=:ÖØ?Úú¨ìøÖ4?‹UùŽ8[¯øú—ýãE_ñõ/ûÆŠû |LäÂŽÇJ8°‹væj?pÖÝz7ó&?Сÿp3Qø‹ï[vù[ùŠù¼ßýö/Éᄾ›)hÒ$:Õ«ÈÁSq±éÅw:þ™b¿¼¸?÷"ùçÒ¼ç­=¶¢’Äã 2MrÒ­(FÉÊ7wgKwã™AKH–ÙÏÌkâîæíÌ—<êÍšÔ²ð¾¡u†‘¼}wI×ðk¤°ð†œŒ©sæNÍÁ%¶Û€+NJÕ7&ñŽÇjè|'H—!H8ûÀûÊÀô +[{û=&kÛíbýžY#ƒÈaA< äàzëU¡’þébŽÛU¿{¢Ò,Ñ“X¶L–òOÊdM£€H$ãå ¨¢¹+[ë‹›Ë[c«jhó.âÜ„sæ`ª¹“9‡Ê ‚X.×ö]çýµûâßÿQ`4è¬Ïì»Ïúj?÷Å¿ÿ£û.óþƒÚýñoÿÆ©§EfeÞÐ{Qÿ¾-ÿøÕÙwŸôÔï‹þ5@tY¿ÙwŸôÔï‹þ5V-­f¶æßÜ]îÆ<åŒmǦÅ_×=)Kbe±Å|Jÿl`z×”¨ùëÕ~%œXD?Ú¯*_õ•½?…Ofv_änµëÑú¸Õ­uŸøZŒçûO·_¿Y_F|]k×î¿þ€Õ±0â·<ƒªt?ïÖ¬ÎxãþGM_Úî\ßF Ò¿ãêÏÓŸäÕ7ïjù<ý®OýÔ:VÝŸ~¿û51¯5¹a½’•J¡Á-Ï52x«Q¨²€Š0'鎾„þuÏÞý©sŸùèkÒ´¶ð«x{Mk¿ìÄtòL¹!ÞB%óÀeÊç9ܸéI¤÷ z”Þ&¾–2®á—xld‘œc=}8ü*]?V’âqЏc·*Gù5Ôj ’Êá"[Tº‹N˜Æè¿,’`£ÙƃèÄvÂhÇ7±ÿ¼8¡%Ðú¡qö;WŸ ÛÖ²müE} ‰ü­àd!#?‘«~#ÿ<ßQüêo M¦®‘8y´¸5/´FCêpù±˜0wààç±ÇCCJÚŒ¢¾'ÔUP ÈãhÉãŒzú>†¡º×ï'“t®€ÆæÉÀü묵Լ4–‘‘.”,U'–íh~Ñ4„¾ÆŠ’£îcæqÎjÝgÃw šØIeȈùQCnC™|ÌŒ†BGËüBNœb’ŒSºA¯s'L»7ˆÛ”PAàç?áúÔz¾¢Ö&%E Ïž§PøxþîNÿ»_ý ê§Š2/-Ol7@H¾ ¼UÚ¥BóÀ'Œþ”_7?>ñéŒc¯ ð­=SÓåðÅÅÌzT7s1Ï=º—Xßvö'ù~^{q] åï€Öô_Z­”ÖñYÍhöC)1¸ÈûÄdnõ¥¥Øûœ<ôÍ2/—'ë¡G@’ áÔ0Ï¡¬oûsO]T–ÕmaV‘cØYùÉaýìc5±Âßþ¸'O÷EPüšô¾l‚$]Šv峓Í:?ÜÇ÷B¯ ñ‘Óñ¬8óîÆ·4sOЭ¦¹þÌK½_ú<—40®>ößâ|ôÏŠL5¸Æñù?»L÷ë×ó«Ún¸÷3¬rF¸fÛ•íyý+;Ä:¶›¬4vº`°½mßkHOîXñ†Eþó‘ҡйÔ!s*ò.;ž8?J¹bu}[Ý¥o0<ý `\ø›êŸîÿJÖ‡ñcê¿2'ð3†ºÿ©Þ4QuÿRÿ¼h¯°—ÄÎHü(ìt‘›(z“¨úšoˆþý¯º·óí$âÆþÀëõ4Ïõ´ÿq¿˜¯›Íÿßgòü‘®øKçù³2Â×í·ðÛÚ$nO ÆkÒ´m8;k(|ÉäùGs­yæ„@×-Þ?ÈתéÃNÕ-ï ˆ›;G~ F{ŽIj]Mìjiþ–òÿÈi¢Ø#,ÍnÁäž™8ìk"Vñ‚p9úÕ­ê^{H—·›¯Îyã?É›T²Ó\IupŠTç`å¸öй£w6C³Øókñ‹é‡ûUoBÒ£Õ.dI$*±€NÞ¦©]Ì..¤—’ç“[Þ ÇÛnÀÿžkßÞ¼úIJ¢LÕìvFŒ¨ëoalVÎv¨Î=Ï}k¢³ðÔ×0O+\Ä<¬Ý&X.ìåž¿ZÎÑõÓoá”·î$`g=ªT×µ&X„šF-¼ . ]§·q]òS½¡¢2\½LÇÉ·¸ü‡çþkËnyžO÷z=î¥geË- l«Í’çÓ¯zóy0ұϵ͋iÉXº{ÿФéƒÍGß"ò¾â¸Ñ«:Ÿ ^Çe⨥•‚Ç2Œ1ô W®&cácnFÀ;NÈôà‘øšð(§]¡%…ûŽ¿y~ž£Ú®{QRW’ Uã§zÎtùµ!«žÚÚ}‹îßgnÛ³»1œîÎxï½ÿï¶õ5*An!XnÁTÇs~d}Mxü$Ú×ýfüèÿ„£Zó—þú¬ý‹î.V{¦N(-ŠðñâÝw¶£/çMër 6£)Z=ƒî¬÷-ÞüTWAwAs sDßy$@ÊqÈÈ5â#ÅZØ]£Q›Z?á'Ö¿è!/âhö/¸Xö¯ìû+Éû·•ýÏ)q÷6tÿsåúqÒ¦‰c†$Š ‰(UE @íŠñøK5ÜcûJjˆø“X''PœÿÀ¨ö/¸r³Ûæ´µ¹fi­¡”‘´—Œ1# 1Ïl;øõ4%¥¬7â;hb¬¾bÆ`¶â3׉?SšñøIuœcûFûê†ñ&²F¥?ýõG±}ÕžÙ5……Îÿ>ÒÚ_3ïù‘+nû½s×î'ýò¾‚‡°±’Ú[4%3D¥J©Ê®:`p;WˆÿÂC«÷Ô'ÿ¾©?á"Õÿè!?ýõG±}ÇÊÏvc†$Š%DUE £ °§oµàãÄ:¿ý'ÿ¾©á ÕðöŒÿ÷ÕÁ÷V{¾ñŽ´»ÆzŠðoøHuúOÿ}Pzýê=ƒî¬÷Þ¦þõà§Ä:»uÔnü “ûVÿ Œÿ÷ÕÅ÷V{œ¶¶—KÖðIÌTt9Á`G'å_ÈzRÇgkA´1„`˶06»pvü¿N+ÂÆ¿«gþBÿßTïøHuúÜßt{Ü9_sÝ-á‚΂Þà…~ìq¨U9à `µ³4BÞD!(`Æ2º2xéɯ> ÕØ`ê7ÿ~™ý»ªçþBÿßtý‹î¯¹îé¼^W—Iå'—ÕbqòAòŽ=‡¥K»#"¼ û{UhO÷éãÄZ¸À•Çý÷KؾáÊÏzÞ3Ö“Ì¢¼ëú³F®úoöî©ÿA ÿï³G±}Õ÷=óxõ£xÇÞàÛº§O·Ïÿ}š_ííTsý¡?ýöhö¸r¾ç½ïÞ£x#ë^ý»ªÐBûî”kº é?ý÷G°}ÑßÄÆÿE„~5åÈ>|Õû­Bòüºº–QŸãlÕuˆð®zVÑ*±q÷QØ|3ˆËã `ð¿þ€Õ¨NÿŠ‘8èu@xÿ®•£ðƒIݪ\j >XcÚ õoþ¶iúf˜_ƆúáY!´®¦r8UR[õãó§'­‡usñ{yž.Õ˜r Ü¿ú¦é_ñógÓ¿?÷ÕPÕ. Þ§spzË#9ú“šÐÒãêÏןýš¨‘o´«·¾’X¢®sÁAý•}Œ}˜Œÿ´¿ã]fFìwô© 1›ˆüÄÜ7téßúÒnÈv¹Æÿe_“ÿÇÎYÆ´4:î+”ibتrX°>¾Ÿ…tw…Vúqòñ#}ÑÇ^Õà º¸ZÅMVÜÝØKêGËÿdßàƒ=±¸cù×bÄc$ði¹_Qš`r?ÙøèþÿyÆèÚÿ—oü}Æ»”hÆ•1m›„ÈP÷û­œ~Ÿ¥SÞ½êS½ÂÅ Î{X_Ï@›•T À“‚I<}j~Âkà À¡™ Î85²3Ž´Ž}{UÆÿcê¶?÷Úÿ'öN¡ÿ>Ç=¾eÿìwüêö¦é›O,¡_³Ç÷ëŽsŽù©nÍ!¥¡ÂA¤ê :1·?)%×ük°†?.Ö8%S?@F¬3øÔ§±B8Ù´kÕžA%М‚ΣþÈÔѯÞ_ñ®Ä°ÉóW´i5kvwTŒ8,ÌØü{TÍòű­Ï?þÇ¿ínïµÿÒÑô›Èïci ªá‹3€~µ¾p­Ò¦ˆóøS ’1àúb°.üMµ_÷¥o•Æ;VÿòÔÿÝçò­h>«ó" 8k¯øú—ýãE_ñõ/ûÆŠû |LäÂŽËH²‡¯Üþ¦™â3óZºßÌSôøò„ú þmLñù­Ýoç_7›ÿ¾Ïåù#l/ð—Ïóff›p–º´ò}ĘúWauâ˸|p~êþ}k…ÆiØ•ÇN´ ¬eÞ¦Íï‰õ¼ªÊ!û±qúõ¬†frKIîi1Æh¢R”·akl(â¶|3oa)¹FŽ˜ A# Ö/Ö“á' ) jçsuâëF-ÒIßûÇå_ñ¬Ïj7§h›ÊŒõXøÿõÖ(éK‚;©Öœ÷d¨¤<’í–bƘH"œŽÔÒ0qY”0®iÊ`?J\})ÛH<Aq­€ÇRSÁÇaùPÅOEüi<ÒR)1HbûÑž(š6ŸC@h4bŽAÏzJ3KÀSëIÒ˜ IE4 I4 Š@6—µ)w¤Å0 ÒfŠ)QG~”¹éÇoJ`QŽh¥ ¤ÇcN¤¢À3m:Ó©)XbàQE.(QŽ)1NÉÚ×½0¸ô”PŒd UˆJ#üËÞ«P  V=OÁ~0³Ðí¤‚c²79üjøþÚò¶Ó"dI?ÖÈ‹Ûé^l§žI¥b[sëCJ÷ »XcÌIï[ZPÅÕŸ¿Ö±v1<OÒ·4Á‹ëhÏðœzãŸç@¯µ †ÔfA+ª£XŠŽ‹™¤TŽY™Ù‚¨I$ðZ‚øÔ®AòÐÑcw%…ý½ä@ ‘d\ôÊœÿJ–¯žîÆú{I'21¾ÉIƒÎpzU½òvºE39€ ’r0}k3S¹ŽïU»º†6Ž)¥iä¨$œg½\ÐÿãñsÓpþ´S{[­´É%N€Ö¹o·O´:_\î5Ñx-¤IÎNàk’ÏËŠšhoäÓ%½I%h!uÛÌÎÒÀ•ã9çiçÚªëÙóåÿ¾Í[¶Õ×Ãú…‚!3^I,~ê¢?™$}=sÆ]c¬Ðçšh¤Gvq±HÉɶyüVñä°K QHË¿%Šœ —ç(äõò×?÷ÓÕ/-Ï8ØE3íÈ?ññ7ôÐÒ5íÑÿ—™½¿xj¹ëZ3¾˜tU†25!3ù̈)·‚09ÏLÐV·—æ0n%ä÷Ív3Ic ¬~fˆ;}HÄZÇÔ_ï í­yÓmûŸ!Gþ:) äQ¹–YΑFH ¬@¬iŸoÔõ+{yÜÏq Ž0Ò`n'ŽMf ÿXPÆ·ÐíkΨ;wƒƒ‚iˆ¡~×ú}ýͤ÷2 måhœ$¹©ÇjÎ}rב«Lì …;˜ž9þB—ÅôšÖ¤á|³i ² v[XávBx-±FNëU´?øÿ‡þº©ë^ô†ŽÛï\üÿòÕ:ýÞßC]<ç=³\ô£þ&z§ûŸÒµ¡üXú¯Ì‰ü,ᮿãê_÷]ÇÔ¿ï+ì%ñ3’? ;=‹ûùµ\½‚ »¨á‘~dpl‘ÔôàûU-#?a‹ùgýM_S¿ú•ëõ5ó™¿ûìþ_’5à |ÿ6W:¯÷OæÆž4[CŸ“§¹ÿ¹,É 2žæ¬Ç­ZmãÊSµFàã …#?\œþy¦Òml®eÿb[à÷êßãHtkaÑ~œ·øÖÔzõª%‘¶°lï\± Ÿü{ó^}NÞçËU•Tý=è%I·ª3?±móÂãñ?ãGö-¾zcÔÿk*ä‚NïUg¹ŠÞB¯"LœPYSûØŽ™ÿQ¢ZäñúŸñ«–º­¼2BëŽU˜i?´í<¶ãÞOß/ý(õØ«ý‰mžüÏøÒb[uçó?ãV£½·àL™é÷…ZÉzP30hÖÜ tã‚Æ”hÖüð3þ5£ýµ ¼&ÞEO4)ÃOË-ùÔŸð’[±fePÇvÒ®ÏøŠ Ü¤ºØÖÝ03Gö-©9#ð­7ñ`7ûã pãêr3þytš¤áRE+“€À’;~\Ð RoTdÿaÚõÛÆ”hV§øNkEÛj’zQˆ-cTWäÇŒ¨`Ùɽ¨.M­•Ìÿì;_OΓû×ÒµWÄïIËßb¿¼õÇ©”c[q*Ô+È9ïT¥¿‚(ò*‘Î7jÄCý‹kÆT~T¿Ø–£øò©§j<øÿï±AÕ-Oü·ŒÀÅGý…jEÏÒì;l}ÑùUË{¸nˆ¤Vn¸Š›hÍfaÛqŸ Ûzûæ§mJÐ6ÓÕ/ö¥¯8ž?ûìU«k˜®såJ’c’"€(.l§€=Ö®A§Åo'˜_FGAíV³óËŠSß9ÈëíH {­Þêv™·«¥OSL·ðÄ3Ç <›¤eEäu'µi¼È®Tž~µ5­â[ÝÅ;!-ÃíV N9ëƒíÚ‰7gmÆ·ÔÄ Ú¬Œ¢YiÀ`xoÒ¬Øéör U¤b9›Œý*ô“ï‘ÉÇ$·Ö•$BB‡]Çœ3@ˆnà[ˆZ'VëYgöÙâI1ìGøVÔ„"³ÅEÁ×*2qÍ0(Áá8îDž[K¶4.Ìq€O\wè=êøGmIûÒþcü+¦Ré’ÚýË>@pØ$ã~P:ôýs̼‘¿*ˆ¹6î6‘•Œ61°‹vH–9àgÔÔŽŸöÑ(9=+A8ùX:óÒ¢–EFŸ¼p©ª’¾¶rL¤žëùTÏáŽWŽU–&Q¹„Œ¯JÓ‹ÎWÜmÀä«)Ã{T——SÝÜ¥¶(ä ìB {Ô·+é°ÕŒsá¸-/&2nŠ’®=?*ÔQ( ª6ªŽÃ˜†g”0Ë3ð>¤Ô¸¸Ωy&…m$¬ùuÜs…8fÇ,o$’´(_žR@;¾î0 9äý§M¨[ÀíʇPXSÏâšÊ V¹„Å ;FáßÔçœvúš™óiÊ ÝJ³…€[Ÿ;#9Œž=¹QSXèÖ¶®%]ìêr¹n‡×õ ê¶™Áš?ûìY´¾¶¸}±É7 `súÕ-€¶Nzãü+ |iê|òC[½¿ ÁŸþBzž¸?•kCø±õDOàg uÿRÿ¼h¢ëþ>¥ÿxÑ_a/‰œ‘øQÙiû YÿžÔÖ€ÿ˜çþX¯ó5Ÿ¤ÿÇ„_îæjøÿã¬ùšùÌßýö/Éá¿„¾›2|BäO c8Á5­‚=«gÄ1,2ƬP¤ž9¯4è;¦ðT#u‰Ô—ûam>ÔmüƒåíÙ¿nüýí¾Ø÷®>ÉȽ‡ßη`ñÓÞÈ\ÄѼfgxÈÑà€¥ñ’Nv­ã‹®3Š3ÐSôC‹•g~qß[?ÒõÐÚ¿%,ç#¨BkŠRqœòz×mx†[YPud âö2œr84 èüáÑâkë›V¸’³\BF`¤| '>´ž.ð÷ü#Zµ¸¸iDöë8Ç@Ia’3ÇcÞ±ì5KÍ3í?d›Ê705¼¼º6ÆG=:G4·úÞ¢-–êQ ¶„AP@ã¯$òh–5üAÇá@ÑÇëÕ§ýÒª¨KH=MZÕâhõIXŒäU1• Ž£¥ix‡G›ÃúõÞ—4‰+Û°Rè0ÿZ­`ßégGéþé©uZë^Õ®5;½¿hœ‚û@øTC÷çàaø• Îܘ.Øç“\ã—¿›“æ0®÷Ëv 脪žN8Á_FÑj3©ÈùÉ  F¹×n%†Ýà!ŒÏ4Ó¶Ô‰Vc׸zÓµÝ}ZÊn-®mnÕšíØ”|Èz‚*=]ŸB»šX¡Šx®!h.!˜²FqpA#ÒŸ®kòë+kÚÁgef¬¶öÐd„ÜrÄ–$’OsL4áòZåAþÿþÈõ¿¨3Ga;ó„æ¹ÿ.ÔÕóøl|ÿ1ù×C–Êt%€3@"¹ÆsÏzë¼3àù¼I¦Ix—Én«p¶Ê¦)$%Ødg`8çü+ÚWåVn¬lúÔšF¢œ21¨=>€Ð˜§­`OíMOþYõü+µs×þ&º˜Üþ•­âÇÕ~dTøYÃ]ÇÔ¿ï(ºÿ©Þ4WØKâg$~uúgüƒ¢ÿsúšÒÏüLSž|…ïïT4‘›¿ÜýÍ^où)ç˜|æoþû?—äp¿Â_?Í“ËH»]CàóQ­¨é_÷À©9¥½y§AÙ-ÇH#ðBÛA|˜ÿï‘O•ÄQ³7@2këÄ1ÛFx%ºÐ@[=Ï\Ô2À’‘æ"·¦ášÆþßaÏ¿÷ßÿZ—ûzBßêWñþµ¹ª,àíß"ÚCÿ<£éýÑMÓïáØñ„àCg¦2⧺•màiœ(é@ÆGo 8q‚9 b§ç ¬×d þå§nCÿ,ïð W5šÞ7mÌŠßQA´‹´IÓû¢²—[“wú„ÿ¾ÿúÕ³gpn`.È©ä€zþ4µ‹þy'ýò*H¢HÁÚ¡Iê@ÅVÔï…ŠÆâz Öh×%?òÉ?ïªÞ#9üªk;Š!$úVAÖ¦Ç0§ýôiÐë3I*"Ÿ1|Çü>”æ§Ù"äùI×û´}–”ƒþSÅ"Or¨#p‚:qYÚ¦¢lJ›½N(B(– |µ O÷EHãrú×<ºü½<•äÿ{ÿ­Juù€Ï¸ÿz€¹¯ö8IÿT™ÿtRýŽñ'ýò+. rI%ÈOq¿¯é[ç9œÐO²Á‘û¤ÿ¾EN€"€Åc_k&ÚèÃaÊõ%±P.½)?ê—þú  ù8ÃsÖ p<”ãý‘Y\˜y+‘þÕ\Óu7º—cÆd †éš¹ö81“ ß"•làS“ ß"¬ààäcÚ¹ùõÃïq‚In(xcŠd‘¤œ2†0k û~L©^Ú¦ÿÂA/üñ_ûèÿ…slÙÀGú”úíß±ÁÿÎçívÂM»H8#9ìýªÚ­ÿØX©bÇfµ$· DÇb*äã*1šÐ¸±hl’f–&´mVɧó®—g>¯=ÂBÑ¢À@bÜò{q[xvö c•.á »”ÈÈéÁ¥'¦ƒFî™Ã@Þ[:0 Óž•Q$YdEÔk¢¸Ð/.œÉ-܉ä¬X$ûã­P¿Ñ§ÓmÒw’9c2þPAäƒN?QJ-Ù_pk] Ù9È#Š–×Ãò^¤O¬L%Æ: ¶3U®¦[{w•³µFO½t:eޝŒ>]äP©"@›wm<¤uàR©Ïos0V¾¦4zºÛ8‚·,R"Ä œãÙíëO_Ë1ýÄ1L7ì,ƒ gž+xišÆÈ—ûI6DÈÈ›>U+ÐëÏãPÇ¢êQ+¨Ä¡_xÄyù±ŒóYþ÷º*Ñ9ÕUEBž€Pè²ü®Á«—úlÚtɬޫ!ê2Aàô#ʨ€ó^ÛÚDÍ›;KœÖä—mü;%ÌÍyrn ñÆ9ô©›Ã2«„òâ,P¸ùHà õ#óŒæ´àÒõx ò£Ô"DÆ0=ÉþdÓŽ«î­ü àÞ°…8÷#¯A\ïÛ_F¬Z屃s¥‹ £Y#s(uÆøÿ…4眞}MlM¡jwæ5Ü2É‚YJçœã=¹&±QÃÂ’Ž¡€>„Vн½íÉ~E•ðãÜ6ÿ*Ü»—<’0çó(úœSeðו S¡e”CÎyÆ:N+OÞÚÜ´6îáb;óïŸçUßÅ·’˜’¹Ët`~•ªßt;Äê"ð眓Žܳ)䕯qǸ©ŸA“O‚[‘,k!ˆíÅÇ?úÜ}+”oj,ÌOŽ[iÛ“sǸ®i¾&¼Ô.Lçl„îùÎHÎsîä(J­õjÁxš§¹â¹ûÿ=Dz'ô­ÿQÚ°gûORõÙý+®‡ñcê¿3*Ÿ 8[Ÿøú—ýãE_ñõ/ûÆŠû |LäÂŽËHÿ¿ÜÌÕâ_©#þX.*–ÿ1¸?›UÖÿõãÉó™¿ûìþ_’5Âÿ |ÿ6NG&œ£šN§Šzý+Í: º™#NŸÝ5È‚»KؼëI"YO>•Ê>è1_%¸ïŽ uÓ4»‹›ÍK[ko°Ù ;‰v,’? 3× Y*Ó"ÑüI{io"Élt§!£a¹yïÁ•fÿgÝp<‡ãÚ—ì7Yæü¨¯¡ÿ ï‰þVµÜÿe¾?¼*ÖX˜4ˆÊn¼uÛäj°’5êyZãÇJô_‡v:míçÚ¬ ¸¹Æ¡ä '–œç1—\ö® X]ù`ãð¥û ÐòŸéŠ©s[··´×¯ííž&‚9ÝPÄÅ—h''¨Åmi ›3õSÿŽŠæÅ…Öá˜_éŠé´Äx­0êT’8éØñ “â\ù°cý+61Ítzõœ·+D¹eÏVØ.¿çƒþTéÏ¥é'Ãö†ãOÓ£ÓŽŠ'šøI‰…ÉS…7$¼c½y‘Íô8ï þt}‚ìõ2~U-­•ÌWQ;A&éèhÓØàXÇÓ þB°¸ Ùô¸‡ûUÛ©ÌIÏ;@ý+µ°»K„o!ò¹®¸|ª£=(qWçþ&wÿ|ÖŸ„“MŸÅ|:Ë…ÓÚ@%,ÛG¶OaœíPjštÿo’Hã,Žr ÕOìû±Ïÿ•;Ù@ž‚ædÒ-µ%ºò͵ŠFƒ`å†_”rTŸÏ•ÐoÆÙÿÐ…SþÏ»ýÃþU££YÜÃz¬ð2¯'€9þ” é$kq\ ŸßKžîMwÌs“ýk¹Ó.–ê@‘3©9 Ûð,eÆ©~5UCnš|î7H`8*ñÔÿÛhðÙh2hܤ֌Ò33o o O=¾‚¹ßìë¿ùàüûQýyø÷“ò  _ Þçý³ÿ =jê¿ò ¸#û†³´+[ˆ%Ì‘2(%‰< ~µ­yŸk,]ÙHæ€85û£Óø'B¾³o<²Z5¥­Ìæ ä ^&o˜€x*9ç¸ëXŸÙ—€ãÈsÛŽiF›yø÷“Ÿj.¬`þÙ½û.ß³ý¢O/gM»Ž1íŠè<:3fØþêÿèO\éÓoÇÙŸ?JétHe·³e• ghºœ9ÿÇ¿JVñ?üxÇþÿô5ËóÖ»=fѯlÄi÷”’3ô®\i·‡þ]¤ü¨è^Óü9sá['ºŽÐëIp–ËpØŽYD‡9ÇÏÿ|Ñý›y“þ'¿Õèƒ'+ÿ¢Ò²Ë¬Ù^²³Ç`áNÖp*–Âêz àñ].§#L@6Bª†"U6¾ºzçÿ¯\ü$úiÍǦ<–¦é¹83þ·5-s~ßþ>#Ÿ˜WžÂ³„Ò5þBºDñ]„m½RåØrEŒŸLŸÊ¹ÈÕ’Þ4o¼¨ÇLM ž}9?jŸþº·ó­O ¬2ÿo&ªÒîY±hÀ¾w¹ôª·ºMؽ›d êÎXÅW]ñÿ—Wü©ˆÐ×dðÑŽ! ®ª$Éó>ÜcÆ;mÛøõ¨ü8ÙÕW=0·QU?²oçÝ«[AÒ/Eøs (^xëÔ?*@íc®¸EIЍm¼ Î2®fsÿ=Kàʺ›Ä”MºHZ=ÀaHÆpJågÿ¦¥þçô­¨>«ó2½éüŽëþ>¥ÿxÑE×ü}Kþñ¢¾Â_9£ð£³Ñ†l¡ÿp3WOü„‡Oõ"©hÿñãûƒùš¼ø:çŸ%xô¯œÍÿßgòü‘®øKçù²~S@l÷¬½^ííÌh‡ûÖòiMô¶z¦¨÷0’­£Ù»;rù#5æÙÏz@ƒ¦*9ÆŸkkow9×VÚã>T j²c®{}¢iº¥­Ü¶z”rÚ"HË8Œ««H¨qŽ„€°t"“bî9[9’Òï2HñXž§p—ïNQPóÖ€;ñáøã¸ùòmC™&1ÜpsÉè>¦‘´H# “Ým•å(Š©»wÌrx9ÿõל ZïLïŽÃŠºF»·Ú½êÂï4ÄBØç+gS¬ÿ¹£Øê5 ²¹ò—qRaŒçÛüj¦À s¶š•ËÈÄÎû•Y†pA Ojéˆ}EmÒI’Ýö!Ø3ÈÏãRôúW5©N—²Ç…QØ//îfX`id‘¾ê(É?…1\éÈ ×¹éIåŒgÌÉu¨ÃrÈgHÜŽW±ÁÁÅ_Ñîf¸”‡™Ž0v¶0Aãü?*æ¾ÕÅ4míÖ–éü¸$“åRMrCS»b_Ïa“ÀþªuáºzR6 Áé\¼ZÜË 4²¹Â".æ?AN»ŸU±œÃvg‚QÕ$M­ùs© ?^´‡9V^‹u5ÆCÊdÆÀñô?¥]Ôeû=”²ç•S/éžiÅùôï\pÕ/&vçéVV}Uí¾Ð‹pÐïù2»±¹Æ3íÖ)ÁëÎiB t®VkÍFÖw†á¦ŠT8tuÚAô Šèt™k]Ò±`@ ž£¨ÇéúÒhí^”«ÆqÐrk;\º{KU1®í€}+Ÿ­æ0fcùPb_åëšgò+"?Å«s›¨K .å‘-Ù”¯®@Æ+-u;ÍüÌýhη`ÇJWšŠÅÚ{@ìw78ì@?Ö²õûém¤†8[ná“@Í¥ .($W$5+¶!VfÉ8fáuË_?Ï‚î/#pxˆòóÓvGí@®tATj\ W1g¨ÝIpªgnxcŠéás-¼NØËƬ@é’ b`ŽÔ»¹à×;ªjs¦¤ÐÅ!ãqIo.£vû-Ló8]ÅQwp;ð(Ϊò/"å¢òäM¤®A8#=ºÔG¿zçfŸSX’êf¹I²2ü­ŽÀãÚ’ÛP¸&B.•BÀàgž=©Fé+Žú)PAãŠaUÉâ¥aócßk•¹Ôî?´&U”ª#`)ÕÄ¢IQIlí<ú{Ñpª³:m`Æ`÷÷®Dj7e€I¤ÝÛ=亭œÂ;Ï´A&Ù*m8=ðEw PT¹¦éë}x¶ìÅÆmÀdüªOô®oH»–YÐ<Ìè[iFÇ÷Xñÿ|ŠÛšF·‚ITQKdR’m4´`ŸS\hùk#\¿Ä|Ã÷…ï‚SdÚˆšCzÊÎAŒgÂg½óYZEª]é\Nò<’®óó‘Í^þ͵ô“þþÑ`q^q{h.…;¸’ÖííÄ›Ìgk0‡_×5itä{Q(ä&òB?ŸÜÒ.Ð’H”ÛCQÝÚ%¤pÖi%XÏí æmÛõÛÏ¿Øö‚Vä‘_ÌE0èÈ[ÐsÆ;uéÚ­¯†,ZàŸyjvðuº@&hnÄG9vÁ¬ù'üÅ]v)E¡Y¸ViÞ2OÍÜ€¨àûîeCXg•ÓEám>Y‘A¸RH„¤‘ý+™ ˜Q¿ˆ -éœv«§-ÝÅ'äiC¦ÚÉ »9™ ï‘YB'Ï´©œ÷üzqš’'N2F^ù|‘¿{££œsÈýkÍ&Ö.ÞgÛ+*† (ô¦Å¨^É"¢Ü8f8ëÞ¥Ó›ÚAÌ—CÒåÓ4øl¤Ÿý-˜…q&Þ8Æ1Ï\ûU+6ÌŠáYÓ O~GŽ+ˆÔŸUÒoç±½•⸶H›ÁÁã¸àÔÚ>¡w%ìhÓ;†uRäsúô«„\S»¹3÷•F¾ž%Ñ-mË«L9 q×Ò¸Iÿä'©g®Ïé]=Â*£¨ÌNâi©¹Ûé]?‹Uùœð‚…'n·yÃÝÇÔ¿ï(ºÿ©Þ4WØKâf1øQÙèßñãûƒùš¼ä"?ë‚Õ‹¿ÜÌÕΚˆþx ùÌßýö/Éá¿„¾›2õÿøø€öÁ©¼bsã I€ÿ–¹ý[¿²KÄPÄ‚½1W“PÖF¤Í±B†xQ›`eˆ$ðy§AkÅ^/m[À:ž·±És™ Ü+‚Xú(åÏLqXžȶÖל›8Ïås jik}µW\v$ÈTW2êר"ºÕ ˜ÉùI2=½è°1Ö\ØÁë°W'ªºµÀ>µØB‹ )gjŒd÷¬ËÝ*;»“)b¤õÅràû×w¨x‡J>‹H°Ö/–VŒ5ÊIc3Žˆ¿Ê‹è8Ö'ü#Ñl ç?½'ü#ðÌ®@V'ý Œã÷oÿ ší»L ăDŠ93æÈ8 ð:ƒýkhœ¯ÒMðÆ£p;ï?έø~â ]~Êæ{¹maŠPï4K—P9ùG¯oÆ´®ôh®gi·23r@éQÇÚVϸ  Þ8ñ ‰î¬ï­<èJÆRKFQ²r¤{9#Îzæ³<>qvÙþèéõ7ö ùjÞµnÃM[Iw‰‡§ùÿkØÇ¹çð®Ê׋S×÷)ÿ ŠÄ‹BD“"âAÁté[jUQF*aÅŽ?UãY¸8ãp®‡À~&¶ð¾±q}s¼Ÿ²ºDs—$`n*í%.î ¥ÙIÀ8ªãÃÈOúçÏû¢€:ø¯GÕtK=/G¬6—c ›Fƒ“︽q6¬D®?é›ÿè&µÛʆ™Áî ô§ÛèQÇ.æ•Ùq‚ÆAëÏÒŽ€oÈöÁã5Â\_\‚?å£:íÙ¹$÷¬k­+‹†—Ìd-É‘L >Ômô¿XÞÝ!h¡™\ñœc¡Ç×ð©üQ­CªÞ[ UQ µºÅ½Cí¹˜d“ÌqžqéÒœ<<™ÏÚþù£þÔ´7±@ ðûfå=|ÑÏüëwQ;tÛ“ÿLÍSÓ´”³}âfb@è3Œdþgó«:¯üƒ.?ë™  ÌÓ!ü«B¢ðî›sqá»[ˆÖ?)P.ZE\œ€ Éê:V¸Ð51ãhQ ß*¯Ý·SØk×Œà’»9œ]ö3EC©ÿǵ§»Éü–¶A¿y#EŽ&w]ê¢tÎÜdÏëYºí¬¶‘ÙÇ2¨$ÈÃka:qYb%MÙŽ ¦b7_j^h=Àçµ'ò¯4è4| ÄZ =~ÔOè+±Šg†U’7*êrõ¯=°ººÒf­ m˜îeu$g¦Fö«ÿð‘êxÿ—_oÝ7ÿRÐÓ;ýZæ;«Á,o¼PN\s\çˆÿä §“þ“òjÂ>"ÕH›_¯”øª†çS¾Ô!Xî¦ËG6î8 g¯LšÌ}s?Ùù3ù×¥§úµúWžÝÂ.mÚ&ã=jôZÞ¯þÑÜbÉ?­6„PÓ®- ³Yð­Òî‡Ve‹=H¹¬w9sÎ}ë‰ö®xóáHGøÓN½«ŸùzŒÛ!SaÜÑñ8ÚÐךóÿ’°-~_éGý©þ:jÌ—2ù÷s4²í ’€£'r:«"7Ú ž) rÂû‘€Ï=?©ªè.§¢ÖÓ]Ú®™Ø®jàÿÄ×Rÿsʺ<ñ×§5Í\ñ¬j#ýŸéZÐþ,}QÒ â®¿ãê_÷]ÇÔ¿ï+ì%ñ3’? ;=þµ¡¤ÝÙ,r &·ILˆCJ¡ÆÎwëé\·ˆ$`a@x9'Þ¨é¶z¥ÚZY@f™ó…\v$“Ð:ûW•8óÆÇJvÔôc«i =ªÅRïwÈVîûA%rxÙÞ±¦¼ŠyÙ×bdð£=€¥cÏá-z;6œYa‡Ïv•×ËÎ ¤†™éTÍŒú~±•õ°IC¦èÛ†Á8äSN”`î‚Rlé»õÁ ÌŠø,ÔÓm3ö9ÏÈ9ö‰2­Ö¼ÐË–ŽÐqœ)?Òµ%»+›‚xÿ¾¹úÒ4è?qõ®p_Zôþ̶=¾ôŸüU\¼ÀÆn´[x„‹½wyœûïüæ‚ytXà2ŸlÕ€@ëÚ°m¾Ïue,Ëk2FጱsГÈ+ž+tv=xëAIÜcΈp]Töɦý¦28‘:ÿz±í„sê:ÅÄK2Û@ΈùÛÊ£8#×Ö§wº[h®fb“î•F9ÈÏ@ÙÁ#=Eg*–v=2>uϹ©#•$ÈWúX©u$‰+®ƒi²&C²L(?7Ò¯Ae…Ì6éM‘–2H ½ÓŒœò¦{šK»4æ8æ–ÆêÙ5 g¸t,ª\FÜŒñô¨¯[Ê´è„ô®wEÐïõénÕ#>Jy“I,A8'ÜŠ¶®¬¡¦­¥\Góýš#ÔíÈO 3‘ÏLÕ;ù´Ù¬Û˽€Í¬r‘ìóUíÛ3\ůƒõK£rSì+ö\™·ÞD»@ å¾îN3Кeσõ›[6¸–ÞÝÆ%’$™DFèÌ€ä‘Û¸¬cAEÝ2ÜÛèj«‚»•ðzPÎ@Ï¥géÖfËY-§RÊÉ"n€òÐTú»˜tù8<`Öä“8.¾h 8Þ¹úדÔ÷£q ÏíÿÏD㞢—χ¼©ÿ} âóFêì¾ÑÖ§ýô)Þ|\æDð!\Vê3@¯þ4ÿ¾…(š?ï§ýô+‰ÏzLŠî>Ñi?ïi<øY×ï âwMÔ íüèˆá׃Ç4yÑ`|éß½q(c@²Ïo¾™úÔÄŸÃÞ¸«<5ä*À΂;Šìá$Û[±ä˜“ÿkJ á˜ õÉ N€çzõõ®[Xɪʄä.>‹áíKÄ3Éo¥Ú‰äw¸Þ«ÿ"€:ÍJòÞ{¶š9P™]ðŒ¸~yªé*1Àe$ôÁ¬ëï‡þ&Óm%¹ºÓ<¸bRîÞtgO³Ø×=iƒ+``„bp@$Ì Q\©$6õ;lÖ¶™y¤Åh‰}ä‡iHbÃæUÊaºvÃ~¾µ—(B095ÃÞÊe¿œ±'Gà**SçV¸âìzF¯w§Ik ¶–0b5 Æ9'Œõõ?•2 Û‚-òB[n*2$ãžÕç¶ö77²yv°I;ã;cRÇòC¸æœ!É\΢öžG¢JðK’)#,¹Pß ñíÅgêŸò ¸ÿ®f°ü<Ý¡ 62;‚ŽqùùVÞ«ÿ Û‘Ô˜Íh8«+g†5™,ü)mf±+!Q&K°É* ‘ÀëZ“ø‚êà£H±’eÎI~ݾ‚¹Ïþ¹/ò«Ý+Ö(Zö9ÜžÆì^&ºˆ[ìA†1ïŒîçñéX¾!½šùld˜åÔH…³×y¦Ž¼Ô¡ýÅŸûÒÿ$¬«ÓŒ`ÚEBM»3+ŒúúÑßRžãÞœœ×œnDòÆ­µ™G=Í-½Í²Î.É#R (}¹™íZŠ+›½RicGu•P3€A]®ŸÍÂA¼%™€QÆ¥¾ƒHà/îlÚpÐI£åQ·o·©Ç­E$™ÚÀ‘èkÒ.ôxm£IB[Ëä+¢wG"±5»+Q¥4©o Ê’&× œ¡¥†ÑʶI=ª>.~tüê=nC™1S‚pã]å®›c¤H– 0<±TÄŽJ Ë쥈¥‘ɤí(½»¿Òª¢ÜO˜œµ]ø²´'Öûö) ™àÚÀ혨Z66q«Œ¡ pj)]S>µ¹â K{[ØšÚâó RÂ5 Üœw¬kŽÙA*,‘„i6°ÈÈwÐV/iZ–™m ‰tU¾ÐÂ69û‘àäô9äƒÆ>í]ML hc‘< † H³ÜôôÍtQé°:HËkT]ÍòÇJtz|r¸QoOL¨ëé\ò¡ 6ßSE&ŽþöÎçPv·™píßxןçøÔEzýkºkY‘â’Ú&GR¬¬€‚1\»cÏ”™ÿ¾EmeËØ‡Ü½¤ê–v3N../2=ªÙlƒ¸á ö5dxŽÑbRHĈÑ |£;³ëžŸ‰ëY¾U—Mi™;Jû˜Žzâ¶Ìjr6ʺ?³£Sßos?lã¢EøJ“ìnžjå·æSÃn{ã Z‚óV‡S™>RR|¸ÈÆ{·ú~U{bÿtcéPê0ƒ`Œ#Öæ=§¸ÎAý(yt)'5Ð=³–ŒÏ#ƒÅsw_òÔNOÝþ•ÒÛ¨®vàgWÕ23ý *Ūü§ÀÎ"ëþ>¥ÿxÑEÏü}Kþñ¢¾Â_9#ð£³ÑÆlbÿp3Wü„ÔÓ¸ª:7üyEé°3Z íeÿ®¾o7ÿ}ŸËòFØ_á/Wù³#Ä(KÀØà*-Y“CÔÒÄ“#ÆðÍä×k ŽG­tW0Å$gÍ@êqŠÆ‚;IÛå¶U ÿ+Î76aø‡scj¶šmœV¶ñ¢¤I½œ®%6IûÁ¹tÁ¬mKX}{ÅÚo Be’?Ý¡ÈPçéVFŸ ÿ–~uvÏGŽY¡O* e¡8ÆÂj-’‘a=ã±¶üMè$ «žä¡õ5Ñ7Ž0=:UYía²ñ«}y º9èt½Rãš; èà©12^•µ®ÝêºÔÐ.hÕ>fù ,Ý8ã×üŠsiöøÿR¸úS~Á?¹\÷â‚.Óe KiìôËqDÏ (¯Á`#—'ðÈüëx Ç UH¬­Ò@ÞJdqÒ­g'ßÖ‚Ò±‡g5æ­ ‘æMnÂ5,ó½N©À?•iÁ/ˆ`°ŠÖ %"XÑ“|amÊWqÃ`¶AíJö0Jûž4fõ"›ý›lå„YúV3¥ÌÇrK›¿\Ú\[ˤ±óÃÊ€ÅIã8'*0O=ªV´ëiT¬±BŠêz©ß#cò þ>”ïìÛqÇ‘>•-½¤06ôU½@æˆRåc¸ûõ/gp g(@®Þ!ŸÃ—2Ï )#H»çxØ`ödeaù×HǨëõª/§Z»–0!c׊ØEk¯ß]]jWÞÕZþ¨ \9#ž¹Nj[]Ím6Û;Hïg·Ki¯6ù#\pAm¿Â¹ sŠö]¨êc=úP4«lÿ¨?J’=sSñòÞj—O<ĸôUÀàÀ?­G­)}1Ôx8«6ö°ÛåFªHÆ@íRL›”î °éGjêΗjzÁ=V®ç¸ôâvª¥uIÏ@Ç"­èZ­¦•s$·š\‚:m 3²…9ê6šÞžÆ †Ý$jÞ„Š‡û.Ô˺~T ÿŠ4›«`‹ÂöHêBʲÊJäc#'·Zç­?Ö>zßÿA5Ò.ÓŸôdÀö©aÓíbpë {~?á@ç9˜úgƒø× r¥/g ÇÎMvÄî<Õ9´ûyœ»ÂŒzn"€áˆú¿…íM¥¼V’ÚŸàx€oûépIúæªÝ|Añå¬ÖÓMjbš3âÎ v‘ƒÈ\Š“û.×8û:g>”£L´þ=þYÙ™áÓ‹Áè[?†É+QMÖ3¯RP€=é–Ö°Û“åĈHêYa½õö¦††Ch–dÏ 8ìjþ9ÿëW/ö4RJŒdä€qNÃXÀø×rŤ­c'NçN2*¶¬vÅf¤“)Ǩù+@AûÏ÷ÍK$¯Þ#'<}j*âTâãaÆÉ¿Šœ wéíQw➤íÍrü<¹õUn Xg¾EwwMgwÀ”9Ç­y—’¢o5r®F7) þ”ñæùm/?ôѿƥ¡¦z}íôsA¼âBX‚Ù$ŸÂ°õÂŒù 4`sÔîÏô5Æ~ðŒyÓqÿMüiÊÌìì:$‘ôÏãE‡ÌR×P¾•0Q’0#^nÁí¢qÊ”lW "B9¨’6…BÆò"€«! 4ìJ=2Òþ[(¼Å*wƒÚª“í^~ ã¤óûjßãFfÿžótëæ·øÒ°îoø™Á¼·\‚ßgŽàolV˜ øºÅ‰ùLn¹÷Æ¥"¹';Þ'’~¦™, !RÕå}GÒ´Ò ¹h…$npA ÄT‰¨ÜùŠòO,›åä€Ýyï{Í/ýüoñ¥e™%?öÐÒ°îz°VÜÜ(’{ ó¨?ãÊÜtÄ)ÇüQ´>D„ºžÌrÔ{ŽyíM!6o|7¾´µðåäsÊ‘Èóe•¶zê+¬m_LW·x@GYà+!£U!N¼~‚¼ËCº‹O´’ÞãÌV±FH œö­ý¯gõ’ߦÿ ïŒ)¸¦ßâbå$ÎÚ-^Éí#3M”N@c9e@¸è:f²¼M©Úßh@D…$Kô#v Øz`…ÕÎZÐg/'ôÉÿ™>¡ݪÁ rÞr9ÜŒ É'‘DáME´Â2•Êìr9ôsÿ!mPûJÝf$¹¬+WUã±éô®ZŪ. 8[¯øú—ýãE_ñõ/ûÆŠû |LäÂŽ»Lž8¬a,Ãîãõ?ãWMå¿ö‚Ëæ‚žPRÜõ®szŸÎÍýãù×.'CUÕîû5þB„§ò¦¾ïø'¤¶§eÆ&ð?áPýºÇ?ë@Ïm¦¼ósxþtnoïΰþÉÃ{ï_äWµ©å÷Á=íö9ÿ\?ï“þõÔ¬S‘0Ï®Ó^q¹¿¼:77÷çOû' ýï½ò!íjy}ßðOGþÔ³Çúáù§fúáùð¯8ÜßÞ?›ûÇó¥ý“†þ÷Þ¿ùûZž_wüÑ¿´íY‡>Æ“ûJÓ¯œ?#^u¹¿¼:77©üèþÉÃ{ï_üˆ{Zž_wüц¥f:N?#Iý¥gƒûñùó­Íê:77©üèþÉÃ{ï_üˆ{Z×ÝÿôqªYùn?ï“Gö¥Ÿüö÷Éÿ óÍê:77©üéÿd´÷¯þD=­Nëîÿ‚zGö¥Ÿü÷‘ j–]ç‘ÿ ó}Íýãùѹ½OçKû' ýï½ò!íjy}ßðOH­ž?×ûäÿ…'ö¥™ÿ–ãò?á^q¹½OçFæþñüèþÉÃ{ï_üˆ{Zž_wüÒ©d3)îš_íK/ùî?ï“^m¹½OçFæõ?Ù8oï}ëÿ‘kSËîÿ‚zHÕ,³þ¼ß'ü)µlyýøÿ¾OøWšîoSùѹ¿¼:Ù8oï}ëÿ‘kSºû¿àžŽu+/ùì¿÷Éÿ ?µ,óþ¼ß&¼ãsxþtnoïÎìœ7÷¾õÿȇµ©Ý}ßðOGŸü÷‘ÿ _íK?ùî?ï“^o¹½OçFæõ?Ù8oï}ëÿ‘kSºû¿àžŽu;3ÿ-Çäi´ì³Äãþù?á^o¹½OçFæþñüéd´÷¯þD=­Nëîÿ‚zGö‘çÏýøRiÙÿÏqùð¯8ÜßÞ?›ûÇó§ý“†þ÷Þ¿ùöµ<¾ïø'£JÏþ{Èÿ…'ö•Ÿ¾²kη7÷çFæõ?Ù8oï}ëÿ‘kSºû¿àž‹ý¥gƒûáùwö‘?ëÇýòkÎ77©üèÜÞ§ó£û' ýï½ò!íjy}ßðOHé8ýÓþ§T²ã÷ãþù5æÛ›ÔþtnoSùÑý“†þ÷Þ¿ùöµ<¾ïø'¥jXÿÏqÿ|Ÿð¦ÿjYÏqÿ|Ÿð¯7ÜßÞ?›Ôþtd´÷¯þD=­O/»þ éÚ–_óß§±ÿ ?µ,ó‘8Ïû§ü+Í÷7©üèÜßÞ?Ù8oï}ëÿ‘kSËîÿ‚z9Ôì³þ¼zô4ŸÚv`ÿ¯_ûäÿ…yÎæþñüèÜßÞ?Ù8oï}ëÿ‘kSËîÿ‚z@Õ,'Ï^ŸÝ?áGö¥—ü÷‘¯7ÜßÞ?›ûÇó£û+ ýï½ò!íjy}ßðOI¥çÏèøSÿµ¬qÿz|§ü+Ì÷7÷çFæþñüèþÊÃ{ï_üˆ{Zž_wüÓ?µl1ÿ yþë…V±í8üøW™îoïÎÍýãùÑý•†þ÷Þ¿ùöµ<¾ïø'¦.­b:Üûäÿ…/öµŽ?ãàg¿Ê¼ËsxþtnoïÎì¬7÷¾õÿȇµ©å÷Á=3ûZÇ9û@Çû§ü)µ¬1ÿþù?á^e¹¿¼:77÷çGöVûßzÿäEíjy}ßðOM:µ†ãàß'ü(þ×°ÿžëÿ|Ÿð¯2ÜßÞ?›ûÇó£û+ ýï½ò!íjy}ßðOMµ†ãàß'ü)F¯aÿ??îŸð¯1ÜßÞ?›ûÇó£û+ ýï½ò#öµ<¾ïø'§^Ãþ~ýò“û^ÄŸøø÷Éÿ ó-Íýãùѹ¿¼:?²°ßÞû×ÿ"Ö§—Ýÿôßí{ùø÷Éÿ C«XÿÏpþæ{›ûÇó£sxþtea¿½÷¯þD=­O/»þ éŸÚÖ_óð?#þ‡U±ÿžãʼÓszŸÎÍê:?²pßÞû×ÿ"Ö§—Ýÿô£ªXó‰ÇýòÂê¶_óÜß&¼ÛszŸÎÍýãùÑý“†þ÷Þ¿ùöµ<¾ïø'¥ RÇþ{ûäÿ…Ú¶Yÿ^?ï“^k¹¿¼:77÷çGöNûßzÿäCÚÔòû¿àžu;ÿ-€öÚ©Xùn¿÷Éÿ ó}Íýãùѹ¿¼:?²°ßÞû×ÿ"Ö§—Ýÿôs©XÿÏqùð©U±QÿóÐÿ…y¦æþñüèÜßÞ?ÙXoï}ëÿ‘kSËîÿ‚zgöµü÷÷Éÿ ˸»µBT¤!Áù¸®sxþtnoïΜr¼4d¤¹´ó_ä'R£VÓîÿ‚Irss! *.´Wsww¬¬ÿÙtiemu-3.03-nogdb+dfsg/help/wizard.png000066400000000000000000000305111220314353500175240ustar00rootroot00000000000000‰PNG  IHDR9;psRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<0ÇIDATx^í} œŵw¨ ùé3’ðiD"ˆ7pDdÂ6,²£È²(Š(.ÏøŒúbBòL|ùÞ'ñû™hÜcô™ñ%_ 2ÌÌfæ.‚ó¾u§¦¨­«ûÞÛ·{îáW¿¡oݪS§þçüÏ©®îÛ]H$,æßÙÓv´‡ŠæÏ;ØÕí R_žÕÑ>îÐÞ:£½uòü-hß¾ùT³uò «];«e}Ñ"å$|ÈÛ6tyú¯àDžN¼™5:Ÿ: ‡ãä€s–uâ¤uV’''ÚYga×Y'íòy’eg6[ÖÉÆgXŸ7[Ç«šÛÿ4QÀUò¯`Â(g-‰vXwªó¦æ¯=l—ž6_öTóÀ'›~¿yÈwíRø» {FYHƒü,XÚüWùiq) ’0…þ%Ü‹Í¬Ó 0 ð¬•'­a;­hnùgQ¢¶›[ Dm·²¾Ã†/ )¥kÇ›¡c¯xºµuIa+ñÈC€¤¹“cB9’êƒhJö#IŠ´êAé°ækf£5t'a«ÍUkøŸ­I¥ÖÔ}‹k¡XK޼m¿:Ö~Í `¯µþTûuÍPÈ1ü¥•ä€Tžµö Hˤ%–¼B `åùYÀÊ0qBBR –Ÿh·øxû¥Ñö‹ë Ĭù Ö­É¿³àcªfAEÊœÃö_ø¶¸ÆšYk¨2­Ìñ«p?ÃÕñµn=ØZæUZ‹ª o±¤Ø¼Uû[Љ–Åõ D O¸íp{( k ÖÀrŠuk¥5³Â.Å‘T’2õ]&•@)(Úoƒ²Çó‰]àˆzí_¬ ~nsÕô¡ý5puê¾T!¤MÒ•26•l—5X´´¤_øÊf5!HHÈÇRmÍÁ’¹Bh)P±…-œ6’BÈ Ì„§©…§  å«Ï%¹ eøŸacIÅU²6f—Ç„Ÿv ¤ß…5Ö¼j»€›IÁ‚øŽ@§9‘­oiŒŸ¢[2†Ð ú§õ.äõ#f&³å¤ÒNÓJ¶¾VëE“—ª: û«NþÁæfßw¬Þ/'¹zé 2®–³y•r•ò“¡h¥Ý’.ÑÓŒŸ'ta“‡d-—ë²õõÃû#§Ö?Û´àÉDñ¿Æ‹ˆÝ»ùîØÈ{b7®·Ëеv¹jeÊ€åÑ>·G»Ï=:xIÉÎO /Ñ?]!°û3É&ê‰CûkŸX_}߂ʵÅË‹"wŒ-_xsùm#ËçߥlÎP(¥Ó¯²ËÔ%E}öê¾cêà£{vn}©Ê&*áê%ïÚ$=÷~ –ÂöçÂÛJåUÃ8”Ú›‚ @\.ÍC7Å)ÓÅ^®¹ ny÷›ž~íø÷ß<þèO›îúqÓêgš–~/qÇÓ‰Eÿž˜ÿdbÞ‰YÿŸþh|ÒÃñ[6džÝ´¢¡çœ²s~9p5]!É“Orø©»>ÿô±¾_÷죵OÝUóØêš‡–Vo¹£zó¢ª{çWÝ;¯ê®Y•ë¦W¬žYzKù‚a%ŃvŒîùöø¶&$¯öû£„«örNYo=ØJBæBlëE¸MÂ>Íeþq\Í“*f>“6×,¥4[ütâ™·Ž?ûΉÇ_:¾é¹¦uÏ6­úеiñwlº.|*1÷Û‰Yŧ<Ÿð@|ÄÆØµ«úÌ/ûêèwmÇnájZB€«ãm®VoY|ìÅgê_~¶î?~ø»›jŸXWóèªê‡–V=°èZ}ߪs«6̪X3%²|Bùm#ͺvç¸>/]õU[à*àê×ÿÈäU /œÎ .Œ1­,-®æ3Qqî@¼wæ·âÀÒ§^9¾åù¦µ?jZ¾µéöOÌ~~+1íáøäãã7ÇÆm¶WÅT‡¬‹^ÙÐwaÙcm3$9…t…•®Vm˜ ,=ºí©#?ØRûíµ5,¯¾ÿöª{æU®ŸU¹fZŪɑ¥ã#KÇÙ«âÃÊæ )™>x焾/_s­É5;íB¸ ç«©50r5NÖº›Ê¤xù”‡ã÷þŸ¦ÍÛl¢.ùnÓXô>š˜úP¼è¾øè±áëcCÖD¯[ Z¸":`Y}¿EåOxå*+Äñ¬ÒÂÕÊ5S÷ÞÃ[7QÿäT®›U¹jjdiQùí£Ëç/›=¤lÖuPßøëWJ‹œ:àû½2äbW¿öžj‡B^Ýo/’A…_å&×½´^³VͪUlKÜb[ú榩)¤á ¢ªÙé ™hrÄ @sÀ~œ£Þ™Ì¨‹žlš éôÁuÌÆøM뀨±Á«¢VDû/‹ö[ë¿,v岆~·ER\MNâÈU^H Wa?©ö±Õµß¾2*’$ê˜òù7QK§¦õ¥Súœrå?Šd\Mí-W!ÕÞ”¼à§[¸:«Ê"…ìw_ð¢9æjèì·™t5©V.23¨^¾‰sŒ¾7g§@ÔÅßiš÷xbÆ#‰IÄÇÝqW¬pmìšÕÑo¬ˆ]±,ÖgIì²;b}—Æú-k軨¼ë„ß°y•âÈU^H W#‹GÃÙ©½ô}`qÕÆyTNùÂås Ëf^ÓJÔ‰—•Nê[2¹ß?Šú¾r}W[“ëöØÄ¼|³f¹ AÅ=WÛÏ…ÛªYº²ld}…Sõ­?^EuÈÔpÈÕL!™9„«pÁfÑSöêwöcpŽš˜¸9>æžøð ±!kcƒWGû¯ˆõY»tIì’;b½–Ä._Úpùmåç¹J…€Lø–2>u¾ \­Ú´  v}áï†Ù•«§QrÂÙi+Q‹.-IiQ¯’I—ÿsÂå¯^QŠ«WïQp. AbœUE׺ì^/• •Ü8ÉÕÃöŒ4Á×0\·8¶v‡Û…oI ׌ëB¿µo˜l‘@Ž¥5D û+PŒ”bKiw•Ìd jUs…Xö†uQØæ…ÍÞ¹ÛûIp¦:ñø˜M±á÷Ćlˆ ^ë·&vÙÊXÏåñ¯/‹_²4ÖkYC¯EŽŸú '>j„À·¼È«EömÙÜ`›×Þì½{.œ©V¬™Y1‘ó½òÉ—•³gÙ„¯—]r蛽vëõÚµ¶r•¤V¸ÂÞ[‚]&ȶ£Ëí“ä}øÚJWrÛq‹Ûƒe5¬ºl{8¦ëgÙ Zä·jÞ2º=aFveN„ó‹ó¤(¶’› $3¢£s2så 8.C¯]üP|Æ£6QáïØU®Þ~o|èÆØà ±~ëâ½×Ä/Yï¶"Þ}y¼ÇòÆ‹*ºÜrWY!`nø–2¹–œô–ͺ¶rÕäªu3ª`ãw팊ÕSì;"–Œ¡þ™Ñ/2µwdÒ%‘¢n‘¢î¥{ì¾¥ÇkWw±]·p¿5d¯ER+ìw~ât®&ïîwÍÕõðӻ̬£…áRª’­a}=éýuÒo ëÅA)§sé´QH/Vú‘íÎé ×–Es‚ØnЊèøûcÓ‰Oÿ×Dñ# ØÑ-z0>öþøÍ›ã7lо'Þÿîxïõ‰k]×Ä»®Šw]íº°âü±$ƒ{Ê+X!6WÕBà[^ˆÍU; —NY6¾òÎi•k§WÝY ÛÂ+‹¸¼ZYÜ»rJЉ]+Šº–Mèº{t×ׯ:ßÖdh©5´ÄæjÏÝv^µ¹ÚnÞoçUØ’ñÆÕ…qû>ð{(„´³Z¹'«1ÿ–m©:% þMåCA«ÓˆÊ|{ÃÝÏ…ê“_ðK˰éwDáÚéÄ-q ØÔGâ“f%Æn‰Ø/| ~õæxÿM‰Þ=6$.Z›¸`uâ‚åÑ.ó+ÿeÌo“\µgÁ !ð-/¤¸Þš| ê}ó ¸vZ±b"°´rÍÔŠÕ“)Q+’ã/bõUÓzTMº¨²è‚òq|rs—7þ‹­Éð*ë¦C6]¯Üosõ«ßKr>Û\­±O;ç§hÆ=ƒŽ!9_]oŸ,äWy¤PHkÌ¿e[ªŽÅqY–’c(œV,QEõc©¾M,¶°ä0M¯E…ë£cï‹M|0Ný–=è¿9ÑûÞ¦¯oL\¸>ÑeM¢ó²èys«:üÀfHRgQÈćâãŒÙ¿yKü†-ñk¶$¨hÌ ®×C}Éø^eó #KÆV¬œX±jR+Q—Þ\¹ø†ªE­ûÀÕ“.¬šÐ¥|Lç=ÃÎ{£§W®][¹ Öæj dmû§®I®ºzpü JÁív±¤ õfiù·lKÕ1(47®’6TKTG ͵e5Á㜠Æê6·.ÌÀýú·Ü—Êcûߟ赩©ÛƦÿµ¾éË«çÜýҬʳ†'ój‹ŸpBÆ=û@|Ô–øðãC·Ä¯®¶^¼HÎÅQ¨?8ª[éÌkÊÝYr Õ¡bé¨Ê%Ã+oZµèêšyýi}õ¸/WŒ<ç“¡_z㊳lMƵYIèjÿ&ò*áêxø!›ÍUš|(] u‰D¶’~l·ü ø <kñ)(„´Ô¿ÉG®†ÃNú­ 9\GÒ†+„œ´;=f¥qrà#«$Kxé\h%×RT&j¬'ƒPÀ"Ìj¼ritÈÚèÍå\í»¹éÒMMolúêú¦sW6}[ôÌé•í†}äª= !¬ ñBæ·f5AƒÏnºàÐä+áò Ð5öá/¡¦bñˆŠÅÃ+n/¬\t]Õ‚AÕsúÖ̺êÿ½­z칑›Îþäš3_¿¬]Š«@Wàêu5ö†-kàRk²ãªtà ÍDÅ8ÝèˆÒ–R}ò¡’DêœðÛ¯LoìµÈ¾yðúµÑ ±Â ñ¡wÅ®¿;víÆØ {âýîIôÚ˜è~wâÂu‰/¯núÒÒÄ™ ¢í¦V&÷“SHW~Ž®ÜðXš6°löõåó Ëç–Ï™w}dÞµsUÎîW5£Wõ´î°†¤Z5òKå…gÝk½ lM&4¦R+pî¶¹úµív’Mrˆ §4‹ª)›f¡Mê©B«›´¤äƒk⃉8乓Žt}´ÏmǾ±ôØU+꯬¸²aઆ+×4ô½³¡×Ý×4^¸*ÚyyV¿4¶»õ˜UTj ±gC&•¦šœ÷\{î§#º˜Ðç³)ß8X|UÉŒÁ%ÅK¦<4ýÊÒâ¾åS{•Oê™padlçȈsÊoìPr]»¿Ãz©gòà*¡+p5µ>«„®í—ž€O=$SƒÇÙ%ù<4¶À“Р´>Œ¡+åm^Ó}óJ+øågŸy;óàEÅ{ÜZÚkΡÞsK.s¨ç¼ÒóJ»Í+½h~¤Ë¼Hç¹çÎŽœ=³âŒiK­Qÿè>ñ¿)WÓb'ç'AÈ_oéóñu?¾ñ¢í#{lÓkû˜ÞÛG_ºcLÏ¿î±sT·]£.Úus—Ý7uÞUxîîëÏÞuõPð»¾ÖÏoènsurô4®Ú×l®’'¬WÉv‘M×åÇyÆ®;E(ª"j^yN6hl}«aǾú>Ó?:gØÛ_ù›óGýú+£Þ=ä»G½×yôoÎõþ9£~ÛiÔ‡G~›Ií‡ý¶`ØGÖÐ÷»O|wûž#ЗL'-!¿h \ÝúfCÝî¿Ùç…+ÎyyÀ—>ðü}åÅç¿<¨ó+ƒ:¿:ð¼7œóæ•Þêßñ¾g½Ñ§ý[—¼z©õò Ýkþ¹}ëëÇT\…½¥äù*¹ŸavCûõv±,<0ÉXRVž$¥ýŠÏÅBæIrr~–œŸ­¡–ßú‹ÔuGqQU9zA_ w!oÖwZ³7“çï4?¶õ ûÊ«¶&¯ë4¹þ´óUX·äÕ$Wá&FøMêaVÉÇ“&XÚúØHö©¢Kí_®ÐMàœlÖcÐ@ì…æh?¶õŠ]0lá—>°ë›ÜL‚½_ûò,\°™·f&ìÅQ;C’¿ä€–ÉǬ GᮉԷôÎQÙBÎW[¹j_¶)±s8b{ÁÈðì%ûñK-D„%’b?8(m?ú)Yìçš¶“ƒä]ËXòÑp•>/ ~X#ûˆýö¯M¡À­¤Ü¸/õ‘ÔC!5ðîþ…7ç“Û€áþ1å\±Ýæj’®”±„·\! ìBÛ3[¿¥ÍòãÐËÛ’òâyV²htrajøÂíïë²¼®cñÃÕ{° ˆ@p°ÆÖ[C÷Y=^´:?iYÈUŒPˆ@P@®âòÈÕpØ)8+1Ô$W W‘«ˆ@8@®†ÃN¹Šå8np@®"Wp Àsõl¼fÔmÀàxÔ$'Ø\…;(.~.u͹š3à ˆ€#ÈÕp¬ ‰ Ú<ÈUä*"«á°S›O8AG«ÈUD  WÃa'Ç ‹ Ú<â*ý¼j²”Ò¸f®¸ªZ›™è£wnWÞénÌ#ˆÉ¸Òp㊫æ±[b£Œ£Cf"8ªY«ÜÃÄmTþ ²Z4Ê=8=¥jûCÚW»µü&.ã\õg¡%‡æ×àL­Bmè4•G®æøÃÀR"°Š¥éñáíŽ\Í1WÃë:¨¹Ï W‘«ˆ@8@®†ÃN>‡p.€ W‘«ˆ@8@®†ÃN ó¨’Ï W‘«ˆ@8@®†ÃN>‡p.€ W‘«ˆ@8@®†ÃN ó¨’Ï W‘«ˆ@8pÇÕ·_{ "€dææfiÆvÍU„ÿD «qµc¦çóš‡CÚ*v^½Þ·-õž8äj[µ4Î+ì Wñ¯v?CýÓG¹Š\EÂr5vJ?*£„°#àWÙÞà1"ÐVÈj8ð•«Y GÚ6LÜ'®j÷ìaŸ%5ØGf‹*tPîÉÚYRF+}Ìw:£§ï²éKHGÿ ÷õ‰«‚Œ{†9²¹âª8qiM®Éø¸yË4&îWÙˆ¤%YÅ‘Ïb¶†B3Ë6Vr]ؤ'›È×HàL«çŒ8‡¡~:œp)PD ˆ€Û¡ÉXâtX9Ž–rTFDO¯§f^¬ÂŽîD3Ol™WwïÝþ_¯¿3ãþõœþ0ü…c¨Ñ+ÇÙRjT©‹³ %6Ku½X= E8JÓ3Må»,P *¿×à¬! 7wÕ¸zÊqC›Q4™^I™úP(uWó¢†S)¯²`ùyÚÜ>°á½û5•Ÿ¼úÞû=¦=tÇcÏÿüW¿?xèà«ïÿqÙ?…¨‡oͩʢŽ^«„&nš®rzÒÈÍ…|“iªÒˆa_v:\úrd¦#W¹yy˜*:g›«z&kÍaÂÕ,ñSà*üΦåÝS†\BÎØüãßý(9TYYVSSqøpõÑ£‡ñÑö9ý¾uŒú&ŽÈy†ÈRfŠmÒç*U^#\Ÿ6¥S“‚¦Ï0ž=Rk‘™ùÀU àÒ\-zr–x+¾+ÙùŽ°Ð…ü)µ¾þhccýÛ¿ß ßr‹a}üVù‡ÞWÜ.rDM´¢ !©IôoH$nÇ%Iú„¡#:æU}þ1¸ªÔ¤"†>Bi"Û䪽†«YâgºyÎKaéK2jiÕg/î¡èƒqÏíü¯ªºŠX¬1‘ˆ¯~úh£Ò^š,´Tk9}‚bS•#uAn.7²+)«IwjZ•Îæ¹‘¨_‰°ÃI¹Êê¯ñ?vPÍê€uJCk”áÜê#Ö‹‘Nl,µ¾ûT³–:Œ¹ò*ÏÌo½äUØF‚sT²ô¢ïš<â£a—ÿ¬÷³ÿˆzüxÓ¯þ´Úø<“,„b³Š€*îèýg%½)ày¸t:zá*ìúÂf9G…ŒzóGî{÷êÛzôþž@Ô'Ž7ÆâÐ&µ°ož àŠ*bzᆸ©Dv—®¼<÷5ìè…«3a×—l&ÁÒ·ïÏ.»ä'_ïü½ó~øÇg€¨'O~þÞ_öb^546C ðÂU8…Ë3@TØL‚sTXú^ú—þðOÏÔ5¢ž:uêÎᆭ9_5Ô ›!!BÀÕÁÛ¼D®îí²¼®cñ8² —g`×—l&‘¥/!ê{ïÕï{S4°½²m$é–˜ohÎΰ™oj·ÉøçwèÌU® ÂuT¸<#uÁ£/¨®¯fТnE©¶a.š­Qz:¤έ&®Ü(«ÂM41T@³5m2 Û&{–r«‰«ö†@¹’É5öÈUzß\ž]_ØL‚sTXúêï[Êà|ÜŠbÛ;s©LŸÙÜjâÊZYn¢‰¡™å*U,³–2™oÛxä*™’Ûû¹ ¦Ù‹ƒ«a_•L©ÕE#5ª¿šð/Êg5aÙ®Éb’—NG5nÎãÙII'Â."èì•/¬ª»tî´1E[ÏÏt,åý ƒZ:ʤÅUóEGQ…LÎxªŽŽÐp 2ËU³rTg§£Áqâo6ÔGåñR;ŠËPUáŒ_é~W + 1†QÕÜKÞÒ'®Šˆ»å*—ŽT\Ue-i½>Z‹43tVŽ“\Žr;qG"9’\•QÅœÆ&vo\Õ˜IPXl©)àÒXÀì?ë“Gú*ùÄÕ æUU •º¬hl USb›çªŠNŽ‹“å9Wõ‘=˜\MŸŠŽ„÷Ä 2Úv”«ÉŽ–0\щC¸JY5׊®4ÌF^Õ&Ú¨òU ¸ê8GÕº@ͽù­I/¿ò*<ǰå7q²ÃUÖ_¹cé$Å%«t]$%•ØR4*甤‹ãŠ‹µ™FCŽ-"W¥Rc•Ñx€˜ëÄY°©DqÊpóR˱™‰ÅU¦çp—Ç&–ò<&Î`›–çBd™«ž5nƒˆ3AañŒ@Ð:úà¨>qÕíL4™'hFr«[(Ï&Ü*€íCŠ€O\ ):¨6"`ˆ@FB°~,ÿ¸ÊžÅá1"Ðö0dµçfþqճШ@ìýÑÔs ]> ±CŸï…p~6šÏ*âpˆ"Ð’W÷·^_5|æ(b‡ >#€yÕþÁD ø W‘¨ˆ@8@®†ÃNÁú¨a¶@®"Wp €\ ‡²³Q~ððõ7qi‘ÕÛ¸ÒîM‚I/“6ib¨îÙ›oö$û ¯\e‘ò€š‡.æ¦/Ü›“^&mÈLÙŸª±7ñq8fl%Û‘Èá¾5G2ý–æó5˳×IÁ¡3Ñ!#m«©5púþáM‚I/“6”«"-EGáN”\¥ åŠÓ"¦}!s/D–~kÎÍœ u¬ëh¢ û¹L":+E;ª¼–S@ª+Ë`ÜÐâpš’ÒùJg­r,1C²5ÜŒ4‰Tã¯ä+½ihnt1dp@™N\PH&zJ³_áªÛgŽRSI½„µ¨4Khh,JÖÔH=[5º¨ª¾e¦”ÔËÑD}Ž6œ«I¹Ê’Mt}ŽQÿqc !*“=Ãi¬Ìz—#Ρç*}–÷íßÚöÓw>Ü·ßÏõ‡¥¿ z–·*f‹Hi°“~%FtÎ{Ø&ùAº3ƒJs%¥}5“òMšs4Ì}×9br6±š¾˜ŠM0qd͹*ºùCšŠ³Téñ|Þ‚Q¼éÙ~ùAIɧ¥¥ŸE"¥UUxsÜ›þuöCÛTïȳ¥‰ÕÝZHäª ;“ÑU,5çªù(&MšÖTiVJ3Mð’f¹lpÕ&n=Á­¿Iý$¸yÕäÞ}òî)‘¨äÍq¿üŸâ»§L¼ã˜711[“«R¥&ëWYn=Õq9àŠ«š¤X®:" µ‘‰3h:ŠÝEŸÌR •G Ø[ºö–¶YŸ´¬ ·›pÞ×K_.£¢&ß]ý—5ïtq'‘žu8Çm/]À8¡KÚW‰9g$ªmÒËDÔÕXÉR§—*ãHiN¬£þ*£hL)un^zB²UKÍ(bβAç*¼ÎQÙ¥/KTxsܻ܎+ÙÏ)áXþ#ÀñS@ÿ­ÿÚ†tDû|Õm^í9ýaØL¢ç¨Qá]¬ Ñ´ )"¨¶¤lÔç+£äy/\…œ »¾d3I$ê矟xï/{0¯æ¹cáô3Ž€®Â¹(\žQõÔ©“ð"VÍùjÆç€|@À WÉ>0\ž¡›IäíæQ¨ï}¼W¿l+žá˜ „mò ‘«Fïž‚+¨p.ÏÀ®/GÔ¾ ¿¾j‚¯#WIÇf&caD xä*½o .ÏÀ®/l&Á9*,}Mî[2ÁÅ„†ÍLFÄ6ˆ@ÀðÈU2+·÷³WÒˆñÚ­×\¯£¹6¸ñpoCõÒA -®ºXÅU6=Š‹[érWÕŒ n5Äöˆ@`ÈWYšÑcîÖ){)Í ,è¨"à p•S]¤%»6f×À´#ž»z0?v ¾r•=AåNV9Ê©¸Ê±TCi\ ‡È QUÁUÂ@òOµ·$6à2­(„ &p`D °øÍÕÀŠ!G¹ŠÏFÂr5v xÈGõ|@¹Š\EÂr5vò!lãG¹Š\EÂr5v xÈGõ|@¹Š\EÂr5vò!lãG¹Š\EÂr5v xÈGõ|@¹Š\EÂr5vò!lãG -®º}†KÀ±@õ #à‘«é¼Ó1Èp nˆ@`ðÈÕtÞé˜A,Ò„£ÇœNöDµYdŸPHöÂUÏïtÔ<íÁXé» £ÇÞ4—öÒá½p5Íw:zæª*Q˜x6ëÍÒöæ\5é.¦t“Dímu íe¸|ûŠ8hæ|ÿnKzájšïtô«*·Ó+ =9t¤ºf!Íùº&²˜(¦b&§@6¸Š¤Í-ó½p4N玢ï’5¡~)HÙ"®f=”®B¥¾¨Ê¢¬ª%(7/Ç êY-¢¤ +R¸¸Å¹f!mŽOnÝ7¯F÷ÈÕl¿ÓÑ`ÒPëúo QŠ€G®Ymé~`ä*r5à1"-®|n¨"Ж@®âoâp €\ ‡ÚR~À¹xC¹Š\EÂ@’«¬‹·YŸ´¬ ·w¸·ËòºŽÅ¼Q{!ˆ@–@®†#¦fÉü(6D W‘«ˆ@8@®†ÃN! ÿ¨j–@®"Wp àŽ«o¿öDÈ*ÍÍÍê{ ÷AE„ÿD «(¹Z¸ßê†×l’w8cA‹€½F®Ö<¨"@@®b.EÂr5vÂô‚ W‘«ˆ@8@®†ÃN˜Už«ðÞ}Ü F‰ró*"«á°®ä*rÈÕpØ ³ "€\E®"á@ Ü\ÍÞC}³'ÙU~ð¦†ØË›½ªžezîè º¶×8‹\•¾gÁA‹š´ñ6¢‰d“6æ£ËZÁ¼:Ä\TF¸ê8;ÒÀñÅ"¬Úš.ÜìG7Gð¥Æ]¥ïCá^žâƒÂÙåjëmÇž|ÎåÌ$}uF‡ÌŽR®zPÛ7“6ŽîáªÊúÒzÂ^Ö½}P8ÉUøýês©çfð^ÍäÙ©²A‹«'a[Õ8¼¸OGçºk)j"5‰J2±œÆ´lGMó 'MÔó$=ªt""¢E¤hpS °Æâè"h¢ÕTʈH:Zœª!æ|Έ"پⱫèà¶±ß\•ZE ¨ªFê÷é.Ò­ )åªfÊ\{ýGóe(G„ÅX Í9n§  ª¯LÐvE{ŽQm–«\„ãb*g96Bs‘XÅ}Ø3dŽÆÅ "f 1:ªæ¥™”Ô³ õWy§XïH9Ï‘ˆó~ÕО¹JaψÅUAVê®®²’Êt›9õíýÈ«§‘ÎVµ´pL"L¢¬!Wõ¢X”Óá*e‹g·6Œܬ g爧ÞFéLJåÇÐVqÕ1k¬pU~²‘W¥¹È0-§“ ¤Ñ×|昜]-4ƒš#å8 ²c˜HŸ«zšyX‰FjΔªôžÙDÊ;•?{K]Ù%6w q8ÍŠHt2éÂF¬tLhD2בˆ˜ZY?àZª¦ ÊÉqF,’Ò™J£’J¬†Ø–ÔLÒ ªÈã8Š6kUîâê…;^T[œ&:g‰±Y\gIc½X•9ýT&:ø9ßÜŽ•?h§¸Ú- ×lrb X.:äüœ š?h·5®æÄ]pPDÀ«á¸oÛWÀ!Ž€O\ÍÔBÅdWÀñLéc2VNÚ¤3Aq«&'SÀAùí+²œíóÕt\GÜ­¨—ÏnºÒ}Ë¶á †[£ÜƦ«ý9W¶¡Î,ÎÒmmÕ®4÷¬§?£ØÌ®3H/Tx¶PÀ;ŠdîRéçUó±<Àh.ܼ¥5LRH:b% )«\e£¬”-l˜d/aqÅ´ ÆWGÃp\•JàtÐØƒëÎ¥kMø;šOœE5"­7ˆ£Tm½-¤°‹lwÖÑ¢-DňŸÐ±¸cêEœ'H{‰°ÐˆïØL16ùNGx÷T®ÙHá§m¸“¾üjÞégw¢L6ßz‘ë.ÎEbXµMU9–[åÝN_§¸!NP¿„ÑXYå’ôÒbh=zbnÐ(?T›)ж"R®Šá\àõÄÉ&†L;Ša[ ½b†qËU1xf¸4…:ÒOê‹b/ͼ(P·æÚÐÜè–«ú¤ %®ŠŠiŠFíô©ʼÊRBþ¥¸˜'ÇoÂGÄÀ/­ÉW9õô,AvÅUG(4¦ÑeÇ^æ¼5É«Ž<çBaúäämƼ*å§t…ã*¯êÅzȇbNÖ¤Y}~34*9n%8¢¡YÈ8’„SÒ0Rplqì娆&šÃ(ÅÁÑ=09‹y•Aÿ±É.LÖÒ Î-64f3÷9NU1ŽrteÛ‹$ä4ä‚.;q¶¥ˆ˜*œ‹Ž«Ò‡‹3„¨˜j.š@£ÉÒ¬hæÂM\j N”ht±—èi®üЕòbc1X{ h«²—WÓRK¶Q$ `zF¥£Cf6ÔD¤M„hP2énØÆŸQ •É“fÙÍ«žAT¹Bú®ìJ%ÿ=ÒóU‰ÈÕ|ÍûŒ¹nmµe@¹ÚVáÆy!žHrî1Ü–ùçzÖ ;"ˆ€ˆrgƒ„äj8ì„y@®"Wp €\ ‡0« ÈUä*"x®v¸·ËòºŽÅ0Œ!ˆ@ Hq•¾{ ¹(ó 2ˆE¹Žõº,"àÀÕ·_{ "€äææf§œ¹ Mñ"€ä#®âÂ@‚ž¯âù*"x®v¸¯Ù$Ž¢ˆ‹@òùÀðÃÖßÙ WÃeÑó ä*2È՜٩ºrWùÁ¿:ðç’ýò¿ìßý;ß L¶ô³¿À¬aîú¬ˆàÈ¿Škàœ¬¦Àe+íØôƒŸõšñˆuÆ|(]ŠXòoÏU•ï„¢ÇÁA®æ,‹ŠÐC†¢ßÿ“ßn?Ãkw~½ë`Ì÷¾¼è˜Wäj°¸ õƒ¿íÿ"þúàoŸÂ¬ÔìÓçUà*‚ÃA„ç«9c/œ¼Áº÷Ô©“P’ÿ>oóåóÏOÄ£ 0ë£G깊à8çUüoç®:ÀkOØÿŽçGiŠEŽÕÕÀ¬Õ•8æUG‘W[Þ‡\õ™«MM‰¦¦x>”D"ÖX_w¤¦Âœ«Žì^äjò§ ~’Wãñh²4¶ù‹5Ô«­­*5ç*‚ƒ\õ•“*þ·p•°´¡Í—X¬¾þXMmÕ!7\EpZ}µeo óª¿IÜÂÕH8àÇA(ðæ‹ì©;v´º¦²Ä WýG5÷¬bBÑ6¹š³›Y®’÷٤ɴô%h0qGºÉ88T1='Åo³Š r5gôsuºKÜ‘X ü8ÍB¸š¾4%hº76=ZWU]á"¯fª˜ %·õ™Ê>¯v„Ï1ô‰êä*õ3ö€¾9Žxý(6&ßÒ¿lcÚ—ýÖ››š¸#—W³ÊU)"¤Ä„"iNê=qÓßÄ!Wý:q%\%ÖS¥SÀŸHwñ€VÒ¯k¤-ÙJoª64ÔÕ©¬Š4?_Í8,2ÒYJñ¯ª#m™>&Ip«>eQéýÀI®…ÒØX—NI:-A< •ô+Ç6“^l_Ïz64©;RQùÌ W3‹ )‡‰+–LaBÁ4¹z®rÔÙå¶FdfÛãª*r™`Å…EÏÁ‹íˆ\ÍM6™È˜ Lå¹€{±}ÉG¶Òm¾¯g=ëë9©,?`žWÓGD†Ô¨æè+ÏhpMÀÁ¼š3>眫Äeé?ÖƒÙJγ={§‰;r{KÙãªjî”Ã2l{‘íž1¡MÀA®æ˜«°©¥¾þH›/ÇŽ>\©(s‘WþÃ÷[tïÝ7Y¾f¤ É«$²BXÍ`Ï`¡&ƒò½‰:v¬öpmyEÙ~ó5p¦À & ,Œ&àà}K9ΫÄ``ª6_Ž­®­)‹”~jÎUïÝÏ?YèI^MR´& Ü´TSu¨¼to’«‡L~¿Šà WÄÕõµµ(p.ÇmµÀ«m¢î+9ðOàj}]© Wäj ¸ZöÙÇð\¿þߟKî.ù쟇>ÛmµÀìîßùé'}û7¿Y7ÖW蹊ਟႿ‰óëÖBjƒÈ¡íw<öܸµ[Ÿõ­Ý;~ß¶Ë®ÿ³kûGo¼óöØÕO/â'±h­ž«r5•˜¡ºâŸð÷þ½”WÏ^ùäÿFkñ:=Wäj€¸ ÏÝ„Çù5ÖWÆcGñ£MñcM ÿʉqß 3¯†ãM M‰ú£G>ÓsÁA®ˆ«¹H‹BòÔõÕ‹ñ|Õ÷óÕüq2œiF@®b¦EÂr5vÊH`F!¡F¹Š\EÂr5v uB@å3‚r¹Š„ WÏŸé²¼®cñ߬‘»Dðx©yÿ÷-öšÍ9cö7í`§[öž1|´X7•~_ÓJKáKRÜŽ(Ó‘š¡iº‚ËUcmÅŒ² —ÔÊî jgÄv¢p%¶ªAU¶¶we¸$\×î°ú½gu{Þêü¤euyÕêö\²lk9  ô‹aß–f6Ì‹J1•‰zI…¥íU•ƒ‚YQ¢'…KQ)•¬©”ªj¯œ©JCW6͈â“i{—©'''¨„K5}7õ‚ùó6ýg’«_ù‘ýD6ÿÅQ:Ý<ª"íIEND®B`‚tiemu-3.03-nogdb+dfsg/install-sh000077500000000000000000000142531220314353500165770ustar00rootroot00000000000000#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd=$cpprog shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "$0: no input file specified" >&2 exit 1 else : fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d "$dst" ]; then instcmd=: chmodcmd="" else instcmd=$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f "$src" ] || [ -d "$src" ] then : else echo "$0: $src does not exist" >&2 exit 1 fi if [ x"$dst" = x ] then echo "$0: no destination specified" >&2 exit 1 else : fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d "$dst" ] then dst=$dst/`basename "$src"` else : fi fi ## this sed command emulates the dirname command dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` IFS=$oIFS pathcomp='' while [ $# -ne 0 ] ; do pathcomp=$pathcomp$1 shift if [ ! -d "$pathcomp" ] ; then $mkdirprog "$pathcomp" else : fi pathcomp=$pathcomp/ done fi if [ x"$dir_arg" != x ] then $doit $instcmd "$dst" && if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename "$dst"` else dstfile=`basename "$dst" $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename "$dst"` else : fi # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/#inst.$$# rmtmp=$dstdir/#rm.$$# # Trap to clean up temp files at exit. trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 trap '(exit $?); exit' 1 2 13 15 # Move or copy the file name to the temp name $doit $instcmd "$src" "$dsttmp" && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && # Now remove or move aside any old file at destination location. We try this # two ways since rm can't unlink itself on some systems and the destination # file might be busy for other reasons. In this case, the final cleanup # might fail but the new file should still install successfully. { if [ -f "$dstdir/$dstfile" ] then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" fi && # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit } tiemu-3.03-nogdb+dfsg/install.bat000066400000000000000000000002751220314353500167300ustar00rootroot00000000000000mkdir c:\lpg\msvc cd glade call copy.bat cd .. cd misc call copy.bat cd .. cd pixmaps call copy.bat cd .. cd skins call copy.bat cd .. cd pedrom call copy.bat cd ..tiemu-3.03-nogdb+dfsg/ltmain.sh000066400000000000000000005470101220314353500164150ustar00rootroot00000000000000# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. basename="s,^.*/,,g" # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: progname=`echo "$progpath" | $SED $basename` modename="$progname" # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 PROGRAM=ltmain.sh PACKAGE=libtool VERSION=1.5.6 TIMESTAMP=" (1.1220.2.95 2004/04/11 05:50:42) Debian$Rev: 203 $" # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" ##################################### # Shell function definitions: # This seems to be the best place for them # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` if test "X$win32_nmres" = "Ximport" ; then win32_libid_type="x86 archive import" else win32_libid_type="x86 archive static" fi fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $echo $win32_libid_type } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case "$@ " in " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit $EXIT_FAILURE # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi } # End of Shell function definitions ##################################### # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Parse our command line options once, thoroughly. while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; tag) tagname="$arg" preserve_args="${preserve_args}=$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 exit $EXIT_FAILURE ;; esac case $tagname in CC) # Don't test for the "default" C tag, as we know, it's there, but # not specially marked. ;; *) if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi ;; esac ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" $echo $echo "Copyright (C) 2003 Free Software Foundation, Inc." $echo "This is free software; see the source for copying conditions. There is NO" $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." exit $EXIT_SUCCESS ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath # Now print the configurations for the tags. for tagname in $taglist; do ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" done exit $EXIT_SUCCESS ;; --debug) $echo "$progname: enabling shell trace mode" set -x preserve_args="$preserve_args $arg" ;; --dry-run | -n) run=: ;; --features) $echo "host: $host" if test "$build_libtool_libs" = yes; then $echo "enable shared libraries" else $echo "disable shared libraries" fi if test "$build_old_libs" = yes; then $echo "enable static libraries" else $echo "disable static libraries" fi exit $EXIT_SUCCESS ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: preserve_args="$preserve_args $arg" ;; --tag) prevopt="--tag" prev=tag ;; --tag=*) set tag "$optarg" ${1+"$@"} shift prev=tag preserve_args="$preserve_args --tag" ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= for arg do case "$arg_mode" in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit $EXIT_FAILURE fi arg_mode=target continue ;; -static | -prefer-pic | -prefer-non-pic) later="$later $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; * ) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac base_compile="$base_compile $lastarg" done # for arg case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" exit $EXIT_FAILURE ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit $EXIT_FAILURE ;; *) # Get the name of the library object. [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSifmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.ii) xform=ii ;; *.class) xform=class ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; *.java) xform=java ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit $EXIT_FAILURE ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir= else xdir=$xdir/ fi lobj=${xdir}$objdir/$objname if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi $run $rm $removelist trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$progpath" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi $echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi $run $rm "$libobj" "${libobj}T" # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then $show "$mv $output_obj $lobj" if $run $mv $output_obj $lobj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the PIC object to the libtool object file. test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the non-PIC object the libtool object file. # Only append if the libtool object file exists. test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit $EXIT_FAILURE fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat $save_arg` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi done else $echo "$modename: link input file \`$save_arg' does not exist" exit $EXIT_FAILURE fi arg=$save_arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; shrext) shrext_cmds="$arg" prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit $EXIT_FAILURE fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit $EXIT_FAILURE fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs -framework System" continue esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # gcc -m* arguments should be passed to the linker via $compiler_flags # in order to pass architecture information to the linker # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo # but this is not reliable with gcc because gcc may use -mfoo to # select a different linker, different libraries, etc, while # -Wl,-mfoo simply passes -mfoo to the linker. -m*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" if test "$with_gcc" = "yes" ; then compiler_flags="$compiler_flags $arg" fi continue ;; -shrext) prev=shrext continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test "$status" -ne 0 && test ! -d "$output_objdir"; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac case $host in *cygwin* | *mingw* | *pw32*) # don't eliminate duplications in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) duplicate_compiler_generated_deps=$duplicate_deps ;; esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit $EXIT_FAILURE ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then library_names= old_library= case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) if test "$deplibs_check_method" != pass_all; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because the file extensions .$libext of this argument makes me believe" $echo "*** that it is just a static archive that I should not used here." else $echo $echo "*** Warning: Linking the shared library $output against the" $echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit $EXIT_FAILURE fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi # This is a shared library # Warn about portability, can't link against -module's on # some systems (darwin) if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi $echo "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`$echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$extract_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$old_archive_from_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5* ) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a module then we can not link against # it, someone is ignoring the new warnings I added if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo $echo "** And there doesn't seem to be a static archive available" $echo "** The link will probably fail, sorry" else add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit $EXIT_FAILURE fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $echo $echo "*** Warning: This system can not link to static lib archive $lib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $echo "*** But as you try to build a module library, libtool will still create " $echo "*** a static module, that should work as long as the dlopening application" $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="$absdir" fi depdepl= case $host in *-*-darwin*) # we do not want to link against static libs, # but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" fi # do not add paths which are already there case " $newlib_search_path " in *" $path "*) ;; *) newlib_search_path="$newlib_search_path $path";; esac fi path="" ;; *) path="-L$path" ;; esac ;; -l*) case $host in *-*-darwin*) # Again, we only want to link against shared libraries eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` for tmp in $newlib_search_path ; do if test -f "$tmp/lib$tmp_libs.dylib" ; then eval depdepl="$tmp/lib$tmp_libs.dylib" break fi done path="" ;; *) continue ;; esac ;; *) continue ;; esac case " $deplibs " in *" $depdepl "*) ;; *) deplibs="$depdepl $deplibs" ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$deplibs $path" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit $EXIT_FAILURE else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" $echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$2" number_minor="$3" number_revision="$4" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) current=`expr $number_major + $number_minor - 1` age="$number_minor" revision="$number_minor" ;; esac ;; no) current="$2" revision="$3" age="$4" ;; esac # Check that each of the things are valid numbers. case $current in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $revision in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $age in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) major=`expr $current - $age + 1` case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$echo "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done if test -n "$removelist"; then $show "${rm}r $removelist" $run ${rm}r $removelist fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for file magic test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval $echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for regex pattern test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` done fi if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | grep . >/dev/null; then $echo if test "X$deplibs_check_method" = "Xnone"; then $echo "*** Warning: inter-library dependencies are not supported in this platform." else $echo "*** Warning: inter-library dependencies are not known to be supported." fi $echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $echo $echo "*** Warning: libtool could not satisfy all declared inter-library" $echo "*** dependencies of module $libname. Therefore, libtool will create" $echo "*** a static module, that should work as long as the dlopening" $echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $echo "*** The inter-library dependencies that have been dropped here will be" $echo "*** automatically added whenever a program is linked with this library" $echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $echo $echo "*** Since this library must not contain undefined symbols," $echo "*** because either the platform does not support them or" $echo "*** it was explicitly requested with -no-undefined," $echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" $run eval "$cmd" || exit $? skipped_export=false else # The command line is too long to execute in one step. $show "using reloadable object file for export list..." skipped_export=: fi done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "$mkdir $xdir" $run $mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi # We will extract separately just the conflicting names and we will no # longer touch any unique names. It is faster to leave these extract # automatically by $AR in one run. $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise. $echo "creating reloadable object files..." # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= delfiles= last_robj= k=1 output=$output_objdir/$save_output-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do eval test_cmds=\"$reload_cmds $objlist $last_robj\" if test "X$objlist" = X || { len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; }; then objlist="$objlist $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi last_robj=$output_objdir/$save_output-${k}.$objext k=`expr $k + 1` output=$output_objdir/$save_output-${k}.$objext objlist=$obj len=1 fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if ${skipped_export-false}; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols libobjs=$output # Append the command to create the export file. eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi # Set up a command to remove the reloadale object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi # Append the command to remove the reloadable object files # to the just-reset $cmds. eval cmds=\"\$cmds~\$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit $EXIT_FAILURE fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "$mkdir $xdir" $run $mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi # We will extract separately just the conflicting names and we will no # longer touch any unique names. It is faster to leave these extract # automatically by $AR in one run. $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval '$echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else $echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit $EXIT_FAILURE ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) cwrappersource=`$echo ${objdir}/lt-${output}.c` cwrapper=`$echo ${output}.exe` $rm $cwrappersource $cwrapper trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 cat > $cwrappersource <> $cwrappersource<<"EOF" #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef DIR_SEPARATOR #define DIR_SEPARATOR '/' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) #define HAVE_DOS_BASED_FILE_SYSTEM #ifndef DIR_SEPARATOR_2 #define DIR_SEPARATOR_2 '\\' #endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) const char *program_name = NULL; void * xmalloc (size_t num); char * xstrdup (const char *string); char * basename (const char *name); char * fnqualify(const char *path); char * strendzap(char *str, const char *pat); void lt_fatal (const char *message, ...); int main (int argc, char *argv[]) { char **newargz; int i; program_name = (char *) xstrdup ((char *) basename (argv[0])); newargz = XMALLOC(char *, argc+2); EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" newargz[1] = fnqualify(argv[0]); /* we know the script has the same name, without the .exe */ /* so make sure newargz[1] doesn't end in .exe */ strendzap(newargz[1],".exe"); for (i = 1; i < argc; i++) newargz[i+1] = xstrdup(argv[i]); newargz[argc+1] = NULL; EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" } void * xmalloc (size_t num) { void * p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ; } char * basename (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha (name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return (char *) base; } char * fnqualify(const char *path) { size_t size; char *p; char tmp[LT_PATHMAX + 1]; assert(path != NULL); /* Is it qualified already? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha (path[0]) && path[1] == ':') return xstrdup (path); #endif if (IS_DIR_SEPARATOR (path[0])) return xstrdup (path); /* prepend the current directory */ /* doesn't handle '~' */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ p = XMALLOC(char, size); sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); return p; } char * strendzap(char *str, const char *pat) { size_t len, patlen; assert(str != NULL); assert(pat != NULL); len = strlen(str); patlen = strlen(pat); if (patlen <= len) { str += len - patlen; if (strcmp(str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char * mode, const char * message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } EOF # we should really use a build-platform specific compiler # here, but OTOH, the wrappers (shell script and this C one) # are only useful if you want to execute the "real" binary. # Since the "real" binary is built for $host, then this # wrapper might as well be built for $host, too. $run $LTCC -s -o $cwrapper $cwrappersource ;; esac $rm $output trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" $echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit $EXIT_FAILURE fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else $echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit $EXIT_FAILURE fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit $EXIT_FAILURE fi fi\ " chmod +x $output fi exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "$mkdir $xdir" $run $mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi # We will extract separately just the conflicting names and we will no # longer touch any unique names. It is faster to leave these extract # automatically by $AR in one run. $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs # GNU ar 2.10+ was changed to match POSIX; thus no paths are # encoded into archives. This makes 'ar r' malfunction in # this piecewise linking case whenever conflicting object # names appear in distinct ar calls; check, warn and compensate. if (for obj in $save_oldobjs do $echo "X$obj" | $Xsed -e 's%^.*/%%' done | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 AR_FLAGS=cq fi # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done for obj in $save_oldobjs do oldobjs="$objlist $obj" objlist="$objlist $obj" eval test_cmds=\"$old_archive_cmds\" if len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do eval cmd=\"$cmd\" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit $EXIT_SUCCESS ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit $EXIT_FAILURE fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit $EXIT_FAILURE fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" cmds=$postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then file=`$echo $file|${SED} 's,.exe$,,'` stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit $EXIT_FAILURE fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" save_umask=`umask` umask 0077 if $mkdir "$tmpdir"; then umask $save_umask else umask $save_umask $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$old_striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. cmds=$old_postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. cmds=$finish_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit $EXIT_SUCCESS $echo "----------------------------------------------------------------------" $echo "Libraries have been installed in:" for libdir in $libdirs; do $echo " $libdir" done $echo $echo "If you ever happen to want to link against installed libraries" $echo "in a given directory, LIBDIR, you must either use libtool, and" $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" $echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" $echo " during execution" fi if test -n "$runpath_var"; then $echo " - add LIBDIR to the \`$runpath_var' environment variable" $echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $echo $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "----------------------------------------------------------------------" exit $EXIT_SUCCESS ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit $EXIT_FAILURE fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit $EXIT_FAILURE fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit $EXIT_SUCCESS fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi rmdirs= origobjdir="$objdir" for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$origobjdir" else objdir="$dir/$origobjdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test "$mode" = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. cmds=$postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. cmds=$old_postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) # Possibly a libtool object, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # Read the .lo file . $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" \ && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" \ && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$noexename # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit $EXIT_FAILURE fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --tag=TAG use configuration variables from tag TAG --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." exit $EXIT_SUCCESS ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." exit $EXIT_SUCCESS # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: tiemu-3.03-nogdb+dfsg/man/000077500000000000000000000000001220314353500153415ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/man/Makefile.am000066400000000000000000000005131220314353500173740ustar00rootroot00000000000000man_MANS = tiemu.1 pkgdata_DATA = Manpage.txt EXTRA_DIST = $(man_MANS) cleaner.c Manpage.txt all: dist_win view: $(man_MANS) groff -Tascii -man $(man_MANS) | less dist_win: $(man_MANS) groff -Tascii -man $(man_MANS) > Manpage C_INCLUDE_PATH="" LIBRARY_PATH="" gcc cleaner.c -o cleaner ./cleaner Manpage rm Manpage cleaner tiemu-3.03-nogdb+dfsg/man/Makefile.in000066400000000000000000000355421220314353500174170ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = man DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgdatadir)" NROFF = nroff MANS = $(man_MANS) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; pkgdataDATA_INSTALL = $(INSTALL_DATA) DATA = $(pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTODIRS = @AUTODIRS@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLADE_CFLAGS = @GLADE_CFLAGS@ GLADE_LIBS = @GLADE_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GROFF = @GROFF@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INCINTL = @INCINTL@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KDECONFIG = @KDECONFIG@ KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ KDE_INCLUDES = @KDE_INCLUDES@ KDE_LDFLAGS = @KDE_LDFLAGS@ KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@ KDE_MT_LIBS = @KDE_MT_LIBS@ KDE_RPATH = @KDE_RPATH@ LDFLAGS = @LDFLAGS@ LIBCOMPAT = @LIBCOMPAT@ LIBCRYPT = @LIBCRYPT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBOBJS = @LIBOBJS@ LIBPNG = @LIBPNG@ LIBPTHREAD = @LIBPTHREAD@ LIBRESOLV = @LIBRESOLV@ LIBS = @LIBS@ LIBSM = @LIBSM@ LIBSOCKET = @LIBSOCKET@ LIBTOOL = @LIBTOOL@ LIBUCB = @LIBUCB@ LIBUTIL = @LIBUTIL@ LIBXINERAMA = @LIBXINERAMA@ LIBZ = @LIBZ@ LIB_KAB = @LIB_KAB@ LIB_KDECORE = @LIB_KDECORE@ LIB_KDEPRINT = @LIB_KDEPRINT@ LIB_KDEUI = @LIB_KDEUI@ LIB_KFILE = @LIB_KFILE@ LIB_KFM = @LIB_KFM@ LIB_KHTML = @LIB_KHTML@ LIB_KIO = @LIB_KIO@ LIB_KPARTS = @LIB_KPARTS@ LIB_KSPELL = @LIB_KSPELL@ LIB_KSYCOCA = @LIB_KSYCOCA@ LIB_QPE = @LIB_QPE@ LIB_QT = @LIB_QT@ LIB_SMB = @LIB_SMB@ LIB_X11 = @LIB_X11@ LIB_XEXT = @LIB_XEXT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ QTE_NORTTI = @QTE_NORTTI@ QT_INCLUDES = @QT_INCLUDES@ QT_LDFLAGS = @QT_LDFLAGS@ RANLIB = @RANLIB@ RC = @RC@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TICABLES_CFLAGS = @TICABLES_CFLAGS@ TICABLES_LIBS = @TICABLES_LIBS@ TICALCS_CFLAGS = @TICALCS_CFLAGS@ TICALCS_LIBS = @TICALCS_LIBS@ TICONV_CFLAGS = @TICONV_CFLAGS@ TICONV_LIBS = @TICONV_LIBS@ TIFILES_CFLAGS = @TIFILES_CFLAGS@ TIFILES_LIBS = @TIFILES_LIBS@ UIC = @UIC@ UIC_TR = @UIC_TR@ USER_INCLUDES = @USER_INCLUDES@ USER_LDFLAGS = @USER_LDFLAGS@ USE_NLS = @USE_NLS@ USE_THREADS = @USE_THREADS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_INCLUDES = @X_INCLUDES@ X_LDFLAGS = @X_LDFLAGS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ all_includes = @all_includes@ all_libraries = @all_libraries@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ dbus = @dbus@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ kde = @kde@ kde_appsdir = @kde_appsdir@ kde_bindir = @kde_bindir@ kde_confdir = @kde_confdir@ kde_datadir = @kde_datadir@ kde_htmldir = @kde_htmldir@ kde_icondir = @kde_icondir@ kde_includes = @kde_includes@ kde_libraries = @kde_libraries@ kde_libs_htmldir = @kde_libs_htmldir@ kde_libs_prefix = @kde_libs_prefix@ kde_locale = @kde_locale@ kde_mimedir = @kde_mimedir@ kde_moduledir = @kde_moduledir@ kde_qtver = @kde_qtver@ kde_servicesdir = @kde_servicesdir@ kde_servicetypesdir = @kde_servicetypesdir@ kde_sounddir = @kde_sounddir@ kde_styledir = @kde_styledir@ kde_templatesdir = @kde_templatesdir@ kde_wallpaperdir = @kde_wallpaperdir@ kde_widgetdir = @kde_widgetdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ qt_includes = @qt_includes@ qt_libraries = @qt_libraries@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x_includes = @x_includes@ x_libraries = @x_libraries@ man_MANS = tiemu.1 pkgdata_DATA = Manpage.txt EXTRA_DIST = $(man_MANS) cleaner.c Manpage.txt all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu man/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man1_MANS) $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 1*) ;; \ *) ext='1' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ done uninstall-man1: @$(NORMAL_UNINSTALL) @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 1*) ;; \ *) ext='1' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ done install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ $(pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-man install-pkgdataDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-man1 install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-pkgdataDATA uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-pdf install-pdf-am install-pkgdataDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-man uninstall-man1 \ uninstall-pkgdataDATA all: dist_win view: $(man_MANS) groff -Tascii -man $(man_MANS) | less dist_win: $(man_MANS) groff -Tascii -man $(man_MANS) > Manpage C_INCLUDE_PATH="" LIBRARY_PATH="" gcc cleaner.c -o cleaner ./cleaner Manpage rm Manpage cleaner # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/man/Manpage.txt000066400000000000000000000230521220314353500174540ustar00rootroot00000000000000TIEMU(1) TIEMU(1) NAME tiemu - a TI's hand-helds emulator (m68k-based) SYNOPSYS tiemu [-h] [-v] [--help] [--version] [--import] [-rom=] [-tib=] [-sav=] [filename] DESCRIPTION The TiEmu program allows you to emulate a Texas Instruments calculator such as TI89, TI89 Titanium, TI92, TI92+ or V200PLT. The emulator has also a virtual link capability which allows to connect it to another program (such as TiLP for instance). OPTIONS The command line options override the default options (startup options) and the config file options even. The TiEmu program accepts the fol- lowing options: -h, --help Display a list of all command line options. -v, --version Output the version info. --import= Import ROM or TIB into repository and exit. Can be used for cre- ating images (as an example). This flag must be set before -rom or -tib ! -rom= Convert and use the specified dump as image. Note that the image is added to the image repository. Provided for compatibility. -tib= Convert and use the specified tib/upgrade as image. Idem. Pro- vided for compatibility. -sav= Load the specified state file. Must be a valid state image and target for emulated calculator. Provided for compatibility. filename Load a ROM/TIB/SAV file. ROM & TIB files are converted and added to images repository. Image corresponding to SAV file is auto- matically loaded and state is load. CONFIG FILE FORMAT This section describes the format of the .tiemu config file which is in the home directory of the user (Linux) or in the Program Files folder (Win32). A line preceded by the '#' symbol is a comment. Each line has the following format: key=value. The config file must have the 'RC_END' string at end. Every line can be put in any order. Take in mind that any comment added in the config file will be overwritten. Below is described each option and the possible values: calctype= Defines the calculator type for link parameter. Valid values are: ti89, ti89t, ti92, ti92+, v200. Note: don't need to touch this setting, it's overridden by TiEmu. Kept for compatibility. linktype= Define the link cable type. Choose one of the following value: none, parallel, serial, TIGraphLink, virtual, TiEmulator, VTi, UsbGraphLink. port= Define a link port to use. Can be: null, user, parallel port #1|2|3, serial port #1|2|3|4, virtual port #1|2, USB port #1. method= Define an I/O method to use. Possible values are: automatic, asm, api, driver, null. adr_port= places the I/O address of the I/O port to use. It can be 0x3F8 for a serial port or 0x378 for a parallel port for instance. serial_device= places the character device name of the serial port to use with a Grey TIGL. timeout= with the timeout value to use in tenth of seconds. Default value: 20. delay= with the delay value to use in micro-seconds for home-made cables. Default value: 10 background= Define whether TiEmu display the whole frame (keyboard+LCD) or just the LCD screen. Set to 0 if you do not want to use the key- board. skin_file= Define the custom skin file to use. Must be a full path name. keys_file= Define the keymap to use. Must be a full path name. img_file= Define the TiEmu image to load at startup. Must be a full path name. tib_file= Define the FLASH upgrade (tib or .9xu/.89u) to load after the image. Must be a full path name. sav_file= Define the calculator state image to load at startup. cpu_rate= Give the number of instructions executed by the M68000 per 30ms timeslice. Default value is -1 (50000 insts/30ms). hw_rate= Give the OS2/OSC3 oscillator rate. Default value is -1 (427 on hw1 and 732 on hw2; OSC2 is incremented every 6250 OSC1 cycles). lcd_rate= Define the frame rate of LCD refresh. Default value is -1 (25ms => 40fps). Don't use a value smaller than 10ms. img_format= Defines the image format of the screenshots. Several for- mats are available: jpg, png and ico. img_type= You can do B/W (bw) or colored (color) screenshots. img_size= The size of the image that is to say you can shots only the LCD (lcd) or the entire window (skin). screen_file= Defines the base filename where the screenshot will be stored. screen_counter= This allows you to save the current screenshot counter. In fact, the resulting filename is computed as 'screen- file[screen_counter].[img_format]. Example: 'screenshot001.png'. screen_shots= Number of frames to capture. screen_skips= Number of frame to skip between 2 captures. console= Available under Windows platform only. You can hide (no) or show (yes) the DOS console at startup or even display it only during boot (boot). kbd_dbg= Display key bindings in the console if set (yes). Else, do nothing (no). fs_type= TiEmu supports several file selectors for better integration. The following options are supported: - native: native one (default): Win32 on Windows, KDE if built with KDE support and running under KDE, GTK+ 2.x else, - old: GTK 1.2 file selector, - new: GTK 2.x file selector (advanced capabilities and can show hidden files), - win32: deprecated (same as native), - kde: KDE file selector (only available if TiEmu is built with KDE support). bkpts_wnd= code_wnd= mem_wnd= regs_wnd= pclog_wnd= stack_wnd= heap_wnd= Set geometry hints for the different windows of the debugger. The format is (x,y,w,h,m,v) where x&y are coordinates, w&h are the size, m is set if window is minimized and v is set if the window is open. dbg_font_type= Enable custom font if set to "custom"; use default font if set to "default". dbg_font_name= Name of font to use. It must be a valid Pango descrip- tion font name: a string representation in the form "[FAMILY-LIST] [STYLE-OPTIONS] [SIZE]", where FAMILY-LIST is a comma separated list of families optionally terminated by a comma, STYLE_OPTIONS is a whites- pace separated list of words where each WORD describes one of style, variant, weight, or stretch, and SIZE is an decimal number (size in points). Any one of the options may be absent. If FAMILY-LIST is absent, then the family_name field of the resulting font description will be initialized to NULL. If STYLE-OPTIONS is missing, then all style options will be set to the default values. If SIZE is missing, the size in the resulting font description will be set to 0. Think to terminate your config script with the 'RC_END' word !!! COPYRIGHT Copyright (C) 2000-2001, Romain Lievin and Thomas Corvazier. Copyright (C) 2001-2003, Romain Lievin Copyright (C) 2003, Julien Blache Copy- right (C) 2004, Romain Lievin Copyright (C) 2005-2007, Romain Lievin and Kevin Kofler Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, pro- vided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in sup- porting documentation. This program and its source code is distributed under the terms of the terms of the GNU General Public License as published by the Free Soft- ware 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 MER- CHANTABILITY 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. SUGGESTIONS AND BUG REPORTS The canonical place to find TiEmu and some miscellenaous informations is at . You can also take a look at and for others TI related programs for Linux. SEE ALSO tilp(1) for the use of a linking program. TiEmu shares the same commu- nication box for link settings. SPECIAL THANKS - Jonas Minnberg (Sasq) for Tiger - UAE, the Universal Amiga Emulator - Kevin Kofler for creating rpm packages (Fedora): he is the official maintainer of this package. - Julien Blache for creating deb packages (Debian): he is the official maintainer of this package. AUTHOR Romain Lievin Kevin Kofler March 28, 2007 TIEMU(1) ÿÿtiemu-3.03-nogdb+dfsg/man/cleaner.c000066400000000000000000000057161220314353500171270ustar00rootroot00000000000000/* manpage_cleaner - remove the repetition of characters * Copyright (C) 2000 Romain Lievin * * 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. */ #include #include #include #include #define MAXCHARS 256 int main(int argc, char **argv) { char filename[MAXCHARS]; char filename2[MAXCHARS]; char filename3[MAXCHARS]; FILE *in; FILE *tmp; FILE *out; char buffer[3]; /* Retrieve the command line argument */ if(argc < 2) { fprintf(stderr, "You must give a filename on the command line.\n"); exit(1); } strcpy(filename, argv[1]); strcpy(filename2, filename); strcat(filename2, ".tmp"); strcpy(filename3, filename); strcat(filename3, ".txt"); fprintf(stdout, "Processing file <%s>:\n", filename); fprintf(stdout, "Pass 1... "); /* Open the file for reading */ in = fopen(filename, "rb"); if(in == NULL) { fprintf(stderr, "Unable to open this file: <%s>\n", filename); exit(1); } /* Open a temporary file fpr writing */ out = fopen(filename2, "wb"); if(out == NULL) { fprintf(stderr, "Unable to open this file: <%s>\n", filename2); exit(1); } /* Process the file for removing backspace sequences */ while(!feof(in)) { buffer[0] = fgetc(in); if(feof(in)) { fputc(buffer[0], out); break; } buffer[1]= fgetc(in); if(buffer[0] == '\b') { continue; // Skip the char and BS } if(buffer[1] == '\b') { fputc(fgetc(in), out); // Skip the 2 previous chars continue; } fputc(buffer[0], out); fputc(buffer[1], out); } fprintf(stdout, "Done.\n"); /* Close the files */ fclose(in); fclose(out); fprintf(stdout, "Pass 2... "); /* Open the temporary file and another file */ in = fopen(filename2, "rb"); if(in == NULL) { fprintf(stderr, "Unable to open this file: <%s>\n", filename); exit(1); } out = fopen(filename3, "wb"); if(out == NULL) { fprintf(stderr, "Unable to open this file: <%s>\n", filename2); exit(1); } /* Copy the file */ while(!feof(in)) { if(feof(in)) break; fputc(fgetc(in), out); } /* Close files */ fclose(in); fclose(out); unlink(filename2); fprintf(stdout, "Done.\n"); return 0; } tiemu-3.03-nogdb+dfsg/man/tiemu.1000066400000000000000000000207061220314353500165530ustar00rootroot00000000000000.TH TIEMU 1 "March 28, 2007" .SH NAME tiemu - a TI's hand-helds emulator (m68k-based) .SH SYNOPSYS \fBtiemu\fP [-h] [-v] [--help] [--version] [--import] [-rom=] [-tib=] [-sav=] [filename] .SH DESCRIPTION The \fBTiEmu\fP program allows you to emulate a Texas Instruments calculator such as TI89, TI89 Titanium, TI92, TI92+ or V200PLT. The emulator has also a virtual link capability which allows to connect it to another program (such as TiLP for instance). .SH OPTIONS The command line options override the default options (startup options) and the config file options even. The \fBTiEmu\fP program accepts the following options: .TP \fB-h, --help\fP Display a list of all command line options. .TP \fB-v, --version\fP Output the version info. .TP \fB--import=\fP Import ROM or TIB into repository and exit. Can be used for creating images (as an example). This flag must be set before -rom or -tib ! .TP \fB-rom=\fP Convert and use the specified dump as image. Note that the image is added to the image repository. Provided for compatibility. .TP \fB-tib=\fP Convert and use the specified tib/upgrade as image. Idem. Provided for compatibility. .TP \fB-sav=\fP Load the specified state file. Must be a valid state image and target for emulated calculator. Provided for compatibility. .TP \fBfilename\fP Load a ROM/TIB/SAV file. ROM & TIB files are converted and added to images repository. Image corresponding to SAV file is automatically loaded and state is load. .SH CONFIG FILE FORMAT This section describes the format of the .tiemu config file which is in the home directory of the user (Linux) or in the Program Files folder (Win32). A line preceded by the '#' symbol is a comment. Each line has the following format: key=value. The config file must have the 'RC_END' string at end. Every line can be put in any order. Take in mind that any comment added in the config file will be overwritten. Below is described each option and the possible values: \fBcalctype=\fP Defines the calculator type for link parameter. Valid values are: ti89, ti89t, ti92, ti92+, v200. Note: don't need to touch this setting, it's overridden by TiEmu. Kept for compatibility. \fBlinktype=\fP Define the link cable type. Choose one of the following value: none, parallel, serial, TIGraphLink, virtual, TiEmulator, VTi, UsbGraphLink. \fBport=\fP Define a link port to use. Can be: null, user, parallel port #1|2|3, serial port #1|2|3|4, virtual port #1|2, USB port #1. \fBmethod=\fP Define an I/O method to use. Possible values are: automatic, asm, api, driver, null. \fBadr_port=\fP places the I/O address of the I/O port to use. It can be 0x3F8 for a serial port or 0x378 for a parallel port for instance. \fBserial_device=\fP places the character device name of the serial port to use with a Grey TIGL. \fBtimeout=\fP with the timeout value to use in tenth of seconds. Default value: 20. \fBdelay=\fP with the delay value to use in micro-seconds for home-made cables. Default value: 10 \fBbackground=\fP Define whether TiEmu display the whole frame (keyboard+LCD) or just the LCD screen. Set to 0 if you do not want to use the keyboard. \fBskin_file=\fP Define the custom skin file to use. Must be a full path name. \fBkeys_file=\fP Define the keymap to use. Must be a full path name. \fBimg_file=\fP Define the TiEmu image to load at startup. Must be a full path name. \fBtib_file=\fP Define the FLASH upgrade (tib or .9xu/.89u) to load after the image. Must be a full path name. \fBsav_file=\fP Define the calculator state image to load at startup. \fBcpu_rate=\fP Give the number of instructions executed by the M68000 per 30ms timeslice. Default value is -1 (50000 insts/30ms). \fBhw_rate=\fP Give the OS2/OSC3 oscillator rate. Default value is -1 (427 on hw1 and 732 on hw2; OSC2 is incremented every 6250 OSC1 cycles). \fBlcd_rate=\fP Define the frame rate of LCD refresh. Default value is -1 (25ms => 40fps). Don't use a value smaller than 10ms. \fBimg_format=\fP Defines the image format of the screenshots. Several formats are available: jpg, png and ico. \fBimg_type=\fP You can do B/W (bw) or colored (color) screenshots. \fBimg_size=\fP The size of the image that is to say you can shots only the LCD (lcd) or the entire window (skin). \fBscreen_file=\fP Defines the base filename where the screenshot will be stored. \fBscreen_counter=\fP This allows you to save the current screenshot counter. In fact, the resulting filename is computed as 'screenfile[screen_counter].[img_format]. Example: 'screenshot001.png'. \fBscreen_shots=\fP Number of frames to capture. \fBscreen_skips=\fP Number of frame to skip between 2 captures. \fBconsole=\fP Available under Windows platform only. You can hide (no) or show (yes) the DOS console at startup or even display it only during boot (boot). \fBkbd_dbg=\fP Display key bindings in the console if set (yes). Else, do nothing (no). \fBfs_type=\fP TiEmu supports several file selectors for better integration. The following options are supported: .br - native: native one (default): Win32 on Windows, KDE if built with KDE support and running under KDE, GTK+ 2.x else, .br - old: GTK 1.2 file selector, .br - new: GTK 2.x file selector (advanced capabilities and can show hidden files), .br - win32: deprecated (same as native), .br - kde: KDE file selector (only available if TiEmu is built with KDE support). \fBbkpts_wnd=\fP .br \fBcode_wnd=\fP .br \fBmem_wnd=\fP .br \fBregs_wnd=\fP .br \fBpclog_wnd=\fP .br \fBstack_wnd=\fP .br \fBheap_wnd=\fP Set geometry hints for the different windows of the debugger. The format is (x,y,w,h,m,v) where x&y are coordinates, w&h are the size, m is set if window is minimized and v is set if the window is open. .br \fBdbg_font_type=\fP Enable custom font if set to "custom"; use default font if set to "default". .br \fBdbg_font_name=\fP Name of font to use. It must be a valid Pango description font name: a string representation in the form "[FAMILY-LIST] [STYLE-OPTIONS] [SIZE]", where FAMILY-LIST is a comma separated list of families optionally terminated by a comma, STYLE_OPTIONS is a whitespace separated list of words where each WORD describes one of style, variant, weight, or stretch, and SIZE is an decimal number (size in points). Any one of the options may be absent. If FAMILY-LIST is absent, then the family_name field of the resulting font description will be initialized to NULL. If STYLE-OPTIONS is missing, then all style options will be set to the default values. If SIZE is missing, the size in the resulting font description will be set to 0. Think to terminate your config script with the 'RC_END' word !!! .SH COPYRIGHT Copyright (C) 2000-2001, Romain Lievin and Thomas Corvazier. Copyright (C) 2001-2003, Romain Lievin Copyright (C) 2003, Julien Blache Copyright (C) 2004, Romain Lievin Copyright (C) 2005-2007, Romain Lievin and Kevin Kofler Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. This program and its source code is distributed under the terms of 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. .SH SUGGESTIONS AND BUG REPORTS The canonical place to find TiEmu and some miscellenaous informations is at . You can also take a look at and for others TI related programs for Linux. .SH SEE ALSO tilp(1) for the use of a linking program. TiEmu shares the same communication box for link settings. .SH SPECIAL THANKS - Jonas Minnberg (Sasq) for Tiger .br - UAE, the Universal Amiga Emulator .br - Kevin Kofler for creating rpm packages (Fedora): he is the official maintainer of this package. .br - Julien Blache for creating deb packages (Debian): he is the official maintainer of this package. .SH AUTHOR Romain Lievin Kevin Kofler tiemu-3.03-nogdb+dfsg/misc/000077500000000000000000000000001220314353500155215ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/misc/Makefile.am000066400000000000000000000001741220314353500175570ustar00rootroot00000000000000miscdir = $(pkgdatadir)/misc dist_misc_DATA = *.txt *.lst EXTRA_DIST = copy.bat uninstall: rm -f $(pkgdatadir)/misc/*.txttiemu-3.03-nogdb+dfsg/misc/Makefile.in000066400000000000000000000317731220314353500176010ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = misc DIST_COMMON = $(dist_misc_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(miscdir)" dist_miscDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_misc_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTODIRS = @AUTODIRS@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLADE_CFLAGS = @GLADE_CFLAGS@ GLADE_LIBS = @GLADE_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GROFF = @GROFF@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INCINTL = @INCINTL@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KDECONFIG = @KDECONFIG@ KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ KDE_INCLUDES = @KDE_INCLUDES@ KDE_LDFLAGS = @KDE_LDFLAGS@ KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@ KDE_MT_LIBS = @KDE_MT_LIBS@ KDE_RPATH = @KDE_RPATH@ LDFLAGS = @LDFLAGS@ LIBCOMPAT = @LIBCOMPAT@ LIBCRYPT = @LIBCRYPT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBOBJS = @LIBOBJS@ LIBPNG = @LIBPNG@ LIBPTHREAD = @LIBPTHREAD@ LIBRESOLV = @LIBRESOLV@ LIBS = @LIBS@ LIBSM = @LIBSM@ LIBSOCKET = @LIBSOCKET@ LIBTOOL = @LIBTOOL@ LIBUCB = @LIBUCB@ LIBUTIL = @LIBUTIL@ LIBXINERAMA = @LIBXINERAMA@ LIBZ = @LIBZ@ LIB_KAB = @LIB_KAB@ LIB_KDECORE = @LIB_KDECORE@ LIB_KDEPRINT = @LIB_KDEPRINT@ LIB_KDEUI = @LIB_KDEUI@ LIB_KFILE = @LIB_KFILE@ LIB_KFM = @LIB_KFM@ LIB_KHTML = @LIB_KHTML@ LIB_KIO = @LIB_KIO@ LIB_KPARTS = @LIB_KPARTS@ LIB_KSPELL = @LIB_KSPELL@ LIB_KSYCOCA = @LIB_KSYCOCA@ LIB_QPE = @LIB_QPE@ LIB_QT = @LIB_QT@ LIB_SMB = @LIB_SMB@ LIB_X11 = @LIB_X11@ LIB_XEXT = @LIB_XEXT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ QTE_NORTTI = @QTE_NORTTI@ QT_INCLUDES = @QT_INCLUDES@ QT_LDFLAGS = @QT_LDFLAGS@ RANLIB = @RANLIB@ RC = @RC@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TICABLES_CFLAGS = @TICABLES_CFLAGS@ TICABLES_LIBS = @TICABLES_LIBS@ TICALCS_CFLAGS = @TICALCS_CFLAGS@ TICALCS_LIBS = @TICALCS_LIBS@ TICONV_CFLAGS = @TICONV_CFLAGS@ TICONV_LIBS = @TICONV_LIBS@ TIFILES_CFLAGS = @TIFILES_CFLAGS@ TIFILES_LIBS = @TIFILES_LIBS@ UIC = @UIC@ UIC_TR = @UIC_TR@ USER_INCLUDES = @USER_INCLUDES@ USER_LDFLAGS = @USER_LDFLAGS@ USE_NLS = @USE_NLS@ USE_THREADS = @USE_THREADS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_INCLUDES = @X_INCLUDES@ X_LDFLAGS = @X_LDFLAGS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ all_includes = @all_includes@ all_libraries = @all_libraries@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ dbus = @dbus@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ kde = @kde@ kde_appsdir = @kde_appsdir@ kde_bindir = @kde_bindir@ kde_confdir = @kde_confdir@ kde_datadir = @kde_datadir@ kde_htmldir = @kde_htmldir@ kde_icondir = @kde_icondir@ kde_includes = @kde_includes@ kde_libraries = @kde_libraries@ kde_libs_htmldir = @kde_libs_htmldir@ kde_libs_prefix = @kde_libs_prefix@ kde_locale = @kde_locale@ kde_mimedir = @kde_mimedir@ kde_moduledir = @kde_moduledir@ kde_qtver = @kde_qtver@ kde_servicesdir = @kde_servicesdir@ kde_servicetypesdir = @kde_servicetypesdir@ kde_sounddir = @kde_sounddir@ kde_styledir = @kde_styledir@ kde_templatesdir = @kde_templatesdir@ kde_wallpaperdir = @kde_wallpaperdir@ kde_widgetdir = @kde_widgetdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ qt_includes = @qt_includes@ qt_libraries = @qt_libraries@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x_includes = @x_includes@ x_libraries = @x_libraries@ miscdir = $(pkgdatadir)/misc dist_misc_DATA = *.txt *.lst EXTRA_DIST = copy.bat all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu misc/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu misc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_miscDATA: $(dist_misc_DATA) @$(NORMAL_INSTALL) test -z "$(miscdir)" || $(MKDIR_P) "$(DESTDIR)$(miscdir)" @list='$(dist_misc_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_miscDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(miscdir)/$$f'"; \ $(dist_miscDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(miscdir)/$$f"; \ done uninstall-dist_miscDATA: @$(NORMAL_UNINSTALL) @list='$(dist_misc_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(miscdir)/$$f'"; \ rm -f "$(DESTDIR)$(miscdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(miscdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dist_miscDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_miscDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_miscDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-dist_miscDATA uninstall: rm -f $(pkgdatadir)/misc/*.txt # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/misc/copy.bat000066400000000000000000000001011220314353500171530ustar00rootroot00000000000000mkdir c:\lpg\msvc\misc copy *.txt c:\lpg\msvc\misc\ del *.bak tiemu-3.03-nogdb+dfsg/misc/iodefs_ti89_hw1.txt000066400000000000000000000035051220314353500211720ustar00rootroot00000000000000; I/O register definitions for TI92 (c) 2005 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; You should not write more than 16 chars for bit names ; ; Same file than iodefs_ti92p_hw1.txt but this one is the original. ; [System] $600001 | 1 | rw | <.....2.0> | Stack overflow | AI7 enable,Interleave RAM $600003 | 1 | wo | <.654.210> | Wait-states | non-RAM,non-RAM,non-RAM,RAM,RAM,RAM $600005 | 1 | wo | <...43210> | Idle/Wake-up | Wake on AI5,Wake on AI4,Wake on AI3,Wake on AI2,Wake on AI1 [Link] $60000c | 1 | rw | <765.3210> | Control | Autostart Enable,Link Disable,Link TimeOut,Link Error IE,AutoStart IE,TX buf empty IE,RX buf full IE $60000d | 1 | rw | <765432..> | Status | Link Error,TX buf empty, RX buf full,Link interrupt,AutoStart,External activity $60000e | 1 | rw | <....3210> | Direct | D1 in,D0 in,D1 out,D0 out $60000f | 1 | rw | | Rx/Tx buf [LCD] $600010 | 2 | wo | | LCD address $600012 | 1 | wo | <..543210> | LCD log. width $600013 | 1 | wo | | LCD log. height $60001C | 1 | wo | <..5432..> | LCD Row Sync $60001D | 1 | wo | <7..43210> | Contrast | Voltage mult.,Screen disable,Bit #3,Bit #2,Bit #1,Bit #0 [Timer] $600015 | 1 | rw | <7.543210> | Timer & OSC2/3 | AI1/3/5 disable,Increment rate,Increment rate,Timer enable,Triggers AI3,OSC2 enable,LCD DMA enable $600017 | 1 | rw | | Prog. Timer [Keyboard] $600019 | 1 | rw | <.6543210> | Row mask $60001a | 1 | rw | <......1.> | ON key | ON key state $60001b | 1 | rw | | Col state [Battery] $600000 | 1 | rw | <.....2..> | Status | Battery status $600018 | 1 | rw | <......10> | Voltage | Trigger level,Trigger level tiemu-3.03-nogdb+dfsg/misc/iodefs_ti89_hw2.txt000066400000000000000000000054551220314353500212010ustar00rootroot00000000000000; I/O register definitions for TI89 HW2 (c) 2005 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; You should not write more than 16 chars for bit names ; ; Same file than iodefs_ti92p_hw2.txt but this one is the original. ; [System] $600001 | 1 | rw | <.....2..> | Stack overflow | AI7 enable $600003 | 1 | wo | <.654.210> | Wait-states | non-RAM,non-RAM,non-RAM,RAM,RAM,RAM $600005 | 1 | wo | <...43210> | Idle/Wake-up | Wake on AI5,Wake on AI4,Wake on AI3,Wake on AI2,Wake on AI1 [Link] $60000c | 1 | rw | <765.3210> | Control | Autostart Enable,Link Disable,Link TimeOut,Link Error IE,AutoStart IE,TX buf empty IE,RX buf full IE $60000d | 1 | rw | <765432..> | Status | Link Error,TX buf empty, RX buf full,Link interrupt,AutoStart,External activity $60000e | 1 | rw | <....3210> | Direct | D1 in,D0 in,D1 out,D0 out $60000f | 1 | rw | | Rx/Tx buf [LCD] $600012 | 1 | wo | <..543210> | LCD log. width $600013 | 1 | wo | | LCD log. height $60001C | 1 | wo | <..5432..> | LCD Row Sync $60001D | 1 | wo | <...4....> | Contrast | Bit #4 $700017 | 1 | rw | <......10> | Address range | $4C00-6BFF,$6C00-8BFF $700018 | 1 | rw | <7...3.10> | Control/Status | FS toggle,Bat chk #B,Scren enable,Bat chk #A [Timer] $600015 | 1 | rw | <7.543210> | Timer & OSC2/3 | AI1/3/5 disable,Increment rate,Increment rate,Timer enable,Triggers AI3,OSC2 enable,LCD DMA enable $600017 | 1 | rw | | Prog. Timer [RTC] $700014 | 2 | rw | | Counter $70001F | 1 | rw | <.....210> | Control |RTC enable,AI1/2/3/5 disable [Keyboard] $600019 | 1 | rw | <.6543210> | Row mask $60001a | 1 | rw | <......1.> | ON key | ON key state $60001b | 1 | rw | | Col state [Battery] $600000 | 1 | rw | <.....2..> | Status | Battery status $600018 | 1 | rw | <......10> | Voltage | Trigger level,Trigger level [Protections] $700000 | 2 | rw | | RAM page | $000000,$001000,$002000,$003000,$004000,$005000,$006000,$007000,$008000,$009000,$00A000,$00B000,$00C000,$00D000,$00E000,$00F000 $700002 | 2 | rw | | RAM page | $010000,$011000,$012000,$013000,$014000,$015000,$016000,$017000,$018000,$019000,$01A000,$01B000,$01C000,$01D000,$01E000,$01F000 $700004 | 2 | rw | | RAM page | $020000,$021000,$022000,$023000,$024000,$025000,$026000,$027000,$028000,$029000,$02A000,$02B000,$02C000,$02D000,$02E000,$02F000 $700006 | 2 | rw | | RAM page | $030000,$031000,$032000,$033000,$034000,$035000,$036000,$037000,$038000,$039000,$03A000,$03B000,$03C000,$03D000,$03E000,$03F000 $700012 | 1 | rw | <..543210> | FLASH execution | First exec,protected sector,n*$10000,+$210000, , tiemu-3.03-nogdb+dfsg/misc/iodefs_ti89t_hw3.txt000066400000000000000000000056741220314353500213710ustar00rootroot00000000000000; I/O register definitions for Titanium HW3 (c) 2005 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; You should not write more than 16 chars for bit names ; [System] $600001 | 1 | rw | <.....2..> | Stack overflow | AI7 enable $600003 | 1 | wo | <.654.210> | Wait-states | non-RAM,non-RAM,non-RAM,RAM,RAM,RAM $600005 | 1 | wo | <...43210> | Idle/Wake-up | Wake on AI5,Wake on AI4,Wake on AI3,Wake on AI2,Wake on AI1 [Link] $60000c | 1 | rw | <765.3210> | Control | Autostart Enable,Link Disable,Link TimeOut,Link Error IE,AutoStart IE,TX buf empty IE,RX buf full IE $60000d | 1 | rw | <765432..> | Status | Link Error,TX buf empty, RX buf full,Link interrupt,AutoStart,External activity $60000e | 1 | rw | <....3210> | Direct | D1 in,D0 in,D1 out,D0 out $60000f | 1 | rw | | Rx/Tx buf [LCD] $600010 | 2 | wo | | LCD address $600012 | 1 | wo | <..543210> | LCD log. width $600013 | 1 | wo | | LCD log. height $60001C | 1 | wo | <..5432..> | LCD Row Sync $60001D | 1 | wo | <...4....> | Contrast | Bit #4 $700017 | 1 | rw | <......10> | Address range | $4C00-6BFF,$6C00-8BFF $700018 | 1 | rw | <7...3.10> | Control/Status | FS toggle,Bat chk #B,Scren enable,Bat chk #A [Timer] $600015 | 1 | rw | <7.543210> | Timer & OSC2/3 | AI1/3/5 disable,Increment rate,Increment rate,Timer enable,Triggers AI3,OSC2 enable,LCD DMA enable $600017 | 1 | rw | | Prog. Timer [RTC] $710040 | 4 | rw | | Seconds (load) $710044 | 1 | rw | <....3210> | 1/16 s (load) $710045 | 1 | ro | <....3210> | 1/16 s (count) $710046 | 4 | ro | | Seconds (count) $71005f | 1 | rw | <......10> | Control |Transfer load reg to cnt reg,Enable RTC [Keyboard] $600019 | 1 | rw | <.6543210> | Row mask $60001a | 1 | rw | <......1.> | ON key | ON key state $60001b | 1 | rw | | Col state [Battery] $600000 | 1 | rw | <.....2..> | Status | Battery status $600018 | 1 | rw | <......10> | Voltage | Trigger level,Trigger level [Protections] $700000 | 2 | rw | | RAM page | $000000,$001000,$002000,$003000,$004000,$005000,$006000,$007000,$008000,$009000,$00A000,$00B000,$00C000,$00D000,$00E000,$00F000 $700002 | 2 | rw | | RAM page | $010000,$011000,$012000,$013000,$014000,$015000,$016000,$017000,$018000,$019000,$01A000,$01B000,$01C000,$01D000,$01E000,$01F000 $700004 | 2 | rw | | RAM page | $020000,$021000,$022000,$023000,$024000,$025000,$026000,$027000,$028000,$029000,$02A000,$02B000,$02C000,$02D000,$02E000,$02F000 $700006 | 2 | rw | | RAM page | $030000,$031000,$032000,$033000,$034000,$035000,$036000,$037000,$038000,$039000,$03A000,$03B000,$03C000,$03D000,$03E000,$03F000 $700012 | 1 | rw | <..543210> | FLASH execution | First exec,protected sector,n*$10000,+$210000, , tiemu-3.03-nogdb+dfsg/misc/iodefs_ti89t_hw4.txt000066400000000000000000000056741220314353500213720ustar00rootroot00000000000000; I/O register definitions for Titanium HW3 (c) 2005 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; You should not write more than 16 chars for bit names ; [System] $600001 | 1 | rw | <.....2..> | Stack overflow | AI7 enable $600003 | 1 | wo | <.654.210> | Wait-states | non-RAM,non-RAM,non-RAM,RAM,RAM,RAM $600005 | 1 | wo | <...43210> | Idle/Wake-up | Wake on AI5,Wake on AI4,Wake on AI3,Wake on AI2,Wake on AI1 [Link] $60000c | 1 | rw | <765.3210> | Control | Autostart Enable,Link Disable,Link TimeOut,Link Error IE,AutoStart IE,TX buf empty IE,RX buf full IE $60000d | 1 | rw | <765432..> | Status | Link Error,TX buf empty, RX buf full,Link interrupt,AutoStart,External activity $60000e | 1 | rw | <....3210> | Direct | D1 in,D0 in,D1 out,D0 out $60000f | 1 | rw | | Rx/Tx buf [LCD] $600010 | 2 | wo | | LCD address $600012 | 1 | wo | <..543210> | LCD log. width $600013 | 1 | wo | | LCD log. height $60001C | 1 | wo | <..5432..> | LCD Row Sync $60001D | 1 | wo | <...4....> | Contrast | Bit #4 $700017 | 1 | rw | <......10> | Address range | $4C00-6BFF,$6C00-8BFF $700018 | 1 | rw | <7...3.10> | Control/Status | FS toggle,Bat chk #B,Scren enable,Bat chk #A [Timer] $600015 | 1 | rw | <7.543210> | Timer & OSC2/3 | AI1/3/5 disable,Increment rate,Increment rate,Timer enable,Triggers AI3,OSC2 enable,LCD DMA enable $600017 | 1 | rw | | Prog. Timer [RTC] $710040 | 4 | rw | | Seconds (load) $710044 | 1 | rw | <....3210> | 1/16 s (load) $710045 | 1 | ro | <....3210> | 1/16 s (count) $710046 | 4 | ro | | Seconds (count) $71005f | 1 | rw | <......10> | Control |Transfer load reg to cnt reg,Enable RTC [Keyboard] $600019 | 1 | rw | <.6543210> | Row mask $60001a | 1 | rw | <......1.> | ON key | ON key state $60001b | 1 | rw | | Col state [Battery] $600000 | 1 | rw | <.....2..> | Status | Battery status $600018 | 1 | rw | <......10> | Voltage | Trigger level,Trigger level [Protections] $700000 | 2 | rw | | RAM page | $000000,$001000,$002000,$003000,$004000,$005000,$006000,$007000,$008000,$009000,$00A000,$00B000,$00C000,$00D000,$00E000,$00F000 $700002 | 2 | rw | | RAM page | $010000,$011000,$012000,$013000,$014000,$015000,$016000,$017000,$018000,$019000,$01A000,$01B000,$01C000,$01D000,$01E000,$01F000 $700004 | 2 | rw | | RAM page | $020000,$021000,$022000,$023000,$024000,$025000,$026000,$027000,$028000,$029000,$02A000,$02B000,$02C000,$02D000,$02E000,$02F000 $700006 | 2 | rw | | RAM page | $030000,$031000,$032000,$033000,$034000,$035000,$036000,$037000,$038000,$039000,$03A000,$03B000,$03C000,$03D000,$03E000,$03F000 $700012 | 1 | rw | <..543210> | FLASH execution | First exec,protected sector,n*$10000,+$210000, , tiemu-3.03-nogdb+dfsg/misc/iodefs_ti92_hw1.txt000066400000000000000000000025541220314353500211670ustar00rootroot00000000000000; I/O register definitions for TI92 (c) 2005 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; You should not write more than 16 chars for bit names ; [System] $600001 | 1 | rw | <.....2.0> | Stack overflow | AI7 enable,Interleave RAM $600005 | 1 | wo | <...43.10> | Idle/Wake-up | Wake on AI5,Wake on AI4,Wake on AI2,Wake on AI1 [Link] $60000c | 1 | rw | <765.3210> | Control | Autostart Enable,Link Disable,Link TimeOut,Link Error IE,AutoStart IE,TX buf empty IE,RX buf full IE $60000d | 1 | rw | <76543...> | Status | Link Error,TX buf empty, RX buf full,Link interrupt,AutoStart $60000e | 1 | rw | <....3210> | Direct | D1 in,D0 in,D1 out,D0 out $60000f | 1 | rw | | Rx/Tx buf [LCD] $600010 | 2 | wo | | LCD address $600012 | 1 | wo | | LCD width $600013 | 1 | wo | | LCD height $60001C | 1 | wo | | LCD Row Sync $600000 | 1 | rw | <..5.....> | Contrast | Bit #0 $60001D | 1 | wo | <....3210> | Contrast | Bit #4,Bit #3,Bit #2,Bit #1 [Timer] $600017 | 1 | rw | | Prog. Timer [Keyboard] $600018 | 2 | rw | <......1076543210> | Row mask $60001a | 1 | rw | <......1.> | ON key | ON key state $60001b | 1 | rw | | Col state tiemu-3.03-nogdb+dfsg/misc/iodefs_ti92p_hw1.txt000066400000000000000000000035001220314353500213370ustar00rootroot00000000000000; I/O register definitions for TI92 (c) 2005 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; You should not write more than 16 chars for bit names ; ; Same file than iodefs_ti89_hw1.txt but this one is the copy. ; [System] $600001 | 1 | rw | <.....2.0> | Stack overflow | AI7 enable,Interleave RAM $600003 | 1 | wo | <.654.210> | Wait-states | non-RAM,non-RAM,non-RAM,RAM,RAM,RAM $600005 | 1 | wo | <...43210> | Idle/Wake-up | Wake on AI5,Wake on AI4,Wake on AI3,Wake on AI2,Wake on AI1 [Link] $60000c | 1 | rw | <765.3210> | Control | Autostart Enable,Link Disable,Link TimeOut,Link Error IE,AutoStart IE,TX buf empty IE,RX buf full IE $60000d | 1 | rw | <765432..> | Status | Link Error,TX buf empty, RX buf full,Link interrupt,AutoStart,External activity $60000e | 1 | rw | <....3210> | Direct | D1 in,D0 in,D1 out,D0 out $60000f | 1 | rw | | Rx/Tx buf [LCD] $600010 | 2 | wo | | LCD address $600012 | 1 | wo | <..543210> | LCD log. width $600013 | 1 | wo | | LCD log. height $60001C | 1 | wo | <..5432..> | LCD Row Sync $60001D | 1 | wo | <7..43210> | Contrast | Voltage mult.,Screen disable,Bit #3,Bit #2,Bit #1,Bit #0 [Timer] $600015 | 1 | rw | <7.543210> | Timer & OSC2/3 | AI1/3/5 disable,Increment rate,Increment rate,Timer enable,Triggers AI3,OSC2 enable,LCD DMA enable $600017 | 1 | rw | | Prog. Timer [Keyboard] $600019 | 1 | rw | <.6543210> | Row mask $60001a | 1 | rw | <......1.> | ON key | ON key state $60001b | 1 | rw | | Col state [Battery] $600000 | 1 | rw | <.....2..> | Status | Battery status $600018 | 1 | rw | <......10> | Voltage | Trigger level,Trigger level tiemu-3.03-nogdb+dfsg/misc/iodefs_ti92p_hw2.txt000066400000000000000000000054501220314353500213460ustar00rootroot00000000000000; I/O register definitions for TI89 HW2 (c) 2005 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; You should not write more than 16 chars for bit names ; ; Same file than iodefs_ti89_hw2.txt but this one is the copy. ; [System] $600001 | 1 | rw | <.....2..> | Stack overflow | AI7 enable $600003 | 1 | wo | <.654.210> | Wait-states | non-RAM,non-RAM,non-RAM,RAM,RAM,RAM $600005 | 1 | wo | <...43210> | Idle/Wake-up | Wake on AI5,Wake on AI4,Wake on AI3,Wake on AI2,Wake on AI1 [Link] $60000c | 1 | rw | <765.3210> | Control | Autostart Enable,Link Disable,Link TimeOut,Link Error IE,AutoStart IE,TX buf empty IE,RX buf full IE $60000d | 1 | rw | <765432..> | Status | Link Error,TX buf empty, RX buf full,Link interrupt,AutoStart,External activity $60000e | 1 | rw | <....3210> | Direct | D1 in,D0 in,D1 out,D0 out $60000f | 1 | rw | | Rx/Tx buf [LCD] $600012 | 1 | wo | <..543210> | LCD log. width $600013 | 1 | wo | | LCD log. height $60001C | 1 | wo | <..5432..> | LCD Row Sync $60001D | 1 | wo | <...4....> | Contrast | Bit #4 $700017 | 1 | rw | <......10> | Address range | $4C00-6BFF,$6C00-8BFF $700018 | 1 | rw | <7...3.10> | Control/Status | FS toggle,Bat chk #B,Scren enable,Bat chk #A [Timer] $600015 | 1 | rw | <7.543210> | Timer & OSC2/3 | AI1/3/5 disable,Increment rate,Increment rate,Timer enable,Triggers AI3,OSC2 enable,LCD DMA enable $600017 | 1 | rw | | Prog. Timer [RTC] $700014 | 2 | rw | | Counter $70001F | 1 | rw | <.....210> | Control |RTC enable,AI1/2/3/5 disable [Keyboard] $600019 | 1 | rw | <.6543210> | Row mask $60001a | 1 | rw | <......1.> | ON key | ON key state $60001b | 1 | rw | | Col state [Battery] $600000 | 1 | rw | <.....2..> | Status | Battery status $600018 | 1 | rw | <......10> | Voltage | Trigger level,Trigger level [Protections] $700000 | 2 | rw | | RAM page | $000000,$001000,$002000,$003000,$004000,$005000,$006000,$007000,$008000,$009000,$00A000,$00B000,$00C000,$00D000,$00E000,$00F000 $700002 | 2 | rw | | RAM page | $010000,$011000,$012000,$013000,$014000,$015000,$016000,$017000,$018000,$019000,$01A000,$01B000,$01C000,$01D000,$01E000,$01F000 $700004 | 2 | rw | | RAM page | $020000,$021000,$022000,$023000,$024000,$025000,$026000,$027000,$028000,$029000,$02A000,$02B000,$02C000,$02D000,$02E000,$02F000 $700006 | 2 | rw | | RAM page | $030000,$031000,$032000,$033000,$034000,$035000,$036000,$037000,$038000,$039000,$03A000,$03B000,$03C000,$03D000,$03E000,$03F000 $700012 | 1 | rw | <..543210> | FLASH execution | First exec,protected sector,n*$10000,+$210000, , tiemu-3.03-nogdb+dfsg/misc/iodefs_v200_hw2.txt000066400000000000000000000020371220314353500210640ustar00rootroot00000000000000; I/O register definitions for TI92 (c) 2005 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; You should not write more than 16 chars for bit names ; ; Same file than iodefs_ti89_hw2.txt but this one is the copy. ; [System] $600001 | 1 | rw | <.....2.0> | Stack over $600005 | 1 | wo | <...43210> | Idle/Wake-up [Link] $60000c | 1 | rw | | Control $60000d | 1 | rw | <76543...> | Status $60000e | 1 | rw | | Direct $60000f | 1 | rw | | Rx/Tx buf [LCD] $600012 | 1 | wo | | LCD width $600013 | 1 | wo | | LCD height $60001C | 1 | wo | | LCD Row Sync $600000 | 1 | rw | <..5.....> | Contrast $60001D | 1 | wo | <....3210> | Contrast [Timer] $600017 | 1 | rw | | Timer [Keyboard] $600018 | 2 | rw | <......1076543210> | Row mask $60001a | 1 | rw | <......1.> | ON key $60001b | 1 | rw | | Col state tiemu-3.03-nogdb+dfsg/misc/memmap_ti89_hw1.txt000066400000000000000000000005241220314353500211730ustar00rootroot00000000000000; Memory map definitions for TI89 HW1 (c) 2007 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; 000000-03ffff:RAM (256 KB) 100000-13ffff:RAM (ghost) 200000-5fffff:FLASH (2 MB) 600000-60001f:I/O ports (32 bytes) tiemu-3.03-nogdb+dfsg/misc/memmap_ti89_hw2.txt000066400000000000000000000005641220314353500212000ustar00rootroot00000000000000; Memory map definitions for TI89 HW2 (c) 2007 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; 000000-03ffff:RAM (256 KB) 100000-13ffff:RAM (ghost) 200000-5fffff:FLASH (2 MB) 600000-60001f:I/O ports (32 bytes) 700000-70001f:I/O ports (32 bytes) tiemu-3.03-nogdb+dfsg/misc/memmap_ti89t_hw3.txt000066400000000000000000000010031220314353500213520ustar00rootroot00000000000000; Memory map definitions for Titanium HW3 (c) 2007 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; Same file than iodefs_ti89t_hw4.txt but this one is the original. ; 000000-03ffff:RAM (256 KB) 200000-2fffff:RAM (mirror) 400000-4fffff:RAM (mirror) 600000-60001f:I/O ports (32 bytes) 700000-7000ff:I/O ports (256 bytes) 700100-7001ff:I/O ports (256 bytes) 800000-bfffff:FLASH (4 MB) tiemu-3.03-nogdb+dfsg/misc/memmap_ti89t_hw4.txt000066400000000000000000000007771220314353500213740ustar00rootroot00000000000000; Memory map definitions for Titanium HW4 (c) 2007 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; ; Same file than iodefs_ti89t_hw3.txt but this one is the copy. ; 000000-03ffff:RAM (256 KB) 200000-2fffff:RAM (mirror) 400000-4fffff:RAM (mirror) 600000-60001f:I/O ports (32 bytes) 700000-7000ff:I/O ports (256 bytes) 700100-7001ff:I/O ports (256 bytes) 800000-bfffff:FLASH (4 MB) tiemu-3.03-nogdb+dfsg/misc/memmap_ti92_hw1.txt000066400000000000000000000005541220314353500211700ustar00rootroot00000000000000; Memory map definitions for TI92 (c) 2007 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; 000000-01ffff:RAM (128 KB) 200000-3fffff:internal ROM (TI92 1.x) or unused 400000-5fffff:external ROM (TI92 2.x) or unused 600000-60001f:I/O ports tiemu-3.03-nogdb+dfsg/misc/memmap_ti92p_hw1.txt000066400000000000000000000004531220314353500213460ustar00rootroot00000000000000; Memory map definitions for TI92+ HW1 (c) 2007 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; 000000-03ffff:RAM (256 KB) 400000-5fffff:FLASH (2 MB) 600000-60001f:I/O ports tiemu-3.03-nogdb+dfsg/misc/memmap_ti92p_hw2.txt000066400000000000000000000005421220314353500213460ustar00rootroot00000000000000; Memory map definitions for TI92+ HW2 (c) 2007 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; 000000-03ffff:RAM (256 KB) 200000-3fffff:FLASH (mirror) 400000-5fffff:FLASH (2 MB) 600000-60001f:I/O ports 700000-70001f:I/O ports tiemu-3.03-nogdb+dfsg/misc/memmap_v200_hw2.txt000066400000000000000000000005761220314353500210750ustar00rootroot00000000000000; Memory map definitions for V200 HW2 (c) 2007 Romain Liévin ; ; Beware: _don't_ touch this file unless you know what you are doing ! ; Any modification can result in unpredictable results (or crash even !). ; 000000-03ffff : RAM (256 KB) 100000-13ffff : RAM (ghost) 200000-5fffff : FLASH (4 MB) 600000-60001f : I/O ports (32 bytes) 700000-70001f : I/O ports (32 bytes) tiemu-3.03-nogdb+dfsg/misc/romcalls.lst000066400000000000000000001071001220314353500200600ustar00rootroot00000000000000.set acos, 0xF5 .set acosh, 0x288 .set asin, 0xF6 .set asinh, 0x287 .set atan, 0xF7 .set atan2, 0xF8 .set atanh, 0x289 .set cacos, 0x13A .set cacosh, 0x13D .set casin, 0x13B .set casinh, 0x13E .set catan, 0x13C .set catanh, 0x13F .set ccos, 0x140 .set ccosh, 0x143 .set ceil, 0x105 .set cexp, 0x149 .set cln, 0x147 .set clog10, 0x148 .set cos, 0xF9 .set cosh, 0xFC .set csin, 0x141 .set csinh, 0x144 .set csqrt, 0x146 .set ctan, 0x142 .set ctanh, 0x145 .set exp, 0xFF .set fabs, 0x106 .set fadd, 0xB6 .set fcmp, 0xBB .set fdiv, 0xB9 .set flt, 0xBD .set float_class, 0x2FA .set floor, 0x107 .set fmod, 0x108 .set fmul, 0xB8 .set fneg, 0xBA .set fpisanint, 0x172 .set fpisodd, 0x173 .set frexp10, 0x2FB .set fsub, 0xB7 .set is_float_infinity, 0x2FF .set is_float_negative_zero, 0x300 .set is_float_positive_zero, 0x301 .set is_float_signed_infinity, 0x302 .set is_float_transfinite, 0x303 .set is_float_unsigned_inf_or_nan, 0x304 .set is_float_unsigned_zero, 0x305 .set is_inf, 0x2FF .set is_nan, 0x306 .set is_nzero, 0x300 .set is_pzero, 0x301 .set is_sinf, 0x302 .set is_transfinite, 0x303 .set is_uinf_or_nan, 0x304 .set is_uzero, 0x305 .set itrig, 0x28A .set log, 0x100 .set log10, 0x101 .set modf, 0x102 .set pow, 0x103 .set round12, 0x174 .set round12_err, 0x227 .set round14, 0x175 .set sin, 0xFA .set sincos, 0x286 .set sinh, 0xFD .set sqrt, 0x104 .set tan, 0xFB .set tanh, 0xFE .set trig, 0x28B .set trunc, 0xBC .set all_tail, 0x3B5 .set any_tail, 0x3B6 .set are_expressions_identical, 0x2BF .set can_be_approxed, 0x2F5 .set check_estack_size, 0x2C2 .set compare_complex_magnitudes, 0x2F6 .set compare_expressions, 0x2C0 .set compare_Floats, 0x2F7 .set deleted_between, 0x2C4 .set deleted_expression, 0x2C6 .set delete_between, 0x2C3 .set delete_expression, 0x2C5 .set did_push_cnvrt_Float_to_integer, 0x2F8 .set display_statements, 0x4E .set estack_number_to_Float, 0x2F9 .set estack_to_short, 0x2C7 .set estack_to_ushort, 0x2C8 .set factor_base_index, 0x2C9 .set factor_exponent_index, 0x2CA .set gcd_exact_whole_Floats, 0x2FC .set GetValue, 0x2CB .set get_key_ptr, 0x2B7 .set HToESI, 0x247 .set im_index, 0x2CC .set index_below_display_expression_aux, 0x2B6 .set index_main_var, 0x2CF .set index_numeric_term, 0x2CD .set index_of_lead_base_of_lead_term, 0x2CE .set is_advanced_tag, 0x2D0 .set is_antisymmetric, 0x2D1 .set is_complex_number, 0x2D2 .set is_complex0, 0x2D3 .set is_Float_exact_whole_number, 0x2FE .set is_free_of_tag, 0x2D4 .set is_independent_of, 0x2D5 .set is_independent_of_de_seq_vars, 0x2D6 .set is_independent_of_elements, 0x2D8 .set is_independent_of_tail, 0x2D7 .set is_matrix, 0x3B7 .set is_monomial, 0x2D9 .set is_monomial_in_kernel, 0x2DA .set is_narrowly_independent_of, 0x2DB .set is_square_matrix, 0x3B8 .set is_symmetric, 0x2DC .set bottom_estack, 0x432 .set is_valid_smap_aggregate, 0x3B9 .set last_element_index, 0x3BA .set lead_base_index, 0x2DE .set lead_exponent_index, 0x2DF .set lead_factor_index, 0x2E0 .set lead_term_index, 0x2E1 .set likely_approx_to_complex_number, 0x307 .set likely_approx_to_number, 0x308 .set main_gen_var_index, 0x2E2 .set map_tail, 0x3BB .set map_tail_Int, 0x3BC .set map_unary_over_comparison, 0x2E3 .set min_quantum, 0x2E4 .set moved_between_to_top, 0x2E6 .set move_between_to_top, 0x2E5 .set next_expression_index, 0x10A .set NG_approxESI, 0x25C .set NG_execute, 0x25D .set NG_graphESI, 0x25E .set NG_rationalESI, 0x25F .set NG_RPNToText, 0x25B .set NG_tokenize, 0x260 .set norm1_complex_Float, 0x309 .set numeric_factor_index, 0x2E7 .set Parms2D, 0x4D .set Parse1DExpr, 0x4F .set Parse2DExpr, 0x4A .set Parse2DMultiExpr, 0x4B .set Print2DExpr, 0x4C .set push_ANSI_string, 0x48A .set push_between, 0x2E8 .set push_cnvrt_integer_if_whole_nmb, 0x30D .set push_END_TAG, 0x263 .set push_expr2_quantum, 0x2EA .set push_expr_quantum, 0x2E9 .set push_Float, 0x30A .set push_Float_to_nonneg_int, 0x30B .set push_Float_to_rat, 0x30C .set push_internal_simplify, 0x4F8 .set push_LIST_TAG, 0x264 .set ARb_real_count, 0x5C2 .set push_next_arb_int, 0x2EB .set push_next_arb_real, 0x2EC .set push_next_internal_var, 0x2ED .set push_offset_array, 0x3C4 .set push_overflow_to_infinity, 0x30E .set push_parse_text, 0x3CA .set push_zstr, 0x48A .set push_quantum, 0x2EE .set push_quantum_pair, 0x2EF .set push_reversed_tail, 0x3BF .set push_round_Float, 0x310 .set reductum_index, 0x2F0 .set remaining_element_count, 0x3C3 .set remaining_factors_index, 0x2F1 .set reset_control_flags, 0x2F4 .set reset_estack_size, 0x2F3 .set re_index, 0x2F2 .set should_and_did_push_approx_arg2, 0x311 .set signum_Float, 0x312 .set top_estack, 0x109 .set is_tail_independent_of, 0x2DD .set push_transpose_aux, 0x3C1 .set TokenizeSymName, 0x80 .set push_expression, 0x44D .set ARb_int_count, 0x5C3 .set ABT_dialog, 0x10D .set CAT_dialog, 0x125 .set EV_captureEvents, 0xC6 .set EV_centralDispatcher, 0x156 .set EV_clearPasteString, 0xC7 .set EV_defaultHandler, 0x157 .set EV_eventLoop, 0x158 .set EV_getc, 0xC8 .set EV_getSplitRect, 0xC9 .set EV_hook, 0x2A3 .set EV_notifySwitchGraph, 0xCA .set EV_paintOneWindow, 0xCB .set EV_paintWindows, 0xCC .set EV_registerMenu, 0x159 .set EV_restorePainting, 0xCD .set EV_sendEvent, 0xCE .set EV_sendEventSide, 0xCF .set EV_sendString, 0xD0 .set EV_setCmdCheck, 0xD1 .set EV_setCmdState, 0xD2 .set EV_setFKeyState, 0xD3 .set EV_startApp, 0xD4 .set EV_startSide, 0xD5 .set EV_startTask, 0xD6 .set EV_suspendPainting, 0xD7 .set EV_switch, 0xD8 .set MO_currentOptions, 0xD9 .set MO_defaults, 0xDA .set MO_digestOptions, 0xDB .set MO_isMultigraphTask, 0xDC .set MO_modeDialog, 0xDD .set MO_notifyModeChange, 0xDE .set MO_sendQuit, 0xDF .set handleVarLinkKey, 0x129 .set handleRclKey, 0x14F .set AB_prodid, 0x29D .set AB_prodname, 0x29E .set AB_serno, 0x29F .set CB_fetchTEXT, 0xC2 .set CB_replaceTEXT, 0xC1 .set CU_restore, 0xC3 .set CU_start, 0xC4 .set CU_stop, 0xC5 .set EX_patch, 0x15A .set HelpKeys, 0x181 .set idle, 0x29B .set NeedStack, 0xA4 .set off, 0x29A .set OSCheckBreak, 0xEC .set OSClearBreak, 0xED .set OSContrastDn, 0x297 .set OSContrastUp, 0x296 .set OSdequeue, 0x3AA .set OSDisableBreak, 0xEF .set OSEnableBreak, 0xEE .set OSenqueue, 0x3A9 .set OSFreeTimer, 0xF1 .set OSqclear, 0x3AD .set OSqhead, 0x3AC .set OSqinquire, 0x3AB .set OSRegisterTimer, 0xF0 .set OSReset, 0x294 .set OSSetSR, 0x29C .set OSTimerCurVal, 0xF2 .set OSTimerExpired, 0xF3 .set OSTimerRestart, 0xF4 .set QModeKey, 0x182 .set QSysKey, 0x183 .set SumStoChkMem, 0x295 .set WordInList, 0x184 .set XR_stringPtr, 0x293 .set CU_cursorState, 0x503 .set FiftyMsecTick, 0x4FC .set ReleaseVersion, 0x440 .set ReleaseDate, 0x43F .set AB_getGateArrayVersion, 0x15E .set EX_getBasecodeParmBlock, 0x5DA .set ST_angle, 0xE0 .set ST_batt, 0xE1 .set ST_busy, 0xE2 .set ST_eraseHelp, 0xE3 .set ST_folder, 0xE4 .set ST_graph, 0xE5 .set ST_helpMsg, 0xE6 .set ST_modKey, 0xE7 .set ST_precision, 0xE8 .set ST_readOnly, 0xE9 .set ST_refDsp, 0xEB .set ST_showHelp, 0xE6 .set ST_stack, 0xEA .set ST_progressIncrement, 0x4DA .set ST_progressBar, 0x4D8 .set ST_progressDismiss, 0x4DB .set ST_progressUpdate, 0x4D9 .set AddSymToFolder, 0x70 .set DerefSym, 0x79 .set EM_moveSymFromExtMem, 0x161 .set EM_moveSymToExtMem, 0x162 .set EM_twinSymFromExtMem, 0x166 .set FindSymInFolder, 0x71 .set FolderAdd, 0x64 .set FolderAddTemp, 0x73 .set FolderClear, 0x66 .set FolderCount, 0x6B .set FolderCur, 0x65 .set FolderCurTemp, 0x72 .set FolderDel, 0x66 .set FolderDelAllTemp, 0x75 .set FolderDelTemp, 0x74 .set FolderFind, 0x67 .set FolderGetCur, 0x68 .set FolderOp, 0x69 .set FolderRename, 0x6A .set HSymDel, 0x5F .set HSYMtoName, 0x7A .set IsMainFolderStr, 0x77 .set MakeHSym, 0x282 .set SymAdd, 0x5C .set SymAddMain, 0x5D .set SymAddTwin, 0x27F .set SymCmp, 0x81 .set SymCpy, 0x82 .set SymCpy0, 0x83 .set SymDel, 0x5E .set SymDelTwin, 0x280 .set SymFind, 0x60 .set SymFindFirst, 0x6C .set SymFindFolderName, 0x6F .set SymFindHome, 0x62 .set SymFindMain, 0x61 .set SymFindNext, 0x6D .set SymFindPrev, 0x6E .set SymFindPtr, 0x283 .set SymMove, 0x63 .set TempFolderName, 0x76 .set TokToStrN, 0x7C .set StrToTokN, 0x7B .set ClearUserDef, 0x7E .set CheckLinkLockFlag, 0x7F .set VarRecall, 0x85 .set VarStore, 0x86 .set QSysProtected, 0x88 .set SetOK, 0x456 .set checkCurrent, 0x121 .set CheckReservedName, 0x8B .set CheckSysFunc, 0x89 .set EX_stoBCD, 0xC0 .set ValidateSymName, 0x84 .set SymSysVar, 0x8C .set ResetSymFlags, 0x8E .set partial_len, 0x11C .set GetDataType, 0x435 .set SmapTypeStrings, 0x436 .set GetFuncPrgmBodyPtr, 0x43A .set free, 0xA3 .set FreeHandles, 0x23B .set HeapAlloc, 0x90 .set HeapAllocESTACK, 0x91 .set HeapAllocHigh, 0x92 .set HeapAllocHighThrow, 0x94 .set HeapAllocPtr, 0xA2 .set HeapAllocThrow, 0x93 .set HeapAvail, 0x8F .set HeapCompress, 0x95 .set HeapDeref, 0x96 .set HeapEnd, 0xA1 .set HeapFreeIndir, 0x98 .set HeapFreePtr, 0xA3 .set HeapFree, 0x97 .set HeapGetHandle, 0x239 .set HeapGetLock, 0x9B .set HeapLock, 0x9A .set HeapMax, 0x9C .set HeapMoveHigh, 0xA0 .set HeapPtrToHandle, 0x23A .set HeapRealloc, 0x9D .set HeapSize, 0x9E .set HeapUnlock, 0x9F .set HLock, 0x99 .set malloc, 0xA2 .set HeapWalk, 0x12C .set HeapShuffle, 0x474 .set EX_getArg, 0xBE .set EX_getBCD, 0xBF .set RemainingArgCnt, 0x3C3 .set GKeyDown, 0x17F .set GKeyFlush, 0x180 .set GKeyIn, 0x17E .set kbhit, 0x52 .set ngetchx, 0x51 .set OSGetStatKeys, 0x299 .set OSInitBetweenKeyDelay, 0x249 .set pushkey, 0x50 .set OSInitKeyInitDelay, 0x248 .set alphaLockOn, 0x481 .set alphaLockOff, 0x482 .set SetAlphaStatus, 0x163 .set GetAlphaStatus, 0x164 .set KeyYesOrNo, 0x3EB .set OSFastArrows, 0x15C .set restoreAlphaLock, 0x483 .set BitmapGet, 0x185 .set BitmapInit, 0x186 .set BitmapPut, 0x187 .set BitmapSize, 0x188 .set ClrScr, 0x19E .set DrawChar, 0x1A4 .set DrawClipChar, 0x191 .set DrawClipEllipse, 0x192 .set DrawClipLine, 0x193 .set DrawClipPix, 0x194 .set DrawClipRect, 0x195 .set DrawFkey, 0x1A5 .set DrawIcon, 0x1A6 .set DrawLine, 0x1A7 .set DrawMultiLines, 0x196 .set DrawPix, 0x1A8 .set CalcBitmapSize, 0x3EF .set DrawStr, 0x1A9 .set DrawStrWidth, 0x197 .set DrawTo, 0x19C .set FillLines2, 0x199 .set FillTriangle, 0x198 .set FontCharWidth, 0x190 .set FontGetSys, 0x18E .set FontSetSys, 0x18F .set GetPix, 0x19F .set LineTo, 0x19C .set MoveTo, 0x19D .set PortRestore, 0x1A3 .set PortSet, 0x1A2 .set QScrRectOverlap, 0x18D .set RestoreScrState, 0x1A1 .set SaveScrState, 0x1A0 .set ScrRect, 0x2F .set ScrRectFill, 0x189 .set ScrRectOverlap, 0x18A .set ScrRectScroll, 0x18B .set ScrRectShift, 0x18C .set ScrToHome, 0x2E .set ScrToWin, 0x2D .set SetCurAttr, 0x19A .set SetCurClip, 0x19B .set ClientToScr, 0x42C .set DrawStrWidthP, 0x3EE .set MakeScrRect, 0x42D .set DrawWinBorder, 0x27 .set FirstWindow, 0x0 .set MakeWinRect, 0x2C .set RectWinToScr, 0x2A .set RectWinToWin, 0x29 .set WinActivate, 0x1 .set WinAttr, 0x2 .set WinBackground, 0x4 .set WinBackupToScr, 0x3 .set WinBegin, 0x5 .set WinBitmapGet, 0x6 .set WinBitmapPut, 0x7 .set WinBitmapSize, 0x8 .set WinChar, 0xA .set WinCharXY, 0x9 .set WinClose, 0xB .set WinClr, 0xC .set WinDeactivate, 0xD .set WinDupStat, 0xE .set WinEllipse, 0xF .set WinFill, 0x10 .set WinFillLines2, 0x11 .set WinFillTriangle, 0x12 .set WinFont, 0x13 .set WinGetCursor, 0x14 .set WinHeight, 0x292 .set WinHide, 0x15 .set WinHome, 0x16 .set WinLine, 0x17 .set WinLineNC, 0x18 .set WinLineRel, 0x1A .set WinLineTo, 0x19 .set WinMoveCursor, 0x1B .set WinMoveRel, 0x1D .set WinMoveTo, 0x1C .set WinOpen, 0x1E .set WinPixGet, 0x1F .set WinPixSet, 0x20 .set WinRect, 0x21 .set WinReOpen, 0x22 .set WinScrollH, 0x23 .set WinScrollV, 0x24 .set WinStr, 0x25 .set WinStrXY, 0x26 .set WinWidth, 0x291 .set DrawStaticButton, 0x35 .set SetWinClip, 0x42E .set BN_powerMod, 0x123 .set BN_power17Mod, 0x122 .set BN_prodMod, 0x124 .set cdecrypt, 0x127 .set MD5Done, 0x257 .set MD5Final, 0x256 .set MD5Init, 0x254 .set MD5Update, 0x255 .set Dialog, 0x30 .set DialogAdd, 0x33 .set DialogDo, 0x32 .set DialogNew, 0x34 .set DlgMessage, 0x1B4 .set VarNew, 0x28E .set VarOpen, 0x28C .set VarSaveAs, 0x28D .set ERD_dialog, 0x151 .set ERD_process, 0x152 .set ER_catch, 0x154 .set ER_success, 0x155 .set ER_throwVar, 0x153 .set find_error_message, 0x2C1 .set EM_abandon, 0x15B .set EM_findEmptySlot, 0x15F .set EM_GC, 0x160 .set EM_survey, 0x165 .set EM_write, 0x167 .set FL_addCert, 0x169 .set FL_download, 0x16A .set FL_getCert, 0x16C .set FL_getHardwareParmBlock, 0x16B .set FL_getVerNum, 0x16D .set FL_write, 0x171 .set BatTooLowFlash, 0x434 .set FlashMemoryEnd, 0x43D .set EM_blockVerifyErase, 0x15D .set flush_link, 0x24D .set getcalc, 0x54 .set LIO_Get, 0x57 .set LIO_GetMultiple, 0x59 .set LIO_Receive, 0x58 .set LIO_RecvData, 0x5B .set LIO_Send, 0x56 .set LIO_SendData, 0x5A .set LIO_SendProduct, 0x253 .set OSCheckSilentLink, 0x24A .set OSLinkClose, 0x24E .set OSLinkCmd, 0x24B .set OSLinkOpen, 0x24D .set OSLinkReset, 0x24C .set OSLinkTxQueueActive, 0x252 .set OSLinkTxQueueInquire, 0x251 .set OSReadLinkBlock, 0x24F .set OSWriteLinkBlock, 0x250 .set receive, 0x24F .set reset_link, 0x24C .set sendcalc, 0x55 .set transmit, 0x250 .set tx_free, 0x252 .set MenuAddIcon, 0x42 .set MenuAddText, 0x41 .set MenuBegin, 0x36 .set MenuCheck, 0x37 .set MenuEnd, 0x38 .set MenuGetTopRedef, 0x40 .set MenuKey, 0x39 .set MenuNew, 0x43 .set MenuOn, 0x3A .set MenuPopup, 0x3B .set MenuSubStat, 0x3C .set MenuTopRedef, 0x3F .set MenuTopSelect, 0x3E .set MenuTopStat, 0x3D .set MenuUpdate, 0x49 .set PopupAddText, 0x44 .set PopupClear, 0x46 .set PopupDo, 0x47 .set PopupNew, 0x45 .set PopupText, 0x48 .set VarCreateFolderPopup, 0x28F .set MenuLoad, 0x3F2 .set MenuFlags, 0x3F4 .set QMenuTopSelect, 0x41A .set DynMenuAdd, 0x3F1 .set FKeyI_H, 0x592 .set DynMenuChange, 0x3F0 .set MenuItemDef, 0x3F3 .set MenuOff, 0x419 .set PopupBegin, 0x3F5 .set PopupBeginDo, 0x3F6 .set ceof, 0x128 .set cfindfield, 0x12A .set cgetc, 0x12B .set cgetcertrevno, 0x2A0 .set cgetflen, 0x12D .set cgetfnl, 0x12E .set cgetnl, 0x12F .set cgetns, 0x130 .set cgetsn, 0x2A1 .set copen, 0x132 .set copensub, 0x133 .set cputhdr, 0x134 .set cputnl, 0x135 .set cputns, 0x136 .set cread, 0x137 .set ctell, 0x138 .set cwrite, 0x139 .set CertificateMemory, 0x43E .set sprintf, 0x53 .set cmd_clrdraw, 0x32D .set cmd_clrgraph, 0x32F .set cmd_clrhome, 0x330 .set cmd_clrio, 0x331 .set cmd_clrtable, 0x332 .set cmd_custmoff, 0x335 .set cmd_custmon, 0x336 .set cmd_disp, 0x33D .set cmd_dispg, 0x33E .set cmd_disphome, 0x33F .set cmd_disptbl, 0x340 .set cmd_fnoff, 0x34D .set cmd_fnon, 0x34E .set cmd_get, 0x350 .set cmd_getcalc, 0x351 .set cmd_graph, 0x353 .set cmd_input, 0x356 .set cmd_inputstr, 0x357 .set cmd_newprob, 0x367 .set cmd_output, 0x369 .set cmd_pause, 0x36B .set cmd_printobj, 0x370 .set cmd_prompt, 0x371 .set cmd_rclgdb, 0x381 .set cmd_send, 0x387 .set cmd_sendcalc, 0x388 .set cmd_sendchat, 0x389 .set cmd_stogdb, 0x390 .set cmd_style, 0x392 .set cmd_table, 0x393 .set cmd_shade, 0x38A .set cmd_newpic, 0x365 .set cmd_newplot, 0x366 .set cmd_pxlon, 0x37B .set cmd_circle, 0x32C .set cmd_cyclepic, 0x339 .set cmd_randseed, 0x380 .set cmd_line, 0x358 .set cmd_andpic, 0x32A .set cmd_blddata, 0x32B .set cmd_clrerr, 0x32E .set cmd_drawparm, 0x343 .set cmd_exit, 0x34A .set cmd_copyvar, 0x333 .set cmd_cubicreg, 0x334 .set cmd_custom, 0x337 .set cmd_cycle, 0x338 .set cmd_drawpol, 0x344 .set cmd_delfold, 0x33A .set cmd_delvar, 0x33B .set cmd_dialog, 0x33C .set cmd_drawinv, 0x342 .set cmd_drawfunc, 0x341 .set cmd_linehorz, 0x359 .set cmd_linetan, 0x35A .set cmd_else, 0x345 .set cmd_endfor, 0x346 .set cmd_for, 0x34F .set cmd_if, 0x354 .set cmd_ifthen, 0x355 .set cmd_linreg, 0x35C .set cmd_expreg, 0x34B .set cmd_lnreg, 0x35D .set cmd_logistic, 0x360 .set cmd_sinreg, 0x38C .set cmd_twovar, 0x398 .set cmd_onevar, 0x368 .set cmd_showstat, 0x38B .set cmd_rplcpic, 0x386 .set cmd_xorpic, 0x39B .set cmd_rclpic, 0x382 .set cmd_pxlcircle, 0x377 .set cmd_stopic, 0x391 .set cmd_fill, 0x34C .set cmd_goto, 0x352 .set cmd_popup, 0x36E .set cmd_endloop, 0x347 .set cmd_endwhile, 0x349 .set cmd_while, 0x39A .set cmd_try, 0x397 .set cmd_endtry, 0x348 .set cmd_passerr, 0x36A .set cmd_linevert, 0x35B .set cmd_plotsoff, 0x36C .set cmd_plotson, 0x36D .set cmd_slpline, 0x38D .set cmd_sortd, 0x38F .set cmd_sorta, 0x38E .set cmd_unlock, 0x399 .set cmd_lock, 0x35F .set cmd_unarchiv, 0x449 .set cmd_archive, 0x448 .set cmd_pxlline, 0x379 .set cmd_pxlhorz, 0x378 .set cmd_pxlvert, 0x37D .set cmd_ptchg, 0x372 .set cmd_ptoff, 0x373 .set cmd_pxltext, 0x37C .set cmd_pton, 0x374 .set cmd_pxlchg, 0x376 .set cmd_pxloff, 0x37A .set cmd_text, 0x394 .set cmd_pttext, 0x375 .set cmd_local, 0x35E .set cmd_movevar, 0x362 .set cmd_rename, 0x383 .set cmd_return, 0x385 .set cmd_trace, 0x396 .set cmd_toolbar, 0x395 .set cmd_request, 0x384 .set cmd_newdata, 0x363 .set cmd_newfold, 0x364 .set cmd_zoomin, 0x3A0 .set cmd_zoomdata, 0x39D .set cmd_zoomdec, 0x39E .set cmd_zoomfit, 0x39F .set cmd_zoomint, 0x3A1 .set cmd_zoomprev, 0x3A3 .set cmd_zoombox, 0x39C .set cmd_zoomout, 0x3A2 .set cmd_zoomrcl, 0x3A4 .set cmd_zoomsqr, 0x3A5 .set cmd_zoomsto, 0x3A7 .set cmd_zoomtrig, 0x3A8 .set cmd_zoomstd, 0x3A6 .set cmd_medmed, 0x361 .set cmd_quartreg, 0x37F .set cmd_quadreg, 0x37E .set cmd_powerreg, 0x36F .set TE_checkSlack, 0xA6 .set TE_close, 0xA5 .set TE_empty, 0xA7 .set TE_focus, 0xA8 .set TE_handleEvent, 0xA9 .set TE_indicateReadOnly, 0xAA .set TE_isBlank, 0xAB .set TE_openFixed, 0xAD .set TE_open, 0xAC .set TE_pasteText, 0xAE .set TE_reopenPlain, 0xB0 .set TE_reopen, 0xAF .set TE_select, 0xB1 .set TE_shrinkWrap, 0xB2 .set TE_unfocus, 0xB3 .set TE_updateCommand, 0xB4 .set longjmp, 0x267 .set setjmp, 0x266 .set strcat, 0x26E .set strchr, 0x274 .set strcmp, 0x271 .set strcpy, 0x26C .set strcspn, 0x275 .set strerror, 0x27D .set strlen, 0x27E .set strncat, 0x26F .set strncmp, 0x272 .set strncpy, 0x26D .set strpbrk, 0x276 .set strrchr, 0x277 .set strspn, 0x278 .set strstr, 0x279 .set strtok, 0x27A .set cmpstri, 0x16F .set stricmp, 0x407 .set memucmp, 0x3CC .set memcpy, 0x26A .set memchr, 0x273 .set memcmp, 0x270 .set _memset, 0x27B .set memmove, 0x26B .set memset, 0x27C .set add1_to_top, 0x51D .set push_gcd_then_cofactors, 0x59E .set and_onto_top, 0x579 .set are_units_consistent, 0x40F .set assign_between, 0x2AC .set push_mrow_aux, 0x31B .set CharNumber, 0x113 .set CheckGraphRef, 0x7D .set ST_flags, 0x443 .set ck_valid_float, 0x1E5 .set CkValidDelta, 0x1C3 .set cleanup_de_mem, 0x1EC .set cleanup_seq_mem, 0x1D7 .set clear_error_context, 0x44C .set FAccess, 0x3D4 .set compare_numbers, 0x50D .set convert_to_TI_92, 0x258 .set CountGrFunc, 0x1D5 .set cpt_gr_fun, 0x1D1 .set cpt_gr_param, 0x1D2 .set cpt_gr_polar, 0x1D3 .set CptDeltax, 0x1C1 .set CptDeltay, 0x1C2 .set CptFuncX, 0x1B9 .set CptIndep, 0x1C9 .set CptLastIndepDE, 0x1EF .set CreateEmptyList, 0x1E6 .set CTypeTable, 0x442 .set CustomBegin, 0x14A .set CustomEnd, 0x14C .set CustomFree, 0x150 .set CustomMenuItem, 0x14B .set DataTypeNames, 0x43B .set de_initRes, 0x1F0 .set de_loop, 0x1EB .set de_rng_no_graph, 0x2A2 .set delete_list_element, 0x2AF .set deStepCk, 0x1F9 .set did_push_divide_units, 0x3AE .set did_push_lincf, 0x572 .set did_push_var_val, 0x2AD .set divide_top, 0x527 .set does_push_fetch, 0x2AE .set dv_create_graph_titles, 0x117 .set dv_findColumn, 0x119 .set TIOS_EV_getAppID, 0x454 .set EQU_deStatus, 0x16E .set EQU_getNameInfo, 0x120 .set EQU_select, 0x11E .set EQU_setStyle, 0x11F .set ER_throwFrame, 0x507 .set ERD_dismissNotice, 0x476 .set ERD_notice, 0x475 .set estack_to_float, 0x469 .set EV_appA, 0x452 .set EV_appB, 0x453 .set EV_appSide, 0x458 .set EV_currentApp, 0x45C .set EV_errorCode, 0x46D .set TIOS_strtol, 0x4FF .set EV_quit, 0x48E .set EV_runningApp, 0x45D .set execute_graph_func, 0x1D0 .set FCreate, 0x3D6 .set FDelete, 0x3D7 .set FEof, 0x3D8 .set FFindNext, 0x3DA .set FGetC, 0x3DB .set FGetPos, 0x3DC .set FPutC, 0x3DF .set FindFunc, 0x1C5 .set FindGrFunc, 0x1C6 .set FirstNonblank, 0x4DE .set FirstSeqPlot, 0x1D6 .set fix_loop_displacements, 0x170 .set FLOATTAB, 0x464 .set ForceFloat, 0x47D .set FOpen, 0x3DE .set freeIdList, 0x4D6 .set FSetPos, 0x3E1 .set FSetVer, 0x3E4 .set FStatus, 0x3E5 .set FWrite, 0x3E7 .set FuncLineFlt, 0x1BF .set gdb_len, 0x1E0 .set gdb_recall, 0x1E2 .set gdb_store, 0x1E1 .set gen_version, 0x259 .set get_lb, 0x516 .set get_list_indices, 0x2B8 .set get_matrix_indices, 0x2B9 .set get_ub, 0x517 .set GetStatValue, 0x11B .set GetSysGraphRef, 0x8A .set GetTagStr, 0x46C .set GM_Derivative, 0x1B0 .set GM_DistArc, 0x1B1 .set GM_Inflection, 0x1AD .set GM_Integrate, 0x1AC .set GM_Intersect, 0x1AB .set GM_Math1, 0x1AF .set GM_Shade, 0x1B2 .set GM_TanLine, 0x1AE .set GM_Value, 0x1AA .set gr_active, 0x10B .set gr_add_fldpic, 0x1F6 .set gr_ck_solvergraph, 0x1FA .set gr_CptIndepInc, 0x1CA .set gr_de_axes_lbl, 0x1F2 .set gr_de_value, 0x1ED .set gr_del_locals, 0x1CB .set gr_del_vars_in_folder, 0x1F1 .set gr_delete_fldpic, 0x1F4 .set gr_DelFolder, 0x1CC .set gr_DispLabels, 0x1E3 .set gr_execute_de, 0x1F3 .set gr_execute_seq, 0x1D4 .set gr_find_de_result, 0x1E8 .set gr_find_el, 0x1F8 .set gr_find_func_index, 0x1EE .set gr_flags, 0x463 .set gr_initCondName, 0x1C8 .set gr_openFolder, 0x1CD .set gr_other, 0x10C .set GR_Pan, 0x1C4 .set gr_remove_fldpic, 0x1F5 .set gr_seq_value, 0x1DC .set gr_stopic, 0x1F7 .set gr_xres_pixel, 0x1B8 .set GR3_addContours, 0x1FB .set GR3_freeDB, 0x1FD .set GR3_handleEvent, 0x1FE .set GR3_paint3d, 0x1FF .set GR3_xyToWindow, 0x200 .set GraphActivate, 0x1FC .set GraphOrTableCmd, 0x1E4 .set GrAxes, 0x1B7 .set GrClipLine, 0x1C0 .set grFuncName, 0x1C7 .set GrLineFlt, 0x1BE .set GS_PlotAll, 0x202 .set GS_PlotTrace, 0x201 .set GT_BackupToScr, 0x20C .set GT_CalcDepVals, 0x20D .set GT_CenterGraphCursor, 0x20E .set GT_CursorKey, 0x20F .set GT_DE_Init_Conds, 0x22A .set GT_DspFreeTraceCoords, 0x210 .set GT_DspMsg, 0x212 .set GT_DspTraceCoords, 0x211 .set GT_Error, 0x213 .set GT_Format, 0x214 .set GT_FreeTrace, 0x215 .set GT_IncXY, 0x216 .set GT_KeyIn, 0x217 .set GT_Open, 0x21B .set GT_PrintCursor, 0x229 .set GT_QFloatCursorsInRange, 0x218 .set GT_Regraph, 0x219 .set GT_Regraph_if_neccy, 0x21A .set GT_SaveAs, 0x21C .set GT_SelFunc, 0x21D .set GT_Set_Graph_Format, 0x228 .set GT_SetCursorXY, 0x21F .set GT_SetGraphRange, 0x21E .set GT_ShowMarkers, 0x220 .set GT_Trace, 0x221 .set GT_ValidGraphRanges, 0x222 .set GT_WinBound, 0x223 .set GT_WinCursor, 0x224 .set GXcoord, 0x226 .set GYcoord, 0x225 .set GZ_Box, 0x22B .set GZ_Center, 0x22C .set GZ_Decimal, 0x22D .set GZ_Fit, 0x22E .set GZ_InOut, 0x22F .set GZ_Integer, 0x230 .set GZ_Previous, 0x231 .set GZ_Recall, 0x232 .set GZ_SetFactors, 0x233 .set GZ_Square, 0x234 .set GZ_Standard, 0x235 .set GZ_Stat, 0x236 .set GZ_Store, 0x237 .set GZ_Trig, 0x238 .set has_different_variable, 0x5A0 .set has_unit_base, 0x3AF .set hStrAppend, 0x45F .set index_after_match_endtag, 0x2B1 .set index_if_pushed_binomial_info, 0x5A1 .set index_if_pushed_qquad_info, 0x5A2 .set index_reductum_with_tag_base, 0x59F .set index_rmng_factor, 0x565 .set index_rmng_fctrs_start_base, 0x564 .set index_rmng_fctrs_start_base_tag, 0x563 .set index_rmng_fctrs_start_fctr_tag, 0x562 .set init_list_indices, 0x2BA .set init_matrix_indices, 0x2BB .set init_unit_system, 0x3B0 .set InitDEAxesRng, 0x1E9 .set InitDEMem, 0x1EA .set InitTimeSeq, 0x1D9 .set integer_non_unknown, 0x50C .set is_cFloat_agg, 0x465 .set is_complex_Float, 0x48B .set is_constant, 0x593 .set is_equivalent_to, 0x578 .set is_executable, 0x25A .set is_minus1, 0x508 .set is_neg_lead_numr_coef_re_part, 0x56D .set is_negative, 0x575 .set is_never0, 0x577 .set is_nonnegative, 0x574 .set is_nonpositive, 0x576 .set is_pathname, 0x3C6 .set is_polynomial_in_var_or_kern, 0x56B .set is_pos_int_and_eq_quantum, 0x509 .set is_positive, 0x573 .set is_reciprocal_of_quantum, 0x50A .set is_term_improper, 0x556 .set is_totally_polynomial, 0x56C .set is_units_term, 0x3B1 .set is_variable, 0x488 .set is_whole_number, 0x50B .set is0, 0x269 .set lead_conjunct_factor_index, 0x580 .set lead_disjunct_term_index, 0x57E .set linear_degree, 0x571 .set LIO_SendIdList, 0x3D0 .set LoadSymFromFindHandle, 0x281 .set LOC_formatDate, 0x590 .set LOC_getLocalDateFormat, 0x58F .set LOC_localVersionDate, 0x591 .set MO_option, 0x447 .set negate_top, 0x525 .set next_token, 0x3C7 .set next_var_or_kernel_index, 0x56E .set NG_control, 0x466 .set nonblank, 0x3C8 .set OO_appGetPublicStorage, 0x425 .set OO_appIsMarkedDelete, 0x426 .set OO_appMarkDelete, 0x427 .set OO_AppNameToACB, 0x406 .set OO_appSetPublicStorage, 0x429 .set OO_Deref, 0x3FB .set TIOS_ldiv, 0x5BD .set OO_CondGetAttr, 0x3FA .set OO_Destroy, 0x423 .set OO_DestroyAll, 0x4F5 .set OO_firstACB, 0x451 .set OO_GetAppAttr, 0x3FC .set OO_GetAttr, 0x3FD .set OO_HasAttr, 0x3FE .set OO_InstallAppHook, 0x490 .set OO_InstallAppHookByName, 0x492 .set OO_InstallSystemHook, 0x404 .set OO_New, 0x3FF .set OO_NextACB, 0x402 .set OO_PrevACB, 0x403 .set OO_SetAppAttr, 0x400 .set OO_SetAttr, 0x401 .set OO_SuperFrame, 0x48F .set OO_UninstallAppHook, 0x491 .set OO_UninstallAppHookByName, 0x493 .set OO_UninstallSystemHook, 0x405 .set or_onto_top, 0x57B .set OSModKeyStatus, 0x431 .set paint_all_except, 0x11D .set ParseSymName, 0x78 .set PlotDel, 0x203 .set PlotDup, 0x207 .set PlotGet, 0x205 .set PlotInit, 0x206 .set PlotLookup, 0x209 .set PlotPut, 0x204 .set PlotSize, 0x208 .set primary_tag_list, 0x467 .set pSymPG, 0x430 .set push_ans_entry, 0x2B0 .set push_auto_units_conversion, 0x3B2 .set push_but_conjunct_factor, 0x582 .set push_but_factor, 0x561 .set push_but_term, 0x56A .set push_constant_factors, 0x55D .set push_constant_terms, 0x566 .set push_dependent_factors, 0x55F .set push_dependent_terms, 0x568 .set push_div_dif_1c, 0x58D .set push_div_dif_1f, 0x58C .set push_float_qr_fact, 0x2BC .set push_format, 0x315 .set push_independent_factors, 0x560 .set push_independent_terms, 0x569 .set TIOS_abs, 0x5BA .set push_long_to_integer, 0x4E3 .set push_lu_fact, 0x2BD .set push_make_proper, 0x557 .set push_minus_recip_of_quantum, 0x510 .set push_negate_quantum_as_negint, 0x4F1 .set push_nonconstant_factors, 0x55E .set push_nonconstant_terms, 0x567 .set push_nonnumeric_factors, 0x55C .set push_parse_prgm_or_func_text, 0x3C9 .set push_pi, 0x512 .set push_pi_on_quantum, 0x513 .set push_poly_deg_in_var_or_kernel, 0x570 .set push_poly_qr, 0x59D .set push_quantum_as_nonnegative_int, 0x50E .set push_quantum_pair_as_pos_frac, 0x511 .set push_reciprocal, 0x597 .set push_reciprocal_of_quantum, 0x50F .set push_simplify, 0x44E .set push_simplify_statements, 0x44F .set push_sq_matrix_to_whole_number, 0x3C0 .set push_standardize, 0x558 .set push_symbolic_qr_fact, 0x2BE .set push_trig, 0x535 .set push_ulong_to_integer, 0x4E4 .set push_unit_system_list, 0x3B3 .set push_ushort_to_integer, 0x4E5 .set push_var, 0x3CB .set push_var_kern_tail, 0x56F .set push_zero_partial_column, 0x3C2 .set push0, 0x4E7 .set push1, 0x4E8 .set QActivePlots, 0x20A .set QPlotActive, 0x20B .set QSkipGraphErr, 0x1E7 .set QstatRcl, 0x40B .set raise_to_top, 0x529 .set ReallocExprStruct, 0x14D .set recall_data_var, 0x112 .set Regraph, 0x1B6 .set remaining_conjuncts_index, 0x581 .set remaining_disjuncts_index, 0x57F .set replace_top_with_reciprocal, 0x52D .set replace_top2_with_and, 0x57A .set replace_top2_with_difference, 0x51C .set replace_top2_with_imre, 0x559 .set replace_top2_with_or, 0x57C .set replace_top2_with_pow, 0x52A .set replace_top2_with_prod, 0x523 .set replace_top2_with_ratio, 0x528 .set replace_top2_with_sum, 0x519 .set rngLen, 0x1DF .set run_one_seq, 0x1DB .set ScrRectDivide, 0x28 .set SearchExprStruct, 0x14E .set seqStepCk, 0x1DE .set seqWebInit, 0x1DA .set SetGraphMode, 0x1B5 .set setup_more_graph_fun, 0x1CE .set setup_unit_system, 0x3B4 .set sf_width, 0x4D3 .set SP_Define, 0x110 .set spike_chk_gr_dirty, 0x11A .set spike_geo_titles, 0x115 .set spike_in_editor, 0x116 .set spike_optionD, 0x114 .set spike_titles_in_editor, 0x118 .set statEnd, 0x409 .set statFree, 0x40A .set statStart, 0x408 .set StepCk, 0x1DD .set store_data_var, 0x111 .set store_func_def, 0x2B4 .set store_to_subscripted_element, 0x2B5 .set FClose, 0x3D5 .set subtract_from_top, 0x51B .set subtract1_from_top, 0x51E .set time_loop, 0x1D8 .set times_top, 0x522 .set tokenize_if_TI_92_or_text, 0x265 .set TokenizeName, 0x3E9 .set FFindFirst, 0x3D9 .set unlock_more_graph_fun, 0x1CF .set ValidateStore, 0x8D .set VarGraphRefBitsClear, 0x268 .set VarOptList, 0x444 .set VarSaveTitle, 0x290 .set VarStoreLink, 0x87 .set WinBeginPaint, 0x500 .set WinBitmapSizeExt, 0x411 .set WinEndPaint, 0x501 .set WinLineExt, 0x47C .set WinRemove, 0x414 .set XCvtFtoP, 0x1BD .set XCvtPtoF, 0x1BA .set YCvtFtoP, 0x1BC .set YCvtFtoWin, 0x1B3 .set YCvtPtoF, 0x1BB .set did_map_aggregate_arg, 0x5B8 .set did_push_approx_inflection_point, 0x5B0 .set errno, 0x5D9 .set estack_max_index, 0x5BF .set EV_flags, 0x5DF .set Float0Index, 0x5D0 .set Float1Index, 0x5D1 .set FloatExp1Index, 0x5D4 .set FloatHalfIndex, 0x5E0 .set FloatMinus1Index, 0x5D2 .set FloatPiIndex, 0x5D3 .set IM_re_tol, 0x5C1 .set index_false, 0x5D6 .set index_true, 0x5D5 .set Integer0Index, 0x5CD .set Integer1Index, 0x5CE .set Integer2Index, 0x5E1 .set IntegerMinus1Index, 0x5CF .set is_real, 0x5A9 .set is_undefined, 0x5B7 .set NG_such_that_index, 0x5D7 .set OSCheckLinkOpen, 0x5E3 .set add_to_top, 0x518 .set RM_Type, 0x5DC .set TIOS_labs, 0x5BC .set RAtionalize_tol, 0x5C0 .set replace_top_with_post_simplified, 0x5B6 .set WinStrXYWrap, 0x5DB .set TIOS_div, 0x5BB .set UpdateWindows, 0x2B .set push_user_func, 0x2B3 .set is1, 0x2FD .set FGetSize, 0x3DD .set FRead, 0x3E0 .set FSetBufSize, 0x3E2 .set FSetSize, 0x3E3 .set FType, 0x3E6 .set GD_HVLine, 0x178 .set GD_Circle, 0x176 .set GD_Pen, 0x179 .set GD_Eraser, 0x17A .set GD_Text, 0x17B .set GD_Select, 0x17C .set GD_Contour, 0x17D .set GD_Line, 0x177 .set HomeAlone, 0x506 .set HS_getAns, 0x241 .set HomeExecute, 0x10E .set HomePushEStack, 0x10F .set HS_getEntry, 0x242 .set HS_countFIFO, 0x23D .set HS_freeFIFONode, 0x240 .set HS_deleteFIFONode, 0x23E .set HS_freeAll, 0x23F .set HS_chopFIFO, 0x23C .set HS_getFIFONode, 0x243 .set HS_newFIFONode, 0x245 .set HS_pushFIFONode, 0x246 .set HS_popEStack, 0x244 .set push_matrix_product, 0x3C5 .set push_list_times, 0x3BE .set push_list_plus, 0x3BD .set push_pow, 0x30F .set push_and, 0x5AB .set push_arg_plus_1, 0x51F .set push_arg_minus_1, 0x520 .set push_assignment, 0x4DD .set push_difference, 0x51A .set push_dot_div, 0x4CD .set push_dot_add, 0x4A0 .set push_dot_exponentiate, 0x596 .set push_dot_mult, 0x4A1 .set push_dot_sub, 0x4A2 .set push_equals, 0x5A3 .set push_exponentiate, 0x595 .set push_to_sphere, 0x329 .set push_factorial, 0x540 .set push_greater_than, 0x5A5 .set push_greater_than_or_equals, 0x5A7 .set push_indir_name, 0x2B2 .set push_degrees, 0x314 .set push_less_than, 0x5A6 .set push_less_than_or_equals, 0x5A8 .set push_negate, 0x524 .set push_not, 0x5AA .set push_not_equals, 0x5A4 .set push_or, 0x5AC .set push_percent, 0x555 .set push_radians, 0x4B3 .set push_product, 0x521 .set push_ratio, 0x526 .set push_sum, 0x594 .set push_substitute_simplify, 0x5B9 .set push_substitute_using_such_that, 0x5BE .set push_substitute_no_simplify, 0x489 .set push_to_cylin, 0x328 .set did_push_to_polar, 0x313 .set push_square, 0x52C .set push_setgraph, 0x322 .set push_getmode, 0x318 .set push_rand, 0x31F .set push_getkey, 0x316 .set push_setmode, 0x323 .set push_settable, 0x324 .set push_switch, 0x327 .set push_acos, 0x537 .set push_abs, 0x543 .set push_acosh, 0x53E .set push_1st_derivative, 0x5AE .set push_approx, 0x4F7 .set push_asinh, 0x53D .set push_asin, 0x536 .set push_augment, 0x496 .set push_atanh, 0x53F .set push_atan, 0x538 .set push_char, 0x497 .set push_ceiling, 0x54B .set push_coldim, 0x498 .set push_colnorm, 0x499 .set push_comdenom, 0x59B .set push_conj, 0x547 .set push_cosh, 0x53B .set push_cos, 0x533 .set push_cross_product, 0x4CE .set push_cumsum, 0x49A .set push_csolve, 0x585 .set push_czeros, 0x587 .set push_def_int, 0x5B2 .set push_desolve, 0x58B .set push_determinant, 0x49D .set push_diag, 0x49E .set push_dimension, 0x49F .set push_dotproduct, 0x4A3 .set push_eigvc, 0x4CF .set push_eigvl, 0x4D0 .set push_exp, 0x52E .set push_expand, 0x59A .set push_factor, 0x59C .set push_floor, 0x54A .set push_fractional_part, 0x54E .set push_gcd_numbers, 0x514 .set push_randnorm, 0x4B5 .set push_getfold, 0x317 .set push_gettype, 0x319 .set push_identity_mat, 0x4A4 .set push_im, 0x546 .set push_re, 0x545 .set push_comb, 0x542 .set push_perm, 0x541 .set push_part, 0x31C .set push_instring, 0x31A .set push_integer_remainder, 0x550 .set push_integer_part, 0x54D .set push_integer_gcd, 0x551 .set push_integer_lcm, 0x552 .set push_integer_quotient, 0x54F .set push_is_prime, 0x515 .set push_left, 0x4A5 .set did_push_series, 0x588 .set push_lim, 0x5AD .set push_ln, 0x52F .set push_list_to_mat, 0x4A6 .set push_log10, 0x530 .set push_mat_to_list, 0x4A8 .set push_matnorm, 0x4A7 .set push_max, 0x58A .set push_median, 0x4AA .set push_mean, 0x4A9 .set push_mid, 0x4AB .set push_min, 0x589 .set push_mod, 0x54C .set push_mrow, 0x4AC .set did_push_anti_deriv, 0x5B1 .set push_mrowadd, 0x4AD .set push_newmat, 0x4AF .set push_newlist, 0x4AE .set push_nint, 0x5B3 .set push_nsolve, 0x583 .set push_nth_derivative, 0x5AF .set push_denominator, 0x55B .set push_numerator, 0x55A .set push_max2, 0x599 .set push_max1, 0x554 .set push_min1, 0x553 .set push_min2, 0x598 .set push_ord, 0x4B0 .set push_r_cis, 0x549 .set push_pttest, 0x31D .set push_pxltest, 0x31E .set push_when, 0x57D .set push_zeros, 0x586 .set push_prodlist, 0x4B2 .set push_randmat, 0x4B4 .set push_randpoly, 0x320 .set push_right, 0x4B7 .set push_rotate, 0x4B8 .set push_round, 0x4B9 .set push_row_echelon, 0x4BE .set push_red_row_ech, 0x4B6 .set push_rowdim, 0x4BB .set push_rowadd, 0x4BA .set push_rowswap, 0x4BD .set push_rownorm, 0x4BC .set push_sequence, 0x4BF .set push_setfold, 0x321 .set push_shift, 0x4C0 .set push_sign, 0x544 .set push_sin2, 0x531 .set push_sin, 0x532 .set push_simult, 0x4C1 .set push_sinh, 0x53A .set push_solve, 0x584 .set push_sqrt, 0x52B .set push_string, 0x326 .set push_stddev, 0x4C3 .set push_submat, 0x4C4 .set push_str_to_expr, 0x325 .set push_sumlist, 0x4C5 .set push_summation, 0x5B4 .set push_extended_prod, 0x5B5 .set push_tan, 0x534 .set push_tanh, 0x53C .set push_unitv, 0x4C8 .set push_variance, 0x4C9 .set push_rec_to_angle, 0x539 .set push_phase, 0x548 .set NG_setup_graph_fun, 0x261 .set NG_cleanup_graph_fun, 0x262 .set OSKeyScan, 0x298 .set ScreenClear, 0x19e .set bcdadd, 0xb6 .set bcdcmp, 0xbb .set bcddiv, 0xb9 .set bcdbcd, 0xbd .set bcdmul, 0xb8 .set bcdneg, 0xba .set bcdsub, 0xb7 .set bcdlong, 0xbc .set SymFindFoldername, 0x6F .set MakeHsym, 0x282 .set _bcd_math, 0xB5 .set _ds16u16, 0x2A4 .set _ms16u16, 0x2A5 .set _du16u16, 0x2A6 .set _mu16u16, 0x2A7 .set _ds32s32, 0x2A8 .set _ms32s32, 0x2A9 .set _du32u32, 0x2AA .set _mu32u32, 0x2AB .set LCD_MEM, 0x4c00 .set ACTIVITY_IDLE, 0 .set ACTIVITY_BUSY, 1 .set ACTIVITY_PAUSED, 2 .set ER_STOP, 2 .set ER_DIMENSION, 230 .set ER_MEMORY, 670 .set ER_MEMORY_DML, 810 .set UNDEFINED_TAG, 0x2a .set LIST_TAG, 0xd9 .set MATRIX_TAG, 0xdb .set END_TAG, 0xe5 .set CALC_TI89, 0 .set CALC_TI92PLUS, 1 tiemu-3.03-nogdb+dfsg/misc/romcalls.txt000066400000000000000000000667341220314353500201160ustar00rootroot00000000000000 0:FirstWindow 1:WinActivate 2:WinAttr 3:WinBackupToScr 4:WinBackground 5:WinBegin 6:WinBitmapGet 7:WinBitmapPut 8:WinBitmapSize 9:WinCharXY A:WinChar B:WinClose C:WinClr D:WinDeactivate E:WinDupStat F:WinEllipse 10:WinFill 11:WinFillLines2 12:WinFillTriangle 13:WinFont 14:WinGetCursor 15:WinHide 16:WinHome 17:WinLine 18:WinLineNC 19:WinLineTo 1A:WinLineRel 1B:WinMoveCursor 1C:WinMoveTo 1D:WinMoveRel 1E:WinOpen 1F:WinPixGet 20:WinPixSet 21:WinRect 22:WinReOpen 23:WinScrollH 24:WinScrollV 25:WinStr 26:WinStrXY 27:DrawWinBorder 28:ScrRectDivide 29:RectWinToWin 2A:RectWinToScr 2B:UpdateWindows 2C:MakeWinRect 2D:ScrToWin 2E:ScrToHome 2F:ScrRect 30:Dialog 31:NoCallBack / ROM_CALL_31 32:DialogDo 33:DialogAdd 34:DialogNew 35:DrawStaticButton 36:MenuBegin 37:MenuCheck 38:MenuEnd 39:MenuKey 3A:MenuOn 3B:MenuPopup 3C:MenuSubStat 3D:MenuTopStat 3E:MenuTopSelect 3F:MenuTopRedef 40:MenuGetTopRedef 41:MenuAddText 42:MenuAddIcon 43:MenuNew 44:PopupAddText 45:PopupNew 46:PopupClear 47:PopupDo 48:PopupText 49:MenuUpdate 4A:Parse2DExpr 4B:Parse2DMultiExpr 4C:Print2DExpr 4D:Parms2D 4E:display_statements 4F:Parse1DExpr 50:pushkey 51:ngetchx 52:kbhit 53:sprintf 54:getcalc 55:sendcalc 56:LIO_Send 57:LIO_Get 58:LIO_Receive 59:LIO_GetMultiple 5A:LIO_SendData 5B:LIO_RecvData 5C:SymAdd 5D:SymAddMain 5E:SymDel 5F:HSymDel 60:SymFind 61:SymFindMain 62:SymFindHome 63:SymMove 64:FolderAdd 65:FolderCur 66:FolderDel 67:FolderFind 68:FolderGetCur 69:FolderOp 6A:FolderRename 6B:FolderCount 6C:SymFindFirst 6D:SymFindNext 6E:SymFindPrev 6F:SymFindFoldername 70:AddSymToFolder 71:FindSymInFolder 72:FolderCurTemp 73:FolderAddTemp 74:FolderDelTemp 75:FolderDelAllTemp 76:TempFolderName 77:IsMainFolderStr 78:ParseSymName 79:DerefSym 7A:HSYMtoName 7B:StrToTokN 7C:TokToStrN 7D:CheckGraphRef 7E:ClearUserDef 7F:CheckLinkLockFlag 80:TokenizeSymName 81:SymCmp 82:SymCpy 83:SymCpy0 84:ValidateSymName 85:VarRecall 86:VarStore 87:VarStoreLink 88:QSysProtected 89:CheckSysFunc 8A:GetSysGraphRef 8B:CheckReservedName 8C:SymSysVar 8D:ValidateStore 8E:ResetSymFlags 8F:HeapAvail 90:HeapAlloc 91:HeapAllocESTACK 92:HeapAllocHigh 93:HeapAllocThrow 94:HeapAllocHighThrow 95:HeapCompress 96:HeapDeref 97:HeapFree 98:HeapFreeIndir 99:HLock 9A:HeapLock 9B:HeapGetLock 9C:HeapMax 9D:HeapRealloc 9E:HeapSize 9F:HeapUnlock A0:HeapMoveHigh A1:HeapEnd A2:HeapAllocPtr A3:HeapFreePtr A4:NeedStack A5:TE_close A6:TE_checkSlack A7:TE_empty A8:TE_focus A9:TE_handleEvent AA:TE_indicateReadOnly AB:TE_isBlank AC:TE_open AD:TE_openFixed AE:TE_pasteText AF:TE_reopen B0:TE_reopenPlain B1:TE_select B2:TE_shrinkWrap B3:TE_unfocus B4:TE_updateCommand B5:_bcd_math B6:bcdadd B7:bcdsub B8:bcdmul B9:bcddiv BA:bcdneg BB:bcdcmp BC:bcdlong BD:bcdbcd BE:EX_getArg BF:EX_getBCD C0:EX_stoBCD C1:CB_replaceTEXT C2:CB_fetchTEXT C3:CU_restore C4:CU_start C5:CU_stop C6:EV_captureEvents C7:EV_clearPasteString C8:EV_getc C9:EV_getSplitRect CA:EV_notifySwitchGraph CB:EV_paintOneWindow CC:EV_paintWindows CD:EV_restorePainting CE:EV_sendEvent CF:EV_sendEventSide D0:EV_sendString D1:EV_setCmdCheck D2:EV_setCmdState D3:EV_setFKeyState D4:EV_startApp D5:EV_startSide D6:EV_startTask D7:EV_suspendPainting D8:EV_switch D9:MO_currentOptions DA:MO_defaults DB:MO_digestOptions DC:MO_isMultigraphTask DD:MO_modeDialog DE:MO_notifyModeChange DF:MO_sendQuit E0:ST_angle E1:ST_batt E2:ST_busy E3:ST_eraseHelp E4:ST_folder E5:ST_graph E6:ST_helpMsg E7:ST_modKey E8:ST_precision E9:ST_readOnly EA:ST_stack EB:ST_refDsp EC:OSCheckBreak ED:OSClearBreak EE:OSEnableBreak EF:OSDisableBreak F0:OSRegisterTimer F1:OSFreeTimer F2:OSTimerCurVal F3:OSTimerExpired F4:OSTimerRestart F5:acos F6:asin F7:atan F8:atan2 F9:cos FA:sin FB:tan FC:cosh FD:sinh FE:tanh FF:exp 100:log 101:log10 102:modf 103:pow 104:sqrt 105:ceil 106:fabs 107:floor 108:fmod 109:top_estack 10A:next_expression_index 10B:gr_active 10C:gr_other 10D:ABT_dialog 10E:HomeExecute 10F:HomePushEStack 110:SP_Define 111:store_data_var 112:recall_data_var 113:CharNumber 114:spike_optionD 115:spike_geo_titles 116:spike_in_editor 117:dv_create_graph_titles 118:spike_titles_in_editor 119:dv_findColumn 11A:spike_chk_gr_dirty 11B:GetStatValue 11C:partial_len 11D:paint_all_except 11E:EQU_select 11F:EQU_setStyle 120:EQU_getNameInfo 121:checkCurrent 122:BN_power17Mod 123:BN_powerMod 124:BN_prodMod 125:CAT_dialog 126:caddcert / ROM_CALL_126 127:cdecrypt 128:ceof 129:cfindcertfield / handleVarLinkKey 12A:cfindfield 12B:cgetc 12C:cgetcert / HeapWalk 12D:cgetflen 12E:cgetfnl 12F:cgetnl 130:cgetns 131:cgetvernum / ROM_CALL_131 132:copen 133:copensub 134:cputhdr 135:cputnl 136:cputns 137:cread 138:ctell 139:cwrite 13A:cacos 13B:casin 13C:catan 13D:cacosh 13E:casinh 13F:catanh 140:ccos 141:csin 142:ctan 143:ccosh 144:csinh 145:ctanh 146:csqrt 147:cln 148:clog10 149:cexp 14A:CustomBegin 14B:CustomMenuItem 14C:CustomEnd 14D:ReallocExprStruct 14E:SearchExprStruct 14F:handleRclKey 150:CustomFree 151:ERD_dialog 152:ERD_process 153:ER_throwVar 154:ER_catch 155:ER_success 156:EV_centralDispatcher 157:EV_defaultHandler 158:EV_eventLoop 159:EV_registerMenu 15A:EX_patch 15B:EM_abandon 15C:EM_blockErase / OSFastArrows 15D:EM_blockVerifyErase 15E:EM_delete / AB_getGateArrayVersion 15F:EM_findEmptySlot 160:EM_GC 161:EM_moveSymFromExtMem 162:EM_moveSymToExtMem 163:EM_open / SetAlphaStatus 164:EM_put / GetAlphaStatus 165:EM_survey 166:EM_twinSymFromExtMem 167:EM_write 168:EM_writeToExtMem / ROM_CALL_168 169:FL_addCert 16A:FL_download 16B:FL_getHardwareParmBlock 16C:FL_getCert 16D:FL_getVerNum 16E:EQU_deStatus 16F:cmpstri 170:fix_loop_displacements 171:FL_write 172:fpisanint 173:fpisodd 174:round12 175:round14 176:GD_Circle 177:GD_Line 178:GD_HVLine 179:GD_Pen 17A:GD_Eraser 17B:GD_Text 17C:GD_Select 17D:GD_Contour 17E:GKeyIn 17F:GKeyDown 180:GKeyFlush 181:HelpKeys 182:QModeKey 183:QSysKey 184:WordInList 185:BitmapGet 186:BitmapInit 187:BitmapPut 188:BitmapSize 189:ScrRectFill 18A:ScrRectOverlap 18B:ScrRectScroll 18C:ScrRectShift 18D:QScrRectOverlap 18E:FontGetSys 18F:FontSetSys 190:FontCharWidth 191:DrawClipChar 192:DrawClipEllipse 193:DrawClipLine 194:DrawClipPix 195:DrawClipRect 196:DrawMultiLines 197:DrawStrWidth 198:FillTriangle 199:FillLines2 19A:SetCurAttr 19B:SetCurClip 19C:LineTo 19D:MoveTo 19E:ScreenClear 19F:GetPix 1A0:SaveScrState 1A1:RestoreScrState 1A2:PortSet 1A3:PortRestore 1A4:DrawChar 1A5:DrawFkey 1A6:DrawIcon 1A7:DrawLine 1A8:DrawPix 1A9:DrawStr 1AA:GM_Value 1AB:GM_Intersect 1AC:GM_Integrate 1AD:GM_Inflection 1AE:GM_TanLine 1AF:GM_Math1 1B0:GM_Derivative 1B1:GM_DistArc 1B2:GM_Shade 1B3:YCvtFtoWin 1B4:DlgMessage 1B5:SetGraphMode 1B6:Regraph 1B7:GrAxes 1B8:gr_xres_pixel 1B9:CptFuncX 1BA:XCvtPtoF 1BB:YCvtPtoF 1BC:YCvtFtoP 1BD:XCvtFtoP 1BE:GrLineFlt 1BF:FuncLineFlt 1C0:GrClipLine 1C1:CptDeltax 1C2:CptDeltay 1C3:CkValidDelta 1C4:GR_Pan 1C5:FindFunc 1C6:FindGrFunc 1C7:grFuncName 1C8:gr_initCondName 1C9:CptIndep 1CA:gr_CptIndepInc 1CB:gr_del_locals 1CC:gr_DelFolder 1CD:gr_openFolder 1CE:setup_more_graph_fun 1CF:unlock_more_graph_fun 1D0:execute_graph_func 1D1:cpt_gr_fun 1D2:cpt_gr_param 1D3:cpt_gr_polar 1D4:gr_execute_seq 1D5:CountGrFunc 1D6:FirstSeqPlot 1D7:cleanup_seq_mem 1D8:time_loop 1D9:InitTimeSeq 1DA:seqWebInit 1DB:run_one_seq 1DC:gr_seq_value 1DD:StepCk 1DE:seqStepCk 1DF:rngLen 1E0:gdb_len 1E1:gdb_store 1E2:gdb_recall 1E3:gr_DispLabels 1E4:GraphOrTableCmd 1E5:ck_valid_float 1E6:CreateEmptyList 1E7:QSkipGraphErr 1E8:gr_find_de_result 1E9:InitDEAxesRng 1EA:InitDEMem 1EB:de_loop 1EC:cleanup_de_mem 1ED:gr_de_value 1EE:gr_find_func_index 1EF:CptLastIndepDE 1F0:de_initRes 1F1:gr_del_vars_in_folder 1F2:gr_de_axes_lbl 1F3:gr_execute_de 1F4:gr_delete_fldpic 1F5:gr_remove_fldpic 1F6:gr_add_fldpic 1F7:gr_stopic 1F8:gr_find_el 1F9:deStepCk 1FA:gr_ck_solvergraph 1FB:GR3_addContours 1FC:GraphActivate 1FD:GR3_freeDB 1FE:GR3_handleEvent 1FF:GR3_paint3d 200:GR3_xyToWindow 201:GS_PlotTrace 202:GS_PlotAll 203:PlotDel 204:PlotPut 205:PlotGet 206:PlotInit 207:PlotDup 208:PlotSize 209:PlotLookup 20A:QActivePlots 20B:QPlotActive 20C:GT_BackupToScr 20D:GT_CalcDepVals 20E:GT_CenterGraphCursor 20F:GT_CursorKey 210:GT_DspFreeTraceCoords 211:GT_DspTraceCoords 212:GT_DspMsg 213:GT_Error 214:GT_Format 215:GT_FreeTrace 216:GT_IncXY 217:GT_KeyIn 218:GT_QFloatCursorsInRange 219:GT_Regraph 21A:GT_Regraph_if_neccy 21B:GT_Open 21C:GT_SaveAs 21D:GT_SelFunc 21E:GT_SetGraphRange 21F:GT_SetCursorXY 220:GT_ShowMarkers 221:GT_Trace 222:GT_ValidGraphRanges 223:GT_WinBound 224:GT_WinCursor 225:GYcoord 226:GXcoord 227:round12_err 228:GT_Set_Graph_Format 229:GT_PrintCursor 22A:GT_DE_Init_Conds 22B:GZ_Box 22C:GZ_Center 22D:GZ_Decimal 22E:GZ_Fit 22F:GZ_InOut 230:GZ_Integer 231:GZ_Previous 232:GZ_Recall 233:GZ_SetFactors 234:GZ_Square 235:GZ_Standard 236:GZ_Stat 237:GZ_Store 238:GZ_Trig 239:HeapGetHandle 23A:HeapPtrToHandle 23B:FreeHandles 23C:HS_chopFIFO 23D:HS_countFIFO 23E:HS_deleteFIFONode 23F:HS_freeAll 240:HS_freeFIFONode 241:HS_getAns 242:HS_getEntry 243:HS_getFIFONode 244:HS_popEStack 245:HS_newFIFONode 246:HS_pushFIFONode 247:HToESI 248:OSInitKeyInitDelay 249:OSInitBetweenKeyDelay 24A:OSCheckSilentLink 24B:OSLinkCmd 24C:OSLinkReset 24D:OSLinkOpen 24E:OSLinkClose 24F:OSReadLinkBlock 250:OSWriteLinkBlock 251:OSLinkTxQueueInquire 252:OSLinkTxQueueActive 253:LIO_SendProduct 254:MD5Init 255:MD5Update 256:MD5Final 257:MD5Done 258:convert_to_TI_92 259:gen_version 25A:is_executable 25B:NG_RPNToText 25C:NG_approxESI 25D:NG_execute 25E:NG_graphESI 25F:NG_rationalESI 260:NG_tokenize 261:NG_setup_graph_fun 262:NG_cleanup_graph_fun 263:push_END_TAG 264:push_LIST_TAG 265:tokenize_if_TI_92_or_text 266:setjmp 267:longjmp 268:VarGraphRefBitsClear 269:VarInit / is0 26A:memcpy 26B:memmove 26C:strcpy 26D:strncpy 26E:strcat 26F:strncat 270:memcmp 271:strcmp 272:strncmp 273:memchr 274:strchr 275:strcspn 276:strpbrk 277:strrchr 278:strspn 279:strstr 27A:strtok 27B:_memset 27C:memset 27D:strerror 27E:strlen 27F:SymAddTwin 280:SymDelTwin 281:LoadSymFromFindHandle 282:MakeHSym 283:SymFindPtr 284:*OSVRegisterTimer* 285:*OSVFreeTimer* 286:sincos 287:asinh 288:acosh 289:atanh 28A:itrig 28B:trig 28C:VarOpen 28D:VarSaveAs 28E:VarNew 28F:VarCreateFolderPopup 290:VarSaveTitle 291:WinWidth 292:WinHeight 293:XR_stringPtr 294:OSReset 295:SumStoChkMem 296:OSContrastUp 297:OSContrastDn 298:OSKeyScan 299:OSGetStatKeys 29A:off 29B:idle 29C:OSSetSR 29D:AB_prodid 29E:AB_prodname 29F:AB_serno 2A0:cgetcertrevno 2A1:cgetsn 2A2:de_rng_no_graph 2A3:EV_hook 2A4:_ds16u16 2A5:_ms16u16 2A6:_du16u16 2A7:_mu16u16 2A8:_ds32s32 2A9:_ms32s32 2AA:_du32u32 2AB:_mu32u32 2AC:assign_between 2AD:did_push_var_val 2AE:does_push_fetch 2AF:delete_list_element 2B0:push_ans_entry 2B1:index_after_match_endtag 2B2:push_indir_name 2B3:push_user_func 2B4:store_func_def 2B5:store_to_subscripted_element 2B6:index_below_display_expression_aux 2B7:get_key_ptr 2B8:get_list_indices 2B9:get_matrix_indices 2BA:init_list_indices 2BB:init_matrix_indices 2BC:push_float_qr_fact 2BD:push_lu_fact 2BE:push_symbolic_qr_fact 2BF:are_expressions_identical 2C0:compare_expressions 2C1:find_error_message 2C2:check_estack_size 2C3:delete_between 2C4:deleted_between 2C5:delete_expression 2C6:deleted_expression 2C7:estack_to_short 2C8:estack_to_ushort 2C9:factor_base_index 2CA:factor_exponent_index 2CB:GetValue 2CC:im_index 2CD:index_numeric_term 2CE:index_of_lead_base_of_lead_term 2CF:index_main_var 2D0:is_advanced_tag 2D1:is_antisymmetric 2D2:is_complex_number 2D3:is_complex0 2D4:is_free_of_tag 2D5:is_independent_of 2D6:is_independent_of_de_seq_vars 2D7:is_independent_of_tail 2D8:is_independent_of_elements 2D9:is_monomial 2DA:is_monomial_in_kernel 2DB:is_narrowly_independent_of 2DC:is_symmetric 2DD:is_tail_independent_of 2DE:lead_base_index 2DF:lead_exponent_index 2E0:lead_factor_index 2E1:lead_term_index 2E2:main_gen_var_index 2E3:map_unary_over_comparison 2E4:min_quantum 2E5:move_between_to_top 2E6:moved_between_to_top 2E7:numeric_factor_index 2E8:push_between 2E9:push_expr_quantum 2EA:push_expr2_quantum 2EB:push_next_arb_int 2EC:push_next_arb_real 2ED:push_next_internal_var 2EE:push_quantum 2EF:push_quantum_pair 2F0:reductum_index 2F1:remaining_factors_index 2F2:re_index 2F3:reset_estack_size 2F4:reset_control_flags 2F5:can_be_approxed 2F6:compare_complex_magnitudes 2F7:compare_Floats 2F8:did_push_cnvrt_Float_to_integer 2F9:estack_number_to_Float 2FA:float_class 2FB:frexp10 2FC:gcd_exact_whole_Floats 2FD:init_float / is1 2FE:is_Float_exact_whole_number 2FF:is_float_infinity 300:is_float_negative_zero 301:is_float_positive_zero 302:is_float_signed_infinity 303:is_float_transfinite 304:is_float_unsigned_inf_or_nan 305:is_float_unsigned_zero 306:is_nan 307:likely_approx_to_complex_number 308:likely_approx_to_number 309:norm1_complex_Float 30A:push_Float 30B:push_Float_to_nonneg_int 30C:push_Float_to_rat 30D:push_cnvrt_integer_if_whole_nmb 30E:push_overflow_to_infinity 30F:push_pow 310:push_round_Float 311:should_and_did_push_approx_arg2 312:signum_Float 313:did_push_to_polar 314:push_degrees 315:push_format 316:push_getkey 317:push_getfold 318:push_getmode 319:push_gettype 31A:push_instring 31B:push_mrow_aux 31C:push_part 31D:push_pttest 31E:push_pxltest 31F:push_rand 320:push_randpoly 321:push_setfold 322:push_setgraph 323:push_setmode 324:push_settable 325:push_str_to_expr 326:push_string 327:push_switch 328:push_to_cylin 329:push_to_sphere 32A:cmd_andpic 32B:cmd_blddata 32C:cmd_circle 32D:cmd_clrdraw 32E:cmd_clrerr 32F:cmd_clrgraph 330:cmd_clrhome 331:cmd_clrio 332:cmd_clrtable 333:cmd_copyvar 334:cmd_cubicreg 335:cmd_custmoff 336:cmd_custmon 337:cmd_custom 338:cmd_cycle 339:cmd_cyclepic 33A:cmd_delfold 33B:cmd_delvar 33C:cmd_dialog 33D:cmd_disp 33E:cmd_dispg 33F:cmd_disphome 340:cmd_disptbl 341:cmd_drawfunc 342:cmd_drawinv 343:cmd_drawparm 344:cmd_drawpol 345:cmd_else 346:cmd_endfor 347:cmd_endloop 348:cmd_endtry 349:cmd_endwhile 34A:cmd_exit 34B:cmd_expreg 34C:cmd_fill 34D:cmd_fnoff 34E:cmd_fnon 34F:cmd_for 350:cmd_get 351:cmd_getcalc 352:cmd_goto 353:cmd_graph 354:cmd_if 355:cmd_ifthen 356:cmd_input 357:cmd_inputstr 358:cmd_line 359:cmd_linehorz 35A:cmd_linetan 35B:cmd_linevert 35C:cmd_linreg 35D:cmd_lnreg 35E:cmd_local 35F:cmd_lock 360:cmd_logistic 361:cmd_medmed 362:cmd_movevar 363:cmd_newdata 364:cmd_newfold 365:cmd_newpic 366:cmd_newplot 367:cmd_newprob 368:cmd_onevar 369:cmd_output 36A:cmd_passerr 36B:cmd_pause 36C:cmd_plotsoff 36D:cmd_plotson 36E:cmd_popup 36F:cmd_powerreg 370:cmd_printobj 371:cmd_prompt 372:cmd_ptchg 373:cmd_ptoff 374:cmd_pton 375:cmd_pttext 376:cmd_pxlchg 377:cmd_pxlcircle 378:cmd_pxlhorz 379:cmd_pxlline 37A:cmd_pxloff 37B:cmd_pxlon 37C:cmd_pxltext 37D:cmd_pxlvert 37E:cmd_quadreg 37F:cmd_quartreg 380:cmd_randseed 381:cmd_rclgdb 382:cmd_rclpic 383:cmd_rename 384:cmd_request 385:cmd_return 386:cmd_rplcpic 387:cmd_send 388:cmd_sendcalc 389:cmd_sendchat 38A:cmd_shade 38B:cmd_showstat 38C:cmd_sinreg 38D:cmd_slpline 38E:cmd_sorta 38F:cmd_sortd 390:cmd_stogdb 391:cmd_stopic 392:cmd_style 393:cmd_table 394:cmd_text 395:cmd_toolbar 396:cmd_trace 397:cmd_try 398:cmd_twovar 399:cmd_unlock 39A:cmd_while 39B:cmd_xorpic 39C:cmd_zoombox 39D:cmd_zoomdata 39E:cmd_zoomdec 39F:cmd_zoomfit 3A0:cmd_zoomin 3A1:cmd_zoomint 3A2:cmd_zoomout 3A3:cmd_zoomprev 3A4:cmd_zoomrcl 3A5:cmd_zoomsqr 3A6:cmd_zoomstd 3A7:cmd_zoomsto 3A8:cmd_zoomtrig 3A9:OSenqueue 3AA:OSdequeue 3AB:OSqinquire 3AC:OSqhead 3AD:OSqclear 3AE:did_push_divide_units 3AF:has_unit_base 3B0:init_unit_system 3B1:is_units_term 3B2:push_auto_units_conversion 3B3:push_unit_system_list 3B4:setup_unit_system 3B5:all_tail 3B6:any_tail 3B7:is_matrix 3B8:is_square_matrix 3B9:is_valid_smap_aggregate 3BA:last_element_index 3BB:map_tail 3BC:map_tail_Int 3BD:push_list_plus 3BE:push_list_times 3BF:push_reversed_tail 3C0:push_sq_matrix_to_whole_number 3C1:push_transpose_aux 3C2:push_zero_partial_column 3C3:remaining_element_count 3C4:push_offset_array 3C5:push_matrix_product 3C6:is_pathname 3C7:next_token 3C8:nonblank 3C9:push_parse_prgm_or_func_text 3CA:push_parse_text 3CB:push_var 3CC:memucmp 3CD:ROM_CALL_3CD 3CE:ROM_CALL_3CE 3CF:EM_GetArchiveMemoryBeginning 3D0:LIO_SendIdList 3D1:ROM_CALL_3D1 3D2:OO_GetEndOfAllFlashApps 3D3:ROM_CALL_3D3 3D4:FAccess 3D5:FClose 3D6:FCreate 3D7:FDelete 3D8:FEof 3D9:FFindFirst 3DA:FFindNext 3DB:FGetC 3DC:FGetPos 3DD:FGetSize 3DE:FOpen 3DF:FPutC 3E0:FRead 3E1:FSetPos 3E2:FSetBufSize 3E3:FSetSize 3E4:FSetVer 3E5:FStatus 3E6:FType 3E7:FWrite 3E8:ROM_CALL_3E8 3E9:TokenizeName 3EA:ROM_CALL_3EA 3EB:KeyYesOrNo 3EC:ROM_CALL_3EC 3ED:BitmapSizeExt 3EE:DrawStrWidthP 3EF:CalcBitmapSize 3F0:DynMenuChange 3F1:DynMenuAdd 3F2:MenuLoad 3F3:MenuItemDef 3F4:MenuFlags 3F5:PopupBegin 3F6:PopupBeginDo 3F7:ROM_CALL_3F7 3F8:ROM_CALL_3F8 3F9:init_float 3FA:OO_CondGetAttr 3FB:OO_Deref 3FC:OO_GetAppAttr 3FD:OO_GetAttr 3FE:OO_HasAttr 3FF:OO_New 400:OO_SetAppAttr 401:OO_SetAttr 402:OO_NextACB 403:OO_PrevACB 404:OO_InstallSystemHook 405:OO_UninstallSystemHook 406:OO_AppNameToACB 407:stricmp 408:statStart 409:statEnd 40A:statFree 40B:QstatRcl 40C:ROM_CALL_40C 40D:ROM_CALL_40D 40E:ROM_CALL_40E 40F:are_units_consistent 410:ROM_CALL_410 411:WinBitmapSizeExt 412:ROM_CALL_412 413:ROM_CALL_413 414:WinRemove 415:RectWinToScrExt 416:ROM_CALL_416 417:ROM_CALL_417 418:ROM_CALL_418 419:MenuOff 41A:QMenuTopSelect 41B:ROM_CALL_41B 41C:ROM_CALL_41C 41D:ROM_CALL_41D 41E:ROM_CALL_41E 41F:ROM_CALL_41F 420:ROM_CALL_420 421:ROM_CALL_421 422:ROM_CALL_422 423:OO_Destroy 424:ROM_CALL_424 425:OO_appGetPublicStorage 426:OO_appIsMarkedDelete 427:OO_appMarkDelete 428:ROM_CALL_428 429:OO_appSetPublicStorage 42A:ROM_CALL_42A 42B:ROM_CALL_42B 42C:ClientToScr 42D:MakeScrRect 42E:SetWinClip 42F:WinToScr 430:pSymPG 431:OSModKeyStatus 432:bottom_estack 433:ROM_CALL_433 434:BatTooLowFlash 435:GetDataType 436:SmapTypeStrings 437:ROM_CALL_437 438:ROM_CALL_438 439:ROM_CALL_439 43A:GetFuncPrgmBodyPtr 43B:DataTypeNames 43C:AM_Beginning_AMS1xx w/o MaxMem 43D:FlashMemoryEnd 43E:CertificateMemory 43F:ReleaseDate 440:ReleaseVersion 441:HeapTable 442:CTypeTable 443:ST_flags 444:VarOptList 445:ROM_CALL_445 446:ROM_CALL_446 447:MO_option 448:cmd_archive 449:cmd_unarchiv 44A:ROM_CALL_44A 44B:ROM_CALL_44B 44C:clear_error_context 44D:push_expression 44E:push_simplify 44F:push_simplify_statements 450:push_simplify_expressions 451:OO_firstACB 452:EV_appA 453:EV_appB 454:EV_getAppID 455:ROM_CALL_455 456:SetOK 457:ROM_CALL_457 458:EV_appSide 459:ROM_CALL_459 45A:ROM_CALL_45A 45B:ROM_CALL_45B 45C:EV_currentApp 45D:EV_runningApp 45E:ROM_CALL_45E 45F:hStrAppend 460:ROM_CALL_460 461:ROM_CALL_461 462:ROM_CALL_462 463:gr_flags 464:FLOATTAB 465:is_cFloat_agg 466:NG_control 467:primary_tag_list 468:ROM_CALL_468 469:estack_to_float 46A:ROM_CALL_46A 46B:ROM_CALL_46B 46C:GetTagStr 46D:EV_errorCode 46E:OSOnBreak 46F:ROM_CALL_46F 470:ROM_CALL_470 471:ROM_CALL_471 472:LCD_MEM 473:ROM_CALL_473 474:HeapShuffle 475:ERD_notice 476:ERD_dismissNotice 477:OO_GetFlashAppSize 478:ROM_CALL_478 479:ROM_CALL_479 47A:ROM_CALL_47A 47B:ROM_CALL_47B 47C:WinLineExt 47D:ForceFloat 47E:ROM_CALL_47E 47F:ROM_CALL_47F 480:ROM_CALL_480 481:alphaLockOn 482:alphaLockOff 483:restoreAlphaLock 484:cmd_lu_fact 485:cmd_qr_fact 486:ROM_CALL_486 487:ROM_CALL_487 488:is_variable 489:push_substitute_no_simplify 48A:push_zstr 48B:is_complex_Float 48C:ROM_CALL_48C 48D:ROM_CALL_48D 48E:EV_quit 48F:OO_SuperFrame 490:OO_InstallAppHook 491:OO_UninstallAppHook 492:OO_InstallAppHookByName 493:OO_UninstallAppHookByName 494:ROM_CALL_494 495:ROM_CALL_495 496:push_augment 497:push_char 498:push_coldim 499:push_colnorm 49A:push_cumsum 49B:push_cylin_vector 49C:push_dense_poly_eval 49D:push_determinant 49E:push_diag 49F:push_dimension 4A0:push_dot_add 4A1:push_dot_mult 4A2:push_dot_sub 4A3:push_dotproduct 4A4:push_identity_mat 4A5:push_left 4A6:push_list_to_mat 4A7:push_matnorm 4A8:push_mat_to_list 4A9:push_mean 4AA:push_median 4AB:push_mid 4AC:push_mrow 4AD:push_mrowadd 4AE:push_newlist 4AF:push_newmat 4B0:push_ord 4B1:push_polar_vector 4B2:push_prodlist 4B3:push_radians 4B4:push_randmat 4B5:push_randnorm 4B6:push_red_row_ech 4B7:push_right 4B8:push_rotate 4B9:push_round 4BA:push_rowadd 4BB:push_rowdim 4BC:push_rownorm 4BD:push_rowswap 4BE:push_row_echelon 4BF:push_sequence 4C0:push_shift 4C1:push_simult 4C2:push_sphere_vector 4C3:push_stddev 4C4:push_submat 4C5:push_sumlist 4C6:push_to_dd 4C7:push_to_dms 4C8:push_unitv 4C9:push_variance 4CA:ROM_CALL_4CA 4CB:ROM_CALL_4CB 4CC:ROM_CALL_4CC 4CD:push_dot_div 4CE:push_cross_product 4CF:push_eigvc 4D0:push_eigvl 4D1:ROM_CALL_4D1 4D2:push_transpose 4D3:sf_width 4D4:strtod 4D5:ROM_CALL_4D5 4D6:freeIdList 4D7:ROM_CALL_4D7 4D8:ST_progressBar 4D9:ST_progressUpdate 4DA:ST_progressIncrement 4DB:ST_progressDismiss 4DC:ROM_CALL_4DC 4DD:push_assignment 4DE:FirstNonblank 4DF:is_negative_number 4E0:is_positive_number_or_neg0frac 4E1:is_negative_number_or_pos0frac_or_pos0int 4E2:is_positive_number 4E3:push_long_to_integer 4E4:push_ulong_to_integer 4E5:push_ushort_to_integer 4E6:ROM_CALL_4E6 4E7:push0 4E8:push1 4E9:push0_tag 4EA:push1_tag 4EB:push_half 4EC:push_exact0 4ED:push_exact_minus1 4EE:push_minus1 4EF:push_minus1_tag 4F0:push_minus_half 4F1:push_negate_quantum_as_negint 4F2:push_exact1 4F3:OO_GetFirstFlashAppSectorAddress 4F4:ROM_CALL_4F4 4F5:OO_DestroyAll 4F6:ROM_CALL_4F6 4F7:push_approx 4F8:push_internal_simplify 4F9:push_polar_to_rect_x 4FA:push_polar_to_rect_y 4FB:ROM_CALL_4FB 4FC:FiftyMsecTick 4FD:ROM_CALL_4FD 4FE:ROM_CALL_4FE 4FF:strtol 500:WinBeginPaint 501:WinEndPaint 502:ROM_CALL_502 503:CU_cursorState 504:ROM_CALL_504 505:ROM_CALL_505 506:HomeAlone 507:ER_throwFrame 508:is_minus1 509:is_pos_int_and_eq_quantum 50A:is_reciprocal_of_quantum 50B:is_whole_number 50C:integer_non_unknown 50D:compare_numbers 50E:push_quantum_as_nonnegative_int 50F:push_reciprocal_of_quantum 510:push_minus_recip_of_quantum 511:push_quantum_pair_as_pos_frac 512:push_pi 513:push_pi_on_quantum 514:push_gcd_numbers 515:push_is_prime 516:get_lb 517:get_ub 518:add_to_top 519:replace_top2_with_sum 51A:push_difference 51B:subtract_from_top 51C:replace_top2_with_difference 51D:add1_to_top 51E:subtract1_from_top 51F:push_arg_plus_1 520:push_arg_minus_1 521:push_product 522:times_top 523:replace_top2_with_prod 524:push_negate 525:negate_top 526:push_ratio 527:divide_top 528:replace_top2_with_ratio 529:raise_to_top 52A:replace_top2_with_pow 52B:push_sqrt 52C:push_square 52D:replace_top_with_reciprocal 52E:push_exp 52F:push_ln 530:push_log10 531:push_sin2 532:push_sin 533:push_cos 534:push_tan 535:push_trig 536:push_asin 537:push_acos 538:push_atan 539:push_rec_to_angle 53A:push_sinh 53B:push_cosh 53C:push_tanh 53D:push_asinh 53E:push_acosh 53F:push_atanh 540:push_factorial 541:push_perm 542:push_comb 543:push_abs 544:push_sign 545:push_re 546:push_im 547:push_conj 548:push_phase 549:push_r_cis 54A:push_floor 54B:push_ceiling 54C:push_mod 54D:push_integer_part 54E:push_fractional_part 54F:push_integer_quotient 550:push_integer_remainder 551:push_integer_gcd 552:push_integer_lcm 553:push_min1 554:push_max1 555:push_percent 556:is_term_improper 557:push_make_proper 558:push_standardize 559:replace_top2_with_imre 55A:push_numerator 55B:push_denominator 55C:push_nonnumeric_factors 55D:push_constant_factors 55E:push_nonconstant_factors 55F:push_dependent_factors 560:push_independent_factors 561:push_but_factor 562:index_rmng_fctrs_start_fctr_tag 563:index_rmng_fctrs_start_base_tag 564:index_rmng_fctrs_start_base 565:index_rmng_factor 566:push_constant_terms 567:push_nonconstant_terms 568:push_dependent_terms 569:push_independent_terms 56A:push_but_term 56B:is_polynomial_in_var_or_kern 56C:is_totally_polynomial 56D:is_neg_lead_numr_coef_re_part 56E:next_var_or_kernel_index 56F:push_var_kern_tail 570:push_poly_deg_in_var_or_kernel 571:linear_degree 572:did_push_lincf 573:is_positive 574:is_nonnegative 575:is_negative 576:is_nonpositive 577:is_never0 578:is_equivalent_to 579:and_onto_top 57A:replace_top2_with_and 57B:or_onto_top 57C:replace_top2_with_or 57D:push_when 57E:lead_disjunct_term_index 57F:remaining_disjuncts_index 580:lead_conjunct_factor_index 581:remaining_conjuncts_index 582:push_but_conjunct_factor 583:push_nsolve 584:push_solve 585:push_csolve 586:push_zeros 587:push_czeros 588:did_push_series 589:push_min 58A:push_max 58B:push_desolve 58C:push_div_dif_1f 58D:push_div_dif_1c 58E:ROM_CALL_58E 58F:LOC_getLocalDateFormat 590:LOC_formatDate 591:LOC_localVersionDate 592:FKeyI_H 593:is_constant 594:push_sum 595:push_exponentiate 596:push_dot_exponentiate 597:push_reciprocal 598:push_min2 599:push_max2 59A:push_expand 59B:push_comdenom 59C:push_factor 59D:push_poly_qr 59E:push_gcd_then_cofactors 59F:index_reductum_with_tag_base 5A0:has_different_variable 5A1:index_if_pushed_binomial_info 5A2:index_if_pushed_qquad_info 5A3:push_equals 5A4:push_not_equals 5A5:push_greater_than 5A6:push_less_than 5A7:push_greater_than_or_equals 5A8:push_less_than_or_equals 5A9:is_real 5AA:push_not 5AB:push_and 5AC:push_or 5AD:push_lim 5AE:push_1st_derivative 5AF:push_nth_derivative 5B0:did_push_approx_inflection_point 5B1:did_push_anti_deriv 5B2:push_def_int 5B3:push_nint 5B4:push_summation 5B5:push_extended_prod 5B6:replace_top_with_post_simplified 5B7:is_undefined 5B8:did_map_aggregate_arg 5B9:push_substitute_simplify 5BA:abs 5BB:div 5BC:labs 5BD:ldiv 5BE:push_substitute_using_such_that 5BF:estack_max_index 5C0:RAtionalize_tol 5C1:IM_re_tol 5C2:ARb_real_count 5C3:ARb_int_count 5C4:ROM_CALL_5C4 5C5:ROM_CALL_5C5 5C6:ROM_CALL_5C6 5C7:ROM_CALL_5C7 5C8:ROM_CALL_5C8 5C9:ROM_CALL_5C9 5CA:ROM_CALL_5CA 5CB:ROM_CALL_5CB 5CC:ROM_CALL_5CC 5CD:Integer0Index 5CE:Integer1Index 5CF:IntegerMinus1Index 5D0:Float0Index 5D1:Float1Index 5D2:FloatMinus1Index 5D3:FloatPiIndex 5D4:FloatExp1Index 5D5:index_true 5D6:index_false 5D7:NG_such_that_index 5D8:ROM_CALL_5D8 5D9:errno 5DA:EX_getBasecodeParmBlock 5DB:WinStrXYWrap 5DC:RM_Type 5DD:HS_FirstFIFONodeHandle 5DE:HS_MaxExpressions 5DF:EV_flags 5E0:FloatHalfIndex 5E1:Integer2Index 5E2:ROM_CALL_5E2 5E3:OSCheckLinkOpen 5E4:ROM_CALL_5E4 5E5:ROM_CALL_5E5 5E6:ROM_CALL_5E6 5E7:ROM_CALL_5E7 5E8:ROM_CALL_5E8 5E9:ROM_CALL_5E9 5EA:ROM_CALL_5EA 5EB:ROM_CALL_5EB 5EC:ROM_CALL_5EC 5ED:ROM_CALL_5ED 5EE:ROM_CALL_5EE 5EF:ROM_CALL_5EF 5F0:ROM_CALL_5F0 5F1:DateAndTime_SetDlg 5F2:DateAndTime_Set 5F3:DateAndTime_Get 5F4:DayOfTheWeek 5F5:ClockOn 5F6:ClockOff 5F7:IsClockOn 5F8:Timer_Start 5F9:Timer_Value 5FA:TimeZone_Get 5FB:TimeZone_Set 5FC:DateFormat_Get 5FD:DateFormat_Set 5FE:DateStr 5FF:TimeFormat_Get 600:TimeFormat_Set 601:TimeStr 602:*readHandshake* 603:*writeHandshake* 604:*startBPTimer* 605:*stopBPTimer* 606:ROM_CALL_606 607:GetFlashMemoryEnd 608:ROM_CALL_608 609:ROM_CALL_609 60A:ROM_CALL_60A 60B:ROM_CALL_60B 60C:ROM_CALL_60C tiemu-3.03-nogdb+dfsg/missing000066400000000000000000000240361220314353500161670ustar00rootroot00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # 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, 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. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing 0.4 - GNU automake" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal*) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. You can get \`$1Help2man' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then # We have makeinfo, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; tar) shift if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 fi # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 tiemu-3.03-nogdb+dfsg/mkinstalldirs000077500000000000000000000037041220314353500174000ustar00rootroot00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" 1>&2 exit 0 ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac case $dirmode in '') if mkdir -p -- . 2>/dev/null; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" fi ;; *) if mkdir -m "$dirmode" -p -- . 2>/dev/null; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # End: # mkinstalldirs ends here tiemu-3.03-nogdb+dfsg/pedrom/000077500000000000000000000000001220314353500160545ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/pedrom/Makefile.am000066400000000000000000000002321220314353500201050ustar00rootroot00000000000000pedromdir = $(pkgdatadir)/pedrom dist_pedrom_DATA = pedrom*.tib pedrom.txt EXTRA_DIST = pedrom-src.tar.bz2 uninstall: rm -f $(pkgdatadir)/pedrom/*.tib tiemu-3.03-nogdb+dfsg/pedrom/Makefile.in000066400000000000000000000321121220314353500201200ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = pedrom DIST_COMMON = $(dist_pedrom_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pedromdir)" dist_pedromDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_pedrom_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTODIRS = @AUTODIRS@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLADE_CFLAGS = @GLADE_CFLAGS@ GLADE_LIBS = @GLADE_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GROFF = @GROFF@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INCINTL = @INCINTL@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KDECONFIG = @KDECONFIG@ KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ KDE_INCLUDES = @KDE_INCLUDES@ KDE_LDFLAGS = @KDE_LDFLAGS@ KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@ KDE_MT_LIBS = @KDE_MT_LIBS@ KDE_RPATH = @KDE_RPATH@ LDFLAGS = @LDFLAGS@ LIBCOMPAT = @LIBCOMPAT@ LIBCRYPT = @LIBCRYPT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBOBJS = @LIBOBJS@ LIBPNG = @LIBPNG@ LIBPTHREAD = @LIBPTHREAD@ LIBRESOLV = @LIBRESOLV@ LIBS = @LIBS@ LIBSM = @LIBSM@ LIBSOCKET = @LIBSOCKET@ LIBTOOL = @LIBTOOL@ LIBUCB = @LIBUCB@ LIBUTIL = @LIBUTIL@ LIBXINERAMA = @LIBXINERAMA@ LIBZ = @LIBZ@ LIB_KAB = @LIB_KAB@ LIB_KDECORE = @LIB_KDECORE@ LIB_KDEPRINT = @LIB_KDEPRINT@ LIB_KDEUI = @LIB_KDEUI@ LIB_KFILE = @LIB_KFILE@ LIB_KFM = @LIB_KFM@ LIB_KHTML = @LIB_KHTML@ LIB_KIO = @LIB_KIO@ LIB_KPARTS = @LIB_KPARTS@ LIB_KSPELL = @LIB_KSPELL@ LIB_KSYCOCA = @LIB_KSYCOCA@ LIB_QPE = @LIB_QPE@ LIB_QT = @LIB_QT@ LIB_SMB = @LIB_SMB@ LIB_X11 = @LIB_X11@ LIB_XEXT = @LIB_XEXT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ QTE_NORTTI = @QTE_NORTTI@ QT_INCLUDES = @QT_INCLUDES@ QT_LDFLAGS = @QT_LDFLAGS@ RANLIB = @RANLIB@ RC = @RC@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TICABLES_CFLAGS = @TICABLES_CFLAGS@ TICABLES_LIBS = @TICABLES_LIBS@ TICALCS_CFLAGS = @TICALCS_CFLAGS@ TICALCS_LIBS = @TICALCS_LIBS@ TICONV_CFLAGS = @TICONV_CFLAGS@ TICONV_LIBS = @TICONV_LIBS@ TIFILES_CFLAGS = @TIFILES_CFLAGS@ TIFILES_LIBS = @TIFILES_LIBS@ UIC = @UIC@ UIC_TR = @UIC_TR@ USER_INCLUDES = @USER_INCLUDES@ USER_LDFLAGS = @USER_LDFLAGS@ USE_NLS = @USE_NLS@ USE_THREADS = @USE_THREADS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_INCLUDES = @X_INCLUDES@ X_LDFLAGS = @X_LDFLAGS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ all_includes = @all_includes@ all_libraries = @all_libraries@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ dbus = @dbus@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ kde = @kde@ kde_appsdir = @kde_appsdir@ kde_bindir = @kde_bindir@ kde_confdir = @kde_confdir@ kde_datadir = @kde_datadir@ kde_htmldir = @kde_htmldir@ kde_icondir = @kde_icondir@ kde_includes = @kde_includes@ kde_libraries = @kde_libraries@ kde_libs_htmldir = @kde_libs_htmldir@ kde_libs_prefix = @kde_libs_prefix@ kde_locale = @kde_locale@ kde_mimedir = @kde_mimedir@ kde_moduledir = @kde_moduledir@ kde_qtver = @kde_qtver@ kde_servicesdir = @kde_servicesdir@ kde_servicetypesdir = @kde_servicetypesdir@ kde_sounddir = @kde_sounddir@ kde_styledir = @kde_styledir@ kde_templatesdir = @kde_templatesdir@ kde_wallpaperdir = @kde_wallpaperdir@ kde_widgetdir = @kde_widgetdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ qt_includes = @qt_includes@ qt_libraries = @qt_libraries@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x_includes = @x_includes@ x_libraries = @x_libraries@ pedromdir = $(pkgdatadir)/pedrom dist_pedrom_DATA = pedrom*.tib pedrom.txt EXTRA_DIST = pedrom-src.tar.bz2 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pedrom/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu pedrom/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pedromDATA: $(dist_pedrom_DATA) @$(NORMAL_INSTALL) test -z "$(pedromdir)" || $(MKDIR_P) "$(DESTDIR)$(pedromdir)" @list='$(dist_pedrom_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_pedromDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pedromdir)/$$f'"; \ $(dist_pedromDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pedromdir)/$$f"; \ done uninstall-dist_pedromDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pedrom_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pedromdir)/$$f'"; \ rm -f "$(DESTDIR)$(pedromdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pedromdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dist_pedromDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pedromDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pedromDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pedromDATA uninstall: rm -f $(pkgdatadir)/pedrom/*.tib # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/pedrom/pedrom-src.tar.bz2000066400000000000000000010713001220314353500213350ustar00rootroot00000000000000BZh91AY&SYÍLa ÎËÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÂ\ˆ@\@•fpŒdmG¾öÁ9Ðç®Û½·w½ª¯L–мÍ(Ƚ¼ºôklsÕ9ÓaåÖ³gµ‹mw6š•cº[»wvÄ<÷À¡G“^ìêñ`®ÚÛjÃGvž£·{ßn¥ Jû TWÖ¸Ô®€M…ØÝ[³fœZß;‚¨$«ìhª[í@)vÕ)M³C}»`è(×Tôûîyè«Õä 9Ûïw&×ßsÏÏ£¢´ƒ­€@  ¬Ù‘¶ä®·j6íkºå¾}"€©$J^ûÙò- ¶ gm C ×M:ÑÞïI=ˆÐ­#àР²`@ LÞ÷iÕ<ñ/m; ($u@Ð[³èÓ§ßw}óÜé벬¬&«×o·=0úÀuCBÙA¥1Èë@é^µNªHB’Õ²5£ï`÷nê©>a›‰›Ã{g€u€}c>ÀèdÞÚàhv+ßP¾ó@(}¡Hô\Øv4>ôÜ›wÞâ®D² ¶‡ ÊLžªH’pžíÝnƒÐÙœ¨§`S66²Ž¾v¶uª!à–ÌV†zÕwn­™®›·s]»ìtõY4[»GBš õ€vÒ¢¨ë]÷ÝÞÛi”)F‡p ]Ø}kAæ0èªJ¨Pä(©žöðzk!EœtP¢E¬w»ÎÀ=Ö”&Ýœçª'˜Ä_>Ì·¹PënîÑDÙtØ»¨äÆ-–ô3mÎçei;ï.½÷w¾„¾÷Ž¥6}öÚùÜ:õ*»äËÆó¾†ûÕïm_f‡½“ëtÒûnyfÑåÏ6}÷­»]k†Ö:§os¼=ËíßNï–ŸQ¨é¦ƒ={Œ•ùÚmÝ=’‰ì{¯<¶»lîï·_WwÉ'£}®ùÅîå1­k½Þï:œöÃï/n¶­ç½€:o]ÅÎÎÕrí:2aÛ˜é[­O¶w™"HgÆqO{Jà 2ë¸ lë”*Ý·+B‘A@¨vª;ßAœ@ÖiõÞ×f©ÝUÓµÜjƽV®zÞ½ÝÕÝ‹ÐI¼ÖÞÛ¯sw6útí¾ã¦eˆ¾œ‡L‡ÉÉÛkÖ’öï]Ø-ñ]­½^{=ib%”÷tàÕI+Þß}÷ööß}îÌÛîç*Ýö;Ê6Û×vgÚÚrµ+§@íwpTûb<Ô K*ÞáïeìÖ}¸Uy÷ÝG[Ø+÷=÷¾ôÍMo·u0Ñ»ï=x/\_l/›-—¹×Ù¯kÞ÷©ìŸg-ÊݬåFÆ…îêìNÔÏ…Ö냫íír—¹qÐ9 £L¦§fxö®”×ÇRç]Mµ”¯}ãï|]³ÝÐ ÝÍB}íÞØû=óÞ£Þô=v- ­¬ž·zuè>Ÿ_BÚ}©¬%O»oŽâ½à¾‹ÚÝÛ·vá´O€hôÐ ;z©í:5m•>{ïyöh«Uc®¶Í}è·¨zÈ;šº°Ù½: fÚàÛ§´=sÅ@÷½Ÿ/w•[ŸVÔQ£§#®ëë§Û{æµïs{Ù /³}ªÙwuzmáÕmÖ4vöÒ½â@«CµÜîuÛ ê»¹ÃMe;Ûžm ´ò÷½C¦‹-{µ‹>¨Æ«»|ó=|°ië£ÛŸpRËž‹œîó¾x{ÛÖݾÃ=δÞNvã»ÛªÖœYßuíìÝe{Û¢Ñ:w¹×¶}éë¯@íu€®Ä‡ÙèïwîÝUÑTõ[^qëì­uËK¯Zy¯w6m]RÖ(¦³mßÀҀ볠í EI +—]:({Øtô¶i£@2˜Ðß½á@{ícÛîÕD`éôÅ Û­îc®Ï§ª.úîv†‰¶Öqs«¹C½Ê¡ÜF›Yë!w¡ Qpê^™Ë6û}¦…ï¨-Óï- Ú:c³¸ÌFêßE÷+ßbj¨kƒÂ÷¾ÞïuÖí¨¤ÚÚ«Û>ÌóéÏ;½íí;‰mÜë¶ö¼{í=Ü †ÖßvÛÔò!Q P‘ìÅ£YóuîeÄ{Û–Ôš”¢V{u¹÷wlÚÖtÕÉÙà;ØyÍÀ5˜vnj[ÛÍšíž uf¸èç€É/­ó`¥^­V)ª( Ò¬µ¶Ý¯\¥ÞÁ¡ŽKnVÀÚwn—Z·CI²A½tމ6önMs·vÝí®Ö3*(7±„{X¦؀ë¸mž¸WfòÝX¬l£IÑIJZ»+€Û:ët-Óµšë¸m*±“µ«Û DûÀ}ìÄÌÊ}PÖ뇭Nc‘ª×.µ$ƒGN»lGXîÛnumÓ‘·Hà»u-±ªÓ·`vÙ¬ùÍÛïx¹í7y×µ–)÷n½ztT•{µk\:Ü`Îú¡–µÈ§²×eëe¹ï;ÐauÕG¹uÔ§R*©vŒ¶Ìä×%W[·[j×N¤nÝ!]8i–b´–óÙ‚ÎàéõY¶é®½±ÐÅ@ﯹ÷׉z³Û .mkë7Wm¬E̩ڊ:uNû¼ànîíÎÄÖìÁ«_xÜ5)A’¡[ØÕ r‘@)ݮæì|=Þx{èV-²M¯‹_\q+Á@0žnGñ3°tU;×@½å4°\Qº­©cÃ×(.Ã×X­ÜâS]CË7s¬º®æå”gG}¬ï{»»in×MÕݸ권t5ÝÜQ«ªû{Û[ ùˆ•¹ô¾µ» ´l›ÙÆú¶]Üï¶=NÓ†š &@  šdCF€€4hŒ“ÑRžž’=@h 2 $Ðh& §¡êG¦š™Sñ4Ô42õ #@‚D!50# Ò› )í4Ô6‰6”ñOÊŸ¥<ÓMCMM¨Ð@ =R‘!#MhÒ1SòQé“Õ6iL†ž§©šz§¢hž¦ƒÒ2ÐdB’ @L€&hS'¢m$ÍSM©ŠzQšzSÓ)é=M¤h £ “Q€€L€4 ¦M221ªx4ÔôÔ øÿ»y}ë]§ý7tõÿŸL¾¹ÿó÷ëô­§ìûÛþûl_ü´í‘²›¬ãwÿ=¶hZhÑÆ—SŸ}uBýk‹½Û–ø²¼]ÿšÈÝÿýÿçße"á²G/™ÎÓ¯ééýûºgo²ò‚œˆŠ{'*Zã.¢ÿ†4ÿêÍïÅa–úÚL¸ª’ßü¢YŒ] 8'= Q×c¿h$¿¨ €3ù1J6™}¸aEMw*íß ÿ«G«dø¡Á8»?C«‘éÖøœÏ;=‰ò°çʲûßûÝR?7§÷qÁ¶nŒéqÛÊí•æÉ£üÜ=Ýx¡ [>6gV|Iyç|>J ¤3ÑDž])`rNÔ<ÌíuM³\>ÕPéI½Ëiñ @äñ4¢w6ëÆ¼Þ-7áCš.ÌEzÐàÊN¥}3–Kêÿ§Šöbz<æeÛ݉¿³4 òøÃß"‡Ó×…<·È—Û'àçìÒ‡¦CN…Ø2Y R-½Î}VdcçO?¢‘J ‘q*ƒO:’]Æç@)ÜDÊ @þ³«¿’ö÷ ‡á¿ÕÏÖ Ô5uuÍíœC×áåö9ò€þý¡j¯<"á¯B÷lr7iEä]¡ò,À3XïtàÜ£¹ù¨è%–orwS&Ã+Çÿyõ9¾¥ ;Ÿ!¨©¤Ï»(Â&|û:©˜Š†‡`]í,œv¯÷;G'ü½¿yÇ'/°…èþ0•«æììýnIÄNÒ‚M)¯þjû<Ì €«r ¹Ôõfóï|xýCå1òœx’ɃŠÁAb"°b#¾¨"‚¨½d}‡ø¶ê°þ.ºÿ NiÜÕЗ©’b]Ë£vóežáÚâó_ïóýÓúÄx{¾üŸ³;r9¿ªNÙÚV•(QªµuT–ŽÙcq–¶Ù%$§ñýÇØÀ¿4„Ó{½{öu£§ßH4©MM<)w—«6ô%Gù€k¶ÚìµÓëééÄ”;yÑh NG ØæñE<²›½¤^ ‹¹{·z_«’P] ðª›xÝáÔvžO“pü¡¼{eA6$R„,€Å Ùhû?³6á|gìNÎúóþJ ûþ&‹o¹‘Îú˜0kGîöízwÆJ|ê¦J‰ÊáÈ^>‘ >,äÐ?qò4“¤}û»êÖ3ÖµAjŒÛñìëá8FØ8X…X/Óû[Ì ƒPBð‰´€”Œ(AT]«Š[=‡ÜXí6²@2Mv„ ´À„‘d0üبæ~OOŸgw¯Š‰çCÖÙ#!=ÄÏ^{ý¿øø›e“Øc~é)º¨¬$^fÀš±p(¤ƒ ÂO—J¸%xŸ6.ïóAñûk9ô?ö|†7ÎfqÇ STù1q·“#ôɾ…1¦,‘ÝÝ+»ãϺ·ìèû¾œ¨Hdê÷üºmÓ×sE¬ó¯ù\Ð~þ¿Œ»,0.°Nú›µÅ?Kçò_Ë›Œcѵü½0)qÕöãEÉäñQ¦rlQ1"²…üJ|[btCdAùó ºoº$ßàÍh0‡ Âf@‰ ¿ƒŒ L-<3ú~O‡nÿÿ?Fé¾~vr>Ë®ì™,dØ“h¹Æ@¦uiû':3ä>×]ŸƒêLé\C“$œH€ Fš)d¤é"0P!̱D(4æäÎ~P •€bè_Dµð0}ª‰HQ¤†‹ òwûo»Cµ„è­è=ÝÚàâÈò¤¬GmÜþ]ŸzŠ[`â7÷,àð-;æâH™|ü­“®³+¯é>/Õ®z^KMy¯Ì¦ÝŒ›È@ÝD`ƒ þâyŸ»‰ÞD#£ ­þG.2žë8a•„  ÀÅ‚%5¬¾‡1²ÐܸºšÔ€ôAiìÅø8Sܪ'`Ü“ËÆ‰-'Vï__˜ë³ 穱UXj ÉÞ­ƒ¡×G¨A¢£´Å-+·é0`N5]ZùÞ\¯¼\q½s Ø Fîú2Í~"8‹ôòXõý¡‹¨Ÿ¡Øó¹ãÒþÖôïõXyÞ¸cug>úÏG™·>¼Ÿ@þMawžõÚêPÊ*»›{tMyJ$¥cX‰í&9*gCD>ÆO2C8ñ6!áØ?n•Ÿü:jJ¿ý¹oغO}ˆÊÖú¦÷‡¨@è"e>gÂq1‚ê” Á0ï\˜Îܱ>³¬€M ß«(¸'äE¦ï¥QdÚoêÓœÚ[x0IlÏ ³ï}2B@€~ß»úwû{±©ú_ŒŽÏöý ºçöÂÅÿÁlxE@ÿÍ\Éý6àãû°ýþ¯Ãú/œÃªûÅ¥ßò1;' bÌ*bãòP’¢R EꊥCþCý48>ÿdÍ>¡® …#k.qþÛ0Üá ïk5xB_ò[ЈOpŽçß 9ó‘ïôÀêbÿìk^¶Ð‚=t";—÷?D dO¿-‰­^øÄsH´öLꜣôPúÞ1Pº¥·~§?6àýk3&©×«sGKhrPžÎD`@ÐUÎеҽ„„5åg1 ×ÄzóE}vJ÷´CC5’®¨j°‰@çföu)6'©du6œÇ‹yy•’sñ¾2,7…>ÔõÝ;X,Ccßîˆ|¡eïìGùXÁû$!¶U#j¸‡RÇ:üvà{”þtÇÂPÉó¾›Ú™ïýlëÿÿÚÅ @0……æ{ óHÊ&½½.½œáŠ)ÿÍ"ò€å m) ‘^1© .VЦ·PˆjåÿÑÖ>…M[¹'\`B:»¤ø^ûá¬F–N:ío¬´CÂÎâ§2¨âj1[a`M¶±ÍEzdãa pÀ^@O ¯˜ñóü‚ˆˆˆývÕ\ª$3ó?@ñ{{»¬ß¾ vÍåɧ¢¬ÞF˜Ž«ñ7Ì Š!±m H7â8âD¶JIÿå¾<Ð! &Ü4ß+¬á0ôÙ®×j ÿõé«¡«QɽK³`õZAüþ2ê”mµYUÏX[Þ²_?Ÿ½ó”[Ñfì’ân‡c’+ÊŽ–szÇ‘Bâˆ3öB ðÐ=fý%†ø·"~Ú.#| X2Ä1V‰Sƒ9Øáì\ß2(ái¬«>|=Ýk™É^fousz™‘5Pç,ŽK. âU$ g‚o嬢«40GÉ¿ß$wf¶9ù‚7yBABŠp 3*@Z¶ôÑ“¶,êUE›Äm Î—Nl™Õ¢<›\—„´òÓ¨¦]Ñηï×–$J#8yfàßú2ŽNXç!¶é8æäs x5HÐ2uŽëÙ½ê_§å½D($Èè#yF[ÄȼÓuˆ¢2 Cžrfw©]tžàª¨ŠuÓý_ïÿ…áG°/ ÁQ£­ÈÞñ,Aïò'Æ0zÚªýœÔqpS¥Át¯…ÐVC‰—Cž\IåxV6Å”Ž`Ûß$—ÜG²ºì› š^u{#ˆäL|#Ó£¿W-ÕÀw6¬°…§¥:ž½¨ÇÛÑyìÐ-·ßAKú(Ê\ª3e_¸:'èà  ¢öùwÏçrŸW§ÿ„]§?ý·í±ð ÈDZtÕO̰Z×og_«ß¡ëp-òTáÑ^<9ëlX ¬׿î½Þ¬BÊç×Ù(¢“ÿí¥HÚ ŽéâñÏ%ä<„fë›(ÔE¬ºt,ÌäT}Ì@ëÛ6øÙiľ0y0NštÎr2à9¢3~|CÜ[{@ÃÆÞï8ü†í½Ü@QœqÅdmŸÍNžšôê=Ìq³+¡qx?!¥žnȪ@Ôyu$ "–®ÿ3‰HƒÐT2©ž,Æ T,6Ã^hÁˆ'‡VLÈO' 5"¬`«‚)ÐÐí¬¤«2k#ÖåUy)Ÿ>-î¾ú{"s£>¬øØy¶RA¶¤ ±=8L[‚£ÙO•¿¯Ä)Zÿˆ&êòÞ595ôè¶Þk,ç–ûT]r(ÚT ªÀu»çð1?µqMh‡Ñ[š¶üŠO&}AØÈÏft滟ò@½U9J”NÍײå§uãÖ,u—èç:ƒÒÊ)?s»âñXž5[Dp© ×tm÷âu%±áQmF{¡†ésAý_Ñþ“)œ?¦FïQ'oî ùÜí¢ÑÅàû’Ú‚Þ éË.ƒª|g¤*‚8k‡]q³†šƒÉ-X½1K©J*ŒhDÝóâLæhÞj´¬žQ²ziuHÏ~Å|ÚóŠxQ¯ñfµ° QˆMŽâ QÂí®~u«_˜)YæÁfÍÒ›zÐ)&Ò#H =ÇÊá~{¬n´4ÊÁfüÏËè_S :H+.õ ÁÍE+\ƒ}½4„œU¦P<9ŽRK• @É×èƒÚÍ ~¤2ýgùBŸò¿b2é°>(b¬ܳŸ£ŒÐYœ[ Ø‚)ÔŒ;4-¥w½ʈ3 âPkpæå›Óe9-w1¼‡]™e½\„>W¢"Y]íÜ1ø¡°„6 ¯9ø‘FÊô(±e‹ Ã3+¬ø2WЇ‹À*•ÂŒ,È(5CK-Å•AST]¼ôW öÜèf·Ã†/ÌÐõib GËçèÆ¦}vªšz.ÅñR ¨Â" (>ËKûqQVAùž¿%SåüûtüM §ôû>Æ«÷¦Œ$ŠHFHɨ¦þ:¡¦i³LŽîWº™ƒN†íÎøNßGÏñ”[w «_¿`8Źð oè³!Z„ßR긽O³Ë\‘vk{oêL&Ÿ%ÛÔÑ”Sº‡nKÛà£Z&«HN½J BzE®Âo@+9ÕL <[fÄüµGÉT ›&èÚšù¯Äœ²j;»¢‡5Ót‰O]Ê1P(X{ßO¼ñÙñqЉR„‡(ô ÁÃÌ7LqsQHIƒÅBŽÎ&!LK„%uç¡_ŒdoÞ…ÑLxâVò»]‡Ø>4|ZŠ5ª¸°à„É« ’Ôéq×¾Ý*N MÕMü¸)U'eÉ“O[é?[Èô v!‰×Õ—‡¨—÷<,¹3z/}áå EÈVJ¥•ì¤mæÉ“ÞazfnHl2W[àm§™áÕá”ö{çÑ>¢÷bùs?.µáEáôÈV‘k\AFre)ۨǦ¡Ý’´íÌ“‹çå?ýQ:¬´ fç=èPPñ»ð!º³qrÇ¥œqøžê‡ <¶ ï)î¢RsÌŸ—¨sçAƲþÐñ¢å¤ïÒ}ÆÏó†T…⬛q]‘ö9Òq7+‰1U'µAÑc f$d4è˜yX”z*QÅZÖšã‹[r†eÆS >Þ„ÁÂŽÄ•&»·ñõ~0×—ì­Àª™¡ˆ‘ ÕÕE1 =éÁå>o_ÕÉœÖIGðçíÁ>v¨ö84GÅ I ÿ , í¯¾ß/D".w› á¼öHaÊÇÒG_oª[wÂcÍ›zv½Ëî²?ïÝå~óºiw</•·ivÅÏšÜ|ž>¿/¯Õ«oG.À÷†sGO;rñadz…½ŸBóB6ŽÈƒcÃû ~~îœe*>ÐãæíídømTY•'ðâþ­b¤ÊÒ¥_‡ƒiŸÃ#’“!k0èÏ–v¶^/åüß‹]ÈÐg\ØG„6HFÄQÅ].ëVèd©–ÒEýEº¤Ð‡ø]¹R15)  Q›I†B–Zj˜¿×ÇvƘ^»©›&0ÊÞ5ç •‚°h¶þ³‰´NWiM¥éßËòíäÕË"[Úí)"¤mítY¢¨E™˜ÔTE&”ÅŠƒEi6‚Ã$*ŠdX°•Š Q‹ Q Ô%&6ŒQ¶5#+2¤ÔX±¤ÓJ¤‚£je’žk¥™ 3b2k6 ˆ£h´c@Œm&ÔE3X1b1œï“½u\ÅFHM]Žê’M¤$C$WÃ…%™B’Y²5A¢Ø´‘hÚ±zëµ¼ë¶JÞ5ÍRmñÚíÐQÍ’¼î¨–[—PÌ´˜¿—®M"R†ƒ[gÏ;DΰÇ11¥™ 6&×_£öwŒËBdMôn#´ù¶æJ¿Rºjù«‘¯N%Q.ãILÔo\i´ßÒëÛÅss Œ˜îþ§×Õä3*Ÿ|yÂÐ1'fØé`(L%0"H"›î[¦Â•C*R Îù¼h«Ï]rõs’Å嘣]:uJ„fï:¯Ç3îu“ÇÚÅÛF (Óî£#X-¨´$XEF(+¥¦Õ#7•Óõ AÒšÛ_/;I_&ì¤,–‰H9¹WÙÕÉ¥íÚ- j¾Åu¥¾¤¾«l ) 302ÊÚÄ4Y (¾mÚó\”[ó÷ÇsšW]$W/PbVAè¿Kªn9â¿\ܰ!Jn_]€æÃöÝóõÙ&¸©Ô…v ¥[èöi³¦øE/ØÚ¹)’LîÛ–’"¿Æ[\‚ˆÁк D½0Ï0»s'ážÙÔ”µçƒ"–$˜µ{﯉µù[É>‹pªõøkÂ]’‰‚†I å¦ã˜ÀQø4(>XF67¶æÈÌÉ8}S. s:f4]H-½%à¸F±ã&Ÿ¹ÐÐÑÑ" Sxb¶ ´6Rí9¡8ï€m14xæHnZåóí盢4¹®Ä×ï;Ã|œÒQ}UÒß ›DQHW·(¢”¯š¯;­x”Ù†Š1¯¢å|û£bfÅL¶"7¶»r»GwWÍrÅIsÇ-K•DQÏ»§ÆCD\ãÉã¡Õ&ÑH‘™¨®wŸ?.UãÝË…Ñ»ªü0a(sª‚ªå¦,™hdÌ0&'»mi"H€á&BÅíÒ.ë·ér)5ñ«š110†‚YJH¶ÍíT2ž‹ ´)ð°ß߽̇[Hº°¢„©IBF‚JÚ×1lwu¦š¯·¸2W(›œ.I®¼³lv—&&uªa¯¥ )ÍÝA–.¸£D00ª¨õÁ• t¸G\m$žlrh çgv‚úê¼U_z¾ó~z ìº"íè µU"¨-2‰JŠñдßÔíÙjY$jM¤‰M‚ɶý_—+¦ ?[¦bÅ~=v¯Ì×ï·5G¦¹£b«á¹-rù«n65Ž˜ K_gƒ²íz‡èº÷™ì£ò»´èêÆÈäùRsBÒao—Žn¥š;ξÝqÁוE5Íeä<Š@Ñ 5êÄYª:ƒ¡H€—“ô¸£I¾«×R³Õt>ö\³®)çI…‰×T Å:Dˆ)—þ­~ ñè²#K¤®‘ÁãYÓêòè_ÃLo]ÅkX/ÏZ³q¢Õ“%VR £.d0ã%i$³w6jÏ7rM¥yÒÑêvû½=0ÙÊÚS®[LÕtj»Ôžýͳíšù<5âû÷?ã‹àÆÛNÉj©ÃM±óö`ÜÌq¢Ò*ÅU"Ks_™¿Rñlj4FÅhB¥*Z鎉ºYrûXRÖ¡^j"õRƒ¢Î %6 bÒÇú`°ÎÖLˆ!lR‹mõÈ᦬ ÝÒ‚X{¼¡ÏþÚSá9/ž )! ¤bZYj™¶’ÊjÿIÉ6Æ­F"JA¤… )?Ñ(o¬?rïÖJjj$b”Õ%2M¤Ä› ¢É£bѨÙHPdd¯1 =‡f²@4¦É`uJŠ‘b•¦ÚýH_™ÏÖÜ¢© %^œzîj-ä+il©+6Š/MW/ÉùìKWÛìWŒ¬¯o ÒšÞL @ùå Ô´„TÀoäAý:À#hÛCZÑ€˜²Ž±Å*ª$¢":îã´ÔFŨB–ÇZÆu3t L2pS (@¡2rÉq4“Et´¹¼“XÕÝÚ¹µÅÞyñí×Läqàš…â@£„&¥5* C´^´Ð4VEÀ0jVãKm*ÒÓc»uÛE´Ô«d’Ïj:î™Lºî®v3k¼\òêRç2w;«ÂrêwW7]×’ºY4¼ŽºY®•wnŒœ§+¢c hèì+J8Ф€ØFVxÉs;¼j ”…ãW*ë¸çRgŠå±Šòx¼›<¾”†X ÄʧPÑ5#mL%xT•oSClM[mŒ „bÈÄÆ„åŠÒ 4âpbŒ% –§aZ¬¸ "ÚÅ"ˆÉ¹FÕŒªÄݤlœ•ã ›ïm_7»kKân™Î{]2óˆ6£m¶›»awÌÕÄÍ‚!",¥YlFÔVP±ÍØàV%ØD Ä´ŒŒpFHãr±'œ»¥£wIº»¹)Ë‘rJd21APÁ„i´“eRm©B®ChÌœ“"&cË-"A s1LIag!”] ´®Ò:av0ÇQ6¬cFÄ)•åu·*;%:äDDDDDDDDDDDDDDDEÝÑ=uȈˆˆ”ˆˆˆ‰"Hˆˆ×"""w\ˆˆˆˆˆˆˆ‰Ýr""""""""""""""""""""""""'¯^^"""""""""""""""""""""""""""""""""""""""""""""""""""zû¼¼DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDGÑȈˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆžºäDDDDDDDDDDDDDDDDùuȈˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‹Îøºõµš½^‘?Ð⮊EÒ¨jò]wryþgݽ^‘66?|')T¬l~!7ÇÞ!:„ÌÞ´i!/d ‘$Õ-„„$„ˆ´´„¶ªÆÆÆÆÆÉ7IQÁÂo ccÉÓ¬lluZV9×""""'r"'uÈ¢Š(¢äƒ:i¥\Þî¼[O›u|¯’""""""""""""""""""""""""""""""""""""""""""""""""""{µ^™3÷~.ž"ˆÒXÑŽsDc|wb‹ËìïÌT-€( ŒQTØ»*E¤ý ¬R¬‘J¨ÄJ'OWÁf?™&˜Ü\>s×}“âJ4gı×ã*cñ@,ŽMn»»Ãë=w«Œ§usn¢'sµºîNfDWuÎd¤FmQÎ’k³nW.Ý×i«“£:qÕÖ]r¹Î¤d€ÆÆ6¢‚„µÿ>¸¤Þó0!Øg\Ê Ž|/q dÚ.®íD®u®k¬wEv»¹°Ws:.Âvëæ÷E{ImÞ»Q®÷ãwWv‹°¹p$Œ—ÏãÝèЛËpÖLð°16L`±\e‰$S 4Šbsœ]6rEºn½ÜEÔIY5TÚJ2 kQ´Ì`ÄUh̦ÌAQ&}®Ì’_ÁæÕ¶þÔ§1ø B€Zh¤Gùã ¢‰`ìÀõ¼ƒä¬‡C»~3-CÑ>KÆ)ÞodñÀ÷Àpãˆ>¸á?®ùeyÊjD~n¼0½!mŒP!û„íÃÑ+©A¥¹:ùàvHeoÇ@‡N\®NœÕ¹ž5Hu! yt5ÌHXuÚ)1møÕ.Qçsº×\ˆ±¤Æ¦™ )D ‰ñúu~Òj¢F BÐ&¬(ËMBÐ[™8f2^œPjNûð<ý^)ãûr]ÙöCøc2A’w;¶šcó_ú³=F8ø?š°ÀS²ºÍN´4ªR- Jk­Õ—ÝRZr•¿Êü_ÏùŽWôÝb±»=œçOUÊì<§{ÛI.øÊaßÊÚ0†4 †S6”Æ{UˆôÖ5° !Ášd4T‡¶ÄsCI5¬Û`¤vcÓ©œ 2‘·pÌ3ÄÉ{L™š ޶]¥*šdM6 oi»+&`fNÚ/Y­ÎXojŒ³b\1EÚ&©×—]]ÕçnIâíÝ2YLå·im×+i¬«©«š±Õ) 5%´"LÓd‚!ÒÊPJÆÝ•Ma—˜ جnÀ¢™’8X#U@À¨BkSÕdSüÉ8ŸS¤[ÆÂ4E¡’–lm´Ôb$´Sù€‘®vßͯ§GeŸ¿5­73ßk¾ì‡/Ç“‘É´f6Žñññ¤'ó.Ç¡°d‘ÑäƒÚzŒ¤4ƒ±À|Î š0ò6rräèØt3Ç‚›0††`ϬÂ!˜0âr7Ÿ´úƒÜ™±Èæ|‡d:J9æa‰‡ë0ò0äÂŒèù‡"‡GcäpÆ}'s€›Âhn67šÀ£‘Ühdþ“c™¸£ÖdÜ^eÉ g¸ÑCÔš?Ý=¤<ŽJrz6a…ät0gC)ì!ä`~’š0gÈy 0þ°†ÏóÃ̇¸aþR…;3f@ÀgaŸi²tA‡© Þ ðìCÁ±„ `˜lîB †(lc>e'3¸a¡gy¼³cCq°› cÞl}‡aGœÞ&§™üàvƒ¸ÉÐr:γ‰ä:M!Ðl‹°ÈpÀ¡°£=ÁÁ£±Ø§æ)ÜìwÂÐvº;ð¥(x9<cºcÜ!¡’ŽBQg19fÇÄÈhÄhwŸxÍÈlò;‡ƒÌаò6CÞp”ó0í=E¦†Æ â`ÜwÎÃ'cSS¸LœácþaâFAÇcB‡€D‡#¡BDŠ?œÃÁØøw=‡G´…9>&ˆ3¹àäõ<ÏùŽJlÙJpyŒÑ£A ðÏ”ÐÊ`Íò4{N ™ ò)£àtCƒ¸0í:ǰæp%˜;Ë;ààp(ÞÃA(ÁÀB˜pSÔg=J´ð2|H3£Ð§%îžD8;žÇ´<ìà§' h¥4ìh„=†¸„00 AžÓ÷¡þ`òa©ÒyK9 Þs:ÆBvž“Cë<ÇŒ47Åö|ßm{2êw>)ò80†Ä£°ÔɸO)ØxŽóQ2'æ'ÚŽ&§S¨ÃÈø4aÀCÔÈÈSƒb¥0Ø1žÃƒÁɳ`ÎMŒNÔô;΃ÜBv>³µáD¥Š#$O ïïL&¿ÕGòòû?¹0€(Šzª‘øÂœc €(Šzª‘r¼}X€þ…Ã?£—ï`lÇíTÕS«].dûÅD«ãºÈ’ŸëI@1?ÝÃ9A髯+®}µ%r”õÆ«þ-sõü†ŒP®º1ê£àNiÑ¥NçVùªÒaì¼0GsO™&Ÿ=JêªÍ )Œ`Í#`±a˾¦‡ƒ#ðcuÁL=NÃõíÔÜÐÖŽ,õ¦"9È•k¿¿_lS,OVbs¼šÁ㘧§2N¬ô]v³fpÍEò¥¡-X"¤ÅTbžê¯‹b”—ç**¨š´¯¢«õ´š´Ã”›Ï Œ=Dû%6eèK¼;Á¢220g£F úÎßm¹¨FœaéTí…±2!mõYV ‚¢1”d<î·ŽœðŒ 'xø£ìƒ¾_u¼ž¼9OŒ›NC¨£ ¦:/N,ИÎ-ùLÔ-› ½žöOk˾SIAÀ—…ÙæcyH¡—Ó;Äæ8gC!-Ü€§á¿%É_§K\ƒ—Ö¦qy°,ICãÇï:oCðH_]JcâÇ!7/VsÇ|6óÈ;CÆ)„˜{.‰Ô’’ ÜñÞQÖ2Ý­l‹ ' Hu¨'4:„¶=v¤ÛÙD¤ îÃÇ»7¹ÙnfúzA¢öË’pîÅˤšàͬ9°)„ÑB÷Ùði¥™dRK7÷i`04b”¢BÙ÷¼u83WFêáS™Û¶bùM²¢4ÿ<镇M#ÛžTôhË•Î2(ãíÀ9´Cnb',ʼÒúv©/2„I S2£ÛE$8¡„Êl2óU•£FZ‰Hµ¢nOítPFrx‰uÌ9búX‹ø¸¨éáÁrÒòÍøüW¨DRxøfþs<, ééñwòÒáI…p©-)äm0û±Ë:|»¬Õ2ÉÑÓYe'óg‘¶R05ÍEHaDíÆs‰ Œ/óÔÓ’Ô:Ùj0êO3&×µåPQCI®Yè“rhƤÈMÉhÖ.W`œÜÏǶ»ÎÜÑ¢DR’SirÝ•œ%^×Å'±È!© 09ÈFz°ÓÃ#Xm„m•Ô[çç[Ó•ÍÀ’^nÈW/=Yf0!g6%Vw-ò2³rŒîçPÁÂÞ>“×™¨u4OÉèC" æú^‚àsdâ–Ÿ3&¶P½ÏK‰øã h0É4IΩI=®w.Ÿ&¹·.Œ§s”Ãb¼øn¦¤‡™.`b”%2”½˜¾˜6¢"§„&Næb¹<ÚéÑq#â¢;ª¢#‡fþ‹¸l“¡™|éY¢Ò‹Ú˜C–*1ðaN6¯#Öˆ{ô£@NM–RÁIìCÅt±Åuò¨/žè‡4”’f‰bn|ؤyöÖŒ‡Ë3ÖÝU=´ZoMµi¼m ^ ¿‘(Õý÷BŽk©6G¾é.Ò­”ã}â ˆ¡~hËëŸ5¨‡s”Ü›øPOcðéÏ´ÇRLo•OAò™1àž‡Q1|Ke ¼ÓÅãðÕ ¬Ro)¨Pøî ô(ß2ÃõiV½1Újá¯Ë~n‹Å\ÕȽ2ª&®¬¶a™zRÚer¼Š€œ¨¢ªk¦¢\\«Yepð4tç⃓à äðËÙnsJÆKªFdJi¸ç‹ z¬»gð5ªL„HÛíii6÷ðˆ/®õ€¶ m£ÒÂÑb˜S\uÔ©®5¦sÍ/rKVîª !âf\‰0‡Ýðß>œüIá0’£Ã0µ_?ù3mú“_óå‚Ù46tß" ð©¦1r˜%1¡Ý^WàMèR|Œ5;¾Üz·ü½y×a!©)†¢Š¨!êJ «™ˆïP£pNƇÀmý ÒQ÷X»?4E‚)£íË¡A&ßN“É v’6Ç‹ò¥ëõÉÙÅc׉ₑùl\ÜZˆê½›|;K7Z Ü@üH± É,Bó üp/1µmˆ$l%P‘BeT±q0_“®Þ½“ŽÅ‘v ½˜Ý´X2´ ¬Œ–Hí#‚·¾R<„ßÎG¨J³6e+.pëÌ ˆÓ`M¢ÃIzö5Çöò4vÏÂ6 À 8˜¯nÜÉ®´­X³|;F1…M]¯4ᵄG°ª2 6ÉÖX4'4¸cB‹"ŠbŠÜ•|µÝƒ›S®-`cÏlÕzº×Ì´lxâqªªN™Œ–*¬?vêîgÇß^»¨y{(´ïb8‰(€EÝ«˜ù1 á(M½–|?®¶Py*°dâÈpC_«6w}ÕÜ“ :«Ïâ†ì÷\)êNÓÞå0!>¢“Ís?‰l¡aÝ©@™N7³&ÓÞìaÓÓÕpÜî詚§*Z[…ç¥ÃsãÝ¿¿»³@ãTtï¢lδš3“"Ì"™N²þË7kôùN¤¯O¿ÌÊ,YQ€û*‘=ºë^íoB5 ˆº–ŽÇÀRÙ™TÖAÄÆX¶bèZ… $Qˆû·LoŽ·Ñߣ¥®Ç æ #±Æ0¶õF¢?=WÃ#<‘XLÀt¹f‚W!à­ýû2޻à ÜÐ`€¼Xá(_Eä7xÎ5¹£žv‹ür°U‰ ã@F‡a Ö“ íB¥„iIˆ•!DñÚ+±:›¨F$ó#@’F<pï”ﺸã±ùžôaì@Ôp/NbHX$. ´ Æ,ŘŒ0­ÜŠÜUÊ๠i:±èyoR ŽŒm©í„^ÊÔˆ,¶wo!³¶0ă³…ã2Àm¥,?é»ýK]û76%莯R<„ äÓl Oêt BBVO~ 1"L¨m_OÔâa­j8Á´žë ÀÁÖÂH“–zUpË’*Ä?7zË ¹ßÛGçñ3Ш;‘•”.H  WW ½4Þ®îݬÅ~…Uuå*òÖXÚX\â 7ÎËÖòïTGTuÓg8æ5""Ç´nÂjP[7VÙ)X.šcܘIÇY«ýX%î×bŒ…³‰X—Ÿ=ñCºMýÆ÷rom¿ï Ô'=·‡X@Ò@Á$Jg;^å ÓŒ†ð#ÃFu44üµú¹û¥åÕpÈ…qEA¤vfaÃVÐ7À"…P01’k!Ù# Ð"¨>¾[cã²J-À±œ@.Ro‘Çí"…!~kϯnm*fV ¥SE†0’I°E“l¯W ½«›cm¾æÝ%ðÜŽv¢ù÷d“ßm¹‹!I±±%ü}ÔËö7R¾ÆêoȺJBEM&±"E${-üû.ˆ&Háéû06jo]Ôû®¶úùÓ6õuq‹$ IQ0 tVa” vçÇMSØ ;Âr¨§bu*‹ù+˜ö'jú,,ÄÖ±³Ë¤Ía’5´4BcÅr¨¯%¯ÝÞ<;ÍÔæ¸\¥ÝÝÉÍsF¥çŠò·¯^ºìq!”2…&Œ:X[”¶!E9ë˜Þç4¹Lµ,ªZ¨RS ª AÍ}£ôòöÊcÞší PÜÌ1_¹~ÊïVõvЖÛ&Œe6&”^Úí<ÝÚÜîÝd¹˜e,Nf`Rc™`[›¡Ù/["]uP[BС%ÝÙœŠÈ,‹*lÓbÌaKø)òåtÝTŠX2Ž:ën1B8ÛŽ0#+'C†u+‘–DàFÁÄDÓ®îÚ+Ór^6v·Ûb¢4ËemùÚçÝëÛ®¹%éx#+´aާløKHÞ 5" ]Þd·]{Þuêºåsºâ.ݸáÉY°R‘†Ù˜K3J@E+ͫԾëîßÚ ’¥ñØés„ÄÉ ÈyCÃEi¸É!ŽX—– aSH' BBp ©ˆñ(¦6ïÏ.mË´òêçQγ±Jb< ¸q©8Õ 4Ðb ©J¦@[7ÙÛ´Þ<¼Þ4Û"Ý'v¢J}+y}^¦ç]Üs½uʽ;Ç.r\¢$%HS'3åmò±<שoK†Ha9)–Y9¼d18:mצ¾K‰¤­ã;¹ Ñq°Š¾/»^•”±ªKFP ˆ*Ä4z#®K!‚±dCDÇD…%lÎ#‹ÅI¤°blFAŠ5M,¤P{EÄl!ƒ«»á:àX ™½‚ŠŠc##UêÏKM!Ž5 Û3mõ¨’jJyÉK|2(o1˜ÍPd G=$Ê1ÖtdbˆJ1y以wMÑäÑ^Ýoºmi‘P³@š•K"¸P ÙÖýK±1ˆ¥ ÝmÒÒ•¶Á6Ÿ|‰± Ã>+S5Ã$êŽvÐJ…#€_÷s}íäÖÛgªêüsåÝMëN1(ewÏK‡S„‚Áe2‘ Á¨n®ôú;tèÏ~/GÇGQ]r¹;d¤òjzÔ(æZ¥^ÃcFð´ó;}°|–­ö$ƒ$×FÕ¥X/²”Urº‘IŸÙPçQžZºU·û)¯oÊ]P(oÆxùv]Hö½X÷ÝLqw„_=‘ÒÖ‹•åǭ˰¸‹n³ã쀠¾VÝÙ[CÆ+máâç.·vº×IÌg´Ivlˆ¡ßJ_å„åd.mÓÿ‡å}³íËœ*GÎ\w?%ÆMD9ã$—ð¸ÿ̺\ë ¿Ö£•æGúÜ8s­s¹‡bÕJ2ˆí@þq>ƒKz!†"¶H¨ ÅïvçÕ2mV4¡9Â]’øf¼l1¥ßhv—ßnYWvÝ|€vÑV6Å>bçZÉöÖÄ…G#E³¯@îã|nåå¯^dL® ~O>añ»™ç^Þ±èke\l7æZ8¥éc8~cÓë]]b4c>ºó±wêgo[ÿN^qŽŸ½W`ÎÜõS5ŸõDhkÖ6ñŸ$øö”vßï·úðõN÷É™‘#q¶÷4ò^ .'Æ.Eò¥póë•{=vggóõl´9TXKoÙ·íÀòܨöG=>¿g öÞõä7}0øèK¼…©KÄSy¥t|øFãÑ„/ÜÕ:mÂn©Ê<û÷윧DÕ77[çj‡<ßf…mQr¢¼®r~>^ï[2~Ÿä8Þ÷¿ǤÌX]¡‚žéâœcYAØ™@(Œ/²“Š¢©fí-óÇÍŒn·ûa{ïǰ£¨®¹\š¤¤ç¡ëP£‘j”Q{ MÂÓS¶ÛÉnô=ÍNáÛ+ÓÕm©èu­¶Hk÷ÆÖÙ?͸ˆÙä¾þ©÷ýô¿©Mû¾0Ûw@¡Ç:äPçຑî½Xø]LqêŒæn²"ÃÏ Üé9`\}N]ÅÄ]}=^¡êJÛ»khxÉm¼<\åÚïS­tœÆ{Ä‘gfØŠ4¡•ýœ¬…À.=jŽ9Êûç!Û—8Tœ¸î~KŒ>:šˆsÆH9/áqø¼Á»¥ÁüB¯â£•æGñpãê;mÕÇœ™cóµDxP?ˆŸQ²âˆAርÒ*qDíd¿Rf ÚìiBr3„»¥êм–ÒïPv—ßnYW~ß|€d°¬EaÇ1Ùcwµ,¡6R0ôÚÝ¿®[‰*-eövý|«ÛÊõànú`|xï!jRéÐO2«ƒ€e: Tha ôµN›p›ªrŽøz6lœ§DÕ73¥U ãtóVÓ, ãÌù±Õ¢%çeÇÐ-¬koœÌX]¡‚žéâ>/|Tx8¢,wÖ¶Èù$:Þ9vpè¶¾ÐQ‡ãÃÉk| ‘¡r^Џöj@pý¬_ÒÖk›é yê-§Žguâg'ÙŽœMoO‘ÙÊLÌÑE('¤RB¯Ã ä”èß–úCxi%¸y7BØñ:Á ×åƒD4ÐFþ>ºýwïõæ¿èÄQ/··QF¤‹ä¹—uÞw1ü¿>ÉS¬3ºÕä7àÒÄ]òdEãz Ñ‹™‘H0Œ L|ñxá€DHI|ÐÑ—Œà鎨2éÝÜܺg·@ß_³¨nBjtlY¦tº" ŒDY4B²dL’MRlE/¹r–±VRJ·‹©l%ˆ]+¨",nî;®‚¨$Ú’i©Ý®¥Qc>éDRµ2ØÃ¿¦ËIПsq€ÆF ²Š ö"ì%M$l&E +ûOöãÁ/Šõ”‰gM^ªNúѽ$2¥‰óæQxØ,0†¹fk$>·sTÙ)F™o¢º¥ùû²ÊI7çv§¾ä…6æ×/ÕÕß·ºQ¤oMk¿®ojרñﮢõço"j,hwtFi$•„Ö™gWtÊh´h‚ÐüÕ[²b¹…Áˆ²&j¢©TeÆ .r{»¹˜×ê¨‡Ógnîã¶ž94Ñ5CQŽ&3Ž&9gvÚh"(fÚW˜&דÛYÞ´7aÝ‘œ¦9&wr]Ûu6ÑR•ñòón x[`|‹Ð‘Ú(+%“QosW ElÍ)E£A븢§}«ÍLÑ~®ü¾r"”©>å³E0*>Ûæ·1¢`ÚÍUͮͲ 5‘ù;«æízk˜>‹÷·}[‰|5Ø=·K»‡7FhÂIݮɽªå4±¥*‹b¡–Yµ4e*lÉ,}ÝëÎ ;«¶\ê7w\ß/7a·^yx¹ÏÍܠ̢yÖ¹±¿+ve!(ÚÌ ƒ$rzZ“Y@SMIÝ„Rí[×téËãòg.‘Q MQIÒM™¦þ"É&¡¬Ò,3꺒ߕºZT•2š_‡UÍw]fO±Õ)©Ë‹D½·V‘£Óêè W¾ï;’™MíÔåñ寸ëœèÚI$¢"YiJPí!r>3†êhf‰}’”¸°*ÀMŒÈ2m»¼c^MŽ·éîÛÉ7¾·,cii¢”|ÕëÍÓ¥0Д&!©$)¤UäÚêf†ó«©7çWfJ–¥«Ó¦¿“ååæ$‰4 ¿3]_s](™BT¦ÊZ*çFFi_¢N3iãÏN±r¤£¶L<ö4K1ô\Â’"¾;”Ùºr“,nr_ok¥”¯ì9–~¾Ý£b{íÚ,¾îÝûã,h ®ºX•.îÑë¹@õwK’6kó÷3$ùuØ“I&ù~Þ¼¼î´Ì3!U<1p÷üs¤–ÉD-š2¶Øß¢îÅ1™Y¿7s)¡•õq–_*ß'~W«k ̈G`ë^†ûÊ @X‚ŒcŸ­É}iš(²MM™†B$ È’V‰Y6…Æ‘JR¿¹I#L£A¤6B£32¦ DdZ}˪>½vKf&¤ùrüöö>ìa­è¢mc°eVMfòhPD:Zô|ÇýIs­R¢êCh™cü…~^ÑPSA$HJƒûЀrõ˜ÔU*ŒjÅ×jZÆCÄÉ”:—$8ÃÂ=ÛârÉSœ °xÈj¥Ô¹' O\¡©W@k†S¨zFæ&ÈRL UVC ŒëB’›²¦ñ†X²Ø¡ ’7¥$-º¡C)6øºž0E%jCR™Òó€Þ4†öñ´:žYˆÐäÁÂÍeÆL©Œ Z*&Dß åX°ršÙ ;()»¸“À¥;îPfxÁ´oª‹‘AÅ&ÕQÉ‚‘à”"ƒM(ó†¶Þ”a&,¬4bŒg_"žK‹sÒò4^£Xý}®1A°i%–¾çÓÍÚs¯±q Ƕ¹27æn’‘–TØZ .ñ³1ãÝŸDðnË ¦"Yˆ¦SOà÷åæƒe¡OŽ×T¥w]šÉs›|¼ëËöw^Ý0k—l‚"š%64ÙS6õeÑie3œ½­qh¾WvßGZVDËU$ÁêîïÕxoªÑä0ÎJjWŒTW¾×I’É2ÒÖô¥¤8Õ¿t•E4"³ '' Ã3Hf)¦ ØŸ£º¤¥~e½y®Q"Íø®Â#3&$H,X*t\±.«Ã‘ÛAÑÓ§V©7ÙåÖ­Snª­æl\%'$)Ý$¯„²˜¶@I8YÓþÜY <µA—ÍA0 À”D¹P%ßÍŽ—ñòy™'ÿª¯ý1ÿÆ0qŒ>–›sÞbkœ¨¦ÒÑ&î¸û¾éh—üy=<×ióòz¦Bƒ¼õ‹h þQE›Ÿ@¯O€|Ѱ°€üŒKÃ7øXçbBû•@0ä‰sÿ˜-Òwy@ï­Ãú°ˆ8àÙò¤ß ¦%x„ƒõ¾‡»è”_ÆŽt£®ÇË‘ä{›ŠFœ“«LhMö‡Zêº;¡Þá\ŽçZ÷²+³@X ørît¡oþ~Œ§®èó΋å÷j·oK8v>ÖøÊËøˆV—ì’`@­®És¬Ìß,'Ž 9¹;H|øÜÁkÅŒ·j „š-%÷FæÒfû@h&›®]Žý‘éª(ïÏnO¶÷.fæÄ1B€Ù£…‡x†=`"[Kñ®z‡W&"¡f·(VYs™Y£jˆ¨ÐÖ;«žßƒnŸ6ˆB«¸8¨Ñ–æ&›Ôý Ö]xÎK÷D_—[S|3sÄl·ðÕ™ ‹¿eWk¥ý`Üœ§Nk–[Ýšå¢Wê…êJªpô‰ÿÈ û‡öNº~»ì—Þ6ôc ÀÍáÖ+ÛO)0Ñ @´.ŽçrÎ|†Îžjw]¼'Ãï zB^2LtäìŸÉ=!9Àaç†Å lŽÁd»6ã@«“øF·ªdoÝØÕµG¬ŠnòR;ÝI_…à;s0oè\ì=<ªÆHŽ¢Sßn‹-P"Hâö8žï.6¹ãcÛ²« zC·7­¦Ùù<\Ãë±ä=X_>ý¦Žño©63—9¾„)#þ~qñ³R åì ÷ie«çâÅê/{rœÙ–'aÿ=mY›â#PŠtD(ÚM’ƒÛeZ’øv¹ßØùƒÌFÛ†æAà±í•F‹P ,<ãÃ×vÜú¢v„r#¸»úÝâ@“–üÈùì²°ðtÉ ±ß£ÇvÞØ~ݘYmU&1ºnêôúzõܹu_Ê£Ÿ?FxÇF×6DUã2áÂLÍv£ ³æ óæ@æG½÷mCå«Pp–ÞN4%Ú=¶ .Ê×Tb@ i'³È.ˆdsàžÓý¯ý×GwÑÙšˆÄA|#)“ýÜõÏ÷|€9Ù¤­¸˜G_»ÉÕ +=Ášý]Ï)v.¢Û_IÓ\«õôÆÞŸçgD#ÀUAÄ©ÅkÛu½zDLºá`@Å-Œ Mj+Ô—[²ýL?œEzb4¶øáfèéÏáŽA£k£EkcÝúPiXj#9wj«M}͡Π¬¶%€7•ÐiR|¥÷èÇn5ˆ³øÃL†ŠìµÔ¸ôßãuë¦3´‹2A@,¦\ñÙpƒ*­uÏkÂy:ì©ô >ÿ×+]iÒ ¾```x¡Qÿ ù0(Í ý]¶›C-Ѫ•ü Œ¨ UÑ  Øª~usÓšwä ¨·¯N|xycÄé@rý6;çêðåÄ^ÓäÛ­´GÉÙêuyÞÕá§'ìôBÀ]ÓÓèu=Z$Ú OË›Cin5³êè¶8ÛÍ»VV®Kågñå›á±g?w#ožÎ½¦‚Ù¹gýØ©EzêsÊ<éë•tU1’»ØØ¹Ä˜XíœÆÑ£„£ª´ææû:YQ¾õ|æŸo¿“‚Gµ¨±ñRî­ËÞRU¥ R-lÖarÛ{µÓ­7ŒŸ¹.ò¹~α÷bÓÜâ—¦Aóííþ>Ókm銰RçõQâjÿ“Ïšf†¹&çãEj¿roЯZlÁb'‘|ûWg£uwð߸Õ-^ÔµUâÊalÂ_õ}Üýþ°/B§áŽiv*×$E<9Çr|QÝ>Ýþ¾ÇŒqÊ-<;¶½,G¶—àF¶—Ô«>¿åw}âØ‡u64{Jå´Mçuƒ8'¡ÚZtÛ'jo‹ŸÓ&ÆU®ž& ÖHhʼÕi³˜+È?dWÚÓ0ƒp[1¿‹…”v÷hÏ„W’avò º+mÛÆûünk³¥h¹5‚$5#Û(ä9³h xdXô-ÌýœßŽ|5Iw¨°{×Ýóª‘Â:w‡ŸQ“ ÖñÀúCðPŽ~·ˆTV×8úE…KOQÑz„¨åâ½Ü,dÙÖïÜÐÑž‰8I^/T}ŠS@²ÿÀu½+Ï/%µlìL'¹‡‘±Ý…˜Œä¯N/`£vnÛš³ÂcI› ò ç¸uh·Ñ˜œSr ¡'î¨í0ë*¶Æ±{¿¯ @æšNÝüuÀUšHµø{é>[IU Ff¡”‘¼ç‚Ø aÑ×kç]òx#’ÅA1Ï•Žk¹.†"£Õ·BB€ã!ÉH Au¬Û³[l£@Y3íhÇ·‘X:%¹yœ‰â}0aŠ‘Ø. ûø°ááDaÎNñGA¹§Ë»U¢êï¨è’Ì£«8^ü˜.~~þ· ‘€ !i‚Wér { ©Ðƒ¹›y×pzG5Œ$Ü žïg‘+Ä÷ GŠhpr`GøFþ`½€A ”äÝHJM~ÑkX†ÃÓ&p"¾2õïŽ#'_®ÉQr¬! ¥(Íž|-‹š¸)Ð6f0§bSÏ›Žq6‡ lhàü!·tbÑÅKO™î¢‰+Âs3ÇÕu;$öãÍn®'P†­ùì¬ßø½µC§=8Ý”A3¿õ/5 :‘=„Vî1·àLèàÞå+_µ2ÚC¾íê ývÞG3$‰`=œ¬àØ­ƒxÆêP¸Jm°éQæ¬g×¶gŽH<./§Î·TÞÙ4û”ž|Û½’œ ‰¯•êv>á0ØÚýj,§_÷v.[#iÒYüÝCJ:HFŽOc)*Èp¡ý—˜ÞSe#7Û ±÷­àäjMö4ŽV…¦ç¬n#ö?+jÓœ¬žÞ!¥}±ÊY€\cçâ"îE ôWàÐÁe…ïÑ„/~½Ž¥ó`Ÿ¸¬CÖÞ¡œ¢;0–(²J2úÉc„çÒú÷±MÎ2’øÂ¿ ÙøzS““ç8KÖCwb93Ä>[y'¬1¿Xþ‡Œ§MöIðQo²ÎÂ㎢Õv]â:{8s’Ãø}öØuîv¾wcjû´½0‹ö}­©ÝXzem&³o$ Îàá¬ts?S©!9=G»Æìo¸fm,2;T80 Æà/»O²m² p·å‚Ä»øò­\Hx\§§G 9øÝ(Ø¥Npa1m¦éý_Ù*Ö¡†¹…Á{}‹ ìún¬o¢lcsÅÎu;ô¾7+ØšìJ[!©½í½½ã®ôýŸ$ ·jÈGF ï(I´( @¸ìÔ"ÛbMàA¡ô ¹ÛÛ·n鬯âõhß|qò¬’6ÕÁëB&ƒs‘²ˆ9ðmǪQÊ– é)Lñ„¶šAyÍ¿xMþ·ðæJ u…_Èåà†ìt+§P¼Ÿ[ØkxbF„¿›.0¦ŠŸ¬ Å:0 =ñ>·S/8âë ÑÖ8zûÄç•}Ùô=ãëm1Áü#MNl¼› çŠCÅÛKìúX|6tÙï$üs´ÍíçuŽSôwŠâO-9pµø¿Øà¦CÌí/y^H*4|ýѶßÃE\9‡“Ñ~½3¯Æ¬ìGâàƒÙ•8mLüòÖD Ðl\sÍ£g§–Í==Ù&ãAä+»›y~CÎéÍ–ïfSA…¨w0@oK†ç@e.UOÔ6>è a ­ì!¨/Ã,îáQo’(òËsúš^‹âËG»Å-Û©Ãð¹oæÊ.·•­Î°ºß(Û׿~nÖ{fXÕppŠëÕ·Jºß/C•H§ŽŠ×僨"Òˆ°WybèºîËß•n…–Í*4‡ÑA¡êwƆrÁÊ®rˆ»tìÕfáµJûNUËL´ð6}¤@¼\­­ÕܮՌas´Œ!¹÷k5w +p˜õžl.Êû8a“¿³+®åËç…}z;µÁÊ8å·ã½‹Ñ»-œ£~‹´à(N”˜áÆŽ8' !Ð麵8‘Ëce|ù>°áÔõãö¨lì Œ/Ö«¬*mÕž:/˜¢ìj¥®à´ ®„Ý[¿^ÅÑasñº¨Ec¯!@jkHkNr'tˆ5Í1­W ý{›X“'…­Ã&{šç¹öjÙË7ÝÁÄW=׸t¨QqñÀô÷@ÏêÊ›’ìæŽ`#“µ~•¶/Þá7 nZ‹!£— ±œùl®Þ»ÓŸCÖ¶tsÖ"~™iÒ¶éÉÁJ‰åwe!^{¦ë¼Ì豫 VÁÜÊ6 tÒ-]º,Q„7Ú»{¶ÚD›¤m•ݤ Ýgèu ïì}žìyí 9zêáaÖRž·¹›‡.YçKöçuƒ_=ƒœ£ÆüraKtêz=×䥷>û}<ËKV#’éëÄj}utr?gFi™®[—·`~ÏnLï )¦»!ϧÅ<(¾"zîkYu ØJ9ަ6­”q}$ɨtq…Ã’zßm=|×rCY?°HjP>HÎ÷Ïî°åù¤T†ºÿÀ…Ô'óOß„=3ù¾øÇÙ#ʯ¦vÖ–Z£õV7Ñ+j‚ùYÅ’Ó9¯¥'õü¾+5B–¸œ£”´j2=rsƒ\0ó]÷®_"Z{£Øèü˜¨oM.¿ÅD9°ŠËËš·ÑäãäÆÿs˜xag‡Ñ·@Û5¬¹muGc³go0tÿÿ+DâwÛî•›¬¾ÄtäǦXRïœ ™@Bb{ÅÿÝH¡áºühú-ëösÁ«†Y×Éœ\:1\-\)JŽ®›¦Ÿf™àcCå6š:Ü0wÇ;Æûa6ê^­VÚlW…*¦hÛ£>wÁä”:·ºÂ;6Ê)Ÿ¯á&ã±³¬mÞFŒ·Ü¯ÊþøèÒE–8êûzñ„5è²/„}tàéÒدnÛtãª=>vÑ–¸äqt£{á‰r?—}‚Á}Â<‡;7VÑ“†ºYs×G”~{lŽP•¶¬õ ³Å8¨Z¹Ib4êv:þŸÙOκ‡TÚW~[zÆÿ.Vçfg ú‚™zQ• %ÈçÁ¹U¹~ï^§ÿ¹m‡o—§šÞA–M×k´g£ƒØ²úónçêu*ÄÄÔFKy!*¾<.ߎ8G–_áΜßG ‚€ ž&·•‡ð‹ÊP5ð0Q¯ÉÓ„—íeÈNÂÕÑ´‡½H'Lüô¥/гø˜8ZÁ½N«—ȽÃÎ7éû}:‘>ï(ùGHbÁÉùùh÷> ½Ý+¨:Ç;¦:U„$þÕ7'?´BNâg4[Ͱ¿Ñhˆt^Ì72ŽW¹"”OÛü„u&®-®ç¥pª)äÁ†j-º€X—ôJpÙeŽ¥<…»d "0£J^xü‡{«=èYËXåPïfÞ¦”–'ÒßF«eÂî6 ¨Š|T]X{Á¥~¬i„4×j°˜†÷¬$#¾å§¥r4Ár½CEÖ|½½ø§ÔØac/P»«¥¹×ÊG.×°Ü£ƒ÷ÌÖ{9#JH*Ñ·£q£(eü¾k ‰“FÎ9J/b-*jF\j¶Þä\¼û¬¦˜ò²Ý>°ßS<îºsi‰¡Dz6á‹d;`{Ÿƒ¶n‡–r×Z ghÒíøý[a/%ŒÞèÜx°ð­Ðó?Òî<êEú.Õ×1(ß— !ª»l–*7Q¯âo€B éÇ ùžk³¥ÕÈ׉ؽϨx§Æþ_z9P×ssW±s×£Æi`d `‡ÙÜà¼Gác<\óHÀ=žAØÏórMT†Õ¾Äæ>¹ö‡‰d%¬ûK‰ f»žôð³8ƒãMz³ŸT ¼O1SßÃÌJdøD"‰Ë"_¢Ó ÛŸeä³ÉØzè’ö’ë/Üdg“;dà†›Â<'°¸3ñža=$¿nöëQ§‹”2…»Èá’@~áÁÝ=\Ö<ÈŽBŒ\$ é²à¿6G™÷›Œ)Êák”b׿T\_€ú³À0ˆè¥îI½vèæq–ÂØîÛÃj‚K«–\*}éeo;”ûp|þ­ÝØ7šõO•“ÂxµÁ;ªÃ,Õûìçéæ|jñ)»ù¼…^j;Þ;43¥Ój7/3w#¾^ êHJ ð¬Û¥iæa³xx›£åÎ]…Xfz%Ä\š tÚ›þÇ-vSU PC¸¨ßj Á©°©֤ܷ‹Ü3y>m^ì°ÛéY†Ê0¹Bcépn»—^º¯ä·ÕÇ|òÎË=µÞídz±ê¢<£þ\unÊ]n¸4†ÇEù+%ÐB:T9u¾ ÷g•—øì–‹p¸[ÁTb¨ù¯Ùä£õ*ÔòX˜aè¿Ü}x4>Ž0Íñ:!ÇW¼öámÎÛØ_èQîìZ¾/ä²û£« D,\sü³äÒ}úi§\t„•¯s|µÝñ|—Ýwç<רÚñ·º<ë|{ôx真‹ã9¢3°{/«Næœðóôq³OŒÃlìø×"7†kå§§-™l…Ûê­ÖY¹Mc}ú÷HêóÍ_aö”ö*Íâø"À ±Áe6òá Ïp0Èç?‡­¡ŸXfYYîWf«ŽCsP;ƒÂïÌ(öàö 3UÚ9Žë7Ãë² ˆ KØ(’§>­pØÒ¯m;µaßÙן¶š¦»}º-<Øu;ž]’Ö“W2*…[TBúxB%0ÕcÉ ‹R"ˆ’Kº¶Äl6áË7p‡X6>ÍðøpÛ#¨ðóŽà-íòCx¬ïÇÉçv »Y»³ÅÙxíè)…ü¼õXsôòbß¿^ånˆ¡à"¬–C„k.Œ%a6Lz{>j‡|,;¢§D[ª˜•^lT›—•×î âú¦¨}½&.ÚB‰s©-žõÎ߯™W(z­¡õù4@Mê¦r{ˇ¶ü·ºyg«|HƒÃ+#™L¿Ý‹_”o Ó÷^2Æü.˜× 8?ëO²ënû´ïŸ?,rÕ'&@àÌ÷>·æìåþZÌÝIáýÒ c)Ô@¦Æ;:Ž5¤×1IøàÍœkÑÉ[~PÖPë·V6¿ØÒ ñ±êóI¹tû¡´ì§JÜLnÕéè³NñE)röû<ØC§.å½Ö¾ÍGE—¶S×/WѲÎYzÝèï‡oÌzÈžŸèaåïøâíõP&R û}a¹N1 5”a£Ëµ94J Ðóó˜Tn¤ÀHR®]œ]P½÷ã£Ú,­™¹¶|5\¿×ùçž”$‹ø¨nU ‡§êÏ›˜fñd.v~ÛõÛmmnû–ùù;–ËU÷ãúd#R·G³W—?F]Óåö¨ŸóŽÚEÄ…÷»öxKŽU"ðã?™¥öö·Ê^Gm>:Æ6Ž«OêÂCv7»Ù[lñ8KR?€ä+û±É¯áÒi%ìs¹{ÄC2‰2œè(ú?_G;¡Ò® üEHÖSE«å&êÇ'…‡Ãrôù6üdóeÊŸ‘ìÛìNk5õYßX ;x)-?¦‹ûtAµµÖ]}¦¿%‰æ1#s•”DhƒÝiýäe ZDºv»E-]Gþ'“­øÏê”ì°Ù-Š8ðw‘ß\,ç¢÷ýïØwhööÇ®‰ (ªµ®sL³Ü4:ãW²iœ!ÎT{Rá"vØú…ËRÓ÷ñ·Uy bQQhsС_îïÝ ]‘𕬀›ß­þ»°¾Ç¾¿Uw»õÉhæ!o<¯Í¥1¾¾0hI…ù9lž\\—›t°jiDFDvH«|" â¾Ñè#|ûŸLcúý¢¯¶+Ç_ëé‡Ç<7XºÂ‹©ûŽ·±þ%Oí4"ر מ“±|³çÍXó UÖA7=^ê%,ß­ÙÆ"*+E½ZÙïîíÑt‡0=t^².mÞQÓCgÑ£Ë.ìÜtãñ·µÂ>Õ¦íÙ ¾øy–µç|LåkCØDŸÃÌêGOÒ 6Íò¯ ì‹Ú-`$‹o† äùæ"ýŸr+†o®£(Õ„-^ΰä&亷ÆÈ}oíìáû„˜×öéÓ§‚õ"F°æç³w‡P·G-aê;PŠ£×Bˆ£Y”ÖbPƒÜŽˆç#è6”p#xQ7ò·+µEìU¡•<ÑÆåðݹâÄ|Ù—MH*û–üŽsxætîÊЯóu]É~u0puåÞCÊRB®Cµ¶gX0÷϶÷ŠLÐ^ùaæ~’,±J¬w»×«\"«ö0ç8¦D;M•„ȧ£¥Û_Íl‰õ;°Ø©…ÅÄô>}Z¬š,¥\ãª7N©.ÑÑ=zš¯ŽjÚ«»'QëuQ¾“Æ›¬«¬ÙŒð¤Âì¿/w²¼Ø6¥¸UúîŒÇÆ(­cÑÔ‡£íŽ¶Ñ–ùkç³EZ1.ázéædvì3péK _ŒãBóZ®Œ0"œ˜«jïÁÖjÌ!Í7½Ì¦œ[„â–Î|ªÙÖÓ!Ø‹ ^ÔÐàOrCšL“'ig}CÒœhBeZ±Úµ jÏÑcÑPM¢Í…ªø•BGMt÷NÇA›yAdüHH]›V¢zxÒs Í;”;´«?p²èÏl£bˆÇ¢2ìhE7‚‹jSÒ·U‡¼gÉ¢qÚ?_碷iã¡Â¸®‹Âåz£ºNr‡“.æñ}Eo±ª×¶7Kgƒà³¶CØ ìY‡(žœïtW‰ÆÎH…UØ1Ÿ—ÌÍÓäí¡•jW-|ÞLƒÔ>Ã$¤FÁ.½‹ kˆÓäa×6ìôÖòë?ƒúäõ<ì±óa§ 4ᕚ[‡²h~½‹óáɶJßKïTs×Áê `­%’[êOx›´/ÑÕÍÕ3«2Ý}ÙX!3;’ù–;6ˆ@¦ž6\<Ï–­ô§.a'¼р|1ç~ÁW‹©CM,ƒ]a£Ñ<R²K”ÈZÅ`Xtª^« YÁï×'Íé^‡µÒ[K5ZKkÃ@u® Wêþ?²X )ºHîÛqÁÞ•Äêx›néh^Ãwv-Œö €Ëk‡-~>Mlá‘¥ºý\¸ßÛßî´ÓJõá­Îö†·/-Û~‡ÕØÖÊlØ6^‘3’!¡NÇeiåÔ·vqX}ïäwl ýk¾ÍìOi(v%en¢|ñÓP\- KHƨ÷IJÅ¢ÎÓüü!ä¬(ve[жÜómÐÕ€÷4îã;4ZƒªK«÷h°Œu ò€üv0þ>_¾ÍvƺTkµ¶ÇÜè N±Þ,¥'¯Q@¥ â7بä=!ê×Ð/è}üqpåª:±˜èëì,n»yë‡dµ!aœÒY,¹?˜ˆ\'š¾ïmݳzĆ•—{,«¢+eíB1‚¾5òví -˜‘fØáy¯w%7ؽ ¯-üÒÔß˹-âÂ0ZÃÉé<ÝVˆqÃ+ì¢Ñ%á†ìEÙØÝ{¤²—Ts9ÅD5¥Ϫâ«ÔB‡“zªX£›J ¿c£ÍPPÔ^½NÃSùùÂc•¼˜ßÑe®Ó„¸Hñ€ôåÐí[v_-̽ž¯h ãÏ!÷Àì‚5c–û#«HSû'Íxõü\,ÁuŸtõuy­IÉUöÇ]‡˜8s-êQ-©3¦Í? ζ&£È·¡o÷‡X8Ðå—6äqî…7A9ü¶Zðú?@žbd¿½‚jh[å}˜¥¶q-ŒÖ¾YÂíëÊ+#Í~ÑŽHQ÷an©]ngªf„X<…t.{´3°Gù€mŽ R0åæðÚçàê˜]†‡qÑ··Øãey9+>2–ÞOãϦXÎÔ1ÆõúõuB[b¨1±@Úöï·t÷>RÜÑ!Ø% 1i— œÛg}*ÂøìóúuÜ2@+æZC²h]¤?ߪBÔó°†ß7UÍùFÿ.I‘Áà_sc§­ö?¡>¢ƒ¦íî#Ï~|]ß=ÂÇ BÎwu>£{;wøçTæ¨ÀåË¢NI¢/ÓzJœÙ£ 1¤;êžß_Œ¹æ«ïÄ6I¯q_–$J”„3´x¹ÅÅAÞ¯²VãËÑúè»saÏVµÚxå«b[£w\>ùcZ£Åš5Ytv?—Ãó}=s±#ƒâÝ'I»žÌ´.y‡_(Ž€µ´S‹8XÁp6ÌN¯J 1YÜÂçüšÒÚ¡†üO§ÙÍÑ!+¸ò·¡Ô;lûqáæ»69Û´ëÊÍÒeŒ.w 5È_¾”Ïo7UØ*Üui°Ì9‰¹¤ícкZó\3v®Qú¹F‰ò°Û…Ú Ù9; ƒ´.øvÂ] #¨&ùsíуë)6ùÅéèjp‹üUÃ7A„•èèò§Zs y@‘òE;Ü×»v¡å¶ /n„»#n—cЮ?âyl•·í$uðÊÆË¶@rý t:N¶­<{ûzvhË£:ƒñÙºÐñ+eG`ÎïL .MîÒ¼€íëb@°<…€ñp-†¨NíÌÒZ›&d=1ÆŽ¶fÇ)H;N†ê#ŽVÄ7¹pOW§çú4ÌF*£"„ ÃtòuÁ뎜ûêæ‹·•×󕦀Q±O*Ž5T‰yýx|íÜp!ANa»Ó^±ð¶tð«pag¨)I ÝÉCt¿—DÔˆ“m’ÃÝ8ú& DóŸ÷¨^{-`PíW·Xy\«Ã®×‘u'—-5;Øç:‘±ÆÚ«ê¶½3pXÈ.ïk\“ÖFKh?1¾+æfHœòäšß×ì6]ŸÀènî¿7H‡FéÜèµnŸpm‘w"ŽÝ»š}?K¤öö©0 -ɹgtú2‡Åj#km~&ˆ\k s£—è])‚ÿÖ¼åûùlØéÃ3ÖË\Öƒë.#)…G˜bö|×yIOBÂqæQ^ßæ±‡Ó[€¾ZÁßÎ6r0ÑäÍ·õaWóÃO¡øtlôGw:Ðë?Imtûv0}úxþ”üWÒèÐÃùÅü£1ñ#™]¤G7ßÊÂÁsGE›ÛA5ZSy°¤T*A¬£ó”Õ~|yóÇç§ØÈ‚Âu/G å˜ôþòxÝÅ:0y.Ý­é{Žžwè±D  3¨÷j…"UÚ†Á@ô6¸62¥OçÕ^>ÇÞ\ ËZ½‹ü·a‚®W‰²ÃÇ}9gÊgL˜>ú:EÖð³°ÅÌ*­³Kìá{¬Ôäò·¼{žÓ±~UÐCumã#É.ÿŽ´ÇÝ™Á7È9S]MÛ>ˆ¤ 8™È¦íW£ÈøÛ¦'úHÄý$u+¾uxzvŽ3gêèKoWü®×ÆÎ¸þ»Òô±Èúâ.~ͽ²žÝÒ·ØåìÊZÃccºöG'j¾› y¸³Fë¾¾ˆÚղŽM½:v|±ê Ç}ïç¶_-Žå¬Ú$c jí£fµÜ¯3rŽ¥™¢Š¿W&pæ>íï麛{’Ør_>#¬ôÇ\@/À'coëNVÏžø¸½Nåb´²ÒÜ¢K»¡Bg `¾'2Ê£JäÃÜåy,P)@Ëó3Z“èè÷ászaåX‘g[Öi´wH&ݾ1¨£Ä˜^ƒMv@ÐÇYˆ]üz1{”gåj—¿ÏN"ùxËýšêØÂÙiÓu¬ªy|û¹q)¯lvõìݳúòtr9âQ=ɬ4Aûçx‰‚@ +r¹`ÿÒùÿä‡ö‰é:ÄêÛ¿ÃÐÚÞNí»0†ÓÞð2(FµR„”}Û÷Møq-w“õúÿ¯·Ê9´åÑ´î t>-Xnãhðn»ßà!;£…n•6lܺ~íù:¶¹§³£D®·n¯nÆÒ<ß~·ÛÚ»­0ýºÇמýWórËW'aÜScH¿ßÍÜ»¼ÿ[ýíüðþ½²]0ö™—GÏlÜ­(K¢Mh¶³.ü)W˜Õén á³—^¡Ûì‡ÎÊÞG¸=¶¾0.qe:Ê?ÔªÿÆ{ýH”õ[}§Y'<–°‹ruzXKŸTW«ñè]šuþíºÜ©­”íøhÎþË—7pùª(w•œÎ%Åyèøè¤õÀض_ôtB›r†Á£Ïõhždþ’¸=ÜdEOÎDÁÀÇYTbUB¿ôc«òŸª4Ubó€¿Ëã§TÓ Ž]Ò¹Ûd¢ÞÙêpú²Ñß{óµqå³Dì6Ú.¢ s[MÛ²R7›Ù|G™½4{Ô^}#ÕÆÚˆóÞÍ¡UaóÝ«Ý× µ5™®–ÑëÝV¸¸ÆµØv½vØ÷~TT9Ê”;¢ `'~[^-#fµO!Ü ätúÕ$s帧Ò冸© C§ÉDâû«N‡É’’nEžôÊÄàÍ6*ÙÔ˜kj?I_u qãp®öŽOIH¸§&žˆŽ¾mu}ö°×ɆPÓøŸºn\ñsˆšòô/7?ãàå$®…y{›'×÷ú¥I=˰Lõ¾nõvRÁé·’ÕönÛ–t6üåOã»»0!ÛŽ—?ŸU7+J Éy-ÚZõµEþ~·êí†×½¿ÏB “’è•âÂûœ¯T8 ò¯)ÝÁiæX‘Ã>øz¿Ç|´ëQ}9³éчL'{ýx—…¨VÚ4/q¬aZ¼œ¾là(x ë!sg§Ùôƒ¯ó–[Ö¬ÕcÑNàR%×w«¨yökØíN;éNÄ;üŸ“7Y„ 00Å’îÓ»âøv7IR(Ôm|½¯P?Üq¾=?JåB€¤,ʪ¦ë—ÿh»øø¯·þnú¼Í OÒpÚ±ÞVÁ?®cQOF  ¥@u:‘dŽú Ùg„ÔêïÁÙ„ºÊ~à—¾Új•>N úº±¸DÓ%(¤$׊}:sº‡+…ý~Ü™égÇíߨÁF.NðÆŠñù /z?* |8öרR_Ïþ¾®¿¶ ¬œÁÂt"åßÃX•®¯ïÏ UrP^)„#æÆùÇ…qðí/³;÷&¹ØNÃ…^úÓEüê…4¨0¦®üýñ_çßû«è“nUÃL4OUÕÉÇ£‰Ý8ŸwoWIØf äôÃýõÈpÌÕ–¯–=ÆÜ‹×sUæ4bÙ{¨c"7‰¹ †L×8š ™C º5!íݵš:Õ[5JË£Ó§'ºæ@k–Ù®g Vㆬ‡\<Þ«­í\UÚ[v0éM\&M78T¨))*ÆîA­žóOáÚcD¯ÇÇÁQá§ýÚ œ][mÄ·Ùܬ.# GÎøû(ãcå$¡ŠÙâäNBýpû;SûçaUôÈ¿ „@¢Öf"4@iè‡Óõü‡zšG—»KÛ¥c+›¢ª±‘—Õúÿ½¿tkY/ÝúUñ‹‰»~Ï÷xªoàxòŽNÍòöY]+e>™I è(/ïC=<¼&†Ù2¥´…EÞ)’䬃 ‘Qÿ¾ÑçíTÐIN:Ýø=~ÞÆýEÄ}J¥4x­œš\ÅÚNúûsøìÞŽowæÍôÖÿ¹å¾‚™åH§øÓGøâ§“ä¬ú3ð)§¡ÿã”ǘӗQ#«RãŒ_ù]·¶p×Ê(Rˆ`õAp¢ úK¡‘¬¯ê°§1zÇ”EÛ¢ÓÂËÓ @.­ó±\˜Å_yÖ E­`ÁLý½ Lnëcº—Zi_Ãw-R(&ú¥C}5)æx‘ãu_‘_ ÈI6?+sôLîøg uUbŽûÚû mÒ‡Ìæ7™Å§7&™– šp{YècÏ« ±šRÃ…ö%$®K9é9’°‘c³C‹÷‰Þ-‰¶îR¤f”aõ¡„X¢“º©Ce*Ñ(§“¨xÝ“ §FÒ °†Cõ=·ÈtÌC0w •ú¾é_tú|¯@j_°ìíÛy’Esm¨¶U1fµS°ç\ÕÂ#CÞVQ«Œ )‚B+?#ÐoÕ‘ãûÖ; áx^WÇ©ú´E¢LâpwÞxUS(TCÿ‡Òv§É‰V¬Õüm‚ÛüDp·˜.Ì¿p%Á$gÜ?y°¦“ÐÄ  û å]2®AöF‹œyøØ‘Øq‡žÞ‚¿Ä|9}Ÿ;BˬÔ÷·ÛñsÿD~6@Jß4o …k;RŠÍQKÍí7_e›…ljî9çùßž.•\ÅÎçyÛ•}÷Ž«c¾ùç¾ûï¾õØÛÆ1Í÷ß|늚®»ë­G{wß}w{/»çK}Üó¨Êž7ã½s×;­ž±œ÷ŒkÁïUU׊yÇ7œ]ß»ï=÷×vvï®z®¹ë®¹ìm¶¶Öµ­w·|?:ír¡[]e¼’ÃÒqà ©„n´o$ÚBÆ$RVÍ®fkxñ®ñÌyDkÆsãkËZ×;s¿yëWÎó×uœñ¹žkžvª®.ïgZÖµ®wã\õ3˜ë¬czª¬bçm®õÆÛc~5¬õÎÛm¶µ‹åÒÇ=kZæ6Ö×f#®µ£Y}³×Gàêüts«çœk¨•¶kžùë¼%Ï;qÏ<œ÷}uLJ½öçÇï®;åb7‚ùóÜ÷Gy¬oxâ:Ï\àg#~¹ž»ZÆËPük½w߉‘J/ø n1Wâ±ÆÜ×}®—<ûÏ}Žùä%¼Có=õÙm{‚}÷|·šÅX­g®ºë«Ö¸çŽyìkZÖzq¾ÕX¾«…Ö5Ýs|âîûï¾:ïž»½\ôºë­ºë®ºžºë~¹èõÖÝÆüßDuŠŒõÛÝè×c]¬œLgO¼ï{+Æùï;÷Ö׿¶NëkZÞ—ÖV“m†Ž¥)JRì-ÂëpÂûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾þºë®ºë®ºë®ºë®ºë®ºë®ºë®ºu×]u×]u×]uÖSçnõ®ùâ#Ž5µCÔñ‘¿[í\ëYÛ+,ó×$ò°wrD\ÆÓÞò®÷ÛwŽu¶¯Nú;gh¸Ï;íÖã§U·gˆìvv¹‰Öën8§®vß}-¯5•ÆwÆ*·É®ïÇfõÎüw¿9ê†4þ1]EÔåÏŽ¶;öç®3œWW38Þ7ïWŽkÖÙÄ¿].:Û›¥œò~Z}¬Ë×'®:3Îz[õ[l2¤nõ]Oq·ÚÅç¡:Ç\ñ5Yž#|ÎãW¼ÇñÖÙãx§Ù¡ö·ßYéW5o®zëœó×]hꪎ¦µ­õ×WÈáAéÖ1[ÜæKë›ë®:ñ0;ã+æÊŽ#[s#+~y=m oŽª´±¶8¥ÅFböOÌkºëˆâu¾øèƹ½À0úþAñ#ÜC2ÿ¾_Ø~®ñnäõ:ßû*eI=ÿ)é›}ËÛúL #د_³Ê>ŠÌxpÃjH‘øEÞæ¾ ÒË7&ŒSÖž„ô3Êͽte=I¹ž¤ÜÏc8&Þº9‡ûåu]Õxq*SÙá_>$>ÖCéÓ©XÍËéÈtE+Êûψ¤ü±vDB4×ò4¶':Ë2é÷›èÔ7‹â[û¾JâÀ08èü™¿6¥:Å»ÏÕ÷ª ¡=Agýå?IÜ6xeãîò_1ˆÄüÐÞΪÀi:vXc¿é¬:)ßòµÏZ¢Ú%ÕóŒ 4Ã~Eè;s½ÚNãÎ@ AÓÙ7+–F]ÁønÒüKâ .MõmGñQ…ñeµtƒô½@ˆ›®+s"ˆq¸1všY»í…ôi O­Ÿñõ<8ÞQŠìnf®9.Æ~{tløÁæ_wÂ&¯††4¡PÅGë5G*{¸l”µ@äúÆ¡þ˜=&eèsm’ñƒ ;^¨`úª`G vqãËÂ_0ê§_ßKÄo{á’M K¼Èæë¿{Ó f€%i@Q:cWã´c¢‡ÏrIÙNGÊóœÂÏź»»Kbqe¥ù+~¢¬,P*s‹*Ñge×vmï4œk Ûkاê#ı@ò=3@•!ÜT{ )I¦R{¼ÜÜ8ð;'òu¾èwóÇm‘DÙžŸVl_ ¶åR<Ö®¨¨ˆ"ƒ`D`“%žwÚ>š•E¦Næd‚…ˆ^H/£ -¯¹‘ßž,n{'¼¿Î¨äÓ|˜8 SibÄ)n¥80ÂK(„_µü‡°X½ye?&¸þšÃêáöíáMz¿ßÇ~6jÈ*ùìà A^®Ü%¨mbÂݪÍiü¸ûsCÚ'0ÐÝú4\8}nå7ÉôHQ—ž¡%øF-ƒ3!SMë~Ÿãe$Á‚ {ÿâ!ëõÏ=J!ê ñ˜×ºXSMæóÞM:y·kf‘ù¸œ€šÎB`Óv Oßâ¡Ð@ùþoo™8JmºˆˆÄ„€\'øÂ$'LxëÙg³ŧɿÁÝËcYÝ𔡂ö9í`¶Ólìp¹¾&êÖµ­l”öÚ ”x¶Ó?Õ‡ê}ùa×am·DÆÛhêÅq7_q•ØÞ¯¾Ê[vPµÖ3±êE'½‘AD$k*I[E'MgvYØ9"(;žG5i"‡6QI<Ù¨wvmß|wó_hÑnQ9®­Zie%VË5cLä#Ž2œm‹a*áGS߃dü1[%N4¿ 3¶áEjãeØãj'nºÚáv±S¶üøgŽEï}»UÐ#,¥Aeœ¡ ^¸Y+˜ŠÛ gé•ØßŽ8c}÷^·ß}÷ß}×ß}õ¾ûï¿:£yߌ±}˜äѹ¾hÎ?S`מ§Ýé„Ük®f1ŸN½;ìê@[J×Oi~oËB/„'EhúÁ©@J $&R“W%9Scð½ÖÆ7ìúˆ¸1V-~w]u¶Æe¡Šé:r›FR/><ˆxûúË>Ɔ"*¹eª;nígÚ„¤D‚Šˆ¿ÇR§—ÍðÜ8&YÓæ£§µðñuéžÿ5øwøüü¼»½ýJ ðQL|("ª¨©Æ…žJ¤Q i<•PðÐ*âÓK§F§–á|Û]4€I†ië½<¿Æî·Ä–¤NÃïqîiŠUæow+<ŸŸ4hÑíéå!ëæz‘®7³ˆqåú™{ôaŒÃÁô=áÎ ƒ™•]S¨ú 4À© ¿Îw4–¨ÙÆ"Ÿ:ùä LDŒ‰]c„¿Ä\Q[Aí»uî2‡`g°íœX™r¸¹Ïçû_e¦¸’râ亀f=J§º"ö„ûݹîøØ´ñ‡X<þi§™Ómvº4xvƒ¸“¤ï.’Üv1tט €'ÎOŽ<3ϵ€Öë<Þ÷kÅ튫0Ã~t}нHØ5jã£]ø*H(Ñn?eµÑ\ŒI)æÞ¶Ú®-»ÈÑêÃÑÆÒÅCŸ¦_Ÿ9ŸþªÕó7¤6ãòpæNffÅM;×*„äñéçv‚ä´&k7-ÖÀ{_4ݱ¥D“ø%ûV’ò1”>Í{''l;žMr¨ðEIÀÆŠãÓà¬l|l¿‘Ôä<ñr ªK¨Að°gh„ݳn½øgÛ³e08`©…·s?ÉU; Î6ãG?E÷óÉï¾Zq}Û—EÑ?#žX=Â8ƒÍÔµúËÆwìƒô?9ºמ¦ÕèÛÆ‘µÛnäíå<:çû©ŸK§Lñ“°*øN¤V8ìÆãÜîÓO/¡òtUªÕ[kš¥UU__Ãä1Ž[œê˜gqØwƒÒ{lm6œ8®&ãa°Ìäz'ùà²/16f†Ã###™™‘‘Öl<ó¤ÜtEMNGyÀÄào8óÄÚm56ššššššœMÇ“ßól¶;nÖÚ‰.ÊvG3¤æuFh$Úiöè,J¾V•UUG¹­þk-UWÉUÃôcù꽺_Š“¸(ŸHw'«wõ Þûº'¤T{C“‹ÄGŸ§Z‚­ñ‹*®ˆ g•ý¿©`m·`ìÎÙ·ØïOsØÃ8›ï[€¸öåtö½ÎØbI:ß-`èj’ìw­’™«Šw{¿­º³×áב‹•gÓÙûcÍÆ§‰Ñi58دödEÖ¦£ "¯1ëÛ^mÕ×Kt¬o*Ki´Ø(Õw^nÝ^ˆ\ÂVÃÔçMTýFL'Uq‚~ýPç~…-q¼’eõ¹çÖI%JëVò÷EνWçÔû~ÃÀö;åÖÓ><Ë VïBøˬˆÃ7â¥Ôê¹Çw< lÁz Ö.“&µ…YLHœqôîËSµØºÝG× ×ª]WåUR|3mhIïr÷ûèµáE+–•z¨ó¶«õUb©\´ábÅI+îÿŒ›îÕñ䇶‡@ïƒ÷ØÎôÑ<>_£›Ö÷*ù`ò79zÛÉÈ}~O&NÕ¯>N^¾‹¶\?)ù3§‰°ð=ƤuÂjª¯«ð|·ÝÛË¢t³ÃÞ¬¦’{·//=϶ãªÜ£8ø(¯“Íénφ›\Í5P%íÇ[²æŽ‹g=¬Ú‰]í”|½ð|UìÊÆãRH»£ÓØ:xõds(ô+$ü—Sì/ÈC}î¿äúý º€—¦”Bó=:“‡Ï_wÏò™7Œ8â"Š9;—ãÞøŒLvDžI(¢Lw¼Õ”dHõáV¿oÆ~àâº%fcò×”}:äOs”Ö‡¸b~µ_5dn̳îM«‰ÂJÄIŸÖÌL ’I]Š¥ôÍZcÓØê'qÞx'¼ê9§¸óCÔ] òäÕ×ç]ÕÏ<óÏ'}gKC†¦aêG©iš¦çéý=ûÖ4µeþe ŸX‹Èúl(D_ª-#€DRFûœ>íÙ!.››D–˜/1qÀÎÅæ!²‡#–Ãèìai@ìÍÌžíA?a&…ÒŠ®Ê¼“q+ÑVÛWTÛävq‚•6ªUUmZºòo¬«–•ZtV—R«&osŽÿ—„îÏ™üßÛÿEòáîmóá§Ó~" G.L墡ßëHÑ£Ó¶|«ô[cªG–ÀÙ'ßÝ넞#YæÆ·©·!õ[¢êôåú2…D£ù8ÅrÑâ¾8?„=l¸yÂöÕÎWݳ|³×§v<6ß +ù/°iºÉY£LuÀRVòÜçüÍUƒÜë\U³ž.Ðõ £³ðÃVëºþ^LE4ºî€Í"8M~‚—l•$”ßï«äýœyÝeÖ[òØ :%gê~Ö‡Þ»0¥:©~ºó×¢vòßv-ªl޵êªJÛ0‹Ç¥ÙÂQv¿,é /Æ}1”ëæv‹¡;+&§k«k¾}œþHX`|øþß»èÑ!†Ìé»~UUŽ[y°Øl.ƒ‚|„/…åîÑfÁ˯ßÊew>U!Ú~N½Â~שüýïÏŸÆm<” ½ëÌÚû—x–h1Øéô«·ÿžlunhsŸBëÆ oë‚è„s‡í³U‘`”Ð̉ڨ*ssµzÌû<%.ý ¿7×§íïÕåøÊþí.5¸æü@ L½kS”h*ñ¤½; svqó:}Ðáï·iëø¢°HQxîÖX89»kÆ8wk‘g?s<`:Õ€‚„ôR­^ .ÆÝ}q‡L¬ß+ûeÉŽ6RfËõµy®×ªB3K™_$“[ª$Qi›±vѦ <µ‹œé‹E™ÙõCÒvWŠOÙqb9~µûÔI>No}¡quúwÂu·ªø6Ýœ‚ä–ó)÷ëm»Jº=9ù*,µþL>§<ñˆ{—•E_«äE·?:bÙÒ“zʹPÜçmÛî‘…¯Útwc%öY;†õZ¯mÎ>GçÆzâó5UR£ÅWL¥ß³Ðý[¦7OͶÇy×fyOê…®ŽXmû'*AUzû‚ŠóÊ ðvÞÚ™o,\$¤+;³ˆØíIÜcÕÜë¯zû-’S*?låƒâR×hg>Pøe&¢îiGM1°Ÿ&™‡YB,ì~9@ã®C€šÂK~ÐàÛrÍÚ÷ÍçTð…Œ@¹öj›Ó‘õÓ&Ó'ÎC[*RSåYÔCÏþj‘„ñ!Àu9t®M=OÜyúh›§jòöñaf[­¿ž.Üš’× *ÞµüéºaµÂSÎzD#ìº;a`~ ý…ÂËÓÈ…$9ìÍÃuCg>è+&­WAœªVاým® –€QPSGÔéò g{ĈC…»ðŒ×¿¯¯†OJ|5Ë…»ó§]{õRx)¯òëK­Ýd/ùöÀZôOeÂÖç¤å§A$’Pô{€¯—_Õû§ÕÎrü¿ÇÅéè¥OXE-qQq G‹(¯'¶pÕUÁxòuY»1)_l?ËÙô[Íê9ýIt­'áxwGÜ¿=)“ð6\¢‰&6Nx DŽeL·/I¸Þp;À‰æ«Ñ©‰ LÖÒ’I& 8.@ñkØx3ÄÖ§Ï.N*÷ñ2È«h[“#¤ÈäxG¤âz æã¬æp8jÁp8Ààp8ÄàF¬Ààp8Ààp8NÀàp8Ààp8Ààp8Ààp8Ààp#Àå‚àp8Ààp8#8Ààp8ÀàF4Ö÷@ÔݪþcÇß˺N7rîÒ®^Š«µDD“^ºŽF'Q%§³–ašþŽÖ^ftž$æ¢Ó=öØ®©±³m¦' »rÃ{?{¢P |¶]i2®y¥„s]Ê4] ]¦÷WÅÚºÝS^ÊZîc}—M!‘r«ÎKÐ]Ь,ai;<Ÿé»Ÿ{Þ:V‡q´àuÙ¹º6, 6~ÛœQ¼ófÒóç=‡Q™S‰&Ó¡–FÓÒTÞ^uÙè³TwU›§C›^ËÛ¡†m¬•ÕGh7ÇNqk!·bì6b½`ïФ*• þd{šÙSŽk~jÜ™0Ì“‘%I'JÌë1OÙò>fæëUâô|Ÿ+ßq¥#»3YÃñÇùùâ6ìN6ÍsÅU›:®'}N]îvÃìG”®|uãuÎ,:Ü‹KiçÆû?‡¾î ¿3q¿~1µÑ`º5i©\ô»¥‘¡Â\¯7<@’vs NÃCøÎoA q!™vš_p!%C”>"˜0‹àÂMAy¿ÑÜt¢/ð[m·~ÊÎ8"un¥’ø¼Ó ½u^*¥ók~>/{«M*ªº´ó]³H锨¶*qé„lòì"¼UøY}ºH"V:œ™œ±Hé)ä(šK×)½z,礦Rü¥ÈI– Nt£bõÜÆ<ú“§9m**?°«+‘U‰R¶ó‡M«ž›žV∓˜výùÉDÈË&Š@¤,Ã`îT QI¼¢úÆ÷ÿŠ"åÿøùëüÚý¿û$ÿ´,¡@#`þ¯ûϨ´œwIÁ?»ä©»Bÿ³üuäÃuPóî ÅþÕK #ºy3åæO—ñpøxA?Ïœ(µQЦŠ*è¤SàNIoçÿ«o¨„2È_—^Ü~|_Ì +qÄùšLžç?D”mÖ÷zµû1”H—èægöƺ1@·>첕/÷»9çnX‰ãp2Ö¹‘½SsÜJ2¨àB‚i¡ßæ—úÒ&OÍ2jmhW2=ç>Òâ°/ê‡Ô3êtÚùÉ_$"P€Þ#´n†¯€»„GÂØ¼ý,Ëõßöýš–1jîÜüúŽ«‘zùøëoûç–Ù;î6ìöùö‘­¸Ç]u×Vê]K*i}( Ò•jŠŠÞ]Ž7¿ ïÂü,à ï¿Zënþ‚ýøï¿sÌõÞkÅ)ñq×uXÎ{Æ5£Þª«›Ú)ç^swyÅßYë®x磷]sÕuÏ]uÏ\ï¾ÛíJR–RûgmÅÔ­Öl‹^ùÆûï¾—ÆØÚ: 9™0(û¤÷™D®YR6Tt¡uö>RÊë±q­+vU¾Ûl¥m‰{øy®5߇[_=c7ÀÇQÎyç8ñ3Ûø>;çloç´osÖþ8ñ¿4^f+®tµ¾*û\·Užxññ®û¾y×\ñ´¶ãÆjóã¿Du Kãçqu5ub»ç¾ºë«Ö¸çŽyñÖjµªÏožï[u¿;óŠ­úã®8箺랗]u×]uÏWß}o¾ûïsYl(k¶#adû³œ­Ë7R驱Oh}¶[ ÑåõvVµ¯¤L#d´ÊštYTVÉÛmk\GØu[;…ÖÚêÖµ¥/Ón7]÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}÷ß}ýu×]u×]u×]u×]u×]u”ùŒc®6ˆÛlê¡ês‘®|m\kYæºCÁó‰ï©WðÇ{÷ãg ¨±¯F»ã:ÁÜvkoˆð5â1“Å÷ÓJÇ=^fbzèùèw´rg¾÷»Üõ×U¾Þ÷Û¡Zˆêºë½m¿Oë‘ÇÇ<ão\ëž8Ö5ÙÇO¼â纇$÷·zùë=s¬d÷'—\>Üvx®Ugyž•½uºñ•ZOâ5<îûs¿ŽzÌ_#åãÆçÇ\ó§¯p¶ïžãªÆd^ýøëj[c†Òv ²ó{MÙ‘fVãŽ.ºë«u.M—Ù9Ù`°Yyv8àü.箺×]u×Z×[vºï®»×AÏ=f»¥=ç\sß{uXÎ{Æ5£Þª«›Ú)ç^swyÅßYë®x磷]sÕuÏ]uu÷V´­)JRÊ_lí¸º•ºÍÑkß8ß}÷ÒøÛhÞIÈ„ÈJÝ'¼È²£îÊÉ>ëì”å•¶âãZVì«}¶ÙJÛfg‡šã]¯_=c7ÀÇQÎyçljžßÁñœw·ï=÷µ™Šß-oŠ·­µß}¶yæ÷ß\wÆýÕEw×dDo Kã¾ûÎâêjêÅuÏ]u×W­qÏóßY­jsÇã»ÎºçùÅVýq×s×]uÏK®ºë®ºç®ºë~ºë®¡õÅlwîºÍκíñ}b`ÅFöûάÕßw®ùÏn7Öxã}÷é»ß.ÕsÍæ#½wµCÔç#]uµq­uÐçc¾ø¹ï©¿*b˜½BþÛ –rÆ|[å«´ï3IO/'mz ›þxÍ÷ˆÏýv·ýƒ»ÿí¨¿–ì{›´æAW±GW8l”W¯»þîò½nQS­Ð}¦êG&QØ@TQŠÎA³´8.=ÍÄ«E¢PLAYwxô€ˆžà@ýÏd-x‚óøT$«BHD`„!q¸mmã4Ù— TrFõX*…+Of&ðDêùþß`@?IAýù¾ÿ±ÿÖ{#k¾Oaýä¯í*‰øwaþlÖª¿ðåûÿÛþÜ >ü?Á½úÌ 6–2?S¿lÿžÃ»þ’c5nFÒgd;ƒÿw7û_ûi w²£³0Þ{ï§ì…{»Þ)þBÚ[î¥æŸô¶@8ý$%Žþh„š 9“ûÙ×âvGwšá}±Èa»–ѯÕ&|èê?Õ-'BÚ5üuyßÙ-9­KλŠÿ‡?êî<ý¾žþÚŒHpw2MSЙ&n‘è|&w,šõ|Í"ŸW!‚!d>u`yÙïa:»0kb|ÉÜë é&}28¯—çÎ«ѱããŸÝãÍß¿ã+Ý |-ÿIÛsŸãýÞá³ ~wôiûó5AÓIýüö4G ábyAý©:¥Tÿ €O*d@çÜÒS+Ñ^ÒÊíJ ˆ#H€c ò)×']áÐ"(j¸UiN J#´ í½±ìOô³Ã‘b³ŠÌž–~Éù?G²¼Ÿé¼f´×oƒþõôxóÖžW߯ÒüÚµ0$}Á€qK hºÚ¨-ÎýÎ«ÌØÛ4P…R˜Lþ×Wkýê(µûŽh-ñÝR,ÚNrå®óãË^5üJ®[d¬„˜“V%¨€Ä=X©‚ CN÷þC@m¥4sžóNzÎ3U$ÅÔ9!æBب0U;YJÂû‘\ÛúÿÏÞ$ʦԵdd¦f”Õ…fš¿ªåA©¡©KIF¢(²„3IS,ŒH¶Y&´A¶¤”@A/, Ù{¿×܆ÿÇ÷¿ò¹Ä ƒÛû¸:”^#BSRо©ÈZGø¾p4Ÿõþ¼x'™ÒMÿÇaÀHžQ¡‚ ?Ãóvòõ{:i$Üý~`¨)þmä~®=¢d¥)J^nO7š4¶5–Ye–èårJ Qbƒ®ûïËD"€%F?…f_”i—]ÃdBKþŠ1(€}<7‚™È OgHšÿµb~ÃéÛ¨Ä!>߬ü¿‡¤.'ÌÒû?Í$ÇÙwâgo:‡/¤góÉø—ÓãÓ†¿¯ñµúèÝœp,ò¸ÆP¸B¡@³qŒMGÏ‘¬S_¬3ÿ"þ3PÐN‰ ÉÂsÂÅ]cèN0žµîöŽÀýñöP}vuîÛShÔùèØh©ŸôÈèáºãà›„æOÁ£>‹íÃBà?:p\SìÀS¢M³Ï[ë4ÃÉéߥüñDµ¿8Ÿléð4jBµ®&ÿÍuëö âíŒl$PUÇÆOì …æmÓgŒ0Ÿ›3}¯v'f þHtÝÅ n{aCUÎÁ&H§Ðj=~·wx¤$¢DŠ1‰ Ól4CC«2uhWY”R%%²WÕ¼^-“b×*ä’T“-¢ŽÍtÛÓ[À¢’Y×è» jIJ¢0U3ò¾1"i(¥ ¡’V`û»b®¡JŨ5-)¬o<òŠ5²–+Ÿh£d¤Ú7Íþ'^#*"ȲE )P@-tûAëý¿EŽÕ#ãöìë”$ÿDåsàóä"ßkÚÁ˥ߞ1æ—¹Vwõ[n'+´>XÂx¾A•=³øìA©câµK¸€¦cÓwþ\-yÅ>®ý˜=^Žš$Þ|=ú•¢h1 „Àâ¤óYø,Àúº ü0?!ù¿·ô}^_žÈ…ïñÿoõŠ‘}IIW¦L ü(úüÞIU¹Ï¢«{&_£vd’”j‚0‚?3 ä‚Îå$¢DÿlÅØÍxr:êÎå\xþ ‰.¶üìÆ/ýÓ@èЈ‰¸mü3=‚eb40Å5ò=D—_é"_7øf=A`rwWœÜö÷þïÍ5þÿ¤X.LHPOO”¦A?ˆèXDzýv¯ *Þ¡Í÷%µþ·§/â=LúXˆŸhºÏƒ»v ?…>ùøBÌ…ÂÓ/g@KöRã¿+z†¿mÎñ+C;Ù¤èàÁÏí ¸Ö&5±üÌ?¤KÇìPk‹<€;Ù4˜@µÑŸÍÂ!ˆìê?¢VKéêéòp£í¦>it½¾j­<›Àp‡»ÕFÞ  Pq÷D¾JuôÁ&†+ô’@"δ(— ²ò¯l­÷:Àë(³h[2Åw‹ž)ðr0­Þ5tPfl!™>w¦Ÿ ³H¤¢¡-óùD.7ÀËçF«ì—@Æ` :&©Û¥üvki(A+§rŸ…îZ«ø]®CçÔu0г79l*¼–8³´JùE”4‰g'­cƒFâ(r0ãƒ}èÌÁɶåLƒ”8‘°Ý^w;8+¨ŽÕW¾­.“d¨å¿£ú™¶§©/j•ããM©^d¯âoÓÔò¡Æ™© ðg!â|Ãí®1œœ÷ž½xëíl6ÝE0 ;fðú¥¥Q1F"e\à¿¶8îKc×UÐù€ó%•›=¶ ©€úÞÍókÜ=ÓM4‘”(2å ï’~§!‰M¦"”ò&úHJï`CoHòàÎgð?AýŸ\ ,~¤ý•aÕ;»'O¶`‡’pSÊF7C86F!ÍäÊÄØX!ÑÈ1Œüüú]놢÷æ©„ þD°f±}‹œ u¦ÉÚ!ÑîU[Á-ñ°#¯èÎ/ùÊyh¬¶eVŒ÷ ëì­9 Zlñ_ã+ua\>ÌìòEþ‡~vhoÇ Š²Þ¡_$±ÂÏ ñ̇#à²MƒMβºá+±óS£·kõ¾þÉÞî=€ëòCÑä^ꋤéÏ*Þñ‹l íѨÁäúÔ •ën6žN8Þ­›mBý`ÜlÞ)=XeÛT”7ßÏÅD ¸óãøõ¾8}ÝTvµ·}>\­¦¦a{©¿½å1ìÝ¿h”pÜÞ/S/Ÿy’¹Ÿ‹Õí4 > |‡Ü K‘Ör¿GÞk û#ÆÞŠÇ_“ËA1Ò â\ "*÷ÿà·þž[‡VÞÜìÛ~ÃèÐî5¶½IÈ+*<»è«\ÒÑ^¸mÓ…Š{Tv»žç%KŽƒ“¿³ÿ„„Dм,µLœvòá/3øjÈÔ]fñD?|7$c{UÓýf˜ úcu‘ú]1.³`šÈvRáú¨Í‰"ÀلΔ@ˆ1‚tÀOò¿åJ‹ê©ÛêÕ ™x¨=Älq'b¤nv–(EG‰O¥u9rÚ–Tn¤C›röÅŸ˜¥å6zò°iëý#šßÓ¿’z ¿ˆúA 2äP>3X™R xlò@’@y(äH@:`ò„"ÓçÑÿkjŠjÀÛdÃÌüœ¶¢?D¶ç/I王sE*’ÅÌŒ CD2½îêQ¼$hÉœJ¸—:f̤•ãëÁðLùú=í¨ #ïªUfÊ·îž&y¨+÷|z×µ7&óÝû>_úýWób©¯jmÞõ&M¦§¶œÆ0øCñ—L‚ÙDCOPÄÄ€¶û-ü¹åèÄŒ»ü!¥çkˆp¸¬#;À±?æ]¤?C‚¦oñ×úŠ9µ Õí%µÞƒæŒ^¸ÇBðÏÃKýXÆáÉÂ8óßcÚ×ßPÖ]AmmuFäY]nHFKÓä`àð£¸XñöM35)²ôÇwñÞC 7šŠkœ¦å‘ À|Y3~T>'&~u¿nÒ£Ù¦s“Év\uCÖÚ b#Ì’ƒù» 4µÇïôu~Ôݦ´Pu.:N¬HбEÇÞ]g#îà@{}¼lð×Ï¢m!£‚`ð#Ò¿‘ßsݾu~!^A»ó¼Ñ€põIÕïq¼³›x’Œ²pL#É7l»–,`bÍØß£öpC?…Ýÿ‰êAhí© bËw8Q–NŽEïÿ:ˆÁ†Ã°/l%-ü€ýŽÇoÎ=xU„«à%y¯s÷ÂÀ/o—ÊE#_—8>*c)ÝRµ|p–œ$3óé_h¸xà-•µINp—VE¿ÿÔ뢻‡¸åêvä¶M×õ¸;Ÿ•:J„€[gèŸ!§­!‰Fg À*:ø€.ëš¹Iâ»ÆüN°d,AÅ]'>Ád5j»—iÒ«¬táÑxÂŽí«Û;|9çMÈÿ³²Ëuˆ·* d%7žâ?Cáªð ž3TNç .@Û/W:@äÚÓøÚñùØÙŒôÃÄrücî}€G¢=øtù­ êíÙo'7-<îï Óž‡©·oí×1˜¨ó[®à>/Ë’ü<Áôø!òjîK/þî¿w'~íœGB´´åñ®÷§os ]üÖó[ާ Õ!¦AÀ ¼ÝºöÁNóAƒÇŵHvéíË^¬e ì–’‡Z _'ÍžÒ!o燫z ïoÙnO’îä~¿DÛzÐ`“Èm÷Aþ1%m‚ÉÅšù €ÝÏèv@Fâáäéþú[Ì} P[£ÑÒGgJ§QR+ê« ûu»„ˆÐ®×éxsà\¡Ê ¨›RPx†ôß ÁšçQ ¸tsªÝ·é²lGïÀÎX(‹1¡Â`Û+Ë.C:Å~nÈnÔG°7ÐÖ¼XûÀýcÓåwÙ"yÈôÌ"OߨÞW¿µòO;Kr„Ù¬m‹óÓ­¯Iµ±XŒmK`ÕæVì*6€Ú:j¹‹E¢Å„«©"²hQVŒb´mb¢Èš¢Àj*Š0„2 RTÊ hÑ‹EA£FÛ±¨±¶ÊÝCmuï¶÷*½ %j+—¥¹c§4cE‚¬hÆ‹[F‹YêÆ4Ħ£\..Ïâõ½™‹ž‰½ÿ1UDÚïÕ °v!Ä%€…+»ôtòr÷=¯ÎÐ+¯\~|¢¤)øRÚ}=â;<ÙÙÜ6ÅÇóiÌk ¢šmb:§‹]jH„|Æ êù'yû¶çç•_!ÄäPå=‡5\«T Ü¡™zH`931A'§r[z>F«[ªp!ü&i¾õÄ1MZü³C.UÃ;6£eeÛÆwZ &á¡DͶ¬@[®×èB4ýŸ\yg|-gë+@&º¢ýÝQ?¦ìøÀhÖ’ÖF¥óX<ÿ¥ðÈv1 xaÁ2‹îlŸ‡o…tXÉÄ'Î8zH˜‹”èTB*6 c˜.axN`:o]+°êí¢¸M‹¨jƒÜ9v¨äêð1ûº_uÂÔÒ:òAWÕ¶óå>×äFÓ-–„DÁéi÷»FŽÇÏ;"ÃÍÎ…g±ºn|t`î¯VœCàèöëƒ}’¢—ó\0À†?ÂȈIJÚ/^VŸC°è\[1>o°E¢aº¬a´‡@‘e@„Y¬uö=Û•¥EP­Fûr®Å¸FÁ@²t@¸¡ÛÈÜÀŽ’"¹ˆó;3‹qpÎqxWf*ŸÕÓ!Ö É]Û;91üxê3H—P¡ÁQ™I¹9íÌp2Ò∈,@£nšÂÉŒ…ã„C\YFÕ²Ê]Çsù±â&§:ìÛ[£‹ ³ÑÌñÉ8j»—ÄŠé×i8´µ0Ä÷ynÒÒ €)³ F¥_¬pˆÖß^åpÛŒõsÙV|¹îÍ@ID+Έƒ îÎwu ý9¹%fåö¼…ü2SÉ}ó²=!y¢. ¢Nb\š‡wÍ«wE‚ä¢*¨²ÝšvXüzSZ&ô2µVî</– ,ß@ûÄ´©öê –ÛrÜE·Æ‚¨™ÛfÞN¨§.¾¡ 5j+…¡/#Xè¬!’l<°—Á0OÍh°˜cÚy ž¶¿tqõ¨ðç¹nKAÃdQ°(Hiaøò÷{#§?ÖÉë…á.6Wªm+*‰õ—¿ök‡˜?ïÃÒ¾Û^Ðö[€_6pÙ¢,ÃËæúWæ–=2ý0ýŒøVžßUüŸK*ºeÔ1ý‡ßÛtÀ~ýâ¸ó »,ÿ{µ6íúºösFlæÕgUR<í:íºë]Ÿ\„ç Vsæ9 t 駸قô÷Eç Ÿ 2¿OÍÉÍ».ï  ¿¡-ULI: É=eåçÁƒêdÉ'EË’r’óHµA&É;:88lÖ*½+ýJ÷«OCÐñy?#ÂfªªŒUÀBR‰%$†ÊNL~k³ÁìY2a²œ¿ cGÁüYààR“ýÆ©86gÂÿ9Gâcý)l“y"W)6VÄúžM$‡…¢á’$”Â)º^§ÐÀ¼ I¢J$À…'ô$“ÇG“ûšUWVœ«—ÄÓ…iÚ륧WÁ·‹ª¹Iò:2h“Ÿdä— »:ƒõŸ3#d„¥ÚÁƒÁ—^ H’WÜ¿2à I´—ö/R프ª$¾ÕERìõ+Áéy;9W¡þÆÜ»žå{¸m¦•à®æÞ×-¾†šiïtrô¹y½¯ÚÛͧÄÓm;> ªªîz—WWW/ù¶åíw½OB«ÓÇÍù‡·±ó>`|ǧ@®®÷‹³âm]Ÿ#Jªõ=¯cÐÓÉàïUVÝ•^J®\¸w½ï‡:Ê¿+oK…z^õz¼Õæê¯J¶¯B´®ç{¹ÙÜîW/•¥~?î¾×ÉÎ|Ÿ™õË«×4$©k—yÐ`^,X’ZåÃJjù­°YìºzTtëñi Hñá3Õ^IÀÇO…’K¨g ŸdÖYã¦þò;6ŠüÊ- >Œ#r·«æçÆÞá¬Râ©kר§ÞPmìœÇÙ·|G }·e×<¤-Á~ÿëç7SXȆßÁ•óL_˜gxrèeÈCÛÃøõ‚¯+,]ëŸ*&¸Ãûº¸’4¾íòš ØB.¥C#ˆ[qøuÛpòt{†Jn··W4.§•®[pO拃¬BDõmÏÔuB$Ô¦‹“Ø?æ˜j’§%£ˆr (8ã==|¡–¥n ¯št…të§ã€³ŒóÕý'·»(xž‰s"býs]"2yƒ^Þ§fš9®1ÅyÚúqn³Û>¨ÛwâÎã;yž,2¶sYÉuyÚØ,íhNÍYz3½ì zzOæµÕg[¹HKÌ…[g ]ÓŠkݺMcà¼eÔü>á€ýÃøpÚ,†Á¡Ú<ƒÀ|ã ñ Ÿ†òEÄð}Ún`ÌH}£õ÷S»Á|9nŽ^=Õÿ†‰Þbšµì\„röŽþœ=” m{-À’$ZËù±xA¥ÏôÛlSëw_¡òò¤¹‘9dšÈÓÃc¶Y={QŽ3 8ÄTb6ñí‚LUn@•Ϩ~.†£ªè<Üt½ŒBDc* <ž**q+½ÝÁW[›E 8ý­Ð¼„²3ç hö“«©òœ…ÜT)¨Ì ÕÒfâJ³:r1¾ûR¥ÛòLƒ—¾Ï°€a-êˆÌC Éè¾AÚš¿k¶"ÙÑÝßrP)¬¥í*Zþ]· z¬ëX ³K€QÝLo±äǪÛôZ»€÷€eÔn»PíS†"å]@f-B@_aWÁ|Ƈè9²ÜÅ𠬄¦±ÀËÙxŽ„· ;V»\‘·DÃÉ<>"í RÚéˆøì¤”ìù÷&‘!?™:¾þ]‰˜$T D¤5öÏeÉš²Ûge’}ÀH˜Go,k³w>|YéÓ{ö¬7èÁÈán§hPVǶÛ\Ø>¹P®«R:EƒX×tâ-Ž@à9€Õv†X0µ‘-Ü¡($8%Óÿº@’Ô}ý÷yÅY݈vCOÜ« ªƒr6dt“‚éµè's²x©øèÝÁR#h€2çw‘Öï'ìöé‰eœälU YUU’ŒòÌôfìKâ;ƒöÑ&náÃÀn½¸€àwa~#Hº‚C™R€1 Ô:,±ÖGWO5÷@ˆGéÕšÔèq{/t×wÎá@èÇÕw«¡ßoÚUº¯Dû€þÝ]wç^ŽQgî’iéÙ#f€@)ùüîæ(J8ñMëL]•‡MqsœµÈ¯Ó&úò­CBÏ}°ðû¿evø‹ç; ¦”ˆ#‰Èr,¤vsúÉyßìºbø¶7“ETöX`‹øKdoš}ïÁóõì>!rÒ6l†&Ës³—ì¬0Kp°¬&±s®Ykû_lå}lÙï_Û›†°‚/ü@› .7†²÷äÃ1ÚF_ï0ó.c«ZÞ¹1g³B¸Ùt…pQ]=>˜\èAÍo“ÑúŠú5;ëå^_ÁÜþf#kƒÿ'°ÿR ªŸæ{ï¨ð\½ÀŸkÓów©‘tûBè­€ˆFû¾=#¬“ËN‘}B±hýžM_'u}˜Gg¨9Ú×LÕ˜+cŸ¹Ú·ÁVC~ñp‹¨6ït3t Ðà1êg%‹I†ã<Ã9ÞÆ ñ5s½ãñÞ^[n»³FûB‡Šë[ÏÏïáùòr„D,ÂÛPèPz\žªâuˆm›ˆÃÛ­v]ø~”9Ïô~þ.aZ¡ÿ™HÎQ 5k˜Ó]ÞÞì`>ïÛûw~9èÒý§»0¤úP ÈÓL4šRͨhĈ„M ¢öîpÂÎ>¤>k22l™)òL?j\–ÁJyÊsªìç ÛfÍ£ð“»`&¢‚;UµS7ë–‰ à߭ζþy™hDAÏÁýÎEøK~^¬!ÞTÈŸ×4Ä\Ì?ÊÀ†gœ’‰Ç«ôpîÞ–ƒ¾eæNyûÒ}¡ ó§P~¤º(¸%ÑE…¥cGïžNüô2ùmT …ÿ9SÎë˜ ].¶;NQâ:£˜èʸk†’8à SD 5 •:ÝÜàActœ,åäÊ÷¢=ĪC»1p²SÞqøû;y=œ{ømEh#AÒ®ÞÞîüå:ûôñ•Ý·f¦ñšë»2/Yóp€kßÈ}?_J›Ž³ÅY÷.ËófõaDZĜ|Mfx;»’Gõ<›ñO =6ùò…\´«íøT™ok³ooÓu­ãÏ«Ž©´ssá8Õ¦Útsò>·©ÜëåYøïÅî> ÍIÜA„û:Šõu›®çoªù°(Tä›ÞToÁƒ¹ÂIâIvVtû+–Ù'¾>Ô%UC{ð¹z”õÑÅ L::·Õçû3õª>j­ôág1™^/÷{¹Qm5‡Q<¥Ä#ø1i¡n¤½*síÒrq"šæìónTfM  1U¯ÎmÓGmÔ'ªh!08äÊIà¯gt,‰$–Ù"m’)‡Äjñu£¸9ïC܇ºâ2Òù±-ö´.Ûö¶¹ÜV8Îjz¹ûR†Ò„ ¡Ì±x‘å’sËŒ´µ­Áܾm€lóÖ‚€§ãþßÇ£áLU¸á‰ØsÖñ#³AóV{'Ì/âÎã£Öêš ÚÃH¿lœZ@}J Ðœ“8 ~eDN`P'q¥[Dõ_D—ª!YB3š…ÙÑà GhöÃ᱉LHÈN͹ãgƒÜ7j‚ìQ‘SÀìÈÖÈÚ€r;›|ƒâí‹êe‚¬ûà×Ë94vF*¥®tkÙd%ã=¶?ʸ´ ­Ã¡o˜màˆY¤7í«Í± ŠB6‚ Áz ÃÃØT;H¡ŽD²"m3ŠU{Þ¡Æ„s Vùe0‘†.©.Š­'ÏŒbÏTbõ ÓfÞh.Õ\Râó7¦½Ý=~Fܪ®+*Û^Ï:|XÊî(ðaqš…aáXN1¥LöÂôÝÀMÖÉ‹(zJ˜ßdåÐÏ{«À.Â6‘@ø3æê¨ÝçÌëãJÕܾ ýôåª:\÷¡ CŸ‡~ ±UTdP27nÆÐ†((PEùh”4ìß!¬‹XrukW =ª¡4æ¶ÑvÜ´Â÷/++õ?.¶ë'v 1mÞô³Ã¥×e’H r9u¾ÝÁ·Ÿìä€ñ„OrT9ím¶â¾Ù}dxH.CìíìéÏ}mòœóv®X8¼£¢{µòðìÙ d@è ›jŽÓý-Õ°‡u\9Y×½Fm¡ºÉK@Nê[Ñd0vçOxÿÏžGƤ}^˜›çz4Y“ÉrJ$’M îxöšÔd—9™0"“x¢³õ’´Éo6ö‚°p\b5Llè–ÝVã-F>í¾bþ‚(“É»;ÜUã°q±BÇŒú6=Ó5ö½Îë¶îeÓ×æÛ¸›¥ kŽcG£ÿ†|õ¸ð%EäXÈÞ†'Ë(mŠ-Å­’"…¡MÞU}škiކêv˜»Œ5ýbkáQܰCüœýݸß÷ü\k½W¬€>õ —ŽH€z—Žöòƒ¹YýYž«BØ;=͉$“‘E$܉`É•8»} Æ"/ÆóÖÏjHýÅ{™8ž·•PÝS a³ I©T{Ûº­h(ÓÁwû³6Mgµ%ü…ow'uð;µí <¿ ›®êÞ?²ŽLèá±Ý…܇#[™Á ˜kg5‰½ÑúSÄgäòbØ~A¯Ùãk%££T‡_ëºZBñŠZ¯ ;‡—Ìûc.«íÌ¢7zakó‹ Ar‘¨Ú2Ca®©ÀŽÛžˆ-( Sä±}Zô6HÆM?èöL$[eŽ<ŸƒûðûmŒ•|ŠhI‚#Ðp‘èÞ=dOP¾ÙfŒ9o__µ_éçõ©ÔÁçN.ê {¿ aÙñ{KVûHÎÛ¡Çj×äÝO‡SÇTVÔR""6F)RªâQcQX°àØØÆ68@ÊÆPÌ30lÀ˜´IóUÒc‰Ó¡×ýºóøÓOOˆßì‡&Ä‚ë™k‡&Pó+Áï  À„yHB=ëóýtÃ#V#ë&~Úû”sy÷±®*8B Éà‹Ôp2zè[G¯%ÛÑœò#óÒ4Šs`Ù¬ ¢DêLˆTÜÈ{˜êMC™å#û«k•;€l~Áîø _´W‡!æ\öE>`XŽ £O_9z7?šUÝvÍÃkÅÈ~_' ó—UGmö‹Rhìˆ`¾?Ÿ¶6$@âi@ÇAT0ôª2@ĨVûÒàêà<‰TpìÏ´VG·ï}DŠDª”FN…I}î½u襉ì6ºÆ£dyK'_g>Ðð#³)0ª§XdÂÑ«JÔÈW'm«AñÎ2tTlí~ó× ãe)x±6¨NkîDŽÞÝN †„T’‹äí$å¬áò€ÑÚ½H÷uQ0iË­-õ2·"%J"áá,ÛοaÖžJëHî´’I»ëúТ" .ÆÙykRI:Ê’Aû¬Ö+O.¼œ°è¯ ¹^G"Þ&k¢}ðMÎJtÝÝR²зb¹óQg+Ó²}Óx}…:ÊTs¸0±>, s{TZt‰*”îî?¢üž½~ÕT×–Ø2'bRháR„›ôWv{éj¼6›–$&Gôb-7nˆ"i"€¥†ùNÉŒ¯ââ}˜¤ªBZ]f™zµ}Ië÷]“÷,²PŃñ8¹Ä”¯ÃÕÝà="¼<Úƒi€[®v³ÁDX"¾z')w«Qb™ª¦â‚Ç×¶§Y[ÞÙ{xñß®Rþ’Ãÿaò9ŠrZ£Hº^ù´^W²v¹0Ï??Só.eäG<Ó7¥®P›ÁÆ HšÛ¸*Rzaì¢ZŸ¿4þ)Sëì±÷÷â¾B%ì®:T€vq÷Ë¡-Ó®¦Ì‡S¹D“ío¢§k—G{¬f©íf¯!ÓS×ãÏŸäéõÞí"+ÖWÔ„bòÙ=éÝÛݵŠúB‡_tò$ˆC¨¦¦¸Êzx]Tk쀀¡œžz…µèâg÷úã9¼sÖÔ&µ³ì”u¤øœq¸rxŒÚ¹_P @“{ÅΈˆ$ð3úxG30‘˜¢" ¦äMÐX'æý^X âôˆ,ÁŸ_Fvà0‰]f·ó,¹ýJã¥!äw&ñÀ1tJ”~¯Ï³«£¯´þ½øtmØ;³æàjÒ@w-…æZÔYÒ-°9È#u¬’ÎØ`/êYƒNNNxiòkg—p”:N@1ˆ«±‚7Ú½±Æà½eiEsצì[nGQíp­T:SÑlc_­Ô=óñÓ¾q*VÁp»’¥*#(¯Å?ÚÚ_Ë:ë·ôïéèˆ EÍyÌ™Ôÿ„јïQ^z`‡Ø@‚#ù¸AÓJMܪÄù±ØX\ñÈ6†_jò|´ŒÈq)³ †€ ´ ´é]³„" ȶM‰ çôhÑš§²ÛÌ\:qíìù§Û`Àf8Bú›”®ŸÓߌÇÛ[¿~]󡇓ÇSÆ…°Š0„^Ö@)„š-îóVÝ5âNÛø<=yÁ›$ëì îì¬mG1::¹7žš‡_ð£ÛVb–›A!uöãp´¥òã”í']îLÊqƵóuc6h:¨”´î>dÇàÇ…œŽº7¦Xox'w†¶±dP®½±5b„:HÒí±Üè¥=–§Œ¼º°ê—{ƤÈ0&ˆ— v|úÒ€Jp]ÖÓV¿,#ÌÔæ¿* ±†1X„nQʯDÐ !(!@?z0ëš}½ *˜ ©ãp³ŒÏ“ŠóÖ›9Zîj…é#@ûUA$‘eƒ—GN— áy‚A HÃL%=¹^ñ@í„Ø Íä/0ð¤u÷ÙÙ€w0W‡º…/#‘g¡Œ¢Yl ˜ *Òœo!»l ÊmI…ÄCrGÕ÷øÀòJ|ÃÃ2@ø¾HözpCÙä=?{Ì?fÅ™D1u΃è x/89I°¹síÿ'¸2ô>2yHõ²ñì3Õ £¯ÝÙøyš#»YÍ$¦ŒxÓÕÀÖáÄ{jƒ»Íù*fM˜ð玡 43ø}<Ùe-‚Y*U€¡È~•Nbd@Ã5ÔyîTúï|¢¬Q© '±@¸ÁÐW;«­Ì'¶ À‡Wy\Ðíz–q/‘E,Ç'Ðm½Áú^-!(@ þŸ0»¾å¶»¬¢0dmÏ£“(pŒŽÔP68Apç©ÖFŠ8fDŠ ŽSDD®!æMÖ–…šì*ŽƒƒNÍ#@Ò Û=v(°RDœ$¡è0uºIo?&Þ"ÇÏ;7Ë ÖJZ@díyíÛÖc ®Î € ãŸ..ÔqàÎàÎUi¥UV•q(ýoƒ¤æy4¯™åå·…–R€²÷û½Ôý ‘‹™œìFZMÍÍܯprí<ÏMßÊçi¶‹u8•y+a&o ÷‹ßvÝ{|ÿ«cüóZšO 58¼º• ãäÅü¿7€ ¢¯â­å¡ÒGÔÈ sUß}Ü,Çô:›â‘çòêå†2¡¸íwI¢(ŸTÿDAG’‚=)ŠÝè‚ä2L­Ê]ª¸‘jåd=š¦˜G>:Ë7¬(Û}Bã8³n7åËZü.·ØMqePÐ}͉»)`DL (Qëö }¶eµŸh;¤*‚MäÙ£@a·]€¿ vÇ,½z·zÆQówð+©¶Òñs(MXŽŽDiåžK²¼Þý–$@¤öÅ’ò‚Û•›wþ“;,"{3ŽåÒ·ûpÍ‘>:yA– WYiå/4äPXOj»b›•.¦aqSÑ~÷p#b¼ö}IíÙÌ/¯ö!!_·ˆõàšôÙPQ‘¸ttÍÏ#aS-£™€q驿tå9oú:Ý®Ðô4¬ExÑ)'ªA®²û£ÈÐ DÈ%Šñ—–‚º°1Ý£Œ…¶3ØvSf›:¢ÿÒ]ð…º§3ÑZ´e\Ù6‰ì/Ñôt9]۾ѴVâˆÀ%ÉI^õx cÐG—e.Uée¬èëéIF*yþµÚc«±Æ:£¦ò[)»ÒšS5‚p¢Ðòæ–O?`ï÷ D Bžg¿™RG09ˆ ƒ}§—ï1@ˆ>ãÛÅ?1×±¶Psõ¨+Mu#•tæ| +lù‹9<Û¦'_Q®TýŒîÏ5ÕÊW±‡Ë­4>oˆò¹iU)¦’‡ßT抜kÛÉà`ãΣç޻ˊéT˜Â㥢ÙáƒH{ ¬÷ßÏ´1ÞÛ‡/º,ƒy1½¯!7Cɰ?•’¤ yDðвV¾é‰f)*N^‚¡›s}ƒø}8¹6|ï}5©@s2J 8ƒH—f­¼Dùã–¨¶”w‘/:Ši‰Q¶Rfý—Å´ÑŠ[„lðí­£Ç5ßå¯^;Ms Ù;ú¾?îû´'½YéHP†÷Ö2z³ðbëIøeÇÂU®LæõìfÎõúº¶£ÉýžÎŒœµmr\kÔ2¯’Ð@'KÐæ"^`¬IUPAmaÝÜR¡«Ó"?HDAr]t2¹û:9ƒ¾å.Tde!G ØþHª ÌσÑç4‘zgÞtêA¨ ªKÉ6?Â_Ìq á½™ƒM‚·B¨çÞ¡ˆ|dâUó5>D E¶œfD…ÿùÏÁÂE Eaäpð<Ô’}}X¼› 3û-H«<­¿­µ²hÆœû£—Š9,%xHTËAœ30üóÒŠ>|Sï95“Äný:.?Ÿ§¹Ö¤wµ‚'Ñ.íí©ÄÜ'À2 ÐQvZi >Üb„å^'Rž¡êr¹¥E…äEÜF)G’FE…>VâeÅ®PaŸC±|ç™Ç‰F/W‰zؽu[톢µ9Œf(é®C¿C6r©ÄÑQÚŠJtðwÜë}][ˆ*›19[Æð0õÄ…0snvt6w†¸P%m)xH²&‘›-xäQðâk‰CèNï¶»sY ÓÓé’ ÞAp”ëk‚5m˜ (6”¨£¥˜£ È¥q¦‘`3‹›Ç!hš©Eq¹ª£V}ýÈŠ5Ÿ}â,#˜Ñ`éÑìûµ ß~^NVžÈé—‰¨†­‹Õ´‡ £V¶øÏ%zt9&¯)ÍÇRØì™m¡¿¸R1‰è]ááäÅ,ÂeJßâS»m(Ée.8ãïqð6*TÔVö¶ŠëʈÅЩ½Ðm¾ÁÏjÓó@èYóu~iæáÞÑË \¢~ôOq žêû·š›/˜žû[Þ—64¯ÙÕ_³ˆœÌO2ÿ1UÍŸµÊS¤9[ܽÌ3u—ðÏ£ø+÷Ã_jO$€¶í†hEÚ¢Ò }Ö9$,“j)?cÙÃSåŒW\¤Gôß;žæÇmÒý˜n›¨û,Þý:yUN'U­{uJgA `ÎRGãO sÛfášÙu(ÿïÔøÂæF¶®tð[Ü5”6""Êûvê'T!3pÕh@»ñG”ÌB ÖŸú…6ÞûÙYÅú’À0Û¬uŸ­Å”ÂÐo’>Ë`ì,®ÅÇ’&ûCREÁ›WÙëǪüüÁÚ¶•Âpø}:!^*ó"'øÙ3#cB E<Ź ¨C',¬rsá Ü«dއ<> µi¯ž¿¢ô/VžwåÒî³þ†ÿÂí0£ÈÈŒÏyÑÓs{™@—B… ƒëØ¡¼ÒÍ,ýw献úU7¬Ô©ßâ,`¥” .íA÷…PÎT/$µÉ¼ÞŠéKØÉóA-X›êHÂm|/Éö‚4²dŒ)@ú}>~äó¨ÖÓ`ϤkÛ„f£¥-™¤D.·ž}àÜgaз4å ÚâfAsêi™˜~žý y`§åßGǺâÑ-í^=Ïå“˺N¾?Tþ1&/ „}™ÿðw§•#AÔxùñ*EëÚ-£ËìDüž/ßûâ€Ý.~×_T<¬êÚPÌ9…W(óâwÊÍ–r'Õ;Œo[DÕ‹ÁIK[<†Ü—r‚«¯á¡zßÉߢœ /8òžÙ„ÍAûXpž#NpFÈØõ ^¢[Zr\Ì6íå*Q~xiåÊY0ÿ/ú8øüTÂrä“1Æð:·“¹Q)¥"`¨±mA‹Ik &yäÓ-d²´³S7P»d¶Q¨²²UЏq”·ç5šN1XvEfNÅu¦ýF¥iÀì°Èt#„®ísq»ßÙ~;ö½×ÝAlÞÖ=Òî|,¾À)3”ƒá cîM·Ð¸Þ¬ƒJKsLŸfQ¿ów×ÎÖ å»^¦þ 6w Aâ_âˆóÄ0dÃ:ô0›¨ÌŽÎ@Ìv‡-QÏí˜Ù›ò4f²2„^è{ê?c¶>¥–Êô€Ãü„}Âüì_Ægôê›\!çô3Ìvj½Ù=:ï´¼†|æq/Òú`N@ ·cا§% u"hsáGØp#˜eÈq7D($30´‹FPn‰Að}ä]™Î}΃æ(Ï^AßÏWz™€[H {~³¿¶ÊãÖ+·Æ¿=…‘F6t™@@Ä!(‚X.ŽÉJ›ÓzÎIqQH»nQ¹5œü"¹v%«ÀOÔv—0}5)¾¬ý¡8V –T¢Z-ärêØ£ùâF @\Ü j/Ö´pÕµÑçéÞíà÷IS\±¢¼=•TÞëø­Œø”@&`󕊾,Â/Œ%ågˬ‡'â¸3ÞOsã~5ü"ùýÚDü ÉVqöÚ r§0ÆÕN¢M *Rxùœè>1R DCŒËçQNìyÇÁâúgk¦ží/Göò›vÍ€ÞÁ$uB‡Œò×Ñî…É™ É™ É™ É™ É™ É™ vÀ……dddvÃýÃËÊríx÷›ôtªN ;EK„]ܘr”‘NB›ÊtPrÜ!.ñ ìèšC=€–Ó Äž`û]cÝ’2 9]ÚHX¡É†Ùº÷‰ßsþºU¶yljXUœÑ¹ÚRüîïD65ÝÙ <¨}‰ìºù<ØT}Š B_¤ªä@rÓÏ4F°êöi\Apž>.³ÉÚ¹ë}švímþTݱz,½,y8¸iµRŒ¯½ÿ—}Ú¡HJÄe§±B" ‘t €ìWb£·€‹¤;4F!Ë·SðÞ;åAuTX²PA5*Ay•F·­u¾I Šeäv³cÔZn(ð/‡%â>ˆü2ŽäÖkÔVК4„«+ª"X8^gÜw#"k%£Œn¯‹Ârï90âôõó$£1;“A„d üJ1 ÃS@Òk\”;%ÍãýñMxd<ÕÓgmp …ÒÈÆU;·‘üÃm?¡1®¨§]©×h×F`?¼‡õSy dʵ+,‡|0ž#‘f’g+vÖGn؆ÐÌÔlÊq¼iîzô uö]êHÏq½lXt`Ïm÷h0²Öü]-þËC穳µSq¾ûG*œÎ>nYs Ç}{© ¹c1qæSˆZu…]xÜ5J|vhuD«ôK#Åú‡+;a꺳© ¿#ãû€ ¿žA@ óáé×víê=Ûè0á’¨”»Ùò…1”1¸q³§]Åu²¦?j G/HŽ­vÇh ¬+7)hl܈ÍT©dLVÅV*>î_øe‚“J$4¾¦**ÃZ `ɯ|ÅiÐ,ÑK¥îQµî‘¢ '1 a¹èµÝÅ " „ß8«Þû¥3è}Ûgh#AOaÒEoU0á­l@!+l“’â¡hºKý‹®îü2üè4“Úm¯ÒÊ3(=eï|Yf¯ÅÁ\U/.wâè{93ß|n¹G~Ô€Œ•Å„"mö5îUl˜*Hšð{S8òçÒ”o÷ffbˆåÆ>ÿ’az£ÜÀsͪ ­u”󉂽l¡¸žÃMVu.VÚG*Á‡°ˆˆKFÞfü”rÏ}0pWtûܲWw<µ=û˜hzŒ±õ–hP6DE‚è½€[¹§bp€cÀœ9ŸàPGèÒå ˜%m¼¬ñ^DÀ¹ÓN¤ìg¯Ó¯Œßî ª€TFÈ?xß4¢;ÖFÔý©Û· [%ëò:6†‚òð„Õ\ªÅLÜ´ýó–™lÔ%°qÒ(ž ð0ðXEÂÕFnvn-Êx0AF€Y…Xо‚AjìD „@Pÿ–Îÿ:ÒUZˆigºÜà ûÆOf«èy7ŒÅ×ÄóQ8wsµÅÝü-œ¼Þo¿0·Ë{yH¾éMÆSr|áõÁ*íXÝtð±ïFÑà!k‹pñ$Ì]¥Ä³-Mˆ ùè(+¥ni<ñéæO@Øu®¡Ûóƒœ “›Ÿôù;Á+ý ÆÎ[²ü~Ǥ=®A½Ð˜Ú2·C1e’ÈOŸro#Í ûÇ}@£oGÕWço¬€žç}žçvÖ[+uÑLîW Š„„T^åÇó]ɰOšU¾wÁÝá §\ç^ìDL‚OÅ2íà¶¾8„k˜¸Æ×Œ9XìÇm:×ZÅÿ_Õ‡‡Íî~W XõK9Ãö‡w ª‹\šùî¬ÌB¨õãe×yéêÂèñõ£þ`©hˆ¾Ú#ïvÑö|}¶ /RF8¨ó\ÿް£oèõü³²0a¾ßEÔð13ø*~CÑmA6” ¡âƒ‚²7Ó‹r&€x~”¹þFps•%ÞM†ÄzFÎi9 ´ã­®@"C@ T»ÆF ¾ŠJ9ßHPÿÓ–‡ñT…Q{mSz¸†÷³?¿'V06”ð¹È-…¿$u§»(/;ØÇj‡ÈCl#ièuíÃÌ#8Súùº§úxþsSIÄ–Û›}s~2.P×4Ü"]²Íá¯zòØÁ4Q”(%èÅö>Þî@0Çiút,Ǭ*+k7þÝÏJt„GáöMÁâúÔ3Šó*ÔÌx8¯.!pTcqdÕã)ÒC†Ú=×¾ÂAzlkVÞæ7od€ûI÷Z™q ñ5\GS ØJ¢Ï‹©£S ”ߥQÔ̈ÃÜÀ54"póûÓpMlþú_~êÈo­Ê^AôYÉÂIlÏ© ùfy út.z]¿ãò²ÿwÍôúŸ¢ãÔéâjËÛ&]ž~C9*ôÒãâËŽ Ú豚¶Au¹$÷(2¶bÇVùIk€e°/Ê™XíšnÙ¬ ´Œ‡DµÕ_‹\î)ÙY³ÍÖ:~‡]gâD`ù¹yìß²2lJ (X‚+ë˜9i¡$u:sðL¼óS±^²üÿ'Óõ߇S¢¦ÑQÌÁ/ ]Ä&δJ(b(P6÷¾¾ÇWÔcÎõ¶¬Û;'—ØQqµà5f‚ „ÃP$¬yïw%ÈPu ™?=П M4™RE¸: y ;ÎfOáuÈîñ¾¿C'Wa:¿m͹F4›'7C òûWTÃ54$’óíCêã÷{ûî[^ÉBKèQéÑ^ÿju#¨‘Dè ¤;Tv—Wë<Ì<|h‹ñ]ð¬=õLåËÝ-.ƒ‘:Óæ@È|8úݵy¿Ö™† ú¡gÓä³h•ÍÔÇgVOE䞣Þ,\.Óª:ÿ eç½!pbeó‰ÝËZ¾¨ÇAQ_-èêÅ´¤ü;Q~~^ m«‰€ GÌÎêÈ£]Ã÷¤Ã2¬€‹6!{°®çëŸ~O”œì\ ¼Í?ö–± ¯³±<×FÞ›EÒb930>Nø×1kßQ#Ü~½F/§ã!þ';Z¨‰´3Šƒ©M÷ý|CMòëî‘ìücÑ/Y¾XÅù¹¬Œ 2àØ²€\€Þ~‰>’°:'ƒ’ׇ€Ä½œ%GÐy~ç#¦H»$*k@ú³3‰å€€®‹%)øØëã~ÃÚOÙF•;TC(ö×a(} ŒoK,—Ÿ|¡Îy˜ó­¢ÁªÊ¼<¿B›ƒFƒQu€ˆ¥Ö3ų«†ÕYnà Ha&41T&« w9¡{ø€ í;y2þó=ùÍÑ•'•̨R<­çêßẑ›ßµÔD°Œ`»zNÐHBi–1âï×AЇá-3ša6´.ïÁÆò¼¥?`Û/t»ÄÆv>îG_+©ˆº˾ÀÒÂAظfñ`Dx“\iáA?+–ˆÏ< ™z3OyÄPtºàWçÌ7ì–ÛŒ¶•zÜ‚Ž`[‰}‰t³F-Å@ÁòoW2ÈsuCxë¯öJX®ìü^è˜vÏ€O4½Gï#h!ŒÏÀËh¹’K¹ÄPõUAÄe$ê~³ª‹<Ú@Pn#s '߀Zƒ"zÞ-lTE¯C4W«Ëc²@þŒ5@ò=V»Ñî4dô½Ï/û½¹†h÷¬GæûÕû‰\­}«ë?Ücä¨O¿["´!ùûFݰǟWÐGfOgCÐí!#ˆ±qäºnuðö»f&3ù!ï.N…Á ÑÁCôøÕJp–Wi-›€QfŒ.‘æ–‡&¿RD·gï7•·JËÅAÇ[`‚ÏV]ߛݞ.•Å8›ü"NŸ½ïi Î\2¿òaÓÝn耞’¤¤ÚJ¢®Bÿ£Ú¡äP«(ˆÜ86z~Cel·9JOçTp#¾ÝÑgÂú9Ï=¥(qìW¹`FeR‹»•ÃÐ'=iHße•76WXº\ly#­Ï`ço‹µ‘ÔEô‹ˆ!ÎjeUUT% b¸ðßæÑ°¾Ë¿]„®ˆ–>È*Ž*¤‹ªlc™W-¢ÎÒaœIªr{™-ºCiŽý3XXp–¸Üj§ŸD[ÔÏh?óm9ß­mAöi™˜] € ñ¢_¶¸¨ãêïq‹-.<‡£¨¤b /7wÀ 퇙u»Ž vpèMK±Ò ÷å@rĹaäYüÒ`I‚7â"ób“À|‡Æøy\Æüó©ç`èŠ/çÍ.Ä׬ñ´u•ËÎ.+˪rMá  <ìíòóÄð¦À_ž©ƒ0z°Û“QÌú:çvd@Èhˆ¶4HHêp“N®J-X–Ô¹ãIIâ$’4Œ¬»\r‹¬Š‡U¥*FP,Rìß»¹ÔùïóGU2Ñ…ÁoØYË•Â;Ÿ:e±Ü}cç`Âw<|CÅâÁÿtðà©Á/æÿO§ñ»Xl¨Y€`}SÀ\à‚vÕºe”-:©0ã өtDZ½Æç€^;Á@ýÂfàƒ=ÂÚ>ïÚŽÞÇ?Ö;(Â(rŸ[?ƒá nÅ^²"=Yì)¸Šì˜Ù7ó˜¹lÕ&*ù&± ‹Y|ðpçý›D泆Î~nl¶ø^îÌÃÈ©@•7€Ö~§#Ëô% ]Ï¿ß]ëÒÖ€¥´!2"fÔØÛ{Uá7Šh³{†M)U’ØÊA©^« v;ꃗ“è—RÐ.\B½‰,ÇÒ(7–"ð,—¬Ö?`ú… 0M2›…þJ£a°wDk:fÕj®¡~‹.È%²ôòv®§õ‡¾©PA1â£[H¶…‰Ïµ÷l/äp{ŸÇ—\£õJMð3"£Ô?9âu¯µŸ²60êä&«çxIë‚‹íÝWùé;-Þq†íºº¬èè¯W#œ•|uÍ­ )ÒŽÂRp ê.4¢ Wu =¢”&Ÿ{0/ÄnSµtºû_f€‚Mìb0ÿÈÄ[IqŸÎï¨8g–Ú¨GÉ—„0a/xYEõ³;Í0À7¦î¢"àÃŒâ|Ð_ô‹ð4RA$—ª,œ$‘çkeÝÖµèü‹ÎMžš¶6p8R¹äã°—Øúf“ÎOeÑAB¬K2Vü(n|]%H$°ñW—ª-¨•BŽöQgO š]™i·YÄ)껈†ª÷AìM°w·ã¡K÷Xדªq‹QŸ1fÒJQ_Q&'bC½k <±oDúO ŠÐ^#]‡ Ü®Hünˆ!7œúëÜ?ª³š>=dÇîi¯8 rQó;{ îBdŽá[M†0æ›»RO7=f:`³×êTa†Š÷ ƒœ}zñý † ÑÛ©yÕï‚D§°£ê¾t¤ü«QR$›Ó·Ëc ±ÃH‚èÌôÒ #¾~_‹¹ú*ȧ#㘑Ÿ–tϽâxr6•ÕXUÎÁÆ?€ú_°DªíL½Ó€r˜˜üçbÃÒDn ûl1žœ8 m&É“>å-  -;Í!Æ`]þ^_ã8>†»Gq+Äûf¬r¿…Açàí6UY©j1;{î…exëv¼WiÂë—Ó$‚XáñÖnrÒ>j®ã›Cä|›ÌOêo­¥zjbÐ8ô§±ƒ4àɮڒŽÁZëZÒÂøE{ÃŽÉD’4 F@§Œ%%÷™ÖGß„çççß9ùrœ…«]yÚÏÐ@~Õ¬dÛ‚uÍô‚Ã[”oP¸i”#-z£9Ͳàý˜1¥&Æ …Q©éÄv«Î¼;½‘nd¯µÿìÙè Ñ$X8ÀÍhüE4L½0f æb,y¯OÃgû¯XýÒ|å…oØ¿ñÍÑXp.™÷·þåmä¤ô´uR`cX˜º 0ñä­¦>ýªßŒ·´Ë¨±vzÚšV“ïöý›cì DnZnu('©G]Ÿ£ßɯNhꮯn·i?o—ê;‡ê¶ñ^þÊÚ#ä;¦ý˜¹Aô÷…VZA‚?L²,83Eò¿d~¸œ ד„ÿFrøúÞãPG·»Êé p5>šÖâˆ!j§ß%CϘÕl…EÄR‹cÄÙ·úŽÜY}…Âò!¸€®¶< G›àQaÿñs.îþóßûÿ¼ó7ü«¢¢üïÒº¯Óíxb½w&¨ˆ$=Q/º¬{OôÓÈccm†GÄñ#ç5$.j…>ròÜ÷‡ýêèŠÄ)°_ÌŒ7\(û•®£ßúÔ^EH¦vtÒ¡yî"sØB•4€à¾€Ì€ÊôÙ–Z:ì •ÒÿìŽÎ•²y™Cñ†¡5ƒ~©p°‹û&ÏX³ÈuVÒ d2˜‚—ú(¿rCìª$øS¢’þ¿üUPm¸²%]‹{ožGçt˜rësdá m7Æ ´„‚¥êJ(1_kç¶©ÒÅ$:Þ,‹€ÃP§fÕ¼±‰ìû˜Sæ¾Å†5°;Šô‡}#NÞV‡û ÉCÈw‹ãŽæ´ÉÍ„_ÇÒö¹I ýE̬ºB fý ,'?¼Uæôæ[/¯±h÷˜oSEÚn¼Û7¢{Þah°¬§âõ“–-n|ÖÌÒC°&‘q´V6>YR²ÏË1zSf~™Æþ—‹¥m7<Ìùy«Y¦ÃÌÁ~Nùþ4‰[^ß% Cd!h{ØTåÕg÷Ƴ‹_¶ºŸ³öÇä d¶iËpq„Ú&ņNA»äxÀ;¬™ uîŠÜOR…6:›d±oN/|¥987®>Qä~Ì9nÊC¯Á‘A„š.â†òwl¼Œæ9P"…zˆ‡ Ö^'Öžk놮ÉôÞ²ÂB—Z†ÚaÂR B-o1Ÿ.þƒŽ ¥M·Ùs\f¬÷Nà癄WQO1‚¢/<¦bÑ dÝpä̯ë#íÖ‚ÈPäµ]¶d7ˆ„­²=Ï8í¡OG3 CÖ¸¸\·Pe f_T/m¤ב:}NDÀK’Àmzøµ§_œÊGrùðXÀ5ê: -&Á¢ZJСOÁŽ×7¯?¼xí4$†]§EDåTf…ýŒ×¢³âµvïœN¸4À†Ž½`‘ûºšÜÞ(¼ìOE+=q¥, ir×9IB¬Ý¥Ÿp-È€m{Ÿ°¯![òÙRöwjÃÌ÷ Äþ·l.Ú«´Ðé± 5lŒ4å(Ú21Y³È RRMÂòC_cæ9¹|–NEÄEVËí÷ÖûïˆA;A!·478ŸÉöÄÉ?¸‡ >¥Ô0ëäœ};qÌÒ;5*½Äî´F»èÞª¥NýK*l;[ÿŒp†2ŠÓ 6Tà]†û¿ßΡ^î¹Å{e†Ø!Òm)yŽ„«6à `k’€.¶Bó Ò#ÔÆÉDí¹™É6¿ 8dF#Yå¦Ü•‰Ìáx¿Fƒ(ÿ+ícÞCbEí¼¨9 ;¼º‘Àz!_ª ßpÎÐòI8÷÷ ›8ž?LARpæå 3©Ã3r=ŸDÔ^Ê2kw(°9^H-”Uúïs㠆¿ ‡ÎY€ë€ýÀA@æM&›2ÕÄË@Çx“j{"٦ˉ]ÏX?ÒZýI°F¤z-Ý7Ûœpö-›‡=®©©Dàyûhäá¡DûZQ¬¸à¾fÜÊ:/’ádH•Ô$f¡So¸¾¸3lx»(u&ÛN`ä(š.LÊÄ,!+Ç>q;‹òòñ†¢ËÁÛß)M9û—Ô¨û!`?âäˆYŠEŠŠÞçì[ž §V¬^Òkß¶[L@ÏO–ö#Ƽ{g/µÅbŸŸ:™*8Îu*½´ºVLžëža9ùo#¦j?ª`¶C;nÊ/öƒkgß2ÝîÊ.Æ×SZÚòUqšò´9%å‹B,;¤À¨wÅadñ@œHsnò/ÃHOÆ_âèùC“É Ë­Ø‹l¦m,XŒRu óÒ=ž/1VÓ·6ƒâ$……¾§n Ï¥„ÙÞg>PÐ+H.þrG|ä†^$· ¸ÅKVOåÅxöçz%J™TÛÙYÆžovÏÏ—‡Ñ„_[yì{=˜MÅR¥u‰p€×DD@¸Á˜/°{@€‚ÇމơzÔ¬ý®Ñè–³ÞéP£ „XŠü$E}}õ8êΈõ»-‚Àž‡¼Ðc…æ<%nc@x\ [{£¡ÐARô"NÇ(£Ã¿TF—H?ü-¤3SDæ,Vd¹îÑóyš;`ô G2pQ öhûà›0r qÔIå.Ö žBýA€ÑOé¾OÈåëjs?C-J?Sø;Zc¦Ï­„¨,7óœÑÔzÄðO†yÕ±NÒëëæë›ú?Áª}zý½ ³D‰—Sùn¹0,_[t™ÑöRä¶#äy2牚ޖ–Œ™85¡F|±ŽÄx¡à¼Ú¹ùS”¿MãšÅ»ÒÖ¦ ò ÞÒ×Nˆ~[$:#«U4ä·† Â:Ÿ¡ÀLÆŠš Ÿ})nà³X2®TI×vF# È-^o%Æ=Ÿ‡ï¦É|¿kßëVÚ±ãÇnÃŽËp"¾ÕP ™˜fÎ,õ ¬Õ™\ÎûòsÔ-+äéTÜ£†àÜö^:½o×vÍ>®aÛKü‡¡\ÁLÍáÇ—ÂŒK^”£DZ ¢"){t'¾¥û̕Ӗ½˜…¬{ƒpŽ{¡?ÓàQÍ–fò;Ð Èm© ÆF…>a'~OØ}igK†6vÛŵ_87Œc"q^{åë²µ‰xƒ3)ȈÊqL%P–ì‹aør„ ëÆï&IZÓã˜e4%Bï`/çAø›.m6ú–Ò.`îcð”2onåf C†@ƒÒ‚þîÖòü®Q¯+j…{}?zòÛªQ¶Ñµæ’‡TêBkC'¸ó"!t·×ÑŸ¨5Ââ&ÑW¶‹éK±¶”µÂ´eQ% Ê8ê펛³†1ιǞӕ–"Á±Ñ%ƒ3 8çÉpLc(Àð¦y‡&tGY(Úá‘”$|“È꟣uF¦GÁ°£¤ðüRºÀ'#Ãá·iÍ™1Ý!šT^ánA„Ñ";9߈££#“´rAyÓ¹+Šlñãur¼²³³Öû²ÞØ­¨@'ùEöËàuL˜`r8(£´“E -š¶Â3RòF `Ò¢K;b˜hk6Ç=Xãhxvê·{Ó{¡9Ô¹â!!5Þð< £aa[õ w üظ@(Ư¼àS_ ¿á©~jMs[8b>Ò2}$Q+ÎÒWÓ:çåzdI ˜ˆ¦xe!Åd¬Å3[˜+¢è7 e‚#”ÝÆÆb–R—‰ó­]æ‹2ÀÈȇÈq³Œi¶|V¿îs[äŒ~ 0ò\qćâ´üJk>dÜËÖNÒ v–Ûãʽ,ßÑ콚ˆÿœ°Ð Ž8qs ‹F/Ä4¦€¦ `Á~mšóŽ™×U›‰µÒU}Ñ`ÆáF{P”¥-L-u–5W8ל5³Z 7“,¨ôîf°F¢ÈNIi§›ÝcíY}z1ǯَÀfqåý·eܳ»ô€p81øô8~¼“²Sœú>³…‹§ŒXW=!+#SÝÅÀ~«)Ha¢îè¼8ãH‡«AØÜí®£"ÿR]9µH€ªª*²wì»FÔ¢îÞñ„^ý±ñKùG *­Â³fÊjm*C›´·¹ Ëüq¿õAæ= |¶7–àÿOõ@_À˜öu¾#>ç]‘^RÀW›ØëÃó »÷³{ŸÐ¶â‰˜µe†M4>Aݤ2TN”öZ½Ñ{”‡F‹ÁÙ¬ ihk[` |µE\Fˆ³‚œì)¹ ú;[ûw}uù°¾FWüL´ë9G^Ëjd«S›žSlqœß©CØrÎÛN;ð}´«&¢µUÎ{È…¯wsæ]ÏÖæ9™Ìês×ÃØ¢\Œt‚ŒF·%¨<©;=Rh‡¨ƒ9Îþ+—ÕÃ;UÀÙ¸4—{T=»1µëo²ÚrÆße³M™Ž¼ó׃Ás¦'“Á lEö‘ÓÞ/XÕ5°>Ƶ‡EUœuþSåp´7E‚Ý«nÂä7(}ñÞ"h" è 9#àøÍ½¿Ø²8òß:Öømýb¿â¿SÓÄØ„uÃÎ&;Ä“ÃËçºj÷¶WÀ‡æ51î éZº7EÐÑû'a(Å(À§ÈÂøD/ 0ÐõAe€<+X¼£öûà+ëÏö·õ´‘³[`¼1ƾ7UDE7ÂTf3ÖÛ>6¿¾cæ¦<>½lšá lš@Á,v—CHœÅ‰0IÒ£ynw[<ᦧS@«ƒ0 ƒ O$1º#ê†2ó=Îþûq´z׎‚¶]¢—Mìtæ®C³öY/Á¦ ™Ø»vØ{wºÓ@“kC·N€À½ž(·Zà2™žÝ|›%²:VúÝO3äÈô,=/w£Füž&ÜzžôÔ HCÉÄ7 ‚éš,NŒÚXÕbY"Y•kýàJ÷’‰b"ΜŸG}¸:Oì|ž—‡~˜jCÓWe ’Qâˆà¶kê±³oŽÎG/-ά¯ Ü(ÒžQ- ×Ó:Þ¶â²=åõ¿…N•åKcvq1™t8ü®q‡ý— áÉ_5ö:šj"”[ïRH¯m?~¯l*<ä81ûz'5ã›O×g÷>o¢©Û†o¬ã%©œ-çãʧ§†ïu˜ÙùðÚì`yÇšNq^HËf± ° ü%øiЂè¦ ÄqB¹ùP\EH‘p†ÌYåé6æinŒ·/ 1}öµ"÷¬ÿµ èP£Ë‹©F‹ åô½žùZpWãŸl4ÈY¼vìu’wHâ#;GD˜Ã\6†p‘xv%ÂÙÀÛ/{C84´/Ùü.=wÞx&æj³å7¹UðQÍ-ƒœ9˰/òÞñ$!P ×~%mpD@×Ûv:¾Ê»P¤ÜRwT=ê@ÿ/7f[* É®ãh. Ì퇨àªïb˜·Åõ Ÿ(s·Ædš½¸d,èòCúóñšãíîÖÃAA¸Fö?<·—hOV,p‡Éœ4Ÿ(Ö8ZÇ¿Ì\Î%H!••XHD" Õ–#=Ò8ó3ÏsèÛ[ôù\êMüŽZ<*Ï7håQg}Òw PXçÜð®ˆmÃB Þ]ܧG%s˜ÜØêÑ©›ÈLЭ×(Ÿ§y§aùy…~.”t¸Gb„gßÕqÐ}Æq?.¸~:¡­ût2_3]œÊÞ\ÄWšø°ÏŸà)÷ý_¥÷â,áªënÈCP@4¸7t&a!"Ê@‚9Ò/Ò#ûN dùô„H|W”„ ŠŸ¬¡ Ä?7ÙÓï£Íò±<— NMÚ{‚’^2Š‹Ôó„Ô.ê¬X†I€PîPåßc\þ–µ¦ÊALQ7gsáô,[ÈYsšµð\"(E„}“^B% (b LˆS¥wèátž€N¾Z/ÅÒ%XàÚ¶6Šœ+Ï{(ÒÜ}“Feƒ×@Nž8¹â>ãcû«$g«<<…ûëõyCalDI“÷†Ü];T/HëBB€ †Õì„5,¯Ó‚?…Ì3)ТL›Êä²0"Ȉbé Ò¥k¬æCýç Œ§(‘#&ÜW\iPkʲ30ö±I"žþï•í4wv5$¦œV”UßOC†ÞB džx€Ã‡¿¬v$„4z<Óx;uà·f¼»ã°Ì“×A‚¹U…ÜGôÏ»g—ÊÔQ8@¢€ÝмÊL‡ÿ†¼™À,ìîÞÿ¹Ñrt¾›r å}²óäâ!: 1@„  3¨þ'•`ƒW¥ ½òü}XaÐ&(Ó~fÚþ#EgǸÁœ/{æÁay÷ÔL1³”™S‡t'p¹”¤û~­mûâëôý<`vð@¡9ä~3`”b¿Ô“Y 9Õœ¦›µ·}ÛÙl0Å:X÷¹<á%Ãfóû´;$%0=Ü>#dØ=4ó“ÖêȆßphk{•qÖœ¾¶}Yت/ÃÙ_Õ>3×,ö|ý7šßBHLz™áÐüS-´±•T™FuB_UbOêq#Kc¸»¬‘d’éÓ¾ÂÝß[/Ï ^ÐØBô • ª•54ä’†”™™.LjÕÏÚR¸8 6r"Ó”E^à*r6b¡—䩳ŽˆNH}Ø£ÛÝ‚ÏGm†°BÓrKƒÍ‡/ Á{ÏgÂ}4)ÿjkd>.ÊÓíÄÏnxû3.Û^¬@ê„iEíþ³¬Ü\õy,õÿè0z$Sóçý?óžÝ|k”ÒJª¾½s@8/_ù~D;÷ÙQÝg¿òtàƒ“íUâÓ³²Ÿ¦Ês×Ëý#ù§£Š$Â|ZYú2Òè@|¥þÏ¿)éöJxÿ¿ô‰¥ãçÆ÷{)ŸG^¥'®ä×M¶b㇔@~,²#B…PG""!;AIXYAø5†°ÊÕ}`)£'Ù=àØíßü¼ŽfàZ©úJª´m—,þ› ¤VDľ© E ?àïŸMy¼ÿËÙÙ§°º2OìæZ3þ¯ v‘‘пþÂÌÌî#…ÄŽbߘíÃ3fíûï¶ëûãÆ1Ž™áK{a_ý:ÿ#Œ´Ó«÷¿ò¯=]ëóx+sSôZþ{%ówu:ÈÙ­__¿¯]?‡¿Vãˆó ‚Ž==”ÙÉ~î æfË~a†a3¹ºtöê ‰Ë%vžÛ—{SüFÞ¤°ŒÀÖN°5B!DÐ _-6òw»ýcN“9ê#ÐÊÿ±z—hg4âÑbÖÿ?ð>ÏìÇþßo÷âûk+·ChøÄˆ×»öéþê±?ÕÛ¸Zü—à븗r[÷ý¿k_ÓólÅÔ·e¡ð–†±®1øQ³ˆVÅÿãGNϦ÷S“ÿ‡FßIíþ•¶|š‡AÜï%ØòB~Ü”jñÑ;8o¯î˜¼š/æåäx|-3î÷píóîîôòÿœw6M—úP›V|xÿo/®{Ö¼ÜyÜÿžæ LGø¨ò(÷•Dµ½v\cÊ•ìŒy©÷þÉú¼Ÿ¡fï&(êЈw¼Ô´ ãúÃõÉ2ÏÁó”Mzì4 üM3έÊc¡ÒwÎÞxå㡳»šâ}\,9t¿ÉíÍ õÕͽ8ÿ¶º8ØÛ{·O‹:ÈÙL¨Æ`\#R…E1wJ²•ÃS-?Í10XW¿¯0 `¤rE„¢Ð¢A¥rêøÏ;»·M:mÊ亻M;bÖK^¹W©MÍchÔW®êªTY ŒÅËü> árè–(¥ V«C²1VDÆÂ¸Ç#I°o&TÖ1GÃûƒ b•ðÏó˜qAv’«[´QµQ[Q‹`Kb¶(·ÆU®—ΛXÖZ@SQZ ¡6%2‰´–«&Ú5µ•*©•|$‰GP¡*…iF„’>™E (u(ä‘*¥ í˜@ ñWR†¥¤D>|æ‡ô@€ä"lBOû.•d°œ¿ê€ãþÛ?겎kÿGûÿ_êì“;pa|>OË™šW`/p_ñG“a’} whkòõ Õ“u­åy"ŒX–µbôâFiÊ`KbYvjÆë*Î(–ji6`@¹B–?S1™Â0¶xã ÜÓ;ʆBØÆõ5®ÊÖKQj‰ñØä"†úDÔÐ.<1Ô!Ho"dD™L+¹F² Ážº„§fDá:•¤(R©³€km¶¸f§4´˜a—Zs@›BƒGÆ( àlðÛn4194̔Ҏ’ƒ@Ð ¹¥q‡FP®§PjpÌq•ÈiWZ’±Ô êrB•ZTÍ}–ÚÍld ¡³¹‰“ÊC †!¡á˜¨” ¥*H®\I]H ­‚ pY‘f™uû¸š6i CR†0m/úç7ÅÙ€fkÚÕÔY•¹F®Ír(ÓŒd)+˜À¶Ðcl`2¬,È3"L)þl]h·0¤Ä M0  t`š…4Àà‹º•r­ÙnQmu<_æ¶]0í(àlb®1®p±Ÿú6Ç@ÀÊ“"̰ï×­“dΰã½ësI&)­§,r6´ÓÒmգ͊½wmÓVñåï¹ÎÂôDF7w)5Ëšå&¹©Î«Ò¹xL„2¤“OŒî¿&k†¤K:†RÏæýðŸ´z?ÓËé¬ù>o-¾ÿËÿoü«î·;Ð=Õ÷ ý}Ëú}݆ßíQ釖>[^ìsåߣM;ú:*;ý>®ƒŽ(¾_—±¼Þ:ýcýNeˆ¶WõF™Ü<Š«æóŸ–â„‚ƒôˆ¢TAÊ,z)ÿ‚Š ¿hã퀟/’ÜH†šõÂíÃæ ÊO’Ý^Oò¾ï!7ž¹)ësÇCr•×jéÝìäþ/ùÅ>½š°èËšæIv}\Ë`ÝŸwŸk–™ Ó§ÕøöoÝåRôJ… |ôUJgP|à|à`÷d -SiaÓòü¿±þöøöêû~gxJ«–U3¹¾èxX³<É‚C'®µ‚ËW7†Rȼ'1gÏzO³íŸº¡fy¡ð§u³»¹˜3œÇ9Ãþßp¿ááâ}Ó×xú>=ÝÑ<‹Óò%^,]?Ïñðòõúcçìýýoñ᫯  9Ó£e§jþµýŸs.y}‚ƒõáØE½üSëYîv¸ùçü¼š? >Ýß«‡n;wèßû?Ÿ«»žÞîg“¯³óíðîóuiöy»®îQÊ£GÛî×-›qöd×OšCæWÏÉuÏö©]ÃÝ—ÃOožß»á«¦\4][yú½o:>mœúü'ÝáÉáÓw’ðôúvyÇ£_¯ž+º ÞxvüÝ}^ÎÞ^ßO¬n]óáèÙu•÷që®^¨tŒ£ì&¹å€÷<ê>¾c×ø}þQÄCÍlƒBr|ŸO©~o]1os¼žLüþ<<9¼ýAûŠ.­ãCÛ` Pëx<8KGÍóz‡ÍóBð:‹¯ª\ý=;zý.íÓÝÅ¡Uúöíö]i+²0Ü] Àíú~P²/EDÚ€”5*¤(UVÿøgÝïôó+}}ó1'ÈÈÄeUõ\ H÷Œ¬x 9Iß2CÙ—ù(Ó5).%!”Ÿòd²d†Ä(@ ˆæÅ)Á(dû4+cåWiFE"4x2šÓ±7Ý1§¹º[f°Kó(YBUý2Y¹uKh\³<TÇ a”ÇûÜË5þ,çS“ïÿ³ñ~/^Ül”6»²¨ô¼ðc&íjÂ~ÿ×õù>¿êûÇ›£—ÆÏ+iû˜HÖ]’HŠ`2Ë, ÿ™A0L ;挕|n7~©M8Çk#Ì+¸èè£_H¥oÌÂDÅ/ß½Àpú?Ø¿³þŠÁƒ|ê›ú˜+žÇþp!å[¦Ô›®ÿ÷½E‚‚mûÎçàÅþïãôºhýi ÷غ1€‡›eU~Kݲp!|“—SôSU?ƒ¯šE>šÐ·—oêõÃÒ2f‰Lƒü× ~=t§€ã÷ð)þ¬A‘õž¶w²\?¢ˆ}ìT?s;5 YÒWÄùÆM%n°´½{ìÕ2œ TgÃA˜…¤©óßÑZô…Ë›,Ìfž…–$ÈQÝßÛÅgÐ`ØÉ§‘}@‡sª(V¤UèPø2­H@=Ðmõ›ñþôö.fcËQ)ÊTšÌʾøaùcðÕBiKÙ…Séš [@ÊQʧ©Np ŸZùÓøþð•×Ê· l! z⮌?&HMRüðó䌨ȌVx(4 GúüðóÉý¦ñ¢¦SëÌØj¤ÁoAœO=Ï‹uö™ý¦;¦ÌÀ3 Ÿgåö£Œ©ÄîÙ#lb Å„ C¶&˜ÄH~6j©¼£îýüÚ99¥2¥@>&BÓè7þi‡ëø.[çùµîÎ\^(QÎÁ>]wƒÜþ£æ.I%qïÜ•S^‰ù¹`¾€qÃÛÄ<ÿ&Ïúáä¤/×ïÄQÝá»>IÅ6&cÝ+Ì/“ßšöm¸Žþ„iO&×ÂÀ‚ìà R2Y™úÏ3ÿ·NrMi˜¾°—ÈJ~äù/üš ã!÷ ÝO´f}ÏÄ{&5 BƒËeùÐl‡þ|•ñFuõÔ4ãÔ¹Ð=4"ð„þp€3Ž`ÁH‘÷à_Õªù¯lJxljr¾ó›í^€üúõÿóêÒ4 !P(s:³Å©:=4{`Ÿxý\üF}§îq1ú|¿g׈xŽ)Ãfý0‡¯2©‰µþ6¢êî‚þV1˜Á~0âŒxtêm?hŸüŽx_oÙœh"©C±Ý•‚ÖâÐA“OáK")ð+ºsÊÚÌë-C«t¬”¬|Q§ó`Ì“8”+bYAŽþ2ÇË+)Em´·@‘¼8ä³”¢ .‰þ¿$O.4 a|yuÞ7?Ñ;^÷÷ëžë¤R.Á…Æ¢Ÿ6ÒXw crÊ=·Ð‡„]òì#Ïþ±>]HœyvhØ"ðÏaåß8mÁˆ*hb¥¢J¦52b"£QEˆ‚‘‚ BçãìíãáÀ6å8nÇ=ô  ó·ÁÇ™ŸNhFl(ì½£mëíø.C.\°½\C¤ÏµìS:²œ.þéD§Ò%l7¢)Úõ}3ÛÁ ׫GjlŸ98F!»ïñÌÅ7ª…ã{¸FöÞTnfuª«îæ#D2¾IÉsçE'¿LgÆqºnT:¹[N”® û(­9¨üëž6립‚Eì¢õmŒ¤eÍ 0`‰þÝ/•ê5¢€ÿÇä¥J§3…F æÝ(w*¦Š…nd à§~³Šeü&Ö8}%ÐPòÜ™ôU÷›>›×Ú0è laÆàz‡?_gö÷ž^~ŠÚ©b¨*ª €Ïf.Ñ È"S;à9g Ó5ÞsêðìñãáÜx]wótëÝÛ¿9NŠŠe¥ª&’A nP%véïíÍ×­†í={Ê •»üڲݲ×f l‘G[}›<Å„'ß„2w̉Å?zAãH;„ÒAå¹¼±mx^D±lXù­›Ð”Ñ E‘áª:‡­ÝÙ # ¢(‚œ».„Ù«\B„ÄX¼†ëá0Å59[ƒº¨q÷ÃóñúúÀaD}~8æ:Eq³sUh2áɶ‚„€I @ ÚP ºJN¬·†Û†Üttój·}ÚןdàAmë /5¡ÙÈ=%“àÃní[àx¯ÅÁ”Ô~[íè:›áÊ„£‡`ó¸¼}³M¬R–#§ 3Xƒ «¼F -º”ärJlV„Ê¡ çÔÓ³“)G:No@Ô*R !ØéÒM¼/<é÷Œ×y]ˆ‰© e€xØ i•<šÃ±Ëä¾Iìóå3(á¯L¸.\€„6Î-¹¦ƒ”S˜ß,úˆ c5r8t&¶²M@yÁZUÛ-ÑÓÈ9AÙÓɇÝýݴ࢈¡@µ•œ„ Ët»­ç2 1^kjÊÀ­}Z÷A~×§~!¬â¯`å‚çyb2èS€µ©°ìbÒ>Ýoäº=9:·â¢Uƒº©ˆ[¢IbK`lÚG8²Áafmèql•ίo$§Ç\Õyõï IâžuˆCZ'-Æ“ÔÒÄ-3‹ÓDÑ A€¤tJÍ’Mh>–&µ'>rèi<âê%@4𾋤±ŠØ³¾Tš]öA±ñr¡ì–2d¼VésxñhÅ“BJˆPÞTÔ0CÕÇ)9­öz¥N2ðãF¾©rW™˜sƒ}‘NÈ@ŠPŠ¡ Ä ½ÛqÄßÇleÁ]W¬hü›‡‚jZ]Ma¬.icÑlD…c–ûÙ£]'QÙš%èêí­#|Õk†li­íŒ-µí‡9oD 16œÝeƒ‰K™5ë1‹cQ™a!º ¶8ìkÃvU]Ý´m&—´ç®òÔŠ:øÞŒÈÉ&›,[qш Ä˜H»Ì„þÒI5éXÍa4ð¤éñÄXãææ6Œµ«¦“Ó€7™=ˆÓú‹•0]I’îðD&Dƒ$9•2$È´Ì2XÁ‚úLÆÐrAˆNEK‰=›g²=+*ݨãD/gâS=g¼:\a†nŽ“ˆ'D ¦‰i}P@Òƒ-RƒHI®µ‹{•ï£áòoxÍnÒÛTƒ Ûã š˜…šOn*רüGËû½íýú$¿¯ ÒXùbªú’{õ½~ ÈPÆ'ÀUO ·íþô>àßþñÿ Y½6 ÒƒF’X˜\†‘鞟HšüA´nù¥hùÄþ/ÜAª‹û—ç)Å«E‡°ˆhù˜s#(∃œqúL†‚w¥2 ɆX. ÑžÚ q? [<Æ÷î8àÜÈMïKHMÂ@àbƒ¬8ÿ†·šp<Ä dîþ~ËóuÑ–’ÓáE3­í3@w€08]Eíòâᄟqìþ ÙNÒµ92xÿÓÇAæü³—û²F¡J«®Æ‹ì}¥’ÆiÌO§täEu~\‰!ß'2Éd”1!ë%_f溧á&¤i‹2'Þ²Ò™aÇHdq‡dg$ô㨠>ç¼UC©Ùä’2ƒa‡¸J9ì^RN¤ýï_ÉDÛûÊ:ªöNÎÿuŸOMa6‡ÈˆÖê“)¥Óûz9ËQç@úØ~dîrÎ) Š)ýtü;}¶oNTé^³êÉ ½|ø†&u¦íÛÙKþVKê‚I#!©#()ç!oô™Àmƒ >÷ý1H¨6¬ =pA ÀžZ‡"ÿÓz ÖÌä‘Eò¤ÝŠžÍZÃ3uO¬9“xÈýÒˆ} ¤ÓÜáÒ¦÷¶wVN™ØñÃffý>j€?!?…ÛÖ¿‘ëœ3³¬œ¾iNÒ‹Æ]y³ê{ð¤~ˆÀúÜé¶aÄÓˆÄú?”LÄ~,N!ßPŸA=HbÈfOW^Ö}yÏVWW-ÓÚ„Ñ’É90U'^íz÷õ\÷çæÏ>Ùõðê}ð°™)¼=%v»kÝ&>àTA†ô3”R-xýýÚ(ùK)äü¡«êK…Á\’£†$j—€  P¨²&Í ¯‰µìD)ãõ|-I7ë£øñXýZ¦à  ½Ï1ý&j;šIäï©Ê‚#çÝË4–ÅÏËÇ·F{5 Pèè+Þ˜bómYë8=ß—ñŸÑ»ñi+?w‹·÷ø—Œ»™ÉYÁy©H¨(¸û ×]—ƒ»n“œ9wöÈil¼pÚ{„lßøì–æ:h˜mÙ”Q¶ÉŽ“†^ÒÓhÁ¢Ø Í0#`Ù\åÒ®7¹teürî1AL X†TSd´ŸõÈEƒJV!Ö[¦‡ÜŤw9¨ßfE•]-Þ'WNR›g JÜqÇ ÀûÒ'Û¢]ó…M·PmŠQŠ)uÓq¢m›Ýµ¦ù$Ó ÁÚ‘®µ£CäCXuª´æÅ¢ÄG·v¡¯@èù×c|­ï¦ ³­c\üþ¿èÕýºãX?k¯ÛþUŽ0 t@‘Ü;€Œ²n‹ˆ vš²ÚH(qh%kOÙV®½›5£µêY¸ ÆoˆœOïèº#ÄÞùÊÇÆ˜/›¿Å¿rhÈ´Ó»u_›6«ÛôèCVòi‡ôÃðãèõõùl^b:ï ͹ÞžX½ñ¿Š‚Ѳsléûàz>Í?8ysƒ° [3ì]¦Áwo“†í^ï¯üý½3ú}8þwi”ˆörߢw÷þ2™Q¢~¿ª~MñTüieÈC!0úÜùå]‘¿•a5LÏAT"Ðú†÷ÑñŬAÔ®^zÆ‚ j"mñW¹†ür²‘fö{­ûòa–nHXtoÍ’$?Hlƒ‚Œ4E¦ƒuü„b–Jv4DE0°P}';V(o¯fórň¡'SFE…Fí`¹_tÎ3æ{J_I¼ÊQF޲˜v‘}ß‹¯Ÿ…ö#d[âæj¤(ïi¹wõe/5–y{MBo N·ÂpOÌ´v<.tÕ4ùËåòøÆ§Ì+GéŽêýߟ·ü¡µÿö{´ïõpÍ|ÞÌ9<½àJ'ÛÖÏV¶Ä(‡ä ÈÝóD”äL>X{¢¼ ·nJ IVÁîc.‹q„ÿÏ—¿{¶¢œ;¾ž(ÉÐsòå~àc Uï¹››ÐÞ:÷x“cCÖ3qÛž¦£!Ž“§Ð[ƒ «¨$µòD„‹K’ö$g{ˆ9T8¥¹újJT7sؽíºç©˜TÝŠ£d¯‰P»T|Ó·¯C=Ò/‡ƒ¼}þàï=t“å‹y·¨-ïý_õÌW\´"/*Š‘ÈB-o6ä&& ¸ ~Þz x#Ñ{ w¡Ó}‰ØäÁŃï/—õjXk 6ˆãV‹ÐdîèÍçEü¯ó4q¯•ƒ7ùþŒÄ5<§øô±Ÿ¶.íwÈ=ûé_”ùz—&rçÏÕ’ædAE kÏE1ÞSŠ'40‚– 0Š1@îO# æ÷|™l“g6Dæz/QÍ56oF:Kçœ- æ”Ãß@ÖÂ?Vׯ¶=ùVÿICë™oOKιÎsÝðD<Æ$燕xR ýZFÎë¾ký¼é÷[ÍÙþÏ…Û÷Å“»ÚY /óžvqk|ÖД=ßMñõWÑÓ­“º/н9±$Wâ¡È„yM!ºÊZáÉwgîz ü“åéw9ÕÆ_·Kƒ¹->=<¸|ÃèпX:8㢾—h»Ïnª G}}<~§ªu7ùñÝž*íSÇìú‚Sq^·réaî«0=c«ä0óz0ǧåÐ7ѯl†žéâáu½¹ºÙ=>j:&“Ñ :dn¼9)…dµf–a íÈj<«™î[b³2R;±·ô§«<úî§»ôºiXÜ{¬°>çk!OÆÏj|/؇# Cf n®ýÕ¤³»ÛH§³ÎÅ­ó¼y%_¯¥Øèè™J¾Ã7wÛ¶1G&¢N£?«Ë_„þ«AG£›È(Dê@)¸ç özÒëG‘سjînޝ)?7Ó·îÛ×ÉÝÔçìÁ‚%G§íÓŽ‘1Ö££ËñýΩH™,Á@ €‚1·ùÀtSÅÿ7;Ÿréôe¢"QÄ }õñÈyìñîO™¿èï9»¹z€¤Kt<û}õÕËmƒXýÛ4­‰åÏÕÊ5 ¿³á£Ëæ¨xЦy Åïö¯y åõ ¤ @D’žáC³íõo„´y·YGõÔl“™€¨þ;Cüs™€ñÛi áìXÙ?Ò?A£*´,6ÙZâ9W·`cì=CH§¡hÜ>ÿ~Þ¾ÄÀ ­é±‡³¹>½âÿX 7gÊxãóïÏpмœÃ1ï‹û6zgòíd$7}žÿ?ÄkÏÍõœ±äú‘EQEO1B¤.xg§'zõj³Ù‡?ÃçÕ=¶müñáólÆÞÉÑõú¶x|#-væÜÑÜ’ý λu 6p ߨKª1l9«óŸtð‡ep½><Îêà¼Üãã`¾{Ðz>ËÙôò ƒËóÓÑAí@YwÌ?×>äæ÷ü=OÏ<1·áØ=#Ú!ꮘM|€S” z“ׇ^;(Eƒ {¥È¨=œmî=|Òáî·:U{Ýv×l Kï!Ø}$©p®QŸÕŽß«ÍÀnçwÇ"Îòfõ€÷TuRMÛÎ#ôþp;ãô‹zµYXÝa칃ô*chÃÉ»¬†!>d{Ù¨Nâ¢>åLˆpÕ¡;¾Ç'™ýüeéôõó¿/o±RYyú½›0::|£»~ŒÀ´8 5äå²Ï% $Gk{h®SÛbyÃæA#§A侯€Z ”Þ½¤is‡QP>lÇ¢j.§åôvj§&yü9­Ï¹4Ç 6YïäÕçÕP+f<ÎH‘¿€Û¼ 1àAákÖ‹~b´ÖÅð}>Z|šéŒvèiË™hÁaœP^h¦ ¢ŠaZj¨%ÝÞe¥#X°µ07yæ§®»zí[ÅÕÓÔòž— )†^7—«Öñ«—LT¹„lmáT 32™aDFë‰) $þ3÷º_çb7Ù®˜&ÑEh³¡!´ØÑ:vqI°aºŒiµ;¸ŒbZbc@¶À#ÉŽ)#Ô‚Ú„ZzecO™¬Ò£ÔØŒÄXÈÁ™ˆ—Åb"pr4½‘.7«sb®îïOåj)¨™“ ¶ÓkC d6A0Û òf\l)AŽ•”qk+ˆ¤Ž• j%²dqhvq) BÝtªoì{§ {OÞ7¿ŸôwøŸ—Ì9c m_U†Wã`µËËvb¾êPc^Üó 9cÔ©ŸªÉU](]‰D¿)çÆLÀ”-‚‘Í4Õ4O:µ£;›'§9°Å«¶[ CöП5a‡Û³3Í îg¸qŽÎ#[Š´E&©+Ð% ñ½0s¤V±Çvá3UVŽx">ÍèœihZ1Àòe56¶ôÈÄGe§W55„4/=9É ØjÔÇÂvÃØÈ¶™q˜©[ƒ­U(V$Iê‚Æ–<憰´#³+9æ•!öF×}ËùfÚc£Aš‡lׇ7Þ35Ö´ ŸpîN!%N–ÍPÞ‰š9]HZÄÈßLb:Ñ7dß4ökPÈF7¡#JÆÔ#:ah™  4iœµ¦É 1g’¶4ÅHE…²‚$‚ªgJć™m¼Ø²Y«"H µá‡kÆlîŒìÍîmݳ±Vpno…ÐBë†éß.AA©"Œ'Q­ä+K†C~-Ðá•DëO"ãX9rBŽvã#¹ÆZÎu…9ºØ<«†Q3""m£‰öƒ£Qñ-o0¼kNL v‘±WQ­›ÝNا¹‹¾Õu÷…|¬/`yc˜J5HädÕ¨¬’‘å é c4@ÊÍu 4£9jð¦õ*¤Ìp+\9^:¬:Ó;S Ðãã¸ûÎöV–ôÄcÆá ;S³0gwu¾¬ Ãᩨq);¥J£j°è]!h àå+Šx™¡0Û ¶;ƒÊœ,‡†ol7 "…r.ÁŽ6ºã]>uߪèûˆÖÇËÄò¸8útŽNi ^¤áÌÀ|?²ß»“ªS½fòyþŠG¯ÓÄ4ÌWñŸÛ›…o–œw“§ SºGßN¼_É)rm[7Bèµ3óÑõ[%Í“Yš.Lû-·œ?îÇú,•Dt 7ÅGt·¶ÞYÉÚš»Ö}Òmš§ŸmŒC¢«Ô££ºÉÇ.¨Äׯ<%vk›÷4:³ZRPa€<`Ãx»ºŒÀó½tKRKç„fÈîÇù¡ß6wJÇCÃåt¨ï¨aâgÏ^æ†^6{SPžßžM×N†Ÿw¹iîÎÐ)¾t¯_[½#Î=ù»÷¸]¢û»{_Ý s()ýoèt›ŸÜ‹Á~¯HUm¿£a%NrhÓÔÐÑ`à–êÑ:nfíù©ój‡.á¾ÛåÂèËàö•«O>ýømž«¾Z1\µ(åÑчqÛäôßá`#yESp…š¹Õ7G|%ÐÙmt-ŽSá<×â®çÛ¬¯C C›Ã›VáR ¹pˆ™ŠÉfªª\èˆÊs,ÅÁÌ]ðôû_ÝnxmÏÄ;ënŽc¥CmáÓ}ã·ª¼›¦˜Ù[a&ÐËÖ„Sø½bu±h¼üš`ªˆÏÉwpu6bÙ‡]ï¶z\nÕ„£ ;¤ª ¼_*¿LGmÜê »H³d,"¼UfåŠ##…ÏÇÛ ™Ä\ÉWäÉ“f º,V!í~¯ @;³|¶¿s.Œ€ßw(­ckû±rm06wm­Án‰˜¼ bJOA^•Ó.½_F­kÏÙó -ö0aÀy`"nܬæÄÿ'Øö‚õøåôl¨4;æFü›&Ç&{”š›É™<ó†wë¾×/C;¨D 7H‹-Œ‡L_½0ÒE¿qþɶ‘äN 6G>X]l` q~žaR%³cªÏH6 Ÿkœ›DySY˜¨G‰vä©°ªÚ™Ï<Å@c /så‘ ©ÎŒµ݇ÛWƒ£¬l‡ÇO]_D× È¹ÍÊr<ô¶kqq·yÂÀüôqW˹|,öµÅ*@ârФŽþ}Žóa{ÆØ¨Úݶùöã„ óñW²RRŒK:ýžž–fkóèѲ¼ÔêŸöJ™ ÒzYï¹ìÓXE–öŒ %i‡Å ú¯PØØ üŒž·KðÃÁ`|¥°&3ö®„¢"µœÕ÷« ¿d}{‡9J J[ü÷PØâ—6äûÃY©*ëth=Àaߦ]BÊÕò²d–ÉÕi£ÑŒyc„Œ#Ö#»G.H1x7ë!ë¢l«±qã8i EÒ¥žÎºšæû¾ž©>ŸÏ¶òù)„8 d —A…!“OÂTþgl ¤(·ûàæ& £,H#p‚Y17øÊÓǧ b@àqÚñÓƒl [ÈêQ€9:,SÛ£(T¨"¤ª/ø®÷wÁñmxÕ¯W®ñF†Ò²*Zé0cpÅ‚ƒ c€Üh̘C("4$‰%À<ÁエM°³& Æ1Å"Oö˜`›íš ­±¦š£Õá¤@Â(™ ÐÀ0Š« TØjŒ ÛP¨3Zf$2±¸nñ5Q„öðÁµˆA·GÒâ&âÒÎ&øj- 9ˆ¾Ô‚~ ¼‹óûü‡Üу³…:«þ(óëºñW^¾•kç`x¢Ú,úïÚ0ÃÞ:Ü‘‘½âÞ Gf´d0B†l`‡û]yÿ×þ;àŽƒUb;< ÅPã€:$ áÐR´ì#l )Ur;ñø‘×V“A¿«J{*ð„ˆ(@Ù—Âc}€óù~=~Î_FöOºž¨ù÷å5t¤'¡0¹Ö X^âž`zn¸}(¥—~ãÕìXâ¢)¿o»ÍÝffõÅNi«¾æ|´|>á"©5sµí„ÛÁþ~¾áÿ«òð´?,í/á„8uaõT€œ’€7{«šút¨C !Ó÷¾úBópíן¹~Â蚤jƒÿ;…À R±ã2ÛbOÖy8óÜxrÃ$H•¢?·1¿ÎÊ5!­Ü¬”{7y„‰QCªz¼uj@5L²ò{kLjI²wkPiP‘{Á¯Ë°™æëÀKús)P !† h %)iðîÅw§r5(¿WkŸ~ׯ¸ Ÿ»8«(@“(ŸÃðä#¡2l1®Ûf6¿õW‰I”’d—®Ü™v°(yL1tWX¾K†"à¨dí‘(MÚßsBn`‰üe`DBÆPÈ€e f²DޤÒÖ³'oyúuñÿŽDý¿œ_Óû¯à!!'Úk0ÄÖ¾Ø=_#ëá Äúο³ÉWhQæ¨ÃH@%U{œÉù.¯³ðúÝZXõRC@bj5#;‚4Hár„€²•:H`Àª•ùu_ŵ|Í(B÷&÷¯Ýßµ4‰Ûþ¼F .ñi‡wHœí<Þ|ÿ‚ª(  íò’¨Hj°/½¦¼_Õñï ÝËÛ`ø;C(ÐBPù-S=I˜õa®2þ«\LÀ°S[]¡@©:œçc­ñøçWUOéÐÆräjØeXŒ—/©üÓ[8“¼ ™éuîR z§`Âù•"¥†Â»X3µQ¡§0Ì…1¨;ÓP½?#U›&[%;N`•gWe;œýnYŸŒÿ$3±Ðg¦¼uÞ&‚ÝXÇåI©†Cåe µ5ÁøžZˆ>#cX¯‚µ ¨ž€Ž«€y ¬&|‡A·VÿìLÒò- ^¿×h¬VÒ¡ˆ’.Hί®Á È µD[Pêôô¸o=vn‘Dý=þô EȘÚ?E‚n´¥‰r¸©f«ø¿!Eσ§²î„ëLtõ"Jvd{ª üzÆO±€€‰]]Ëßà|aè<í¸FöP‰~ß çÑ“‡G=³ž”3ìÿ“¾°?ט{òÖ—v_ÎiOã/Á߬R²Ž$ïñ{^ÅØåÍL1þ”j™"ý×´ó®Ù‚ç½û:™•>c ãb; ãRíÅî7 ûC]éÙcŒ×JT ºPh DÔ.©§“Ùôlééí=aΟXÿ½¼$‚pëáéߺ…TÔÔØ¬x÷{œª¡U°‡¢«Ç¶Úx•UwñéætiU}V²<£øÕ|‘¶ùáÝ©ãá0Í^ûÀ`ym«e•©e·V²ï>:8åÖþW–Ø5z fS äÓý¡°gk‚h¦&Ë´É&œú{=ÿgâ>yvôruź”n<Ú¤®«Û‰µë^³/-øÍ¿Æ©æN&SM¹rl6)!¹$púëËÆeæ uírñå¼àîéf«Wÿ”I³›Š¬(9TòûÕ:š.j3ˆ’$¬Mº|Í‘vUAWƒe÷uŒ¦rÇ€°L¬Õ ë"ù/Q¢6(+Ó+nsaYí{{–æ4È(èÚ4ç›…Áƺ³ç$äx½~OÏêßßã>ƒSÌfC 8‡‘dbjtK¦m"óÕ‹üqƒôDÀOË™y²ñ8|H` ö1g"tð}Ñ€ Õ|^í— /ÓΪ DÖa¨ªöÛ  xAáÞ©e«çþH+û(A?EËØ¾Í;£ñ‰:Hך€±{kʶ92F'Q_áUüˆò¬:ðš«Îaý“AÇ8ødFïåîñb5‡ìø@ÐŽ~³ír`m„ r#©úþ< ›’>ÂŒÑå.- ñ/3|u"h„oÄ™‰ÙW ,tžÂÜRŠƒ|}׋¤ ž_ŸÏëÀ ¥úOOh™CÄÛ …;ºl/•ÁK S­?S±0Ëd–™w¤Æh¹‚Ðw𣠧z+»G!¬XÙº[p|¦Nsä»9Ƃ싰z¾åbð7[Ôíß#«X­ìò$x,Œ„Èoµâ%ÕÕÍR  ¯|Ô~Ϻœ¶8§¼n—ö304.Ì ÐÓ#KvF²j÷¸3jqÄÉìT ”;½–>Â¥æÒb®o 6–Š¢EU õ áÈüºÜp²6Ü õjF±Y”†0ØAší½üùí}ï¬2ü»Úxô±Sµ)¸¦9|–ƒï{ûK·V Ç}k®.†áhçG!©a'NÙzéüB£’"°dÑžV´ ‚ôøè 7å?*ˆw@øË¹¶–ï{÷ßÂsÆŒhkš)ß}óƒŽ3‰Øï¥þ¹}r¿¥ 'ÍóMýDXP’îÙ@<¼êf­ˆhl{ ‘K²Êd|*?•ð‹"°“aÀ¶².ãÖª4'.¡Õg%R j†"|é1ÉBÙI!ËMõŽÓ@L‘’qýꃕ‚ýeÏ+R‘ƒD k˜Õ؈ ?ÉÀ*(8§xâÀ1Éó›fðä=çÈá'’8©OfÞÎTaõëÖwµÏϘwa=O}ž–¸`+@>S 7§{F·,:õP5iØ9ÏÛ„ê5³š‚L¶ßÏ;•jÿ§ÆV dÌ‚Yáê‚$3<CªœÈuªˆÆ6j×÷B”í´no=`&Õræ¸DmãÎ`d‹4)Ø¥æw>…yß²\^IbNxÄ9køœM-Üã3Òe)Ç‹oR]D-w³–LA‡»ä'Ùãùtû!÷yj)?jßÀ¶½Ð‚S~.ŸzÜ‘–¹Ò£bÑ¿»üמjÉ&Àj‰údXx!šˆx´àãà¼ñ>býœJwþU«|uÙ5,‚²\zPñ1öìuMsÁÍÏ–+¿¦¾¯^ÐÍ_êÑ*çõ" ^ºëbÖËK£5á·vÝìàÙøE˜Ÿ^ÙLBP¨åìøÎ^>yõm:ÓŸwÙpDFõhëEKW¥‘EÙI0’Ÿa‹øuÄ&¿ OÇQ<§•ÕˆDŠ‘íÌnÝçá“mÃ{ïQµ|óx/äåõwz´áõNË{^¹ ²Ê2ÔxöŽÌ»i_˹_WÏpìÔ:D"ö3ù¹ÑUI-dOªḚ̀ú3ÓÓ¶¦ËCG3Òœ9e£U³1”‰êàáðsuåO­öãDØG­nNÐc±4²—8mýïMŽŒDäßÖù%в$_èݹÁà˜K!¦Ç¾ÈÖŒåõ/â@Mvº8ÏÕ•<íòù ¨0À„P’B-Û×GFbýø WwÞ÷ùà)}pvæqº0øÔÅðÍÂ&v3Ü7…‹4—b( òª¥ZÐö`‡r¶æt•ÁŸvû0Ñž8ç¦ÑÛ£¢¯@ÄîlSÎoãZ|E‹Š‹Äqáu(Xk˜X­&pesá½þ{£Ì]°zö®À­•úVë«Àµ°¯à‡ä3ÔÍ/ÇËVKGê>œ7¤ À Ë‚0Ö1°&ÕìØ½Ý­bº§E°r­ÝJA„hUçä#Ü–€:/!€¼‹Ö¬¶ŠuÂ`xsP°Ñ´ sï â‚D4 '¤l…ϱ—H+õ›*‘bIÀõ—M M„@R­à¡,¼iÚ/ÙAA1œ¼ŒPŠ˜!° 7®rÑ£Ë/ÎïÓ4ÛÑÛ wÙI§Û[u†JI[ÌoÈ5­WdÂŽãÓŒgnGY‡ÖtãŸ=V¶~®«ã½j¤WÞ,2b,3ŒÁö{S7l…álåº$ÁšÙ¥Ì€¹E„L¹G (5ä†W‰ÞK“"‚ ‚€ ˆÍdÎૌ.¤1ÀH‚‰È"8õMµöIXkr“]™c§èvææ°R•“ÅF™•½Yú1²´²Û+~h¾ùÙ•)JR”¦Ã·ey43UU¸† ñYKuM3›+™]p×{Ïèù·ýNÎüêÚ”+÷…p ŠUÝùKÏå„Q#2—‚0¨Uì„ÓLÔÕŽGc fT؆mãÉ…cÜÓmZZiÖ7FVLµ‹Y¦LpYル¡d4ÖëýÐýoóë3¤Mó«~ü¼p«õ¥ÂÓrYÓ˜™}­ÁUïXx%ĸ¬$C¯zÄp`è,–mÈ_)‘ó6IR‡üp9|óC'Û˜XΗ\•¹œfÓíÓ¤ÈaCpUk@ð¦ÿ¦çIÄ.;BÖ @kñòuLiz¾5îÍdê,8¸b ëCàI@¯£NxëË|îñÆ—‡«7DŸAÔ-Ddèf$Cž€RŽ‹¼Ôf".¿§‹‘•šnð\"=˜ÿ9l'â* té_ß)¼×Y™ó)¢‘¹†®òç£á›Åû®ü‘ŸŒ¡çp»¶ƒ­ eÞiã°¾:ìåU£=NvF¡ñ÷а´ît¾ÆöðêÏ %S†aòšHRA5Mì @ÜëÝãå¶Dתúz ,9”PJë“ #E“WÒj,s‡k18½R#î„ìÖí Ñô$Z{& m·µ4¿ïê«èBC7x ×y›QäµÂ>\‘0:z`ÈDáÎHaxæ™hpk©0:b“NÔDcˆz¡>˹órüˆˆÒ—FŸVåÆ zF»úÄm¦Œ˜Ü AD*HùÛ±P†­¤ùê\ˆsƒ¢Œ2ØvwTÇ4¡b¡*&üÛ_=uSž }#I‹”Dpº×sB"|¡ÑãÛt<Ÿ)ŸI:Ú!é¢ £¦¿‹Ó`a sº›vãÕšø¨Ë;ÝÈp§mP@Êy¦³Îo¾˜ów=ɹAN´ßU~S…óÀUä§.?¡ð^|rýQIÖ*Ÿè¦»³aŠ»^ Ø8¼¼GvÇj!é¥@µ²µÚ Œ¼UË÷îX —¦~5ÎÔˆÌߨœÌ4]àrúÞÉAÌEñ>ša¡7“š>ÄŒ…ðalÓŸ¹Ö±2uƒ  i3¼ ßq`ä~Ö|Éé½ k:ú=\nhì?}ˆíIDoçáæ‡s °Ä u%¶ 'jò=ê™è¾`FLÒ·‡ñ¸¤•0á<;;(?ÇLJ]ßuñg9ïó˜¬0ãí'>Ï‹“³Ž„Éß{Âkk ¯cCw,ÌXàÉŽ’ILÆå®cµÃ$ÃÌV…Ì£“&VÇ-q{3Z5ˆ2áë(æfdvåÄ9dO¯¨£ ´CàjBX«c‘Ëc„R6ãŒ2ä·&1·‘c¬F9ƒÉFÛ¾ù§¦ÌÝgÒ]a¶cÅÌOÝ?_ˆ?7¯Ã§™Ú}_—@;æ»J^Õ~mSÑ.¤ÁÅ+%m+/lààÜ­_ñjŒ„ະ_èŽ#‹‹ôœ:dD”$¨žCD9‚~w–>N^7P[›w|nó IÂk2½Ó^ñv:œ‘†o>s@ÏÉ{@øŽÌ³^…>©ö'ºœ©F ‚h•Õr§ÞåBIB<Ëh!¶D nÒø@T4uc°(rlÙ 1Æ \´HÀ‘¡4GÛà}}ç[ô2daVÁ7Yž)†rs^/á‹þY š0È@_äóÇcê}9vÈäÃ2ÍZ茻)6jj‚:%©ƒçEœßþ’œ‘ ìãä¢:ð#_‘åå‚ :„˳ø,ÇztC™þ©Lã„úeà‘äMÓ²ØÚœ7(´˜m£â*tœU$,A ¥Âo} ¢g"\³{”ƒÀÏyÅŸ 6ùcEÁwq}É¡¹½q}³áÉI I]6B’ïh!qšâ¬CÃÍ•r³.-ëoÍàˆ;ƒNñƒ?_^¾0Ÿ€ãÚ«`]ƒ taPåòGf¯\4˜Ý) ç7NVëßG2è†}õÄ[ÄlÏÀ6ØYË-}1Kˆ´ÞÂ*}õbëµ[‡M÷ÆVŽo¼aš”Š†gÛŸ0kG:ìAÂùsQçŸ}ýäçe†ÇR¯£ï¤™TØáÈ+edÞ ÷¶„èsÆ®[4G¨@%Ö ¦x>ÊY õC†. ü3jvJ!¨( †z‚Uöxh–•êé÷,Ûuà ÑbÏiÆû»ƒûa܇ÍA)aÁÃsÜçÕ“S(ùª#YZÁ£AfK xGØ!’ErâÁ{œ7Ëñ×µVH8æõ/3êÝ}P»ëßRuëÕÐÛŒ#@€eqwYI‹K¹æê»9øìÖ¹-´öÍ VT«•`±FUØUÙ˜0spa~Ï Ou™IÓ£VDzȉ„˜Ëæh×Õ›¦ ¯Ødý×úÜbÚê">h½–PöùNÕÜUªeL¹zÃR# /2ØV”¸˜£*&­Pv–Ùa›¾î1ö\rç~Üq½&}S ù¼:ø•…—9Lö|rÌÞXšðÏ27:ÖÔÔ7zj)ïýÚn0Ôõ¤> ?ìV5By¬ï]8yî4z3߆CcLnÊÆòCîYé£^P¼¶¶ÃvrÃ4¹wõÈVÍÁV5lñ„=ßùnàÆÙÐzËëÏU6†1†7à hÉ v 2Dc׸ü~¹d÷yËÈgD· »<ëÐSˆ¤òò ¸oª™ÄyËÐ1ç„,!ô&¦å B‹Lïö$DÜðÔ`ۀëL]~dk°9$tª“§m_?:ÈÉuá[´êÆùF!çÔ½Œâ¥È–ºC†Øòá°j÷\Ο$CËb¢ »èù_XR%‚ÜÛÅ/)~¡É»D!…©¼²ÅÉŒ±ÃÑY¢üÍŠ¥>€8rZˆÛUÅAù¼–6¤7¿´ÍãQ`¨%žá;®áÉ.Gñ’vÊ¡2”¨VbÈ@b€Ì†±´üÙЛIÆ -©F(RÄœ³Þ˜S é@Tzâß>5Ÿ!žbð Èzíß®"x˜/¶È'LAùÿ”CfMZà…úŒì÷–D°JZK¼˜„fЀw"«Š Á$| `0¤o‘yÈ•†@8ò°-=` a¸8›Å¨;‚ú¡ý`DÈ¿SgW³è4“(G¡?•Œõ¬äÉ*•J›j?fËå]¶Ç*áK‚è¹M`̹¬> ¶sä/°*IÈÄ c=-[Ôù±ÆÜÜyòìFÞ{P!ä¨r_<ý\±a‚a}\ˆÉ:®·ÍÞi tHº@vîÑÉCcébîä*bëÖŽy¡©á¬s²ÔDw ‘.Ef¢gSHêÌ(“ÌÊh­®í‘ðw'Μº8›õÎC„\ºDìP„HæÞ½Hó;¿ã4úèä‡[¨ú`bj`”}Ho‚Ë…ü-Ί p_±ÆÝp®þÃÖ£1ís"bà³´<8A+ð^l}KÑ´Óô_UÔß|=·ÆÎ¼c ¥„Cß=c®»ZðA„bp'O@ ÷ôx&xñ}·Z5=hz%áÛ€8Ý ióŽë¾k<Ÿ4º>ÊËB%¿|0‚ÌÀhùQ_d3wñŒ¶®Ká%xqÄ*Š[š˜F¤/{z¸S‡?9ç›ïŽì|ïNɘ¨MŠŠ˜ñòÄhÔ¨â`þ~ÊÂM=•=¤dë.ô©7„ÃäòÎ,!Co€úQÍßšx¤{}N^~Bwn¦ø L³PÀ; *ÑÁ\3Âç@Á¢é™ ÀsMhúI³³ãdyôÕ™ÉO£3¿ˆØ?"i©Ì3ñZU!IÄhL?¡y²g̹vXøû%¦¬ Þâ\Šh¯6[kʶ.Aø¾Ï¢ÀámkG{A¼Bv‰,xy9>ë}±êÇiÙñž³ÉjŸ+ŸR¬4 L-ƒÜ PŒ8e‘Ä-0H)#xÚüˆœÁy~ÈÏ—ÈÞJ,&ƒú~ðS?Æqô½2Knò¤@8/ÕφíDKÏ©¸¹XIîg‰ý4É2Z­›$DÑFD$ªe§ý?­Yæã¥tÌø¥_óÈjùïý¨ÑþœÏÑAûœ!ÿ'³C§î:>ÛÛ÷q<ì6$?à(‚„(D°œ× Váéµ(¡Wü ÷=ĉàP'_À|+´Oq™âü¿“}•^¦NÙ£Þÿ¼zSøîôUÉÞ‘Õ¸ŸÝE REˆá‡Ûûï>~Ο> ôxwõâ”"ÕP=F¹­PëG#`®“ÕÑFŒP×ò¡IŽx85Ëe5½Kþö|Åxñ· ÁÈUZÜCÓ>–uãJ$‡Ïf§èÐñþ¿}ž´<þª>(ÿ¯\/-E¾®Ýµ§Ì ém¹NN×\uÃY¬ã?¾ü6ÅãNvæÑ²¯S¸ßÞ¯¹g›àzþç×e£µREïém™¿ß¶™O¦{ l~§ÅæòÁÝ ™ÑtѧªnÔï!¿Ã›~|“¬V‹£xÓ+½Û"í½Ž ëT™ø×Ä X‡c)2!ÏÆnÚ®lÔñqÕŒƒÂD~‹á_Œê=qÐøÅ|&¿•%¶2ò‹tœvÊ=±^Ùmßdze+U­”=º¶Böe¾7Êà²:„ôÍåÏŽ‡efÖàªú|Ð[° ‹j±[D°ŽáÆÿSa±ÍÞ­4Ž"a¥Wê-¡Ð²öt·GP«`ê•”íìÛý¶b-¶Ñ`^[…¶ý,7âë9ÄR•†Rg-Öú–ë"ÜlŸx¤ ø€+öôÑöëdì Ù•< Ç!æJŠñƒiæLnC¤+¨D7PB©Gm–(7Ã)LûO™ ­¤@ãŒiãÍikD‹LƒEQK"n¸šEcRµUhƒƒRMFBpaxdÇVe˜Ù%5.ÜÁÆ4mnJ©ÓÕ\(dT˜¬g"¹—r£¬#‰VpòBº3z 4À‹Oë|²âiަ…ì39ÍÕ…"¶Ã ਰl€s™ زnèi†Œ¶jU¡§—[F+˜ÅXµV&+P(‹Åתj˜YŠæ<ši›‹IÑ´¢õ¬C,Fã‘ä‰I$SEµ1ð=&VÛŒ¬²%k²º˜AÆÆ¤#fÜ ,ž¸'7tnÆôÙæÎ¸oMK[ƒ…u‘Ë 7`æ·™­VÆìvS¢ðŠöø=o<Õ{oon«"tN­k(2HAúæs -³@ñ±% ©†V ¦V’`d¸dÌÒMhœYŸ~¸6ÕE1¹Pä«’ai °År i2B’Ì$>ˆÔ¡6ˆÒAœ6ÎFTœÕ¤U8$=½µç—WvÛç>wnEÎ$Þ¥Ñá#NɨFì1¨ÇËØÙ¹¬ÞÑu d#Æ7u§ÃUL*zN-ª5tDš”± }ø+- ÎTL£꘭‘ 1¼ŒÌ¦‚›×¨*#I™pŒ¨Ûž&úæ.âðIM{î4lmí{½uêmêtѱnw:íçp—w 6ÞûvUå¹²lÁÇ}°@ú€ÎsŒªÈXžYˆÐ«ÌÄÖ”y΂] i(ç£|JLÞV…ÚÑ%¾> 8qH‚r§Œ#ƒŒ¦Km¼ê'Œ;Hí©¼æø¯A„9eHj°¢Š:¤ %!«#F2Ø«Z¼õ»4’†\Ìh6Ö©Êë@ÅX¥z¶‰µµ5³7`Äl))È‚–N ´fƒ .÷F‘¦Å ck „Cdº²V¯JóMç¢q>;»ºT.ÂÁ¨w—a!óÁ\ ëº,ÝÛ€”¶»®µKc5´ÚåkºîJ4î»D>-o¤¼áÆs»‹µr­®î¯š·g‹W p1´(ÒQ)$ó¦+S‰Ñ™ L„UÇ*¤*mV;a,ÁŒ®æE–k)Ôºp܈‰¸à’9!€m©"Im¡Ø„¸O”–îÜ*¯pÎôÕÍX¨ÉSPÔ·!iƒªe¥0•¾%¾¸ÁÉ)9fæ6E@„d¶öM9cÄäsÌ)“gi’è\©6˜ÎÚ¾ ²’b»“QÕÏ$cQ· A.P0{êÄÔ ÉÉHrÁÄåRœ`S Vh9" .W*m’1‡ð¦Tƪ‰¨°ÛÒ †CLé2‹æ ßå4>È×+g1ZÕ íK¢*ší>FD 1E$p°,1{Éãƒá=ÿ_oJí£­-úVƒ ûî vÀ ”G*ìwƒ™CòA\/”2p–u«œ)¬3£»¦ÛÐ`à&ªCÊ»ü!Ö½)Ç9ckEÈîKm®Àmƒ„•¥ÊD‹ƒŠF˜u‘Çør }´×¦Gãúä˜ðËR5X ÷½ºôzýŸ¢|BÛÕ~XDíôb ·„£—~O—kk×Û»W¸’³e´) Ë0¤¢ÂÊ‘ &™³ „Ú3–R4ŒŸÇ>õîVô$¿S±W׺¹ªäcEÿ×!ŸÉâ÷ëóïûN÷\V,?×EO”$IÓÖP"§÷£5†d IqCüPÊ&˜ŸçWuó–Ùçô»Ö}¿,@aìýkÈGíŠÈ¦L¶* ´rhæù  :PÙžIùËã~íÈ傆þoƒÛ÷¿'Üç÷~–¿$´”ȯ«÷ V•a lu¡&!H.ºé‡T¬³.o7”¹—REŒ 6­ºq‡ ӋއÍ÷E’(u@ïaž‡.d::J0L, ‘€xAxžCç8qÄÍÍÚùÇ1¡á®ñGN&!Qb³_hzëVtW;_G„/Ô?bMà6­l«ùÄàܽ që{öHžˆ^Ò{Ó=˜²ûßTN¤€AÇN”ýÍÕÿ§ÀDÿ£ÞÑ”2‰Ú:û;Yÿ³%òÅúLW3¦n$ ÉýÞd áñU@=™´I¡M™˜ÙˆgWéáù½ABPÄ•LUCŸéïìÏ&ß?„qЛ٠D#׆"eE*Òi¤Ý+ït’‹w3Ãr†b´„Ɇ¾·^¼íâ e~š( È pª}vü[gzs>ÀßpãT&•—V°E JÉ… ƒš„¡ž¦´“½DT;†i,´ÍE>]»^-»}ŽD1™b¤ßw[¥ð®5Ôˆ'ì‘nCDÑåý.·ü¶žOÉ’7úûõ¯ÊÕÉ"»º/îß—·‘LA™×9Ô”¬%[æÏ­ëôîÈ4™2ÒX|î»ßUðÛóµé²›Xª¢­O󺺑#I¢'õ6Åj'EWERŠ1ç\ì­YDK—XÑDÃ×åÜw³,œR„8I”4§Çu«Òì‹ ðÚöó»mqIX(RÐ)#ªôÌÎñ]ÙèáœÎSYn†\ 1ª&,ÌZP"I`ã .K’¹L o¬µÍm|-Ù-"š‰†ÂÍ÷wYqÛ^úè¥ Hf”£h¾JºB›HÍP›%È‘xüñ@m0 ^x­ù3çééôúõÚiŸeß?Ãïöª}üÉDI¶€¾m«Ÿ?Ÿž Yš2PV¹ú¼»b ±’ØÅªô¹Î_›¯Á¼Tº¤‘‘COqpµ×§8 R©Ý`3±Cé÷@ cÔD6)À0þ÷ž|=1ŒkÒéŠ%)&b $°Ë{k¦6Úb/â©€XFEDèVpìχÅ×þ¯ Üýßðp:÷ìûmóʼnְqND„*Jô€ª¾Å-uöÛý:mÝŽ>Êßgœ¯í»ëQ}²~Xê ¥8ÙWÛqv©çu£ÌÞï¬ó|c›ß®zz®žtûïk磿Gª‘µ’ é*H8i!ŠîÊvX.· ãXevi`à¼wã+£“€$ºŸ.ß|ó¶úÁÓi˜Ðã$Ž-ßÂdƧn-äy¾ïïîceH’PºzóZ Ûomã**n0b0HRE‚£½,Ë !D©Ìáˇ.½56× ÁÕ5†m¦”‹„§Eebºq8ÎøF¨âƒ ±)Ù(ƒ*$h3Æì®#'Œ2¦AnuõœoÍidêÚÏö6Û™=s·|k¿ïãºu ~nú8ÞµY¼õ¿ ÞÖÒûã ¥)|¨×Û…n£ï¾¸(îÿÄõÿ§p#ô*ÿÁaN;×ÿšïJ¸¤Wy^ð£tô`Òw½[‚ŒõV#“$§žHçô7ðßo_(¨Q‘´HÃ{ôÃQF"*:ð.>9ˆˆ(|£³Ò¼:â”ÀSÄn¨¸q– "Q?YñÄF“¹ó´q""H%ùú÷D¥t,Q,*z—°:HÅ>ëѯ|‹Biô20½D³%õ9&y¿Ü*à>ؽ¬?ã×#ùj}Ý¡ÚùZ©ÄQËØËü1_Ãç#0Ð,"Ãò”!_)3µOÛtüõÝþBn hÁwèÝÿ Wî g4?ìH¯.„1ñ¿}aöˆÀDJ¨¦%c‹ˆnj}/¦Ü ÕcÂO,w$õ¤Æ5PÆ&2u4Vò°ŽBļ­ŸsHo  vÁÆQѾ´¾ÂB»û`\Û2êÎÛ ”5s‘È ” g=(i5PqƒÓõƪ63k1#þ¶Æhò ±¶3åR÷#ÿ3…*¤Â Šqöœ…ãÖö°àÔ¼]õ°HHÏ$ª£ ,! µ=Õ¶ ÏvÚvé×Û®ÎMýVØvïÇ;w|AiWnÃOJ¯+ŒXÔ3,ÖËCh„“)ê²÷Ѱ Iá<\uÈ!‡ý»G#ÂH5‰$o¿‡îõ?Y‹…Îà†3È×Åû;D‚>¤KµÀÀèòM~MŸÀƒ¸™§ã¼c¶Ë[Da„Î!¦MEð!qóìü ¬ˆß±Á_–£†#†á¨I0é¶tÁSµ 2üT°±Þö0Q`,¦˜_}–,˜@8¥°XZ¡lU³Î¾«”õÚûëq}\±zo| dÌ[N½ÖØcÁès; ƒ»S:m¯-ø¹2ñw ) W†_OÐõ:óX0J:n˜saÝÔÔýU‡j‰ÔëÛW¥wwT†Ì;P•Ü£À¸Êö@s…\16*hˆ M“f÷ß•Ë!*G¿·¯5„œ%³ŒÌ2V³+2Á¸k#JON4ºO4ðÉŠ4ÁÆÈ↩79jœn;m`ÍÁËÃ\1,c]¢Ò#Ó75B°Ñ‹9¨åÁi7 âThZiµ=ðPh\5Fú‘!_^X6óáf²œJÅj„f2 ¬‹‡¤Üm£›š4›Ö;IÇX4¡;B±ùÛ‘£w]|wËÊì z¦óÎ j¤¡1¢ÒF£FÆß.dU¢ÉIN×2!ršA™£®«,00Dlm6ž¡c¬œÅIkÔ“(ŽÏ™¹íö!²G"[FÒÇ{±%>'Uv="úþ< ˜ˆö/»õ‚4¬íÌú¿­ÿ¨ï ¬lœÌ“äâæÑµ•TŒ}X¿æëS±`¡‰"B”b•«Èv„%1ø¿òæ”_m&¬ CÍä·°õ‡˜eù‹ÀàVt˜ -3R3ãõTIaòAlvÉßêú9 $/| üÈV€)kwÕÍC¾Ž>yŸº÷û‰â\ä±Ä•ž Ô[_ÂV¸5Ëî¸uLIOéüU8ë¸/ƒ+¡›#гSV÷ ^²› gN¬H`º’™'¹2:m§Y«ÜЫL‰zp×f<©sdSƒh¬öTâ&ãZ „¦òIñìÔ‚w6È/d(0ãÓVðm­>Ù3ûÖ‡y«ÚDÚc¡r!µW“ø°J>Ü‘ÀjÈ›wªIÍ ÌÔŽ²Ï7p²»¦¡Š@k=}›Íi³èÙ;ø/wXMúyá“7>ÊÒêd™¸¨LpåÍèL-ùk2ÔäÜwXb¡Ý‡2]÷{;XI/”òÐkƒy¶°œ,H¡DÐÆE N¡úëoúÉÛúÓô&\˜Åµcÿ‰Î_òÐfÞÏdÚ3WÔΔN ^Óý¿éÿûitró0ú¯ÆG»Ï¯É¹>:…Ù®Òç W)i$ô0šf $К¶ ?eíWB E×ZZÀÓŽâQâÝ®M$†¥cq»]&Žœ¾Jžç16@£`Ö”)`jGXárî›NQþNÐ;q Oë;™<‡ñæö|FõVÖö‘ô¿DW,Ù,4'°RÆt‡êàïH´5ƒmŸ*¼†e ˆÄ*ÑN·lÈBÊR4%O›y].‰·í 0_ö^oxaÈ–‹¢–.AaãÓ0k§ÐÒ\ΠÂfî#e'Yœdß¿sHA™€²@´˜à”è;òˆ‡Ndë’A0ïtÝZsœR§ A`æ‹0Éo„½Hï»Æ ÏT*‘ãºl놩@0d˜8ÉÝj”å‘ ¢ÁË;#Ȩ&Zðï„9/9˜ëþ´øðüCë©'¯k™7¹3äש½è ÀGL}”ºÙþsÓÝx¶YæV¹dàÌ/h°½Ây‰jìŒã+3UÇZ3$òç°ïáZBô§°¿/$ËØñb UXX™™Yº­7ø¹ÂI.n•~L›eõÍÆî.øˆI3×Én@‰§ôæL«ú™™yt“30õ陀×ø½:ò%´p^Þ6‘@²ÙB#—èÅz¬ŒôóZ™™¡uçþÙ€eé>¾·²Áà–ÿêÛC3·ü8ž·Û×3XÔ#À0Ĺâ1ÆÐráDe"šŸµn€îqˆ”…ÀÇå5$8¥nu˺µgîgÍŠÕ×…ni+²MèS0“cøè-5)żHG²‰(ÞW„,%ù~®Ÿþß÷ÿö·â^…ÎóÊ—èÇÓEYÞWê,ÅÁt¯F ³%}M_»ÕüAêÿ5Þ|Iþ={6}É@s'Ëõ}>yû>~ß²âPÞÈP&°G»òvO˜ç(‰ú=>Vfg)â" (ƒáNîðé/; ¯…Ö%Ò‡I}¶¿ª«…&Y6%Ÿ[ÌÞòå²Ù3h~Þ6~ñÄçY–Þ*«hI5ç÷ßAèçÒlîárYó«è!Ùèþ‹>bR ´ ŸúÁþ[°ÙNX*ΰRi JäI Q¡Yh$‚´*Ò Rƒ:0DÉ ’¿ê ?%­]½_æ¼Üë:ç:çwP"m¨äkF©šjƒ’7l¶Ilb’Q‰ %'ä[ Î uUN[j–„늲±¹ Úöš¬Æa!dN¼r"-òuí_]¹×¶9;®XÙþKz@'å€wÛ0•†J8òÑ#a›tÔ»¤¯=w¾iŽóctr®½¢îêslj‡“5ä8B÷àð÷‡9Hêç ‘(ˆ±AÞî줖¿éÏÂá 3o³ÊñÛh‚~–Rco ˜l·”>@Jwˆ(ÒdÌ£Xm¾‘v; ؃mÃqùúeÅ2–‚çyçŸs†ìÖ[6¨}á VètÞrC§3@ÚÍV'Ñ~ÙW'F*ƒÌlVUˆG¹sQe+ ãA°‡IåA ¤„"ÑòŽ×©è« ?Ë{X„mÑ‚ÿ§äá¶í5þ½ç%Y"+½/Æþ°8æx¢¿w})úZLHUȣⷊåympÞMo«GhžhQóÏljEê· SÔ”o¯Àß*$¶,Ù$ô3úÆÙ¹ ”<Õ>¯^2”øÛÎàê;Y@¡–Hª3â¡ïvšäãíìŒ& oòì@‘œÓ(’Û@(0€ÐŽ‘`éXèË×§Óo […ÙÝx¸¼².Ì4bè’>}60ø Õ²wÞÏG(¨pU Â(VUDA=Ãäî“Àð;¹øg´šJF6tÙÕW8¤<³x昦Œ‰·®!AO`Dß ˆÈŽb‰†"y(( ^* mÃcæ& ”Bsh¸_ݺÄ0&‚—]O{Õ\PtFŸ(˜Zµ«)2ÈHÒýÏ­Þ*õï«RåyÛ’ ѳ¤P].„D5ää¨wÕ… ^=ûyXZåŠñûnöÿo_îÓIõìJŠ8+û &Ao9óÿõµé»þïcGÔÁ+³ ÜóeNqEÈåËFÇ]$mäUŒH²µôWLˆ+w 2p— ØÕ£I©MFìj S ‚°µ¥¥Éí>ÍoR7 8óPt÷I§á• e€ã‘6¨ªŠMÂêÆÄ-–%«TA¢ ¯h˜—ÓyÛh¼ …0- Á§L£aÆÖ è‡6¢vˆ†˜ÚmX¡!ábP Â"5 D‘Û/"ÛlZš“7ÍhÌfZÖ!UMÒxñ@vM¢ß5€c«ªÍ¬Ìq¶¤Ä33)Œ‹K€˜/ÊŽ;—´îÆ·9¨åîrB¼h$wá²në¶õÃÞLs׉ÜkN°ÛüOÓÄàCàuª òß÷}þßý×¢¥3wüu†ËôÑ..‡8wó+¼BJ²ˆCN¦ ùŠ  cÏñÝ?ŸF·Ëp÷ÆàžÖ DyHUD¹f6§Î\„’T²Ñ O·Í›Ú^uŒ]SØû³]) ÕÖ;Åkþ…±,f:ÏÍ·Ÿ‰¸šx]ï_*ùs–ÂÌd™-~©ICî áR˜±c÷/ÊsËÙ¥{‘•㱉¦ï{žæk‚ïñâ>a`hëP¤c·R3zž–¾áTD@øA!Žþ„ìo2Óóçù«oæÃcÙæ”´–÷•´U i÷K³‘ð) ÕÅ‹,Xîkå寄NŸB^›÷ywq¿^šiU‰¹‡Ý£ã{ì§uãïÜ2ê‰ " ì}: e«‚49hÒ#HìÌ Z“&"JXäu¸pz=• ø‡‘­R?ÏÍ;øå“M&õbº™NÓ‹†rXjŽç= BP”%R¢ð†°q"æ¤xîÉž®r¶[{LŸ_e£²D¹>ø`&ýQ¡‰²3ß“íß>M|E‰bãt¡8¤^1Ö(ät¢ão</{Ôî’󆞩«½E¬ÒªÏa:÷iVŸx£M¢Péuÿè v‹bhþáþë.ºâÏsœÎs5í¶›.ÅDJÙF`í(H¥HˆNC^›@ÖšW‡‹’x¡Šk‹Ü¯]Wc/*ûO*l­O^þÿ‘þË¥®úªø•«ð"™ØÞ-Eô~Æ{¼œãáö‡O9¿”Ç&›÷Óú÷ÿ$FÛõ*óã~Ý5Œ¹Yîs™ÌÍjØœ“P"€³ „^¶ *q{ÑäÙhyr8åy:ê\Ž“#-‚ÑŒÌË*iRØóá®ÿN“OGâ –Å‹ê”ÇÙÇ{Ç/ëåŽý½\ÌC¼D>Ïí¸ 2Y·AÀú¤NÓÏ#ÑüÝð(îí<÷$´¿ þ kÏyi,p™a0\÷CG —:ÛÚhµW£†rı,KÅëÓ¹®7y™™‰w|//¿^o᱕×!Å?/iÝ¢/6=½q¥¯tSDSçz‘Oqú껜ž"ʾ†‘oÁQJ„¡(h¨®>¯M^ç[ÚßTÒV>götÄ{öB;£!`ˆÖ1„w>#ð^p}Îìa"¨¢TŒm¬޲ˆÚ}úöiNNpù0_€sð¹ïÏw>Ó¨òÉÍ'nrÞKd« ž~w/4VJé’O,ÎL§”4Æ$À>--Õ·ÙÛù„Ü¡Ö|»þÏ/ˆ>xƒ=”[blÛ'ûç(¯ñö‹S@ˆ¸‚È?ÒœÜÜ»¼<ê÷½ïsžæn¢–!f˜ši¦šno7N¦›†94ß ¦c4Ó~·»}æî¯½×‰LX±bÅ‹->W*ªÓi´ÿ†(Óû'§n»]feËoàõíÌcÆ2cÏâë”×7|su™’æ[¿°ÒŸ„Q¦ÓôŠ4Úm6›M§Ú(Ói´Ú{íyíÚë3%ËnúºVE29ÕŽM4Þüri¦ši¦›nzáÏž³Œb¯w¡óæS,X±cóT¦,F>êdX–%‰cÛ¼Ü~­Ç+Ÿ%¿…Ô÷2êS4 MJN­ÕÒ”­T f—õõýÞöõbЃ8Bâ¤DjHz?Ÿ³Ñ©Êµ×’f^ç¿5Ü;’îY1ð\ÏÁ¶‘‰Ó2‰¢K|¥EE €‡Wæóìœ-×ùN)ÓÒ[Ðfn³¨Ð¿JQÆ€§P°LÐ|V'â$Ã’`ùxÊŠ2û~ëÜð F ¾n C‹çeîðð<ê:Ü{¼^s=ê«ÆøT*ù(¥‹²õC·K”ì +UµÛY©x¸è°âà1Ësàa©f—íÚçÜ 1*›~åpz„%‚,á±ó!è…–-µ‘.(ˆf! HȀ瀙õu@0™®¼jW¯ª´}<ÂîE?å»–í½µ HNI&‰Hpd¨†B›ê¬xWW†'vÿßÊÍPVdõFV 0âÃ1[êŽzaá轫ô»SÆŠ}6´‹›õ[7„¾j `B­š\ó¯­„aFÎK$ æQ[Pw!r…1O?—»}ŸŠ¦àï껃C¤Í“A;[.K& g“£¬tí'wvžÇSÔ fÝsÁÁÍ6¯§º¡çCÑ™Z>+Íú[CÉÈ1Ð;Ý_6†Ö§#šÇ<Â[îp¶G˜Y‰â à$R,½ÅA§&\F,޹QZœƒ2‰{”òS©9»ÿ§…Ü¢ù¯'Ó=ÒáçVo<4tÊΠϵ¶V£EOL¬•ïs?tŒ#ZXöÑèu¡Ç¯ñçm¯“Æ9Õo}wµóÞ…gº¢§l+ŽùáuÒo}ðpQ¸xñcËsÇ*c‹Ý~dGN8×*i%huÁÏWg¨à,Ù¹êùW$Ý…·Zo¹_"2vumoŒ0sÎ]mzN¿†’ñƒ ±{_sX¯:eS iø4³æßW(£ÅIB:“ Tftë×ÃL¥®í‹'BPºµ6 é¶«´‚Õ{o•·o¤ï“¶' Ó¹q› pàêàêZmÇ:¾/¯ß=Ïo nºÇ"Gn1\q¾3ެíÆzèïôV·º–߆½Í}³Ã~œÝ•Ë ô)ئ"»¨ááÂw¤ùùð7ÜêÃå5Ü=$<›óïíÙg=ƒÇg|Çaˆ7… 9ºÀÛ›Ìpžìt}Yõþëx‰ŒQ´­g¯Håâ‡Ö8… ~hÌÌ|’òpTJQ«€Ån{œ‚á9w !^îvÐÒÐdz aË‹Pþâ,@P-8s Þ'ÅÕîé>L‡ûóÝ,7½ƒ1ŠüO-ÜÛ¾E\š*O¢nÿ7YœßóŸ}x•ñ¡Ï¶aE@Ö€«ñá«1~‚aË26S‚_Ù­P‘Æ~z Î3RÙ”êTBS!zz¿ŸÂ||ºÏˆ‡è‘ZŽú¶ÇͲëÝÅ=œœÑ $F%þxÅ‚ôyפJàL,ÖÚ€`lNRâ j¨õ5‚ˆGøÄ7%ì%lèü·aËéôòÏg&{Çj¡P(ʨqñ1ù±æê¹‘EÈv0áæO®½ Á„'ÁŸOÞûÞÓ‹3üœªm]6zºaI‡#bˆž¿¨'c­ó/›ºÎTW–ØØuÊqkĨNꯖÁm«ãÃ(ˆ"¼s¹È#—D:ñÜ{Ü<šÃþBÌý¿PÓ-ŠJ‘iO‰BÇŸÏ‹‘²†¨E€…SQM%6y´QogWZ„N]?Íí–Ïšðƒ.Xmû¹²Ï@³çâà6oŽ÷xã£è÷èЛû-ô`‰‡L,pî™+pŽÖWúœ0Ç,£Û06=hQE Cdæ¦Ñç-`ÐöˆcR˜‰ÁAã•ëuÈmŸŽGÚÁØg}[íNØbDA ,ù£.7Lp—Ɇ€õÑÀዉÉ*`¨&)xDÀÄNyű‰„P²Ì{'Þð°ùºTM*^½~Spþd¨D@ê„lâxu(,ƒôæ j)ÝèTMô…aèð.¦Ìü÷wBOdšx˜*zŸï[ ùUœßêûw˜–/>=‹«FæmÐcÖh3{Úè~1æöJИ„%’bîð ØgQ“žÙ¦è‹{ä í½Ê¨H*NtÁÌ@ÀÜËRçW2‹9…üä¡ìýâñAú=P”% BPÙC=/~Fë¬ã3a k‹¬·Ëìí¢lîëôý¦¹ïæU}RBú*¾‘O_o«1gõï—‹?:#Šý”¾Þº ‚™D.Z¨õÉ€`·†F|Y$ý¸‰Žx$0þ™†Ô—¦—ºI-`O$çúxX– .píç›LÑ‚Í X±bÅŽzúó›íï7cöwægãUUN«g_ÀÐ àÍGêÔmãŽug¢u7rmpÓ®¾oZno4Ó.<²/ºžÒxƒ/oÏßß×:l{&Eu c›éÔÓMÞtîý·wy¦›¯›—Ûíúåãäo½ðOȰœXü=qû‚.ÿ¯hÃô×`•ŠÒÙ~¯uß ê¸ÿàˆíß%¿··7§ÀµXl/–ŠøA|±°{ ß‚½KÚ÷„Ÿ¥€‚°þˆiœ¾…’[7ž"««þ…ßpXOÚÖB¤8Bw£ì<Ÿî=)ŸŠ¢ ô·ŸX˜ áRToN­a'pÙ£BØ-^|>fsòߢüÇ¿/¨?£ô‡SøÏJúJzCë'œUú;£6;}[÷ýmãiœëƒ8¿EâS+MíÇ&šiº8äÓMòc“7/Ïû[ãyï‡ã<Å0é¦fj!øxdXò™v™%‰bÅ‹W)¾p™™z’˜±bÇ^|9ç.wyÎs­÷Û\µ³ŸµŽM4ÓqÇ<øäÓM4ÓÇëLµ‡¬gPó3/3o ‹ı,KêL‹Äø!Àf²÷Œ»ÌL¼Ì½º€À1QTîs=œè38%¥I@9G@®ÙçùѽË÷ÂÅÄ×ß GÉáÂH~ÞþŽÌ6xWƒßwƒÃ@úO)ùˆÒ´Õ|?'·Õ°ï)çÍIÈK+`ÄÈdQnn3õË|*÷êÝ;YÓÙ«è¬H1‹i ]bo›^ž½ºVÞưoXx0F$¸€ÄÌ~ãß–UHPŸ..ÆÝp–|>Në4DˆG]nUÑ%=iÅ“ Æa[©1Èû¼Èw¸a´Ï7 FÉå'28DTú†Djà @ù* 5\|<µä}>®/nªoLEë+Œn( Gc+—Õ·Ú÷6ÕïÝÛwa$H@ $[xPˆ¤pÝ¢ù;’îö„ ÓÙ†9|M’·šËØ«ážvÚø¨çmÉÞÉž¹Æß¯‘¼s5×S×w}uÞ{Zî9ã•®ß~£©ën¸úOÆ}{=û>ýݬu•W(xåeç\>Ò‘40 dRÏ"„¼~Š9ñPâOt Ë{»¹¹éݾú¤]yOš£4ïQ¤ †I€5¸)  HmSØ#ô$ÛóU™²§~ 6I#?ð€‹0u޵™l¸JàR”¼¼Ú×ßãÚ÷¼i%‰‘8JÄ}½0Ã5@>X¨9Ó¿CÒžç·wnŸ7Ž”wã”S˜çx`P˜ë ŠFì…¢ˆ¨ÚTj÷­^÷Ž•†‡Ú)@d¡ÒY†6Ÿ»«Zm°ÂD>ðQrâãH·ÂbƒKð8Œú7P??ÓˆÔÌYzy¢4Ú•íåã>L’üßm4Œ¸;t qh¼EÎo3Utëï•¡ï ÇJ ¢" ÝœlK‚Æ”™OþEÉ£lE ‘ìÁ“dè`.åTX*Hâ,I"µ‹ô5×°P_ƒ°×™vh òB&ã hÆ/Þê"%Þ=î½ÃíÖq Gø: ±I¬sÐûµÖ, M‘ÆײoІÿ1 lsp6YñVê"¯³”Óš”4bNsæÞ‡‚ÁYÅ&•{¨ zµ¢Ùl(•¥‹l—ɇçs»nÝMäʈóeN•v»šw0¨ÅæiŸg~"ƒ˜ 9*‚>%@Ëb†>  …¸›WŽ_´( "08]­ð¹wrªhµPòÄH˰( $l_^²#Ϙ«@ñÌ0ðöóßv¨¤£åëòõéÕ¤Ü2VÕÈà2 dÍœšfún€PTº~žíåw¼WÄò/Ûu˜Õl÷_ËŒ'; 7Éïº"Õ2­,æ±ù5ÑV•¸YÊÏNÉÝJá…·R1¾’ÀÕl­Õ­×ÜMouÒuöR3“]ví©…/¾4zÎÛ߂ߖÓl½eZ3Wßf‡4)ÖFtÂñKshÒ§BÃ7_h?iç;Šùå…´ï¿ny¬ù^äáñ_-é¼oˆãœW rN†ùÏ^áF¾|êm <¾g ˆž›¡„ ûÔ=Ȉqž…íã3âý+ðpŠk›GÂâñQÿzîD ûú‡Ä½×ݹ,Iûò/TµÑ?)ˆÑFòðäÐ>ÿêqxå·$äÌΙ’“”óÈàã¯xàØü­%‡ÚÍ0î×LøNÎúó¬Ë33/Ázx(u~’-8ã°k‹\„2î9M`¶È«÷[†mo¾úÛWˆ®æfffb·òèxC¬sÞŸ¡d~°ýÛ£Ôb5 ‡¿ö×Fä°¡Är (ˆñ1áx2yÀÒf(sh*]h¡üoçÐ<@‡€H$yÄñ<Æ¥d³_k]õS$ÌÌÄ>ë37qòÄG˜v àWŠÓO!Nèå äØö¡SN2BƒÜîêk¨™Ž&ff!ü/ÀàümºÂÎ:w'd7 ‡q8¢à€›Ì³dcœÁ{Ø=>mê"*b—þÖfcwèJ5øÙ°Û®ëR0 Ayš•„J‘É‚‹IèÑ@íý6Ä@ˆ‰1è½*‘jেY „Μf»¾mø‘ìYãÔDEMUWüÓ î3Ïž˜s’"<ê‹çð!í`u¨ä}yúRÛu¬·ÓȦMèRqwŒ):¹ñ,t©†OoÅÒr5<.tx?É÷Ð3=þG–4‹JS=óèÞÖÿü¼'É'èˆÒG¦$¾$Pƒ-w_v ÷9Ìç9›C‚õ›ž÷Åâ&b"ñ >0ø=Hù‘Œ%œjf""&_O 0X62©·Æff""%ß?«ÖG™ ¢À 8Ƶ33332úSå\ÙI ÔFä+ΩØÏ{ÞÎh3U‘ ¾óþb7€  «ÝgX1Ï´`ü+R¾¨QáR‘VnªœN5Dõ§ÑÜcæÒ侊)}-j”*²è¥ä‘=•FÆÑ„}·¿†®äc6ÔP€” ÓPÂðÎý­W9ë]²®ª6ëtVËm¹^ùÖêérÛ;7­E%e« ñœ«}Öï¾×Î…¥K.¥.³XÇ]wÍrâ6®;Öü·àuÁéNüEcëaá8Öö 6{ýà°UžÓU"r;­sewY˜¾uÇ´ÿÛBC¦ôáÇ£„¾T`L‰i¢sIâI]=ÓŸÁ¿|èk{í¤òHóçÁbÌÆ 2·ýëpÁ†‡¦mzîéHxŽ“$ôÌ*æéCºy‡{€ä‹!‰ _Ì€ 8|ÔÄLÌÌþ`z¡U›ŒeÞbeæeß9Á¬´™¨¹™˜ˆˆ{xÈÙú3‰ºÌÌDLÌÌ»çáêß(³ýIÃø¶º7<‹\ÌÏRØ=ʱsÊøÿ·¥4§RI8´ÀåÊå´ÁrÌT=,-™CÊЩ0æ÷á¬ò×»õ98ºßÑRÅêÿCÇ„yßrëÑú=kÃ8ýã:ñmÔ¬¡ À2!Í<,“nÓ»]åv|÷õ9Ó…Ô¡g AøÝsîÓ–Ök¯²“©· ç})++†3BçP°ÁM’­÷VëÌá[íºÛ³²r²Á¬h]Lo¥pñ» ÙqN­øG­†õçÝåA \ñǾȲöüËIô,O{ž9•™Ù}˜ârum}‡(elk}ÕºóRúÊð|mí}n¶çD:—>ñuú(Íp¾u6ß|ï¥%\0¹_k:Â7‹m­¸¾yë‡Îºç¸±u=zúöwñ¿}g|w½¬_yíY¯çI¼E:뀖ƽ @bC<,»¥é <º@véç*õ@W±úϺ¡`·ÔýEæü=ʋѭ±Òýñ{ƒFOZûcìw¸ÍfPײû¯7|±e¡E0îEsˆëJLÒaðq 7$sÍ=­D")æ!8ÙÌ#†689 [@†KÆû¤ñŒCzô‰Yœ?'x¶œ‡»lÅ$Æ|×1$%d:!‚”¹ÈsÞéÛ¬¼Ü7ªiˆ[H3(JJ6›÷ð²o° L¬¶èÙäÇ«-:)ȉøþ~Ñ6®1ªf6YUÚ?ƪ¶B{¥±‘¦84šMjoTÓ3Ý2£Á˜nµ¤¼ñMáÚXA6 ¡­¿BßsÃIÏÚÐ`è9z;xuè¶ày鋪zo”\šF ¦Y¢'€|¨Y×µ§o:7œùœ÷8­&ºí™—ˆ&!âý;ðdu›eG»`ìuô Ð ü§š›ˆÌÅÌʘˆx~Tñîvç­ymÀáÆ7c¥á°AÓÌ£*ÌVƤÞåyx{ÞÎlW eB¼iÊxìE¿ño‚» ÂÌamö´¤k§öšLÜúb÷«Þö{Þ¹¸[™í66ÔKªVÇÞ»ô{wØtfY 33>¨8æ¦ðß‘a÷r¾`{öõç¶ûó133//꬈ÇI(I$—ÂQ¶Ð^æÉÞ¬S*…5;XÌ.*músîÍá91Ñešb÷¸=ï{ÜöÒ²c¾.Õf([ØÂçÚ8²ÝTħß××Ùe’ÃJó­p(/ãh]/ÕœÆüN¥âbf&eý·¤ŸÊÛ`}éŸç oð‚9p+ô#: QDDtŸŽGê0/¾-Rþ?§[õMWà,–Ïäƒ?Ýòg{uTf-v§9Ï{Þösj[Èd:tÏ&êаÓd½¾qO5¡H &¿+!Ä M¡Oô'ͼÿ×l´Æ#‰•ðý,HÅÞ-ÌÄ(x|-}>ŸÇV>ðÖ¶ÔB™™——Ù|ãùò<ë4ú̘™y}'ßýµšÎ³¢!Di.spÂñ‡¹•ïKÂÛÿcõ÷ÿÁîú,0hÛóçÝÜ´ðl‡Dä7í;E`5PárŸ2Rª ă:ªžT‚(ƒA'£O=âGOuúÜ ŸŠª .î¾þþî ÂãóN€‰!˜¤ë€2ç˜D±|d”5BRK'Óíòøy:¹r9´)H¨“i :ó–!n=t ;ÞÑ>›Ñå¿O×YΧSë×3ÌqÜ­„¨y¼¹kS,ãÏÝËq_v&Q†…°Gè¹Y1ÕäÛçË+ä¾:0Éè4"IB2¢ñÅ£0ôÜØ¼;ö2¬éÖàZÒÐä…F“§ð÷­ñ©ù5½°N[už¢wìÆN2"yN1täè·2ôì„ÙJ&‚ˆ‰&„ÞàûjžëXJÑ`iZ%^~JÛÍÍv‚I“R¤b{#@ò5ãËÎ^bD?/ðÇÉMç˜S¡áò±ö{ìfñœˆ‰wœºŸzN*î$DD<¼ÛªXý]ÈÄÖ3îï1—€ÀÚ¾U«Ìêb"""õÊŸ†½?ç?Éã¯ü^Mÿ‹·ì­çÔ¡²­ƒ®jüC‘¶«K>Æ$<‘+~“×û_ œ®ó&}$‡~ørüC¢õçöí ðÞ{ùWÎ-°î¬úËìJš ãzÅ’0Ï,{¯ÆS»»ãçQ«‰òÏò•ïëšÛŸÕ¾'ÝZš¼kžÞñ×+Ÿ–£ªïmp¹ÕÜsݹXï[Ï|ºÖp§|ï¾`ó'{)s´]{gH]J_…øY•rÆ–ä_3tò…÷ódúÊKsã…Bâ&üð²X¾¹>‹H½©ØGRûœ³•ùcK.±æ÷›i_úÛå,+e–crÒù¾Ûn¦-„Í.œ³½öçk; 'UºwÆìâhq•18ÁöÒs\³­¯”íÆÙ¾féFëkáVuó–1Âøß‡ßâS´ÿTñÖ¬8_1þeöñá¯^÷"lס…ALBË¡É=»³Ý~ü'e€*(sPPt|â¡Uº××ôt\üRpò›N­¡‘ü6QÖUh1…C!Á#ó5T‘#ÜÒ­ M $Fa#<¹“±³&¨ 0N¬¤Öº„g½ð×iaÝÑ !c¸Ôe|FƦN­èBÇ ^1±Î÷…I¡–"4°D@©û­BT®‹èKÌ ÃnI>Xe}˜¦£§dýß ò8Vüi¶ÐàÁB•ˆ'Üê””p¹ÈýàƒžùNìA8Š1A•¤hK>cmZJì÷lÔ} ³åË%fPoYîÍ÷Âo{Ý3tÃï=˜yC„uÑÓ8vj(4Ù÷Cä:(‰8dgŠdÐCˆ0 `ÿÎn‚÷y§þކ6ŸJó™ŸN.îîáßÓq§ëºÛxÛFÇ+ñČȭøníÎ']LÌÌÌÌ¿Oü÷÷ŽãÆ·(VÍb(þ¨{ØUDðîñ3/ÃÞÞÿáÛ^m§åïËgŒ¾réKÄ;ðóÂ`#Oœa ½ñ¸†­±7îîòû-¼»ã21;hp0SN ßi™xˆ‡ˆ}ßŒÐØf78!o{ø€õ¿LÌÌDCðñíŽ\k‡Û„áwûìn;AoÏX˜ˆˆ™ž»õ9×9JAêÕEr‹8c'o Jó*cW‡ôî;îûÿT¬ÞY(!ð9Îo;‰š…‘¸Ð †Yéù +OœôuuðóXõ€ÈÐ!€Æ£eé7Üìv õ¶a|gYÅj¿ŠS¶gžøÞ±ÇwüßF²{ã¾öÛ¾ÉÕõÝÂÎ9=î÷ÐÖúæyëžµÔÔí®„ëzU·9ë¾+«ét3Ö§•| QÑlrýÀì­ëÎm×NÄãc­¸ŸŽó{qy•³Z3í²Ûp¶VŠJÙhl®®´5&m²3¶Ö÷µ€u¿<ÞÝvN¯º|wßYþ¼j7â·ÐŽû¾c¾1»ì.œ%…8×6Jñƒ®º˜bЦ8/Eó·R€NÅEØé~œ]!$©øÜ2lñùÿé ü>xog í+ÇÌ¿õ¾˜~±“:ãÙïßðoâ—´È :VýŠLú¶3X€¢Ð¨‚HÑÚÇ¿çRazË\Ëvë¹+×ñÂì/Ç roê÷g*©1϶ã“}Ê ÎÄ%'ºzµ:K^šÙû¼¤¥Bü^¾ÿgqøãqwmÖŽ6Æð¢"!$§ožûhÙ‚bÌ5Änûâ(u)™§K÷úºÝÐë‚~šÍ ŠÀƒ?šuô~w9¾rº&E×@7€<÷{hÚõ­ž2"ff<É49tiž—¥lt¡G333*ñ}kAtd.¸7¾iôÝgg¨ˆwwKÜzïŽïÏ3¡¹úç~:ê"""!-·<|¼ˆ®¹«l·•tÝ-çžTøªª˜„¸ïÝãHÀÎFžá÷¼â#S33 XÜý~¾+!+æuúPÛ› »r§H¬ëNîð" ¶K7/Ñ4/ŠÌKä4¦Rò¡;3Ñч’€H]¢÷ Éx!…`žÔœŸž<Ý;Ä<#喸峋¼eÝÝÝÒ«8lH«¼;¨åéªbj¢""AòpÃaæ¯ û’Ï–%’–3389Å®´°? èöu~ßã Ôî-¯ü?ZþÑB}_hà‡æŸHJvÙ+,5æbgøù?Êq r _'’Héÿí®ýÚøe6Ãýµ±äA@YªsŽëd|Â6X‘T;çh+_,€Ï€W­§^¦žènmsj¢…ÙtÝßäÇc©v²îØÐ:”\Á ‚‡æª›h:Üç¨64õµyîgÎn÷ÄMp‰Áo×­°÷þi„–æ“o¦ÝÄ¥T1‡Õ]xXoMé,ËÈ¿R´F’VÌð9(ºÖ· ¸í¯X£¨íÀÿËùÝé”`,+>ÞÑêZXlw‹Å05såªý5ÊÍ¥šúß~}ÖÍ––̬„(þºÂjùìŽPWß.Kcoç*1²ˆJ1øÇ™gÖ¢ã"7 †šö=+¯“Œ  aLöF×Ê–©‡™…ð³;¯_›6#é7ÌeÇž(èW(ѲÅux/û¬Î1áÓåÓ'œG¯eðó߯Ñ^¿58áŽ^ñ·hÏíÃàÎxÓÏUóŸïu]kúˆùâ¶Ü#:¡÷!ªÒ×Û;SH‘H=4ÆÑ @œ¦–™>M»:êá\äæUŠÌìœ# ëÁ\Uãq{™ÏwüÖ–ÛÓ ¸Ds7UÀ||÷—H ÁsbØzÀ(NÐB$6 ÐÓZ@)¯^ý±;Xr9×¶.p’ªw{T廉Ò_¯Ñšé÷\‹b!ãëlßÖ·r~H-šø/Ÿ 㪔/á”;nXòç̦fΈãnœgO§u•®±ŸÊßF¨¿F‹x*raÒ5ê}® h‘ÁzZà«G`Š!î¶ÏVøJ|¤5êµÜ¼º{¹>_…û>a}À[g{«»G*ovÏ«?ì¶Þ&íÍJ;';⮆Z¡«ÑÛh“ÔÒ×L¼QÜ:·(žq¤:a$A0ùxH‹­ðhY õ9Ü]Ðe+ˆ…M6îá9ÙŒú²‰Wˆä¡ÉG3óÜÜžGÜF@àekíöØðñöZÛ0Tm£¾ëû]§ =RsüeÉ©†L¹¥UÚ F\å[vláÞÌŽU–1]bŒÿÄ¥ôØüýi÷N?ôI=õê›I‘¾ žyGÏÚzÌEzÕì_K ¬!$‚¢µ’ÕdÚ£V”Mm+øn‡dŠ/þr@þˆþï `›ÊÒPyÊNÐ'ñB'Ë¿a—«2>»?ëüp¿ké;^è~JŠWÛ±hEp‹öømé¶p‰(d¡’&e픩•¡BJPd ˆ(‰ ŒXö­sO6þ¾ŠÆ‡¿—¯ U,ѤøÜ³Œ`ô×ן’òž!'äyÓ i;ðiô^Aìò¾¢ €à,1Üÿ$—D¢€§é·1  ª"&ŸTŸûÖ,ÉObý)ºÖþèûœ1e ¦vßñ¯ †ˆ(ob‹š¥,âº8¸óª}üU’çpyåw¡Á\ Uwë}uAH¶ýj¬¦P `Ó¸~ú›ÙÛÂáˆ5ðÖ©ïQ|“²ÿ¶±…ƒ d‰8[=Eçšã眞>&ÎfuæUG®;ž˜5/³}–4'¯³ÒÕÔdjB­ \ïŽ_ˆÆ?ú²ý+E×ÔèÔ#Úξûú ¨hz‹v÷X<ë᳄¬¤ÕºŒØúó~ئ_·~ß§ëû†ËôjŽÍ:žî1Q¦Ž™ÁH¡ '9wÚ½ù­ÜØCëÞüaZx¯:˜CÔúwWÁÙËÃ~&± Píi=Õìò®î›¸]óBãVv]Î|»qœÝÑÕsyº¼iç=΃ oܳàñÃdK×I:)ò£…¢9ó¤ZÖ™Ø|Æä#"~ÇS™S”Aì›6_OÑxŽÍÏf^fÎ+ÊD‹•v†‹ …„@±Aæ²-´ê]–’çÞZÁ'×ÙÂO{®dHÃeG¸$n°/ˆÛ|U‘cUÒ~N ÓÓsÀzÙHó2‡r×'k)1t6'omòŽꉮͱtŠÜ¸Ç±[’>ZI¬w—NBÛ~’ýøq]GÅL¬¯8á·ßã'j+—½4*"f„ß¿ëôf}îÖ»2[¹‡4ÝuÁãTWÈHÅÇÏ!1pa÷yýŸZúúoOv¿aÀæ÷ P¤*u@@ï=–!¶E$GÀ ï÷n÷üïÓùþ¿S÷þW í@¬mƒŽ³ lvoÞÛ51¾"Uè ¥©ùÖ÷HÚ=0pl' ?¶>/“`t„u!C_y!Ìdd£ 4»ŒåÂqá‡ÄHþœÎ–ùTY`4þ¿‚{<ÿGÍŒ~ŒñÀè{qîÇ¿ßq`NÁ‡S¶BŠ«ò.ZüÍrñp¨«Úÿ=¶Þ8CÂÞ›oëÇÏŽRP6Ù‘ænêæ·+FåÇueݾ¹¦ï?ÕE˜ B@Œ?ó‚mŠ I‘Ç9¬ZrŽØ¹!’Ž ÔjWRÐÖa†C´¥';ÎØØ¯Û-Â4h­^w^4[År׃Ex¢çµ¹^—)-E\ÜØ·^º¯kÉco«þ¯=v»Vk+¥B\³I¼š´&\%]-ZÀÈxfª‘MY.³ Y2ÓIâÞ+Æ®As$Us©ÆÌW b‡ÿd4ìAA@o:QY6UÒ¤¼ó¶ñðÔ]çqSDäh¨Ô&°3SÀp¢]¤:á6!ÚR€¤¦”Ô™#¦³AåêMF†(øiЀ0ia6`jÊÆÅZ|Ìh1ˆÀA#K«òc[|6¶Ì¤6̉B$))R#Q©knNõ;Àä/VdBp€È¦õÞyn'Í^(ºî™¢· º”µšbBŠœÁ@Ôå.N³ªæðW.ÂNË®éuÜÅx¬›ZÖA:Ì!5< ä¿í#„›HóbÔD¿—|^»å:Q½«–®aL²ô,š&dI)Í]…$PQ•»¹uØ¢e£b4USYzV僑§uA^¥^ü0³%xC„ìF¬CÉ™;BM¼´¥djÂ]¡Ü“"¨¡ß1K2T$ÚÔº›13á"`:‘ª {*(²kÆå²lWØÛ•™ ªÒR®UE«ÒöÛš¼mQ` 2‰àO'_åûº¾§çfî¾ûûÜL¤­!Ì`¢ÙXRjÙè¡Iá×^mhÃ{4á$ªñ_,Nl8}´v³Óu„v¢X¤zIƒ ì$)VØ:5-VЄæ²€—dÒÿE“OuJïßsßù;ïÉ_-”h¦‚¤¡);ûÝÁþ.TMܱ(àP(úˆD&FÚôý9±ó¥'SQb|u¨nÃu6öPu¦G™N7¼XCÈM6;²0>¸'@`ÜŠ‚  …#'°_*œ…ü­Iˆ õþ^x' © È()ì³^ó`»¶CRœÉ< 7ò„ƒô—Û÷ûuž3ݤêEA„á'‚…r>`arU{®ÿ-¯&PgÛ† ™˜„F&HBj42–D}FdUÎ>\Ä~RG™!Iòpœ`ª@(|òŽH‹HB!@QG¢U GÓèøðƒ5…žðªë´™Çˆþ@Ø?¿§P.C„a@‡ã`(§®2…¤»°{ÈÔKàë\¤6~C(ÚÃËC>aý,ô6f³ó[RòB¸Q6•þX<0ùï\QÊ@èN–HF‰ÊÓßÒnq=l7þ|cËU f¢ ëŸoÛö=ïÿ—õÿÃ_úëÛëo`r•WŽ!]Ðç¹ìÌ`ºýÙ·&—¾è¯êÖM-‡!_¹æ9´ÿ§ßÿfÞ¤Øe¤¢2i“e7ÉͶe@‚ =š°)~­“éM¿W»ìØØõ·Ó×÷Pòùª“éVËg™?ìÈÀ":Ð~Òx+nЍ £!À!Á ×û>¼èŸÃöôë1í+þ¥Ôªpx·ÐÿÍý]žÎ"|€0 @ ?ÓrìpR~åA`?X_Ýùk>"î9újNƒåаÿX0?ô?É!ýZ~:Âjל'9T|Þ¬€ý¾_ïäWøŸÑe>_bèÙ¸áÔ>¹¿„"Ðx^ïÕæõzæ£ýþϯOÞû‚ª…‡ù¯(tTO÷ßï•Ô#ÂQeÂ_¯ìÿw¯ÛÃ>-xè÷i½qü¾èôA³håû9ÿÜ%°Î¨*ŠŠP6,®ß¦ÆÅ É„üEQô|)‚Ë |½:Bª‹÷~ £ï¤„"dCÊa ”ÿ .Á}Ø?š«Ÿn€Ðúý¨0´xÙä=ò®ZY°H ýù7§û>ueóüËß·ÛϳË)˜òiwtóÿo»á¶‡Ð?û©ÿßýÝáSñYýùLíПñÛg³íôB ö½‘þZÉÿϻÿûûü¿õvÿ"”P>@ÌÃÇ_>Ù“–f 5N9#hŸê…v4¡ãF˜É"tÛ©\ç)”ºí¹»»®ë\º B3Ê%J\¬ŒŒÏÃ÷|ß>¿—~#÷sè$;ýÍš²&cýULÊD™ß·ýœ<æHE2U={¿|ÄXHä Ñú•Ý|ÞÅK“ ^*%ü¦áýÉãßèC Gx™0)ü~e ;paŽK†Þ2V¼úõ¢Þ$>*ô`¨¶ÇðÞ2ÿBéÀù9âó„=B?Óëàr/ûGƒÙ þ9_ø_Dyù¯‚”ôÈ¡ÿÕîÖ÷1rÐÿÁFÚU‚å‡ì°Û^ @ø}þë=ÖôO´×¢lq4?Ä€ð)yDAÞs(Œè@í¼gîãÔÄMÒ~†|ÌC²º3Gòl‹x“=l5ýùÿfüOã}Ÿåª¯ÏE]”Ÿ-yšé7H¤¯à|ÓC/ †çúyF¦Ïñ|Oõ}ýüwéÏñ·Ûc]ÚfÁĹ^üAU1 "›VªÁ1á7Õç \–'r5ŽFuõd5­ëOO0z¾ÆOý°Ës-aFvAq!{3—ö§Yï^¼Ù¢ÐPb·ÿ¥ž}z´q³XbÛOò­2?ùóù+À°W¹]ôKº0‡øý¦¹jŸ]T’~J¿Û@M².i,L{Ð&ÿÔ£ ;€`õ˜öÿÇ“†¯š·_ôc}·¿øÍ+Y³CˆP>nÞ­ƒoðP4Ÿó u ˆ™ û¿Þz ë,__þ§½hY$¤˜úsŒ½CkÏ·ù<ºôñþ?Y&éß_€OûXÃî‚6$ A¡«G·Ö?êØ/ÏŸÝ֬ɗ,É—,«Ëéþ¿â„“Ïûaÿ;üPL“×Ò5úFx¥u ƒ©cT"NB<¢Ø%ÀLF¼‚zPPèž)ús¤wºë´ëIÇ$8xÂ.ßxÁ5´zùr¡Ô÷‘Kl¶(PeQE‰•[o»XÕI Ÿ(÷½†ù6‡äõH?Ó?ô$„ð)æOTÏ«K„†ŠoQfOÚšBÚÃÖm˜Ä€]zÀ¾‚fš/ ‰$*Fîøõñh 06)Û ƒ¸N¥Neì¿t}Aþ"ª~áÒ²"­9ûÃ…ÉÃúɬ?¯ø*ÇwÍ’Ì™-²OÝ» r#‹óÖû¬ö±­hKL_jâc®ž;ƒõ¤± 5LJ¢Å]ûùâÕ­Òbâø ßßÓïÝq“åÚŠŠ¥ eªÞc*ÏøÒ½În}Ÿ¶»ÒpçØK‰ÚÎðAê¢Uò¡Á ÚÃã\ØWË¥nI½’~ÿö»m¶¿lV”04i¤¥ˆÀ"‘]bº@ØŒ=§”ÒWö_={Ïìð®iš•ƒ´²Î$”‹f~yÒjˆ0ÛZáu»37 WÖŠ@%* ˆêcÊŽ¾û€y—¡²òíú6I²MçÆ {vÏÅ! ÏµØ=²9OÛ£H#\øŸ0·f׈^äÖ÷›x¢‘ªü‰€×_‰nhCϺáæN)º 'ÎWG|ýÍ¥ŠµC¨Ï'øª³1&]®DI901³¦®ÕV˜dèä\Ÿ2ª~Ù8÷TÓJ Ì§Àœ@N÷Ã÷ϸ? §éü¿`ÐowÛ/•€B_tB/Σ°2 ¡©k,±Ö½PbU"?W9PÞ“úÿ:wíÕ/ׄð?×~×\,¶mAÓŠ&Žo_ð*„“iPJ3qåóõ…to÷ºÿÚÔB¤BO?ÁC÷÷¸È|'Q½Ùòˆ«¡;7àÆ‡àƒœgN­òiÃûÇ©2À>ŸÖ¿AãüXqëâ¼³Í*šÖ±SJd D©ÌГôïØ~lÃ,³øþ,XN­6“=`ƒÀÓ4­@ÔTSœÌ8릕Zꪪ«afôŸ¢šk™º0±®RÃìhý±£"¬Tò«¯ïæ´–Å€€ÏX½ ÷ð›ÞþX!Ìê"©ò?÷b{×ghKè"u‰Ùû?mŠ 0¼*%ˆüc:þ©òÖ"¯í$3Ïú=Oï„’IêçèÂÚ¿¼~£!´›=pˆ ¤Iú~¯È[±AGú¨7¿ô+Щ<Ä|8÷¯Ìì`šª§‚èÊyqL…sÍÙ—.\ª³Tbÿà³à^³hu§dB¯Kpg‚4ÉÄØàÌôN Þ?A© Œñ‹úçö:¡œ Dµ¡ÆJ˜ªæ˜pÄWŠF~ý9ï”íÛÆÀ-á«:g bJí¸Á1ñÕ»O×ù»d<ð¿1@¡´n¨+Ęה…·MÊAª¦´àqh}%ù³Ÿ·Ó>@?y¯hWí(1ûR@„„$ûp?h€íÛû½ûÙ“.R|'×õûs¯ù¹rÛöÞÞ_XŸ¾̤nsÍJEm‚îÃÞ'F¹úà›½ýÜ?ÉÛƒ dˆþ´òI Ì6vœxkuŸÔjnëøÉ}ÝõSÉ÷âwÆ÷@sn›l»ÑHóÓ“ËÚB–ªS©J´U˜ä`üÏnÜzü¯ æ!È“3¥GdSŠ!‹b¯h=ægo6‚††–—§ûì`ïAýFÑç]GUÅ–”‚1V .б.ʲz²ó¸ +ì×¶@mf¢ °õCIªÝøa‰÷&ðA$x;æݲ'T.ãå}®8Jûh £È–(‡(GƒËn·Î¨RÛ9@d3HGN’hw6ÄvåÅTò¾D:úº‘Ë»fF&CÎüδÌúj£ôÒ¤Q°ŒD‘´4tKX¢i§óŸÂšì¦ªADBj±°ã Äq³òOÉc²æY2æ_€ ޳Ô0ꤽ‰b¾Ô’¡ˆhÒK3# C·=»ìÃæÜoÛÉpÿ òý.Ô]žp΋a? @ý‡ãývT?67lÃjCÖ’dA×Ëݶœƒþ8ý.øDÇ@þžŒô•%QõBÑ={*ù†á†ÅŠ¿_ëÛ•ÔìÏÉñaÿUæÒÅ™Ö?ñÿKò„)çm’h0ItT›· RN’"Kü€X„-;ÿ˜p>%4wwD`áöpY6Øu‚ËPþ­–¯Žkäáëh°´´F,&$4ÒÍá¨müŒÕfДo*†“’E µ‰ÚföCÕ,I·ªîýºõã7¤ŠwíLJ_¥¹šÖ°äŸzáu |= Í׉ï„ïÛéGêùNɳGæ}Šœ„„_0pÉ !$'p´¿w±‚m‹;ÿÉ'¬Áˆ{e˙ϱ{ tÞ&ìUUSôÂCõæÐ”¥ÇäÜZ“xs4ú~âMm’#= tÃ]}œBº~3™­j–Ûˆft-Ç9 ;Ö‚@Ù#ÓÒÖì®·d&ü‚/rºÊÿ“f$øáþC_Þ/öêOõ ÑÕ©ð·üÍËóþvËû?—ôçù ªµêý†"– ýb…u&˜—ö–`×vCP-¿»Ò"d¢ñkTãlÙöBw‹4GÓ)®¯¯(ßpx$DZì|ã{†QLÎ8(x©ðä†oëð‡Ä^khôE‹€ôÉþN÷;èäyÈD3w*›+‹³7W‰åÇ[á>x|èé7¼e|;¶o&D*uVòóaÿ _¯E>Ìæ•ÇCg´‡nr›&¹ªè˜Ïn?¾$íÙ]ü6nÎðœhȦNš0[Iˆ\œæ|Ýn“96n˜`$ØQ"r ÔþŸ³±¥tØ(F{šþ åÁ ™¦Œ~#JÆ:áþiìCým]½¤án¸:?ã¿°¤2=SRñÈprÎþµçA ±Z@Í3ãçõ8žõ@¯§xþ6,zÖÁ"FCÍ’”ø•A—¡B?JÿÔð:Ö”p‘x$ÉTw¬ÂÉ´‹AÙ8Í€Û^$ çQRÊü¾9ˆ=ç=Úa£€Û|Ø%ñ7åOŸƒê@¡?yU h¨"Gažþ¬w0»c2@`O:#Ì¢O Djoø»Õôwš?î*Z#§2ÅDÓÞĽ¼+´?­ïéÕçñðÀº °}†A£ì–W¯ÉÓäçÑÒ¨ª £tSLY¡ºnØ©I>Á‹+@¼d&lc Y-ªîTÆË=‚ m¸ƒ'‘<ë÷Y¯iUâÿ?øïÐ|Þ>‡›`’a’¡Iµ›'žêDÜ|Þ€)*©" øm»¹ñØm’gyÜM ?‡í9F¾2Žé!32yk AM‹13îîºÎ®ÞTN2y¼‡6]ÁaÝÀÏi#ÞaÖ€JŸXTÄ7Þ ­ƒLÁè…‚Z D /ÞÓØ aëwÌnSÍ Æ{¹cÕžháhyWp ô zcO/ôùù¨£é¢—°¢é°Û.8 ñãêrh\õû‡Š"#·É¾_kýáKßÚ”‚¢éÁNpcÕU.î–ÃõÎ TSÎ?€:Çj@!|r=GÉüÝ0¤„”ZйiÁŠ«¤ 4 É4þdE]Z*%N§ÛáÏBÙ1Œrœ³0 ØýÁžZ{ÃÑ›Ž&ÖDŒ‚jÿ’ÿãã³X\ŽA¶ßw2pèIÈ—x_¿ åR/›û ãbón(°ú:TC¡8^ýt¾ý¬ð úcy»» ËrGç6?àO€ò¹Sÿ2ãët^°£¸ðò—Ãx· tˆik¦Ìêò"Iüòr+(£àÑÀí †qä`zL‡~°ùƲ@>Û×Ùo^¿'¸ñ@?!>!?ˆü'Þ€D4(³•FË‘¯·Qü• |D¾7ˆ,0FïÖ{§ó)B®. ·ów\±CIùj£“OŒâç(ØŠ‘ò帶OêéŽÆ`:‡¦ÿÍTá$GÕ)¬¶¡²/F}L(צBo~íÑ0ëÇ϶6Ø fÀ ÄɆ)€P.¹Czߎ¦n@©ÛûVZQ'eð”Ä©I8\æÅQî6“£i§Ó¥†¿Ï­\Þfd˘`Þf`cLo3)õÿÎÛm‘¶ÛÍÍÝá–72å™2åì¯æ[#lÍÝæ&éneË2eË1´AŽ{íÖjÍ¥¢3Ñ0ÍæñbékzàF‚fœ³‹Åà댤 \¹rδ¥ÿ…/Ê ŸWŒû¿–¿vDòqÞwÉžr0ôíó_Ò K_G#íúQèoŠ#—êþßWÉC³›à!¥dOÔÈÌ&öéuUPûÚÚõ·úHƳ:¨/†ÿcDdi.43(°»vZ}Í ¦MYª–§Èôÿ'7"õ¬>†û\°ß9€°ÎÜ9ÞGûÙHÄŸçãY8®†_‡TX-fD#®9HãðiëYþ$RÑA|ˆ Ð*¡UJª‹y– y¡­“0õðÍ`=IÎÏeìQ÷ç{ù€¸xá¯{U˜8¹™ƒ žvê—Ó‚¬R[ ™ýlv¼¦(¶c‹)gË4€Á­EÉ¡ ãçQ6®#Ú†!›1„œ!›0ï茜 ôŒl1º¼çcÞíÌ$8|c©âk¡Q¬ ‹”¿ZÏÝ„òþQ‰Ë ”†Î.Õú¹,ý× GP$‹”((S$ë$¢‰œ,3A§ÓÔaåŒW=ÏS–¼°œ‚Ëlw­"âC;nè¡YC{3³$R¾ä_´ø*žnÁN ¾_tê=¥UD_ãèÜ]ž†‘}‚¤4+¤Å;¼œ—Ç~[ïâV &àX"¤Ìm:^´»¼aÀäÌÈá·TŒÊ«9|øñìÑä$¶Åãï=Bú€sçˆ~ÄÕÈ>8NØ'5;Ð"ô‡ÕéCA ÌÕB_껺ïß ®ç«}± ç*Jßý:‘`LÔ‹9­wlÔG‹¬ˆÙðžžEG~A ñxÉŸÚxýÌ;.¿ ã˜à>V€÷ ÛëÁ¦‚â~ä’˜Ay¯E@zû§£’ÜÎ=3Äé†eÖž³È'ìÅ”ξîÑß¿Xö”v”¦©Y^œŠ$PAçø½‡éÄ ŸÉúÿ“?^ŒÞs7„l–æe%ÉY–äYŸË5WTÿ½¬¤zºÌ:ȵ4í•æeÌÊãË–;.Leõé>F¿Á¶Q©ò¡(ÁÄfý5€Ù¬V48ÁDF©ušÎáýÁ}yBȃ꫓`²gêöçñÈchÒ¢ÒjŸæy§˜èå)Ò—tŽ‘ŠOù'úCìé¿7MJ€önÑ¢^­ó¥è΢òõ{‰bSÚf‚l@ê—ÏÅEFòˆ?³þ¿ú‰1ää¾MðòzW¿gw—ßr©öÑàÒÄÖ[sŽRèù‡pºââ*EºQ((u¹4e×¾lm$‡ð)ÚW·««èäÁERÖo[Ý‹×äsÚõù7{ÁÑ wõˆ|^eb‚TuŠÒký—ý›z-Äâoð‰&]üúaÓÔÃø@ÍöfuɀԌښ!¿…@Ë¢ Ð4 y\œ6è#4#X+òßËÏ)¬ºÁUc€ÿŽÍ\Ý`aæ>döÑÑöÆE®{ îJ8=?߈|H,ýÍEø$ÅüèýÀ#ÿ/™lß׳FÍ–Ûm½ËÆ®KHã ÍiyüÛ!ÇøòVý•6Ó$‚°¨}•¢Â£Ùb29)*AE)¸Îªyµ¢š“¿ü~‰|~ מ=gàHµàO)ýÂ*îøØÚ•D ªÛd•^€~ÈP ½Iïê“ù»4 ¨ ùptè#Ó»˜u‹¡£ÆFu)Ñ Ãù×m 5œz¶ÝœßÂÌ™rÌ™s2·Ë™…nL¹ToâhºÍgÙfµuf#–ØÚŽêê‹ÌË2eÌÆË&\±¼ËrGe°É$˘“.`²É—3 Ùd$„·3,É—)0™s +É–dË™—êü×ê¢ýÒnÓ„‰´D‚ypY›KŸjes”ì#/o1?v½5é༙™[“.Y“.Yó›`", I„uA£¾²²; ‹‚•†ÀjPÄ}àiª R‘-¦" qîç¶u~•~¾Ý.ä¯waàÒ '±À<½Ìö9O+?!ûß숪N,mü&DÐ>¢÷¨€'L ÐÄ6ÙÿLa[Å:Q¡’Åm’Pç|ªþª‘`¾]µ¼6<±#Éÿ™–EâbÐÆchìëߎݼzv›ÄRµ$ áýÜNº§)•ÞP u ÛsÒô(ç·` ¢F“€“©úW¿;à©ÐG«N¢‹?~ó¦ ó„(¾ù_»¯M³ýoæÌÑ¿zâ„Z²ê !Ï¿Uê—ØÿxþÇ—‡~¥™—å1[^/ óo?V´n^¨EZ˜ª©©Í‹@³¨;‹¬×—IëK~$ëåGw‡ w9qÉ0ú³.ÔÆ”aGÒ~n0áÂD†øúâš,¦rVìµjhâË´aãÌ‚ÒûAVD tÏ€$ë¾`{ãœs]uôp  Eɱ.K=.´y5óe/w(¦‘jË÷¸RR×ce‹;mØû¸ÕÙÜH¥W“ŸÜ½Ùƒýž½+ã¬›Ž¨PD“œÖ$Üàó¹h¢ ¢ª+¬34º/×ï\¸"(„pbˆÆ¸ÿI·´ÂŒl )õ'4—^éî$f—þý~=!¨î‚ëÆsG’3~úÐQ ¢Ì‡æxQº¶E‘¥£RÎeœDø·Õ þSNÓCÑ E\°ãK(Iñ„+ü=¦_h–0X¥_òÏÐ|‚­‡ô\_ô¯êJü•ñý+ê’@„R‡ë¾žªºG :È>¤à6û½üQY@'ójoìÈÖÁ@m—Cî€Ks»îÿ-Œ¹¾yxÿ^‡öºîØÓ ŒŸŒÉøç›ñø8BñÝ(í³óÒ`Õœ(çè¢_š;Lè2‰£/édŠiùíþŸÕ[ò°ÃR, a@*ø9Ð(S®·ƒõm¬;š[Ö­=äúÏÿƒýW¢éþÀ€XhÈþöý¯föAf̹Q¢çjBÈ¿®$Æ«Q˜×L¬ÓÔzæø‡íÜ{ÃÓ6燶 ü‡¯š™þŸ¨ÑäúÚhÔ…Ì1L673Çú‰H£ŽÔÒ¥pàó˜Æhþ¤ã  ;ûõóˆßMPIyýŒ^ v\yX6KQ¡È¾Ö M!cŒ=¹7¼ÞH¢Ær>)ÐEóö`+òó7$©å ÉX€æÂP¥¢ž)×Ô\•ew¶¼ºaúÿ "ªë¡Wó“ïßàý— (²–Ú[hí’—õñõ¿'ߦwÑ„p“Q´Æ€H3KE½rÞ׊ûÖøÝçËmýá®&¿”Ú'µÜAÞhj.6ìÏóÚaÐâzN;fºÂ¼Ü‚WP¢#*%ubšÒˆ}å!l˜c8@PílµKW{¯Î´Ä¨Äcz`V%X¬"Z´üª”þÎïûÙ™1–—32;—$É—8þ~ÐÜcÆÊOTŸ•¢q£"ɾ®ÂêôèBZthÑ©Fƒ `. G¦·¸ ñ4wb_pðIžïêþ­fC(6(²)@'Ãÿ”rF‡Ã1Zi7¨._„Þy߆ü&ÈÒ i&j$UÎYø“úoçG¾ ôºs[(ˆsÿh`@²pÐ’iH?RÐÈh_´ kÃÑ’b*ØIq\þPø•Éh*•ÿ Qüš5š5Ýê °YØÂ³á.‰aP³¾PdàaùœñùmIeoz¤U+Çý »BÝ3ž!Øõßô$×ð>Ä–’ð¡ýMþ+þm?ð+þ,Q™3›Ü#(EZP…%&d‰eôFv³?-w¿.JËÇYu1ëDÇš]¿Ÿ”Æ3¤7jÀ0‘ßê1½ªÄ’=—2 }M>¼!Ô¸‡”„ º]á¶!.3o+͘æÆð(N²&‚Œ‚éúpã)ê–Ÿ®x“‘{Ôáœ3ß¿^{mœòã*OŸÏ~Pñ¶"$œÇ¼oÝ©?Ï>hdí²_‡­Á:ê Ãù«‹ûô$*aáÃK¢û÷P›ô"œ4®æ@ÃÚþÌg#ƒj¢¨Y@SÛ"R|Þ%ÌF=$ò¶çÇð`ŠúçöpÇù÷3ýü¦‘-Uø;n÷°Ö'Êj’¤¦•xc+£CxôÊœXÔ9a—E¨1²†(ËØQc#ÀŽÊ­„D±Ø‘‘"9ãxKxà9q¼üýx¶0ci7ÆIî(hºÍ28ÈÜŠQP¦=MA[Ð%]B”ì,¿òJ$[99 h8+ T´´RàTŠ1Ÿ!•ˆ1 46Œ ' P-–Ö€h-´ci.\‘º;cEHÚnH[Bï’€_åÈ‘î>¤ d0‡³ÀÒv‰ñ_³ÏOÊ`ÈšÝ[M?¹á7n¬¦à‘\$ÙÊ`Ì݃õ–ˆËÉøyþQʇԤF^lÉ—.W2æeƒ™31–G—,É—3/aü`EE:…©›Úà èsE˜ÆŸÃ µ³¯Fi|ã7\É4›{W„8šéîí£»ui ˆJIÒ q%Yæ¾zóòóÌMÙ2å&Lˆ¹Ëö÷X”b‘Oâàï1¶” y@z™ÔOôß´Å~ÍÿGŸ7‹Øð0Ô*ŒªÈY*E--´´ä¥–ÿ5è÷`t½‡_ N¸züæ Øm;~çó/å ýKûv ˜¥D‘ì$ ‰ àÛÂÄ…,R8¤ $É ý§ü]Y ©lаœCâÛVØæ& ´ §í†ÿ¸{F@rÏq Híw¹wïÈþGÊBHI II{ìB [¶aŸJ Eï@H2¤ÀƒG÷@×>Vb2ÜËû¿Å5“w~5}Q꼿·½HI !$$„’BbùÌX¤ü}‡x†¾'pb¹ð¡8U!$$„÷4Ž»vhÏÑñ¡×GX/kkLJ@á"‰fž¤%-,„’BHI !$$„’BHI !$$„’BHI !>V–BHI ˆØ30É !$$„’BHI !$$„’BM‡h÷"â© A8¸¸í®qÛ¹·³ì7WÙ‡áêò!ý~yÙrHu!|¿KÜu »²îïv@ƒŽöl_.Wå:/μºq¡Lø`ºÙÛè; ßT‹á W÷½› 6àNÕòufÅ‹`‡¸3o‰ØK'öC«Û5baîý‚P=\ü‡ý^žÀé§E8°?µëÆ6NÐÎG‘Ψ®ã¬UÆ V¿I3dø«9Ʀ»ƒn ä͆ðò@«°bIÌ6&!Ãq®?Àô´þìK¢ŠO¡lÏQ†['íÎpa?4ž—%ý|%—WEŒ“{5>Äñÿɘ·Ÿ=Öl@ÞK€Äô>²ˆ“­²‚R´«¶ÔSFXêïÇTBDHviô:¤„4á @â@Ûj£¶â‰›Q ’:B$tfƒ¦¿œîŽzD~'a£ùä÷l$~°ÿŸüÿòìÃyÿ{®È=¨TkÌœñ`Q­1E×§¡ÃäX)B{Àðz~O»˜¹'<°u¿ÙâÄ’wˆ²º»+üŸáA‡MnÌ™rÌ™rÌ™rÌ™rÌ™rÌ™rÌ™rÌ™rÌ™r©‘ä¹'¼û¨F÷^0Xc8~ mñ@­™²ožøê“ô¥À»dÖ×Mq1<˜±è @X) ¤¤/Û îú< = 2`j‡S;·çïŠ]’±>sç`)ì}›ê}Ùú“ª­d–À•˘"¹!Oå…Èv'„”‰ßÇñm®>Ù9Í=#‡N®;O]ÏÞ~9äb6Óÿ¨­ö„€ÎFzX‰"Ü€m°§„¦ÖnºÇšh÷Å=÷U?$>ï•“.RdÉrY2å™2æcü†]]Y€1¡72æe„$ ¹2ÀM¦ÔË™£AÜ?ÛùiÁ²syæh jQ,?‡ü2èswy–L¹˜¬lI°™.d³.f*BI2æb°lMäÊaÙ¬”ºº³&\ª²e1&Ía[’jê„hùOY¬X¶LZ|}BéóÔ;;h†Y ’~þÝ6×mµŸô÷M|lrL¦*Tå‚úo§ø²9ŸK™ŽÃÛ 1ìÜoò}E¦N^؈ª*¨4Måá’ÏÅåJ?φ¨ÈI$—DËs2¤æ\Ï;_f{*&Y™nÁÞÈ| %õj-¿@H´þþ#T¿WiòŸ*H(Iò¡H<|,¶U„ð‡E)úÜÊh5/ñöí¤¿o[ç7¨&.ŸÝ§@2;à˜ÂãœwÝç˜-6Á„5WïÏR`õvŸ{$][ ?# ‹OÀ`‚”€´í+AÖô88˜• NßÄ@ ýK5]fÀcù>éü_êzɤlÁÛ74ô½–«ú“G`Ïן™Å~wAé®ÄÕ¦l `— ²r06û®'ÇL~=˜pýÝgä~ð‰ÝÙ°½C&!*8Œ°ðÄÓ¤ð#CæO0uå}!°‹Þƒ›‰¨×ì_Q$DIA#àœå‚)ÑòÄìz|]~ü¿»ŠŠfæ(“š=žxÏ^lˆ2È&(AZ^ 2T5¢&(lŠ0œ€öÈj7®NŸ.à‚†u”!݃€›žþÜõ÷ª<‡O6ÕèÏïÛg÷È`@ŸYÙ±Ô§hÆ…_sÞ'ZPü ;½ÊáK ýšsÈHfƒÆ‰AÌgpòBºµïDIia!ë´ÈH>OwõŽŽ§ÐËATR‡½ò“KÐQçÒÌÌö›’^]!ðÐŽÆ•ŠCÍ×çž^8ŸÉæçghxÃ2s4„éa™Ì’_D|¢sôúß'pÎ&3ϰ¬ê`:Ó´í´v–ß䂉ŒÇdˆ‘Àr"FD4¤DA IJB¹#€Ò Úî]e®]"®]e¹_ÑJ_Ïg’t>‡‘;*|¾eSGqÁ3Ê ùœxøþëw)¤Ü!ÛEÈúÀ£ …™3(®RAžp’wä”%}âƒÌ…ù/¿–°<5 |?†"­µCù‡ò|5”‡åûçÜ{þ‹7ŸveraÒ™‹«FÓ(^²,™?àc;þ5£¢0ê©g"SR”?lä›GíÙ±‚Ò¦[KQÿu~ê‡Ñãgnº\'–A ®êŽR¶t³O‡$i)z¤Ã× ø<Ç‚Ÿ¶pMÏ?8n?"†°ô—› fËíë¾À„~j§ßØÁÇèþ°HýGü¿N0D«e“$LÎtŠk:Cc´;MÌà®f:€OçÛÔçÕÌþ#ì&ffb""\ÍxI3±$ÚNíð N½XÄçF»þ¤.¾óü2ñ¡O ñð!¸W‡Z_àÙƒnAdM{G‰€Ù„öȉ1×j8`s=Í%ü¼p6RC"'ꪵõ&hî6eÄöûì|ÍFUR˜ø&ÌÔû8T.ƳÔyLåUU0joM…ÑVóv乚„ ¦¸“˜I›¼êsÞH²Eˆ _@eè_,•Q) E[é%‘È 2mpÙu‡Ìqñ.̨ÖçÀz{êJo"Êz¸ÐR'$gÉ’Á¨¢$Š5þi=ا£6ÁäE&ðzcm³%ŒÊåÛ^¯è1§ìarT #›ryă€(¦A‘ÛK- ×ÄXIúáú“Åʉ\àQ5<ÕúH_›ó×ý)ý~ók<†üé(' zþá?uR'&]\[) T¶ëúÜb5þìƒýîšD¢|yýl’Ôþ6ã¦ÅýÛëTX2ƒS~$¶V8ÞñdG 7õ œ¢^?r4‡óš“IéI0c¬È4ýSÛæ$³æþ2æ/k—bæ]Ãý¡r*JR¸BŸÆ#)ÆE¦Æ0lxߊ3 ¬aEmÿE%k-N‘Ð(ØìzɆÚÕ2BH6666RGdm1–QÅa—ëóPé!Ñðõ6éûÞcwf£m8Q³"¬)©H )K1ZuqVµÔÌ8‹LãŽMi³•i5nÜldx'\qÑ‹àmˆkÕii&ÊüÔ¯ç•⯫&ב2@6Àò¦a§p Ú& !ÈÁâÁw[:ÇP\{{P…ñ ‡Ø£ë·³ŒÓ1¬Ì©E~>_Xó¸~§_ q‡ï(×Û÷cÆ1333¦ÐKb !²ùTï»±¬k®·RÆ.XxíÉzg]ùþÆ%Ù¢lýÌšÄ ïÏ'w>:œ÷–R¼(ZgVÌv££ö vü ¨t¡æ7ÌÝûXjˆ¢g;å°ÄȪT¨1MqaX'˶ã~CÑõýïxûë¸ø°0¬Yô2š]i¸\b”rÙ[rG æˆ˜@×í‰Qþ€‘ 3D|5cƒvÕ‘ÓhƒO2#Ÿç³Û÷7SAÀ ȧˆf4ÐêÉ–+&í e–瀘 ÿ'¦0_à=œ­ZCõ(w ,?̪z ã¸×·šrhÝ9#Ä^:þÙ}¤rX‹ÕscâØÂ¤0Ò–bWØY‰cœû __èt~ 1Xá“âÛÎäy`ÉË , Ì3\“6¼ÐƒhÆF„&1F‚c ”‹Ü×WY^×FK5"€‚%Õ„C¦ ÔÎ{Eæ¶ïªðe}ßm“N¡©Ëq¤$ßÀÊŠ}É’d<\È~pˆá^þšgÊÀòbé:E^ø 8ÌÍ¿ª¥²O PƒËý]:ÿG4ûǰ/;ýiÓÁ‹,B1œïÈI ùó,l™rfE…‰8Û,ù$ ¥¾(Õ:=0(ß|Q'–|žK†¼žXÁ0=j”² ¬Ah¡óýF 0PÍ!$ðp\à#ú €paSG<ˆŸ1ϧ¤@}»®|ÐÒúÜçÒ«˜§|ìØ4ú`pòø ›Èä0r,I0ò Ùºg†üÐxªrø„ðé¶8ÖqT6A”"º°0$Ôvé꿯tÝ^"2¡„?”åøôXxæ8J¿H?~ß¼Qà´4é÷ëmÜý¾ï›ûܰÉ(GpQº cù’Ÿ§j2à˜ÉøIs]*A®«“òŒ‘5: ÛógÜŒ ™°TŸ—ñéz?P:™á ë•^0æùé¼bÐzÏëîþ=ˆûÄŠõ·ªš„b!4Ö࣠&t$[šìoS6=Òi{/7E1»ìk½…× Wãî@ëäL‘¬[VÇT¼8}cùIä$’j”çZž÷›à?ÐJ÷WsˆÁWÏÃQˆ~¤Ýø¨äžÃÙèþ\o8mÀÄž-ü‘F"£‰Ùöêgë° ¥æv2î[î'vfÈÄá­ÑW$Á2zOáŸÎq*–³´ó3ƒ/£-ÉL0©Ó¥ibuäó³A’uöŸ?ª§ù6UgíõîˆZ`õ×vÇ  Š >ÃÙŠ”QUU'¡e„ƒ‰ÏÙû;ÙXØ™å8ãŠk>´ I0e¦Rž|I+ÀÚˆ¾ŸOMþàñëgWU`w°üzŸäÃÂô©Äá ýu £«„Ö.:üd9’ÃN…H þô“<‹;ŠT#ög±æ5H"õÔjtK… ãmÞ“Ü…?£‡ç¹“.dÈòã¸òã¿|6 ÞûµZÊ„î;Tá#é©^¸N›!¯ã=ï…·×%û 8‡>h§~•îá2=€Ÿïærn9ÓÀ»ŒÈK¿%bIѦӄ6Ïl 9ÂCß¼ÞÏˈ&xçûCö$#ä$s¿§×é³&\³&\³&\³&\̲eËÉ—,п¶ Êg©ˆ#€u JèÛŸÔO!´4ÇPÿÍÏ–}ý0ñ(g}ÿæðT>4h<• Š˜ð/ˆNô Ò°ÀQb A*>­ p &¢z ׿N=çÁ:º·8k ÃUP†$‡29XýOãlY‘‡·p÷m±ùüÃnÁ(›Ûe}ŠÄˆt%ÅÌï5áGßö}¡½À‡AÚ|ugòþºÉÒSõžñÀùÐÏÊ wÖŸ3p*þjÐÂå£õÝ˯‡ÌP`¶uÿ²ã¢Óï±û·Ú‘÷ŸIHO½m¨i‡gÏPÝ¢o×ÊÁ@Ñ(üៃvtúÿO\õB?@ýAÒ ì=øTÇ ZúEÏáßàê<:…–}F‰²e5nó*Œm“òSùææîó+reËÉ—,lŸ”š1½]XÙ?»ii¬ÖµfV/V‡dŠ)í(0!Óâ_5X[d,4¾œÈó¹?è:>D’Iñî‡mKÚ–­·E{·ªö{³°HE{3Ø¿"ËóóÎÌ9^Va¾âúÐ)SÄU+?¦ŠªOt ‡éü@qPôT®T{’;ÿ:}kËì]Ãw¿eÌ?ÑËÁXz§äÊñìú½ä½%8¯ŸÜ3Ô€JÜ:€šÐÛ}·±AؼC{ýœ ¶yðÈM ò;U­/!Ûŵ5!A¤{q\ˆÒp 3‰¯®‹iR§ûÖòíùñÕÃì+IF NEÏžlZ²êÙ<=Ç*8OhÚßåŸ<on¤íëÝnóŒ;8Ú–«¨Àüpg^àŠ(ó{+ú.@íåsåà rqˆôÛaÑÿ÷*Á·Í¥ í÷¥‰ºã+`1I¶„ÂHæ$Epé Sl Œ$@C6Pœ pÄt6À™Š6G Få¶MTÅCÙÐ5$<žà8<õ*{½ç¶;çµ_U\Ú²AIY}wC`p  s?W_ªÍ)¤õš±¶ä\¦0²eË2eË$™2åšá¿ ïD»¦ŽìžQšL|Á»ÊŸ¯ BHrÁÓùñ qñô{µ¿µüûìßu¸ÏL“¥êzƩ͂"°Û¢fÆ]ÊÆIÒ.V†,I¦hÝÝU½}½×¿b*H”c„m;ƒ"£­(8 ³N…"² >%ÏP•!i÷?…y¡)œÜSŸò`$»˜gD칫Ø`€—`#G1{†Ç¥¦ 1`¦z5‹!Èv6Ó£º‹7Žö1’0÷„Üsùý_Áøèë/? J0daIøjëZeÇ—‹ˆÅ,3˜˜ëAÊ|H˜Æd0¹Kd’=giÖïðŸÙó_Oïï¬êÄtÀÆf.idmµ:‚–$t÷ X6‹žAÜ0Ï-ÊüžŒpi0ÑEûÆ?1Ïóƒw¼ Oj™¯O‹úõ±‡ÒÖT‰(7ãùý*4¥-¶Ûk%ü4’cÌái´sÿãòáQˆª‚&>âå™e!І yÌÉ&º~€I…PÌÄä˜7Ð s³÷;5Ù—‰4!—â”â ÄÑÇ^­z·ASiê…'È+³%¥›øíõtúš4m&Éçaž5è•w´ÝЧυ‘ƒú*}Äy¹ø@è(u“F`Ý&…˜Œ?Ö˜?™þjíÂ2o3œQ€ð#æ9Ýÿg}påB‹ê±€ c®³v«4‡ûþœüàþ¡ûšñ`l¥P²Œ_Òž ÈÊžŸ¿iš§<âU1‡öþB!­N£©m”?´ <Æ É6x0ËÆýØ€‰šbšà޾ÌÁâmÞxHJHõý}SüÿGE;Pè¥ýaÂG¨7ýÀSÄì/õYõâVBc=RHl‡i;aÚbpìïÌ<ŠB‰Ãðc¶“øÓ‘æ×Y˜Y99 ¡›§«M ¨>²ÞȪ–ЧbÂ/È_^¯ÞÖÎÏæÖŒ½"qŠ((ª)JJ’yùxb…í¹=\œ¹…åA yÓ£Ï “`ó÷m xv‚ð¢õUUÁÜuÜ|û^Ÿ ‰éñÔF”b ÿ~F”|1±çk°¤+á*kŸr©5]q½«ŒoÆÖœâ&ÄÎiT˜ ­È+-ùyé°¹aæ†`Ø.ð;vß+žr¢ˆ:Ö‘ž^L~óyÃäªë¤Yg™*E¯§Â‹2h£7ú1L­5ˆãèŸÃ>ŸãÈÝ™Ì%d.Da`ØÜÉrad’I2\†L¹g $yÙ›Öó.­ÔÍC+eìoZÞ÷†"É—0ÄVËnffXL…ÌR“.fX‰—00²eË2eÌËØú FcÝÞ`X¦BæK2å…²1équn†½˜˜—TK(O †ò!ÙJ)Æ_Ñn³Vb™rÏ%«¬Öb¿aèš°]ÃÁ‚YÏwÂXÞXì²»$¶;-Ÿ gÊAs_ÈqØÏGÜ|ý É|<¾î±ðDø“Å=’žþ*§uÇ]é€z‹×sfÂ, S– £ÅL”ˆ31 ÿ¨ï"6!ÐÇXAݸF€!ÀÁ]H\}Ș@9/ ëG ôAíü?Ý>U×4Kü_ÉyÎsŸ3á¤úø×Òä&RK` ñ~”áýܹ¨v¶·°@m¡sÌ ~ óùú>ð…Ž”›Üc­~Ôšä!V¨¿ðª7ïÔ"$|PoØ>dl—Ù鸖Ùò-òaèR˜fffff`F¬ûñ™nL@.û1NbQ~l:Íöí?l1äoƒå%û0”Òï/iÝO¯Å*'í?küUzM—À\ 0 wŽæeUDø›Š€ßKþž=ÃðSø\ÀçdM¿§åþøís óLx`'èÇ«1¢Ê& /ièGº^çß_‹|ÛvgüÛÆGHU¿V…[u†Aú2€s"2„Ub  P³ † ª5mú@â+ú¶"pÁšåú<Ü»À?øÑÝ$„è›Øæ­@dQFeˆÓÖ(ýÄ>£ô÷'ßéÝ©„:YH0‹ˆ ƒò¢¤C¢÷ÝÜHöœðØ"G¨Ì+HA¤pEÂiT ‹À¤¢Hò`aµ?7cž«nõ€ÚU‡øj=¯ýŒË $ýôÿßN,DyÎæ˜Á?7  NÐToü»Â»]¢!v tê³_È»W Hm$‡-Æwp>3i>aåí¥d¿>³ß>sàÜ|û?¤ Õ¦“:üøÜk$8¸ÖM> nåÿŽƒ±Ã”ÓKuøõDö¹ðÎE¿]~ăPÒô†[ªçû½}†T€Áw°ù ŒðõÕ°Îî;"uý|0Ùíî>°<Žê§“ÿ’¿fÛ©èäÞúíKÆýšëÕýü¿·ý‘)²$sFQ¡jšJaüòê ð×ëªÈŠ¿žU/d(þ*}Ÿ/ào°‘˜&_Éú¢ ÿ›30²BÛK@ ‰¢Æž/>[Í}oñÌÿ[7÷ ‹þuEV§bõÇ”Š)r?¥ãðýw#+èÓ™‡äª 'ÜŠHx$Àá'^!@Wª•èªu—3;ZqTõàð/àà ’¢ «dÿ›×^g¿í¯’¨1_ÇYq‡þ@¡ø³ækž¹Êþ/ÜüR[þ|[!$’Hãn}€©*f’HÀkÿÆ¿#ð’BHI ª*ÃÞõœ¨‹;G—AöøÏ+©”¾·ø/ó ·cÔüóÛí™[nL¹I„Ë”˜L¹™a2çøçôi-§¼Þ$b,™rŸŽéß@âyYB_ê£Ê6ÜQ^¶’ÎþϬ÷ý”fOez€ÇGÏ>™€xÐe’Yôü·õæYh$œ0ýpíÁÀñb±‡`Áæ“ãJfšW®´ëBNIœÑ9ƒ3\\)2”0 ÷¨Ô“/ì†ö{ã¥ÿ·÷(ú!£F‹m¶Üë`iŠåT=Z#™à &÷¥G4.Yf1÷WÖ:9L‰âªtäÏÛÒdd×èÚ•·á…ö¨àI"I$`ˆˆÌ'ÖíŸ%œüþt¶{¤özw…Ý`À– SÓŽ°gÐì&Š]yç"â"$IGÉùGõžÇý£ç?$@ÉrúÀñÉïUÙvèÉýžVõ½ï2’B¼̳&\w¤€Ú:‰ø!ÿ”å v( Æ ö˜‹˜0a0Ë€ÄÐÕãÚ?ªû”‡æ?>û0;‰é'é’|vy!ä(GО{e˜qeãÀ~wô1“éþŸæ”F=WQV{^‚¶ƒù74lÔÇ82‘\$ÇByÆ–,ÞØXC&<ÆÚÕ4_éšÇXF 6‹ ËiÓÎ1(ã3X›bmuΫ0r+"jX ·ªÈŸÞ¦Ž$Ô6“þoª1›[ÅÓQ$+Ö`W­).T’1 (Ú„¥\nÓOƒ Rk€ê­{ У#×'‡[Öž–íÕ@ã2¢(Â…kÉâ\,¨œ_sK4”i<Óc8d=8kT­XóV`´Éf>Ì­t÷ý@‰ƒ\› tóQo¯÷s}ÐçÞ Òz}ñâfyÎ2`WД)ýµ *'šD'÷2’³Y.«|³æ¼þ¨å)æ!è? ˜ V|SŽîÃÅE°­a¨¸ äo[(<ö?~õï­PãÅérCtê ëŽhwxv¨_°¾À 7%Q{:Põéñôú-Àãµ㳡¶ÝÓŠì·ùp Ò`îæ0xCwDÒ›£ÓG‰ê8²h@Ý‘CqJCÐñ?,9r•ÑõCŸVCÒãæéÏã€@v\ǵSøCp9k¡°4§Áz!¢RSš äã,?§ ëOz Ç×Â6’w¼‘ÃØ@œïN $± ¾E²}ÓNpŒ<{=*w÷œS·¢\ Ù0)kù§–oÅðâ¾*¦„< ›žÂ"l С·Q–8í»éPÁ¤È×ÖPJçeÀ'Œ<¹¼En„àÀ8"ò OÙÓ`R·ÛZPšRAÔ%"¥2’mœöwo!ÖÖèy&’•¨äX­€b•­pà{˜ˆä8¬À¢U(~¹üaÕhùN ¿”˜xp@#Ø ¯WºÍûȲfÒIT˜‰Ãé)ÂÞm­Ä‚@Q$Ø?±ü÷áì/ö¤&µNïŽÃa<‚¯Æn aFèiìá%~r0gÒšŒîÄ„ŠMg± ²·÷³ýÎCÀ\¬âNWŠ*cçZÑöÉWD•Y?¹§œM*—í.°§¦€h¦:E–\âd‘õ¬ å5vUen.œè﯌b!aoG%Zš:[y…§ÂCY½æ¥²¹Á©ÝÑvc¿5Z+ÏW¦ F.Ž¿³åïÏÙfµušè'Piêì!ƒ“¯±zZVÂ謿‘°ènœbܰÁË`Äž$ô‘ 9="JRÙd¼®¶ºÊ„¨ÕMRÅs™±kdÖÕ¢7JºcºÕÚé­n‹Rc(¶T„ƒ E§@çöÒ ­XfyvC«Ûƒƒ)œI9†·ú*ªüH¿¹ –#>©B½i#ãö`œ9y¹ŸK奜-ܲù·~3¿Sû¨0Y<h”*ö¢áã4c6„¥&Žø;gÉÞl¶{²@aü,¯\¤ƒ¸náfëâ+g˜TP;=—Àß$âô²)HvíƒÕˆ¡qmz}R¹–çøî3$Œá…ó‚_aÏ—|“M‡NìI¹›U¿œý³“ònçìÛÃòþ+ÿÉ’RFjg™9‡ð†ß:CÖ“ö™ÒûrÒÓúÐÄ/Ðû&b“â3è'T^…ü*áàñoŸ* 0yHýaöE>ù÷¾ú~ÂÿÉxùÁ»úŠÁù·ÿ‹V†?½¾p¶ÆøHô@páÞê&,H\ …Âj½C¤38U‡UßÝ í½âìÿc‡âÝ·øˆˆ 6!†êˆG¾6³3 Xiÿ’щ/<žæV›t|XŸRs!Ô5a{öšñ0™f6B„2F Fí|E3"dñŒê–_YÁ­ÝÒÍ5jGC‘ž_ÍÛ‡ÓíõTfâ+ÿña¯šPýÔ§ƒÜu}=X+†ãªSÓœVÈI†faÀûN_Á™‡E˜Të˜i˜Z;³¼T¡GÖÞìÈ)ý9Œk?Q4dyŒâ}¤.¡(\µ/¢ÿVÆ56Pe"ìo‡G"9’ý>UG‹5“Æq40ÃÅTŒx¯4ïŸ1ÓŸNÍà‚ôà윇“AÖ¶Sú±`{€@r!;ƒ¹äºÀd='Èåòÿ¶)þëÉŽFÛª2{]x+ÖnkZZrY~ZÖa#n–áiö.„wyž¢ööå¾À{³.wÒ3R¼hʇÁ4Ì5Mvž„)P¯n•/‰'j@í#Îz¦dJbH’d˜a±6ƒèú…‡t#ùA˜aÔ ½B}ˆ]'›À“ Û™ ½IÂNb<Ñé*Lè2`)$’Â&‘…‡«‡—;¸À;ƒ³nžŽ$åÿ4 J+¢ƒ{NÞª-ü»÷£ÖÌ“C½$¤˜U%%OZ‡pGÄœõ¤ÃÔ@7I³µ$ 8ÍÝÚ°°5œ[Ñ·7ŒïÒ.Ü4¹&…/·3VG³˜û"˜Ðò1 m‰«ê‘ù7  m«°*ä3ÞýzÔ®|ÄM­ðÕÓÉ·åLƒôwd do‚®ogq}÷È Ra­y(&(Õd{Á8€Àd±l~€ƒ°»AvîAšlØ%°3„tÜÛgoÏ~‡†eÆb̹ƒ£l™ 0vþåºÍiÝÕEwÏC'aý¿UYµtá –Ààãi~ïâu/<_âê©õù”]ˆ‘(H=Ça£Éçê1óá/Eè•’˜H“ìL] cÇãõYôÞánS  }„1AMí=u@d¨üŸ5ÛƒÂÍÊ”{×°ÊlÞÅxÌÁFÿáŽî{f¿îÍš‹óÓIñ5ÄX:æ\Å— þóس7­ùåÔÕÖ¦/ï{?ÃÑîš­cJ0=GÚ½áß;õßz²3åý¥@ÂÝû|šg:ýJUu%"½@á¿¥t¢½ªäC÷/Ì-ò‹ß^wÍtKÅÀñ—§¼O£Ì(×QáðϸÃèiÌ Ÿ³¾íVDHUèHy€éÉÒ°éJ@'èy Ohsí¢…[‹;D7?µ<1PbªêhÒ*îÄóÖã¹1V!1ÏÄ`ßÚm!¬`6FìÎG!†C*,ªÈd“SÄNz¯@un¿åx% µF`ŒÕ’,„2„¢‚`ìÖ¥ò¨Üm1¶ÿ& É—(LI>¤i™B…à÷Ÿ±(vH=è&–:j.›,8ÒØÀàÀR-vTn‡Ue¥Áx½¤ÔE¨$e;NªÑ7‡2ƒR3j”*3è1p `»9º™£[Þv`Y8ÁLuB£ß ™O¿ž5¾‚·ç/R 7†ÉÂ'sý©ÄCÈÓÈ}Œô°:™0ˆÄf}mØtfއ‰š|,äÀÅþcž²È«2 hB«n[N<šÓwëh±N©*Cf@¡ò…PC >‚3ÕY%Ýw^¬šÕ¶tJi\ŽZsk!zŠ?Û…-€rÑ™gÏTx-¬½î+8½ëç$’oÒ~PCì»êO¶ p*1 =î¾n»úßU$OÓw´]9¤HŠ…¥4©Fú7ˆ&&wŠ%“ºT‰¯u†,'¿&nƒE×­ÞB’ •H|ƒ>ÀðzI 8½âðPh .(Šj¯}Qw}!î3ÓÕ­ó's€7¶þÒ–îŒà’~y>'ôÚpƒ ÒÕóÉ$’}1îÑ"G¿âû–Ô¨ÈRð³2IÞ¤ì™iûš-zÙ,øY—‡ÇuÜ©.áìö@¡ä–xôß²ã>Ñ'ÁÁÛupä¢Â3‘œdíðÉä÷õçÍS«Ž«»3µ 澿Á‰¦•¦MÕ°Ü,': §µå“·]²¥.¶ê< ç1âþ,W2.'SÑB  ^³%N°?•u„^@†ÌÃ,qr@}à*ÅF Aãÿ÷xt½·…c‹ÀšÏðê*»ÎäCÙ¡ý>6ܼ%¯èÝnŸMgûeÓwt·Ãn›Òž»ÓÆ‚½dTF!AVr·ÍŒ2sçft­’}N¿w? kG¨ÝÖfîìÂeË0l™s ²eË3,8ÕÕ1ééèýR]Yw›°ÈÔù ÏÂ@Å®&øÉT˘/Ó£-ºÍ=f\̲eË2d¹¥ÓLËÌ©fصTT0hS ÿtÝHé“Ooª"¨Áz$ç ®ymË ÔÅe(2”ÉÖmÑ2»¶Ýu°²vpQ'Éú¸þŽõMã¾=+Ú/Ô¿GÀx¥P—ÜÏÐP K-¡“!`·A<€l ³ýÿ§ØmÿŒ=yíã÷ {ÏëüA?Šb!í ;^i°BÈJ_l•Ì¡Â\=‘n?¯®÷4íÝ(y>,ÙýÑç|& $ ÌB.9ÔËಉêùmIfa€H4DŒìxÖi2š<1$0Ð>Üìeõ3aɃCOÅ tâï¡Ü±FK’ åº×•ßòö#fVφ)1Рxá[2– šá5¼k¼hwQ¿5»_!5d@ 1¦¦ª ƒËMwœöPÎÆnhfÊFÍYÊ^1¿,5Á9¡HЉÕÀç=€¦ÝX?ÇVx“ƒÇö)u‚I'-Uql ÆXf Áç˜öí­ÿ§ž4‘øŽÓŒe.pU05 1ï=ý€› m0„AGÙ~)ÈT]¸Ýtð0Âû"õî u{#a`À/7—1í—νY+·CäëÎ|¹à<’žsüú,# Ô7Ü=ÇŠÛZd¦'ay*$].`DY;; `š™èäªly°KŒBµÔX{û%LqÎïWÓTL›]¶gC4{P5ŸóHI !$$„’BHI !$$„’^H5ðÛi¤:{íL’1Æ£öÚápT’,ø?­™/÷¤˜{àá{çpægŠÎL“™å×ýO(+xÿ7VsŒb®'j©\ïˆM=AÃ8úte”£ø/ùáüeg%5f‹&š±|=*3Èz½µuTN;T*•Uz.’JÞk;HtÃð›Ç¡Å»b´ªpàþ­ºâŸu²þF2§e;üà`nŽ£¼îR± Z`#— z;xEðpÀÊ1J\¬ÇqPÈ#Ë ¬gççÓÈùüÙÕ`<¹c ¸§ê~ìƒí„5 —;š„Ú ‰:zñÝ–ð,MÓÝüÝ!ßWóÙFéñžA²³ 'öøwnï @岞O·³ÄÜ䔂Hdt=ˆé‚øìcFb<¿_ìDÏàyÀõN@ ØÐb\ë’l‘Q=¿r\ìc|‚Ò61@€¿`p6Œ@»uîQ²ns*¢d`”¡ÁGÃIÀ$Ü0!2) ¯ìæx{¥JÑ‹hî¦CÕƒä `0 C” ´1 Ð=T¤xó§&"4Èõ¦£m¾æ„xŸ,#EE¼üÎWÈÆìÛ€¸’Ø1``BŽè4eÄÐ6=w(ÝUŠ‹þó`–OÃ|[CÇøþPÜ~/ÑúþGþ$^.cúh·êCq¬K¦Á 9ëWQÌö¨pÃ÷™NPe„$WuNg M†{GŒVé^Á¡_gn“çê3âÔz© ×Y0|¨ŠµBÓ@ÕR; `þ?J'æðú½Î$$Š ”E”óÏñyk Y\îÆÎÃÈ’ˆ‡“«ù9—uÜ`  @^Í2âf"ET$„0ßæÒ+ììâFpÇp;…N¡¤X¼üu%Œ:Y*ÚýÌ;u>Û¶e ²Ÿ8É_ÕPÁt;PèÈa5`¤$÷œoäìë¡.©~°´q*ñÍ[Ž€ç¦Ühý5H€žš!  BªEaœüP»þ“ÄœçäÝ›ZEõ\-‡œì*tk€ê7«I3öF¹åååå¼k¯ã¶…ɩެê`ß±æéø¬°ÌÅ f}=¾:ãäO¼A ÉŠEÁp£;/È ³±U%'PËåþjó ±í÷ˆŒQUÅUŸÅõÉ TEQ]B£DÖ¼xùjÀ¡ :,ÑP¥D¹˜—r¼•WÒ|}‚U‰ÄOé6RJ z¾ìž#bªª«4x ¼z±!TT¬ë+¡¡UOY¢èp€­x;[B‹š¥UEUj©UUø=ú¹†ØQ?Óü(=»˜Š´* FLíèCîDB€~‹ØÙ|Z玆 ² êN$®PœÎtñóŸ÷?³úUQ>xâ%tÐ wêpG©ìÀ~½aõ†O¼O¤òïV~9 ÑDX&2’B¡ˆ…GN~”?vCe=’)ˆ<–w"§hÃÄóBÒ~õq˜¾¤z¤ƒ°¾gÜ¿ÝÍ©’ÂP'C1û˲™%<ƒIZ0FtôMð~_ (€i$Q”Æ&ÈCá+°()ƒK[À'ggËgwFžÓùäIÜê'®("tÖ¶i}Rvò!Ört‡\ìØå”*a½Ø»ãž쯷ñ]½\‚B$ðÃâDÔy»Š5»*ã‘þCæÓO+ä׉^sù…Ý¡H%{A݈ûÿHÅ©?ˆWŠE­ßOÛšj£Ó®f":Y¼Ð3Áå³þÿûŒESõi LQ&B²š¹|}eÄòB»=0¥à?²¹]*ŸØ…—F.*€§òWñÜ?öCýü|ÐþCøÿÕ´™`gêÉç~`IÖO³£‡ãîý|Lò_¢]² œ{¯¨ì⯠!ŠoÈì”:Å󸍩"“@6ë$a,ÿJ–†IV€)MP.®š:ö~ØûðäÍxñäìРH,÷QRI\€4tàp !%:‚Sð«¿t 6wš3 ¿¥%ΰ>Ęr€Ìœ€v¼98*¨…þ?¯àí³úMs Ãà}8Æ0Yt(×ß5¢Ùò#TH×ð}ìì³ôfíwc]Õ¦j°Ù„¡.øcVöÝA‡í&1.÷\ñ˯fH? ÕGé¡b"@4+±id³µË;’\†b»ÌÅ…¸Ëgˆ`ö+ÐñlÏ/Ö—!ГŸÃ¿™‡*‡ñŠ]“.iÎâð§Œ?kÁOÞ.ÅÈußE_‡ôýW÷ûD€Ž—<Ñ>‡Äïød=Œéì ŸmTËò°Ù' úª¢5  WN]Hž áïã:„ÉôýÍQú)bSBSL©u•H çæ¹qoðì£þªÁªÎÈíëú_wv‚Æ¢ÉPb7¿:ñd¬+›§7NWwWws'.Iݹwö®òÊM‡®]wQ»»®Æ”¤¦›2íÛ ÌæQÏs„Ç뉠rD¡ÿ; U\ÃêéÐ3ÔuYÇJtŸP”2&â§¿IF5‡„O …f‹ ÀÏx´l„t q=ÇÐhZ³ùTAí¸0ÓP–È=6¾¼èu˜û`¤=g·å=b"Ž _—Ù:l Y¥¬H ‚usd0ÈÎ?3ø€ˆà?××ó@€éCÅ™2ã¸òå˜L¹cy2å™2ã¸òåþľA¼Þ·†W\¤õ4]f±aa2ãØkZÍXÛü’iêêÌ™rÌ‘¹2ædË–dË–{RÕÖjÌ™qÜÉrL™rÌ™s2Á¾‡uš±¼™qæeË2eË2eË2eË2eÌË —1cdË3.<̹fwº†=?]íWfŸ .§‹2eË4hºÍfL¹z ‡Ø]æìá gn¡à„’IûüBCõ½4$¦P^ò¦ÒIÜ^iRiß§›Ñœ˜¡hMÑ‘ðÜÂüýžøÕøM›|t{õî÷å±íTWÍåÖbÀÓJíHQtéovoÖBõõùu•ì–¤¢:}Iü?³´p<,^6÷ö A=ˆREŠ2EŸÌÃEa­ke0W;ÕþÜLÿ 2уê àö:îWž÷cd'ë8`ÿaÑ!ؤRk&óª¨+tã-ú·Ù2†É£« 4ÌÊ“c!Þ+Ô f?§rªsM7þ_MâÞ­T-í­T„·Pý0þéþ,76ß) ?>Àž³¨]•ê7Ÿ&ÍÕ¿%òÇU•d›ÈŠþ¯ü×^iâü2‘8‰ê<§Wç×_íæðŽ€È|ÿíûÿ¬ œæÛ€¨(æñ·«ß~áž°Ã[ý sý6W‚ìgê[*Ÿl1ƒ°0® ïôLJÛKÆ‚Ð8:Zú´ÄêÍîÅa?£<î¹Ô:ÐzÈÁî•¶ƒßQ÷1&ºCƒ…Q«YÀ6E¹€æ å5Óoý¿Úäz”õÒÐôâr–3»{ñ'ˆêÕ"Éö¸NÄÄÍN»œ‚æ½°P²(•‡ÆœÒOb£ÖÐ` ‰ t8u ƒQ^5M8JÚÚ 9…CëàÙÊÿ úZj¨¯qÞ?Ç™æíéÓ„ da ± ±ÂìTñy–âîGÌiþCü-Õ?šPçé1\=,Ò )"¹ R)JÑÜ.¤“46QòJs~ñß÷CÛú)ù=8'|¯ïžlOEð‹Ž9ú6Äo“©wþ©´;‘ÿȯÛîxòyƒ§ªËÝž;@@ž¤8ÏÝö³Ì0¦¨qåÀ¹ûJÄ”sèâhúQtÿÙso—«þ»?Gõvwñú<þ^î¾~>ÿÅÈ=^Áúœ€?Ì’òü^ ?ØÌÄ}sÿãï|DùÔUþ‰Š3œ%tÚ?%Çù2›q{ÝKŒîµÑŽiÿBMV’jõÖËøSwÙA"€îû?ó9òùÝ‹Ÿíp_|Wä]Mûž"6 ÑbÿqL¬WNL?¸moúõ.áÕÆvB S5nU”ð^ð4â!VX'Þ㡻Ö†9‡üß¿âðì<¤ÿ`ˆ"'àŸô2 *ÊBc­¨'’PAü?Güÿú3¨'ù¿ûû¿Õÿ/åþ?»ð}¿ÕŸ˜ûÏlÂcÍRÿ›ùdóýJ"m?Ù\Ät]‰TÀEåR Û¢C—`Ifw]™!1eÝt€T´’iC.…Ðîºá'wWtìÑIyüþ¼õÒ¦ I% ‚$2ijki li¶Ë[D¦[J’@‚,˜ (dÓ fÔ¶Åh›D@3*ȆJ o}º,ª&ŠAqÜ4i¥ˆAù]òyÞ z]‚R°D öA´éHñÁ€I;¸uÈtÎâ v» ¡4•nÝÈéb?ò—÷]˜úÆý}ÿ¿}‘˜þB\oôÿøå°üøáÎ6‹ˆ|Ÿ÷¿ùº½žM«à(¯0#iîËŸ°ŸÖ¨«5«æÿŸ2Ñl|4æõNgÊ~£——Õbb,üŠŸøa£Ç)ˆtD;)ªÍå{É¿¥ƒ¾€%œðATOñæö<œ0™ æªâ;}Àù‡ñHX Ÿ6|×WÿkæÎÆ0Ÿˆ@¦DJ)‘H2Д´%- @¡¾liÞJ‡í:Ï~¸qÑ¥Q3_ñüŒ)°g“fY9†åÏžd‰I’ˆv'3ÌÅÌÁ,Ť>µK>.FŸù ŒF ]Cäiýß )øÃo)ßßì—ã;q;Hݳçý°Óçÿ?K%qÉi`*³´sûíyòþÝÏOöð€vÀ’õî À_x—&øwœO˜2÷ w¡0ÿxqów0[,<:ã·À=ã?Øð@é9–$†Áã^ãÙŠì:{4;–a¶‰n¶q •û ]½´1O3î=Úqõ¡I« \©˜ü]¤ÇO—%÷ñKkm…ò)ó¡Æv›;ÃOŠwi®K‡×:HL]¨ x®–\ú.T€;‰ðFy$çâ=a¸8lÔ=°Ÿç7î ƒCÀ Æø;¼0áÕ>¡IQÉä õ=ÜM!ÓÏáœèb`ÆCáTáßÄpx‰ß.yxÀéì@ î†N«ìÙ“-…m”}g 1O@ð:´™o¤¼î žðé}ú8¿#æeõ^š›µV’¯½ÛÑôb(o؇Ž3iŒçk †ÐjƒÄÊ+!‰;N à¹&»ˆ æ!J…2 “ÉÛÐÝîäxGlõïì_¯)wAêÃJ€E0н‰Ìíh/uá„AÈÌÉc,h1ÌêÐpfÖIA$Ð)oOf;quíç—¥“T<êoò…°Ù·esÕ}pºíxç³ýš5êÝ»n×?Z^ ôŒ3KðqÄ&Ü –3¼›PãÉuíÔðĵ…ï}’q¡Î V«‚xÚ`Ž`DG‘EשÁàûέˆë±}y º;_#î}ÃcŒë2&7Ìs3‘ÈõåíõZ€e”tô[¨òU²Jµ×Õ×)hÓ).J§4‡¢¡j.!*žœ‚ƒ¼4¼Sïç |¬À|ÒySÈrD(Ÿ»òýMЃ嚇¨0wÁí1ÝGLHKÜôøØdäìÑM^Ÿ_³G+m;:tìw¦Êâ}¼:zë‘B’_Pþ_XhŸ,Æ™£ h “ç“è:‚».Xv€_«]²ˆ}aJ0_® ÿWýؚР|áû៨é 9’®­•?À„Ú“%¥¤¬J ÀÆÞÿñè3» &ÓïhgíŸ4HzH~~õº WÂ!ûBäóŒùÂ|¡©úƒ¢ñ(=Ÿr?\äQÕ4,©˜~EÉ8‡çÀ|X ?:çoGÙ $ꕨm¤íƒêó4Nùp?äo*ªï<Qÿ€¼CļN¡T,ð©üÔF#§Ð|^.ZŽðªã×BYE–]ÝÛYG-E’•1¶Þ¡ÿ'ð*ûlXþBÿ´‘îáÇÈÔ?į^Â’ˆûLôžR†èü©åüˆ¨âF—e×°wˆHÏX'´ ÀêDzXá=‰Î@’`D ù— ³§Ü]¢q?œïø¦þ£7Ëô_í'lÁ2lòq ÍáÕ|M¸' ÷ N‰¡14&BÓ¤Wc¡èëñ!ÉAð_‰þ3t6!ò<0Nd8ˆ«RøŽ°ñ†àà¼ã±~3sgåp )å]1Ü|.Sññõþ!ƒ8!$ †Eñ… ùžiB†¤ä€ø‡¨<«§·¾¹‡ëgë>ªÀwõW‚ò‡éþ>SÌË3.<̹ˆŽ=Ɉmyƒü€3È8!zÀ©:Bç¼,í{:Ï™ŒcBnœ/®®ÿ‚ Ó]Šª6<€RyO˜ÃÏpú‹„æÉI)¯ˆ)x»  `‰mØV³" ¨é2ç ÜøtˆÀ÷†³¤,¡ZÙq(‰ÉDUi*½¡’@ÀO·àcá¢éÁѦ·ñl²¨1>ƒbË%–JóqÝ=áñâá;'#¶\÷ÝÝÖðÞ"J"©Ün t‚LÐïè(UÖ›¹ÃI¬üæâŽGÃ'Ö ˜_2脊 rJ3V­>G›8Ú«—·²÷®ÁÛ‡ÚöóíÛ² t ™Ø4¨bð—¼þðƒè ,í>ñÁ –^+Ðç]? wèõUU'²N€íDD á¨x(«Ä›yIï…„à@7¹NaæijÊ&METwGã; FY¢I©ßê_yÑNÄ!à£,@A©ÞR§ ÔES¼À=Yâ…1ªšt΀„ë 0"*ªð‚\NeU%.»Ãˆgƒ‚|;§Ðu À6ô®ã& hn‰ öv‡Æ»hx0q{ªïÁÅ33µ‚}dûË©gHui¢G)¼ê|Û‰øÎÚs†Mïk¸Ó*o3ègU©×5Û„•U{ó8ã=*4ÏOä? ˜ñæO 6†¡S¥ 7ä¶j ;NðçùGcqPïÚdÔUú8úaßF>‡2¤è„àAÞQ¢{p3'¨êgxI×1¬==<:\c‡¦ ÓM3£Œbñ‰]'d7›—×ó¢*«%5ŒDTìØÄwƒï^áàó;§{'‰(0Qð‡Žj'ÏÓÛ÷d>£Ë'¾NÀ0 Üs‰E-UtÊ<²=k©£R @ À\= ‡Á;N¸'³TDQ7Ë“ÚhIÀ0¾£Ü*¨Pvƒq÷¦ 7ºY=$N’ƒ„í—>î¨üaâ o!°i =œë3Òõ'>òû>ó˜š ¥øS¬èUëû•UÌ<§CäS©ó‰¡ë ú€Ýí |&Ïø'ÝØ]ÁöIc'®mkÀ &ñÌ:HÃ)ZÈ éËZL‘™Y 0ÃúÍ$M kÌ*B¶gΪ˜õ«u„Ñ`am£FðYÂSˆ{Óî}UJª«‚±‘ÄøE[˜òxxèJ.]Ý„’ýºrjëK^†[G>ÂJ­Rð¡€ú$É(ÜtäÖtüó°Má±Ae¯Î!ù7” óëC#áƒTñT>2±OXA<Á‘T,샑.”æï Û°ôøóÏ<Ãム®ÀpûÉH…ŠÆ¤ø¼@Ú,8¡úÒ':ÚÜÆ¶ÐÉÏaVñ#AÔ=Ä:Bà9à‰¼ÂHoª“C`–vœÓÁ_Á½häcwrw5zn5ߢÌx²÷ùn×ù£c×›ÍF7o±±«%ڪΣ þﱄAñ›Yòœm„7¹S»WuðÐñ¤fír±ÅÏ_ ,ü!ÁÎjsU}Ï«ë%eÍ“Ê>ÿ/¯ä´„È¢‘mŒÕz£€*åPÇt_ɳdò"”%tñãÇ™îÝZá±Tê”ôèi,EƒçøZwÝU…JÇÈN²„'oe–› H,†bÊÈ£˜ÊÚû’àjÄ6Þµû¿ {œkà„>gFfffgÆFæ—uÀ~¥ØÞv4I$õ)ãE4RÛkV˜Æmµv  !Õ£ì‹p›ƒÈl*ð g(<ã[X»&_PØÀÚÚ‹‹ ö ôü–—w™5šÏ4˜·YЫï^Û. µ».!Fs5'Ìy‰Ù£Øžy1;÷Ãg„à{Aš.“”9ÌË; ¦¡+BUØ2È–pã;ƒ^Àá>ù¨«í'˜¢ªŠà1Ø Ö–C@éÐÙ7“züÇTß<±:…äYðÚ$Dñ¿XO‹Ä"ª(~)Þˆ~é-ˆŠ;“ »íþÿÂë/~¿“36ÿLæ­¶áþà/û˜ÿÍel1x Ü1ÿkß…P|4X ÈÙ8fFù'öñT§õ_æW3-ÿêÿÚ­«˜ˆ&jˆxE ¿h.' ú>ùC´Åõ{Q €CÛ P‘PüÆIJM*¤­¦jjXªTÛE‹-)Md­’´a‘²I5BGÌÆúpMIJ•KeÆÉýÖ^(7cì§úÜü.ý"PoʉR¦E€í‡þü2Ý¢£³û;_Ûò OO ÄM³ºr×f•oºœî{|ê¾<ÿâ÷ˆê—6ü÷{ïÇ]¾ÓÆ;…—ç|qƧ®vëžg¬O˜UØÝožxã÷ã®ûë¼v·ïœævU†"0¥j‰¨93M•cfwß–4è¹÷ËMq­-¶ÇŸ.5×<úÖc\üGCž¹ô×ö~0úÁß®;âµëlj•XJáR¸`ÔÀË äùN¶H[[ãeæ7ÒK`¶Ûo¶Úú8îeoYç3ß]ð/ÏÑ"}#ø ɘ^¹¿óÉ$—O*>$hUœcûeû±Í¿^œÍ剅F¬HLˆ…îÛ<¿nlûäÔOŒò%7ÌL•ÉQÂw“x¦!`Ò7¸´1:Õ9þ8 m"H8`燉·Q¡æÏõ†HŽó„ ^#Ó1÷:•QŠj$F/ÌÃ,@'Šßó„‡:SÞÉÐÀ¤=ø À›ü¾¿g«†MOîñ=º13|"¼8i<;Ìù×"CÄÎÖl®Š™0› խ̃ÝS^ÝÐó;ðwç¸ù%Üpí•ÑQ6Õ"ZÁ)J¢ìxx*£Üý€‡\BÕ†H´*8J£èûŸWÕÇ|Ö’ A@Ô£]hÕ!®¹ª³´ÚvAýx¸Rö“9 ÷Ä?ñg‘mŒ °‚‰ÝNȤC!¤Ô‚$£ K+1R‘€F ´$3Xd0vÀêÃksÚc„IÀï{ñåöHä4J…ßcÈd ”Ÿå“„&ðPmÃÔ¼%ÉM ¡s,Þ³ã?7²d + €dã‹§‘‹=ŒŽÉ ËS !ÔBx‡@J5´ˆ ž‘q®°‚£Ce†J2&#ŠÁóôug¨6ÕùùÀÛ5© £4@@ÞÉiØBÕfÔUUAY×Õ×ÙË×m@å Ë—.\¶Ìî•=¾+ã ©ó@ í»×ØÊ`.ÊAƒØU“Ž8*9˜’z¸÷›OÃz¡(S©zAÜwwû}º3„Ö³y'>¨~Ä—µ‡šI ¦wáÁ. 6Í/^ß¿öøýËt< {¡NÍwwãÊ#¼`]Û‹¹K¦ d")7€y%ƒ4 ð™ÄÒ¨†µçñøû¸è²oP`ñå=xñ16ÕUSRþOÈaà/&`À@ 0ßîµâÉ ‰I¾M¯CÉx¿0¨!€D@‚–Û¸Ï3Fªªj_—ØhG= «°övȆfRРhûrœ†ff ³mÆÜuÔÄÐ`ÕT÷uvý;õ×3ÌÍÈ`ÍùPγÇñû®¾ÿ_ª†1yÕ½Ï{à÷=¬^嬩:âÄ“×r8dòøéÉø>ˆ>2y€ŸÖ®)Œ³Éåï×Úfeæ%ý—ï»ý-±Œéâ"$DÊÖÀ`tCñx°Y$<Àâ”'úŸöI߸†ö‰„>‡Wédý¹TvÒ±”bbb# ‘•‘úBcõ²±ŸÕ¹‡3N¾sY5¢áF@@DâC‰8¦ZP‘QP]Û5ãu)9‡¦ÞMÌÞõÁZДYfœÁÌ*Î:—(ܔʯF"ª#‚V+‘Òfr{?llýÁ{Îôýטe_/£èÝ¿ƒž÷½î{ÞÒ]bìaõôü<Êàe 8ƒÉøù«¹šÖEÙ‚RAÐ’~þc©JB€™¦"`†¨j”,8¡Á zÐÖ”óþôf³ñw/½êb q‹¡©ÍhiëˆP5˜¡Áuö톄ÐȾ™7Åê ÓÆöÚxqÿ*Jãïˆ‚‹"Ÿîø¾/ãÆ1ŒcÍôÖ¤Ù£AA‰ŒZ-lñk½±ƒDšH&ÄQ¬±!È=ðºiuøxíŒ21¢Qaš?Ä@=™ú$ïŠqýñ l·Ê«ûÐ¥ÿ …¨ùñÂu„‰©4J(jvù8sæ@ÿ½ ÷âq¤)F„Eô»ß´ŸHm·HƒaGŒ´¥%4vJ¹"´¢ÄjCUx„ä+H &K™ƒ ?q ?‡ö0vìÁÄžõ 5~£kA°m€›*²¾ >š{ìó¨>˜õÆ’Ržï˜×Ë7INP'£Õéõzý™Îsœæf^ÝDÌTÌÌÌÌCÒûÿ”¿ô·ò /ãÃï 7‘Ð>?¢û&˜(‹332ŒŠoÍ£ZfÌ)Hƒ!–‚"kZ5¤17^4›Âx0Ñ‹Fw_·4e*C¾ò¹Ù®.^7f¢ƒ[*C Ï#É.ß±§JøI$v`Д'lšè}ósôú3L&‰*ÄÔ¤GZ°+â‘cÍb¨Ö.ÉŠ(æj’†Ú˜&Šã?žØ²”꘮¡ƒCÊ’M! ëœóp@ §É:$! ÑØ:=ÇÝ"¥‘Ì0h)¨‰ „%¿ÏãÕÂ>5<};QÙ‹A]uW$Ð×´d–ÎôþòÊ0{O!©E j¢”U*ª¨©†°8 ‰¨$0b¿ß‰‚ÜDùÆÍvíÀ­îóȰì>÷‡Ô> vZ‹ÁÏ#9ðÍÝœB/ÂC'1mkaðRåebìùÖVãÇ6ÈàP{¥(" Ëm©ï/øå¤Dçi”#‘¾zÒ3{/£ËÍ0*;k]o]Áù”ƒLbçDh$Úmõ”ê‚Q zz'Ý­™¶”@Ì<Ã…T›¬»<lt3†î:w4›]#C:4’[Ê„àa°å,ÈŸøÿ˜7~ôÈ4‰ KÙ2¦‹lj4Ó(J]½n7í«èÙ¤)B‘€„©R}çâÙ{/î²mFäìÔGO! D=¸98?!—øó°éM›ªÖBeFJX‹òä–õvòòš¿«Û—™Ð&YQª(%$P¶ñeL§ªötÃ?†×œÊ»ÅìW Û i$|ŸK¥“"I°u‡Qi±õñû¹Pé “h0aJÅŒAE&ü0¤ÀZ„Ȉ®.‘—À鳥†MaÐÇ'9²#7´ˆ=«´îãé³Ó¡³‘§\ƪ°iƒ'Àß@@"‡C¾E:ûŒ_ùg‘¯WÊ2À8qW¿¨9úzÒÃÊ|EÀêþޝ³JRd"“¢Í0 i}=?xôÄÓÖIûpš!i-²8ı¤´ahA„b–V Š…‚¦.#¹¡Ï­Þ¦ ``Ôó·ríË‚s© ’ƒ?=ÛÍåÕË.î2Ž®»LӻК2’×"8 oŸ™#’Ës-M1°m²8Hˆ˜F2*óË©á.þ—žQ½÷bHÒ¹«•rv®©”Jõ»ušMæk¦É4È4rvu^æ¥,¨¢ÈÃþ]à*K§ü|þ`œ¼çæ Çi 092 ÑÛèÏh?tѰ [J‹a½1ßÜAA'!…_ïÖ »qo"Â@"X°€Æ˜)dƢŞÊX"ÀivËQ­G(0’´J– Ef5–(hV(ÏeÊÈdw—Hh 2j1$¼Ì EèVó-BŒ3ée"ªˆˆ‘Ï?.çr®ƒ@vߟs­4à©r 3jbÀJ48s7T'“‚ +k°©U›áÎg<ö?‚ Qï&J¥!j¡~_Ãb¥(´–Ù’þ>¯ßUx׿–®‰«Årô·žvL"m4ƒ¶6£Tj¹ksbo¥×Mœ&‚9!ô¢?»ºƒ¶Á[×KÂíIt›ôÃG1J'¦@:ÿ EI BiJafb "Š‘M¢Æ‚dI ÆÑ£L£dÙcCbÂBMˆšl ‰6&“bÓj²ZI)©6ËI¦&¨´úAæéæöHt”ÒúµräFÅBX‚°¥E²”²Æë:%þߘ6 >ž’DQKLAæ9€{1 6Yæû&ëÓÉ;zä ¡b‚"Ààoõ‚„¨÷£Ãnù\Š)b¡×ÀGPêöæ%¬Ì22L‚=¹÷÷Â… ½/è¦ ö ‡uˆ‘µ)””:¸…†[·&XÌ  ˜Ë«±K¬F?ω¾(îP6áN6¦ÒÁÄ»KH—U*Íki--M¶E%EDÄR@@@ºT14îb¡Úaßëõù:‰â.ܺB÷Áòn%$2 •ÐÐïÿ?1*NAÇ]ƒæ{)*Ž”©/ÞRŒðC È2†&¤J–W©„a§Mj’W©1²±n‘"¸ÒÆF°"J—w9K§n“l"2G’0²7£Œ¿d4³L"8ÛTRá’íVhÅM uø5–øeÍóîLÞS)^yãÈR›Í"0ŽÚ~²˜rÐÇ·8†Xô†àCU4i… ¹¨"I¶WèÊëQä£+`‚N²nR8ê`£#‘¸£p·$_~£i. „X4– 2ÂD——A%4J`:I 81²A¥Ðb íLH=L6â|Ç™Gú}ž?©¿MV•ƒ¤ ö „øíC—ûçøÈ‚>ßD,á TcX»öÜ¢È| Ã²ÇI÷29уAH Ї«ÎXK¬0”Y8™q nóÝÛËx­Ù9È”“fÉkF|¤M'`‚pC!&ÐÀ€¨|?í³ÇzÍ!‹a;âN³Í‘žÐX"XC0T‚D÷>D ›Á>Åù×78^"S̓Bk=òªü§Ê|¥QIHLÁ0A@ý'¶{O”îû¯ãÐñ|¦ç‡O˜‰m‰¯rûkïsôÚTqÀ÷Éó¹òÔñîîò˜°Æœ(–J^ô#±FTàÛ˘5ŒBøKɉB@¤õ¤@R C2c“PÓICJ3*2~¹”Ó7hrIôŒï3Dj–BÜ2œ$¹Ü}=sµ!÷°âidîÌÌÊ)g' óJè0¦|:ò.®R&Û BR?F­lX¾P¬ÈHn É>®~Á­Œ6gÌQvüÿ›ÛìúÇ ‚Œ³>Ç3R´+b\t†Nh=;7¥ H²+Z+%‰É#+ ÝI’6ñ c…a¬ 0`Q*Ic‰^uâkÚçï”h6ÑJ(Ô™˜ʨÈoÆÇÍ~GóŽüJ7€lVœ^!ú¿$/¡³îÜ’B2B í+_c¿àÀÇ™‚šq0BÓG`…_ÜRfäÁ¨Y8d ÆxJ&‡I(ùÏtÌÿRöÌÀÑÐî}æþLõ0(Œ0Ñ )I¢†™šÐZM QV~™Ç©[bMpHö;8 hkd‰bÚs§EÁ&¤j2šÈÖ(GÁ¨U…Wƒ#X™ Ž j¯4M$ùØ.LbÇ#DÂT–U8cl %€Ô¼£!… ]p>®'4¥Â½Xc kæ4ÚWDBX=î- o¤UÑlaŠá0‚ˆÄ#ó x¤ݘñ$4—d«ƒo·R̦"T€Ó42Êd±¾]]DÔ©"„‚eEéâx—#×±ßëÏMëÛ×óq×4á 3b)Aª»—2™@!I!Ë峘p5UÖ” |PúýÇXÎÐò”Y(ÄÉqÌ2QÓ_1vÎ4K¯°¦ ¿ÎCŒÑ¥ÇÌdÓÇœ»ìÜmÂdØ>ÓjC}PÉšÞøÁ…½ʤ!#Wtƒ}ž—gÍ ¦v§œ>_ÇÂÔl¯Hf†dR:‰xÈcS)AÒ=îp[…]¸ F›k—¥<Ötójrma£°–Ù€ìR%É3À6 †MÄp‚À#ucuÓ±¢ñˆï@Âð©“z´®äÌZ-‰L6%(:ø\î>¸»Â_ËèxºøõƒGcvJw4á*´‡9rC™4! cúØm!Pγ‰æz¾¶§&«MAß]M5É€ÿMÿš­|L¹&Nº5£&¾ Ýݦv5£œÓ¦íš¶$‘¸‘(ôéMT”2`5c¥ æðȎۮъØìözó+ Ç9ò¨’&8ã„-˜˜Àt³XkXoßâªs+ ¥¼O„4ŒptëŒÅR ¦šæ’ñÄï`¨Å‰Ù â8=ÝËÖ8€G+¾ëÏÔQ€¡>ƒ¤/oU!ñÿÍð÷âÆ1Žqïž;!ÔÚÃ&x‚T*º¨¢l¤îÚîívk§_›5¡(‡12LsÌ2ñÖ5)}÷1ƒh€" BŠˆ(]ž¼ÞžPCÏ"R ¦>ÏAUÀ (JŽÝ»%;·)¨¢Œ.st·H~JmÐÕñ½J÷w]ÝMWž®«Å¬UÉ3{EQ BÄ›µ¥Ž¶Î˜8û„kARÉÓ%Ì\¿(F·h¢‹,ÆÊ$œvÜ-5U*œ¥]™Ç³ùÿoñ}âaC§ö}A o=ÇPY€$q‡G~¥K¹H9¿¯ôöþ¿Ýeë Æ3œße€PÎB¸~_®û$ï%÷? õV±Vk!m—BÕ–—uFÿØop­·ÕYs¾7çq×}¤¯Œs9Ìíß\,O]>Ûñ\Öðµ¼mÆN»­pt4Y…lº­0 ²8BѧHbhÐØ•¦8aŽŒp¦*•öïwñÎëÊzéúñc9ß®±]k~øëPûo9]ÆéÕ]ÇJâVµ­)mãqSlo{\ÖV³ic8ß[î¹ÍJ¼ÞÕZUs®Êav`´œíÜ”OòС ƒÿ{26€Ñ芎âwëGp!CKÞàšQ‡'¶4ûä£Ä(G›ÜûŸÔÆOÐiR ·sY",y÷›¿Aû‡óèG©´× Æd" ÝïÇd !È|Å_±’ÀŒˆ7¿¿ÛðgÄLÌCþèó77331ïjËÍ]ÌLÌÌ˽ºì¡5w12îö®ªI§ºww›ª„sùcòÎ×fn"feæeô¢bb"¢ffbf^žsWu3331nÿ~E^"ffbf_¿ºý b±—S3*^^mÕØÙ{T$ ’Ny è/ikÜ¥ªÑÑ‚‡Ê£Ã@r &,±ò[ü‡1Â?¬ ™kÏ^Æ{Þ÷³ÜæØ×" Mü»eËðùÜâ†õIòñø¯–vƒÔûHä÷+¹3É(ÿ;þ£{’¹5 ž'Í.ïGÇßâñx¼mç9Æ^b ¾V¾ÿ_/k8y™™yˆ}/¿Gáÿ¡˜×_@ 0诿 Þ~©ûR8¥Ó7᳚è>쳜ÿèm²êêéæeÊL™qÒðjÜÕ™2å«fk2êè.®®ªÕü6€äb=šåAå€?qA¨iÕ¯fÇ9ÎsÞöµ—gåãüÁ8:È%u¬ç¾„Uš ÚBÍ‚ˆ€” $ „ZvtÔ±0`yÆùI)=ŠO£Ñ€ŽÐJ!J)0‰è€É ZAT€"C„jD¨ =„ }ñ>çʽ‹ììÅíQ‰%öÆw!ë#nÍÛtî{ß„2Œ^é³L|ó^ýƒ¬ h8pPï—âøŒP5ï‚f# „)åC‡¯Ð¯Ü=f}ûÑö Û“ü§¬Ò~¸,>L@‡ô‘syØÉPï@PâIòbø¿9ä*×ôq;)IØù@î{¦¢Hb£e©U67ôœ*ßc_á+W˜¦i›snT’³œü?g@îÄ ˆ¨ 9ëth Ty“ȹ‡T4sÑÛ°#ä#Ö<΄mÕ€¥‰€Ö±ø $7q7ši’OÝÞoKO\—¦˜ М+7+›Vå«”chÖ¨µf)B îÄÑP†¤R††€ËÖ>ëÎ6~¿¿$v#×£poì~X?0yg})æàÏjßo,äò„¥äðÚ!¦ü&^]€>u¿k×÷*Pÿ*Ÿ£ÄEôÈûIïëëØD7ƒ×&f#„´-.fÒ%!’á4!• ¬Z±÷ Ëñ# m.?<˜ÌÁäéå/¼‡€ÉÀ ‡ÅݺóRÙäЊü¼4í™-"4ÈA¥É4@Òªä"y v€j…ª¯®·àÐ2C+7z 2C˜¨À&»VnÉtZ)9Qß©’úéêbÁQ3ãätBYÔ'5åTiŒùq›¡U.ßcìEDè@(£³‚†* ~Ž}ÏA„M¡u’2±1£ÝÔEËbRD¤‰Iß3 ÚÓ-‚ù[Q¿¼ÞbZ!‰–ƒéü¿ŸãO33Q/ô»Ë}êÿŠ©Ä)™™y|;ä}çê$ô'~¼ÉØ'\pŒEŽðÜxt¹·clí¿çQUU11ÿìû9ï«Î¥æ"#N÷!êæÌ(—ˆ·q÷ü? ÆjóôÔD;»éßèüÜ=ú¬¥yÚb!ÝßNÿ˜ãõwÕçQ1ñú}bùÂÍc2YžægMš6ëñæÜÜûÈæP5+™ÞL«TYÜíÜ©˜2öF¼Û×€®•ßÖ$Ò!ÝôGDã+í`ÁwªU ÐCÄ ÔF„µv `˜P1`ˆ'úðI|y‡Ðš†è!¸“i`ЊE$Á£4rm²­ÓcÄ&ïvý‘{Ùƒ3b«9æ݃ô*…U ±¯”HÅ¥­ñmûŸ2I/·w|rº’—NÓ»¸mñºòò½ÐР0.IÎÀ EKʤ-iq,ó‘²@™÷{xnFêE'ZÌz[„J4©’#•"úc.D›AÃø—ÑÑ}›‰þ$ðˆú†~òb×|MpI$€ØAŒhð|$'ã¿o†1ª‰Gú~¯»{´Ünª+¦lë’LÀŒ¢ )GÒm%@û½ß‡¿á¶úÖ³:fp¸v¢ÏÌB—`²•¥(ù¤÷*ÕUéÀ¢yÍ¿f‚Òi)"1Q)dk-DŒZIÈÄ©7êÙ·fͯ{œç3kU³¿rúÏOCÓç~ŒË2eÌK+e–æfe“.Y“.fW“0Ë&\±²{~AòhKå#Óm³¼ðøBí 4Ò}"Þ=?›1…· M4ÞE9CŒ-íU¹™I”Lm§]uÌo)V <‡lM«PýÚÊaóVééæ,kg Ý”(ÈŘcB6Mâ4 nÏ´¢ˆHš[c2ÕäpÃP-´8BpŒd9 D´©ÛjŠ”¨HQÈÂbZP r*ÂÊŠpÒhÍçŒí#Ë»Üæfä¥[bãrã­<˜_l<¯ùçª×W{ÎÒîƒí*‡ÁZt;x5ÌqœLZþu'äBwáx¥÷áFc0bý§ä’#„¹Áîpè’G¨t°†p·}í" ¢ÁT²dŸ 6‡™À‚ÀR¹Ó­æsDà³*t '#¨nkãhÙã«Ï¯ e–NQDau$¤ºZêé‹ˆæºæâwW\ÝÝ»I‹ù]^w“Pó®Wt¼®wá2GɈ")4›Ó¯;¦ÇS’sÕãÍy‡+ÃXjkSª$ ”£ï ç^*ãtت뵜ӻÑU#51†´RkÄ3$·tè-Á6ë´åÕÆÕÍTVæªÝÝ× º6wlK´êS0hˆlÓ®ZâƒU#vÚšJ5"Ò6ŠÐ`%¥cl£æ²SqJ.±(\«K,„šº—)M]evÓS5DŒSÃXVä sèz4|{§5& ¼áPÁÛS²-ÏU†”0·ú—§ì<ްxòQšðw§©sÕªJ—ýi_éb\pgÃ5ÏÚÿpÿ&¥žÏ9rwôÓÑU30Œ›eÐí ¸=o¹¿¯âïQúÂ8Ž8@$Ac†A;uVæ¶-±F¢ˆÑ£*YYJvëwv*æL¥Š¬© ëÌ]Iû5­F#xVŠñvUÍUít·‹3Vet@œ …,B0È.ÝŽÒaZªz4ï×[­HN½€­Â(È€ª‘}˜\¢ÌVhQrã0ÍYU2jÁ””ˆj$ÔæœÏ\z»³×nÅäí¨«Is\Ö^ú1Í«¥ç»$EŒIDièî¹»NΗQ¶©KiAIB$ea’d¬¡ƒgªv²ne—y,ÉÕZo…Ç‘Üß9™}óñ„Úµ”ê8, ïí3¨6x.E'§ŽÍjõ]bËÂ#Dr#MLJro7ã)Í|IOx‰·Ofzý™Ÿ§Pq'Q T/ÆýSþÏßF‡K×TÎiª”Lÿ²áIð¿KêI‡\ëés§ò’õ…(ÊÜU²÷¸IXiñÓÞ°?Õ¦œfUÜ?‡Èq¨œGé0lK7œ Œ‰¨–%”'˜7"Qİä–b„Åå RM Bwñ¬ñµM9]×Ѫ÷4ç8m¹Œ³ëX“eË£ÈÊI‚JÙö íï®ùÝ^úÄÛ}6çjU#7 g˜ÄFÒ^,LYµ5T2L±+²Õ`2ôàãCZÑ GD)ÕªÒQpAc$oy H´ÙÏS–±†ÖÉÈÎiˆ»ÀÊíΛt4ü’Ç’1 “De«cµÿ¦ük¥,bª®x휩2¹­Ã$ÚzÔiýÛ7Íåœè¯œ†¶wºÑ$R@›¥Ðñ«$‹¦¯c7dŒ;ZñÖTŒÂGÐõ_¥ßdF?…Yä'9¯×û4ÞÍw}ºq«¦_g\q­øÉÖ&¼_U·Uþ>v°qŒsN§;sÇ:«ÞµÆË„.Âë•ñ"Û+l®ždî]FnQ¬» «šËàüäü4`ù;LuáhÓ 4¦šhΘ”ÎÇìÑfWNÉ(â‘*@bòU˜.‰È¢«:xá×=3«ÆøWL’w*‘Kg‹c…&jdÁ,ºu¾õÊgŠ#LÝi Ý8Øu·Wx®|u}߈íoßñÓÏ\W¯È8Æ:ƵGnûç¾ú§Šß||VØÚú¾£u¿zâ¾®5œV»ç…·}ùlü£Ô„ÙN 9 ®‡¿QÒ¿âõy µš+hÚ¡fÊ–a1¶¦d&E®ÓÙPI$;°Lx3"~`½ ªâáÓT¹¶y÷æBrd’#lNXpûh;[¹Õ;}“/16d°];KK£oJtú³“µS‚8?®³‡À[™sñßüˆ°á‹ˆC´ˆtìeòå[½•y4¸ÍÕ²ûšÕœÐÓÊæÛÞ!6ŠÜdXÏ,5®´=ðé¶A˜¶›ÀÍíE§"fðÇl’æSbÇpE4Y‘n“"›Éc†ÞTG¹‚Ñ¢"<ŒˆopÊ…••ðqŠ×¼Í ¦ÂëQeÐòÛÚ±šË ‡ÑÆ¢r’ÆÆCo û»G“msÂÚ¦áEö µ›•“XÚm¦hI6c èâjÈo"¬™×Qïn”Û4Öõ+Ò¯L¦3zˆÁ´›põÉ•íÎ&‘°FŠö (2FéMTd½j’,Rf¨M3S3a4‰8Òh-¤©Š8[œR¬’kD‹ÂœfŒ6šãˆQ¦ñ>7Œ8+\a’1šœY¹6ÄÚÞòË2Œ÷kM-phÝaá1¥ÝðĘõÄG fÖ¯PÆk[å¾Õ(Ð èjo]¹4`ÚÉi½%°Õ¨“ 2ĤRY«¡“-^›FßU#ã-'yX68Ÿ(„´#M…åñ‹½LªrÎ,[4 pà È$ æoƒG0|2U Î;kF<Ö`F† b䌖ØV*à›Ž6›la$‰–‚:ä¡2¸ÅšƒIÏX¯+‘ i˜ÞÚpKJ2ÞkNk5£GO7ª7,\4f´$X!ŽÅ‘Àmí<Ój;º”1Ä’ˆ]bmM"G» ­Í§w*m3zÕ³O¡†kQ‹dåq8›áÁ—qVdŽxàã(í€Üm‘&K#W‰ j sCl9{‘±#m`2°æðé4ÈŠ0°mNdmkXjqø©×S†n #–†U6@¦2=êm6Z˜ XÍÑCFT`ùœÔ3a¿Vè8i{ßll¼âõ™ ï²ZÞPÃ;a}]|W1ÆBÅL*³²åX2TG”`=döÅßd zà IÆyjw›ÍäÄäŒu¨P¬’ÿ8¸_<É¢™fU;­±Ø|Xœ_[b¤9˜œI_4(—'hG†zÉë$ÈoÛŽØ>  Z³~ioŠ@ØH™_ïºoÊi¼‡_‡Ì¾â²Â/žo…ì`zàqZmHàõ…ižr&ÖI§Z– 2 2ËŽq}ÕÛªßëiF˜õ'L[ØÇäû~)jiS&›~ éj2X«HÚŒBjÍ6¦Q¶5flš5fi¤U¾8¾]ÛV~ŠßccUŒZ5bË(©5ckDEi5¢&lXÚ6¨6Å­Å£¬VƒZ*¼p [V*ÊØM)´“D¤h¬[d¬¹ZåBj£(–›EhÒV6&Í$š*c[‹R“eF6±FÑb¶-BÊ5lh­F¥4´Ph©2m c@A©#Qˆ¥% B¨Â²d´Tj‰Š$Ë&ªZmf&2ˆ¥®k³%ŠÕÝÚ¢åÒŠÒQc EPЋ•ÍÕ¤©"$OÚ­ tuû=^ŸWÁ¶¡ùWÙ*÷Ê&ýÕ³®WÕ\ÒVŠ,lTlkD$Ø×møÞèðáFsïªØÄRO2x ÿ.ôgAx‚…$)JƒÅÌ ™Fe¹\¥÷yç„‚•]ÖÆL×§$ž[/yˆ(’¹ÌIJ»ÍRVÝ<½ ÙÕä7à?>œe;áLj*¼a€…"± ”:ô`)©dGYÃm«ÅŒ›lmdÖ2)fdªñWM=ö¿UâÔ2ÑŠ ¥*&>}[’!¯jæ¬dÙ™¶5L ² þ~ž¼qél+«p,H, À‡¨Ó¿ª[zy€q†’íÒh|¢|,pDx0% ’£ÖgV` âTÈ5$ÁA ¤7#-¸{„ž7Ǩâd­ó –‚’ÌF¨H¨É2C,€hSÓ¬•^Ä"í&Ûb›0¡’¦J9ÓLQ¾ÅW-±cE«,Ij3b@¡%4„¦C«¯·¯¯·@ÓJÎíÁ‰ F½:ëÇVü$ÖØ‘ðøNÉ Ñ¤vdm0Q5Ã0+ªBÄH;õ{]ò?gÑÌ:E!LJW;3É2JLY“zFª˜MGIGDÄèX¼ó­ã®äNÎF—k±nk¢¥Š·4¶»—hÌ©D„…À#6@±Ztöuöuõë¦aÂCF÷½Éî“]¸xA@ç¼½‰SHõš¥7ß×YBºVææº¥5†ü âW¹Ü4˜“5VˆÇ.Þ5Úm´Ûh볩™±Ý-LÕV>­ü××åâr(iZ&+QRU‹_ŸºŠÅ^Ö¬ÄuP T‰@ÔJôéƒ/WogofÙÓMM…G]s¥WmpìÖC‡gXb@3\$ £Ò§Þ×sðûÜiiB(¤(Ȥ „ÌÅ&Zxc†cƒÆ3·¿»Éäïß}ø§=4Ó5ÕU¼ éL„Á9A’Ö\%/ :ÍÑíÛqžáÂᙕ%%,Ôwf¤ËŠÒ!rèÝÑÏvsŒîÔ8¶ÛUwfxöƒØw=òâ=ÐQ-H ¶X= ü½£’¥/t&FJd´AÈ–$in¼¼¼»ñ14ÖMU%ä—L$vÞ9:à2ThÄSÉ Ñî÷ÿ›Ç¸òvøøù=»ï7/iy¯ËöucmgXÑy™‰–’ùgéÓ±!¸F3ìÍT¸‡%˘xÛTT—˘Ltd£T¬°R‘;®‡kÆÚš>k>bõøo1µ¶Kjì“x)•œ:È˲ÀDRfÐÌ6.|÷Ãq›óîÝ»%‹úªŽ"‚s,£ÐÍs p cAÜÀaÒ*AÉ èÏøØ‚%ÁÌ„‘• ˜£z¡‹€aÚv\:)8QKþϯ5äÈ)³)!„ø:Ñï ×aͱë30¹QUX™È5Á!êá„UdF(è‚HPƒ)M4F•™[orÛ²¹Ø5Uƒ­ØBTØ!4¾dH€ƒÏmæ t…¾'–ôåt¶ŽД]ö± ¨GðÕŠ¡ T‰ ‚$¸¯ ŽCCUЦ´(¢ÐwƒÌà §x<”xC#dàšbD!ÄгÀÑÐ0†®Äì˜.Ù‡&†bàU,J.Nˆ­a yüÞGŸÏŒç9Îj½_ $ ãÄ@$Ÿœ*ž?â:s?ä<†fiä;Æ ’~ ðÊšR2 ƒûcáú>ö& ?*ŸžöÂUq”¦@IN’™—÷Ëåòy|~_“g9Ó%ß*ÜO@}?ù?…/Ê Ffe“’d¢?ÖÒ ùã@(ý=<üyú\Öµ’zN~Ž’ ^©vÌI”£I@”I4Ô¤ª15LZ”ÃSD´dm¾*é…„€›‡§»¼!ì$¾à°ö2wsØ|bJ™UR”ÞúÞšk4Ó5^ìőڃ ™ ¥¿·2]fRµ2„IÉHZ7+©Lëv­ªûâØÈ&%`€N÷âÀí}-£„û‡ê0WÅTWfH‘ &CUJFÉ“Ddõ_ZÌq”‡¨ÄQ…"­–'+EMçk´Ê’Å •ž\úzzzz+K f®íÖèᘠ‚A "RGYk¯ÖÝ$4úuÜJ¿Ñ hdã‰&õ(*FìJ¦ïr^yjóo;¶A–ŠF±¥½õ¿'•_ú3BY4ñ P2"o ½GêĆ@@È5œ™ª*ò0c&4™„øã2}ÿ½Sð' âB‡Cƒ#lúÝRÔÔ¬-¾ÌY"<=…¦øc˜ 4SR ¡&&ÅÌ›€÷þÁæÐlêX”IÑ‘²!*mh‹jõÚøEÎþÆW™¸Kž]HáãR ÒÒŸŸ,2É—)4z̳&\wBaì<Ø|â¿#| ôö'š§Í í½ pƒ…Jêÿ¯äýæ²m+½+êÞ9¬]ÝÞw/I%xñ«·uãÈäaXF8¢cm"'m,±µqÅsjÇØÌL$Ë,5„9!´IqVDë+ ` @ÊI-lpô®ç#DLIëâ?2¦fÜdÒnÇ+´;Ð7Œ‡Ù`ŒH^ufì¸u¹C|d'‰ Sñ¿¾†a€%Npr‚ŸIìÀGmÉ‹1I¯¡Z¢&©‚SËÜõe·ˆ7™à#ÝpQ¦I?É&Á¨,zHSûæ S>Ð_´ø² h ;~œZS¾þjA(¦˜±(P=7Àñ¡Ú³Âí²Œ%,Š7.í?³†Øa]qï…"Fm¦çÙýn²´߆8“„¶×$^ð^ƒÆÁiˆ(h‰N¤w Ž ˆ¢‘E‰–ÔK²Ë¦ÒE–;~]!ÖW0péU[î»Þ&ÁE èÇ$ º“R›Ø Iºù 4'ô§»¨:φaž¤ð„“¹ëx/WyT † C“'€dý7PaˆQ–Wžz¾xF`ÿH]k[Ы1{í•lh[ ž±µ,ÅÃl5;=Ý:,$Œ“»ìXc¬ÎÍ¢t 9ÜìY¯CwvjØ ^NÞá˜x…¯³U×¹Û!ìãivcs ±V•ÄB!¬‡3L7ߌUA° ^A g—R&Üg+‚8ÚnðÕ¤A"Hy–æ>D­­S~{1ª #â0¹Ô˜š}.f씚Æ5¸â6¬&‚,ÇžE[m¨‰D)*]÷BÈ^qu[JÔdäŠÃäËÛ >ÒÊ"Ü#²O‚øÇÅ–u%Eœ¥‚H”ƒ­‚8"HDq‰ÌKØ•n$nZDÊ#hâ/x>"¸¨?Õ-øG‚ «}8ß&ŸBHŠ3ŒK€ˆ.8Œð9Xѳ–‚Ì./p3x ]·Á`ŽÈØÕ´ m¶ÒÚ¤Xh†A‡!ÆÒÊêrBÕCÃÖ nf‰˜A8’œV ÌDõ§&X`†`RC#b6Ô‚ÊM ùø‘•emz¢…Æ•F@GDFÁÓ–%‹o—è'8W£š{ ¬$j); ˜q±¡ ²gñ¡/`eÛ,áÖøS£›lÝñ…jÝž7ã°Øq ­Ð² Vϼ´æ3˜`&8òÝ®ù{ÆáÖwNøÚ?Ñþ§ÆÕU\fUw롼ã}xÙÿ°µ6>R„‹ 0v F 6 À l“ l…Š‹+ÆŠà°ßõýÿ-›þš¾°‡Ûe·Bæ²ÊºXk›¿ìã¾³u¾Ýk·ãm¸Æg¼OxßXã#žò·ÇG*ßÝúîáäÎe=Äò´ñ`²Ë!’i]skõ9úa–+†XiΚôÜøCX±l¨ 4°ÍÚ´Šoe3¾úZF¬l–w¹6$@À œ‚èÙ~ó˜±fƒ aÁ‘”l;ÛÞp=¨µéd|H¹êq(op‹¢ó@Â( ÐfúÇ-›voÓ¿FZulÝu_G.M€½ Û×i[¬¶áºfá ²Ž7Œ+ôëÕ¤œE’Ë ß wåé¢ÉšÝ4Ñ[¸[}$ é;'sRø® ~_{§WÛ ÆÓ R‘¾ëèû™­¼F—Öîko¤£ìÂç¨Ø6l•¸l|Œi(´ÁUüª¼,‘p%ÚÞàD¤¾bòÁ 6Ñ_3$6 &bGÓ¶³Ô-ù×Ï!×@c翎ø£å¯6-EœÄ6#$KCÃ>ì¶G¢7 ¨’ÌÆ‚ÐËbqÕ©YºÒëj¾è‚ZÜÏ™GgˆÁ w=jú#‰‘Òë(`†y¤.w›™ ’7å6z@gYˆâ0Ñk–ž•È™LÔ@dXNúÕ>êᨖŽDØÙìl9Ã=ñ¡u.õr23Š "ešð²ÇŸ?\²’‡9`è¸m>¢xámÇ7pÙèT3Z§~,¦†PðÃ[JhâÁH§”ø0.—Œ;30s8ÄIÐ25Tpxÿ£ìÊ<Çp¼Ô¿}ô¤XŒ“Ø>–¨Ïe)|ôüx“Ç`6t÷_!!œíߨí4ad c‰zæ¦ÆÀ½@ÆŒ<»ðÜÙ©6–S¥¾<›c°È4Ûd9éHÌu1,uOÏô®9\OŸ5è8QîŽ:3Ó0AØ™BšôÔ÷À9ذ¨1W‡\§,4'lM²Â—Ïd^Ái.ZÐÚ xC8š‘Bt"Ambö+œ+‹fl–Di÷wͦÏì,j6 XÅäO6g-8äâùóx;òaÈ€P#H#ìÛB@coÎåÂËÞµ!¯Ma˃NÖ3|LÓ º n=x‘¾!{vV‚ÚFR[¤-‰I %™“oªê â#üíoÇ‘ölž:âÛ`m”9¶€pÛ'ó}í­âE‘—ï bߣ¯.[m­¶;ÕI" ¸5ãh{@j)â ûæWo0—7žŠ6ކ^:lLÄÖ0ÿÈÐÇ— ˜èsµäQ›½xTÆX»òo˜wfMãA‚²\ØUHªÌ´2SG+¢ãךE×ZMÔ÷‹oèÈÖ£M£ r\ðäºɵ ¼%žð[3 c 2)jZŠ&”v5"H‰T"ëjYSÉÁ±ØÂ|RaæUhå„"°€"ÚHO"Tˆóˆ½L‹ÍÈ0Ã6ëÑ¿sôŒëP ¶ŒÒ'hÁß§kœa†E°h,Í„â9aÌ1AQkÜ…¶\Ž“ø·r'[püïçà×Qå/d’ È<˽آ:=èîØy;nLe–ÆæöMD¼¾Oò=çBöâz±%ƒ ?˜/Ùa4‚0Z“gnž5ÆL.Ï¢µ €q4·2I`÷Kƒ‹ÄÀ Iu±YŠN ÑPÃåÍ3nETHFè=z]44p L,ÇnìÔA„Æ‚f1²5>‘À„€¡cÒ¢ù Ì7‡ªÉêÆ7ì²C‡ër˜IÜuƒ¤W)ÂO$Œ1ê±KfºøÕ™Éâý ; Á 0ÉŽ‡kc»%’»í/Waƒ‘Ì•HNôÎ{õ€A|’ÙÛ‚9q´PHˆ‚hRS]l\@¡YË0V‹AißÓ öFùp#llo.Iã З³Óâ߀Eƒ„²B˜FqBFxM$SgNÂÝFiˆçw驤qÛÍ( KaFÉÂqŽ”NÅA™3(pw¨¥á‚ïvf¡ÄŽd,IÊ¡ÂÞÉÁ·¡Úó`Ž\XmžzÐsÍùPõŒpB‹Cwû­ã®±Ãyv¬i#±Y£OÃhVÃŒm”ÌÜdY²DrS€D­Šì(vö“¸N3¶—,Ó…é¿H]ƒæ'‡ˆCGËHÉ—é4™; ÞÕä‚I`(†çéRcqbà6i¥Œ$°ÚÖÕé\ê÷íéÐõQiÍá§ûñáFðp Æø¶Œ]_/Zs°†˜½X—ƈï¦]pÉu±!·ôŒY½Ÿy¸A00îÄD\TîE“˜Ðó2·Ö6»ŒØ’fÎÏÆ¤S'Tó.X;%±¨ e"Ê!¦DÏ2 …í˜ ôð”–ܸ§) ~[a¡È‘ÂaçDÌñ¶Èœ–ÓhKŽ]²ünôY‚<ž®nTFpãD]åø¹ZRáʇ`ÞWÓ´ËED “¥N%©Í.̇þ#`² eÞwØsÐÓÆv+xžJòïO D߈Ðõ‘‹†.™¡m©¢}{šW¿¡H- ¤sâç\¶øÖ MŽ\IÈèKŽ× ÄWH³3n ¿¢o,-‹$úëi-æqËtäïšõ†i½Ö¦wgF8‚¬#öñ߀® d’nì®J®ä)S¹˜Ó7¹ÛX1fßžËEFÓa²óAåƒzUj0wÝÃ×£”ôP''D²Å0oäÇæ«hïçØbÈFÛc3ÙàÕ"ñÔ;öç†,gCž[¯×-âA`pA0Îè ‘‹bŠK§­àÀî@g>Å 9Ï{ÁãÎxìfàÞÚdyÛH.ä KV'MåXs×  ‹ÍÕ°f6«ÞU‹ºŒSŽòì«É`\9èÕiæ6Ú|š¶Å¾·ÔÆ ÕÕ‘sœbÆ^) ç.8ò8´ÎZÔZ’Ü8Õ1cèñÎ[dggÓÌÛËTDW¤!©ÏOÌ¢2™ú½lºyæÜ8(›6 00z èPËÓƒ•":Ø×FsÙÒUÅß©/‚{= ì4`U8-ÃÀà‰!åî£W5¥YH[‡Hâ 'EðôiÁ§¶ ÁÈ$‚läª7‘M‘NŠ™ÇkB$gÓ亅tê8ê6½¹°ÏÅ>E'—<.Ä30È@ñ¥ëÇ^:-†ždYó.å°4…Ĉ¾ ºrÎvÜSo ;éXoË&R+õ1Ø˜Ž¥·” ÝbÕ 5T‰€Ä(ÜŠ™djà —¢+Ë,Ô€ˆò”®lÃDCs‹{‡{Íqå˜âCbõ˜Ngmo:ÄÚš3vX¤ÐF›Iïxä›î¬è aƒuöÔ@P€:‚89Ú7×~uvFÏWÁÌCÝ›»ì‰$^3ŽôõñÎn9šUƒ×.]ìst!וÁ´˜šŸ$\€ Iމ\K-Šb„/"áÛ'uåªh Þ@¢ @ë[l6…©Íþ¬ê-†.Ëqµ0q€[Ú{GŠöóít€¶Ëk<Œu\Ïß ¡|I Hveô.Ç5ÈÇ£èy¢c[ò&„Tk “„ø+Õ+ÎD`IáÓ“¹—Es®N²›-yÌ–öÛ!°Ä`’ÉŸQ$’töµ‡Z"·¤R¥ÑÍað+d¬Þ D«ùïz7YF"I€ÌÁ™bÀ0I ‚Ozâs/Æaêkd‰8IjöÒ$I¶@ì†lª7…ˆ·§Á#)o©165¶Üoo­pv;mˆâ'8&u[/¾Ç5@V ´:œ/¼£$lÜ«}ùÝH4¶ÂÜ´¸#g™;î–úPN:}ñTAl-Ÿ¡;%下wGqÄj»h3–kÉÅ‘f…¸~Þôà *ȽƒÉ¹u&ÑãçŸö»7Žƒ7Ú8Gb…HòAàôЧ™t cå.iÀlŒ"(‚ΰ4“N!P4 Ä™`e˜q¢“ÅŽ4 ĸ,μI7¤EUZ65œ qšqÌÐ I¾q©»N'±D¼dÑàiTm†ÍÙä= r ÔDŽóIˆ;ã˶my]öÃ$EÞð† Eç¤A6ÜplS¹ÑÈíˆtNgjð^®è¢ âKι€æšë%ÀÔ6äNf9îDUUfœ:L)yßKuï}k©Jm*¼ÀÃIxw! $‘6Û`P[!£íΈP ‚"1U‰±¬¡äó»-%ttèÙáHàKP%“„GkÊÜÎí€UU]æ…NA´¤÷*EÜ4;šHð.…ˆÜm`Á†2‚¼È`& –Êx˜ &Á@PÂÃ@À‹¸5! j`U4ˆo˜,Ô9†ÁeÊ0x2#ÔU(,Ô©¨tÑ[Š[!%1÷Íicñk¸Q&Œð6Üzd߃¯.or2Í[Ç N^éÒK£´‰)/ À†Fú5߀ 5‡oj=Þ«çy[ém~IRbQ’‘ 2¦­´f6I¶ÆØ­0Ú6JÉ‘6Ú-©5”­)™ª-–IhÚš•FÌ©šÌÁ™h…,’P ÁJÒ±(Z”ÈÖ¶hjlÂ"±´Õ&JÍFÆù9R]I·VÝ›UUUv,¤$H (Ä6Û–>T)¹î$Ëöw+¨œüþV¢¶¹©•“F±·mMÊOܰT¥¦‚zÍ!ˆlQlk3t!\ˆª ]×00€œÅÀÿ ï$CC ÐÐa£0Ûý^“P…1*t ¯…x£=wjWu·£X‹\¿Àè0öB4ó!0 ¤^©h‚ÀÚ@a)÷»Ê‰¦‘¥©”%Äu'Ós¤%(«¼pÀ ;ÅÒ"D¡ÚGÎ?ìõžÏ‹×ñ2«¸3ðßÁ€§M¼yðLÑ Jt‘P~]é5l¶úÌétCñ}Ìï¬m~gû#ê>¦4r98§ÇQKD?ÚA[6Ÿ¶½[zDÉš3YdAaV¨˜gìÐqï ËýžñýïÁñ¨õù”<ÑŠ‚Ci~à@Rû ôL¸f.µUaޏq!¥ºfƒy‰æ©PZIEbk©y2ÆÔºxÝ›§šÇ;-š$2&sn5ûõo:– ±ºRÆè´|æDªc”Q54À\«XG“, f°Lˆ Ô´±ÉblF4+@da+‘˲-£ÁvMCœ hÆÔÂŒM1ð )bða,m¬Ç )i‰Ú†&fCBö™€d ƒÄ&¿Û&TR½hucê4¤ˆÑŠ2ÔN`á&È<9½Ñ1w"¬Y‡&AsŸ¯ðÀüÇè(8À@–µ˜ª§”žçäôøöÜÅáÿ\§CB| ÈÁ¾ B-¦Ú™ßAæ ƒ«(þ˨•ùŒ ÆbH}œb2BÀÁÒ¸iìììëìlìÑc †Œp¹Ó*,k:UàG âeý|‡˜©îƒ·,/¸¡rç#nï&] L&OwÆKâi\ 2çóqc;ËÔ0ULøÅCPÈÎüxUwÐ’ávqÍЮäb.€ãjÇO•\µOE÷¡—¸{­­ó<‡°֡Ǹ÷¢˜k½²:«3œLÙnÂW²–x,ÂY€Ý*œÀP/:Ð ìôA|åímS‘Äo‘!àKáîéÄ);áÈ$¾€AÈN·ÒÑyîÛT7q#u„µ1‚w‰BˆUˆðGóh=Ña˜ÉŽK/(Ȱ–§â4(H³ÕXw ˆõ Š Ð§s¾†ðép.„`x¨ðØóu1%ƒKM!ˆÓ ”„Æ Õ·ê«ø;Õýˆˆ""PßÈÄ8ANÒI„ ìØ7ŠP}¾¿o·Û¾fûì…¶ÙÝ·¿ÇªÔ”­TŠºÌ~š-@­’)‚Vl¦Ò_“Å¿dSÕÔä4éR ~mèÖLÿÀ‹ )T]3”LÑSzB牫úsl©”mI™¤¥-}î8 V8ÝÐÕÙT’(F”¿¿Ú34ð½$=cç>r4hE•mÜ«nÄQî;ü;ü/K¼ø]¸&çabª‘PAï…È ¡ÓZÞØ$SDGí˜~_?ÞiJ¨€ŠP€ù·ÉãÅ}^ÿÝ–Ÿ3ÙɈEˆ ZF†y zWïA@®M·õ·ñ0´A2"dÉ‚ ¢&= ®TscÛdÞìp‘†2؇QR8k f9d –Ñ­b Jíd;BdR†‘ ZÜ¢ÕQVµdª6Û’¶“Å¢Ôô½5êkÅsà0p3 žÓi=×£­8¢AD®iØÙ*MU4šx#(UF©Vi&QWÛõ°mT±C6 ˆN0t lm=Öwý¤…¢,$¬ ¶#Söןݥ…AÏÉc©¨ž!æ?~©ü6¥S˜¨ŸqSÐð@91ñÚllCsmíõ¦®<¨¯CcÑvûPî69žé¬½Db8OD€ÝC~’+ý‰@mƒ †B›Qn‘OÅÙ™! C€J Þ§tlC±°bcäÙªb>çÆ!âÂÍÔqšë:LDU$…‘²²´©]§ði”6”DAYÙ4ÁE%$ÕEË£Q+ŠÏ>ÿßóÿÅù u}àû꧃ìNÓÍ&FJþܬµ8f9:"ÌlÄ5Yøñ5Ìü²ïïK¿B SKLF½Ñ$8«¦ $¦–ŠYp=œ½~_IãfCÄdrÈ~êJ¹ýX- `ŒDrU$`­B™”ñ ×ÿWšIåžn·å}žâ³>ê2?!0O%_×’]i\;+‡º×JÐH²Bµ ¦\ QhHh–™ÍÙ¹ÕÍZðî#]/mzï^_'#M„Ý461 cÃR ²H6í”)¤ ±§DQ†‘ ­ s9ÌÑ-LƒÀ:žHŽqã§ôÜ12Gþ>.~Y§|në¾Ï€ÌÕÁ"4z˜h¦™™¶ú4÷½Ju’EAD…PÁ ¼;F„ ¨’ N~áDT‘202©¯.‡QÛì „Ó¨:•É@¾N`½çâý6f '¶lÇqCLRª˜P|'ÐQbDL¡î¬„.Ó–&À»qФ剦#‡Ài“‹Vcl‘B8ŠÍÆ\°—Û4èÏk݃xèôÖSzãzëƒÀÖ­2¡É ’æ‹9»§kÆ$ËY‚˜*!8¡Gv=Iv W¡åú¡Œ38„ïu­6Ùë4·pÐ`ÎéoÆp™à?ûâ˜I’Ô‡eº,ÆžCU˜SžÔÖc›³‘l®iRÑÄ›b‘dµ¯;£Ü)7Ù &¤h“Êö`‘EFhëDm¤zqRºmŠpóÜÐ&…È ‘3e Š‘óK¿pl"À™‰¢3 ÉÍ^ˆû#È5L…¶L/|ø_ fÅܺ(îBsÅBkŸÀ…°5B„L]u3¦\A¦k¨Š Q•EmE ³IÝY£~¯òÜzƒ¥J–¸W)œ,@ÁD,8B°Á€¿±âñOãúè6Þݵ£’j÷Hõ^Wɶ³µä~EzƒéŠÈÐãLÂîp¾Ý#„u³av&T|Ï÷û$$öëÅî¢*"`¨¢(¢’ƒáËòüh¿µ²T<Ãñˆ¡Å€øÒHß!Ø^dÛ´ötøYIfÀ……Õ‰L,­<˜Â·9ÑqÍM\Š…*®‘æ`ÓÆÁÁ™Ly‰´­+¥õøcÀÒt5.ɳšk]°é£6ŽêF™"Úøh<©( \n½iØ4ËTeˆÅ·6jLç‚SuÌ­‹Lw šm´ou¯¡ÔÕæÛ¸V40y½œê3 XÛ*rLÑb¡¤’4iä˜i #bÑ\Öžq‹\æø&k1‡dŽP@£J!a(°cjª!l…Ü Ÿt: oHÉP¬äḴÝ!½šýÌÁÅ᥸>„(bb‚ ‚…däs†&š*é‡)ê³ ,¶ƒ°úº’””* µM·`<Íjঃ­ì=!Ùúˆ‰ƒË˜á*K3D¯™3¿I=)Ùæ€PP5Nþ!T°G,˜0mááÉ2bˆªJ$ÅäìÝv!Š` $æ÷®‘Ûo8!áÖu‘ø€]@¡‹)j+4ÆÄéMƒõEU󪞚ªƒ`6^©zUI¡äÓBùÜß»ÊG ÍOOnhÐK8š“SÄQ¨pQEB’rÉîëo®´ºêrqXUN+ã5Ú±i!BÕ¡%…׹´‹b žòfUXž²Jä³.ex±£ˆzŸ7G’C{…̇ϼÁ¶ÞšplضblÅÚ—CxÙØã„djJ_±—eºxë¸FoÆ÷õ1õ‘ëäR†¼;®µ_5·Œ™Ø˜ G)«(ËFÚM±i)iú¶`gg¶"…Dô€³ª ˆ€1m0CüXÚõ´ÙöH ÐÝm`Qyö;̵¾¿·fÕà=ï3””nB·µ˜è»À(mq È"cì8ÍriÓÕ)±Íqi ÈO8¢‹1,Sᛊâ‰ly8Èòº¨&äN€ã1û)ºt»K‡J®^CÑåœyš¿*¼ì²jï1pð…oÆÇ²Œ*žMó×v3HÛW®Âk<î±NG“97³Rú摞[Ï'‰´]JÄÒ§}%™¨¦n+¬ì±áׂM‚DãE’ l¬S¿‚Ç[Џyá.^Žä×™ëåÜmŸbosX£ÐôiÀ„ñ/Ë„ ßw§äA$œl`I¢Ëm:tæûWLG #¼@Žø|G˜«70SD¸‡hŠôÝ $B¡XyZâD“H]&Áš5„æ!+2Cž;UÚ„(@  €POÀ9`$ÉR “†wãwg8š[:Ð9i­†9Ñï6¼IÚ$#¸ ?0ˆ“ Àìq7xŽËQUÏG Ù­wÅ| zJ‡YÉG]íÍOk‡`v/giQq!°ðH¸vc–Ná‹Ë;ó¯œLè ô†·cƒàk`òŸ6OËÀJ’ØΊ(P’RΔ%s[჻=“®*J@NGN®väàNéX‘8„Œß±ìQ&žèb6Æ(_ 6ᆃ˜0›HfB*ß>ÒRª1švªêsÌìsCÙÔG¸èffh–1Zþÿ?Ýgs¿Í<´{¸d£o½/‡Ð%ˆ…¨“E7Gªáö$›ÇâÓËdd”™ª¹EÈn›ÙÝFR øš{—Ò|>?oʇã~Œ­N![{5>+8$wá.EÀCÞµ¯ïÓLânß»C^Ô‡±‚£(ª¤¥¥—ËÔç¸>è`a†a‹Jt¨ª¦œ¤Ù(>î"‹€4ÙÎ…ë‘ óAµÂÓR ªi‹(E(@ßÐÎS{ >å:LRáˆþœæé9ÍÂR” <” s!!ÇÅTX°fÿvØ/—wz¬‚Á@@X"‰šõÜ¢¾oHbëÌÝb“ººÙãH6AŒd¹@ÐLmÕë·ƒÊ_Þ+¢WË´-ÓIY¤´,…M;41¸U¬?æðlæ©bn¢5ÁÚÖ1¦›EdÕ\ºr× ^xEO5iDÑÄ‹Q+˜¬)…VŒšªH7¤mºœl`Ëôƒ©´ü5w•.SÞDØô75]Ðe8©:šÖ)d!ó·dÕc.ˆœ1DÇJWÆaŒO‚…«B”pmUÕIŒMYS°‰» "|b+˜äƒSAëDZÍ ”rÐá…`6`Ç3Nì“NHÈi½ëZ\%kq"(Ç0„ ´KC@Á¤—„°0XÙ ]¶ ißÀÜÀ61 “n°óWUämƒñÏx£ÑáòD4u†:.ý¤J'teOÒŠhN!ÉûÚ&£Ï«ç­ó•ðìüy¨•4ŠDjMã©çhÅÑݹh£E‰š„ñ[çäîí-MþMÙÀ}Ïj@Ûdy¦¢¢c;rO¶@2™ò‡n(é0Y‚X¾²2ª~Æ ¡^ÀðøCåÒ•ò4­T6ƒTH‹cK ëû–‘祖~tÃúw×öæÍß _=qtÁÅÞ?ÜŸžÊ,Pî‹Ð<øÝXmÿ$zaâGŒåûvº¿Ímþí1ýÀ±h÷Ø}8!Ö¤LH‘ @³¬óü ­fkN¢4Ù;^V[¦RæY¹¹¸)¥ †¥•¹Š7U€ÕJ´ØصræÝ &jLl#ÅDˆ©ÂJ&¨G ÐØ7"†)ö¢|õLD”!B"2Ëräm%ÌM¢”æåF’mf‰s´­-¾¦ÝmÈ“ºw)Ý\ÚfÑ×v”Ï;„›lf*¼r (ÀxåÎÙU©2ªZ"KJ‘ Rb&7óW¯øåò¿¾ò¿¢ÁjŠ¡ï.Å®Ë3û>ݺÿ³û*«4gä8äýkèéyš4tA@ÁЇC‘ÏòIq›ÔPáªpÃZËŒ9ØKŒÖDsÎðãJkf:,LZlœ5ÂÈÆkv=4 V" dM«»–õýx- ÌÍfŸî\ž}Qaœéü½7ܧ/èþš_ü²Ÿó¹ÖÖë+u×Y¶u}q¤¯YÏùïŸ`ïžó¸ëºÇw1Ö¥W5Œcž9¾ñœ¿#›ðÞ«0¹ó[ÜãØTW^ŠiÇF,º'¢µÎz4GB­°ÓG¾ 2]d¬j­4ç¦ÝUà s–vK(ÂÅÓŒ.×ç+f׋òEµ…£9R•¥Öeö_Çe!Ô}º«eA¤¯”¬· !Ï/Û˜Ž{Ç¥×7µñÎÛïy¾†¶®zÚv[ýûë}ûë¾MñéìÇgëKFNá*”®û…Ø•”˜aQRL`»ŒÆšhÕ‹M(Õ`i€`€£HŽáŽNæ µÙ£‡Y©“=Ï×^ѽ~n>ý±æ¨naÆ´D¸Œ-dˆjVV‹`£Ú`0c„dب]'5 µ­8´5J·“¬ËŽw"˜¿¼¹êG,–ÑÆ†Ô ˆ­ ŒcR Ë`ÙßYV1Èœ“r Gg Jµšpj²46ãpXѶ’SDÚRÄ)\~“¬Õâuuð+ÚòòWcâ]¼î·Ë®/;Òï;Z$ŒÒ6ö=KFæ=5±²;cÁ©‚ZD™hÑ¢<Ä‘]ݵóî¦^Õñ弦ŰZÌŠ)pßlÕ0-!5¹zo\òótÃ`,1 `ANùŠU Ž’Û¦ÕÞ‘xÕí¶åbÜN›Û¦¼rÅ«$½®m½ÍéxÒcmÝurès\´cc›²Š ¨¥ÒƺJ®[ãV µ–pÌLÄ#E±„­ €ÆB,¡$—sŸ¿ï›öuþ5ñ&¢Ã–²’² 1ÀÜŽ€7|arŽcÑéó÷_×$ëç;©8Õ &9P·­.µAHªµF!»ÛG² ”NÄïט²‘š/-õ×¼ád·±’™Ã€hÇðQµû¬_ÜËKgáB„¦k»wC\Ìa¶0^*>‹ßöþÿ¤;þKñ¯« æÓÄD%i}¢j¦Qwrô¿UQH»¹z_ŸËçCŤ£ãöy|Ö1‹´îñø5S1O•&fbÝÝÞ~ufææ!ájº¥1H¤Q­™ïͺ÷ˆ Üœ8Cœû=–k‡ÙO’ü’®ÿÇÑþéuSÂéƒöÖs>ˆÔ“¬<¼Ë€ñX{‰ †”îöhæB|«, ¤BàÀî.D@ÁhÚm±l CæÍÿ5qãlj.b̼yyïu¹:ôý~ÿ­—éPƒP¡hÛ0Í+ç’Ÿ‹ôÞ °¤zÊQ‰ Á¹òóòó1+ïí¡ªÉ‡…¯ #ùþŽé/ìûÔ÷K®€úÄ#¿—Ÿ3-ŽÍø\ ïð¸ÃwZüãë­üÉ}RC)@¸ç•ÃæŸßaäïN ÂU‰8À Œ“(^û§^LiÊC@1é‚ABŸ/¶2´i”W_w¯µ„¥æU ÍÚÞ~ÒĬ"ìÿvG¼.Ü0éÕe«3©6…r>ägÄèž×St7âŽÜŸ§°Šƒ»€ˆp•NP&E"ÒÒˆA"ÚG ü·ÇÝÿWûbô׃§Å—DBj4o8r'ÅfÝÇŸÏ©Æ ©"Å æ¾C~ øÌã}¥åà„©ûtŠ®GÅU[¼Ï3æuŸ‹`Š€AŒ!ò Ë.Iü¯ ¥ Gé$&=Ñ¢ü¾½i?=¢‘´œtq“ÃÝ…S“åB¸ICÚvA“ÁãÚìfŒL”? ”µÈ%ÝЇ†¤…zôú¶ÁtCX`Ã:PûTŽ€L(Œ@$ y±r~òyËI€¦·ìtn¤“]yv`žYãþÏ™‡ˆª)d¯%…Àñ½Ò2w²Ì¬jÊ;î|zãl5–PÍ,UÍ´&é Ë”…ÍHŽÁ~·, Û®Ø9´üêþã#:¸òžqð['®oÙÇQEi *‚‡ì }g¹¥½úëœx$ˆó>uj¿â¯pÆuƸÅÒx¡;¾ çç :dí9“àì Ñe ]\òŸÊa™­Ç× údL‘óŽÑå©PŒI;RwiGQt_¸Ô[!ÿó:yÿz5lafmËmÿFú]á=$¨ %“\U`hþLjY‡¼õ@<Ì¿|£ÒžHç¦`¾%aÅÑÀ±ñ"‚iRYý|òl›9™K+ÈýPÜCK5Þ÷ª¼Žb4âCÍ]y__±6Väç“Y› X÷ÐyfjobÕŸâ…Ú–°ãGqŽ—6p3ÄñÌàÈb”TI^îOÒZ;àÞ– RbUpîù…6 S‡;Îl‡Ý ;Š<1^´îï½×À^IÌ]±†4á iÚP(E²'¯Z?Š9Nºÿ!åè±€t߃“À içù·®5$,Š¡UD’BHI !$$„¥’BHI(HYã” K!$$„ýÝü!ƒtàd?Œ¤ ¶8Sç |dB jË ¾° ž&y‰~®ý¡3Š­ïîù¬Åf”Qûò¸c_µÄQѨãU‚ Ç2Œn¶Xðñçuçm!µ¥6¬ŽîU,˜ëÍ×ÝÝtÍtäW¥« ð0I—ç?ײ©Ç‰g>(pBA¯óݰ; ~ßÏÛÞéÐ>ÖÙ«n±b”a³ Œ0!C…J`Æ0ÐRf¦š4²»q¶h²½hùH6a4ievæËkÖ‹ŠÈ›šŠÒO2 ì*MŒÐ8™A½9„‘át4«b²Ày+?…‹ñšF6V=@µ1ÎYS"¯§×ÍašÃêkÆÑÌâÉ2±¾/ õTq"*7iiÇY’í?®ˆfEœ0—´j(ÔîÌåtÞ^5ȚŮî£oSwyåâ+4î•Ý ”ìË»²îqz]çiÜË•Æî«”ë®S]w¦»É]!¸»¶Ô+$M ±´ˆçˆ”k¦±+ ä·,¨²î샊÷QH*#ŒPĤª±¹! ’ÅFë„q2ÄAXš|¼ÙzµM¹ÜöÙoP\‘ ç…dPÒÑ2r'&ˆ! ‚eA#”Æ\µ€…}}ó\Ÿ¬Ã Ì30¥òQààÑ\Ö˜AÜQ“½+ù±#fÄlᎫé651 *ÄëcÏבO:…¨`.ꗾϙÀÓç€ÑÒF(ˆa dAXËY¢¢–*m*û¸ÎÑÚØUé;€ ‚¥ðµ>ð>óaŽ}ÿUU¡N8Ã1€“j|’HòœÖ2ÉÄ„iDBvœÖ8Û1¥û×áöÎ=cyCÒÊ›H½Rá_ì$û`ýÉö…¸»µûF¯í=,¼íí×FO^w<2Yb?­¨ôÇ…þ`·Æ˜Û¯·‘5ãs¦.m/nÒ_&ëÓË$ `í%dƒ$CjèÆI®´¨ÔÈZ`••¶Vv`›×^ÉÍœH´Š?Õ¹òsÐiäêò9ŒšŒ†d(<‡—ׂèôËÎ Z,5‹m£}¸©É%<}¿v"ë}àqê ç 4aM±aJ ûP~†þa:™i*TG ØâŽü4”?P‡d115ðóNÖIY #J,I˜™ex¯“”%’çU—\«º.èÆ*˜&Â0³ó<ØPæØ³a/K•J™F·5Ò¤Lж®åtÚØµQ¶‘„ `ôæ=‹Ü¼7úJØßÉ%io·ÝõŠJJÅŠ±QG>qFyÝ{î—ßëy´ÒØCá8HŸw‚}GݾÊZlí= TÝ%Ý4i™(Ô‘–‘Õ)ZçrìWÃIª»&Þ:ënZVìs£Zæ"¢»›¨µßn»Y È$ÂÚL‘î Ó–1„¤@¸ tÞ¦e~£m†‘&]ƒj.ÂÂ÷ĆÛÕÓá¸÷”…"1¦¨äRy¹U 1Á¶ÈF˜ÁØŠEfµŠXy:‡£µp<Ý9ÞžIB©ZHª¢öìÝCƒ#÷C1™0ò0HÈU1ÃèŠ*$]D;2Di£ëj5™´6ØIÃ8jƒ†GdRAˆÅ"¦¨p0Ž9Ó+!ˆÍÌÄPvB@¢b_²…$ØD¯ –ª¢ûh+ç¨e)øD¶(â“v…$ µ÷óIëÄÈŸÁ.¬¹‰ûI¼ï„œt&©°bŸ³ò•UuWo˜œ(…±@Ÿßr¤Ä ò‡Pg&k!iõTÔú”Ñ¢Y¤z: pé t)©&D…Äün÷zºiFˆª¶¸æZ†Ìu&b0*™Ïm±æ„`‘BÞ¢ ˜((ʼn&vb=AجÄ;†ÐN*rTÒcvØAïP|éßA·¤ø?£Uá}%;Ø,¨ˆ+÷ÓМÂÄ÷??ÃDó"#i4iF±X£Gìëºs\ÕÊÆ°VÀÉÝЋmHe‚Ũ1Në”]Ý­s]–Ò¤$…¨Ö6¹ºhŠÜÛr4Ìjý”Ü‹ÖDªÜ¸Q¬& ©¥6´Ù©“ Ä¢ ÚMd³kJ £òÒ®”Em4)K¶‘ ¥)FÌz5éäÖ­µêÞ˜­"·)êäÁ'<À6s "©ei$”üð™)%„S LÌË%p‡æÅL`B×@(~Ò}TZN€pw ”çdl+ÅEz»þ$ÆÏ¨þAÛ%û-Ìã4°X¨Ç5RÈ îý'PQÄ÷§ÞŒwg<3G1ç µE äPÐÆîzñCÞtCQQdZM(H³FcXÄI­_*ùå7ìú¦Dkcîî«ñ] 5ddÖ´U%L©B‚•”cøš¹µQ¬d©),kY¦“[©Ÿ~îR&«—-jM´Í÷¹¢*–Ú¦ÔKdF–›SmAFˆ¶½Ë]5?’ýy lÑí dw |µEU)UJUR‹^ëù±NËc²ØÜ„£¶7$±ËH3$$„wuÝÐ]Ýw¯=zỸ" ƒî­÷ÍK¯ïŸ£g—º’Ý!¥×?{óÕ w;Ô6À}3™rsg΃Íg‘Ô:€"–¥Žàçàaˆ€ð{x+»ÀVZjB(`¤Ò’DƒfmTT‚ .Ý¡áp©Ø âÇÈW’ˆ «pHAGs»CˆÃcFDSÈ1Pˆ}ô(.çO‡øuDÎ!5fRpá8‡wrpzµ¡e0@²ë `±BäÊj´îᨇyŒƒåýͶ(6ŠJ"i±Ã'3¥¡Ôä²g=3N"Oß™H±F&˜5Œ¯G”²šÇB¶±«’*ði‘D1¡e‡oAMÍN16G8c\ +9c¬FË<¹jC\qEâŽ=5Žò„>)x‹TF õbúg)’)Ì”érc<ذñ‡5wgL0ÛJ³§Ä 8Àâ^N; wÂß—²Nó.¢ëq¶ž’‘0tÐc¥šœeT:VXÃjvAšg”†ô)ìÊ\“²V¡`À\a謎tc`À ‡ àA:Ñ>¾_Z=o´E;á Ocskµñ8µâ×›m-¢„Œ#„:µ8@/|m'uîd³ÔtöÉà)ñÄGb¯â•JA©žbHæ9H_vþÛ#:ˆrMPÖî# $`|Q6!‰Š–(!;:RÑ (èvü§Ñôt!ëž A‘ƒm#é»vÞç)Ð"@pzCæ;:|` aâ÷,®òU=w`ð‡~ÜjEDÙÈì…“¼ª’±xK0`u<„wNàj‰ª ¸Ut´Ú²À1¥a¨ò9…ª©t‘25 ÚQ‘ž܀ÞBYQ· ™0 ðš2b©”D‘ Æ‚Z@NÚ3 -޼,Ô ±I‰Ö@£ÙòžÔ›•ëBì=‡hfÐ{J³y´"(±Ô¶4&Uè΀º]FÎÐð`4ƒ* °°Tg´†V:ˆšÂuîŸÃö·éºêí»®®î‘%㦃%$% ŒDŒÑ•çv˜¬Šû×I€^îÜævåpêvŽë™64”&DXK]~þ=^àñ{õÞ´¬Ú& ¦kJІ-°8Z"(¢t%†"‡øŽ)ÿ1Q:"õ…û­Žoê«ç9œO€dˆpØ—ò‹À{Wäò¿'Ãé0ÁÊÄÌ.ò\êáñÉB'l{`8]ùÉ<ØÕîRÐøÙCןŸù|¾¯Éïâa0ì×LÿVŒ]šºÌqVÑÕKÊOÄD± Œ…`„DÈ&°-cGˆ.m.m‰¶Å‰aØ´ñ3{!X›ØöŽ3{¦†6¡·#M¦˜Ø±¢ÕnÊLØíbƒÆBb0w$‘ãÝÊ‹ÃXd+/šf2i^2Flj4WX›ÑBcr^"+ i­4°`÷ Ö²¡iÍF4,Ó‚ÓJ>™lG¡æfµ㘂;àÉÃZ5ƒl7¦¢F›e¹kŒZýyG˜›sÎÓ‹cÀÔã\ x’ÐÅÏ0f5(¹šçÛࣹ£)"Q´B¿ FûrÕd¿U:Ô: -SŒ2@#ѶØ*ͱ²ä á;ã÷s\`ÉLÌv‡(b.diڰȧW#|6!Á`¦IëtIÖ RZF„°a&º*0c`m;ÓÅeØÚ¯°2ØX‡*ˆfrÜ“K:Z„£„lü_ŽÉWO§áŽCÈ?»áº…Ë]4/>Ì3ŽI0²k†³b*–#}ø#‹âÞ¯//+Ï<„Hhç ·—+Íæ+¦¯¿<Þ˜Ýqžg2¶¬€Ç XH¶Ì×4FË›Î0šˆ?³pwJ á€âN¸8sãy>-Þ €Ý"y„¨bÁ ê?;°ìs7uÌ„u/c)£sÃqÒ[¨8tWA²›˜˜ÊBHB“&õ P&ËÅM7<á¸h?Hâ!€ÆÐ"%؇§à|>Ïáyø¯íÃ.óù>ÇùN©{% ˆ)& %¨*“ÄgZCA)` 8Þyñ0kßT)Øá(ÆÒŒÖÐÃT¦ª3ô.ôÚ¡‘ÛI¤ÎaÇ›‹×s÷öH~‚Û8Ì…CG¸LPƒœ]žDÉUðŒ¸e@>¤$ÝLÜdÀÓm6푌4º;nbXß…ß;éz?AÍ ºj•®) RCœ ò|wûÛø¨éNÝTñǸ¶ý:ÖÇãw‚•(¤™‰"h(@™î¿Nïîÿ/0HjÒr—ýõŸõ=÷ƒ&¯P=6V©.¦xF¢v Âß1C ÃÚ|@_“­ÿ«âúÄüûMø÷ä’%Ròl¨oÅ3%‚µQ b¼À±;UwúÁ@F©NEÀ™ü„ Í´2ŒÃ“E<ͱa5‹¤ HRB X‹®”ZO©àÖyÖ¯[ ¬jÞTZO™ ÖVï:H)1¶‡ýûJLLhm&̃giª¸qÖ>œ)Ä•GÅ•67ÅÆùÍ웟¸ï éÇ\åÒ±ŠÂGšd±£®¦ ÜŒK@1 …æÔÝdƒ~wc"Cf=aŠ5\c’ç5ª“–Tô.3DÆúÖѲªÌ„5€q1Âou™š+»ª†(L†¶•iž:~«¬Mu¢ÃQXŠÆ$ˆ$‰.ŠÅ[ã.Á³¼Õ `ÐÐL#`P,Hƒ‰Ö C!jÓKVC@à@ƒ´©¢ÉâJ€3eVŽ5#$¶4D‚”­›DƒJm€í ¶Æ(!P8HÁm7"Œ‘’„,lAQÉ+QÖ„ÂvÄhF1i†2¨jLÌÔ©”ffáF$[à …–S9k-jDÓš+F6Å%z™Y¨YJÄ ÙB#"°A_ðÈ1ã0¨dQQ}™ƒx9ƒŠ(£9 7cmŒqÔF’Lpq1©-÷uUa0J ™$+5\£1² Œn8“ËFéTQ…i72V'\yu^,Ž3 šºêéc&žRÜÝ"D`ƶ87+J3¹#ãûÞæK¦´q×ݘõˆí÷ÜäØÏÝz¦Að°EiE/ã‚yú1 hƒ’2ŽFcE;4ÐØ¥N•vd󈄌 ›X¤q¸*4隲¬WVeRз(Ra‰¥Ñ6ÃæÜ}O*Jbï̈( h"MOrP)ü-$lIüæ8™ã621›²”ø < ï\=d¨&;ÝÁ“Bš‡r$H$1‚Ö‹FÛ,¶1A–¢2±g';wK‹‹Žê¼•åç\µÕË®Sżòížz¼==,¦ÀO$eQ,Ë[Xì‚cEª•Ö7Ç CSx‡¾äyº%Ýݽ¯~¸õ8ë±ï¯,håkºéMÍjk1mÆcNb“(¨T9óR3s£p‹•*SLÿ‘VømyF“Vô€Q]KA2Èà ªˆs #º5¾‹õñ¤ËÌàØÛÈ¢ô{¦:ì*MVØÇ^ðÞˆÙ’iQÄÆ‡dm±¤qHÖŠkZÐÁ¼ZhUé1DÍaÚë{Ík7˜¦™¼ØÉ9¾MXI¤†¸´ha„悉òðiV68¢Pج”î Zdº±E  Íbñ˜ËH#Y’ZQY’¡‹ãE5#mP¥5s èãâ@iˆ˜¶‡îX‘KfìÏ7^¹[ÝÁÆÅ™33HÊhZ‹H0`Á¤†êÃ' ¦à»líQ$ Ñ@ŸL8E4E* Bf†U4€•©@rÉÈ_¬íøÏ8fUe»¦ý?Ã_suws ¦¦+ $E‹IÆ-1°Æ¦JhVTµ‰é@ÀÕÁO,©ãY€´(`@1e¡Éª^û®îåÍ»®çc"$\ѯò*øû¼ „ãqÆ”’kg'<Ýw`¶LÛé³b= ¬ º>ÿÉߟ]ÆÄlXÓMs‚­µuîÆ Yâr \]Ÿ“Sȉú¤"S“Mµ14ÁÒ`xÙ®ä ñ}‰æŸ ʲ xNfaSñE„„P1UB±º-Ô†±šâ¼î2àÑø©¥¹{57É 4ˆÆÓq¤Fò9Â*’ÛüXw‡YŽ—²b @‰h"¢’€Y S¸¡Ž”†¦IÛíS­ú÷ˆ(ó<Ž\£màƒ¨7Ÿ<~>x°õ°ü/ " `êtêvÌ\zöìBAR‹§µ}Æ/…0ó~—™ÐI<„¬Í\ô/ÅEûÉ!ÌS¤å`{¥‡#‘UU‚#à‘Abý¡ð£¥ï7`JTâü,iÍ; !x/øìsÅpâQý Ó>¯†¨œy–Vxv3PÚM'10?X036ï äI-³¦*–µ¥ªBĵ-`¯‡W@GΠñy GwoåÙØ}Øùä]cÙþ¸4† û÷ã'eÐAˆNê _·¬ÊŸµ|‘ÿÂ}ûÊ“XÙ¡˜SCHV¸Ý\m“PÂV<ÉLn=)pf×U®R¡VœUdºÍ† ‘ØÛª–dPiåÑyë­+Ž0PÇ¥sÒvë×ww’Ä«ojÙF£JF¬¯­·~ú˜E¨°ev]Z†Ù¤£­µ„%j -£ ¡[àîB³{ÔAœ¼îåx½µé¼\ ®g]£ÅvoRÖXqcÐõ0lƒ±µXÿ+ƒ¤2¶•W¡ÒbffíÌç2dÍi;Ui $@Ê"i&¨4Ƥñ)„*ZIè‚i*íBº—EÌC±µˆÒþ\a6 cA›Φ¸Ë¾¾” JH—ŽÅM5II(¤¦ƒb•wv&)R•¬¡)‚¤š“Iø8Éb@È pâg 33 ¤¡ d”Ãý>Pw÷­}_Ùÿ©=™Óãóô9Càè¢OPø!×wþV" " ‰ ÐllBm–£UdBB±‚0Ì)$2„L5ûÂýJQ…Q¹Ä÷à¸H%VX1LÒRªu=Ì8!¨tçÒ 701Ì1¸o: ˆ&‚x¸Ûºè‡wo;;§‹¬ë»Ž6âòÄòbîñÕã»±¦Kκ # e#CƆò¡P£Büx”r»DSì|<ƒÃòà>Xd´%|q¢~tþÿ¶ºt„(`p®s‹ÅÇ[ ¸ÔÓ©„Ï)lèî|¯ÃWÖò#Š…Ð1ÊI@ÉÛF$vçÜå×y‰H´¿–S¨“¨ž7”&&ºv{ë].®¿ d‡·ó(õJjEÿIQa9Up%Ér[h#´IVh¡0 5©LkFÁÖ°A³ðC™çåŸ:Ý®(‰¢’žy˜V˜¤Øþ—ô›$’‘¤à$Q~NÝ4»9`ìyÎFUë'„›ƒÀa5›Ýo­Ä6ì.MåC‘§XW±kÛƒÒ3P‡ðò »t}縂 ¡‚Š*€†|§ÄÁ"ˆQ™Ò»‹‡>aá–‹Ã^ƒþ¿xdÖÏÿÏ¥Pj‘I­Q5u*¯‰§ÇÏÚm)•5 7¹FúgÒÒAJB¢EË3&E3 W3>cÂQ¿N“˜‹ ñ‘,iúeG§Üø€ùôj @Ñ+Ü1€©™(u¯zf™®ºN²ú‡d”!M@¯À1D‘Ç=h|qØ„OÂ"d$96s䨅<ŒKíÐÁ°ñ÷-«ÍPg#þ3'‡‚Ò”F÷/d~E81ýø×¤>¬cÄ^ èÐÔþæ©Ê’»{Í:6C˜µ¬w£V¬›¬¬ÎÏèÚÇÜä¾McåLò09Ö°$£#?d.ŒÐ# Á@?²°‚|¤–|‡ýÙç-ƒ6™xàÖE€Ä3,êh¦ fŠÔOLP‘Ä=E^Œ JÞaõxI^VDH1°€Ñƒ2 ®ÐVxªp…üUË‹82´7Å!zÆÓe®Œ#Ì2>å$6õ-a‹6e•4õvÍ›ÐDÖN'; [±Žš£Z›“«Ú`QØVÒPËGAPàd²]‡.—0+&i‘Á9ï—yÍ`Ø1›S¸× É¥  ¥ŒÐÖNm­Q¦DÐÚÐÊ’™cYHEƒ4i­I?Û¹G¥®'–<$,†Àq„ÕW“\^ÔÍÚäx4$s¹ ¨¤ykT©ØÜ+‚I ¹}Ó“ˆcri9’ña8Í¡¾™Â:S ™’oEW\[™áôÎM ¬KlŽI '.)ÀCÒ¬dÆHCr üÞÉ®vMדõû³ ML¤ q®ä<Š©h…mÂ…¹¬ÍW)Ja5/R46Úg⊼d aªerMÓOÎÁb@y¨æÎo¡Q›{dx< 8‡J‚¡*¼õܙѵ#÷A|½¹3ÊS½<î õ%#’G×ÝÓ#‚sá/Œà礈dß:CŽn3Ðàøª,B숃h—AŒIÒ.(à 8n¡ Ò.€Â C $H1N,A¤6R$oØ‘ˆˆE TBнŠmq]Ž3d’B,O¤Ät…T|kL–gyÊQÚÔzNäöDŠãӉ혠óµl; §é=N_ŒÜ7Dt‘ÜêÃyæ¯ßó£óþˆ…¿5oå(”à K‡sÝgT„-$€rû¦O¬CëúLÀ;‰$8Æt˜èSC™€î1ÀýR„Ä>ñàÿ)?Mͬú~o«d³1%‚ÓàúÚ3åéfćµè×ê?ÇøI’±«Ÿ«,ö¹Ï™Æƒ'½‡ò¢ ë<¯¾orB#BL‡¹tX2&"?ŒªY«¡ñŸ,V5ó¤¤z;Š´AÂ$¢¶› ‚© A ïfQ K0ÁKQLŠŠJÑbÖ$߯»EFå«;ª4|-ÄÕâæñŠÀ¨L~‘ÄRŠ4I61 Æ:(†H£}itH+›fP²¬˜iŒdÁ† [*,S–¶‹MÍsxÛmr×]ª ºÛË Ø‚ ‘6\X0s Dí2saä–xûf¹^š³ïc/w¼®÷ðqò{ÊÊõ«ªLlneÌ;þÕ ð}²ƒ8ÝPjóyÅõ`dX²m ÎAˆ“â%AΔ°È3lAiù^õßÍ)BGo«Jl1Wp&ôz{qåÕǸ\ ž<œsiB [dç &¤i¥(ZT}°-O¬Å@Ñ4JŠ5­âÛ›j‚µciSgu­rM²¢%²–ÛT*"d©@R4 K@TjØ(ÚŒj-¢Ö2r€2\*JbE)B%T ‰QÉ ’Œ€Ô&H†Ì“ ä Ðû³+ma­E[ÜÛETmr% Eû$-T#PP©ƒ´ºš H‹#*”¡Ha• 4 LªPªpƒQ©Õ€jÊd N•©E¤C$HSS$$„ÀÄ%™A6Æ’Á´!qÏ@•ëŸÞº/Ç™BªU!4•5̈`*‹ÈÞ¨•UˆžR"YŠ#JäR@äsCR“Qˆ¤d„i #±ãõ}_Ìf6Þž×A­Ðcl  B¤Òÿc*ÐjQªSmk0hÓ·<©Ha”kŽ0&Æ|·£K‰™„$À‚ pHÊÅóÊ D¨­ä°oœNQª-´Š†Q‚¸h”Ët@긺T0ÍÑ9*˜¸”Áø%¤Ø!WbÜ8&‰6  Bw •Ávw’€$?n …Ä ŒÉºLî!äªÅ…ýÕS ¨#‚Bf[H䉤ÄÓýâFB0­[D»“BwöbJµ,0k H°“NÄ'µ3Ôõü\]0&·‚±ÉXûÀ÷œu‰1VÛõfaTö¦%)Bct=´¦ê‡é½ LÉœx{»¿†NÓ3=W Û‡›?gËY¢ó1ÿƒ\Oç‰Ey‹™•>u³ ¹.= y41ŸÈCFƒ±C Ÿ!l[´Pò lÎçï.C!J*R”^2”ò6BŠ ÍŒg™Östæò$¸v›'•P8åÄW-ME¥Ç!è½ó bJ€îÎîí¿.üRv@£DÄ3¹<)¿"¸jj-.8@ž/ˆkNé3‚Œ“ÃtÏÿ6›¡FêЂX*ª™$Hƒ¤¨˜{†˜§ Á“Pâ!ÒuEœY h'› ˆ£d4R£œ[‰;˜¢#s³}¤»àj› W 3OËHn7½»¶o³Ính–©¼Ðù·zÐØÖ댲IÉ#.¢oW)rª˜ÙG²ãÍifiãÖ¦gjAæ÷W£.µzq˜"Jæ¡¡Ç#Uë&~ü.¦ž³½ºÆüúç0â—ã'~5ƒ"i¤Ç~áîPÙ>)Lþ¤#kT!‡ò“Õ‹9QÌdÈꬨ*a fAˆÜ²‚]`¥Ó 5Ù­´ˆî¶!5cÍÉ-m³Ù+0L3aŠîjÆhÁÁÌ;jªå‰i˜HcE‘V#yÖŽØbfÌ 6r& œÀ† ã]ƒ§ÎóMîNi-†¹Þš³tßK5=úJ<6¨Øl}Z5ƒM<(ÛRR?nèÇ+/¥§ZÐŽùY¦w‹ƒ1€æ¤EÝ}ô†Í-j-æXeƒOL´rÈî«°ÐÆÃOš«©|¦7L Ü X›$(”‡šMËSG&ÆpŠ"dL¬½©ÃEhmšÍ1Î1“)w.l¦Z&Cl…Z-¸ƒY)#=+Ó ÞŽŒ˜ÑaB~vR0ɬM†WqdóãM›Ý"¯lšzF<)Ü»hÌ}šÙδibèÄŠ÷ÀÀÙ|Pã¹¶Æ’m&Þ¤bll ÖÐ=á0t¡Ñ™¡Òj¢c$Æg2hhÞÌÆm;\ÕˆHtMJåÕ™”€FÔ(Þ¸4ˆƒM6òÛ²Lþæñ\ƒŒÒwŽ5™¶m›É¦°’-åUÛE¨‰¼;ÆM˜4T:TÛ ÚÓƒÌÅEm«bàTBDØ3›˜cµš€B©©ÃÆÕK‚: ¦3t)&ƒL¨Ü-OP¯B»ºt4ÙDɨÁÅE0zYq>ã±Â¨i„Êë> õ¼Ó›©Ñµ,¦|Àm%Î1ܾ:±pµª“ d“#Q˜Ýçr󳻨æ¹ë·lòŒÞ7š\ú4jKDÑ™Y³C6ÖgVÜëynµ*©Üv4±JCT29s{lmWç“2ÅU>_A ˆH›ÄÆß»“F:oeÏ£˜Ý°XÐs#>^K@”ç™9@ M³¼Í曤ø±Fh3‹¢(§MÏGk¼?EFtý0‹´ hóžq¶Æeƒ,@Ù`)Z î᳨·È¢0*‰µÝ˜BL»È¡À)‚")é­G|s|Å qG0šóíÝ݇}’ðQ’Õ þÃÎÜVSƒ·~hcñˆÄ‘N}ìÃÀ×T”›G ßœÁ<ãÜŒ³ ˜öù‹Å¦rÈ5-¼vJ í¿VóFACüïã ÌçGíܧþ$á‹´"øw ´'YH›¸b˜2 È@°»„¼0Ч‚hpÔ+È!M·GcA¹U(âœÜÉ :ô…8q4®áœ(¥,%ÐÄ*€Ñ´Ð/³"ÝJ !NqP¿ϽקÕN¼v ™“ÍÜ^ã@ |+ ÓL؉Ì0bpÚ ËXMiF1ȃ $a­L0ézH\? ¡ê@#›köÈg/ZòãGfPP *FÉI}Ž‚FÍ}.ºM¥òz^K&¼îŽ[¶¨ ]³u2°ÂaÖšrÖ[fÿÓßòì4}dq3.<Ì·À£M¡¦&3lƒ5ªôüš0 žv„ ˆy°|šdò/ÇÌ´füÂáª4›£ÎóÔ°x&ç›=ÌL¯é`'ÜvxCÈæ`©µHx2..8„ÏÞ.t¿YŸ7ól:ôõ'õvìn=å i€¤òd™]¥¢iB¥R41©CA)áÞ†Æú2r1qŠl3 ±N–&D‹YUT¶AXEK—x… ¡ß€2`4†Ú¨ ¢4|8 )Á‚l+K†·aZƒ¶VS-ï2ÌÕ¯&J«p„)F`S ™G’FŠ7`<–½7˜\ti¬"ÝQ"Â(E"RE–×$nºÙc•Ö;c íU¡°d’ jÔK']ËdÔ•Á´Ûª9ØÙr\!an=U]Ã0š4Mƒ™  Ä~sI)”Hd|²ŽË‹°”¶a2B©)˜š±Ѭ½éÒÈH‰¨„BåsoÕinJ’¦SD혱õFJUÃ8B¡¨ÝºÉŠâ_‡uçt¥¬F»Y{xž]ÒµÒך6½˜c¨–L''#̽zSK¨)–a^¾›vëV¶M<²”†½5ÊÍ”¤äŠë«­+n©Ì"Hãê ü7gojáÅ0¹aæ–î8Y–YŠ@+ – 2r™¨ª„9žÔÞOZ/Ù%KÙxü[IÀ:W°$»¦$±r%” ê@&‚røõu¢Ó‰!·G„ЭòcüZwê³wå€CÛxZý³55A¸Ýô ’Êê•ÀØ|ÚûjÞêê“2ì^^qzh¨$øì!P4L31&#@u‡ÛBR?¿+¥Iråwv“h¨ª£Y+YJ%-¤#RbÑ¥3hZÅ`YͰ²¦4j´›$E¶b!3TÍd¤Æ¢1¢’TÖ+fJHm²HUšlS2j"¨Ë4)«dÛf–MDµaE%2V‚6mFQe22¢ÅDTÊ‹ôÒÕÍWÐùŒaÑ›‘%†Ë&JöqîìîÖÐù6ìøùõ,©Ô’I2P³mu׎™$’@ ÁUö^Ååò˜Òbz¸ ¢.ˆ´YF)–Tff®<‡aüçå¯imø¥mQX„‹be-¬¦·nÕ56¸‰„{êGtÊ6¡NÍH.û‰"°Ø’ÐQµj5E¶µïvßÙö‚Š zÚs¡Á¤ô­¤”¶ûƒWÛ#_»º£I\ÎFfý®ÛÖáˆìLx1Ši}}ô„å™^;jœSîÈPÓTDDf„¡ê]*H Ô  ÃK´4½½‡ÀùÉŽÃOñ¼ž òHt/Q`tI9Ê{&ŽzÍ>žŸ†îFsœò4‘¨ƒòU²y•†d j(P;áPùÈïP8ñÔyCïOÖ@SiâJ >|Ï æsá)ØèÝC—äÄ"¥‚i%v‡¸öLz  ï}LдUL­+%Lœ WQWcë“Æ1nâŽï]‚„Š)#Ifà– ~ \¬šsŠöñ/6Ý—s­;¬Y޲¶Ý¥¥E’2‰)ÁÈ":Í4´ÐMÁµm©à$Ò8J4hN¹g5U˜à"=Gyòõ»mU|«É´¤5BiJ®…µRaÛ¯+`²!éêår852A1aQ]$0€ÈäM\*ÌŠ²ƒØãFÚ*Ý("‹ëßjM^¯69{F12¼¥TrFŠð5+ )TRå¤/)@ Z”`°´)-K~­=Ðd`òÚÀn-²ƒ$Z)¥FA@éŽ g U³† ÌnŒe ^¨[´f£x¼õw¬G«§wÆíÁ"÷Ü-“)-&žºé¡®W^»¹¯,xÜŒ ܇§iM{^&fšb- ëŒÛŠ:Ë6êbNc"–Òí HolNÚÁ36 q1L F4ÜÕ£&ŒÌ ²$X]¶B&I¶‘¶@†°i<(*i€ìD¦ŒYBÅЛ`é*ŽÒ D ‘†ŒÐÅ*h/­-:´›Q¦ÀΉ¢a&%j –ƒvœa287vÚ*Ç-ž)ÅyrÅu/-{çV®D“ILÉ"µ–ÑZòººšPi&ËÝ6Ójm@t7ãÒ0’;ªpPtœ§qi6M‚d0 ñ1ÞÔ×N|àÁKܰSAªI‰¥…R”fJš…(Á™ÓjðDÃN©Qr˜­JÆh´°`…’!•0+ç•ØAþëÅýÖ|¸§_éò`4LK°øŒ”yŽ2ÿœ×pÈ"²*‰»Eñ³CÞ.àì©¡O =).gÇŒ-†Û¤¢¨`’ɱL–—!ù7ó´FóèŠwCÕö\†‰äiIUé}u}þÜÑ“A÷~/ìêyì»[´Ã:‹!dÉ©ë~™­qÂ)VøÙ7°ÙOö‚áΡXts—nš`‡ÞI‡GMß!œ–ìÓïæÌßø=\¶7»{}™ã:‘°»Œæ×+vñ¤»0Áðdžú«À½vgúÉñg²™Ø†ã¡ ´È@’ ^‰¡½/ví ;MûÄC³bWfw±WeŠ%ÙœcÂEz"?¥¡°¬ò×:öi¨à‰™:‘³;ûjìÅØÞêlŽe#MnümžLçd ÞG\‘±²Xh­Gw4û89¸wh†Ï{J&Æ ¤{¨LtóÈQ5dÄÀ-Maã±z`F„‚Èoì¼mKL&Ì­–áŽ/–ä¶1#êuTc~W¸ê]6Öšo i˜ˆ4Z6Üêi `âiRlÉÒo”è¢òe\˼I†Â’ ¡:4áa¿Mo„Pr—4#0gKµl®š/RÄ"ÁФÿà\öí]ù3­?gÜß™±IïÞUýr+ RIïÆ}☊™¢¨¦JT“éóÕO»[†×WRu~ñ_Ó‚íä¥ šìî×n²¹®QÔ%‰¨>±NH8 °„ç—i'Ñ k=ü çÅ`¥Ü¢ÕU 6Rdeˇ#a$c$Y‰ Àˆ&-%‡ëÖO7l>“YüHEë‡öZ×øÅî×±d¤"", a% ¥Ad’ M…E£m6H‘†ÃýåÓ.]‹dÓV”ѱ5w–@æx'UÜò6qTÏ4zÉ7#ÊÙn^ßë¶8hʽ H^· û«-‘¤Õ€uɳ jG ’‚ø°ÙÌm¬fƈÊÌPM÷ÌMÇt%Ò¬0Ì M58¬Øw2áøƒ‘GkÁã34X;ç9ED>k!¥=$wf!-KŠ€‘ÍÓs”€™y½ˆÌôÇÊðîìS†’)%*‚Td5E™RY¡³ -+0–û¼ÒÈ‘m&©*Ƴe(ÄÄÉQ-³cB&F¼Þµ®ð1fn¤¾OVNQ¤£¹Ñ²ŒüfŒá¹\qÅ|ko‰$H#ÐFÝ*€u¶¤ámà¬á.’õBãžÆ0é™Cöf3;f/T9f'«¯–6‚(% O;Pª'&ÚªR ”øÙ“g7 LˆÊœÒ‚„u Ù´X û‰ªÃëEªÈ"2GýzpìäpðåÞH¦¼0MÉ…KÆMã„ñ$xε‡[Jí"º!xåÏF´'’yÂç.*lo#¢¨,;@ªàìl*?Êù!©óŒàwÞÔ”6<ª©p ¢‰„hï{ÙaXAF£@‰±¦Û_õë7·óp3 ÞtÊÆãeh“ö¥û²Úü,”5« » lŠ*,ÝT1§ŒíÃÊÅ=¦žðâkOz‘U5WÓW¦þ¬­ø¯^Ût·#hÕs&·(£V‚K%T@Ç€i  Nb9Õ¿;z Ë\%ˆfTá)†$€ù´!±ÆD"SФ ØHß—3Õ¤°•&i;¸šé^yÖ–î¼ ˆCHAjÁ| Cce<¢àa¢Ö½c2¨”Ä­ø×UĈ‰Œ­IRDÚõݦÒbG©~Ší°Ogç~ê >såÃ=)˜ž¬NÜÚSŸG8ç‘Pí;y¼Èˆ¤i$ °Æ˜Í Â&™£B!D#,A)Y‚ÊKLJ£`14©$ILÄ(ÒF)%3a”¤˜@ŠÉ 2¢LThÚƒ*+&Ò¤”˦m–©¬ 4†Ù™L˜¡2™¢,h ¥¥ Ò@2ºd€ðîêè*ˆ’ˆ½Y•LIKÞuÂvBP˜ÃD&K…M!’>¸”5©2%Õƒ) ¨¬…”²EX5d[N ÷~¬*]È=Y®ý—„âŽmí`¦bÌ€Ómdܬ³›ËGâ§)A0EhFš”…ä„1Ö¸+¸BÇ$ Àƒ‘À0U`ƒqïøé 3 Ì3=9gQÿm´ƒ2怰÷{þ­T4“´1aôr© g8ñÃ~§sÃq^FQÁÈA¢Ìâó&[€zC©’0²’h…$„•$JÖD&)2¤tÜÀH¬%Í50“ã%2ÉF• QQƒ=AÑÖ7”ª±á˜bÇ WJRn®þ›$RÍéd´#ÿV´SÀÌ22B‰$,̈E‹ï…*8dÆ4Ñ£Õ.%èRµ¬«ÁŒuä"Q%ÂÄ$Z†’Õ‹F·¨+5ݨâi³\l=bÑÈuˆ.Ubò‘Ë&(µ˜H¤ qš,Lȇ1Ș5»³–ŽFøëgMáÈve¦’ˆ‹¿0“€!@Ö.Çøª“#Zk`¶4Ò  Ÿ^°¹F8I&r–0á£1•¾  7óqî HqL 0QHí·uŽj`ŠÛo)& Š‹úH­à!m¢´kXç™Å zæÞ–¨Î$²c’"ÎÞº½{Uâ*÷ÝdÂS;´7`\š,wØR–C"o¹…ϧ§ôJzž‹·ƒ8fÙ½ct­ Þñ?OòÁ#û‹Í—‰Ú»¡ƒSÉ2ÀRNÞ;oß›dÆ„oYš˜NïݨŒCF„Dí‘B¨UÀ3qXt½¾¼êÚ·W”TÄHOÃÔaø;€üD.CP<¬Y†¼W?bäjM½-»[øµùTo——â'”Ý:Õ~íS}Øž¡³«§wK»£dƒ;—Çy^e&¤q¶Ä °mFˆË2b¥…L®Fdº±ÐTÆj ™ƒQïÖ• PAçHÑá,¼ÏÓÀ(éc¥=k쟊‘Å}u!xO€úÑÛlú%JP)‘¡hìï {¿ƒ(HÒêòFšS0C@’³oÑò~‰ôý»«ÆŠFiIÖ#··Ói#E™1I {‚m¾iR÷ûìá¶™™mX£¶ÚuH#IHì@# ¯qˆ¥(jˆånè0„ X€(¤@Hc5aÃK½;ʱZ«Ï~^¦ÔI—F#.35ˆiM) ›@s¨†ï}_wÓñMLŒԊHhI$FI|íöÖû¾WØIàêÉséÑ‹ønwÙ²›þ!³n·QôªfÜÍ C‘êkí6{7¾JCh@’9"¨hfžÓì@F% ?eTtqd9!„î€gHò•1”û8áÆ j Ï!ŸRôz x+ö™FJmÙš'Ì2 ø¤ÑÅ ¡¥ aÚL–ªf•­k Ä¡u)@d.@ã1.@°q@áj .`¤0 x `ÏÕØ9˜ 9]jT%™%ÈC‘Èð°ö‡nåSÑ$/¼ŽAÚ!ˆ0)•$‚…£j¾Þ—¬2 <Ÿ´ Ë —¸/!à¡òA×ø¿Ê•™‹6j°m@bÚ‘™1ª&ÛBµ|{úóˆë«#¦“ã*óÉaêÓêZ*Uxi5óùNe—tÝ-ÜEQa,î.(wö)æò»Çš7˜f£Cƒ! )˜œ3Æ8Hƒ®œØ¦*€‰¦––XZ ¢G¥í{¯8C‘—¢‰AÔ±‹¨­W¡QQYH¡[(2œ}é„zå ( ÏV¿ÐìT‡…4Þd(æâ²Å1 l?U|žTCàî¿,úv¿Äç× EVØdöNÕ^s®t—wyv7/ ¹·Ôª‹ŒKB”´@øó ¡CÈyºÛªÀcHZp ÞBú¿/·ñÃEvI#X1!a+p„pxÌÞr™ã¯^¯^¬p»¸}Ükž× …ÍÙVªÅ]Åc«ˆ¹•qœÅH6HEj áA-­x~ñYùömŠƒÑdÂ>Ù+1Ap¶õ^(ž¤#䕎ê·É!Gxk†S‹EV-œ›q!Ö"öº›ZnèH4­–Z1¢`6å²£yÙˆy–Ù2ÝâzCÜw; Z ±¨! Ä”\ÑD°e9&$¤š5 ™ê7„è'£OãN•Ý…L¢ŽÌ¡W :2PË” ÉÈN†¨H åhŸ‚ø°›Y–K’e(Шpâ/Íñý×ïøgo÷ÿ·_á-?ôê°d³X`IVƒ—¯ì>¢Sûc,'ðÊ“³âC,‚“?›ù3ŽíkSUd/ª¯SŽ„ UÆDyKöT™)±<#èßè–WFw!Ѳ†ÃbÁC¸ÊÈÌ;Îæ.]Â%×{t€Ç)ÄìâE06ã%ÆÒÃ6ÚöF(m³ °;…™Û[m-µ3d²NÎØ 1`çJ°¦Ó ÉI”´)Õ—¥š8W´& MRd(V ÝÇ9áÙÞÈ» “Gµ°£ ×g- ‹äQ#|Úœí©‘p×”¨mÀÖ‘þ6„§’dÜm ëƒT/&q±›ÏÑp¤ l; [&®Ì(d€„Ç3¤/émHPahµ]{¾b2¾çÓW†Ê¤´:J0 &mƤÅa-ÕX;Å׌m¶èÆÝ5£XvMIýºÌzâ4¡;]BÜ’IŠ[ R«’„mÚFh®žTÒ a4nO“8fá³ÄF.Ï5ÁW<¨®¡ÆÑò;âñ´f³Žº¤ÙÉ.ÓÖðç®.ùŽiêΚ8eÕ­ÉZª’9º:n’n¨+{KCu¨33Z=/—ð·Øi*VÛ¿­ÔùÉœ‚ü,’É  ›ÀA8‚ñ”Íed"8Ȧ¢Ç%œ†ÿ|oÍ;Û§Àƒ¸)p_>Ù‚@"F ?óßïB…Ǩ¾M °Ì8õ¨|0í6Vy˜ãÆðî´Ûˆ¸½` •`Ì‚&(é¼èò<žNÀV8ËXš•ÎØ ÁC¬ŠF!Ô9æÅ€Ž†p¸èØ‹€¦÷ǵ«4‰£·;c§²¼’ï@V~‡Ñ€‚ˆY µWùʪoØÚ!¨¾/  œµë{ƒ®žhuílÿЃþý#Þƒäxî$‘äTÆô‰´$•({@Xƒh4ÖÁŒ… pš#’›ªšähà‡r°3 Ø*|A‡°åÐ#¢7² [ØÅRMŒ̤[5ÛB"~ $'ˆÏ‡ Ë /ZH¼âbÇX†äJ¹$qˆŠª6r9~2ÅšH¥„ @kÐ!ê1ð‡äa±Ä0×€Uoçôð ’KˆàL:?z°!lÂ"Jä5 ÚïߥÃhÍC¨×_Ñ „(˜ŠR¡!`.±|€'Üð¬?¬òן+•í$1GËVC´è‡ Çed,üÎ XŒHÂT9]‡à˜>?ÙùÄZqHÆa<,`›Èy0Ëk%?!§nÔ +΄(ùpú`³-Þ˜cDy”9©ú~@sëøÔoñÉò üôüE-ò’d>FŒq)Ö”É@óüb"P‰@­£—ŸÐÊT”°Éò$tGŠÛÔŸ·ÉKM4%Ux¿ïÿ7áúîÿìÿäÿýÿíÿñþßÿ?þß÷ÿöù}ÿÁ÷ÿÿÇÿÛÝçÿôÿÕÿ§þŸý?ú¿ÿ¿÷ÿô÷ÿÝÿÜÿoýÿÿ¿øÿðý?úÿæÿüÿŸîü_7ÿ¾¿ìÿ¿î~ú¿³ÿãÍú?p& ŸÏI_ù‹ Y÷ô_Äþº‰!!’ "£LÒK½÷ƒmË ¿¿ÛÏ‹·Ri'ó0²ÔG 4ÂÄÌtÚ\‹ù„ive8ŠkíÅ6609¨šRŠcüf’²åŸÁ‰TgqöqÄ:g0ä¼à¯ì%”‡aÁØtþJ‚´ÿhJ‚(?˜X?Ä<~b¦„"Òiidühx±C{¼²@žÛ>dNö£Ã¼7CýÚj–ºЬ{§7Ç^j¢­E(ö½aÔˆôš2¬”w$ìž´ÞV“–€a{Ý‘ÎÞ„'ÈöŽÿ!‘8Pp2›“xXr?²O8{ è¢ M{5ÌŠvˆzÈȤ¸'d”ÿ¢ˆyÒ1¼¿ƒÅâ¾Æa€ëN¥^©U°ÙÙJm'¥ñÐÌðÅõ•½Þo&Ûã­´™¨Vh¤j…#‚ 0ýÛ Ne4P §9f3œQÑÇa¿ÓPâüs†ÙâAù#¹¬š?ߊÿ.9¼@d:ºÜ ‚Aòù’*Mgû´Ð@þóÚª€ˆvzÓVn"ôƒ—" ”¤â*tÅ<±CzÄD@ÊÒ=´‡¹'È~ã뺣i¡<š4×ZÑÓÍ®‡ý¿öOñĈCÏ ±ìÅ=ŸäÒÌÊ J«ž7„±Öê¢`BmˆJþÎÿ´Ôæ)¸2Þ‰ÇÐßî@Œ±ŠT,.Ü AlZc­m„ó/„U=ó°ù×Î+Á÷s¼ê£®õDŸ;l/©xIUŽø_Õ«=8«stØ4ŠíÞyíä»åyçk¸÷»ßž^k€[ºÝÀyÞ¼çç<§õ]׾∈ » <»¢/;€€B€"½w¿;Ê\]Þwæã»Ï<¼ã‹nà€€€ ÷wDD$^w¯8¾à½î耂ó¸<®àwn÷Ø Ræ¯ÐïÞ¸æI$?:4²Æ(Á´Ýw\îXºsæ½zÕâÅWDN7ÿqï_¡‡Ð§¥p{àØì8L=Ø£þŸ‹C8䨆”Î@@4"”,·Ñ.Ah L2•p"ŠDŃÙ'DTþNuóhõkm¹üÝîýÝëßú^üß añMЊ2P`eDI“’#l˜¢–¢J6£m’M`Õ‹%“Q¬BljÒ!…´m‘6íV¶»°šD#RŒ"Å’”ˆš4FfM)3 )1f4™)˜cM0Æ‹MšYSM“FÃI†E Ac"m¼·ížŸÒíh÷JÊ!ë{·mÍî6‰‘ŒT•Lm±}óîËÍT{ÎO&X aÎH1…æ}ÍÀy‚zú(›Á>e Š<ÊÄ Ž‹ˆ$ÌíÒ.·»ìCrÇÑòjžÿ8#ÕSMaÚÒgdýS¶AIƶŒöh!Ç#ý<á ×[ 2¬&ÐÛH”oi(ŒÔ„V$‰Ž–šª˜L,<ä¤hðæóf ÐÊQv!±ƒ0À§D0ìhX3 ð*`Ê ØÍgb )àäÀp@£€ÍŒØ‚†Ì:°ØyÎ͆ØjÑ€jS Q¥R@¡]†VÛbo¡EY¡ÃÉÚ¹›cÌ/yž4±ášžJã£Û—;!>øBÅ äphÐ*2Pâ&Cwjâm0½¦wÒdžjxWޭÓ gU‡VÏ`¡Ì¤3}d1¤TÁ„b'ÍBXœv£Å1º¢f¡¦òT«F)mÜ–¢0]™†ò,ª—uh¬±±¤Ží³x`ªäjÐ[T¹s …$É»™R –uJ',„~(®yÐf†ÂÄ uÄ(.f˜7·”€u„eÊù™^Nù‘‰ï&-Í5äŒÓ*}ìcnI¹«¡dª¨ÆúÅÆkOEl’¤Lì4GÝ­X±'eÖø–àlXc[XÈVA„TÆÉã¢áªPÆš^ŽW&ÎÒy’ ›5jÒÔCf†$Q‰´»ÝäÛǹêã¹ØÍH!Ó™ÎNåa–N.A©ÆÖÖ³†!׊ê+¤™:03Ч0è²æuÚ[»#×|¥ê6’lñŒ¬çW™kV¥#‘ŠB67;¹[]×\‹wvö玞ÕrÒœ®ñ€ )©#³£i e(ÑâìFDÆÜ‘1átÀãÀ•B†Õ­QAFtà‡H<ˆFAýÎb’C- ˆ¤õ‹Œ£k¡M C#YÎWŽ¿=+SLÆjˆ˜`A’: ¬ 6›4Û~]L”ŽZšyã$ƒêÅÞfœÊÑßÊó×^¯Ùg9ÓEÍ}«vO;ŽÏVYiF lhš¶ˆG "²­¥ÒÚÃi5 rmciÿ§A3A% ºÛiÄ’دkzp×]z®H®[õMÇk¾ñÛžû)73jË q;3ˆÑ…&Q˜´Î‡aX ˜dᎆd1Švº®ÕÒ¹„â»Ç½A§âcUÈÚo)h£Â2$lÉ[«jAtT3t¸00©ŠÅÄi¥¦¡)F®U©Nùļ. ¾]ænK‘+!3öiê‡À"é™{ê ŠÀ~ÃRgœÎØ#ÄÄÆ3ŽàÁÁM¦L• H÷@gc'mFVe A¨tvL’7xR´1ƒÌ²HÇ7[—ñùÖ„£MWé\Éx‘4n$i{bÊQ™‰±å#M™b,–ÆcbûTØ1½h”û fȱƥP`íM”ŽžV¥Âá¼MÔcšiJ4˜X"bÒ:¡Ú‘¬q½Z¶ÒšŽÈnÈÌmVŒt̵ƒ¨ÓØx´ŠR%ÀÄÄ”´í̧av*H­”ZQœ£;¶DÒ¨ž±ÄßJ n"Ž)‘ˆ„á€J@ðÙ ›Üxrïh@ßw÷Ó†`7¢†Šc_Ès{cÎ:ã›ÓäÒ9Îp´,/&³Hƒ$S30cdmÉ +© z18ž¦e)A¤¢ƒ¥GÎcS—›!µ@Û‚ß7µzõ»ÍR’*èâ‘N$³¶©Cmû«ËÇiÈîKÔ¦+–ðŠ3sΆ¦ƒzöŽ”ki¢ŒKŠxI 'þ°à)ñ7S`€78öiS‰Áe€4 ÈÝMÔ͡҈XiÆn8C€'ðŽ‚ Â^V/ 9 î:8„º4,DªðQXÜ!rFQ‘àA&˜ ‰‰’MaÐÙvCs5¥eàRhÀ”ÇP $£‡Ee؇À“Dƒº9.•4†Ÿ#‘¨YÜaëÁ €@6 ‚°ˆˆb¦¾^¥!Þ^K§:îèhמH‡^¨|çVÈÏèËÐ`|ÞãºOY¨dÏç;­MÈÁQ0ÃP|@‚]d1&F,°J³B%£À P6W˜CáU&á¤8† ¢ðhÖl 5δðµÆ15 H!´n"ô 2¥bH†d8ÀàiM<àa=q²P10€¤~²>QÜ¢’tj\y Ó­š›C=¦8»óÊ :pmäù·õrPC§.@hÜ8'A×MP43&ƒep¿ðí~·AÖþñ¹£’’¿_uïúwÖëÕ_ž,X6AJC0@øö½×5G`EýÐ[á1¹·JæÚ¿_²Ù5‰ÅM›m6RÚ½_¯jô™‚{…ôÑ!K2°$A?{ÏAQPÐÖê{È'³‡qÓFîæÄÓš¶ÙÜÍúáÂ#6X2Ô/©ÿ¦˜’™˜š3[j%JCÈ÷K'Á—™ÏÛû¡÷†mû¾ËJWwf]âÝ¥ •N¢\à8 NÞ*îåëÎ¥axí&éyåvÛM{îNq² ²6ØcƒNÏÿÜHŒuÀÈ4“YpÉÔœ!C[a‰ãDÄÈo&„‘,wu*õš/‡®®íÉR©ŒT`⑜ƒtÔ”ˆÔn)!€¡b´ÔLs®´Tðÿ†D™XB‘Òb0@Àøü 'l`àŠn´¨¯ñB}rÿá¿/âüGÔl±Ë¨uùïÁôð7ù¿xàš“Ø¿ö@ayöÀQIS „îËŸ”uŸ“þßVù„>+Åö)LÓLÒ  aIöü¡ò…©§·œÝ>Ê”Á Ç ýÂÁDý;•¹‰Š'ШšL˜ªÌLòÙ÷°Ä<£´¡Í)´)QŽ‚ªŸ>jÓôF´“Âwê"èkIí¸ð¦¨[†=6’GÞÐ#äÁÁÈ|’zêï7?!ò0SÒD‚ß©·hc~žëQ£V³$LH²3¶cÍ75ÌR `b`.ú'o/@EÇ\*îPxÈ4'4 B#÷9mO·âÖ»1\7bü/–ç˲IyƒÒ}¥6 Þé½îí=Àòœ3¼a=„þD^¼ÐºÊΓºT:7šþJ«¡Jk³Ç²Y¹P'jë_šé¶‘³T5²jy‰ó\½aèIß~lIS¶%† É d¤Âd®fc!E#Œ®blç¨äjÀáñ‚#'¤óx¢bLIñÀ°åÕGëœxfiUUUUP¿Œ-ÙÇ—Òù܇°óð»²_ê ‡P.úª Ô¢OoÃRt¾^ªZªß@zEé‡7Ždy:”ùUã5´DÄî:’“jl²_¹ÓW3ªÆP‚ƒÙÁ9žpÊZé€c`P/4ƒÇrç,Qg£ia?‰ö‡U3Þ§–yd¿øž˜-ê&Ò”²„aY©2 bË$̆ŸT"d‡XKÖúÞ«íÞëÚ’„Dk‡Añùð}å(ûP‰ gˆ£lMþÕU©ÅÂY°#TÉ»™…I»ËªM^mèQcR[IR—Íuõ• ó <Œ«–ÞX¨£°Ô¶@Œ¦œÓØ<Á-‘\Øl?lMŠšA‚"v6‚Ô O×ÛçÈô¤l‡,YÂd 66hhŽxQyøõ¢¹:ì.¾¥ SÑŸÌßæ£!rg„ïŒ#¯»¸ƒº4€*” â^Mo§ ž0hxK•¾$)÷ÃÐô ¢b€RcQ¤1cj@¥_;Ôã§8Á÷(¬õp Çé¿v¿¶Š[×]n[TÊ]]ÈÝœîîÒd°i4Æ«; ± e¬†¸œu¡†ƒCôw€w]gëøŒ;8¢ø'ä0Ê F%»L„”|°»ôP10Ç`‚YÒ¯-0—ö|?.K‚Å £B"¥'ø¸ãƒ@Â{5­T…ƒõÌ A‹$…€) †D¥¤%TU´U¹µ®E´Z¯´¦ )‚¸¡°òö_ áȦ$âžR‚´ª`©éψõa«H˜Èëëj­Úýšý*fThSdT(%Q²Å$¯æZÞöòè)©i®í·‰‘2UY†ibÈ,±3VÅ JA*D,Ûè•BŠtŠlþ2øf ”4A„d$C@ÆÎ%C,@É@4 ``h0ñ—çæ©ç<žçÞÁUA{/Ær⯔ÕÞ?r@"yO~RÃÒw;=*I‚ Agò³ÄO©5ì®”“}=Ö+‹¬bõ¶Ç„ÝÁ²üpž|{E;6–Ž3ú1…ýò:FD²¨ Š„D©‰¨dVªñ @r%;ÝÙ÷~è}¼Lt†šT¡§eä ¹¯%Ûiä‚&Îm¯^¼»6ø©"M©$’ c%‹LTlÉ(Ô›hÆÄÍ¡m-H†…$E·î×\iBÌ¥¡…,™6f‰”)&–e©jÍEo)W¶22Ñ1bÔ]A—cFÇ”>ÙSÆ>Åã‹mÁ ”Ô$yFF2ÐŽÖI#ƒMƒM6Æ;#àÉK¹ÝÝrY»»‹ºçN6œ¸C€á5mÆ8Ôn&£†ÊAÉZ®&¬ X˜Á B† q€ƒ°æÆûHºÀ5ŒÍde`b„H!€S˜D"&RðàR¢8§ýɰÒt Æ)Š mÚ6RÁ—¢òò·":âžo<ï#¹4ܳ«†‹Æë•ÛXœ®Ã-8‹†aC’ÑJ£’´”Šd†H5@Žc˜Hd‘"Ðd% J$f%GP1AS]Ý`¬›^*ë»ws·jÀ’ÌR! ÚÕ©u‘Œ˜LŠ(ÐÚ£A(Ùl¶ÔÆW\jŒL,H ”€’Wø]bÆ8;ÉÉÄÁè'v ¼mN)m)‰ ­A¬¢ˆ›šštÒY" ÆPBF ¨vJe LãI¾ f< v)–GN€!ÁãŽã×-My‰ô*¼}]j…ì„áø¿ ‹ÅÞ¥ å)V`˜µ3$¯E#m¢EcC!7–áÁø¯Àåñ#fÔP¤¬„V•–ŒP,QÒ&ÀeеkŽ ƒ²5T¼XÄÞeHýT Æò²ÜI´3¤á) ÆÉ!L$`6: +PÂ@#ä?HPpØ•øSåêÛgàšÐŸ‚}z|Y×g¦æï„ZO>[—Z¯ Ïûh“kùr‰àØPðGql?3Á…<Ã÷ 4S‚”ìv6tzFÎÇ‘„< ƒ;†`S‰ÄÂ:\84¹¬£*!ØH}ŽÊ4 ­&¦•šB)’ÖjÍd¤Ê™J¦Q•I"ˆ™!T]H‚§–Ȇ <26ÂÛ jF&zìò<šãv¡ sØî%íßZ¬÷ Mk¸[”t”D»GCŒ,]i¨pÐü"^ÝõªÎòÖ‡è>ºS¼ÔæDŠhÐ Þk0 ŒU‹^ K·fçm{-hæoto«ÍMóâçHG'VyK|uƒ¯“-M®èoÕëÇmMÊGÏyÎ#ë9Z3{¾6M A`aÃ0éÞ0Fø_úoª$€†'ü?³°ýgñÖ‚Ý„Žq Ù„|Ì –3›ÁHÊ8ÀŠ(Ñ !ÍUˆ!™"D1òq:p(ÎÁnó«wšà°áGÿ.x„N|œX¾L¾xþžXUãÈõÅu éHT`± ôãÕï)ßQ¶ØÏÜÀÞNòÜà‚g¶‰ II!—ò PƦx<߯«·víJÜåÀCN:c˜pï¡7óq 1IÒÂØÁ@õÁÕÙ›’w@¼ i(Èo^Ò KhÊb™‰C)‚2aýcˆÙÕÿ=ÌŠ™ÜÐñ•Ï*ÁäŒ#Ó,ÿÓá ºœOŽ \`SÑ𼽜¤ì;Ec vuº’¥ãÒ …&#eÂÆ!±Œ(«oò^ƒ+=‹ §¯H{10‘ˆ2jï­Íʇ™ë~vª’ïxvù-­7ž_,=Ü‘R §ëÅOP׈ñDx} uÕçË(w$ɳŠÀ±å§aÈ2ýC"ä‘¥cæêd”ü :!‘¦äú—ìó”¸ÊK{hçNdä!Å©:6dÙ+´ÉÖæ Á¼‹/®>Óqô#)T>„\Š[&  Ûÿî|µY ±jÔ-ÜÌdéÆÁ ÷JÉ…iff0¥µ}6b›9Ȇ³¦²|úÈ’Þ-m(x‡v´œ„C.(¹Á¥&¤îù̦åv´«zÂu›[5¬+:Âiê·çTH®'¾ø³³Ù:÷ôåŽS¸9ò‡h[À"¼ÓyœXM$6›õëâuÒéõÈùN·°(îÞ“´<8Ü5Iñ¶¡`´‚vC¦pìdY¯ •= TÖ5¹’[±üͼ5Mhp€r9' ÆÅ™ŒnxÄC‡ŽÖÝØv,NcC˜Õ!ÁoVaÔ 0‡ ´@É›Ñp“•maÓ“¦ îõe2”`¡·A¿}©°«¨³”EŒãŠW̬é€(õ'¬/8ó¦m·…¹Š 1€àFp !â›±že"à ÝbL#Å+FJŸEl¢Ç-œ3›††Ñ£ÞõjÅ%ƒì¡y¦³®8«‰`Ÿ7݃ɒ—¡ìãÜîÜãõé=˜¦ G”ãˆP<ñ¶ñ‘Þ§L%Š'çÍG±æ»Ñ=³ÜÎã8mXG=óÆ·¨jA1%š“¹b|ŽvL¶î=LŸzaf¿óãUËÏ¿ZÆü‡‡^ èÉH6œZNỴ́ͥ¢"Sð#êõ^‡KÈ£ïÎM8C÷x8+³ÄìêØ^¸^f8AæŒ&!jNL+uˆ&öjÉ}EJØêu6Û/–í±á¸~Ì‘MM¢ÝÚÜQË30¸ ¶Ò´TW.!±‰&¦C‡o·ÀœÜF%qPvã´q‚íYјš”isyÆJgÞ†$.eOˆÛ­!üw•x×\¤‘žLöïNþè‰Ôœî– ;‘­â¸§ÇNÁ¶ˆÔtF]r^†ÞÇÊFAnôÁ,ߢx<Ž÷‘¹Àl"QI‡p>ŽþÇ—o{ 飯*ivý§C§ÇµP¤Â0î°'²Õ0†Ð(,aA™.ãÒ` ‘0¬8°I|iŠL à(ô• áH-GFêöP-H|í!ÉôAï¨âÝ•*vpã¹0kw­ƒ‡° ÒAW3–4ÂûMÅ&ÂlE½ÇÍÛÅk0©`¸Õq!Èa$ò n>p˕ƠêÄËßFìñ¿9êA ADî-Ƽæ*J3ˆÚe‰‚v—9‰æ'gx2þšÏ ÁjÜŽ=ÃoFÙa  TYk/4AÈ¿îÿôýP@OZÙb“‘â¶…ÈH `DN8ÇRíê€ ÄÀ| ¢x4ð˜üí<¦F{–ºE,¸5‚v5Àx½Ÿ-RÏ7QÒx^½ŸOw_I15Ž<—@TíWªá¨sae“‚‚žg¸ü¯ÃLšŠ×¾÷¤FÌd,\°• ! ñǯû·ù1ÒÐ.„i{CgßXvÀÝ/vœz{†þ@´' 9t$À@¹ø§Ú½½QÖB„Æ´6Eú Ñ­¢ ¬ùL5×FÇ—{zG±ãòòÍX¡ë yëÖôûXƘ÷ãËYº>I¦0<©(©Þ~›«¾ÓÁNn#5Z¾i̹Ú! xÀ`ÁÇ[.j0°"÷ÃËÛÏÆŽû‡+Á®]ïŒTuŠ,TäÆË‹ÁmãÇTƒ»±Ð'Ü›‡@ÀD›AEQ) Z+Æùåò¸tç‹'”îò’g”EQK†Òc’J+ûÉçŽD~/ëß›U4DU~Oàöjòñ°ëÖ4þâ=gä.ŠÍÝG®=†$9qõ_FòƒçdI”o¸|V‡&kqcŒ» eûλõ®ðíªOYß;¡HóŠ3ã¯*ÛûæŠúËZ¸J;Å¢³\xSˆ8¦Q”¡3ÀŠT S?Hu¢#°ry"í/ß ®$6’ÍK‹´œ„­¤áPÀuœ9›y¨Øo¦ÌTRC"Æ£À:ÎSd²ûú~¬à#:̆Á‚Ðí‰nC{C¸`\‡¦ÍºC8d0/S<ÆTÓŸŸŸê(á·Âƒ^`7âBÂhMPø{œ0ƒ&—ÑP:çÀ0]`}„¤_ÊøXŠaƒôÑ5ŸPŠ@Ý9÷i3ÒÈãõk7yÀÎþ]wåš$æir2—¸<¦' v_>çØÛ”…>&0‚Á’ÜÊdOî{´í>;¦¤QÞ7*\µ²ð9Á‚¬©Rè|K0`Ûf€}+¡›LÍ’ÌÍÀßYÓœI7·£k1TÊç.li¾Ž©Á“‘ïNcç²8Z‘ëÄ‘)u¢MUwÕàÍ:r`ïÎk®s|¦sfm=HÞ¢Õƒgv­MœUŒŒ5™2!E¢šÝðN6LM£¬U–¥R i.E‡¨©!N¤I3 (°»ÃÁyÄÇÃÐÆQ5¸b9ê;óÒço.ÇÓzÚÝI#—QõIÆï&¢4¤é!ÎMòrÊ]íM8±ðþ:0 p€0ж¹"ES\70Ä.ÅñúØ?8p‰ã9 .Bóž£8I°Gtú%¨ðyá/djÐYáÙÐ¥=`1‘员Ñdײ@RÝê#NÃM´±%ðéPá& MÈLW¥KØ=áåJÀ0²1`Ž)Á 'qpħõõ ƒ×2}º>ÜS&Ø6[Öw–œï Õ%˜ôÜÄIx21g¤–&ŠñÕ“‰´Â´‡ >×F5Úë‚ÅLçwFøoŽH‡1¨± …zy  ¨& DM,OX%Fe$­o÷¶ëIû¬Õ7Õ"âPƒ“J¡Ù®Àî:Ûë?£]{hD£àÔ­KDÅ´ºýWéÒ’¿RåžyACéŒÊšKa`¥*ULY´ÿýÝ›E²X4½÷KA¥Q’–Ø! Z ÂÔ„{x£Z©Ë@Ȉ4àÙiA„¤56•¦®•t´¥tÛšéªì¤‚.Ä"#âˆfå½Kˆ 4Uòi#ë}=#ß®rE9å#ŒŒfÏQrfVÚ¶°Ždo¾h%~<ÄõHä81ZfÀwSW‹F:ÎtÉÿMÛ\Ø‚¼k«Ð鹋Œ·:Ú¼bóx‹¼¡rBhZu.1©""‚lqÛLh–cˆÛ6!²8/ùLÄÕ‘CU’–ú7ÛR›KTl$ëãÀ5$T³ ‘«Wð9¯î+r…ƒ † ‡û#¡\°Ãα%ü§eÁòdò†;Š`DÒ¬f¥|Å`æ}QÐ#FI5¬@¯GŽÏ–‚KA†À^¼n€ÃèÉJˆŽžVÙw´€çï]ŽÒTÜþ÷€ªHMÄ«ôr6È “f^cÇàyÊÈ(×û¿5[£O¿é­6£°ís—&vª)ߘ ,Úø ôPºü×h*­+^Ú£ÊB1±iÃl‡eœ³Ðeõ•øqø×•=,ÞC1ëê:È# ,0Œ)™±1QÏ&WY„ppb^L¥ $cuÔÔ¥–6ÙšqÀSŒRHxnWÏÞuHº$8ñàyú€â)GñNA´9 ‘…çÚøãlÅw“óBðõÈ`è8ÛßÈÂü¼Ali~Zp_ë²}¤`wd?TЃ‹çSÝ”“м ÃGÉò# $ô'!Û,¤1÷žÇÙ=S²F!(P'ÓÆ‚Š0žcs¡×Ý®ù4ûú«Úw’Ð:ÒõƒÁ;rÈ‚bŠf(yá!„Ñ!9!T…v<‡‹¢Hv O¤fó‡UàÆ1Š …2 ËðkÝ2)ŒÒCÏÀOÙþîXÑ ä¯ƒ4nº(ÒÔ,ÅŸÄÏìyÀÏ_èâ*ï°„A,ù‰ÊäŸR½6CÞLn†Ù G¡”ìƒv.lüÒBHI n1÷ö±¶Ûmôˆô”-P¥½¢µrh˜=ÜÄ)° |Ó­‰)XÇ:OŠmžx7¼ÜkáDͺÔ<¤í@ž™A¬Ö+E¢¨ª,h­¤ÕªŠX­EhÖØÚɨЖƬT4´![F°F¶6¬Dj‹cm¤¶6*Öÿ5W4Y"ØÐRZ¨ÖÆ5µwéÔ_›Ê⨓„Ò!¿\ÏññÆ<Ü3f6r¡™]Õ<”T´ÄiPQkK[¸Ù(TbÄO“'ÒEêÖkˆkn©D’“¬óh  >û¯°Ì÷œU-,\}§·†ocHQMüêÈ—o÷¬Ä´O·Ä ÛqCï’ ÕˆüžhÅX /y ¡û×9ž»àèÑ#!¶›/D°ÄSÉ |P/"}7èBÀÝÖÒ´£»˜'§ u³›©¥Í;üÈW€x:J¾*¦uÁãSI˜#Ñ0š)Â2QÏ!óæ˜f£±CÙÀR=‡ÿ•?øR&"‚Cm®ÆÈ´­b]^Íå—P kÓBø¬èFWˆª$tÒã…Æ¸4›3ÁúùçH™y‘ûÙê©ê /|ûäÃíciæÆîîéÆ?#ô–Øðøß¾¼?Ȉqו{Y°ëÑ :ćœ°• ÒƒµqwÏP ¢*•‹Ç3.¦®³¸ò挾 ÝÞnìÉ›»»ÜÂjk5I„ËšÂêjëY_C˜—±¥æš —rjŠÉ½†HÓÀv}¼:;~^lUh33XÏrT-*”¨:ßsm“ûdR.ØlI¤ÜŒÔ&ò)K’BÒzG*d ÑŠ)¶âG}N ÁQJäW×¥ôö‚Ÿ¯ŒE=dä{NÍ4+y¦Í™ì'p€¸¯ß懄¨ýVäÙåà«x<¥‘ÃlOÒʪ&îÒ! ÃÿpXz]+ñöÔ0`ÉÚÑÉζäÄkŽCË6À¤#@ümÊÿ6 mÂa€|gÉRxÇ ‡ô¢®”m­fš¶|~oÔ}À ýŸáþ<ÑzdŠŠÄ¨b:yìrè{¸[½V 6~°ÒiÆ42øHF]<Ä™ÿ0V?ÁX VŽâ!ký¤Wù45YÎg«/*žxLu†ÁNo‹Óžpˆr7 µ”Xpí¾^`=CÊDF¨“'{¬¡Y’å˜çÆõÅs‚ *’:iòòÁÒy)FA”4rPãGG'‘ÁÜу=±³ÁɆÎÃ:³“€†à ;00=pÀBh0)Ø86ta܇‘Ü0àä)ÉÑÁ¢ØØR[;˜pR0qc±""k0ìÜ Â;Š;c9.!á!‡J".¡¹÷Œ4ÃTã^å °,Œ›Û­°(j±ËåÜ¢ã‰q8Æ÷´ÁØj·ÄVŽMbÂ…@Àѱ@nô.³.6xŒÜ©: é5hMEº¬¼u#UNåeÄfu¶×ÌÁäj¸ÄVŽMbÂ…MŠpdk¡ZŒº¬¼s"0Ì2ƒ¡OÁÞ 7€Ô@2˜ Ìñ Æð.]Ñæ)Á aõâ<ÖÛjôraÐ@VEˆ‘P× ²ªQ*ŒSí[EH0D ;–(Ž«ÆVGjNç…¾ì KìVò¡ºEdSCœó" ¥êöÌYN>« {¶ž´åqMoÏ!4ÉCðù=sXÂrºIµ§|ý\‡hÛPç81Ⱥ]u‘ta¾púa«\ˆN7áïB´‚Ü"Ûi䉕0ˆØž6rdŠ¢HQ[NeÑ{^ý©à>ݰçf™LÐ#s½Àq±‚c8#o« ][ad;BÓõ/œ-â¤sƒyc0í¹­ HÁgrœŒPÈ3Í=q#7C‘5¢hF.ea³B!î¢ÐQ² ±iq—†Ú ‰å3lQ!©³í»ÕÞÈŠð…ÝORZ‹¸ªâµA=£v ñht%«6]f€ìH¾BÇÂÜmº§بàH%\.œ¦är­²0ìpqQ^§á“TP>±!FO†[]6&¶y1AwœŒ±Ógš e×Ef4ù!gP²#…0îà]¤SÉ®nîÜQˆx"ùÌ‘SyÄÀ¡¦Š Œ»ùhhjJ2Ó;êœÎL@»çñõÙå¤a:Öüøª¤%ïœô P²åœ§flì$‹5¶„a8ã³}k×¾œ1cl¨às6FÄ%é‚Î΋l+L.Åo‚M¼©C|;ÎÛf¦Í¶ï9Ä…‰´¦–é@Õí+s`o¾ Ãæwß$k9::Gªó›ï×VqÑnÀÇ®AÁjÞî¹4-ó[ 0Õƒ m„“´ *I!¹KÆ¢à `Г Ü®#hŠ‘ÍFæÁ'‡—‰4e0¸,ˆ²…¶vO !Â/)!"™¤O€6¨4ë8ÇÒ­Š¡k Ð]rð›y¡PJ¹›'° 'Ïr'*0fÝáWmBú¹¦›ÃÌoÈoa®îÊ¡¹ðZžÃ„ÝòîuCºí>¿©£ošÜ*ieV-b3Ã݆`¤6»zÒû6Ö©ŠÕz¨lÄN{Ëi§'˜ EµKmÓ2%"„oºŒ È,'^ΪœàT±ƒ€7´I"Õ˜Öagxdë%†Ø‹ltÍÎãqMœ©ÈÀ,6‹Ý4fâ€Ál8À#X VÕ\¨6"_8Òprô\‹¹êRgrqÈø#i›¤Ò1"¥Ç`|ÐñÄ9gˆØÓF[¾rËâ½Ü³^C[Öv¬‹ÉÓ$š˜¸l˜zÈ 'O×!ÖŒ ›dìå»P¸v¾H®çX\Ð=>bÜ AÚ‚æîrÉfÉ,)kN%¶œÊçA6í”Àñ¸k,æYûž@ãsÄ$ÚX;HÎæóˆ‰BéCc  „㙚±ª Žæ¸-=Ùbà³ m÷‚öb[ŸN³8µ•ø‘iyÆDÆIÂ7˜ 2IÍXØá0$Œw‘CI¦åÂêÁY7¥ b!Á$P^«áÆ+Ÿ1/¦©6 Ýù3–ñvðz†›{…WY‹¨³ ° c';DÊÀÎG}TïØ Q4X „É5 eœ`fÖôMaÎËhwÅž-8·Šjd7ÎldØNø2Úв§¹áÁ%;@ÆEpAAØðêÙˆŒDåÓ%ï7í`Ínù8e&½L†èbÚØÚD ­ˆC‘» ïn%e°CЍc‘Ûu›Û$…ò¡àßï”®E€Õĵ‡pÃE¬Œ¼p\e$äHÉ¢#¤$Ö@é[£“$Œ! bÁèZŠ!éF)Ä\o ̘°š-¹ÓâÄ 8À…;µ ôؼï,ðÓD¼ ¬âl<]·AÒc‰œŽ‚¦ìá’…AFÓÁ[€8à¸$8]…ÁH`Z§ãmõ–›.Ó' ‘y|¾7ÆÄ ^òۑçä q£ZÜ®´4ÆØz@ØúÈy÷:½qº«™ ÊJrÎÜÅŒ6×/Q¹ÍDA&Ê‘e…<æ\¦7]6@€@Ÿj|ã3©å¥ªšrl°clVÒþËlµƒ  Ùˆì¦'x·bfÅ‹qC|‰ÄÞŽ.2.5¬0À¥|‚ˆÉ³H±‚†Û0Ûkt4ø‚¬"ÖÅ7‰Ø4eó[IV¯nûÑœ¸V‡æWâÔt*§‹Ï®M”~® X‚p"ahãðfq€DÉp)ƒ‚O#ZÚ&ÝÎ#ia ;,¹ÂÛÁ¼"74qÈãrûî†H³ 燡¶š‡['Ó‹ÿ”ÆíŠÎç"ËÕºî½l¬Kòƒ“Ön-ö-¸œH“TÀP² 8™K êEéôÕ#0ýŒLA­,4‚ ³#/¦t†I‰ĸÎòãûë[khΤQKU¼3ƒnêDe‹¦t$­¶/ÜÙÝÁ–qL ÈUÐÊA¢Mí#V"'K IÙy¼í¡«q¶Ä4ÀÊ38é]ôsˆÚ6nV cÿŒ?EëIœÌ°Ëˆ)+Cž»³¬X™†œ‚‚Y·,•ÍB¦ò`ÜsâCÁ©$p„Ó‰£6ž:FmdV.³ #%ªÂ8ÅL:" ’( yz:4_’î÷ªœ ·V(c6*lBj9m…Œ0ÈLA$O½ˆs¶üîñ‚ØNÛ¿DhÆó—¥PX‚›3È•l­Ôa¹ÜÉxéxòWHuá!Y‚eNAf}À:ì`s‘Âu­ß~Z¸ «GNôühVÀE…Ëôyâu·fd¦0d‹âEÞÏn/a ¾€ä;!²Ó[cthç¹ÛÈÃaéËGž)tªäa¢P•Ì•"%#–ùÔœíQ`G{»P¦ sIe26w9âÜs–°NPÌÙq’ AqO8ÒØ¶Že €À2`%ƒ/´L¬N§YpùÛ}ˆNœ9(¢ëóWÚŒY-WÃUŠÑjKªæ×wnmu½zóm½ ÚÈ%+®º¯ŸÓñ Ö5ˆ¬A© iI4_?˜}¾[æ+Cȼ ÂVV‘L"d”±­²YÈÚŒœøô†ó!ÝåS»Xh'¯¬)àß¡wªÜéå4ÑÖaã×’Ü6ôá wwZGcº ŽÎ¡r€‡ñhA‚˜ràxãuÅ!LBvël]´‡L·1Çn[ã`²Acs´´: nøugŽçå!ËÒ«àì4} "„¾†aÅq:i½=æÜÌÆ+â^kÕNDà —ßv ³ ‘¶Â1f6ùnadB9DbF*76 <¼¼I Ë,…ÑdDVâ–iq…åN1Q ´8sh ýµ `RÞúÙx  ƒ^ ¬šTw…*I¹A>@€MiÖš—qçX0 N3\ì¢"vBÀ†Ž¢ðߨ—((o}`±!˜¸ä€Sp°4U¡ÐÛlñh ’TèTK°ØÃb9ɹ :]™Ë$†‚é líψ …†%´–+ÙœŽË„ˆàèìpPæ‚„™Ï©Â; ΀å%й C…0Jzà n…†›NlÌÕA‡‘׀Ũð¶ÍÅ$CDAB¡hÐ`a÷^f–Ìì„Ó ›U¡¶Úò\™ÂF 4—€Þùà¡#¬bÄ JfH&¥¡S¥’ ¦Eæ½£´Øï.î慠)Ù¬ ¥^wÊùÿy,̘¦¡ˆ†Æ#%˜+»ª‰(cMŒÓ0™5X™6ÆH¤úÍE4"“ãç –~T‘¿JkHiî=݄ͥów™×W~•!€ë0tÆçÿucò6ýÿŒ­z«æQ­Ðµ#áÐn’Y½nˆÜ|§9(ñ²ÜàãïÃÑ+É ŸÀ½üÉ:úJOÄš{pe€ ¨1$M¶J&Šj%"MÑ i³jSlRDEñ½ïæË÷;޽͊Å)R•´£é´S49d¤†þsÕ"ë¬Ù°OVÛ”U, IEzeƒnÝÕDÈ•0LI©%·å¯šuÖëºë»\Œ†©šhÉ$"³+vÎ 4âTîÆ[+¹Ì#;ƒ è’RÊ omVì-­ñåéÒI|ùÚÌ-0†ÆE!0vÇk*,‚’²¢°þØÒÁã©·##{dîg8ÄÚ{&aÙ©™¢³»à6sN×mò°Èá¶®ò¦É y„ĘÛI!œF@Pi–º+ŽÑŒ­ºÐÚ¶°Þ,u-É,®ê¼î/Þ4õâ¹”m¼c£‘–XXfO¹kE3˜·š½·Xž0ÑJÚe$ˆ¤zxì´u‘¨šI7¹Î²š…d—l™ aŒfR*‰ƒq ×K))q„{bŒ˜°q’e#Q¶o˜ô-A•‘26pÎ n'AŽ[m%¡ ’Ç_E̵ӪkYmýŒçU޶ÛN#dµ›Œˆ.)S,Å„$Ò5€èÑT¸¦âs4›ÛBlhƒ–IŒ\7SF‚0ÇA°h0†¡ÐâÀTaºÜ–$H‚‚–}[öá†FGL3XõA[w4óK5¬É¤ØkAŒ!.³LÙˆ_{œBtwŸ~(pay;°†µ;¹‘9{{\"öTð6=` †V¡’îA Él§-k@ïs{:±JC8q‹fb!˜3\ñË#ï†óÅK× ”‘˜fFBcÓv”É4×Kk ºéræÜʲ‹šº -–€†$G»búø¨~+ñë(¾ôž=:‚!yè ì’¾@{‚g´Ö6¸iò)îõÀ7ð†'%3¡™h©ã™´bì ÆÙl!> è>X‹¢r¬nƒq¬³XOOŒÖ¯z›TÈ£¦´JÄÀo”›2oJ-µ‰AAT¶ $P 8 ·ÐXò)ß!>Ј4ŠÁܣ à¨Ðñ…KÎ^PffC¤8)éꢖ‚ìÎ:h2™„‹X`)’›™ÓÌ®£~Pœöý¯SÆ/ ‡žÇ¾H_(%¥ÏƒŒæs(žVî¡ÄUÚ¨Bªî}„YX2úýtüfš¶ƒ*’*Èx *ˆÐÒ§{>“>¤¡‰¦Ÿ–©’–²p¯Ã†2*˜ÅƒK66BØØèC&C3Ù­-0m´C5Í_üìX1¼q¤’ÖÈ\2‘¯V·‹QÍÙº”§uss3X“:1¢9'Y(à ì’„ Að´ûÀÚl |ò¨DÈ ”@8H€–Ô¢…)BŠRï*§rÿV mñ¸)ÐïOŒq;2Òš¿fŒ©¡cÜoŒSRHbÐËœm É ~QRCaXõß|²îJrp© uU˜?Œ´Nj5jT7‚&•¤]Äêw|Ú[x7@ 2äŠb$9a”ÿÔ‡åBòzºŒèl ¡˜hÉú(¡9•©–p~>ÙHåAw{JùñD)€hÛ]j3Óë÷o³ã©òù¨ÜšÏ…×Yu¬/Ôp‰yþœðð^(ö'‘IÝøvÿŸ×÷3È>!éoENþôŠy»Ô=ûVƒØ‘ú¾aî>w 6q›HGÓ­q»zçžH- À¸—<Ѻ›ÜjPÆAbÀ‚ ³óà3b샧Ùƒ“ˆˆÖ È8,K´DUb)µâÊL ¢âåÁ¶¥$QÝE !6L}òB8j‘¦5†Rl\4é`ÍUlr6aw+Â81±¸™\¬»ÃkF«!ºARfžÝ4âšÖ©@­FIº£`ÖœclI™’¸’CÔ†Xk£fØLúÖ±¦²6ø´ºÉ‰$qJ˜4ig#fT–_ÚkvH0!I H«ÊZÝMuÝFñäæ7ÑÍ<ë;vÂé]dlfWx)øà¼ƒÍ„=y(4EàuŠò$¦ƒ³ 0¢ŠÝ¢ênH‡DšùÚ½‡và¾3!4Ô0C(x^'Øqä=2 «0µ’oÀU6ÀêöKÜz¨Æy¢*ˆAv"¨¨ŽãÕT™p`ºó! !$ªq!bM‘„Jyj@v!~i26”~ð„+M*nL@(vÀœ$uHÀlƒrÁè½?¤ ŒúþÐ0 Ò8¤¤0‹Ì’1Á'žža‡DóNî~çq t­!•ÉEQ•Ö@ŠJÇZât*)Ò©l(nÚ0b!&„ïƒFS°æk[DÁù|OO>wTYÃ@¶ ÒMÏ”žPD•_€ØÔfþ‚º(Ù_—ºQR™¶’”ÕéÒQm_Å$…,¦f24%E¤¨Ûˆ•$Õ®µãiøv»-¯Ù2B)"§—Òú_ºOÕêÀ?¢yx«/úøm(nCËã sÕg´æÕêN=•RHÊÙ€ìTˆ-¬dÊP÷¥ 4IJ7)’Ó#v™b™5FœŒa’A2±ÈGRDÂà«1ŠÀ‹Œ`ÆãN.é–¢Ácq6£nµm¦@X6Û òI–1 ´ PòŠ1dyL2¥‰ÔtNf#$ ȱ‚+K5%ˆc®O+¯W¤›Å{ow¨¤Þ=]°54ꌓVI´f;Nkh¹ ¼^¸ÕçF:æœåŽ@£ $ÕLÎI­.‰šµë <ê¹QÛÇoNÐ[ªí¯D1ÇY,°RÕ‚0¢4–ZlM ;1š-+¡‡Z–š¸¹ È§è—$;qìí®[tâòÝ3)†Œ|'ݬz3b…Pn&’CAI·}È|#wÎpj©%¨@+æèÎþS–<œa¤y\‡DZKÀ½ˆ¯Î!ër€JÔ…$¡’£ª‘,HN/w€æóI‡tÏ݋Ȭ41Åx¸JØ€òDÊ *ÐŒ¥/Cîóx¾zç­“ÊŠlÂ1']½'X9‘ŠLw¯ë‘Sè\ ÁPÏ/»K¢i@‰NÙΓs ·¯ó€Š!¸ù#ΰNç¿«ï£Óâ!ï#'2°£*(§Ë|8Ì1«’±µ™/Ù(Ãá Ç!Ì Q æÂ®g)'Åâ)ótô@£!ã¾ç¼þqW>44h×£¥ù¦øwéÄÑn£/¶Ò%hÈ~~8‚”¦¤~—r"P7Ì\‘Q°ÀþìÏÕÕp8ÆAÙ¾>­vĨÇÿ`¦ÿuZîH&‘òŒú}ÞZµ~KéRŸ¤„:à9@‰©d=ŸS)Eô}Õc$;!$FFfTªÕýêg·ï‚!ñ°hÀFAPã:ûë®Í‘3%¥ $™¶Ò¿Ä KýR=ytŠýž©zõ~õ|RHÑM“FšÒJ¦–IÞ¨áõHy9øùvû†`˜–“]9ÖsºîtésŸ¢s¥-#}8cŠ;r´ë¬Â€î ’Ð6À™þEbÚ–aJ¨¡š¹­mšSJá²¾†¤ì¶úe ¥X†¤†I[΂yɼ*ph´hÁL¢@ce’L Ò#*a&’J†£j %³`š¨‡í4êJ¡A¨‡ùõm£f)è+òù?î§o[á°m1Ñ2–Ý‚›^êM)E‚çN5Ù®É>Ýúr¦µçõŸßgÙ®ý©^Ó¡SZ•ê‘19I‘TLBÀˆ“Hê .ø)Í´ZJ¢J-4DXÐ{‡acÜI Ûhx¾ÓµËæAŽ6Ú„dÚ§) @¥d ¥­6ˆË™‹¢ÅÓ®Íc#IV<p^ÕÛè Ï2‘áÆf¶±¢=JÝ¡aÂ= ÀÈfÄ5ƒ³IÖM¡ä†Sê¿Vfù§fM7c†1êòÛ¦2]E4ÆÞ²¡šãioŠ÷¾6R¶ýß[ËF„$aŒ•& 0"2M™’c¨¦e-&ùmôWèÊvK'·Ç‚›{î©džKäóû÷Ìß5˜ÛEÚ^§v„8ýÓµ©L÷ú’°Éi kç µ B€í†Iøuè-“z‚Ä"ˆš*˜bT”ö‡”v×´ï"øÞDd1%cmcfk&¬ÈÆÕ6WWň@ÿã“mîÐ>º‚:îçFøé>¿½Ä ႊ¶|Câ“øõèÅH߈t›‹™ÚàD4Ä/æêœSLí ‘ú60·Ã!Œ¶CNó¢WR¦XjšNd·5r—\vt{\zïW›ôZ Ôž`Ц‹hfŠî׿E`÷ÌUÿ¹'èÿpûþÏÄl‚ñ™˜¤†¨É0þS>Z½Œ¼‰µ¤ÓûÙ”ñcl.ŽÔ8O'¦6…p$4¬êsDUA46jò5lÝŒl†xdklNf؈£@‘WUíþÒf~&£âã¡ÚÖi‰ƒVò«@“o£,eIIX§]wÓýX(éN®£(>›£Æ1§êÌJ_µ:É8ýŠ]<@°‹Z6Õ]o§ß·Íˆ6ÒFLSLŲ,L1”ÈË@v¤R!Õ¾! £z¶ÌH$T…MIVPÂ/ÓþžyôÙ¢-¥°øªÚLw KGíT¤…Ù ™’™>¤PÓFU¤2Ò`º»+ JPÕ“UnCEfMIÙÆØÌ¢™Qú)Ÿ×†µñ³‰ ÒpŽ6û»ü¤Zk䜓'*¡Ò„ÒàB!í ˆMî ||½ÝµnZåZJŠþ¢·) h—PË8€bÈŒ!„ ©”Å Ç„¿$ŽXþï”øDë_Ú&%Ë&÷kDDÖDbëXjbOïy3ç¡R ŸV™Ê‹?€Ï‚üB)GÖfc+Ÿ N%õÍ]Â^úŒ²8ß9©‹T…ÜØný‰Ü7µÙà0ì—$‚¹AÍÞ@i%cØÍu±$S!5Ä#|Ò,çt6Y3 6£$¸¸Á³oOìòz É$M£§ CCOµ‚©|D­ƒH’.$´Z˜˜a£Ä#…JaÑ^ý ⺒2ÌŽ3”yàÐI5´ï£˺ÅWM´»n«Éeta*šŒÂ(» !üí2ñDÜMÂ)8•;p@ࣅ "PÀs"‚-Ó´1Ǫ;PâE(u=Géå^å”B½';/‰ý¿†Í…E(xîŸ{ëþt˜‡NþˆóˆC5Ø‚§ð&HQRôJ9Q½`”°oUáÀOä‡î-vf$™#‚{Çhöª… àë (Sü½®jpeР|Òã„B $Çó‹*æcääÇ—ê A /ˆN„XxþÊ´÷ëÖìÉÐx h! ½Pß ª÷õê´…_“wر„hiJmòÙÑèZX@—CIz!òFÃà`fa˜¶“Ó˜ûa{bD¬¤@ĬP@D8r;1§ü([Ó¿}Pi‚lq³RI ¡~~ïÉÞyu Ç+ÅAÈz81ØŒQªä÷=bXÙYŒÉu§( \Ì–&Ñ€dI÷s£Î¯ŒÎ“¥ÝwœF˜ÄÛŽ9 ä ¿ÎkKŽk«·-­×N«»¹`f ì×.¾;x*ó]]”Ö]R0²¤ËUE²ÌÌ"“€N†M.†!‹ˆŒ0 .0aƒˆ8C!ÐêEf`Þà£á˜á&Z Ñ…N; ™‰‰ZA;ô4é˜q0‹®åÔÛiu»o}µ\ ”šF Ú d€>9ƒT.¨¤P,ÖÃÑË£¤Ü–biê &ñäd!µé8Šà!:Þš:©Ö,¦Œ ¯®%ºÜ¸Óî.™Âö%Ò:˜:6&Q*àhÀa†‹˜kfReš Òj“83š¦Ð£:´&²Õó×mü¦aÊ J¡);i_£§€ò𥋫ÎÝWuÞy%kMä¤c­a8”± RYÌšf±¹\#\6ËÈÈå”±– Zá {ᡉMºÿ“vÇLÚ?ù\¨;='ά°ÚKQš©æÛüOüŸÓüçèã(N¸e«E AHp8:u«3X ´¢¥€jLuk'F¤K+ZÖ9¬]f¤¤mȆ5d¨®$>¶ŠÿàhÁ…‡ Å'0x0²j•3ßkYg_Ík=£ !š†Ý4òJ’Æ“Q#$|˜k| ó‘ÓKY›;[–YfT‘¦ÑÚî·wuúR8µ3™Â¨‹i¨Á”„²¹ýîꞇ&¤^üè¯&¼Wy„øêæ˜ñ¬w:f”±ë®ˆ.îP¹¯(ÓI1[ú>_Ùï½û:‰£€ûÙŠbDCÉF%$ŽÂ0át¿É°+ƒÝpè2eÆÅ''¥xá ‡˜fÇ…‚í;Oõ ¬>áD§ÐQ&àCZ©«¹õT£y»¯AÀmä ,ˆ•..‘€8T”6}$¦€•D µ0²I)#áa2—„BtY|ñ‰ý0|’¤@?TPý>ÔGî­VWò®)˜Ù3ßÐ8'Tý¨Gºî¡ä{Í wÃì…IÒB ìf9ˆóbAFºh9Qo<}K©ZIo›15d¤==&‚Ù÷ ü¾Ú8}êóÓÍ“u5uÔ;GM‚Wià,'{ ëµQ¨—' ‚n[fß|R¼hš#çÄÅùL7uùÃÄ}Hiózà‰Ši)¨Ó R%F²1vÛkà ¢ qS“1*,¢ôë ÑôÄŒI/¾˜î”òzqNpG=Рm „'ü/ƒÚ3?_(‚Š8-z<(Ã}z\TŠ#XôŠjiõÐm®MãèÄÈSÊŠdŸ1ç?0z¿¸ýŸÁŸÝý?û73gâÑþœüäÿï¾.¿öù=Üë¹Ðd¢Ï¤ "Q€²Íš¨ýáéY½ÀNanõôæ•›Ü[ÉŒþq’ÊqžŽíÙÒ'Èöj$›´0#ÞÍ®TÎ_¡…Ú˜ÅÆl`ÏX¡þ¾àîÒ=wÊáëÇÃÿ'À_ùÿþ~+°à¿ ÐØxÚ·[.VO¦®¥œ,Þ¸]ÈB4½ˆy†€Ï­ŬLþô"¯ò/ÝÑoÿS-íÕ|UÏ¥ánF8|i[ó$<³ãV4«ˆ4@H&Z‹ÙaÇÏK¯a•¯FDoUS ÎêèOµÙ®“Í’5¶4×Òðis1Yãüçüa§±äu…>íCK€€Âz?»Ê¡™˜ˆ¸óÏ Êå’m‚G—ø0Õí#¿$”Òk}Œ|E5mBŒúkûúYË›{³ëi7®o׈ƛ¿Dû;“Õ‚æÎÿdXÓh§P׈5õëûXhÉù·ðvuð·éÇ~Ïó(8nzae&¡÷‹Þê¡áGªà\Gá"'UAßäÌvÅ®|s1zTgÞôS862\Covýf(110kqfIÞ= %¤›¶àãL¤6A†î·˜(Ïl›û-CiÁ’‰p bˆJ(1*C"Ä '›¯(|fŸ»ªv÷á/ßÇC(Ö!HMÆc¶öK5¢µ<ðÝ»üΠË:<Þ¯çõý6¬2º0x’_‰Í™ˆCœ†…@… X?êï??‡²õýqQTEbí;C«M~3Íã®Ã¬pÑe §ìeÜh4|”p†… FÊAš!£FŽ !†Â¦2iDmñªiM-nÇ©©›„é„›·Êš¸_ê‡3AÈȲì:ø¨ƒOi³L™#ücÑ Rj[9âæ®YZ€Á¿ÕèZ3¯ÍzÌæç0ìù#ÇV°Z  ”ÈŠõ; »I¼é±yµ‚ÀE’XÂŽ@õ¿tß`ýÚæñZÚ€Që2V<£2ªH‡:pº”ä.›Œèbž x Ó^ˆëþZûØBGsº"³’ƒix½Ú'•Ðb¤˸¢C$‚'@8¿#[ýÂ~ˆªþ¨¡}¨=ÿý›"4RäP©ª÷XÎÑ•D4Qí° ÖÌ@r6…·ã¾²ûh—ÔbîÏ Ý!Û¡ió©<Sç)Êÿ»qì|ŽÁåàzhe]€½¥ØÄ‰ö‡oF`·u “h?m͵t œ‚ä¡DïÆb1:„ýa ÕG–š1Ûr2éž_Ê+É:ÑÉF-’ÿˆÃÞÐs½láâX M «yq@Å1 åÔPri‚¬™ÒaîaÝœùÈÕ—&/‘ Ig"ÍˆÈ–Ô —Î/d:ÓSâÆ—5¸!ØFÁO5ÐáPœ"›AñÅÐ)Ûh¶‘tÀ‚XId ˆ?V§;b÷æXw´Œ´r8sÕ ÓIY=¥Ë*;§šä‰™Ä€ ç´Zf`àÅÚVœ| žìf£)ó8tàΓ€äf`ÚìX.@u#n³—‰fâ÷Q&H!Áj„ñ@ÝèíM¸™ uvÛÛMÈ*è>hª/›< 8»pEœ6Ð$=¸£4pÀãPÈì“oYš&›,&RØ®ª©š'´³ éåd½¬o¯|Ú“df¹Õ•hàÖKÄô›Ñ6]…Ï ²êDŽ`À@»aÄÙ ê<ضžË6òvþ\ÊžZ :&‘("ëT/ð§…óÛm0ùdÔ_­Š× ``ŒéÆ1M•¶Öî£p²Й‘'bHßVçzw,Ã>K×ÿ¸pö¹F!“(j€€¼Ý]WÌ hO#ÐÓÚp+Ž©·Ðwñ®¥2µZoGR Q“&d«p?JD®ôŸŒï8Køe»¿Zdɾ_L.þ50¸ƒ%ýGŠÌ«Š Ù1 $``wåVCž£pkrzx[oÝ-=—½1Ÿ6£x‡0÷K2ÔØïµ$­8×ÛÁ½üÛ¾Oœ6S¯šï°¶Ç»fŒ‡LÜЮØbX€b7ùªä!!*á*gV¢Žà.•Ô ÈÝбL €ì,XÖÙZ®¼Ð°õIRphä!Â7Šl g 3¦@Ï$50o1F'ÛsˆE•Øé+3„аFBÂÍŠQ*ö ä†‰1Òña™>íñ÷æú%ëpÓóïÃëK~W¶Ï·û¨Á¸ÁœÈÿìõ¿‹Çÿ³Ëgý)ÿd¿ÿŸÿþìÿ‘õ¸ÿî… â¨JM $ÊUI}Çò§¡ÕÓžnÁê?¤Ý“Ÿ}mjG8¦¡äÖj1®~(=‚ô3y%‡’¿ãÿðt7þ¢´ƒGOÕÈ'ºî/AÇçk3’ P•Öä1ãOˆG¡¯êñÝŸCýßí+ìýû†z_bã*„ëÐ(àúÿ·‚þbÁ €/¦Âút þçT?ïŒ*WaÿÅÿðæýÂ=–z~»5YSáÿó>Ž•u²ÁùYþÜžƒþ>Å þô'ûÀÿÑ ëÿÙ`³óãýê5òãýFà#Õÿþb‚²L¦³OŽðÒg—ÿÿÿÿÿ»ÿÿÿÿÿÿÿÿÿÿÿÿžïêªé̵֚繡ÿ¨ÿÃÏP¯}®ß]¼ç×Ö¶øe¶  㮯±×N'Ýœån»©k {>ïtÛ¾ú{_o»7Ó !x_-ïf¨í¯¾º Ìè÷h(éïyÅ÷{Ϙ}+T@8ú`€(£¶ï`&Â}Œž>˜íÜ|€°®´)È=ìäîî­ì5Ý÷ ؼÆì9»ò:=SÀ*I%Tµî{ÜB€)TQT U:£*ëQA Û=;°tDÛÝÜÐÛzRu´BRcÜžÚ€$ J†²)B—»ºÐÀ}Ïœï‘ï@Oñçt÷À{_o‡Ûãz«p ßv{]€@õ£ë®wnP/}­¹Ø×™… ëëß;ž½ï¾,;}î{ÇÜÝ3½l¯v·¾Ûo}óÞ9ß}ïUî÷oÉäzÛÕ™Ös;ÞóžîΟ\æúÁuîÂ{î»ë€è/…îïªëE)µóŽ<_[¡Õ}c¶÷q]›Zݾr]íè^X.ÆÛè'Ù·Û»“îûÞve¯gwËÞÃÖêc»NÚîßy‰±G—×ÇÞàÓ$g{^7¯Ÿbí®û¾=mfÚl)ÌÏ_P¯g<Øë¡¶ë¾Û=¢šîÝ rínݾ½ìÒy±³®»‘­²Ö ­Øs=Øï8Ý>½Ûy JÞyç¼ëº.$3¯¡Ýž´×C®ÆûÃNM ³Üáì2vöøRuÔ€Øhme²€‡ÈÖç0à4)ÜW¡››±ÆÆgxGr‹d޽3lOvÌÅ÷¹Ö€¼Äé´Úç®pÚà.ÝP ±lmL}Üï]¸:¡6§$ûà÷Ëï·pvƒ«Öï:I±›nÚªÛ!SÞyÇ°Ì¾ï  öÃÐG¦{Ž¹ÂØ\š (¤–ØÙÝßoU% =ìt¶í´îÆF•Îî˜=Í·¯ Ë @6h=i‚,m¹pèh®;aïeçµ¶ôóÞúôëU·€:”§Ø‡ /Wf×wJv»sÙ¨JOTjöRx@×\€(ê ½¸ê7V2m9Â. »{@ïwrM›Õ{Ý·ŽÛ=à=˸ð]4{w ×sα‰­eeZèêvÐÛ5–ÜÛƒÞR¼Ú÷xgÊi¢ @a@& À†J<ÄÕ?SzzM=M¦›P£G¤=LŒÔiê M! Š`šÎnmoù.‹vÿËUO@ýÿéâô_úzxg‡ëóêÿ›þÜ?g»þ{?§éíÿ½ùù¸“8÷èöKÚû^¯¹äÿCSìCçæë¯—Ýÿóû¿ïûêæºþÈ#ýÙþ_ñÿ–ß³‰ý!ëA{PGÓ‡š}÷?ÚíúÇû³ûÙ¿òASÿiÿªéÏîyooõáþÄO_ûßóÇÿ­ô“ÿ›úaùÝÿþè~_êaüŸ¹øôÇÍù`ážü5ÿþºÿüT~ßèÿÏÕ¿þïñþÕý/Õæýàþ¯µðÿ©ý\³ðr[]馞j·Ïú|ô•‘?Û.?òsÄÃÞÿ7­¿ùû«þþ—ßÏ4?ô”|c|ü^=ÿÇ€ÿ T²~¹ ÷¿†ßç¿ýü…ÿÿùÖGüo¬ÄBd¯ç“ûppEÛ"Ÿý¶‰DÔgÝô~K>Ô(dþBKa¢}Óž€l3„ÊñÂD@þQÚgÙ rÿÑ>×ùmÏøPˆüÏÏÀÚhþ˧ÒKü·«úÕC7â÷]1µú%‘þ}ÜLŸðø¾³Ö_íöpï ÿ›J1þ¡fŒüXÁÌÿÇû8Ÿ÷3þþ_W÷æ¯wó¾©|¬[-pq[3Èä-nHÜms»g<œÞ3|Þ`ZÆ?ëe«S–U]îòª‡Û‚®Ó‡ÑE†ÎmËÀ°?Âì¤A>zÕ4Cø,†ÎiZÁÿd¾ï&° €ÅPX 0¸Ì£áÿ–¤ìÍ1S>Ýà„OŸ'ÿçà0ý6´èÿ©· bY²´ãOKÇHÿgÉ_ÔÖ¾Ó®Ö“®O ðqéãŸòi¥´ƒkfȉw^tjš¢áŠ H*Ý»1RR[U(;ü L ‚meŠ ”£•m•*Výïá‰Iò{aƒßa§{†ék§79|Vð¬L$.Ža<@á‹å¬Þ;‹¾ŠÕ"…‰Ì…¤´S{L0øxvÖâšÛE[‡õìmÅßø“g{3³Í5é6ÝÿÚÜXäÂ]Ä,Óh 1¥²HÑH;;µîð=…¶¥äÑèdI 1f­^ßñ|klù&d:‰§ä°Ç…½ê wyª"ññ¡XoÓq…ÿ ‡ño 0m è×¾‘ú?Àj1ÈסťÞ2ecži¥-1eSÅoeD`u}¼±QÞu»Îþëq¥¦€!c†þ? ô†Önû¬ìˆv§ºf‡dÄ22 ص_Û-kD’¡Þ6ûþ»ëéÚ@E5@ÿ—þ^ßì7ñÿ‘þAæz§ù5 çÔ=+†âÌâ¦v 6vDP@‰±wËÒßå¶=ÐþÊ=4'ÙwþÁîü¶Yÿ‚~JÇÜɇûÀÖ lÙe 5¤sï…µ¦pç×(ÉkĘ9·(ØÛFï‚úpª,?YÕ#NІFÇ\ùDTÓÏvÊl¤™©„½²Œ)¬R@\ËGw8,ãͳî)w¦ÿÃvíÛ4ayŽXP>ï6›/°ŸeO¿°éËÁ…q˜q:YùÇcßéçÞ´ÉQ‹Š¦CEÙ0h­âë§rŠEé’º»ãŠ›0ƒWþ_òçUÕê?á€tÄdHAzg^ØoæéÿÏãèÇHüÝû]³¨7ù Óe”ïí˜Tª´»ÁŽþ&•Ú÷[;‘ÍrÖ¨¾µ4æ»N¼…FO}E480Y•AeÜjõÁåÉHÛvÜHEoCf:‹’Ø> 9S±ž¤àžlRö§Úy±ÿ}…¥"`^q JuDœçP—ÿãÝŒïDÀ Õ(àPe—ÇòÔù‘IUëÙ½qÿ…>jJ™ŠŠÃ)úß-nÛÀ½¸7Øe»£;èõ¾'£ºS‘õ°ë²°æŽŒc“§7ЇÊÃL4v I¶ªEX»ÆÛ‰êzP´=¤/_§Íæ´³F[#®Äp½WÞA*ÈLi8Ÿ®‡G}?·OsÜîUàmñ˜Bâ³{ Ýî:nΨ«úùsàpul£càB Èpï(Q©U#5­äÿóâp^1Ƕ¶Õ¸ù<¾o¢™-ó–"ŒcÒ|•m¬+û‚¾w"“r1‚ "(Xv|1#êønYòÕDDçd£Z5k¿éÐj𥥤""bB""¨i¢b$©š‰!©>>ìu <™…±%!ã‘à"ÁL!é.™Ÿ’ÀË0‘aˆ†•C–•mNÒ¨j¢‡vû ‚#cfÜ@ã0~çÏ™>l¼MíE¶¾žŸ~mxJzÜÑ›w^‘êÉÅ·Þã¿"ÿîþ9Ô]%V°ÖõÑGiË †ÓÑ^.t7äî‚$|þ{´Ï JÆ,°Dó!)çÄ]"N<(½§%® CÀá‚dà Ìhï²ÑTù|sM F㵂d/t†TIC¾®#Òðð¬òs† Œƒm¶õ«Vš_·¨†µ­º ›ôC“qÅU#gV•¤£Ö²·Ö(Ól‚92s0ƽÿN\GX0’ÌÂ"»´tÆV‘¹'¾ÍüifMú'vU#ö¡5ª‡Ùe‡kY?Œ“ Iîïô^ÌÊ>íw_?zQp¼Ðõw©ðAøìTÆÅÊ& U9ä a2ˆ•£œh‚):‘N”,›ýÉ$êQOÇî…¿×f-ð‘£5TõÙ“¤ÁŒ ì{º¬óM¥ïÊÞm9™&A“F¶x6LЖ3`¤lCÇ-¢e¤µÑ‘Á–€Z¤ŒÑ˜*66&,nC M±„R£&,ÊLÊí€x‡ðÜ4u;7ñkPåH®FKUI@”Ó@´ @¥RLVXéÌ‚ª¤Š‚š`"ˆ Z¦*… +|+ 3(†™éäáv1²hŽž}ô£e‘%ñ!×dÉ`vDu›¡AXŸ—¿YYqËó 5ÔÈÕI‡iË[ØõøÂ3|›†Þ>¬-ØáÝOÐg‹ ëp‡jbƒFؽ_Rï7Á¦/6ívuËÀÿËFK妑wA2 ®Ìr&šCÌòësÿŽL›Y>í×Q_©e ~–Òíz’™îpXi8䉑ÅNèpÖ4ؤ G~@!÷^[ ú™kYµ‚–"uVÙBψpš0:„œ±†8Ô¾ö—” 1W®‡¡æ\½!:É“÷$<}Ù’uƒÆC!-ô‚+ÿ}üç·…Ú}e7éä´E†]×H‹'Ôö0êf•“kÍŠ&7üòÆÆ¤àæ¨Õ‹ —K¿f•áÉ-€lü¿eú ë0àó ~ý†æOSÅ›u ô¡ô%òX³,¯èf³©8šîÍSí1nÖ?›ñP†2ç§»-è™ÙÝ:ᤇ=%xètS®íQ‚”¡ÕÁa`=Œäb€²øÇ«‹ËáEä†ÛàÒq¼~Ì~†BXʲ1–vÉcöûÚöÿË™DƒúéŽpôv 4°œ^>ªŒÇþ‰ñ¦uGŒ§cáR\RÂ->`Ã&r2%—Íá*Q™}üë60TF UëξÙ¶LêQ¤­@í9๢É#‹}+<·"g·÷5Š~38gHÙ° Ü%Ͱڊˆ\0ƒË96KŽ™Uˆ¡ã… Šw¸¡¡IøÏÅè³ñžÝõþ;׿¸q/?õäÑf{ÞÔoÈ`ö£ÒÄÑd„…­4Ó‹ÆsÇëÑÙ£ІI¡™bfŠ 1YÇö.\Cg ä«]½¼°ÁÌwšŽûg[»0xâ ~”—Pâ«Ét‘éú‹@¸l¹4¸@h£ŽM Y®édOÕé£2áèNaCÂ]ÂI:@‰©ñÄO$‚X€!TÚ@7EUpÝ·0§_êò„€âÜÂÁÀJzŒp^K˘ÄLQdd4t´Å,èL_èä£ S)"LLÃSP’DÄTQ,Q@ACQDÑ1ÞõèómȤ’¢ ")¨©’¤ ï4ÉEP“4S=¦8a‘fffU%%-”“DRDÞlLšîÃÌL"¦b‚¢f(h(šoäÇ"""(’ùì¸/K@‹Qc4{¯™. «ÃS•ÈŸQ»Z** ŒÒ"£¥=û¡(žÍSææZ·Ÿ|ÞžE¤)ÃzÕÆZR˜¥E`“Q'´CÃU™’ã<j ê϶b‰Î)GËÇPÆð­ŒtdK‚`ìÂGêÑ£<¶9àŽÛÙ ¹»yDo´õ2=4›Z:sO&êJ" Yj~ (*7ž³[ÜFlπĂçHìA=†fFL^”Ó‰Š÷жÞð1¡‹ƒÀÑ M¨¾e}ŽºžŽyß(µ.ÃjÕ5…¥Œ×¾z#Kñ‡ù$ÎŒlkf…4ÉôU\ øMøÜí÷o¾|ž/ì§[ã}øÿ›wªˆ·JªŠ7­Þ­¢UŸŠ½¤·áúŠõËßhôñž<úÛDû#ÔÖŸ'%'›wEöµŒ4:eç)¸KÕF8A†½, ƒY¹ ‚†‡­‘HåÍ9k!çƒ'Îø“H©ÙT1 ÕªÖôc%yŸ³s1ÆÇDG/\K5%)(Û8ΘEÄä5Ey°Èµ˜ÄÍ}F1Dn5h…'VLýë!¤¡B*ªmJQ‘U?>¿”ÁìpÒÅwfS˜&K@TvaÄ´3¨qTQFª¹h©-?ÑõÞæUð²ŠOŸ0€¨ .!ÄÌ1°ÌšŠ éŽ4M ¨ÁÈøõ‡»x_{80¢$ª™†h‚¢"BL„#…V›X¥ÇÊg!UæƒW*æíaªC‘íÐ¥cÖWè~>lØíªEœÜåBõde•Pľœ±È– ¹áÒp|Ôø¥†ÍºY±æhD)h¡b¥4‚¢#$„a å½)«Óu~“áÆ²žôKo©ý?t—¸ó`¡?gÞ̃QùÊG޷űè›NÎ+ é»ßà`4PÓ›«^ö¿VÞdhy­pñj¬N™&‘À7EЃ܄èÄ6T{c/D¯w£›×+¹OGчâƒÜó1TuÍ÷Ïç¸c-tT쉔@Û¾–B¹1¿6 xoûôˆåßÎÒÔtCfúvE/аƒœ2†ú­“×zÙzWÕvRzŠñÀybƒ6R|07éJc8ûtAÜNþZû9²ÄL#ÍÉKS¿,ocõz4ˆzÛhST$~8™Êyë×V¾•P‚Ù(Ö¸ŽÁØ;=*Q9-`$S ГÈâdà½çÍgšëÂï?2mua5ÍÎã@ãÍD›ÓâJCŸo=šuP²½M•‡&´‰—5s^Ëe>µð±$†^ Y{{ëH’Ô»¡œ¯fÌýÐÈßëùõ§óåËjÿóðÇ1DG9JM5êœùñ uÎô©é½Iï·›;ž£<ƒâ×@‡TFcm\9f)[e*^vuQS.éYÐqK@+Ó§ÓƒúÞJíÉ—¡¿VÇTøÍú¬ïÆ“²-Cªô–µrFóüè‰¼ÉøôåsV%?² « úÓ3ðã#8azvs™$çCc!žª=(ceM¬ú®^6õÜíE²!— }>¯SSµk l€úDNº£ÅÃ_¹ˆKõÖ®÷v•ÐÎÄœRC^4’»ú $ÜÈwЖÂbƒ‹æë äIÈö¦Þ4L³µõ¤Â# ¬›±Pœì'SÌ…@ Q^^¹É ŒÙB·ÐÈLâ¿wÙÝô-FP Ð8¢czÒ-A(šD\¢^?r© %@ݪrG_Þ5ž ‰1’è!qI>õêîú忾'ÿÁ¯;;_d~>®6Oü&Ä7‡¹Sñ¬£Žr!?’ztL—2ôåø™·›v1çö<ñàk‡©€’øøwضyõE慨@A H%¯Ãü³ÌpÜE*:}8rl›ËD³«”þ_SåVI¾p,ÇfعْD % ïP?"ŽÀÂsßrÄ¥ …¡ÊÀž'µÁÄËoSƒŸ,êb´2Ó:÷ªâ 9º›ê‹eÏÀ­kÆ‘ñËæ™†?y`¨õrE*èhC?™Ë‰à tUöy˜€{Å=ô˜Åáý¬<˜P÷ š‚–ðS: õÇÃïÀ{§iBbT‹ì2,0«"²©¨ÌÈ ¦ÌÀ‰Qv…Š*ä ôûXë¿—Ÿãß‹³wÞÙƒuë 0z!‚%5ã¶±T1‘ÆNOM+]?îéz SàÁC(,xL#â¹^*J^P7;…ìÀD¼FR4›b‹+;ݨõ~¥ÉM¥Ô;$e?/ú=,ñn÷x%´®žý9¨×|ünP\ûétÇIÂ+AE5›ÙjI›6ile³ D åßAÙÇC»:ø¢‰Ç°âωƒŒÙѶúbKò¦ =¾5?:¦Üfó$;dÒŠ“òm nAýÊýäþÍDÇ‹QýŽïwÿGåÿ‡Š©ë'±ÛèÍÞð÷œÎááöwÝâOÒ& ?œzæõbÖQÒäñY{œ(Ÿ(òu&zräç;ÝDx}úc§†KsOÅ/‘rÂçk nÈzŸ£e— Dô¦OÁG®HhawÈ2595_}ÈáìÉs.ˆ×Í?Õ…8Ïzäå¯ 6òGVK¥§X†MDæ¼f› óè„(À0°^ j ü¹.¾ùüø1b’Ø!ªñ ëÄÛ:G_Úpuc-CÞ]^òîu¦+½˜½³9ò{-3ž¢ƒ– »¦lýϲ>ïxlžsسì¥n¦6íÌ;lÂ|IëUÅPU=Ô·%àÏê~Ê:NJ©Ø3ŸÛ6ªã*dÚ™gé×SïÆ‘h¯¥*-U§"´^_,ÆkJôõ©#xöyæÙ:Ïõ ø·îÍ…þ4#ÛåÖ{cîð½0šçÑ,gí\·O–æ£(¯¾ ×ÓeoÔü1ªÑ hïNë,'Á õä±Ù$Ï•ÑWJ9XX5sYÛŸF«9°.Ñ釨3•Ì2+ó« lîýõÝ4茢XñFì 84ãBº_4˜r‹'‡¶O‹mÌÛ°â ļ‡ºg-êã}+<ÿü‡Ò«ê˜Lí¼ÙEI“,gñuÍ ‰„<ôWƹªÙ8ú¥®Å†ùåeoq«ìŽÁì¢}ÕZÒ Çܲ™¹u’ŸñWHÕU5Õ9ÛðÈd¸wÝÕ)V§y`~¸˜‰}±=býº\•UqÌ5Z»]»©×ËäÛð{f>9þ-ÏÏd}w¼=óÔO™Ëž<¯^³§¼ªP>niS5:ü–-š–sRòcäÃÔ>!D•Õ%Ÿ>y®kñï¬(zÜý^ã<ÛÉ’„ø°³0–3©C°¨M(à Öçtõ¨¾j/} ?j&±ñ¼ïnYa>^ªÌð¤lÐ÷Oá #G 'òäWè®uÈ4(ð{°ãšsÖèͲ'¬ôe½Ù&„g-gu¤|S¬4rÍ6ôs¯t`g®g§®jösW}gÓ½ªš½ŒÛg·ôßßVLòåj *7µ!œfÁå‚Üs~YVá[ÎB­°Ò$eE7ñ¹.ób‹íQ\Ë`Ÿ€e~%æÇð¿3Ì,Ú4·BþÅ4óY’°F' žmšíkާòÒðú“Š|kT±s,µt< œñ®èî¹üyçš^ûGtƒï§=Ws¾<4æäª´ÐV„ øf»j½\­•.)s>g}ú[O‹àÅÑØ ËI¸F‡kxv3ïs¡k&~Ñ0˜ë檩µh«ž ¼Vö ¶E¡åÜ3d¥¬€sMÏ©³`4ÛŸe~ü¸f•Û O$_C*ÃYžÛç†dË6+Ï)X'»VyÓûµ®Ž %¥Ýõ°äƒ2éh-”¼j£flÒâ£ÁM~o-¼~üùõ€uþïŸ {óÿ³÷‡ø§âÍ©}ðê6BÝcœ‰·@fè—%zº¨š Kyy.šËüK}S3sKO7þ£påšstœüËî_3•ä,Ós½»ïd—êT‡šžÿÏîìÛnƒôJMPùØv” gÑ•M»S¸‡ùö°wš>Ù—éú³ºý¬Íã¡…Éa© šiºŠ·IÓ¨ào1?©rÔ®’ßègz¨Âõë÷vù´Fhã\rÍ—'œhÍ3:;÷»6y®ˆîƒÇŠ¢]uòþÏ:æ÷¿2Ò¤}›Ü ذçøHÒbw³R¢ví»ŒÂ³¦†¥ÜM×Ï*¬²jp‚oÏG,pmvP¢ƒ´¢Dh¤é}–×ÕP{;Ž€Â…Xõø2¸u‘5.¹c|§ãyrgøßkŶ Z‡C%à~ú¾÷iŸ÷¦”OÁßçþg1ø/ý—Ð.šdiÝ[ l†ÒƒqyœÎÛna‡J‚GÙ!Åó`õöƒ*()Žø/×ÌÂg+M&ºæ™ÊËx©Í³ÅíÏq¯$¤ˆÀ¸f1Öø¨ÌÉ8íZíC&ÉÞð\ȃÆiŒað¹5£¢õ¿uÜyåΣ‹rf&ÂФû©III2H>o­Üsr‚+âä±ò;®k**‰Žw†Ø¢bÄ\¦.ª€3ÞL)ï7~zGté>Ý4T)N~Ÿ»õáÈøÓ˜gÏFf·~Ùp¹%åþӴϰÀÇ¥Áƒ£‘ÌDžö¼Ó¬uüSf³%¾o'CZÝÏÂýB$vdß,”ÄyÒb$ÓíÎÕQùÛw-_>t}S« ™) ’ TâC¹.6øÛÞâßÅLvßѬâÏšœ'yòY#,íê0ž Akxòä̃¬‘c(eû3 ©Ìî&Ñâý¶ëË„‰ó2¯‹Üª⛩ŸÄ”xô¶˜nŠÔ¼ÜŠßîˆZ—ÛOÒÄ(ÅðÕüG½û£¤È='ÙªŒÑ¼‹Šž#¸z°þ3* Ed@°ˆ?}ÿ²ð95þBM$#„D¼Ê8$‚ŽPJzmó|ZnÛPŸG…5¬Ñ__¼ò&{{ËoÃë»]Ù¼5tÆOlÞŽfšJ/ÐDyÝ\.Íe\ì“;%­X{³ŠÁ\Ár˜ÐúÆZ+Yôuk•Tä¿Nk³mk§öã²|¯xˆÇkų>>K´?à•ØÊx[BX%fV$æ6w§âÅkÕÜ÷l¾Á…5Ívù§äÂFn=•h|ª«ä:ZÝøÜþüÑóÌ”#³_âÙ.N*ŒˆþöîÎbø%™gVµycÕ¡ò×s“°òj£Y[ÜŸä3òªyn—× **úo¢xÎ*ì÷oÌöoÌžó" Ä ‡ä(:uD0 L:T{ ¡G«®Nß‘óöu×îŽøš¼ "»ˆYžµb‡À ` 2‰ydàˆ|x1º"·Ò(â’&ÚqˆUý•ö2÷Í9òàù÷èAã#ìšÇŠ›Q—aÌ:ógÓ(ˆ½¸< rÁ2Ú_b{ðÛJq‹‡o†½êÿ‡p …Up€&TÒ¨ðî(›}jpçýoÉ–ù_» ùž?»üA£ñ“aŒIfbœËÄ"ôÞÂ0(Ž|öý|Ðüþ…¾ 8ˆœ:€@YûaxÀX@‚'Ê¡Rü)o——ÈÁ6ÿ¾¸yóãàAöêæogæösJ«³iÖ‰?ô¸Là’$BÏ—óbñÉ¡§ 0š… §ÏG¹’"Lzô¾¯6‚ì‰Q&ÿ›è“ŸÒÇã®&l-óÀÿfÔ¤™–¼ƒ¯µn¿AÏm ÿ­fyïºC∪¬fƒž§Pœ@eù'ûn†´[»Æ¶D²Ê?aÉ}x¼"k¼_ÇQñÀ¤Bðãv¡í€øO„œ¢d/…oÒÂ(蕘д0á\.ï%Ðaª YíãsÛ2~˜~‘ù@° "“ʆ›|>lý‡SW–"(r •{>ŒÕàl¤bŸ°öÂ…bc@Æ6°a:B˜gêtšˆªÁÓ¡“‘3©,E‚(V*¬=ÀÓLLÄí¢Æ\îëñÛ½V0áÔÓ‘Iåo*IšeiйR‡lù÷{­ÙéÕ“â€ö_>Ñ ß[ÞºÄâªñÜúc÷?×dÙÌÀ!–9þw " o"»a¹¦·3 8GÒ¯(ÅNat¢ô4"¸ê¢óBÜé÷È;ø~§o»[½]SZ*úi»”ØBÛ‡¤jEÁF>–€Á ¨¨Å¤6Í4µP¢kRØÉR< ˜#–Ùìûÿ‹ÙÌÌÍ­àh'Æ*Þ›Ý+Û€¿‡nIò à²|É?€TnŸü-@`\G1ƒ¡b0¸ÿÜ­e:+Nmƒ>ï»Þ÷‡Ö:DmúÆŸ/DÝÛû±ímþÇjüCQŽ$rí—aרgñ“ÛSŸ›ÓUWÝOVì»ÝʳÛ1øjméEõÛxmu£·ÊÜ®­˜ˆ®õ~õ2oÙx‰QÔþ˜M⌀p9ô# C4¹«@úí®j²®›™R$5q°¶hº#¹rΘLoay*ªÚ(èxôˆpÑÈç¼dÜÿ?,.îQÓ]8ƒ†žkiÈê –Yézljöƒ€ß§³$ù5uðª±5uSþ¥jÜm-Êçpö[Ðý[Å¡Õí­~Öý>«g”Ó5»ÎQóCM£>GfŸ5 5ÀT‰ŽG㻈qÂ&…p¿#ÿyîù­sü“ÇÁk…ýmOŒ­(-Ös‡Õù«Æ0Ã.û5nÛHžC+¨Öí—*Ê8Ëk©ÅÂUŒ½QžÜ3i›6åò>ý.Ÿã€NcSÕGRL÷{}ñf`2LT`4ߨwÔ;Ý¡%APCíñµpúdÁb?52r~Wìx½œµÊÈÏ>M;ã ¶§|r§Œ øuvxZ WbìÏâ™Á"„nêáý>oé`U‰dÙeš–.ñAËHh)ýÉàŸŠ)7‹œ+Ål}Á\ðë dxòz‰Õ©¿1ˆx|ù÷ÌcL¾£âùc­ë×ÒÎï@¡]›5hŽœ"Üþ>©QÙ•Gê½ÿÐ/Oïö¹ “¤3[‡'8ÇÑÓ/AÅ”.WzfTgÍ“8?#L;ö.¸knO_Á¯B wyurM°K‘¦6\Ýî4Óí ò{~ÆÁjò2d|N;v¯w¤8;'o£VN÷èî´{·äN:&žú2µÑŠïBiïãcßýÖM]ܾ˜qŽ0¸Ç§_%PÂ9¸Â&^¾no³Gáåðs¤íMtë•—Õ±Âì“0_¥ÊÒú ‚ô¢q˼~”J=ÎÁ✭0´PnlÆêñh3Fp‚æèð‡ €Ó!¨êÕU‘¼”P‰Iu“{:¥ôx¶o†Á]†QgHB µ„v Üê Ã¥[kB.ëvšïmê£õEé­AlxÞö %Óä–é÷ M4Äw Uè o r µ˜Ÿ©WZ„R›‚¨òúL〮Ná›ÓmƒmigťŤ’íÜçqïîR9}ž«(ãÌàF*©“:`FDÐ÷$ç‰ð`ñž”Pà i6É4©­Ê×v ýŽ$Ðô8o«ÃQvÙ•í§³—ÚûL2Ï œÂÇY·êЙc°ø5Î<¸ô‘ÎIøÊä?»Í uýµDF÷>•³ÐrhjîH¤~ÀíöÏÆê=;‡ ·¶ËÜ#âî­õöÒ—bK¼ÇÉ…7 ·øŰ#úþN³ôÍàð5šªøjÆ{–0"uS(½v´i(¡Êi¾¬þ¡ÚøõƒÜŽTì½ Ç~˪üÝÊ£Òté÷!Ãô> :B/WÂIíߦքD³êäžV~=&çVE9PÚ‡¾Ÿp‚T0’ÖͺçÚÁ~ †Þ“é=þ¹>ñç®®Š4õÝéèÕe¸)a¢Ä  5ÊBUÝ)fÊH&ËÈ",CpûŠÀ3‹…¹ôfdÎB|ÁÈ¡+òV0ì”<†¢4õ/{Â1jì¡*DJEZï¥3 !z,å iÔ$ áE*‡£ÓɳäEqJ²SIc¸IOgˆWF¯ ƒ¤žV§pHù¼È—A’MÌ¡Ek« zŠjƒ…ûÐ,såÝx»æ9Cª!QF1ôW(íŠlÌiEð¡ÃÚyï}™öaôD@üb4R : ÔçP'­^.ñÐG@šù‡äë³@á*3%Ç,ð4dƒƒƒÐlUŸVzd^žN UçÉ@a³®”˜:â&Ö¢7RpÈǽ4rr`Ã}² :z-γS¦[†Óˆ¯RŽÓKø°§Ã+ h›ÄîwÝò*W5eÆÆ$Lõ`qU™Ã`ŽQ\Zœ9‡œaEzDÖ ò{þ6{‡c‰I AB7ØO›G¹ü¹D˜HÓ¡"¤$öĈiÉE×ÁT.Ðϰ…&ÉVJiÍ=÷<|{ž"ª¸2wß`¦½>å#±ûü´ CHŸˆ‰ÌG›¼Ây„Ýœ4[Ù[umá¤Æ†—1€iÁN0@ì dG™£P ñûiÇÚÌ6f¡=ä  /i›…9Bà,º±¡»åßÃŒÏAéèft Îçù¡Æõ¾Q¿ Î퓹¡öI!¡}@Î=*ÙÅ3¦»Æ#šÛ `šg B¾?fÀðRåQŠÂC’ƒ„âïn³Ñ»<'¢~Øxû{Óš Hiù ]š)ê†åÔ}üÌÀORÔJo‡QË$© HŸ¨ÚÏxðú±äÔšsJ©òÔÖJ“œr¦Ä “Ä= ³¥°»Ð<à-0Am®$÷×ÁÂzTÛzŠ€(Ù@ÒdÎ!”ª0WÊ©#„I*gÔèå§óL'íÆ ªYânYô-Ó§¦•WZz_Xäû]Lй֨Á©‚º$X-º©Ö¸Ä ÞAÜDÂÓ1Ê¿ ´–ãµ>¡)¥@E°¨X(,ž`ºùM»`+ïikNé@A"¢j;ô‹f\D­#ßü?[šÝ²±à˜xËËnU²¬8/i‰ãôþÐ'´[g'fÁè  `E‚â"»{Þ¨½í ôAí­ÑPò0|\–¸º<1 1ã¼:9COŸ8ÌS¦õ1ÈÈif[:Žºàs có[ÉáÕ»“M„&(ËÞa5ùÿÃÊ8p08së¢9D2Ö€Y¥ìKÅRöPü²©Uxdx=£G=KlzhˆûŽMÏøl8 a ¶Æ¸°ÀÏòø%§V[q5!ÚôÉ‘òª ž`¥õ°‹ež’$î SpÑ9Ш8!WD ¸†\¯ÀO0QG[I¥óCÐzƒÖzÎ^“Â=Ó*¡Â¼ûÆ3Àrº‘Qàžì’DÎÜÑ `ÎÔ&–Æÿ7õ~®K8Ü=Çx‡À,ÈÑËÉ8¤ŒNm»õÎ…:>mÐÝä¿ù¹ø• ã)_ `/¦®uÊôʪ¡Lé(O õIÉÈéìu!ªbDODþM{P«h:ÈYÃÇ éNúþž$z ˆ™y—Ÿœ B$³ŽÃǧ´öƒ°¸ÙxnÚ“#p$-Ôwª’:/úä0³<Ö‹Çv$qÐ îp—eDMÃåKƒè´NÏÇ’äp}þ “ÌØhÑîÐ~]Woð³ó îK‰(­|¢ÅÊüíæ¢y  Fã8Ùo0‰òa­«?§Éí³¹“—^ÂÚý^AàAØÓçã«Ý6R–ƒ‹$¼é‰ï@·Ú÷¨Éní³-´ü$ôRå]ÈÝ'7âÃX+Þ€aŽï ‡¬sdZ¹3ž+À¬œ®¡*ÙÛ ¿ˆ6%Â3JgÎf®Ck0p†$¨ŸONÎG™ÏOíOÝæÔ7׫–)Êéƒ ç,`»#—O—OhM*©\:}8ôÏ´_XÇŠ´™0§dàåD æý¤ãÜX.†9zøsxCXÛŽcð¸7܆øpl¾­ƒ waNï9DDÞu‰Úàıœ…Õ‰J9'Ê𓲢&3(B@¶O÷¨ça°4ŒÕQú¿îWtpµ¥Ä—¸`3Œ•Ì-Eø‰0ÊÂÁ¦Ð Ûù®À9xBØ4=)Î,…ü2ež¥vº9Ô^2ië²Úí¡¹‡+ø-ù¨QkÔsÕìN$€ò@Vi„ A³ÜæD8w¨²ÞïlûÓâÅp†“>îšMÌ*¸g´Ò¨ë-¬ª)-àù»zœs€H™A*OçÞW;¿†ÏS=ó2Žáêa<û(õ;Ec÷’¶O ¼U¦nQ?7ý Á'´»?ÁÈ(DþAþnVšµ ÄsŽøuîì–¾HäDߎú©l~âIdiz{Ç=dâƒ)M@ ƒÍŒ4žáåè‡v~‡ð†€ûÞ°Ñ)÷…z(xs„ÁÕãlWˆj9ÜFÛ 0‚ô¤ï!{†Ùø Bf@C=k¯*hÆÑXQ”dÚ·‹·êrHÑ‘gÛÄ»l T+žYt2r÷Y?E>NÊ_pí CæàQóoà@S=ÃÔìúç˜m—d럦¸/¡Ê{*uü9»…yO‡:—ÆÞcÈú$ð)!D=¿ÄwúÏù^—»|ïtUBß ƒæü ŲîIê˜f}àQȳ°Y:¼¿YÚÔ‹»c{D¨#θ[2ôRY8pÑyây7êìä§í'â,µ™Í.2·Ê®œY\á?ÁôõŒ3CŒ‘E}ø·wpñ[˦œÙ–S dß¶fj¤ås§Âæ^ÙHŸàƒøªWli}éÞb3M©]Vñ‰ºš]ÜÎÎU”ºpÚtFc;-XÁb7çfq…,3¯‡êž{›GWL·~/b0ä󦌖èéúáì´¿òËèz{8Z.îÏ}'ã!;çLêÍNf95ŽVïÐæ…ÙVZͤŸ/?Ó2gòlj„Û³¬Æû2wr ¬r°¯é3¾ÚÆ÷ß' ên×4æèí©²nVyy8U Ï>`¿ŒKîÎȈ€Â/6"/NYÈÜ»ø(áIM‹´/µkƒ÷ÿ æ÷ÔÛøãû«ãìÊhÓtlýEŒ«[ÅÆ’d{ø0ŒrÝ$žl JÆS‘³µ6zóІ&ûÁ!4gâeÁ%¯%æšg¢½'Õ‹;õÏèß­ÎŽ@‚l(Ô… ’ÁÅ+p™ƒƒ (È^ ;KÙÁƒ}œ#å ¬û”æ nxÉC˜ÖBœ»W$ 8éŸÑ7'¿‡ÿíÿ^s1¤sÁãÛßB}yDtdÖï±H¨HKÆ^™Ot¡è$?$"!„„Ix"ÈÓÜ¢æö>†ïoÁì°“›=„cÞ{áɃ“1jåñÐáÞÎX•ƒCèEZˆ¨ÃWO¾I¼¾_2¡Ë\ž >trD=ȼ–11DM<Ø¡ó%æ%ÃŽ!¡d¬ˆ)@ËÚöÄq*°Ü®·œõ l 6JO]a´Ô»B^—÷#àvÇîXï'¬ á¢òn¸øXÁõ:¾-ŒD¾=päó¬¹õåµ·çêÜN­ÇHå´¼Ÿ§Ò7:‡:$2ÇÝÛËÈAFúÞ/çÄúîO“NK}ç×uóä¶1uâ{wm9´ÈJ|ÐaÖ›G‡ð¸Qã#Ãã³Ã’¶ck·Ñêl"ç(P9ø$ÀßËmð-uµ˜ŸÉf«[âÏŽòLb×êK ±ènOqõõ~4{ªüX¶ßèüyhê¡«ze 4‡D\¦Ž<І)UŒÑQ¤O;C50–k-®ù'ÆÚ½‚ ɘ>xÊow|Ï·ŸË©òñÌ·ØQz¦ôs÷|ýD ¶î((£ô9å+cã_ZSë<Úª‘ø¦dScñ˜†&Žì7I¨õÙÎ6Z‹—RST^ööÕHµÁݯåæ'›víOõhΖ6=o~1ÔÝ}ÏÚ/ÙyI²ÈÁaï6Y< Œ{¹æ‚HR¢ðz%1Jœ±3œ,½Ä)³=ú½@Ä œz÷C»éBÙLZY¨Pˆ«Tš‘ÂFwEÏ—Ú\îºe§{ƒ¹3@O`×Þ.€–š‡`¡³g!ˆ×&om\£ÄBŸšOSf­ô‚†àí{ XkRijj«zq6Ô}h:'ª fˆŠ¢¼$è¨ '<8_Ág¬Ð{XC è/µZh³B®u Ó†¾Û¨:7-¡æ~o»ï^‘<-¢'OóùÏæÄÀ‘‘N^Î!FµµS©éÜ`_½Î<¤[Fªšã¬)žŸqóa²ÜsÓÚ{*MùÛ¼"UßÒ ³ÄâSùªèæ£G4tà¼Es  †”š&©íï4ÄÞes1&ù¦‚¹Ä"ÉÈÁ¶ðƒ“©¡ƒªÆdx÷«›I@*»¢p®¸6dFA–!Û˜¼Öáþôô¨>hŒäM¼ðU™r]PTA$ÄN·ES(.IÙhaXù™Ñ&Ødu}4$H܈XFb1ôQ@1×?„óëîÕó £´Ó~!„ËvNëàÞµ˜èâ7…œ<×n”5Ž=› ‰Õ¤§¡YIÜ,“£éßrÜ)y éÚI5&ú£Ùý Sâ­LÊþ}ÃT7cÄÄg«XÈ[Ï Êþ+ àÞ¸¦öÕã” ÛMɧ «í¿°oV=Ðo.*¥ã§‰,L¹ ¶à”„„¼ŽÒÑ•rFpÜ )Sƒnl˜Ð¦·ç0‡¢KÄw1Å–Õ©¶Áà3°U“ÂÎ2Œ³é:Pü¾qõsXžµÑÁÏèúi»7¿¿:$2˜äàBtêÐâa¹wc©²ø¥8w½ÜJ^Eñ°aÆHá~ípíú1ké{ñ—Æb×â KGfqÜÏïgÛÛzøé·ÈƒíÇ!Bìcö}v¸¯—Ql8ò˜žÏm'f4Ø¡ÃS  ñhµ<Èq…•ĽÁ©ù®ZH…Lbë6ÃÖÿžý¢†¸™ ÝÕ“Œ^6r†q4£žÒ}V2ìP#¡ÜGy¡g>®{‘Êç?~— "¼øˆD/2úƒ§pú.ýÛÁO¯(eŽlû¥Hˆÿ<ø³î¼f-åÝ‹ñ¶•ñ:ƒ&ÍÁlf#×MŸX™Båž‹=òÚ¶™_ÌAv.ã‘‹,¤‚Ä›úz+ÑçÉËG¹"ϧ\ôR(©.m¾+Š“¯vJUãŸ{¢Þ]„;‘Þ/ænñ 8}_—g†ÌÜÙceD÷ûÅ; ç$EÐBè¾Ï¹Í¦ÁgI²‰hXœòs+ñ¿%7ŠºÁEÁîAyX‘̳õéÑ2Žé€´gQy´Páb¹Ä•ôzÞ=†"פ(=Iž32\ÃýWÇgèg¯ÝyB·j<×\»¿¶^Vð²×¯„7mÌ0av]°Cª÷½†b”‚ƒÉ$Ji¶ˆxœ5û‚L0IÈq·.džþxàò¾ïI¡2c^Ï(Ç–ZGy!©ƒ=Ÿ±AS%FE|©ö->”"·=Õ.Q¤C;„„TB ÝQÆv`ü#ƒãv\¦WN >JN8éܤ]É|Êk‹(ö—uo›!a±ó,Y•ǤÙ'Õ#‡_§DÀ! kBã%ƒà¯úñú¿,Ã,;žøübR´§ÚÛÕ…ê%h#)ò×2Õ àâf IŠEêŠ2|½¿?ê3W1ÙöbscÍ—êhˆ%¯gw’d+–Ù¶̦7FDHlrH<؆„ÙóÏ&:9lžžŠ#’~Y†¡4âÆ\<,m·ööœ”`¢OfÜ÷ä0`'r°û$BöÑU•g#ÍîáÚËÛ^V²*½ „Üφ #Π϶gâz¡YÜíœ×é¨BhÎtl…–¿NÇ&Œ˜ hßxr@Wn»ìÛ·ô u g¢¼šíÁ@)0!C†¡b…@Ò±§†Lkâðï~A`æ1/ª EõÄ PIëæÈ´‰â“nö ÎÒ‰i‚µNŸ—³Ëâúü`•÷ÓõÄ TeÜ+K.ß~NãdñfSè,qž˜ˆÊ{,Æ ^,–b £â¤Ö\Œ%_M¿ý«7í^e¹‡çíÏÃqVÉI …q¦s'}[~2ÎÃpÿÅ“ƒc’‡=tiç,ãøqÙ$Úüüå¥Hs.ù½k„¸ð•¤nøÖÕ|2LìÞ Í $°ppö#yýžžU£< X'ô¦ “\ó-)™]Y|b‡ü\n,å¯{|÷ûû›9ÐøwP$#?ÔŽ´ùÖhÁg„2ð‰ï%K­v(³QkBáÝ¡·þ…ƒ˜µJ‚iûØD#³‰˜i6 @üX†æ|$á–Ìa8Ѐû‘¼¤ÖcMeø4¦¿³8œ¨ " “µéúÏî÷óÈýB3¡9Ô (z]7:n*h®ã‚Œ’p:¯‹ƒ¹Öf¡aXÒF@&ù Z÷ñeg;5»!)ÝÈ÷8ÑÞ™¢vq»D”Âåc8$/Œ 2{ä:¹63„Qì—ä”R¸övš-—ﲊ–ìÂAú Û\‚%8Êf€Ê…À‰îJ 8ø¡ gž=ÏQ;éñ‘ª CV¢W$9Ü™é”Õ2ŒƒøÅÖSl$CËÔݘÅÕ_ +HÑÚêÞ*£^ª»¾Çô¼¯lÍþåMð½`w!ãmæE7“âÚÌ®¸By<¥îuÉ‘ðÌ (t~9ò\°~©é{™^+rïª!H6«Ji(àÞ=ûGs°UiojmnÙô±a5ŽbDØ“. ¥11ަÿ‰ü½Ü~çÉ=Ž­³/EÓÙtµÅó^¯ƒ‚¡yIÌ+Í(#ÞmVùèÖN`>Ân‘vÀdõŽœûä=‰,SBCÐçd!jžÇ àéxŒþÉ šl)IÄ`ì¤ÖÛê™7óÒ)€)·>fpk†‰àu¨³uÞÉš°xŸPÍ8ĵK2“m -D—¢#ÎwV+``Y΋‹h¦qÕ4„Š’Ó ŽJìå¦o˜S0â'òCŲÕ9*¯s  ‚œ½›Ÿr®É‘åÒ#,óà2“©qÎΘ–Cux¹mz¡Â¥0_IôÔ¡úgdK•tZ¬ HÒ 1JÍ”– ©RJX¿6pt'p^kœò=¶PÉ"Ô“°a©cœb×½LÊÿUB²nwOÉŸ`”^ÓŠô‡š1÷Íz}Ü¢4ÊdXs 6Š6°SZ‡waðmÇzV]üû¯$hê(ðШªŠ–)ØÌè|¯HCª¾ˆèm\ì( ša”ÊóöVØúðκ˜%߸5L2=C¹;ûl~·!ãìïÊ9d`»G° ÏùÚ;ÞüÀTˆÐôVDÕ,‚Q “×§?= Y\jÍw%çTNÇX¢ÃˆÆjØ£“äí½› rÕ߬V$Öx¥Ý‚®ñ÷ÜvÍoàá£nþd3t¾«»?¿Szk¦•”=£ÈŽHz] w¹AG”$¤a*¹¡)l²0=ìpkÖ¹!ùä÷}Î=ÃJþ•þľ²D"̉/µˆšU^Té)âåý„ÞÏ õ–ü—¶+Ü›£î‘ÛÛV8qœÚäß"—D¨¿Øò•¬ì•„zv=[Ûk<:çZ8C×ää¦.G!w¯h¥ @ y]fM1Î Ó`ósŠ¥öòQÖ59˜!±.g]‹_ &KÄÆ>Ë3Öùß·gÕÑ~>çZ?On Ä\ÅÛäŽ/ub§#¨OY‰NKÙÉ›´Ví’é³ë÷~ç%ë,4`Æå­eäQøÁ6ˆºJª&Ž ø½å¯ì1>‹±kúÈŽ\œ'Yέïú±ä"÷Ä–8œè?riŒhjܨǤ|9ÇÙJ†íÏY½Bˆõœ'жçÉ‘ÂpÌVt ¬Ë<{`;MJ“E¨57ç6*ªñ™†4·{¯wz5x:ª=wø¤“.{Q\‹šÝ°w‡‚p'(@1"a»Xg=+EJªv–ÈÜÓÍ Ug'ÞXéó§·Ñ*£_±`€ãÀ»]—[ÔÈÉÜt ¼œ\·Â¥6¡à×ì|Pï|§µÚî!ïùqôÜM½o†ÞØ»–å ©6v³3•çq28Œ4>N=3Þ³áÚÝû{1@Î^Èä¶'ðbÁ‹Ãˆõ,PãüD/žd¿kGéîáG­ù£ìö_éyƒ/e-}ú«NΞÌÀÚÌžª'>þ­0|šV1šj K“ÒÐ$%UÚ‹?Ÿìüž\W}ã\PY{¼¼ï¬Y‡/?µ=•àüëáüOEs¬<¦d'ÛÑi¶uz{ÑÂ0›¶ùe~\£;âñr¬ ¹V.kËGœéà¡Ú€´<[]1¦áJ“í†}?Û{T¥h9痺ùck¬>6LãW™×O.÷Éžž¥ÁB7ãÊJ4Ù^ :ó]Y×4Bbî9~~s:E“Hü'W“(»k½œÞP‰¶;Ó5º±­Ék½äª‹ÛMÝ8Š<œ&àË7y86ÊgC4Rt|ë ²Õ ¾ êªüÎ(¶ Ù¬vÅZݬ¼ê3¾ Ó,åçÏ žÌÑPÙ}.[òÌ2'Š ±uÛéJ2sWµyD™sñØÝè=é³î‡‰¦zK‘Â_¨(j¶aá£HÎà‰Ë@PIC§¹uZ¶Ý¨iñî;&M[i§Hĉn.:Ô¥EÔHR èyÚŸX”Üe3`N£iôßà"t²ùv±5¾Âêj03<Ù{Æîä{ÇÍ·i‚Éò`üâÇSù=5òE8«Þµ Q³,>œGN9´Ù3Ù9­¥6Ú¬=È OIG”œæ­©c’Iiª ЖñÃcÙÖ÷¶¸ÍíèJ ÍLl¤Y—EÁ‰ß7&¦ºHðÂnÇwV{`°]4:D¥iüÚÜžØ]Q»tt•s])(÷÷0[á{%‡à„àæ! ¢‘¶~L‘‰ž•ŽÕ,43 ¢/… e³Æ÷Nà³kD%déÓ<°Nïfõþ—GžL#µ§k¿‹çéÛç²ö»]zc™!ƒ” NxÃE2”ÍéÑ՚¯y$sN¹?Z*ËŠ#Y€àùXö¿ÚçÜ@Þ v¸ŠW3í€øÓ°e±fK¡ÝœÙÉ tòN—`ÌSa¼zÄ48YŽ3Q{A]ë.¥áDUÚcヹ¸ÊNÁÏÝàôír€JCMÞ;Iñ^äÅ{±Ò/î³LޤÐöJ‡ùE]•°ÞmKl-Ù5Î}ÝÛË\ÄÛÃq¨‹MTÚˆD¢kĵàºMÄé˜V|¡Î!¯"Þ[ÔÀ| ‰ ¼¬ÍYL8Mç‹NÝòaϸsF]#oÙUÙü|‘Ž=bór/w[û¯nl¬ã¦éß"-k9ÁÔ%±RT¼ËAsñú ¢Ä ¼­k]Ÿèjø“÷‘+çä@–‰ÔEÃT¹Ä(²Ï·&(¶Ì‘2 ‘ðh ·q•:’rãÒ‰¢³êÙð¤û:þ‡Þ¢¾™×<ŽŽ­~èg¤áa0v.s Ü¬²´úcò¤Uœ/¢µBÖ'*Ogw¼ëÝ#ó™÷Ÿ%zOâMÛ¾1ïÍÍ8âöˆ²vúŸ}q…ˆÎb½Ï?ª˜ô]ÎÖ„½ˆÙ§Žð•М´ã6ç7ÓKÇUO0­…áJ¸wƒ©-,¡“4%ž@¥ðw€˜}ZjÈ÷Ð&\>Iêð_pªyWð†Ê­ÞhcErÓôì*ކºí¬ÍÆY÷# .pŒ–žT¿«"›¨°|oj©[†úçø[±‚Éðújù3íÉ]™w¯f‡Èî°}Ä´p1Ñ܈ôf·çÙûýåUUUÐ'K½{ß‚žžÞM89êêf'ZÙw;Ãöe¢®$äxýx;jØL…i†…8K¯?G“ g #]¼ð ò ¥í}ßÇ®æ_ÊO»g(ó=Åh¡gøŽîx•ÂFH²7»?é?‹Ýðþ­zÈó÷ ˆ35ªìLøsÂõýèD™1Ÿ!@Uigµé_†v£#΄‡©H+Ç³Ò fßÂE £WÕJ6@³2`g`ìÞC’ŠTGVº¶Ó–£7±…¾D7ôUväda©Bl± cPÀ-€ÁF/BÕ†dšà$ἯiÄÍ[–z"§Ä ØK%!ª¯¡W~•™G¤‰öZIqi¬® %Í\„Ó:ïô£ÙÏRcEýbÕ+l ¡ :8ƒ‰æÿ¨æÕƒù`y_•mÞy<â+ÅRJ?ðv[ïïN sb¹$ ö)Š#¼Øˆe‹*DðÖPàÈy* ýWÕ‰Ÿ9µ’Ïãõšúõuˆ ××_·v!˜‰yúáÀ¹ñßJˆÇg²g¦®’†`Ö]™˜xmä\­PöÒ0}¯°3]ÝÄ@4öW{›àε¨W&ç+ëW°rÞÎg³&€gÉ¡q8 @ â)¢ÑlCXŒÅTpo‹›^Œž6Ìñ?á·<…XXw8 ¯­®¾Ä8uýkÇ­½¯ò—ä¬&Aõàò9L5;Ž ²ÒëþiÇ’k\ƒÁ)†É‚ǰµl<ö‘túï*³¹Ñ›yyGÁ¹Êª¡÷µ30p.CpÊÛh°ö5à‚A©AO¢”¤ uT¤Eõ"Üáá¡.þ Ýg.Å®ê¼9 £nG%Z©Tqö:;ÁÎÅÔ;öΡÀ¾8‹,wme¼ß¬ Ÿº‰ÁI"¹‘gO8w¶çbó Æä IFñH€ruTáPR‘}.ÊŽ“fÆäÑA„s§¥ý9ýI”@¥}?•ê|îtpªmÛèv9d“_ddtbîtì‘í{Fž·|ÁÆæ:ôô4Ô*_ÎáâK×9?Éþ‘¾¾=~n[³Žoµ¢RjD-Ì“ÊÞ·n{ÇÏU÷‡Þ½”nïÓˆ ˜xá8ÛÜåé•EÒ.T"sÌüLÕ?d×ù4‹¤¡›’7ÙWMÚ×2iMÚÒ †Jõ 8J6T÷ÞDz„âX»„XM!ûßR¼V§^C„xß™½ØìþöÇÊÅæ¼®tpx$ÖÝÞ·móÓ¨þº2BÙDƒïNx!é9ݸ '! “òù„0èûZ@ M"}Œ:Lª© yE”ä´Þ ù­†.rêÅf ³z§Qm‚ 3x„ï¥lŒ^¢ú:H8'r{ójÎJ±kƒ,Ù4Y<ÓàäC4G§±î¥é!é×BVàrƒ0Ø}”hmšFô4nŒT‚à´º?SÂóõv»Oƒ;þIFì«v>ë‡>;î]§†Y‹„О¡îvY·o”gnÅÄ~™Ž s‡ß<^~nßÇίT›}÷ž)q˜:ø83‘fß+‡ÊcîÔâÌÍHž]CÀ‰íð;Ÿؘeb6HÐm°þ½/zóÀã·ïþƆ£÷ŽöÇ ÄÝÓˆ¤ˆjðT,=}92P2në²ïø]ñZàŠ×ݯO‹H˜|ÇØV®ŽÎNh×…Rk…OBªÄ²KÜ]–#Ð{ÙÎî‹99DIq[–ëçJyîÜzALÏŠM¤r†ÊüÌñm N>-cìx*Gòj0©$ß,X†úþ{]^+åY½†Ín8ü®K$תþ¯ÈÕ“]®ìvî+ʲCêÞEMút2o-¾2ϵ×záócè5ñܽfËñ挀«‰Üïñ‡H(ô‹Ãä ’Ô·uéÐêÿ¨îY°‰—6S‚$3köŽ;Çd$š`C¶žûÔBBÞwG²÷qJ†‚º–.ÖYeoÄ÷Q#œlRD²ÍŠ)ãíÁbÓÇ¥ðS b¡Ë»x#·k^Ô<¥Ö£ºµ„(Mn2$Çs‹Ùc^sÕÇm$Ä÷z4õDUïoo÷àï ZaW{îמë}â5šQ¾s¾“m1ÆñÇ®¸Íbô™Ž+WE*¢69¼)âëNÓ5&ÄÞ_8ww”[ìD¸ÌõøWb€gf¡ÓÝË÷íS¼ ú9Œc.–}¸ÑW”ñ4ꬫÕê_J•Õ¦&f|¬4åxN–S«;:¿1ˆ¤yúÎ/Pq™„a<¸­ÄOi°?"‰êK­k¢ÖŒtZe4ÛÑÙDZ¨ß&xãO›bòZ»ÖŽ ¿{ÞLqR6eëP½¯=`p›æµáôó:‰»ÝÞê@âÁ˜3À…¢ØÔt Ò*¬ãÞqb&§]¢îiôgrváÊ­ÝÜo 탗¤xBNè¨,ÛÑxòÙx³³ªˆÌç—#Þ÷¾¯Û²Òò "Bvî-fâ¬Àw‚§ÃÂÁnÎzJqéüP$Ìp››(îNKMK'óƒÊõk¶|üvñlf`{©téBüW–Í!ü_'EŸ=¿%½íÞŸbòæÄâÒ`é nGª±kNKh±è´¬^ˆÏ³Î•qØòì&HHn iž³îÑ)6 ùÀ¿P¯W#žvégšËV6†év04Š,xTÑDüR€1!VŽÂ  3¾ë×2n„‚û" r¼Ié #£õ¼W%’ø —ìˆ (鿝kU!Çyˆs>^¾g¾ ãRL-C¨| Òå#>ȆÂaR(QŸW­=\É„ ZgôdXÞ.gŸÍ€8 Õ]»\º”®@ZuUK(T›ñÑ®-k›ãÞ@mƒ@õtÜ:†!¬œX;=Þã¿¿ï®?ˆl7(Àwòk÷w|TS¨x¯)&“)ˆŠµ¤¢šÇ¶Y[ã”.=;ã|ûÎìš3Þ*.(ÙœîÆ}FïªS8ë¼Xi¾$6Ô–“s¬w}ítŠï\œÜ‹â=üŠ0´\AµuJâT(†gátp×âî]æuIÓcb-MZ.Ip†‚š"[Nã±kݣŵ|·ú˜¯¿ªÇ_,ó ³·p»š:¿üÒœñ&ÊÒ¬‡¬mr À”¢èi›ËÓ5Ñ“}A|2t?,dhÖÝøºGÛåë™6üËdÙr;¤Ü0†kÞ˜pð¤î¹ƒ ¶ÔÃÙûª€wvgíÙw~àäΪ ý{n{ð‚ŽÇ¡ïTü?lÂíþ7ýÙZwnâXôöQM¯2ÒC–AãQ*°é{Õ‡£‡ãû ³G¿ü“K¸cÔ ìƒÿ@cföa/ÓüŠë´“W,Á½*5šöžgÌ- @ª‰q—mgórΪ¶û¦B\‹o*ó=RDme•­OOÏc36|’ÅjãΉs¤™1âIlâ Q5+DÉE OÓþ/Äë{úp4²ücƒý8¢üN50Öà¿§ÂÁä~:òæµ+µÚÖºIóïL¸`VÚþ!õkéÕëí\Q*;àT´Œx %_2{–§ ¼9c xQ‡­‡ïàfΊä+üó:Ú‡7Íåj &ºž¤aþäN)>ªç?ÕTÌ¿ÏSÉ»3=Zqsí8b½¯‰•J3M)1)ECH%2ISD$M50C6°”¢±UX 0˜<6[|û/&LƈÈ“šæÁ7Fú– [Ÿf¡¯ýi ´‰RÐ…D!3HµvàaI HФ’…&#ˆÐPÁO0¹d4MF›i$bZæ3·Zþ·#Ù'§‚ª÷´’ýîía«2¯óeýõÿG«-d!ùÓ"A@ý„§ÛàeŠ Ý•¡ŒN²Žÿ;.œ`ÙèèéqFîGŸºý?Ýh͹º}Òu_V6‹Ô›nD\#¹˜û*Ë5Y¯ß<ÒOO¢Üçmˆþ´ß m]n¤Å9œæÆ7ª¢’º_Ì¥+"‚zŒsNfÊ͹¸ka©iÌÐÕ1´#L7qmЬ¡«œjãÆ) «Ûã$™8¶K!„ £²Åu÷èî~ç!ÿDzýïgîóá¨Ã7ºÙ#ÃÙæ¾{øx5ÑÇMÞÍæ?»‘uÿÉýYwìíw¾?‡×ôüßOïøgø¾ÇvÑé9X4~çTÿ‡âoÖýUäHú?#K]—ïÄphüâ·Ï@§÷þÔôÒbÓ¶}N BÔÇîΣûk(”øOux¾n' @5oÞ;ÿp÷‡Ïít žÑýÿÇ÷¸Þ}Õñÿe‚ñK|3;^+ů^väÒ;ýèÜÀv©1ø'=ÿÄ{þJ¿\ØþŒˆç9êñhÁE=Ì`Qâç+÷¯êØͶáèÏ,]3)Ø`‡ñøöÛ½í~‰+ª­{Ùäëí™ÀAI ¢¬GØýгî…??\{îë`ü¿Ñ]ÄL•)*†‚˜)¢—˜0ks:= õœOMšÂQà+*_¹Rø‚ª(QYUÛ` „ÂxÇå„ë ÄÅäÑÈÏæìøîN!;dn˜zÉãôý¼¢<„Åê,# S—òRÉúOT$âúWutj™?Îs¡LW}D9ʽéðú»ºì©°mªó”SF—ÕyÕ<·Ké[ºX4"ó "ˆú1þ¢ òÀM›:ºÈUxøtGI‹—_¥pÓ ãúÍ5_KráÞôoF¥ïNž.ˆ¡ê‹Þ; st½. KáÇÝõì†_IIxÿ¸oíeéþÉ‘Ïòrõž†Çb¿rÏàA"He ŠçÃÓš!ð˜=6újQä Õ8e ì8e5Úk®e|#[´¤P“J*F²á©{ܶè’)ªÉ:#Pêp_MH›»í䄯e8_6±ueb]¦`•"f˜ú‰–ŒšÅé ¬ÈE§íZßÛQ®IÑq•¶4}žRáE¢µ)ðøäènj>æqh¤%høŠ•'ØEЂ£¨N»„½áðYG{(ÌÂÊ–±–¼F°ÏÐ~½|ݮœжí|™ªQmähõã§M~Z &²6uJq r™çšjñžÎïæ ÕË7}§Â¨m¬l·YÍu¸AóFm>þ™—/‹N:©¯>AŠ»!ù+œ_lÎÞe$T _ŽÚ™èýv…å)i¢äËZÌW"± ¤¶cèØ¶}M„=í6¹§¦Š@¹|D_ʽSWA8‚L†àߟÕy™ý %9]Q}«:ûËAc¬ô]V¹mÑh±ÊH Tî¯]¦ ÚWab( „ÉOýà“ª oËÐ÷'½“æÑo“2\ˆ™ ëÒ0Êí¢D QÕCïÿQŽKïyüNÂN—á<ðMROž ” À8 %¾¬õÒÂŒª<\ôŒú3w ¾d ›>×þÅÀ7dåLm«(ñ‘ø.GBåèêdÈ/O<·f€ËÐYTùê˜|¯ÂŠFε&óævï*¸8?(QâÝ# ©È9Qõ†m¶-À nÑÄ€A{‰«ìû{:,îÛFÝu¢¶5]/Iw0l£•ubň¥¬>…+G !¦6Ýêhiä1 ¬|5‘˜¬`ÛŸõ½ ÓQ.dG ˆ^…$@d¬T·Ô{\çW_Íä·=PþË”s÷Ih4NÌÔç=$X ù36 þÐÁÎî\²xxp) VŠ”¯«êj½µ0(vm´û¬ö¤âŠ™PäÅÐë†×%ºoy­E,¡Ô&n©a:E“å—È™Ó}–"m•‹½*ÄùƒP÷¼Êñ«J]õˆ·Õ[pĶÂPÁtÌÑ5Dæ^S)}´¢éÝݪ®’Uceÿ>*0f-‘áBúsl9F1шÞi]Ärói0åËeZãYÆÁ‘¸±#—Ëž àÑ_,å—¬ž³ê:‡¦f­Q·œ®YúÖ«\:ma7£;òÜÜO \pñ>¼Ud˜ë0N*ÈñlÏX‚]6¨¶ó»&Wî¡âŠguò»eó©Â~R9¸ŠöçPA=*ÊBœäÂìóʪ$«ÈyœâÚ«9p, ü‰ET—;µgÒ4è‰lédIêô„úOÕ~ÂÁýsõPgl‚$LÌJB'ðÅjOîCÊÆ ÌÝ®R5÷køVvöûÜq>hú—ÀëÆb„̺³º>±ã$@§«„ÂÁ*l®Œ@é´Q]g’¡7„:”uw‰Û—7Í4Âó¾|ÎÓM«¶Md£3¶=Óª½|e` N:êd©„Œ°l`Š:(—ڳ63‡¾=‚±<‹”éúÃí°MCÜQÔ×£(­@èõïb‰üÓctŒ¢ùAzwš"fZ1€ˆµÊ03103ÇijÔD xŒÆè -O9DN¸[TÀüôV3e‰¯2d`Ïܶ\U†aI(â9y|:<ïŒð·úÄN5Eãd;áãsÌ©áK§J?„RC–ˆ£Ìm~§zFÿÊn4ö[@½˜ê,Jc·%¹Õ‡-«ZÝ 7Ч%¸0~”Ó{Læ‰ß³ÒÔ…N4»‹«¢eáI?œ;Sî\qÚ.['sÿ>[9Ì>,þÉvlT{ÄDcS9Ä41…ÙÓ`²©&³%ݹ/5k3'á˜ËÍ_gîvް9n–Ý»#ŸVgíðf X¤ŠˆŒ 6êT–Ë7nå1–v=¢ ?®Ÿ0ï.(}"ýNKÚÂvãP5¬´ãÝãÏj‹ÌVcˆ\ƒf¦raq˜0•F¶?ÂñdÁf vOõ®ù Ë–üÓÄ@½ÐqLÏOÊO‘%R=9ùùwhyVL鉤әG$yMj¾½XJú~T°‘—q°É®›*…ì°Tê†t%á:0ñZêÒè½};ðæÎÇt_t¸èÓ ùL[4ok-ô>òðYëvv§©Þî+Ï6š%&ºIÒWS¥ÂÕY'ûíì4¹©Wtìp÷[SNz;—L–äý†ç›—âwº0Y1dIØ¥â‹`PBDBº•ðžw#²ä0¬ÊdW³¦=<¯Ò{ZmŠ6‘“ à*¾ž`ìdΪ¢Ýé¥vy뺰2“œ¹ˆ[œcÊÏjÀjR¸õG \ø,Ó0i¦¹V±@y°§>tï&ñ؈®þ»ï8_ú™v\oax+:È«ŠNå<ï•s§Åí‹ÒfSXÈ« oÈ›¤B®Ã!Ós ªžÚ?so9Wpû¾ôÙLÊÊ`ì‡;Õ’¾ýü%èÉëâ}»§MeƒG,lr»$EWŒ‡$‚ÉL\µ•öÄÀ̰ '¤ÔC7§ã±Ï½{ßDA’]Ù›šI&üMt(h‚Kõnuvä¸â^=™Œ(Í£Ù™›!Ã(!â,³¢&ÈpJß×ÕtìäçóN*UGgð‘üÒݰ`±Ë”]ÜwãëÝÛkÈ1…ïÌ‘‹K¨ìäM¤rsŒD—¦燚¨÷:'=FV¦ªYÕ5‘˜vÛãêGÁ”Ä q,,ÝíÖòù¤#‘0( æxMƒÄ¤z€Y’„«¥Î²[LŒ²‚Ǩ¬|Aõ÷„Qú(* ë}7ðJú¤¢E$B"")®3 ˆˆi  £Ä@ Ç÷àBdBï½—iÛæÍ°pÐDx¦h HØ…KDÑ) ÑQ4‚T@ö ඈ²2! MóÈQO®çIœ\ÅRpW÷'Jîe’Ò0QynÅ/9òî×õfiÕ?§ÎÂdÔ7Û×-BvXEóÛïIåBîîüU¬P¡Úÿ´œž4X×õçI{ÒLŒ L0‡ÈÌÀ‰¤1ëè°ïÏhH€% ,>ÎQçÛë2D®ÉZ­ëßÀ&D)‘PHPDw ;ÃÓ¼HRÍNAÅ,·H䟸à×Þ“d2çÂQ•ÿ­ç'•>@3êò&PFýް_nÎíáã)A ˆ%M}V÷’ò~)‚)ÓaÏ„>QOe9vlìcË"išk쨒Þ7c\ã@$E(MY»ZññЩ2!72wêŠ*î‘JQQ¨4ªÄßœãÉô·u߯1¯'?a|£Ý}‡*‘6q’À–ˆ;o«£ív|îÃD¯Â½¯M–²`>Tü·¡FãÍ®sìUnbÀ²Û ®zô-4ü°ÆEM_&”“ÜI$ªÁý~!ñpQyé­“Uø›¬s8Mê{@À«×5]Œ¹³øã|eE”ÍJ‡‘Ü^k6ûî¨Æx +‰´©(åPAsë®§Ô`0=&È=Ô¬‡\)|ÝK{æ¬ß×\ª­4Ùm£ ·ÏñšJ÷¨Œ(rNþ¢Ü¾¾;Š3¾OêÌPçåÚäÚÿ Þ(Çñ¾÷=âóÕ3QC¯¦¾Ú˜DáM1÷‹šMEjå„•bÔý5°²W[Sºa ,gš ð°¡FZU¯ž—1Œ¶Iêõ‹mWܰ¦+ó»!Qe0‡ÃºÕ’Ê.¡L ¬H‹¸3™@åήŠç“¢&WúŒ‹è[ÏIµW,Ê;Õ55¾>Q}â%ƒ]3BW fÊÚž*¦eø`Ì`z¨”¼¯¢Xñ:w¨Ù5òPàò“¸‚2iQ9y\×d_ ޼N3Ämâó9ýR%íÆ©¸ºUh9&˹gW ‹¨uWP“¾ø¿Ù7lÒ£SÂÆG!©‚äþÞ†^ßPßP(®Á%¦œ¿Ù’èei÷çÓOFÞ[uT-:é¿öègT[lyè6ÑN£†.d \#9PZàùÈÛ™0À_c ©Xp\dYÙc¶T‚ؽƒs”Rä}|ûbÖ<÷é>ÇñûÕ 8ºÊ_¡Ç ˆ§¯zw¯C]»Nj…e!õ3ß3ƒdÄöÏ^›†šÏó‰öÉ ßþ!ñ<­h"ñ(ˆÔË·DEý¼ËúMøÎôÇzMn€÷ý}»Ä+¶ù¦šÐáÞ’øíããð:ŸJÝ¢y;—¿»8÷ôQLÒÈï£-‹ÑšÎiû0ϤO)øœ3F‰_³>W[c¯[ôá-ù)±Å½6]`€Å^>ÔgŠcñBŠå}Ù(š­á€Ä«0¢ñP‰Éì\ÖŒ¹,!¹¡©«½ðŠxauåKÅÌðfª5S—ª \tÍõO¶ÃîᣚsªÙÆA­Îת̉_~QáqϾE®v?Ÿ÷~¿éþ_#~oÃò}É¿ùyîûßW×üÿÞ\©“>lõ‡­åÈñùµêÑÒØžú±Î0|{h¢þÅoøáÏ’@ îû’‡[paÛÖ£ŠWô|Á“ŸùV$Gë¬ÜþçñuýR5}‘6W#0¢‡Oa«ùvTÐ<2p~tT‚“ >g1‰HŠ*’ ¤s1¨‘­e‘±Õ- ­É&T,†Dù û_T;¯Ãp-xpÁÃaÉcõ¿?éˆR~Ž¿×ûÝœÑôõzl˜\¼ñüû#çgŒ™×F¡ì›ÙÂ`ÚÀsæ/œä˱—è_G¡îf™íAИx€ˆ ~°à(äû ŸÎdƒ£ƒ&Îj¨§}Ø ð#ù ;Éh÷xˆøÇâ ,½1žû&¨Ëå‹§¡¦Ž>ær¶#¦JüÒf?pœƒ †äÊ~ìÃSDGÛÖöœñ‹…A•eXå›.ÃrÈÍ1ŽŽC*‹âLÆYØN8Ã&…YIæ=JÊý \„0·Çø,#<.þ)7³ßêÅ 9ÎÖ§©6œ¦ûð‘¥Í0Ô/?I¨úÖµ_\NH#iD’@ç;UzQÙsœã×rÐÚ8,Q¤ä4k2‹[о‚‘¥¸„ÂXG¬p8Ë25/tq‹FdWŽ“ÏߊU‘â}„vÁ¹ ѬC5aæbœ@ÅÙ¡Á'*ÁÁ‰ƒ†=3OY{_lvj²&ášñ,–ñq\Y¶^3›im`ÎE7 Ó¡*A³¦Øp’=~_µ¯Цò!ýßÞ°‚‘dÇa;âe¦c©„˜€Œ`@ÉÙŠ:¬kà?€ð»ÇÉÐ-š5’ï¼üÌÚ‹Ø'R¤Rœ<ù0†¸¬˜ÍùiG?-ŽCb!Ê3°|÷)U”PÔ(¤-ƒÃ$í3xÑàÒ`– PÇ3ØÍÙ<è]åPèeB‘NLv”²7r1@óÉš)gX‘´ž-@ºZ¨Ý‘¦aƒ‚Mf ¶6/<ÀKi­¦Š4pLÍ覢BÙ©"“·âJó׺'.»¶•9†óD8 YÇ„*S1©¾yÓŠp‰°Ý¦Ã¬Ï~;PX)"ç"ÎÈ8œîíâî_øÇŽÏÜÿýïñ|ÿ¦‘ÃÕ]ýýîãDKü^ÅÍ_¹’"w"û”/àïž·k“÷‘îþ”ô<Î~;xºÓðr…‡2t¨?×ì ãUò ‘»¿ôñ}¿ž\É«2€?[÷þ&éÏÓû]9܆?l=è¡ÇøÓî€ö@ç¢Jr°/$'a<’‚ïU!à|û@Ìúcâ4=÷Y‘ÉÅ™ÄC…À£×¯»~¢Åα¶à®yUDDDU]÷Aä­ ìaìn ±€…ïZ¶N¬ñX ùú¤ãQ9y¹Jåæ·Åȼq‚/ïúJP˜‰¢ºNETÄÊÄ4 QICTE_Á.LPn ;'*>Îs eøšNw‘Ž BH6ÆžHØ; ’b4ä#|ØtœRI¦3ë‹êè,!fûZÆ7tßíL<·Áâ%3.ºêmÆ*ä£í*ÛdQ5)kuζjÍØÁLe¨4³–<É’ŠÅðÛùÍ&GI "Ø… Q§atmÊêÔt~nŸzpc4çª•Ú ‘ƒi¦¬tÅâ¦S¿ aâš³ï» –¤®*Ë;m©Zw¯3Ôˆ§ó‹”è%¿¹‡ÄD6òZàAI›™ü#F ß ‘5-©½wOŒzéýõ´Ò‚¨ õ´74"éFbüuHŒ¨GЋ¥(ˆ#èxÚ&ÂBG/ãÄãüÛWÉAìA7c„Ƀ=àǸ÷;c¥%¬»ð8 tñQš³ý ¦'‚úf'gn‡"›»pÐ3ºª1QQ—‹…ŒŠ Q%¡CB 6œ:µ7ÀíŒã]¼`«–.iÂÀ‡zI$À(È>„,g· ±­Fa¶,rR5a‘Q¡ØŒ©D™qÒ’27÷k™d’4ãÆ3Üþ›ž7<«îž¯³ÚÛ)Ú"\y ›ñ8­PÎ\ëtצ?Š/Ѭ‹R®Ï¸niAp’Hjï”–Ñ’w¼Î}Y¬‚lý#ˆÐÁµÆBÄAŽïÑ=æ·:ð[8[«f¬¦“~Î:ùIä&>ž)¯èi‹ ÑŒ! c"@“ñàåý‰…É ñì4“L=âÄv]ud†3.ØI!²^¤h÷«þ¯fêpƒ! ó¯óøJz€ /Çíý_ÃòŒÁïþöÁÏ_ø-üÔ1Ž{*½¹S@”Á;›\¹²êX%40˜Å~¼Ó‡8Ñ­¹)ððþ#ä‹Y $\¸HgÝó¹fvHý¶|¦á NÆ“a 1ëáVŠìÙ+ÉŽ&ÇÐî;Þ`Øo­ùùÛ…ÎÙí—á@FÙ™:ù»‹‡ ã–hÔgQDÅב‡:”j3–•[qDÚßÅbžú½ž€2ó &_WpÍk®À Üç]Q2sä;v‡Ë&aRdu‚Ìa1•„…v`˜N!•Þÿ•¬\ûhÅð~¹;˜8ï¯Ç/L™é(6´zš:YÐ ÄÝ!²sX* Þe¢ŸSò~Îà4¾UkTÕaôùÀÝAGŬ¶ÆôØÙËޏÈòýÇLsclË÷²:+™H¢ˆéñ#ž„‚>n[ÿ.Ãâ©]6[YƒË¿4~…â;ìNU¨½ªUÑäîiÝßùQ "¥Ø:0gðyž»Ã;`|r²Ñúç3º›K ¬¿$j¬,Ô¨¡Zy5òrtc-÷y¾×Ñ\RðRY÷ß.¼TB)“Þ£$ȃcà7ÖÅåA ˜=G”N*,VGÎ|£¤ çÐ&è¼sSÖÁG¼…ë.kQ „%1Dl¤tõ2½ÑûT§Pišz¯A§6Ìë£=yžHë«™]™JBèȪ± `@VDýœ‘<óójÇ#iHG¿â•âP†Ÿ-°Ä¦¦Z«»AIéé䮉ÇXM<³]³ ýžMø/Ç]ДÏ#ÜŠ« "¯ÀU*u‹´šÛEBÚb/<ó'k8NýK–ÁÝ•Ìq)7ƒ&Ãà bJ Š6@@ÜíPMŽš=±ꘕ¢ÆMfΙéϤ¤ËÌcƒ÷f"?7ð×Õc\³£È_‡êqf~ _}+åž/@UM ?™D3yY4Ò5%Ì™–÷‡×`TVR¡QtE GN@Q ±öE7ÅÅGú½ö:ªotë®8âý.ðJ>Xfmƒªoçž´[£[,xl˜×}i<<{µg^xoƒê4G×±_¶rí°èë%zóT?èÎÕÂV-š¤#®h¦6:"‹™Ö¤­iÚ‚ˆGF!åå÷4¼yü>?:ø•øWÔpxñlmE1+æ‹ @‚L*‹ˆ;íyGÕ®Ôb õÄ<#ÃÛû¬ï½§(¸Wx°Ëá–¿Wç|¼¸|’Ô̬&BãiŠ‚„‡ªoÓåç’?²d Líïs}Ì=高/±M=Uï¯s) ïI®é^oÞxõåë ÅÓ¬ˆæÝDF…t!Ut\LÂu2jÌ(Ý·wÁïf¦kgȽ\ ùLNù”˜5L*]EQµâœ¯ÜÐja ~AB,GŒùÁ a„Àž0ä`;úKQW,'Þl~ÌÞ¬Œ~w¼wƒ3Ì>Ù5)èŇo3ø­õ!J=ç´±wÉ’5:4“¥6a­} ¸~,w”ùí‘ êsÁOën¹ËåÔj¾¨jû“„@"ü0ËËš"×’ç³`ç¨"}’ä´®¼×jNÂoGõ˘a¥IPÐ`«Ø€U&edy%¡)Ob?¾9:{±§ˆeaHDQ«F~ÝÎj”ðQØ–“æyÕân7£f<ƒDÔÞ]Àîw7I¾³vñưí×_oêÞDÒ Dfy ¶!Ëö¾htaðUº¼B§ v#Õíi±Ù‰/U2 TÌÁü.÷GXu4uz‡MYþ)ƒ´ûžn›rJ{ÇÑÌÙyT)(„!Uòû ­ûÃÖdSà; íþ•"'ÿ¯áþ™® Cž{7ÚßÅÃ¥)ÓŒjI„WŽéþ6Í¥èb06Ÿ0Qâõù5öÎwÑ‚¨ˆ°X«P‹Ûé°æÇÒ›n«nd9T,• ÞGOìÖ$à]CÍëÕâîûã×5]ÕöÕñ|w @Á‚xæ0€Ùµ1) "é!%µ%®Uñ<ýœá€þ¥[ôb†ýåößgdô³ ¡|ÇûòcøÜ’¯7°Ù±é&Ïc%ny­²7ÐðîÛ‹á2ݾ¹öô~ˆ,ö¶¶\òò‡[ÖIi'WFï^7lë£Éšƒ‡‘Hìk¿†ì†8´¨$ŃպŒå=Iª,þ LnÝ®€q/d„ͬ®^uίavN/ÆœH³’衵W¦8C}wã:ƒ6Ã$e1HkiÜ&ð„ìö`>¥!×ÓO*ã|Þ~é°˜!ŒÊR8O|ƒÇÆ ŠC›_W o«]oµo^ðŠ#A¾ÐšwîÍs§£oqÙÉçÜn‚§(É’ -&vƒ€tæÚmfU<ÑÇ<›zºòeÙ³»ž‹»«î®„D€Ö3‚3 šý.¢é»´JŠ'˱R‰Ñm¡¾‚ öá«P8'PGÇfÃåÉöà–o™îœŽïEÏž™˜ëa‰\¯†©¨¢±ˆZ«qf`g ÝŽíê3sPÝ@Ï­ÓŠƒÂ}»ÚÛ-€A8œö‚" _EKf¬–½F< B! (A#µOXØø@g¦N™”ò‘íƒÛ,P-= —0€™ÍN=Wå¯-ûy'ꫪêë¢9çÉc‡Qv½Ž³WÁ§v ¡uFöºlå@›JˆI~›÷hØh=Ùôãj Ã5,‰ÔƒKäá°óp4,Nmôùƒè¹Ì ùh³<ÛÞõ_}ê›’ªÅ‹"}³8¶³¦ï­|5‚Çáùm =µ¶ø\Òæ)uÞà÷»Ø´Q/•·Ù¸çܶâÛ¤.ä…å ‰ÍŽzºpíæúýi³ß|Èœ€O–™ó{OsØÚÄ4Ê›ÔDó‹,+cMve¦ši忝›šºî®±Xbßc;[æO‹¿<®b‘o[ßì9q²dŒgg¨¾æéò ÅŽ>ßobÓÇ%İ 4Tûè§YÈ—g_É‘×wÜ 7¢®wnöN#<31Ç–‡ _NímÿŽª½=mm.möÔñÇ™Ã6üØ}6É—Ö^-ëò.^ÝŒò¿ ŠŠßHß6¯7û˜cø†UA"ÈÄ0$ +«>i®¿L×iÔðÌEÊ1ºïæÚ„Td1Å ÛÞ¾Ô2ƒ°©(JZ@Rƒ*’ M5:,«6ýóoßNúª0p øóŸG#G›”á‘ÁÁ©Ô/y ,“Ë8™î@4ìéÌCÕ€c¿ŒÖ™2‰’@‡hÆhJ ŒÄ«3O‘ìV†Òá)ž¡å„£¸ŠŒ%´X³ˆÍ$dT¨ FD àÁ'Ø)-It+ܨprÉsÕue§&ݵQ¶¦Ù}>ežH¹@ð¬#ÇŽö@¨ÁHÎxeQ“¤Je†Ö¹Ê“×*Up“„Ü­í®ÆcÝ^SêÝ&Ã}i %J ¨¹c.¸“E'²î  €¤Wù{}eÚ`_o—Õ'³â`„ký'à;~tÇÝ—»ž 4šòvÄÓ79ëO§ÆD‚lÎŽ¬‡…¾‡ “B]z:ïËã²€ÿñ–B¦:P 7³"m º9VŒ¶Õ–йyjÑ_Œ°ðéNÅbrDÒ!·¯ øìTÂ$õ¹5µr˜å¿…§%™ŒgÞ\LxÝRô~y‹‚n0?Ëʇ»Ê<µHÚµ,* U:[å3>ªÑÔÝÛ}UŸ‰å%º<ãÒ¤ò•iÒ¡¼ý™6îj˜ÐÑûa˜ ÅH"z.Ò¿:æü}þ¡÷¹9âž*³Y9a 0j~fŠBvOˆ^õOÞŒóÙš—ÏH×»4óì!Û›[á±òXwãïÓ£J ÿ²P‚PɃ]eúzvi½;dÖÛûC[¨€7±ºªòJ.˜÷¶ˆÉs³è¶~¬r.7—kV,.¢­{­z Æy‹‰_èðÓ9éAd§®½ë6·ÈeÈ)Ÿ^‡µY±aTš9Æí-Ï08Ñ 5·‡Öû({JØ1àúÝß²Ò,²šL4…7Yñ¶J#œdtÙ4Q…tNe+¨É*Z`í3¶¼gïÃÖqu»K¿^œRúáIÕMÁ¦¦a?èxu 0èA^ºëÎ`“XÓKtâù,kMnÍ6Ä…†\µ&}'¶3~lÚÃ$ñ¾xF׺ÞXp~ýwòV¯ýTánû…t_ð¬â{¥ý:ÇíÙùN™½ê1¥r ´ß4™ÞY”t˜"ó­Ù^÷íâ^.‰¡J¾ñ±_›Ã R#øE¬9HpÖœÈy{3é™v­9'¡üòÙ¿–0Íê&ZˆïX‘†·uèëš|1·äaë#Þ9ÏÅw׈¹o- $P‚…†y˜BH))LA@@€CK‘Kƒ“``’+‘CPŸÆŸåûšCPŸÔúDP%´ƒH ?ƒûÓñÞª(£÷™?=ìǹý­˜””˜\ùvÍ;¶ÙøUt+ä¡f«ˆ)*S?Ÿ¬›<ôlÙ@@þùPCÞ•^„ sL ÷‚1¿³·™ÎèyÀÂGQF”©‚žïþ]ÆöÌ]'£Xs£Q‘DÖ› ÅiDÝŠY˜S–Fµš$É2¢  ³2È2®4›¯õšµ5$‘‰¸ÈÐeµ1•0jqÌ2(-`”—n[Ì"º±DŽ[¹Ía–Êfn¹íB¥lŠjšæâ)ÈÊÖôd›*¬–mm‘8ä„e¡nXq¢XØÙÖy­XáF ÑeŸÙÅuj\2ˆÆãŒ#Q—HÔêhªvë wnÆÃbj²³*¢›+„#,‘È8F¤ƒÈ ‘Ž&Z0Âb‚¨¡Ñ™ŽVUV3’Ó¬L)-cA“˜˜Iµjum×Ä-„QƒŒÏ,J§žˆ£tƈÌ2&"É+¦ŒÖ`TY.YXVdó%˜eV£*,Ã*r M°±Eý› qÚÆÊÊ0;²ºÔcõ_×Ö‘¶±ï˜ÝÆÊÌsc››­¥$Æ¡\QÁÉ„LddkÝg )‘#"bp9k\wRí1dd27 â‘„Ž8Ûz°ÂLn µK%a–EDÂÛ$é¦6A³#v¢2222\¦Ôä™F­fœ¶EXJmˆæ¿¿pF¤ÇIà–_°oÓS nBi1BÅTÅ/Êo…Z÷ª‹lCdJ©¬:û&ônǃšqZΫZä ŸçkxÃÀÎ:já7öÊÓS±É¾üIpµ9£°$ÍH?ÛL(tÞÓ $ð-ž¸ãNg³Y 2šƒ“X1ìÇh& 6`¨4(eEPiÌ h¡ fE‰Á‚$Ɉ«0)PQ8! ¢IlACnlxþÅ_¡4 ýŽÐÞQ©?œ>zš;_Öi‡X‡öƒ·¾¢ÿ !ò;Ùl7,ã¡«ÖÀ 3?qP!BQ÷¿/Àþ~É÷ì>k¼êîX„ño÷7uöå?‚ªc/‰ÄgŸßjqJ|n°’•Ä}Ê~@ñ²@×Ì(p˜‹öÅVŽ‘ÏÀ0÷ˆè~pD}îb|%¿._™]2ó}iÈ z>ÏÕ>~¿7¿vüþD|”UTÿ"®Ä$FÑ ˆÂ1‘‘Ÿ6|ÕXà/w,œÿí]ô𤇏îß^¿?-ê‡Ûñ~K=ñ>$öP±š×&>QCÄR¢ (œ-–ÚÆ ?÷¾ç»þPA7í÷AþèðŠùůìüWèýr¿?p:ý¾nÕÊí~vGÆköüÝËâþ{)€bE<B ~ۣ◠ùÿüïÝ]ž×¤d[ù ÷í€g6ìýT­÷NÑðŸGôãæŽNÞ¬O‰z•ò:y81Ц¢ 5ùâüº ËŸ¸ ÀÖ`‡Ûàn0œ0›½Ì²100Vèÿ4¦äØD*(Á‚*MãýpÉAü£6v›SÛñ’¾rG%)æN×ÔAëç°¯Û-Y*§ä"M‘¿9]† ¸ðV• áÝñxÏ~g_~VÌÀö}ÈzÎèÐÓ"@õÀ‰ †Ã3MwÈψn}×f覠ձÔZª’¬?5Œ AïûÞJ•U[®#ì¦À•UWGf™†ÂRÜBTàëD׆GBÀÉ0ëd¢´d ”]×hi”P£ÂRj~c0-32ë§ ‡Ò?ƒÉüÒÛ+÷ÿ‡<ÊÂñ¦δ ˆ”ßÍ ›¦_&vÏmçÃWÌÃå)naÛî—îŽ=Á8 8î)ç:¼ìÂ&Ƙ §.E„ÑâÓ%2ÆÙ]>RôázꌉZÖFñ6·ó¡à~§gÁíau1€ËžöVúå´ \ÒÕŒ+ÍE£ež½.'¤úÔF|ÝÃè÷xõç „C\ã¬,5“è"•ø?½—;ßÕ®^Ñr{nl öiey4kÚ=g ´cs&Ú¸pe 4|žu=†ÚÚœPç= } t‹S? uïµ,º…І`Ÿ¼ÒÞQ}9ƒÅ„ª‘Œ· ùÇ­ôY*}~ż°KÅÂX×1ƒ‡«ÛKÁöN«´Uy©´85L7{=RØ–ãŒ}TŒâ§|éj ª ÐhIù: ÊÅPC¨ ØB.Hòõ° åëÓ5£Xa/2 ï$,i€;Œ’ï3ü¼µÌá£ÆÈHlâè<ç>²78ãÊw»eã÷,F~Ûï}ߣí’&&ƒëdý*_ϱ~Þ¬½eô64›àð1Zðë%\“"TïEJ‡Ý;Ž™~¶¯˜[[ë£ÚÞj9(ÖÐv ¦è I m‚>*N˜\ðƒáïä)á¡ð„î0˜žßÂÜhŒ!TÕgw\¤å §uXrV–ÍŸ2)eoj>Ãm ê 0,2}üÊ_„úQ¨EpS¼† UD>רå(U$”Ñùh“‘èœÈ£’Š-=ÓŒuJ|üÔ°å“Ápø{·öà g+ ¼Œ'*IÔ›3¡§ùá ªó~’XÐyÒrWšÆüTfë?ª‚ôº ×³à̵Ìì…G/,g@üQ+˜±‰¼ßi Aõ…ðþ­—‹Ýõ÷ øµQÝ)ÁŸ×Ö¡ y@½uD0÷DCºüö¿z‘ÿCð(cûGûGšoñ·‡>$ï Γݟ«õtÿHöѪj“ÐÆ^*䦘ˆeˆ~‘ùSmVÉV_ b^xOŒüÅ› !©¡ø‚+øï@}d]GÈÝ^]ߎ`DØy>=5h5³<ÎîZÀhÌçÌ ³â㵪ÕUS횈Ø¡¸ÊνÁ²ùÂqÐ倿8çñ0q±j›ÙáqÈ<@såécûƒÝ†¯n ¿ºƒC£óª­•KD3Òû§”E ±&€ šZOOì=´úG˜äýn¡ø_/¸ø=MAê_OIÜ&€÷³6m5?¦›ˆ1®‰ ™òjéßÂù?Lúƒô.ù²ðûóf "Œž°-…°-B†Œ¢È‰?x LcRÓ˜§ñK¿äß4¡ü¶Š"Ry†èø`™1®ÒE‹¿n cðõËœ?¦öl:Þ™»q`a~õ„ß5Õ~`Àh‡TÎcÍö0‡ìjT-‹C7²’ £$!Rcd$!ŸŸö×ðíîÿ;íÎ#”¦ÒØÒbEøbýÄ ;å}¿Ñ󑟱ôn‘Æ@¸; Ø4‹Ä(ëèu¸y3¸u*gÏÇ)𦿓!²&£330)®3ÕõèùÞ¾˜‡9‰Ùè:-žÝ“íïrú­A@Uån©¡zÞË6t{’ ¶Žr‡×=Ûeלƒ„C|_åéþT×d ?gÞý({çÃû‡| ‚ Rþ¨×ÝLjâÆHü÷R›·ÉÀ ¥»XŒq˜BuS¦mÌ‹Ÿ߯‘[p±d NcÑ; ºvKÉE\௠¨nùÈH!KTÆ! »‹¤#»Ç¼»Ž‘.\Yöh¸³Š(<ÄöÄ””•CE%T¦%D8\Ó³ík«•{j6®óiP‘bº&JýbjéÒñNCJÔbrdg¯•M†™žZ(!îCa±+¤25¦ QT6PzáϘã›ûQíñ.Ó«%A"RADÃDŠ @WA‚”¦€8¬ºt9÷Yù™ÐDr'íE üÚžÌÒrÔ÷ÑòäǸfý_Gïd…Íâù¦*3Ø3îû¨#ãn ð¹Aìû¤­c§¯îðù¼•‡Èø˜ùšX  "%É 5  ÄÝö2hÓ7b´Ã¢g Ï>#”± ‘þ-N ’Ð ÓwC#ah…ÂÂ4Ä%FÍ ï)ñ#uú½ð"!±mŠäÑ®ûYdì ~‘Ó÷¼§ÛÂŽºêƒ‰u'±N¡5§É%W B€ a&ƒ ÝŠ¿WNѤ¡î©: Ë!°^—èéúᬊ,ó|t[sÂ#3°`â<ª ð~,\7*Á1¥¥YfŸoÁfNðuí?dCœúÏ€!bhatsæÞÊ.n³ÐP]ýzˆ;4‚ƒâ=°$…PAAŒd‘8‘Á£ÄØx-Œ6d¶ S“Côo³h®\C@¾í½zè´·éWö0½£>Åýõ]þô¤ùÙ¿›÷›ñf{¶^7ƒ  Ñ&’}@¢Œèˆ@¸Ÿ¡ ¦k%–I™ט–5¬¨m32mòCñø§õŸ6p¨b‰ÙX´5’QG×Ä6½ÌM†Fr0Þ¼¡9›œ°gß©ú:ŽP5z#{£žt4¾80Ptfýä ’†ŠúýO¦U–ÒÀCoËóTªøeàÔ‚LçàÎ3Ò”òóÔäVpÛ°ºˆÁ„Ü0ßãüé óÑöfíÝ5K,:mx°P¿/ýÒ„z72îýÞq¡Îà#u¡ãнo!gÃÚã‹.<^¡ƒ@¸ÐJ;"µ\ìjLÎtMÍÆÏ1ñåê¢feŠk ³ŒÇ½\í˜)[µMŸ“òw=Ïö.î‰ïåF>çÖ'ïX>iyžÛÒ副㯂¤Œ=÷g‡éxG›ÈQ÷ÄY,û€í÷h™Bdc‚Ÿ„n)ô¦ŸRí¾½¢JZ((’5A:šÖF*¥(«*‚軦$¶×àIéöèO{ÿT#”tJ­vïáÒ½Å2!Èsr‡Ö‚>ãЭÕ:ޤc U Ùª w~&ˆ€ÞµF¢Va„dšKA§èdH$„;G0 ÒQbÄSÙñ΄ö3 $!,$ôÏr®råÿì8X sD?úûÁI¬’=L²Å—¢ªý‰ÍS„•ú îð0ƒ¦x„/ÏÒbd~õJü$]×^3 †"ù%í7ǪÄÞ¶»Óº¿²@óLz ѹömé—ó2-Q_»ßÓdXm~fÊ”80U¹áèIäO7Ò~ð~=>mN—KÍäÊþY¶´÷­±ûÒ Û@–È|:œ™?IfýbfmŸªØH½…øD¼Žœ¥+L3CáRÇEº¥ù+d02í' •E4E)-º—Q>Q-ù(nÜxÅõ# —ÑãVçÒ}^Ù¬ÍITÐà ãx‰ÃS¸´˜*ÄÙ‘‰\1­PÀ…ÇÕéV¸ ~8YÏ4Ì“Q6 h-³ØQœ(Íc[­Ï⳯gošŠo6þƒø¢€‹ŒÑ'ޏÙD©Ä”ŽJÐ[ÅÑYP<Á4A]¥°T€~6¾z¢dL…B!ˆöyþ%‹Õéü/~û"êÅ`c”Z„‚Žì 5"“N•’·ÔO8`9ôÈV* Å/zñ‡òñ.k¨_„‡Ì¤s¶Ÿ"„¿`D©¿FÓ˜åx',LðÓÒÈä7 Cá>Ëœòh{ß ø³çÛÔ–…°sPo`n‘ÁšìÒ™Hžš¨š6$NÃã‡Óïô†AÖ)q؇Y{ò¡É]r#7=íÄc°Í .‘¸2Aé-ùÌÅᇒËÑ|«dúš½Â#÷¶oMˆV$öÓø}…Cø¢eÕª\KË^¹>¹ÄÇžÕ—ÞÎ8^$ãôHÇŒõ6-uˆr2@üüBiçR^%8´ ¶IÎÏà:²„#Þ69Às¼í{Ÿ˜‚Ùàœ^ÆNò“ø¡½Ïz …ÙúÌI‹9&æBçò€»&3{CŒÇœ„Õ¶>ÝwܹH6û¢7ΖñI|‚G¢\¹r¡Œ„ÖÄó̈́ݷã åË7Ë3ì5†Ð޽ïj Ž"w X‹D1¥²ôÞQü #€óA÷gߪ;± sþ™f¶ùï*Q\åü §G `!ÛÌ!Ú'pËüÌLÀ6Ä‘9Hzƒñû}­Ž¨»¡MŒ’.TõšRk§xŸ¬ÍÇéð\g§ß†‡µGíBÊJ.¨¥()"[  òh†E Äü¥j°Ô€10L¡DZ°r' £¨'+;ý;œ‚n!ADF•ó.Cè3—³¤\†hCEH‹Ä ('Ö¿šðˆµòYk¤¸PÂÂß¿}(LÓnBÖãBÞô4N½«‹X¹Ü C,¦|ÑZŠžù2ð_ô¼X[è”÷o*JÄ [bü#Xòÿ„Ü#Fššœsd[hPnô ¬Çš‡ì5É¿Ÿé¿…ëô§L5ɹ– wúTYi¢Æ}wßI™¡üŒCëŒ"!÷þ:&•k~×ͦŸ9úyŠ$†¶”IÞ~÷$|iÒvƒç5k~ˆT%‹¤+ö„öà† Ûiöå\’ƒžßë?ÛDgÛ… B*1©UGÕjVÇÂü!çç€yß¹ $úAŸxz±ŠÃq¯Öp3¸ßtÅßWׂq¬U N*Ød< œJÚØ«ÝÅ$˜WtŽñÞr#º5Cz"'DJ£ÁÎ5ñ!ôÖ}L¹ZQ;# eúK ¹øD&U>±O‡XGc>›Íá2!Ãÿ‡Úz¿×Þü*ìbƒçòÑ>Á‡Ì}Ä¥ŒH¢{»?ŸJ*ªM›é#®±êŠø þÏ¢X³—LyÑ\ âMÛÃg +ú ÔÇúg^VD€ò}0A€¯šlÁE-ŸRC^£ç°ª¡`•èó¼z\CAUOzªCéa?QŸ€L¡±Õ§†û‰èYyÓtUé"z08…X¤ [®¡èÜÏaÀ…$ˆ’Øî¤ÂêYµã/’ɵ }Ũ‡•! ¡?B?j‚xZ$ >º3&Æô:޾ÙÕá§”{°Ÿe `b­ì°.uùü]I/ ìÐwho6kPd¥ì\ çÒÖɱí ö¿`˜7F9Õ^Z¦%ªêk#í³×·¾6u±’9MCGäFVò醦Òȇ}œÞ)„´ÂB{^<ÙX~žjWâû¶|¶ÅP{N‚7”@äñ/ÂÊœ@” g@ð­”|n–>³úV¤¾>ýJÄ9èqB›ˆáDQDU2¥dã”TITSE\YJ¢"ª*ª"1[øjè½oÕUCᑆcCU…ŒDBLQ%UU]# ˜ª£¯:Õ4ÕUQUwÁ”AQ-71…U‘ÇÝVâjªýý¦BèTxm”h+†¨6Ù}TÒ® ­FTLÍ2ÕEDE㙜¿h®M6ö¿ü~½iõøeiŽÇi FIÆG*˜ÊXí•UUUi¥ª§ø]ß)QEjŠ¢]á(I`Êd®Cññ{?ˆMóÕGÅñÞÊGÁýȬ‡Ú=^Üœy¨ßåAúÌOÞÖù•ÌEãÕƒD‚Šúœ‘ÿG«¸CÁ".I'⺂¿!ô>w‰âŸ0b–Ëáô¾³ã ¨†fY|oÓlM‡Ù?3ÿ^§Q¿äÜ"C±3fÝ‹›êù³Ï“ËÏs §7Q:e¶‡¶]s~áÎñr‰›{IÐY _wy´Ú`ý9g´»ÚJ­D+ (¥g&G”xÎúvÎ(]Žίô×S¬ClúÊÚ§ äâ!`ÛçiÑ7 í3.¡¯$iJ½í°œnpµmrh ø^€);ZXo@¿å¸Üh~íûw{{/*`ÊŽrUh©’êFÄaêQÒO—¥³Ò`:]×Ù/¡Ýïhõy¸“óà hþ@áÓøG'pðNæ^x‡°ÙÞÅh9DûõFs¡ê¸›×,þZ´ ~ HÒ\˜‘aWA“ïí¸tÇA aùú/l¯Ä…îÞUÏO±®>Êò†ŽkT%y2ÁF_ l,çiTÑ®C0@!! йm[G°ü1ŒXEzƒ “IpîÍ[ñá3 Nb$%’ÛqpŒªD8=)EûT-¤(Ò€ªª«¶‹ µcŒÿÃr SAq¢È‚;€ÎÈ2&Zú,Qak ¹*¥\c.ÜŽ¶);¼ `©;·3Arç±­ +Õ™3}—eÉ—à°‡îi²œO÷5·Ú™ˆ+Þ¢£ERuNC¯yá·œ®ÆP;㸚Õnw³‰„Å™ôýí¡F·¬39€>Cá;g¶Q€`x*¹ñUÈôLÜ&q€Q«>d¤ §ð©D†ËWe.¼üDô™ÿ(¼Aá=w½ZÆXåç•+éaEÔ®io4`9Cû’À¶” ûø—Áü?ìù¿·ä„?éõu¿Óü¦3ÄD ­_ÝÝú;ލ@=@5Ü–@Q (‰ ªŒ ŠZ ¹ê†ê hTÞΩäñŸÝ×µóîú¸¸t}_7⊈ {—  )@-ÁÍT‚ÄÍvX@¦¤­Tû°Ä©¨úp0‰ÇN]ˆœ.9.‡ú™ÓXVu¤æ4JnAç ^ÉÍnÒึ’CM -7a¿¦é¥ƒšy¼Þ_\úÄÂlUó¨š04U<äÄÐÒÕ*D-/¾GÒ¡?®zC?ž1DàJF%¢‘¡  Á‚"Œ´-ÜêD0–”?vÆÆ—.#0‰šÚa¨?nª!áå@ÜU9=5ÍThšyûPR±çyMj.Šrl·"q3i„ºf LyPJ'AÀK’rð†á7–1“um «b4,©–êþ~&0˜Ñúç9*ÆúbÔip¸ÛZ!ÍôÖØÅà0]Ù¾DB“™L9PàÄG¯ éñõuÛ¡0 ŸÎ¥UHÖBÐÃRAQDGÍb¹JAG½T  ˆÓwSCãkêhß„GA‹‰²C ÆYWL&’C… vZ 6Y|š4gDá"lþ»áåº&0 ¾qA‡Œ¤2 ,À0C3 pñû¢;ÂÂCýx¦  `vy:ÓùŠ%¡¡{hÌ30)`|Ä÷¬SÖÏe²S”HbÀØÑüÇ—ž·SÕÞËœq“°tÌ0XÀÒhBPðKÔÏÛ(RÑå³»•*’— Ðh!Ðàzã·œlk D¢Ù-–ƒÌh$0!>¤%Ácóâ °ÂWÏŸ_¾Gt€ü’‡l†^Wkè¦&Œ<¨&% ß?Ÿ’X‰à‰H!ÎY,~(\DðHAIDäa˜O‡ágj­ß!uWNØÂ/*WÙ™ôþ›ÉªæÑ "­¿U;×LXÃ’]ŸÔ8 ”þ©cQ4SôÂs_ä’&Ô¥¬To¤Šµ#HlceQK8J Æ$ƒz8}fí_fR)¼4bŽ´¡(…Se3´9¿|·îß'1¥lšáÚ#_toqOj£`€÷§h¸\>ÇX‹a%jµÖä¡(w¥”oñd‚È–´MtËyÆÓèà3ž##"7Æ÷¸#C“§Tl\šê}&hi&!¢(©" @`D46¾^<‹lHðô°Ù·vÁœTM¥m™]¥`èÆ s-~¢è̺¡ZË‹ -B,&2‘æ+‰¹n1²¤Ù•¬ã51ŽV5PFBñ†´n º˜dEÅ0°¤SÔa¦QC72b¨fˆ¨&6¬›.kcF€äA{ßàÀ’¢ªârˆ¦VäÄæ-™[X$î8¦îc@m—êîÀ:Ì@Av#O ²%Ð Ý]œêáŒjh!hæ©,KãfkCœÖk „ùNRND9þ†A¦Ú@G’I$+ðE=ã—ù^62ÿéè}R§ß—ïŸ/ÊTQM MiOäRŸ¡’©@š”NTCJ¥¸Z•Jœ1ÀEü=ȈËò¥Å¡)’šÑk™#pLl“òHb±)ZQcN(R’2i¡4X”@ǃ>sß)Q²®FeѼQlûEúzª«Â­oˆª„‘I'Èt]{‹çKžâ}˜Æ44zá>5w›ÙíÍÉ©7gÓÓ;kXí„ðÅÜhÍÀ$FTƒHÑ”)¢$ÆmÅ 1‡¸zð'!G€æ²Ë ƒ‘à"Ò„J4!þ‚¡|e0bEÔ.Oæ”Ü!JêP‰G$ ku"Ò4çßüùÝ ï± ™üIè*h¨*‚ІJŠ"*ª`e‚)ˆ"¢ˆ š¨*H&¨¦Bøw½.íž:<ᣬM`¤Ds‹‹î9O1žÅp u:wƒŠ^&µ sth_;-ˆŒ¿KÐÄ2%CÓHƒæ7ᘿ²rMH{$Æw nF×Úb¼¸ɬâhbžS   :ÆAF8ªà€dÎÐy0 …BmIí ɪ{=ÆîŽÄ=mûwEu€ïÀÙQ,1£3F%?†\×p{LN‚!ÀÉö /’z?gšÖ>ˆ”F|=B œŠuÎà´óa‚‘‚¨\ºòÝLzL%4!‡Ç`ÍÐ$Âô`™AÆc,¤ ¬p*J!è@fÌ9’#.»×4a0¦™šÉ|ëÕ€:½4q2a`闥댦äõaÁй¸Ýf½ÿ$ø¾ràNŽ@ðupæib3ˆWÈsÝEDDÑ ^¹Æ#Ûè;àâ\¦Uçœ@Ô#J™„R:€$‰5 k»Êþ×—$¢ôàd»,†ÌÆ1ÌLŒ0ÊŒI")Œ1€ÀÏ kðlѨ,‚§—ÁP1ç5O«®äâ ¶¢tTDRa°ÈF3D¿$4ABg.sìñDûôn-,¹ºÏ¨ýA‘d‹J†.Gèñ{Aðö{BŠ ê‡Û†Ò¸û(ð8+ªz­l„ ~0«ááz;N~NÞð|PèÌöµ¯ –i™N-ui r'«DÍ a¸222$0!2@0hÌõ@iш`SP.o2T4yQÖ’ Š\eàÝŽw<1{œ½ÄðO«~ç«h3v4+ÔG@P{}•äï4œšÉµ"aÄFÆ“2댄û™GFÙ¢_0Ù‚Þ`êÛ ÀãlãU'f3JÇÛÁ’´Ø¢ÙQMê î½aó#šõ¢Mj0  , h¢N’n<ÉÚ<ðíÀÆÜ±¬N$FÔ¶£Ÿ¥ »52B'/\ÓlYT)õOL$},'Ú¹GGGZa ¨Ã,Êĥœ¬Ä©#"3$‚ɱ0BHs"²Œ1Æ,2ÁK3,kJIÃä°ú¶ï¢ûO) 0IQ‡{¹˜i%úpâQm÷`,º2¬"‡¸Ò0{ר«,Œ[h(ÑÃÇ›Ð\‰t=÷ùw4Ds$+MK šÊÒ T†g×Üy@¯= !d ùsåä3$ÐG2b×áÏÊöëø~¿›çúþ¿¯¢~§®¼P½.TH½P1½Êä)b êW‘³¯?¹·9 Ckùb0*¼`Rã`0²T‘Lâ:Û’4_?”ôÈâoË‚–P[ªGáÿB¡zÎæ©ÃO’XŸxäi‰'!ÏóW½çd9Ð>®}ceüsûQ<{vêáì“Ö¤(ŸÅ~Ñu¨í$ÔN!xë|ö^y&H„_ŠB{EŅ㙇÷Øÿso”P<Eƒ¶,|(½¢ú“|N[G»‹tãƒëøO¨ šoRl˜E2q>÷”ï÷ÞCfg»Íòþ£×çGÀ€4!©¦M$BDPAL#MP… Ä$RBÌ·(bƒ ›µLW¹A4§jP¿$¼Ñ EqÇCOòéé iåâêüÃÑÄ©NÑ\Ãô÷ D=ÐNÚùå;ˆ ({×ÜûùÒw§^cß•ÉEAÉ¢jG' 9"; í²Ö8ú%qƒq剛`Ü¡<*@:J¹H4'´õáï€2"&0 w‚¡H&¸„‰¡µ$ù’˜êþM{{i¦'†ªîá[åâFs+õyAà³¥+/À 9Ïz ñIçG£¢ÿG£ÑÏèôrùù.´Ü1[ÎL ~#ò¹@ŠA„ "…RP¸ L“ÚÑB» ÓNÅŸI&ÜÆ9HCJmÙ„Ú> ºlÚ6hÛÀf§î¿ÀQÒý6:¦‚™¦¨**–`¦‚ã½éÝÔì5¼ž^•.tæ¹:f²ö¶¶•×í™cQPÍ€æ44 ™˜pH`@±@`#DÖèu}‡‰”SI¸J'H qw ŽNñs É(‡!¡1õàŽÃF{M(!­qæa×¶¸BÈö¾.ŒÜI÷dŒ¦>!ô:{•†®2cÞ5Æ”Üýk§cC!ÕòÁRñO¸}Þ› óŠÆ'opq®2‰@¥ @‰ Hˆ"B¢ˆ† dˆ(=|DADDE/ïf~¿ºŸSP“(týÏ¥Y("*R&è4Í —½—¶?žésÝÞ¯RŠE\I±¹ÉÂàXÊ’Œ…‘c(DF!”¦bÆÓ¬.apˆÂƘ4ì$Ì–‘FäŒp`©õh±pœ› 8Ù»š <§ØÀ*´³‘æ ä_]hFµh4Vd„%”×#6“Añœ¶ÛÛ ÙyñЦŠcD)ät-dØÂ&Pq„mÓ0¸QLh€À­ â2!‰ª5 ©Éd„c¬Q1“Y¬ V1¡mÔDÄÜB øa;‰=ĺ£âï M|¥¯Õ˜ÍJGHýøõ}}ü]uùa\µ©:'Å¡òü×Ù …Drbåîìì^8ƒŒ±}aÃé';'r΃Ü&3M@ÅþÈwUqA–ëcwTÔÄÉÉÚE˜D±¡Ò gY¬ÑJR†—Å@3*˳'ŠÀÊLÂ4hqÌš )¤*µ$$rHE˜1@d!’­ðu sëxb稡û±Qa©¯?µŽÑ¡>p;V·D'ß„?¥¯Ö_Ëk¸ùØ)*1+Ì!T‘Çðé»BÀôHÄiOŽÆøn÷‹‹D(t¼jl:>R/¢!La=Ð)òÅ ‰}8ŸœlÙ°ëEÂnH iú¶h÷Þm”{Q@øŒëÜãÏ8uh¨}ùŸ©wÁå,ÕGäº]¬†ú¹ÌaPRqt0Ê¢_Â?zTÖz"ÐQB4'–^ù´z´¿Š¤Ô÷ÈQ…´}²2Ç vj@Ü¿Y/H‰ÂÈëé |¢“3㥭ì&¯“Fú¨# ôǾ˜ŸÐ Ä÷sÀQ$É É:Jóip0@ðëæ0žÀí’ ¦ €öïS¹ÞT­AäHéMp¡Ñ|²dT¢ŸZÅAjµŠäk2¤’'¡˜ÖKoFƒ'&R’PD `6¤¨ 3;ˆ”˜ãƒQfAD”E 0$$E$KE&· 4›§Â$ˆý¨Â¢¨¨"Š J¢ hª0"Èež 7¥&lª¸–X™ÎQT,`RK(¨D")[1Àà šóö(êN¡±XM¨´4y Ú:åÅ Ä 2aócw«Íü¼sŸ¾ªšIénrbÐè¬'•DQˆÅ  Ìç°”µå5Ô³FdAETéjß9ñJÅäªêªTßE®(.µgl™8ff4¦U;0Ã,‹ŒG f*dT‚ >G›àø>gÁfïø> ÅåP–àCÓ#`VzOM `Æg ).»`i³‚2±²Ž fiÆö·‰Må€óN4òàW»­nÇuqÜ@mæE“{3 3V Éó{7»%57’<} Gs$A”L ÒÀÌ9ÖAËU»q,8«V-¸ši‰Y 6…–±±½È0ãà ‹\0˲‚08o wE¥(!2²¨\] []—p&Yœ¦…І0QLc6ã¬,OQ( Œy ŠZ’°i–ÊY¶Z´0ÆU$i°F¢‰Ñ¨Œ!•jL˜!ÌÇ5­H0Hq'°é† 0ÛVÁ±–(†¯ ƒ& ‹ŒŒ2!²8£µF·R¬mß4ŒÆHEÁ´W:›¼@!„W Á†g«ÍŒ‹fóž† [#»Ö…¦j˜§“XkxXIDhƒ™Ó×(àÌ™®àkUbálµŽ-N¦„ÂG #yŠm1Á!R'ÃF[+h ›ccrÄI:»taK¬uvaE1$ÕDoóüœ¾‡Õó›²´ÒìŽèM5Éú0 ‰ ë27áœ<ˆ‘ÅÖÈhHÎ笞B;·àu3 åëÔ±B’èx}p”DµBDK­"R¡CôC½–`j¢ÉLl‚ i2ZQÂ2¤10ý¸5:U™ ‚„ù¤<ó0èy ?6¹ÕLÔ³“•bbÏîht.ªÏéb)êƒdïˆ4º,SS¨ YTeFå Hh†t„Q¥à=bhÍ ¹8”ÑO58¡r.ÖuF¢,nƒ:41 Gß3m,udÆ/Øm†ÖV#Ü*3†±µP þ1V‰%Ž ,B˜Ã…,:÷]vbsöPcÕGÎ2Ä;/€6™Úl ñÙ¢(fx PÜDÍ.dÜÍ Ýýƒw°ñÍâ†å~[uÈ ŽÜ0âC ‚Ñ(vBoœ$~2NOY…/ÁÏËð„AÄ Z=´XDÞªó,tA7|'^ÞÅ@‰ ýpü³å"a0€¦À>ºÀ0!å ¬M盤Ÿž&€ð3ÈÊÉ2«ü=8|væ'ÚÊL*’ÄDIKDHÌ#2ÓE!l?@Î¥"7˜ Œ x¥HMcƒQ”i£èãr$¤D#A„0iÀŽRhA\bb Ö ”]оscg¸Åô°õûë©Åé28<ÆÇB À£JmÑZáPú¤í’:ôc’I„é†%Á?¿ã÷öà…™Œùs5ŽK–£U)g3alœ'x h TîÞð"40ÜØ.aº$€ã”ÊÕÀÒ¨ªª¦±´A9à  |™ œ“2ò2<2I[ˆ;J…Ëû 8 ž‡îq-ìE8 ‡8ëØS¾¬Õè?úrrÉ»R§ Œ Òû~aÄÓ!œ8–IX,˜LFXFFeNH?$#ªµM‘ý¯±SAñ½uâwŸi¡Nd„ÉH•ÌÀ £KM TDkO3õ’†HiÄ7Úì,U±R‡òÞ—¥¼g ,€qDG,a  ¶)¯Û8íìéóÜÐF|ÑèPO¦R ¨†=ò!ÜgR+Ms$Å8HéAxäÞº–:j”ŒPâhç1¨5B ‰¢5xžé†¿S„F1é^8y Õ‡‡Ys8ò¥ËPdY¢ÓÑÂO6Z5Õ••Ñæ%æ3üs¼æ<ºÇk„®¬‡P™Õp¶) Š#&U8{Ç*“[—3‰ˆÍó— „–z’q8šB "Ód‚Þ¹;Lœ·‡°£x‰R…žÑJ©VX_bЩZ‚À(e=ŸÇñüÇññj»ã¯V¼½<ÿ’áîG¨|lGÄLË^äË1…L’ÌudÌ?Àœ.xŒZœÃˈsüªšÊˆì’'ADu9óLjKCæÝ¨¬!§¶%±&lA£pº€ÍœÓ†Vìv#1X)5;(hfdÄíñ)ù«/“ï´¶dbÚ;U¶¶ñÀ³Ó뮺ª}Ô[ Úlã<É”Ít2ä·mÐ/%àBHÐÕJDt#µ¤„‡]Gaã¬öÅrXÆôà 4*LÌÆÓ!øy™žh&Îc§¾Q˜2A³³-t|ùèÔÛ¸Œ+rž“Bf‘ K¸Ì›ñÍ’l’ž@G‚Œð&•Ý;3O=òô“ ÕdÏBJ“Rm ê¥@åËÅ¢õCrÓ¢9e†234ÏP&k¬¤’µ=pÔaÓÔ•ù™f9SÙøA=Íc·—äNpaÍŠ•XE¸ÄÙ4ÔÚ-kD$ÃŲ‰À¹ì˜¡ »¡!‚ˆ}A­d0ñ ° ®[¿1{µóžFË– [9q«ÍÜ©O.Lú’1y(‹øN“TÑV6X éíâýK4¾/¾ÑÖd¹ï1 Ä4Ë’¤‰«‰›X½œ0PÇtÇuisºebB0*F‰•[1&˜o9ßxC{[îêQYÑãK–72áÚ ©n;Ý„.‰êŸµîí3=5Ϩ‚DrC÷ÄÙåÍ]Ã!»k…ñ€Óë¹^Ý]k¬ol)ß9ª8^Õ¾„´a·|¦Â„ãCº‡]¥´hpðƒ&àñ¦4 nܦ„gˆ‰s8CI" Q¬Óc<øEh®£®&³Ï‚™—#¬;¸ìÇrg˜`”¼]$ÁZ‹«&ÑÞ®Kšoc³®DsI? ™øC·\ïwa¢xgàáònÄð"ìO*à†n4V¯aÖ;seß[‘Ó2mó|!ôÍÊ4˜¯Ïw)˜ *p!ØLÙîç—Žâ†Ê„]Îø†aë´sØL;9p h¶wr;O ³3Y ,íüN*{ÂU¶&óå\Ô–«u v’&Û½ˆvЏš³Ú )°›ˆi„ ‘ruhÌXEÜnÄöŠŽ±1]©É—F*.8î˜k½œxÑ/Íò³eK¶9Üä× ùòÔ+FøîÒâ.Ú†ChÞðÅ›ß42A?DC, ±¾é‰‡º²LäÁ6ƒGŽBÊ,†8CÄE85”¦%ÞZ tæg.úÙ3ÀŽÆª6È«ñ!̱š\’&´·8>T Ù]—G¾«z]óej+áæ‡¤Ú…›58gH‹ûËb‰ž)¢òbXËÔÇ>8~Õ5ÝXVzÃý•=œ;5%MEío(ì­E!›‚ð%9GxkèîåsÎ"™Ÿ,6¢ )"ÛÊkÇ…¡uºq¥˜pMv™)5½`•ŠáÞù›fÇ ®ø£ºã+4? ýŠæ~þäÅØ¯îîxu?®Øc^Äc«‹Ê2›Nð¸P»^×'jìækQHTZ´ËÍáÔ‹jgÉFF8× ûv¿‡Ä®7jˆ–&\w»Õ§•¡Y$Zî‡v„Xáü„éõOŒÐœ¢}ê”påì:Éҥɧ% L…É2ÈfN©À*9ó¾áû¿t.@èdGô‘÷$¬/§ ^0¸ƒŠ{Qo+Á"j§#Ÿ™sLî°¼`uA d¦ƒV}-,µýÚΛâÅ€ö´3†N˜±Ñ׸?±F½Âœàþß~2á™ÐïDA*²Ð†Ð fŽóK¬ÑBžÝÒ (MÃ$E0ÞlÅŸ-Ÿ—“âÚéàÑÕËœïÃ@{¢¨i*š*™F&‘¡)Jh¥(¥(() i¢Š*ˆ™ø¬g’x3Fˆ%ž3–Œóñuì:Á×Ð W|a‚‘A‰¼{Ciü'*R†Ò@Nâã>ˆÑ² ¤`f.L¾—±Ã >r(S´;]z!?À“ôøM Kú¼îœèèwhd ñÀqsn¨ë_³—ö¹bÚD´"†P:Á0EðœKÐr3‰]iÈZ'@"´juÝâšY•/Ùýï·Ûö ¨ÁºØÂæ6[Ý y¢J@¦šÀxÛ’$1†p‘¾¬° ‹$É  ‰(©`ã0%˜b i -ƒ£€à”êü„$Á™jdHˆhbR¢šÐðqɇfZ8ëßwª7_:4põãèi9é˜ô‘Ï$PªUTíßx‰µ2‹ÞÖE¨RAPÞÅNid¦qÜ|.E 1­U0ôĆ\q‹n”Sfb /ÔYrnÒ3FãbújTaØC˱šÁ:½¡¨Ê§J Q»ÃÉmûˆ £‘ e› 𾌪k­ŸJª4ï×UÕs«Òe‡Žm#ãÓ~“,”΄‹A „‰A.šÚ½å$Ã5ÎsÉÖí¤ð¸S|ÉˉXGØg;Åd;lÔå®íh7r ‰d&f!ùÑs›?Iõ˜T‡lw“žäJkèDŹòUÑ÷‹`F±Ý¥ÜÃâÛ%ªAÕQqêÅ„X˜hD‡w&¨Î#iµd„$Õga¯3%üŸ†K…ÚέGé#LòÁêÿ4Cf¡Š»Og°¬Ú£2áHaÄ#…)ð÷B®^.³‰{ÌÝüSb³¶#VûX[Ô*¿:—´(>‰Š «<¦²ƆÃå6¶2’¸¤ FdÈì­é»—CÎ{þQ8IÏTë)îøiT Lþ© Àô³T”LBRRKD-P‘R$¢T•”/Ö¡à”9ªˆ¤1ózüÈoÓÓ6í‰I¾Ó¿WÏ¥Všd³ÉîâD[eAíBËW˜)Be \Ç$†ÒIdLM#‘A£”"æ×mñîÓé2B4Þ½Ä31-Pg`ÄK~×m>üWe™´Md*Š’Î£Q÷ —£Ùsñ2Q½D®¦k>ÚÔÓA°ÞÆ·e"ÿ  j½¤á¡³ààsj/ù€CŒ{Æ£ŽÌqÁy¶rG d<œ9°2õ^üñyŸâDl”º™ÈèÏuäÊŠ4žæ¢Z:rµƒu*ˆf…¼Sg0eÑc´fóbm…iÙnÚ¼<}ÔÏ}°F{ë][ƒXkÀ–©ŒˆÃ~›ù¿C7é$8š›ÍâÓz~b£¦óçàÎÃB_Xx¼¶7*$ŠŽÒné ’S$Ÿ0ÁMŠtie{~…jåO ¹Ì¾!bÅ€Å8*ˆz`$h‚T’ðGŠ|’†Ÿ§À¥ÛÓé2_©1&­å=—¸ã8’å¡óB%ÞiæI´¼ÂgiL4½~Ál{q–Ó9{½gŸŽ-tÛýf#KÝŸI[ì5è‹<ÎjÚfDª2ÉE¤²½ÐÜ ¹/Ãê,d˜gPð˜~œ´¿\®ÛÉ`k!‡~ .Ž%´;õÁΪˆ…[–`P$›‚aºzfáï–õՓ0@ãs¿W=83‰£¹£zš6Êô8§º KGP­$‰£MQ 0h¬\9¦P"+ºHf®ÜXH!3™r夫PîH‹-лƠ—¾7²e ¢ÝwÁe›<1~ŽyÖìSB.²s‰-‚*Åø×Œ¼àJK2í#9ï•s%,iCu,Rp½#Â:DÖñ§Ð]5!ÕàyÏë /¢*6b ø & }3àr½|­‡”ü@š‰[(ÐÏ™FÙ’ç@#ä5w7M¦Kb#îêï9¼R¹C·ð¸‘L$ˆý¥=Í­ 4 !M%,MU TÑÑA(©B¤_)îuœ9¶ï:`vs’TT4]ƒ¾‰GVÃÏ:Ÿn׎—ɸñ$ @éÝ$ àêoØ’ÊÇx²!Ž’jº‚ú0G ¹E¬v!‡vNaUéOj„×á©3!7]µ6DÛD0R8uô¶¶£¾.ÖÞ³}ÚŒ×pÒk˜„˜Kz®šø"­‘=gñÂjL:‘Ù0ãW×í1kò( A4ú,òû;(%ïbȧ@÷ï÷Úuèìù>ñMVïKºé"3$E4Ñ%ן.P¼øã‰Ùs;w9Õ¦Ãb–4Õ÷ûø<Tu@;SêŒLp%j"b*¤¨¤‰R¶¡‡D÷¬‡åœ–jV•˜é!ÚZŒŒšÇ T’*czªV@£q±„p>o;n¢€™IR ](œ ²1æ=|…M'™Ç‹Ù Ab&Ѽòg´zt;}Ñ/ñÞ£±ðõ«DQMQTDAULŒ£ãâ•!¿.ÃÍòŒ˜óéú%FµÒÖ‰12j¢&u¢º*âBøŒ­2¥2T T£..¤A¤e"°x^BÄ£ ˆ½ZtpÞˆ²c*33 f($v…­•¨š•¥F´pÔmˆ6Î…·\pšB1¡RFWÂGs:€`#À`¸¡î#u¿xQ j£ØX¾Lä ³ÏkžÏÌÝ:oË™à‡”€!¢"™¥ˆ¢†„ª˜a¢&štb§:ÙîaèØ-=~Ì<ðµìŠð` Rµl| tfOètD÷ Àñ­QõuN±3q™DU-Ó#aHص6ˆn4âµ# x§dzw¡%/±ôÎ(¤öh(žéðøÃòKÄ‘ì˜û—¬è>T$ބÄ£ÈP ³ŸRËl-j•)…)Ck»Z‘O‰%MíTèí:I –f̪à 'údRGc¿-ª>O‘—È9¬Œ&Ÿ˜œ‹lÑ%7ÖûýÏ£ày±Ń÷b`Ñ•N*ÖSZ°±¹ö¶‚L«))! AE0RP§µTÚÌž¿‹âú~_§éú~šúþ§Õèü¯šyb<ƒÒ³) ,yÔ ,FfS(–Ì2–*r4V‡X˜I0¸RÉM!zqGvám+RÅÎ ¸ªˆ#/%Hdv×…—DõŒÄtæ2A„™IF¶Heb‰ÄÁ²nªé b+ÈS‰58Á—G4a…)0ALD”Öˆ $„°ÉiAÔê)FŠ5LTKV© á˜Ä´Å¤rs Â’&%¬ƒ" ŠÌ²f ²pÊ1)JÑQŒR°Àê’f’"Z&LÂSk×½{ÓPp@AäA3ƒT÷´ÆS×…º”¯_õGb?ól°7û|V<{-¸Öž¼Ðò4ô2:ÐÌôÔ°:Áo5×têš;„ˆ0<–!û°—PÅ‚……Œ# äÛ×Ôûœ;vTHkž’ÁùפW$˜¸„Üúpç‹®ˆŠfˆ˜©ˆâ ›u…ùŒÌ#µH²ŸxüË/óÎxi¦)®pz'·áí6ßí!–x“êjR²¨a\œN¨C«9è=ë/hís j.r§tñ|ZÅ×ô䈙ÌàI²H{Ĩx<§G¯•Ô^x'ñAðAq€ÐƒÛ@§!ñÊ÷Çœ=€†+ž‚³¾$CÅY"âŽÙÝq«ÎÂ%")ßÓCÝañèÔ9'¢]KD!ß1.ª{;pMž7¦<xÜJù¡hˆm8UÝúñ„FÖT€w;Ù–ŒZ(ª ÎÂBI HX“•§Pf@AZù=ÞŸÔý½Xñ™ |_MÆGnP£M£Ðêã˜P€ÅÓ V4<‹ç¦WmdP·ßÌe#åt»zj 6 Œbj8ζBs'Pš—'pî µKEP”î‡Xw‘ jSpŒ¨ K„E‡rÚFYä4Èe”Âðâ™<‡ ®pxµ^}àH¤‰² äŒØªuƒ}Ý€8[êÒèë[>eµ˜c\”[ì˜Ú &`ÁÌ*#B_9çŠrI !ÆwKÒØ0eq¹Qa™nÍ@f”?w,H Öˆ îöùv&5ÓÇcâKàpdèF ;vý»l"Å´PEDV51^@£Ò÷Ž]õÞä˜9"JQ@Žzx©®þÐK-}@”Í8Æ"H(i²¸ Ì8 YU¾¡Ka C~¢[‰}]d Ù'ŽXÕ5'@U)¸%!¡õÀÛAL“ÑË2åǦn⮬ŠÂ>LyX|ÍK£;úA?buÈD¡dË…<ÒS(|ènÈt”n›™Õ==ížO«G‘]&fkåÔ0®±2àä1Шtua"ff· Œ¦$kF,£E¬dŠ`‚2 †j³ ¨ÉÞ¶k#tZ̨ 4ábÑ„¥†d䱕.ík Æjj$p¢˜È æ`éÀ(b#MU…˜`f1™•ŒQñÂ4VÈ5Yˆe¶Œ‰ÂŒ%c¢0•À³Iެ' ’6ÆÊR\H#7ï™§·±µT´…df˜FŠ"&JMw¢"ùÉhIû·EUŠ:ZI )Gm$„Ÿpú+fõð ÃÐD\̯À¥Óe³møža‚lôùC÷1!¥áûÒÃ'a“]¬&Kˆ(‰!3¯×‹Ù(ì@;áNŸË¬E!@ŸÆŽÇ.¸Wp€:†]Éî[R‰û$l”‚ï”Ê‚‰RŠ„•-Eœ” ±GŽTPì‚ù1TÊB—²2L€È2AÂC0Æ(€È T¥¤¡„h@ˆÆ! 2"‘i¡Z@(F€i&J†h¥ª@ÃxŠêˆÈG$Z_!)B-*4A¶ Z³fh”•¥(”(ibJ P¢€¤¤@ÐùÿÂáGïì|ÇI ŠŠIB`)–ŠBšªH€¤("˜&¡ …‚$‚JHeÉe *O‹è Z #€ÛÐï~ô’Ïçs2Çeм±¨ÔTXIRaSÇÅÏ IJR€fa|[x¶7=7¸ƒ%(Ll6dkÃ&©æG»DRQAbC“05ßÁáÒȰG˜x†€^(l,qSu2n‘( ¨¦¼Œ’RAAM(5@R4KE)PÄPÂ1H´Ñ$¨ ”ETüY¼5a€h%S¦~1†H¶ø\ >ÏWf©ÞÅFÑTdVPЉD÷$°}ð÷ŠxÜþ=‡„dža+ü¢B´£Ú^ öH*è!Ñ.’F¡¥)SåÑÈ€@ ¦<Ý¿hDÉè­Æ~N3°ˆCJìåMÞÂRlKÖ¿VgL¾y·$ñU*§»Uäò{Ç/®`LTj+!jÇÎ÷áaŠÅÜã“dÍq¹HÆÉBw§Ãù¿ŠÁ¾ÝO9´ôÅ%Õ(ˆó4„ýê†a½r:þªœ º2iˆ˜± )"Bd±l•%”B*hU»ûþ'zX1ì3fI‚.z…RÄ44¡LS!KCTI%UU•3HMÅLÅDµLÔT•-UD140DTÔÐÌ%%RT„ÔS9¢Æ^%Òº/EÅÈ[|0t«D Š)ËÑ^…Tp)YÀàÞÕÐI8nE ˆˆ ˆ2-ºgÆÎ¡%#î–ð9öÉH” 3HMPD±#AR£D¤Èrq!à :Ü™ŒÜKzyï2šŠHP’ƒ3,Nô»‹lµ„M!;" éúç3£È$Â'!Þ&òç¼YLp@õ ø²SA;¥r&P8£§DÆär8ãÆH;'Æ7!Çß¹vtŸ¦ùoÛÙØ½]ݰ},:ü9Jd4µ0¦¨c ˆ Ïò…¯®¼E])s&1{¼Ö;<ÒÃÈäãf!h} :4Œ°ØšKpˆÔ$VdQŽIP $²Cº£ãí÷ùòptž~ªBb–aJ¨€¢ * „ˆ™j"h›ß&D4,CPUHD5KJ”•MAB94Ä%fU0””$±%L3BQ@RELE)““2±PÁ HLAQÄEHKAUME(R4PRU4•J@P0Í Ô¡@ERP¥QI“LA ”%4QQQC¹æ‚Š÷YðöíKú–i¢…. ™#DÐË!ôwy<AHÊE2±'ɼ˜ˆI¨$„úÏGØþ e((…õ=Coie…DÄBÄ¢ÀP4)Aà²ß c%Ó4!ɬH5HÂ2PÉ|ða*!à¸ÇE,Œ44‹C@É ÄW¿2i¥úÀ‰ÇéúÃá阠4>ü5w§´xZ=þ²‡’°ò)ñí´ö$5A ôváà@_6>Æ…AEj¹¨¸ ¼6Ö& pV4šB>’uQœX@ɧ?‰“§”§»r$§LšxÂØ)H›K³O¨oϯ–èÂ!Iø¥ƒŽÝ(ð`ûº`ä}S@Óã{åºpÅ]Ô'måL vBöèÃÃx/ÆO¿, ~^p7uCÔ¨:ãăJìÙÚibƒÜøE!SOEø{¡ò=:+–¬›9µãÑÚ:4öd‚ â#Ü ¡µÇpwÈV®=†D”¤€È×É£žgDç± vÕnIÚ̶٩Sµ‚rsåóÝ< Îg°ÇÍ%7¬Ã”Nƒ;&´@t€yRõ•:[e•P[( wùøÖÍäÄ)‘Ø´Ç Ó:Hd i iÍŠŸ{g&‡<×܈}¥(*š¢ цSBy†…oˆx£ ˆt€±P¡UBDÕz·çéêïÏ V :ôúT€ïýÚÔiæD€Ò=CýM÷.êB2°ÞvÌÂÔO¨þ̈l²Ï.8­eXÂñ5g ÙÙû3˜Üæs‡ßƒ¼ÙÎŽ’/HG¸Ž±XͲÇ$ :­ZæB'ØCe*Eh£e` €ˆÄ€àAĹ4kº#Jc¨Ý¦8p¥Á$27¸ÍGfÖxΘäÆâ29Þ ïe£f㛄ÜnÊ20ms‘•9¸6d£ƒ<ŽmDF:h]¶6l†EŒ hzNèÛ Áø *¾\ˆ‘˜ §;¸1œ¥ÀÊz^ÞCÔÛåyÝû[ñ„»é¢#3 ý-޳š ¥)+,",Œ1ÖvGTûy™„’ÛThˆ¶Û„Ly#2T6ÚUÒŽH9j r–>Ѱ Xu{éø;ø«Ð²kÍËΜf¾I™F{-­>”© & ”‰Äx;TÀ¿§Öž]C«qK’T0Œ›êÀ(ZÕ™>ßã•܃€±^é*Ûi¼£e…c4-(;-B îM¹»êïÞ»zŸ44ÑyrÖ[]\87¸=d•4]I£,-ä©oG ³0ˆ„Ë M,F §G¢' –Áý. ˜XÇSE§ŒH!@Þ±Ó˜IS`R@`ŠUFãEÞªÐÄ1‚ HY˜L\ãj§”4ƹ֥FÄ¢ŒB¬Î Kn¬Eams@)¹ R$Ü®J#ÓŒ~_Ͻ–XmÔ§a $b«Ì„"ŒˆƒöC83*Ê~ä næS­ë«¤Tµªo†G$Ôº´ ¡ ãN¦Áêz|µýñ¾(ĸruô*Ì#Ú†žPXD”:úº€B¦ÁdtN&?¸èb"@Ò©€d—C[I~ëwtO„ñGCÄugϘiW ,-e BiÄÔQ¦À*>ÙÙûÆÝðLŠgԆ͘ùŒVcÅ× ɈHOLm‘97úüu'ÑÍ¿HrUåkj³Ê]-‹y;kÑêœ5Ä4P¬õ5Ì ù›¤xĶьƶÄ_#(Q3–õ—.I c®qf4‡1ÐÑŽA\@7rѶZÉcZLáŽÙçÏ]jâ rܽ ¨Spæb›’4:à6ÌÞj†ÄâÆÇ”œÃlllÌ$zÖ6BÐDf CêÅ `˜5¦7«Æ'L©fÜyž“2™”'VÊWZFÝ—¶± …Ä1²iÚ ¤€ŠC£â¢ ÃRA‘‹0ÌDz̋$T™ÃHo F¨øj2¬TlEDi)ÃÊ¢ŒÅJB7¦=¤'lÂÅ·=bd]s:D’RÞðÀÆ`›sŠB±ê*5¡¤Æ #fFH6ÊÄ #mªÞ=2­=Û­é,¤9z0ކÅC)@-†e—15œ$“¤²µ4šÖ`1½Óµ[I}gS‚í´ IÃ:ä iAØá Ú}:꫚j©…à¶±GnaƘԻƒ¹°b7bëDkXš‚Ã¥dl¬ˆÌt©W‰2×+i[u ®)¦Xç9IŒ©ôàl£å¨ÓÒæíëNˆª¨"!)Më¡`1E E¸Âª´»=xb­À¬XŠ¥­88cQ±4™nc[ Œ‹jXF¹ÐòÄs9¹SbÜj®§œGYu7}ÂlÚ÷mM“ÔÎ.6Qš—päè€zJ[XÈÅÙ)MnpÍçS.± ˜¬Úˆ±€a·k§Va¤S”ha¡‹†&lÐCEäà <PBÑÊ©ÐÏ;7f%Ú!t›‡£K&&AF>Zrˆ¬œ ‹q•3VfeÁÜm÷ ÇOl!c,@Uü%{Ø¿ÊOõ&D?!£|wL¢¦v< ˜Þ%ôœ¿0\¬ÇŠ6Þ$ë+RD„­BÛ£'øäæ(u‡é4†Xk &扤ä@c°­hÉ^ÚZ°¦´1mˆ7¦6[FTn•Qd'‘#„0ª«$ÀÈ‘zJñ˜´Å3,"¤ "p#™MÂÔhÀÐÌ6XU&œ,‚²¬dF4 “QbaIaâ2GGføã BA4Ž  1rí¨„)…Ž˜lÖH‚ªS|ƒ×c¡S±(Å•-‚)¤Nz¦ƒ`³«mE„n= Òm Œ’ †R;¤ª11•Áœï†õ¢"¨©b̧%£ÎIƒQÇ´AÄ4Rø¯Ìhó“è+ûS:Ç&xÕ*šôžß^º"׉ÜX`p:õ´ì Cpé´¿Ám¶‚§§Ýóq*ªó¼ù€‡›ö1Xù÷z¿H#ÄÐ’Âö϶ç’åõñA¿Éй QEKE S @¡@µAA BÕD$Iê$ „ǬK>#=ºhZÒ…> p'ˆ÷xôCµ½Í5M#5U|‘6öðÔÇ„d±-3-´6k{0!cMAŠ.bÐ’ÔQ† 8BÀ•ÀChÙÃ$µg 0<¢"5T ‚žh4uŽha!£Øy?n¯ \É []Uújªª¶fésÄLbtÌMÆ\œ¡´z´šæla³(UDC°Zš¡i’€½æ( q ü l@b^''Ž![ n&7õ.·šêì,”˜‰"i“ý¯Ø½±‰§änÛ[lþ 5L„°PTÃ^>Dñž‘ïºG$Š:µr†ÑZF4RĘ4°b$¤nƒ”eÊRŒ0$À™E!Á.F ©)Ó”Ðr„ò¼&´GF§ ;&‚¢š˜ª*‰ hJaY"A‰¤–ª€-Bšl7¡èÞƒöp¸â'†‹"Ù®2èÆÖò00aƒI6^!(B³XÑZ[%Ô'1A¸7#¹É5Ec ”ŸV²å ^5‰ÄdZÄ騚‰sSi‡l逈vN‚ª,ÂØŠYãªÁÀy’îMi9ŠJ˜B“€„î:!Ég 8ÒL5ŽˆAƒ+¼ „LMrLÌ‚ÁEb80&PÁiB!¬0˜†ˆ9,hÛÉÐüxp£Ån¥BN¹¹Ô8º$`jPÕm¦½°BD±¢DäP>ƒËøz^DËß0Ã×ÇÔ £ÚÑÍ®$ØÇ\JØ£eð«Âs@è$u¹¥÷6í­]u{ ž mG@ªQŒ0˦bcvpbjÉhM}8qS¢Sƒ&Fa1h!h(BÓpÛ4Ý›!íéÃ\@S]”KA@§ « «ÅŒŒŒ•UÞ†‘NAw ÓÆ Á¤`ÒûC&ù½F± ^ogˆ\´uéáE³bnwÂÚÓg˜Î½ØFVꈸ\À °ÂNŒšÜCaŒá.Mxíg;Z8Àâ@ïw &ٽʰk–,âD;­ç P ÍñR -‘“b‡D#„Ì:k Ù#X¢Rm{àˆ…²«‚J,Ý5CŠ+%HŠG Ô9 Q4 Ô‘"QZÅ2* Î q½‰©‰D ¥;3ûg«Áh÷z°@Ô´ÝÇÃî—”¤EþŒ€~)Db((öB}‰öÎáE)D>É: 8jítuàb€wOX¼˜ð†ˆÄB 9ôÁ„c!Ý#ZÒ°Š¦ÒŸ{¾Y®û÷Ä?’;_᤟ÖeQ„íýß¼Ð^a,!êÍ»eǬÈïAY*QIì}Üúû4ì÷mr“©¡ãeþóHŠÄATªr%+Ke-RUÂTÏÓæúõÅÝ—¨ăǚmãÅê1â5×íéNÊ)Ði‚1KïÂ̄ԈC˜a(Ð.µ•MB ]Ùúð^0Z1tžÎ²&­b•ªdi"p‚Ž“¨ÖÄùÐgo.¹€éÍÔ//äèBÄ´ð¼c¤vСH4A(EJÒ:Þ&“ï{u)×]3·ÛÃɨ‘•  é*r['Rƒ°†GÙÉë‡#ò`ïX$K$È=ÐA „¤JÃÒÓ"’JÐ #Iz³üCý%Û44ØK¹…({°Â€"˜°~câ?aQ9C˜F™:S’ÒºWÀÅ:“»Š“¼Z”âAxIpÄ<%MÍŽA#R¦›vd¶rHó°†x,A€Ÿ˜²‡Ññ—C:°`³Ì0²ô¼º? ç$ØÆò~NïO)É:±Å" T{¥Æê\,J3*‹(Ôlˆ¾¼R܆[1l¯,XÄ$Ö¥Âôß{"‡ßí뚘;€èã•X‚¥„ÐA„ÌEì^ЄÉuòÊ€‡ ô!µgYT,–1B•q#§HÃ;/‘:y ;¤ÔÄUM%TKA5S 35TÄ¥TPD…Pù< µû¾¢#àž²A<„©Kƒ!ø‹YIÚN\Fzì 8hñv'°íò2±ðôwaí Ê‚‰œð$v9 ¡i#6ù'¡ê‘#)IT‹IM*JÌd “QqSJ»IøñO­†Q ›¨* ‰*™h×’ÞÜv³k-èÞ쨰=}Úy‰h6q¹*7˵ äÀm ¦Ñ§.íõÆbÈJ´6ÛbcáÎ$dÂ!@Àã °f‚̆"£áóÅxp3€Y‹¶ ;™5gfƒx´:êYÛXªa‚"´Ü½Y‹}ršø¶jCMdÑf©41„“f”3¨½€ìˆÐ8Vgã äc¿§:®¦\û{5ª:bõ.˪ÜOUrÃ"‘(hW³fú½œÝ˜ÿ5ËZ®°èS§Å“©²Ù#"ÎÄ#£2Ü|ß®µd5J‚°géÒk;8î8ÓPØÅÀÕ ¨¤ ô)Ö¼Õ9>Ô‡c=þG’Š@Xu«ïé4 ÞÁ¹Z9áÌb • Naäh$$€àÒh"`£†¬ÐÝ$…Ô ÚÜ™ðÌæ}\îñH$›ðöÛÐqU…Ü!ÎoDCuú’@)M¬ Õ¹Ö΃½N¢æ´nº]-w)h5YI X¦Ëóø$ÔŠ4†IwØ: *êfµ°ri\šDÜr{É™ Š–%Jª‡Ëî^ÌÇóÀ™ß~ œ@ä&BÌ ˆDžŽß°òDùMhhhprµ¢ÀýD’÷ØŠx(ý|ЯÝWŽÏdPÕ4FJ_\™ ‘L?‹É†¤)¬ À5B!x$N%y¸Ç99UÐɽ¾sF5ž£B§ià|ßY¬ë¾i?4P£b´˜Q×~UH¤‡AÏËÌcœÁüÿhRR0HÄÄ ”„CBRTÔ5D©¬R¡§Ÿ8C„Šh >®§å0È’a Æ$ÂáùÃÝ='¢¦¦ˆr1²ÂJ£0ÁÈÃ0Äy<°uiíS¸9™([¸Þ‚.—ÆÜ6‘M]úWkI$êU4½^†ˆ+¾†Ú{@sé¬} ¢jÍ$iјfЀƒ©P x¨× !®e1V0ò÷+]šêì%T”X§Ç2—,5‹Ððy¸ñCâMVméÓnx›†+‘¨cÇ%«l´ÃT6ÝPk!MáŠå‚¯Hr1bx Á¬©“@àŸMžùZØÄCRMyý„°'ÐÃ"²?Õ?Cð·õ} ðI৪" Z3 0ÛîÒ”HÚ4P§ê¾Z^·vÿOH6¸g·ÃKìöâíìâc/MÝ«˜w` 5föÐaƒ5º25RÍAÕJ˜ç03HáŽÙ­X]!²iÎæmµvšƒ( ²bÊ&ê¯|ŒotÌ5Zp-S6®ös¥ƒ±A;C¬_n+¨ 0Ì1¤i¨ÎœgÛBÞ¶p€6P­ÔƒîR×á ä[ê  ¦.¤xè¶ÄM îžsSåªeb¦ @¡~ožüÿ8n¡óØj‡?µa, L¢•íàõüøýOƒ7!åB™h)l¤>WàfRn péHs¨DôjQ 'ñh+¹Bæ?ûõFE‚0BG9:ŽzUx•ºA G €â „ž¨R°b<È={1 ‘ï¡jRÅÀD£Ø×ÞËÉ«ËÏÞ6v˜øÄˆÇLÁãb.Ib“1ʸT ÇÀgX!¯*.|&¼›ÊÔÂÈÁ6b]ßÜ1<5&`^,!CîÀ1ƹ5ð\ÝPñX7ägÞ$ÚòGyèk«X©ºxFdpÂÁŒ ÉPL^Û‚ÍÝ‘Bu‹åú@-Ø4óâï\É@wY‹ °èU@J¬&?g9˜—@:Îkù[æ‹°DÚA(âÿŸýÏ'ú?ùºûzØÿÉü_‹èý¯ðɳïñô@B… 3 ÐQð(,Sû7ý õß-ó×é,ù<ûž÷κÇÖ¤ëÂÇg¨9"r ¾2¡CH&¥%ý@@õ‘û5v,D?mŒ‡ä‰Y^Sãõßa6†OxÉ(Ý&b42ì¢kedM{¹/Pq˜OîzA›0Z(£q„g'k*/LŒ°+V¹ôPò,ýWUQ ¡A‰æûBnâì]r‡`J!12~¯ý1ü×NáK ¸H0"HŒ+TÚlh ÀP' ©bED\ÎÎxRiüNö3å6 WaPÀKp’(W#NXzµ|»òõr²¼Ç,zaºŸ•7k†F³ =¦›{×N=ú•b\µœ˜ÐÞÛØOa£p¬ýG¾‚BÖÜ5™ÙàÓzqå­4ìa¶`Ã[•Ѱp}¤c‘¸8Ætjc9)î•ÕK…$!$“ðId4š„Ë[é&W,•Ú¢’RmQ» Û°æ«kuF ÒVnÊG¢h¸«O­ ecÓšù ÖB¶¥Û{’É[8VH°R±FÛk €·‘c¤×uËÙ›ÜW˜b+‘ÔÄlQ¢µ1ÈFÀtŒÈ«Ya(‡2"À”(š’˜‚ތҔ4‘ÄäT-q™¶A¬‘ L‰HÐë#v–]12š5Á„¼,2œ Ö±SRú#dãGÈ”%¥)(ðÌ Š ˜ÑFa%¼ÌŒZÈ0’¤.1Ñ5±œ-ÁYÙßÛ›ØÜBaQIqí-§l·µ\’¨¢˜80r¢Ù&%J̆u°Ú¶D±œ.~c8Ù(EC–Ye8E1Ðãi„f;ƒ˜0d¢"Š’MÝt‘+É@IY‰ŒÑ0ÕDµR¥AJE†c²5‘QI„˜Õ4£2&3*@Ê$Ö¬v[ ˜’7cÆMè²"ŠƒËÕÍyúõ7%A³=ŽÇî‡DE˜XæI©n7%¥ó,‹QÁ´Æq* a,uè‚ ÇÒsB`áŽ,zÂEŽ 7l¦&ª@ä)-sëµX«F¨‚¡À &aÝ€'õ î"bÑÁÀžW„Á—¥”ŽædÁ´N²€ÎÝJªÜ[ËÆ<CÆ$Æë&ÞrXOßù%¤U"wîÔG'§¢ÂÖ¾ù‚ F"€ãaØjàíì L0Æ¢Q`˜(jЪ0jæ&£M°§±/¾O §‚1!Å I 1I”QYaB0‡™ä@ý}>6®ÛŽSÌŠû#„Š ,ãrƒ¬ý¬°LbŽa›Y`QUÑAÇ No«k|,ÍÜÀ_z<ë´(üÝá'Þªô1æÅ燸0â+J•T” •rÿmǸxb Ëtûôø.ëp$…7tdØ›lÀ°È*Œ£1°ŒsÇÚ<;Ñðe‰É2%ލÐhǬt®5³ŽÔ¶ ¤`‚=ß?‘ ª‚Šˆˆ R(–¦Jh=ezÞ€xç·Ñ¡wÅA£3ñWˆ‘°]05ö訜q¢<¤ôN`ø(¦Ì ŒÁr&%Z }ñšh‰(˜>“¿÷tÀïuJ‡Yޣ㽚®•Y¡]µT‚ÈLÁ{¥8—;ØZ)ÎÃrÍ8¬'Î:ü¥†@ “×ãBïîÈ¢"$Âb­%ˆÌ ¬‰°©uêØÕ ²RÑóÑ€öÑ@Í0,XSjCÓ7óÊFDª(¬`qˆ"Æq Êœ3!šíŸï”;–a”óËU°ì!†«˜0J„pÚ˜¡ÈtR)Pì ð&À‹¿Iß340êF»ÇćéÆAd8‘ž‘•h)µü›v'D!– B!%¡ûFè·¼Sâ‘L‰`‘B“´eXPáàFÊX›Š¡‘^]pû!M3äfÂH"I &¢B(¤"R Bb’‰&‚ )J¥"*‰™©i € J’… Ö`úÐÚ|,Žš&p U”"ДðŽk»›œd’ 4z=|ÝY®èÐñE3Ywª¤H©ª‹Ò¨õ`{Où¾'Áø¤tÉWÚüFü{ã!$1`LȆíq7éè´ŸØÏ€nf†.h¥/MU‰ ¾ûQ•RAUTUBM TJÒÑ=™‚BIHÑ&´!Ÿ£ð÷mù?/Ëvü_À¯É®»¹"¬#ˆ–”‹-*Š®[*è¤,“©— À¬Œs `ˆ…¤)PXÊQ¦Ë´º´-[¢„\° ¿[˜I+K³Ì-0Þ19!FI–@D#"d,,(’µ!“˜0OÚ!XÝJGɿ׮s“ò¡!©°*(\‡LHè L×›ƒ½·ŽTìíáÉ}X²©SÇXªëgV…Ô·¬a$ƒ›ËKHâ¶2aŠfbD-˜"d¹Rš"ÌÉ,p:aaÚÁ¤w ©ZÑ ‚+Ei²•“ ‰8ñ£ë¶•à˪°6B›ŠR"Ó†A$q(a"V¥pµ!©6NȉÁçSÆ× ê)¶ø‡åŸsìœf¸ýáîšk|@‚; ïN>ÐØ~nözuzrudÜ;³Ž5xqÝÊã…â\œZÄŒ˜z5ß|äÚý}æux·àæšÈ·ªî˜]Ü“"V'‡˜TÏû¶o$säÊÎþqµîBK»ÆäÊ{Ve„žÂ1ÍãVhJåª.»&mdÇŒ;òehP¼#g ©áaø©ŽÏÉùæÓš‡Â’4‰¢ÎíœpùÎ"Ç‹wôaª9Y:³œÍ¼fO͇¬%§;×EiÄ…;šòž·µäo5§»ÄL9c«ŽU‘mi³éMã' ³Ôgy±slM@=œìŽ­ÖŠèÐc†cÌw|¾Æ²&\/ä_Ì]5óꋉ¸ByÛŽünØ‹¦a™]ØìÎåÔ«z˜vïkzÖçˆÆ{êƒÒ£uq‹»íPeƒZqõi’yXm˜Ùã'<ª u ‘ÊaÛ2õ¸!¼óïË~líÛfE§qxîó>òlkÑÕG[²%™(á * ñ/ŸN·n½„E™ŸˆuÄÞ2 hë KÚU_aˆ@°wÁ‹³’“, ñOè™ì·ú=–ofËÚ—K`ýp»¡Œc”M‰ä|‰ºÖW’æbïƒÊX•®r£)½s£9±èòL×ÑmkUÞ¬@Øæú4ŠâoË™{gß-W±1µÊb8MÄΗ‹–5#%á—+TW‡9P„ •40®p c²7æH=º6>¢HöòöµvæÝžíÃã³òº#5æQˆ¡ô¥Ðä¨ëÄW1´Yi2lu dA§Ê$¬uªÉ…í¾Lyyú3ß-~ÈsĹ{ ›+¤C^ß«¾fwEÅíXyâ= Õšj‡U´tªFìž8~Ì3Ìòˆ5œe—/té"äz¬‰Ú-‹Ñ:êsf¥D<«VQÛ¿‘åV³<¡gßÖËðààp3{« ~_¶,íßÕîg¹'S­;(~¶úø¯ß,xïf¾Þ|ûfw—X·Vµ¯—¡ü#²0¶½¦yÜ"]XPTšÌ!MŽ ‹µkZÑk•„ìÒ;ß!ð£ËnUf1±é¿aFøƒÏecA»v»æ&k6‹–ìð¡óXÓ˜®x“œ«D`¼’ÐaK@€©è—M‚½SÝœuײ~wΤ…Ý[œp‰Ë2%ÊÈXÁ2´\°¦Ý½Äœg#± {’’%Û³Ö0¥¨!šk`¬ôŽ/~LŒwLên£}oÎÖ÷"Ä?¯”O¶Øf *“\¶ý,Ï_©Bë§ÌPläG\Õõt!¼ÅÁp![ž›6nˆiQ qÑf>ñC‚‹•ìv˜!Ñ=,@¤éÁ djã·e#Ž ö‹sbî8ñbœ§¤Âž ņ\­•Žxjæ½±X™Û åø¤T3oK™—31ñ‘1Ñœ–'Ã#Âh[dƒ†Í–ƒhPvíoT‹šqaÂdãŒfެƒl`Ñ1®6@\nodÇ^ ƒhÂ%²än’&p8aÉ®lÅuæQ¥ˆÅÃw#Ke‹ÓDÁ›¦2è QkåÑ”y¸Œ3£”£R f0ç‚ÉÆ µ÷™$ÈØƒ)Ú©Ž-Aˆsc™f…Þf{‹”0P[;"\°ÆRJis†Îö‘ ; 2P¤1©tyNó·V´MçF ‡¹Ñi@;Ò­õå÷:‘Þ+VÄŠ¬1àMšÄ´ÀäÁ“—¦6µÚb³CÖµŒtwÌwç >Ž¯Ñ©t¡’RB5†ˆbŽpåÉ„äžíeXkES£ ¤„d^  ¯:qÇõè8à”߈c ËåB¶A…D! L BC,6dU„¸˜5T”©Š2Ñ(öõSZ¶…¯üNàÿKÔmÙ'7f½A"ë'BìbsA’?¼Æ<XúÝøôÙÅårqäúÎÁÃE@ÌôK™ñù „–بfcspÙ)y'ÌGáÄQB:8éãD´ Üï‘(‘Ù.VÂÍ7t ¡Íé„ÔòJcI£# ŒÄÉ ƒ*$MØBÒ÷KÓiØx.¿EÊPЇ¯)³%ü³ðîSòÔTÞ$™Å ¦ÇŒMÈôß½3·ÈqœeÛEHÈ(TxÀ3 ÝÚ%Z7è:…ṯ̨r‘ï¸_š*‰ ‘Šˆ€=²nWU)J¢î»ÆÚ x‚-܆›yøòk•é*6LŽxPâÀC«ãðà® ÌÎc‡Ru+Ñãš HF𨧧 ?ŠD8îI‹³ ¯'%"ÀÀ9F²6Ì-,¹íùüB#ºx;Re=þŒ4W|†JÓ£aß[„:™bCÛˆq 9ex¨ƒŒL H’/íj/²úˆáÅüÔ|‹ŽÂÓA®$¯ÜL$1o˜áHJÍ¿óóü°æÀQ_r¨¹ŠœÂ3¦™­eû§Np£­lÐaФôMØ´ iAˆ/|OÉÿnI¾ÆoNj‹;•6,jg»ªªl¥‰—µ¯ªBP¥[ ¬M„‡½8”¬Î©°Cˆwèuf˜3%Dû5¤èk¹u{yssMÃ㇌‹6©©°{ç{Ä_8Ç"Q*bñÔØWBVTéáßܬîn“ÒÑ/kD0NUñ©ÄšÏQ¤‹a,þ×6÷8-s„èL&»-ÚB qƪ­“q(˜bÄc6’$±3&&ðmc´•l]4—DÅàuÌlÌç{;’ÑÁz326„ÔšÛˆgLã B|Ö™)2å„ÎÃ-˜´é:ÌX|ÃS¼R10­Â‹fKB;Î5…‘ؽqÓpíEKpÙº¡0›ZÍp>°bbqºk‰ kq›;IrÖ»²a[[b¾œÔ66=A')‡Û°’BxN×s;w£$ÕU¢´£÷—7ja9D<èØöáƒlÈ«âÐhÅí<Øs%c‰÷b"‹94ËsLö³S³¤@Dª4=ÕÌ éK:jd EQº*Y¹h(ÐüpÃSká³™"e çxÚêϽÐJm¼6ÒmNÅÒ£&Ù‚Æ÷­â-b“7Å“=ï¶¥Š a°ÕCØÃòºA~9äËìr…v»“ 6Ï‹aõ%—Hš”Ð’ËÙ:0éGW ë|Nÿ-f¼ po¡Øh#ZQ‰´8BE>Àâ-µ˜®a°p5ÉeÑ›“zS#‰|ví­KF*¤KÙ­3™]Zøo u…$à™PÏI¹ puCMÂ&V¥ÒÖÈ7¹É2=BM¾ol¦‘dC¦«b-(»â؉n EÇ@Œ #dEʹb€ç`÷‘dR*ãùJÐ8âf{C«ê²ô9k ŠjM=*(s'9£N[Y_W‚%Bºg*±xn±®™ÿ¹À=eh'¤]µE[NFæ&Y³_+‡’ƹN³†ˆœv‹h¶êž o˜Þbɱ˜k&.o1¸´lV(L ‚ó3P¦^h³sZßpVMímUU¥xøh×|Z#&É1£µˆišÊÊ ç^”)ÜM=Èfg[ßv¨çhQ’ý¶o;‹ÖÍõ‰•ÑÅfÖ0Ç ËŠr ‚ÅÍN°B5.ð쵈*íOÅMïU-´èŠp‰“16qáK5ä™±ÏVì7ÌQwx:Là‹èHË:Ynm œ-,AÀ¬˜¡ØÖœs Í’Øú¾J4Ž0á$-U>6„Ú¥NQËŠ<¬å©‘y—‹†Þ¬ŒD²°êÄuɧÃÝÉkYØjr›ö•µÛBŠ€ÁEN,ìcÁÆ ffÝ œ3CS¶~>¾ÛoµãnüœSNË ÓnoŠ,‹sÁžbïpÊRvE˜»u) Ð–޲FØÚh!ˆGZŽ6UÐ[œ®FfAs±¡ÁŒ‡0É Òh¸®´µ€3bÙ­ó3‰pÂot ÍÎŒ QÅ—q˜¸XËQIœ ΓÇ~« ÑßmÌŽ¥jI:ü8Uuhǧ Jî3"K°4?Ë(BDS$‚q†™ }ÛA‡=ôД$¤LC(˜ÄDqè) P$å7ªèÚE“M-rEBK& ¦ÛG gDDTJÓ]³V"KªÑœÍ¤Ä.“y±¹jú5œ±cE4ö”Æúè­Â ›dÁ© j •HWH›ŒJ¾)™"d‘bæq¨4ä×`3 ÔàcHÖ)AŽ5#q4l ŽdSPáÒþ â´Úã“1é½Ì#HŒ¨¬X ‰69uPq¡‚`Û(fˆF ­B ·¶Ëâg¬zÃv? ®Êrf¢àg Ò4tÔè#©¬fÓ[ÝLàv6^L<ÊÕœJÕU Y§‹€ê»qFXwk %QoúuDlD,eŒŽ`ÉsÚg¡ f©bgn¢ž¦lYwµTé)ç•­rT¶€ÓÔ• ÁL”ŠÆ€Þ],FÒGµ@á6tÛ¦³QÐÚŽè›lÓ"È©Ëçnîøá¢  Ú÷ì×öVF:0{åG8„´«äa*üQýíøáÕ!A@H¹˜)d)K@+H9 ™>Âõ† )¤)UÜBƒí„$¦Âbâýpq Ì œ7Š‚t”É(JÉPÂ@?d(&T¢›„Ü©Q 9€w2)Ó9çu;ôãͧ=Ý7t !bT ’d0ÌW Ç¥M†‰µ–ô.i“6pÒ¨Ø?Ól{àÜ”†¡|tto1Ì# Æb0´}PÉAHÐ ©HøBdþ#©ßÙò‡Ê$ÁÖë>éþö{7CèF!¦'óžÀž$¥lµ>I‚ås^«šMªvž4„d‘_ðG,+,FèDÈÕ±ÙÏ(¶ÁÐa Íaõ&IäOc)@#ÁnjòtNƒÚ ÜÂNqž­ÁcUvt^Ìã¤2B¢#¬/R$!^òÖÄ;ئa¹n,5Ä‘„ì4¬DDDI1SlXe79½kY!QØkFˆBHfà“1±§ 0Š— œÍ Á8pC°© ­š–¦ Á܆&é²SR…¡i·J°eN´JÔÛDY¢C•ææR´Þ¡D-YH’Ⱥ,ÖEu‰&˜ÐÛ)#0ÆË"h`TâÒ#EA’ÊPa‰Zƒ–ØF‰‚wɆˆ­ãFT)¢±É²{…w‹ÆQ(|í‰~+?}‰•dËUUf!¹µ†"‡)è<£ÄËŠxžMQIA^˜Ï£O“¡±|íMFD24£S!‡¥ôH1€z% ¡|™D¦AHxH•7 ¿GêhˆóÀ{ ™‰éIÔ´ P´ôï@ ¦1L&Š?÷Öxú9‘´Ë¬¨4ƒT"CÏLI5¤‚=6}%j®Ç‡šO>Îs°E"o¡¢„ª¡*ŽKeÑE댢™ˆÑ€4De½`KDp*wJ‘ܯáaH¦õO*?!ЈMv¹t¥r²î¤œ°¦†j‚j“XæA3S1¦ Z1“ …-*+ÁB"¨@ 20wæ?´CBô4%àÑ!Ø0‘ÇD‡Ïôf<¬:ö”'Ñð•$ $þ?=é'X½q±±¡àx‡‚‰~CåûÎ@@1#ר4/I¨ÀAÞ§ÉŠc Ý9ùHÝJÒò6ü 1%'Ir*”5#k ÷í­àu j4Gðê%œÈÆ'¿l§•„h}:ecfÆ3JXiª:ч; j8Œ:³pÔ#Ö-‰Ò1¸7«G¾b×'i¤u8—>øqÀ6Ê’A"ÄóˆwǬy ï^„=¸ãß¡ƒ°Û¿˜8 ¤”X¢Œ“¬»™¨O¦M;ÈáX,‘HnâsáuÎÕ“…DJipÇ#`«)ÔÄýµAîÅ!øÉo¨IY/ƒ€–UpŒˆÂâ)ä»»9ð8oÉ|^N¡Cœ< TÔSB ¡U´EaHûð´›÷†W01÷É[á ÓÃUtÀ‰Çp: Dª˜!ÕQ=C J' µBv©9PHi' 2ò_‰8;Dˆ SÊ*÷~¢Ë|la!RC~ tk³£ ˜V’äs>åÊ•A)³&Ïèq«p¼Ð²"z_K $‰ÕCà€­ˆöï euåEð÷ýlL>C0*”ŽðM{S2vÕtYÙ÷oy€z(*‰*  h"ȧí§ÀèÐz³ `KÁÝ5òqKÜv|ÿ6ÂÁ'l29gvÈRD1LAÔLÒö{KÎv=½˜˜þÃ>è4O°Õ"ï‰Q{uK‰Gh=..c™a 9Þ0 Lˆy `†3DK2Ô‚R‡(‹ nÇ%AIE ;é{³Ï¶÷ Øø‹û-—¬ åzzPô}Gš?2(oIûÌÝX~¸(ÌSSMgUjäˆùsZíOd‹[áÜ3ö¶¬ñõé> úši1ž@kjð@IBÓC£Ì©üÞ?Þu%@Oè@†µt‚H¬$š³ }§¼ãç—W «ÙÓC‰ØpwÁJU"(]ED) óÏQðm©Þ÷¨½!˜Ê²„²€K±M¾×\FD}ÆJæC|²‹èÌ©ÊNT‘%314yF¸'«Éó^ñXhLŠ(•PÜžÚIçO¿}PžYS‰æó{}„9.@Ÿ6a€¬ºeÝ·ñ\m3Œ=&ÉßõŽùå§×! §’©4ÁU„þÆ¿ˆzúü7³Òx’’Oùî ùjfÙ5Ul²Þ E8dêŒ5%•a“ÆØÈ3µûœ;Û–K$-%‰%*©"TÃ>P>a'Æüo›|] ¤P j•fÅÓ$Ò4ÀÓ°ï“·È—æ}½Žÿ¬økÕÝéà«Âƒ©E;ôTUX2A‚ Ã÷®gÇTØQOà~ÃY@$öùÎÛ¦«Çª‰ ^„OXJúý-g&) DEÕCówñ¬€Æs À£%)É ŒP¦•PQ —ÆÂåˆ5&Q†eDÉFQ†dFc Yƒ„ÉPㆮI„Ë×Fôs&·$™.›.szÙX 3E”aF"™9„FXbö´È=·ÛÀ²‡B.˜9]L3L¦D™¥ .›FADd”lÃG–0ZC‹…@"` #‹1¥ X¼¾…«Š0êmLM­cä(²,^xÞF<6Í”>Á„Ú4ô2c‘L ¢sl³±+Ù®¯³X`ѼªæâOƒg<ì>w¼}03l ØÍ£˜0tm²‰R`ºînŸm´9Åæp;!$¦I‡C3 Ù°æì­/7|Mƒt×%¸Ò¬»Xv q'YAB,Òk ’ÖƒM“”.}w ±±šì]"uÞÇp„Ѿ©œ‚„`—–.á3ƒ¾KB–¬=ÐÔè0Hìè}—†²ä—jË» ­.7¨¢ãººsÒ@ gšÜÍÕÝÐÙSÖ§lÊ™Ç7l®h”5¢žˆ‚&fpåÙË»‰4¨R‹‘*%p,·ƒP§-¸JÝ/:)“BÍỌ̄ {lØ%íп¼!…fu–ÍKhëEnžšÌ\f¦w°ã[|0Ì]‚ø2ABFN&[)!¸w#.9û÷™j!7"”h<F'Å;Hôhó˜ùÇ„Ê!‘‹À`Úø¸m¹½y¸·ñzÜy8¨Ñ<ÊÇ|:N:““èdÄ(xíÃÌ" }’GÝœšROÉ–bŒ“ P¡Jˆ/ÅáòÔµòù„OŸ‹NaHIæ^XÛ4C@ÄÉR{»Z((‰4ƒÞ>×|NSÁ (¢½±G$®<ÌA^(ØgàïzúÁÁtùhïÿtüé¢{Ñpš¿‡çíq²Ÿì…3ûìætî#û¯ªŠ#ú8Õ.z¿KPÙ{úg¶š¿ö¦\Ä{騮”ô]*,mSú?;ñœ˜ÿê‘à¼ù²wq5…WßìòÌ Ü´ÍGö“®©îÄ?7û4ýwÀ n 4‹…<ü>Ù{¤JþȨ¤_%Q‚S}U½§ëzk?÷ßÞë·ýÖÀüÕÜ,&x·è{¾:2€«µübˆ„ýýÁwÒÍÿSÿ^ù¿gRí]c ¿ÖƒÐ¥ù´8¬Ñ‘r«“Ì͘ÿ„ÉöH¢7ÔæÁ e x€ãàÿùÿ'úšð‰¨_Îÿ7ÿÜÍÐ_üÇùçíéÒM\õy%èþ¹_ßþÄËø“þ#ïæÿú tþþžQÿâîH§ «÷OÀtiemu-3.03-nogdb+dfsg/pedrom/pedrom.txt000066400000000000000000000034461220314353500201120ustar00rootroot00000000000000Copyright information on PedroM: PedroM is free software and released under "GNU GENERAL PUBLIC LICENSE Version 2, June 1991". The source code of PedroM can be found in pedrom-src.tar.bz2. PedroM - Copyright (C) 2003, 2004, 2005 Patrick Pelissier PreOS - Copyright (C) 2002, 2003, 2004, 2005 Patrick Pelissier Side - Copyright (c) 2002, 2005 Clement Vasseur. MD5 - Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. ExtGraph - Copyright (C) 2001-2002 Thomas Nussbaumer TIB Install - Copyright (c) 2000-2004 Julien Muchembled. 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 The precompiled TIB is PedRom re-built by Kevin in order to remove non-free parts: This is a version of PedroM 0.81 modified for compatibility with ld-tigcc. I also deleted the non-Free files (the builtin ttunpack, the builtin stdlib archive pack and wti.h (not used by PedroM anymore anyway) have been removed), as well as several other junk not needed to build PedroM and built PedroM using the fully GPL option. See pedrom-081-ld-tigcc.diff for my changes. Get it at: www.tigen.org/kevin.kofler/ti89prog/pedrom-ld-tigcc.zip. tiemu-3.03-nogdb+dfsg/pedrom/pedrom89.tib000066400000000000000000002763631220314353500202440ustar00rootroot00000000000000€|ª€€!€28O€¡€MAdvanced Mathematics Software& @€|,ÌÌÌÌL!!ˆ"E˜"E¤"Eª"E°"E¶"E¼"EÂ"EÈ"F&"F>RO!®š!®À!®à!®ì!®ö!®š"Ež"@b"@†"@’"jÆ"@”"@Ò"AL"H"Fä!!ˆ"Fø"G"G*"G"FŒ"FŒ"F”"FŒ"Fš"HH"FŒ"FŒ"FŒÿUªÿü"ƒð¹pFü'OøLpKù`Mùp=|@@;|ÿÿ:¼€2<tQÉÿþ€Aù^¤NqNqNqFü'0€NqNqNqFü'0€9pp3ü?p3À^3À^3À ^#Àp#ÀpNqNqNqFü'0p|ÿ@ ;|1€;| €@|!|²|î;|ÿÿ‘ÈpÿB˜QÈÿüa´"|!|¦³ü!€bþ9`Vø]ËB¸aLaCrHz(Ba$Hz(XaHy"›€aa> a-ôa}ZaHaŠ` Nù!{ˆB8]ËOøLAøDN`aPal2$*3ü²`v Ac&( Cg3üÌ`Aú(¼2aVl>¼‚aVlHx] aWàaV@aB\Aø]l!È]TBP||N¹!ÉlBhBh" <ïx!@!@!@!|L0B¨$!È]Pa¢aAa?4a|*N¹""|9`gý„OøLFü`Nù"Eú¹`Aúüf“Ép?"ØQÈÿüù`NuHçÿþOïÿì,OEù#Gù$ RÿÿgR Rÿüf6 NCêBpÙWÈÿüfSˆü\Cê pÙWÈÿügBSˆIêa,v)ˆx8*DrÂDØAÕĵËe¨$K×üµü?ÿÿc˜OîLßÿNuHçþNL?BEaþJf¬08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`µüÿÿbp @fh·ü?ÿÿb`·ü"ÿÿcX @fPRƒCÿþIó8ÿ " H@HA²@f:Iò8ÿ¹üÿÿb. ¸ƒÃÌ[¨f$ ¸%Ue]¨fâ‹0<AúJCøcz2ØQÈÿüNøczzAù^¹`NqNqNqFü'0NqNqNqFü'0ù`0FßLßþNuSCm"(K8¼PP>6¼6Ç0gøQËÿî8¼PP8¼ÿÿNù!%|HçþNL?BEaÜJfx08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`µü?ÿÿb>µü"ÿÿc6 ¸ƒÃÌ[¨f, ¸%Ue]¨f" €ÿÿ$@0<AúJCøcz2ØQÈÿüNøczzAù^¹`NqNqNqFü'0NqNqNqFü'0ù`0FßLßþNu4¼ÿÿ4¼PP4¼ 4¼ÐÐ0gø4¼PP4¼ÿÿNù!&jN¹"AT ]ÀNuHç`pt2RAÐBQÉÿúLßNuHçÿþNL?Fü'!üƒÃÌ[¨!ü%Ue]¨Eù#Gù$~ÿ¾Rglx8*DrÂDØAIê!Ü\N!Ü\RB8\VAø\Na.¾Jg6!Ü\N!Ü\RAø\Na.ªJg":aÿtº@fÕĵËe¬$K×üµü?ÿÿcœ`EëŠÐaþZ`ä ŠcÞâˆS@¾ZVÈÿüfä`ÐB¸[¨B¸]¨FßLßÿNu /B@ @tÿ2 o &/$NL?Fü'!üƒÃÌ[¨!ü%Ue]¨,O"gHPa,î& g¸a(îB@2( Af¦0h NC(HpÐT/aýž faaý’ g‚Gèÿì a(²*Ha6Ò8gl a'ŽJ€gbaü2?/-//(/?<ÿþ$OvaúGë$L6TCaùò>¼ÿü$OGëÿìvaùâJ@g"Gëm ?- ;D Aøc¶åL!‹@a6’p.NB¸[¨B¸]¨FßLß|Nu oNL?Fü'!üƒÃÌ[¨!ü%Ue]¨BgHPa, g/H>¨ aü~ oBh a/\B¸[¨B¸]¨FßNu"y ³ü c ³ü ÿÿbNÑAú˜Nù"EÎpNuHç>NL?Fü'!üƒÃÌ[¨!ü%Ue]¨,OEù#Gù$Bz| Rÿÿg RÿügPÃR…p0*@rÂ@ÐAÕÀµËeÚJgžçE¿Åcª$K•üBg RÿÿgDx8*DrÂDØA Rÿøg(AêN¹!·N?gt/a4²?gj0@NCâŒSD0ÚQÌÿüxÕĵËe¶EëŠÐaù”J@gH>g,aû¶Gèÿì0GNC$H&aøV0CëAøc¶åH!‰0a5`Ð$K×üBzµü?ÿÿcÿ$| .NB¸[¨B¸]¨FßLß|øNuaü†/(Hx/(/(Hz"E//axÆOïNuCúô o`1òpNuNLFü'08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`Aù! Cø[$pØQÈÿüAù^¹`NqNqNqFü'0NqNqNqFü'0ù`Fü o?8[(/8[$Hz!WHPaxOïNuaþ a?Öa4Receiving a TIB... ON to cancel BEFORE receiving. aMÊNLFü'Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`aö"aÎAù"g¢Cù0<"ØQÈÿüNù LJfüBgHhÿÿa)& f&a(aL.ˆg0|a"ü g0h "La"î f W`Ü\NuHy!Mia(îX g0h aLè ÙfSˆNu‘ÈNu -föarèCèNug *g ?g g²gèpNuRˆ`àNuNugö²føHç@ÀaÈLßJfêNuHçþþ$LxGø\hgÖ gôSŠ'Š@XD DŒlÀB "f0R³@üRŠgª "fô`PRŠRŠ >fRŠg gôSŠ` >gà gÊg` *fPÁ ?fPÁ fæB*ÿÿJgÿn*3@üYDCø\DJfü?<Hiÿÿa(,\`a(z&gÿF"EaþòJfì'ƒ@XD DŒmà`SŠJfºa äL1Ä\fLßNu s@üEø^ CúN f >fRˆT‰`Eø^ 2f" >f  gúJ gavh gYDb¬auÜNurwaHçðàap,68\fUCmEø\pÔÃÔÃÔÃÔÃ/"at‚XQËÿöLßNuEúaKR g$aK‚ @ m @ènÀü/?<aH®aI\NuaupaÈat LgZ "f gP "fö |fæHPB 8^fBx^Aø^0¸^1<a|‘ÈCúÿREø^au a@(_8^ fAø^ au ` 8^f$Bx^Aø^0¸^1<a{Ø1ü^aAø^ `tòao1ø]\$  gúSŒGúà$K0g&Có LJg± gøTŠ`êg fòaý|0Nó L—Ëg föGèÿÿBaü¨ g¼ (gF?( aIÌ óg àg"T`.aý6aþ†0Bx]Üat08]ÜfNu`GHaýaþh0Nù"XHTaJ.¸]¶N¹!ðJ8[ºg .¸]¶N¹!íþ>€0@NCHPaIšXaa/œXNuHçÿþv(žÃ&OHT$Lg  föB$aIއ gga``ø(WgB $gZ >g f t a8t>a4`ê ,2ÿþf , ÿýgÚt a,ÿÿ`ÐBp( _"Oa+DOï(LßÿNuSCmÂNu~$L {fRŠgÒ }fö`~SŒ`~ gô  föB,ÿÿHçOïÿÄHWaEøJ@f,amJHRa:.¸]¶N¹!ðX*x]¶8(KzN¹!î26&LaEìOï@Lßpðgÿ$aÿ|`ÿNù!éÊHç>HPa+€ _aarpLß|øNu o0/Hç>>VGGÿþžÇ"OBS@m.ØQÈÿüBIïOïÿÄHWaE`J@f aýaEx`>€ar*Oï@ÞÇLß|øNuHz‰aGþ`Hz` Hzê`HzaGâXNuHzÍaGÜYaG„ OvaJB@ yf ef sfJWÀPNuaHbaF.?aHD0NuHçàÀ?<HP??a;žOï LßNuHç~ðzÿ"HBBD<8]N¹"&ÐF1À]HQJfüHQ| ÿÿü ü B028]a¨"_B!"_aŽ @ gŠ @g" @g` @gp @Qgn @Tgr @RgÒ @XgÖ @RgÚ @XgÜ @ •gx @ gj @ m @oT @ÿbta*`ÿX³ÈgÿRSDS‰$Iêfú`ÿBBDBaþª0Lß~NuHR¸CgRD$IJfüSŠRSеÉlöÀ$_Nu@ HçàÀOïÿì?HzVHoapxEï aF„Oï$HLß gþàJgþÚgþÔ ;gaš`ð³ÈgþÄS‰`þ¾Jgþ¸R‰`þ²³Ègþ¬S‰`öJgþ¢R‰`öJgzÿa `þ’"HücülüeüaürB`ÿ:0g2HPY OÆø] üŸ¸] \?<Hz2.Hhÿýa26Oï _"HBBDNu E lþ6RE`JEoSEGø_L0Àü*×ÀJg a¤gaþâ`öSE`þ a2`þHçÿþ/8]aED!ß]Lßÿ`ýìHçàÀAúHz¬aCdHzÀaC\aûTN¹"K‚J8]Ëg HzaX g2( g ah0N¹"XOïÿà08\$°x]o1À]8]lf x\]oa4ØBWa;|a-raëˆaB¢Pø[º(OBHzlaBäX Lv(aûVJgêa2OïÿÄHWa@J@f a÷¼a@`N¹!ÇêHPHzSaB¬POï@`ÿ|HxzHx_LHx_va$šHx)HTHx_La$®OïNulPöçÄá–Ï"®X–rÙHˆ¢7¸€>œ‚ҽƳ2<ÞÚÿ`‘äZ«ø¸\1¼?BùfZíNÔTÉ>aúJ@g:NL?Fü'!üƒÃÌ[¨!ü%Ue]¨Eù#èaì,Õüµü@cîNBaùÜJ@föNuaùÒJ@fó¤NuaùÆJ@fñ€Nu/,OEú x\fm$ x\l -f hgŒ lf EúÔHz¶aAlHx\DHzxaA`>¼B8\CAø\DJfüHhÿÿarv g>RC&H0( f B§BgBgBg`0@NCHPt4B@0(ÿ??+ ?HSHRaAOïa†`¾>ƒHz6a@ú.N,_NuHzHza@èBgB§a v gÖRCHPHzOa@ÎPaH`èEúþF0gAúþ>HpHz/a@®PXŠ`æ`ø a(:QB§B§B§HoHoB§aí^Oï Ñ—a'š/Hza@tOï Nu`2!ü!M¯\l1ü\f`.AúïÈ`(AúÎ`"Aú Î`Aúî$`Aúþ`AúP` Aú `Aúîž x\fmøOïÿœ&O$H08\fS@g41À\fåHCø\h"q KBÙfüB§HhÿÿN’PJ@fHkHzéa?¾P`ÄOïdNuHç>N¹"Kbawar¬a¼aè0ad0?<B§a¼>¨ hþÿ a&(a fêEøcº:<ÎvxJšg$0 @g @g°xaƒa%TRCQÍÿÔa)0a&Ô>„g Hzýa?.X\Lß|øNu x\ff÷ x\lJfü"x\pJfüHiÿÿHhÿÿa>PJ@fHzýHza>æPNu x\fföä] x\laf gF>¨ 0WNCp0V@a$J@g00WNC2VA"H>€0@NCÙSAfú x\pa–J€g aL1W `a$–HzHz£a>xP\Nup x\fg 8\l!À^€N¹"4Ô`0. x\fm/8\lHz¢a>HP`ö>Nuaunppg is unvailablea> XNu x\fmö$Hç>Oïÿt&O"KAø\lp!"ØQÈÿüOïÿÒ(OB:8\fSE Lp(Cø^ N¹!¬ gPJgêJfü ( ÿþfB(ÿþañ88\fEø\habP/afò.¸]¶Bg?<@ [JfüHhÿÿašOï SEgSDfÒ`žOïºLß|øNu?8_JHz8a=z\Eø`òvBD0g0@NCHh/?Hz+a=XOïRDQËÿàNu x\fmõT x\la=’N¹"J~JAo0BRa#:Nu48`ð x\fg x\la=jNù"J–Eú‚ x\fmRSx\fgJ08\fåHCø\h&q?<=HSaè\ gÜB 1WÃtÿ0gÎRBAò"Ka J@fì¸cvJg¶øcv`°Nuvÿ0gøRCHzU8cvfV—HrHz|a<ŽOï `ÜMS[f x\l x\fgEø^ CúðþN¹!¦t8^ fBx]\Hx^ aXJ@ma`ðp Hx^?a \NuNù!«.Nù!©† x\foEø\lCúð² Z -f Aø^ f.` N¹!¨^ g"HPaÂJ@m Hx^?a¼\`î _N¹!¦Sx\fn¼NuUx\fm”n8^ fˆEú 0x^`!NzEø\p ZaB gd0h NCp0 0àÿfRVˆ&H/8\lHPa 0P g>·Èl föTˆHPg fö&‘×SH?/*ÿüa %s: %.*s a;ROï CJf²Sx\flŒNu x\ffóHHç x\la;‚&@vrP‹B@#?QÉÿøHSP‹Hz¥a; OïQËÿàLßNuhexdumpgrepcatmoreflagsinstall formatpsexitkillreadinstall tibunppgechosidegetcalccpmvcleansendcalccdrmdirmkdirrmcleararcunarcmeminstall product coderesethelplsrmarcAutoArcOffSwitchGetKeySwitchStatusError0<NA1ÀcjNu0`8J8cigaýÞp`0J8]­gp`&a5¤J@f?HRaþŠ\r2g–@ÕÁa5–JCfÄp\LßNuB@J8\õf xajTÀNuHç,O.NHxÈHxHx\ôaÿjJ@fþÜ08\öáX1À\ö8\ôg ‰g ˆg ˜g g¢Œ8\õ g g ¢g 6g Éfdv68\ö.ƒapJ@f¢ž1À\øHxÈ/0@NCHPaþòJ@fþdHxÈHxHx\úaþÜJ@fþN0x\øNC28\öaN°x\úg(aüÎpZr‘ÈaV`ÿ: Zf08\ü28\þ x]a>`ÿ" VgrJ8\ôf2<pV‘Èa".NLß@8NuB@BBSAÐBQÉÿúáXNuHç"PÅ`Hç"BE,O6<˜x8$H Vg 1Ã\ü1Ä\þ!Ê]àY?? OHxHPaý¸J@fýœ gFJgB— OHxHPaýœJ@fý€Y„.„HRaýŒJ@fýp J"aÿv1À\úHxHx\úaýnJ@fýR.NLßD8Nu08\øgaèBx\øNua6ja4/8]Hç>,OJ8\õfHzra->¼a3ŒOïÿÄHWa2Ö>€ga¶aû’Pø\õa_¢a3Úaû‚`Öaýì8\õ Vg ’gº Zg² hgª 6g faÿh`– g Éfþ0x\øNCCúDBAXˆgÁIN¹"¸ IJ@f¢B@ c¢ŽS@Oïÿì"OB @c Zb ÁQÈÿêBHQaþþaœ g0( @GgHx Orp6aþN` ‘Èrp aþ@aý 8V\õfÿ(aý 8\õfÿaÆ.€f¢Š0x\øNCCè08\öâHU@0ÙQÈÿüp08\öY€/?8\øaŠ\a 1x\ø Bx\ø8cvg /B§aâÎP`Œ ¢fZ0x\øNC( f—ËBA(g\ˆ c¢ŽB§B§BgGïSAØQÉÿüx?<HSa(O gVDOïÿò./hBop0( 0h NC@€f00ÿT@Aúêg´fø(`prAàXH@/@ a`¦ gB§?<QJ#füR‹ OpÛQÈÿüDaýŽà\Aù!J¢/ / / >„ Or paüäOï aû¼ 8V\õfýÈaû® 8 \õfýº" ’Xp Oaü®aû’ 8V\õfýž0<’BA‘Èaüœ`ZBA(g c¢ŽOïÿì\ˆ$OBSAØQÉÿüaýBHRaÂ`* mfAøL2<paüV` ‡f ?8\öa2pT`¢a0a*|B8\õ.NLß|ø!ß]Nu o?( a2RT Üf Uˆ"o0) g  fÐNuNuNVÿ aø˜Hnÿ¦a/Š>€fHza)°B—?<˜Bg/.aa/`a~fa0|aøVa)öpN^Nu o0/ Hç0OïÿÄ&O6HPa ÄX g„a (0h NC"K2TAàY2ÁBY2ü!HQ/a &X“ß2 Ap\A KaûRaú. 8V\õfBaú" 8 \õf6 a Z0h NC2\Apaûaú 8V\õf0<’BA‘Èaû p`p`pOï RAM Free: %6.6ld Flash ROM Free: %7.7ld ONOFF%%=%u PID size name %d %ld %s Kill: %s Shell%s %s stdinArg: filename(s) Arg: SrcFile DestFile %s:failed Arg: number %04d%08lX %02X ????%f%ld%sall#!PedroMNot a script! Line %ld: %s %02lX-%lX-%lX-%lX%06lX: %02X %02X %02X %02X %02X %02X %02X %02X %02X Free %d handle(s) USE LEFT, RIGHT, UP, DOWN, ENTER and CANCELAPPLICATIONS & MODEAPPS/MODE menu not implemented. Wait for next release.Help Keys=[] )[©] /[!] *[&] ->[@]ln(exp(sin(cos(tan(sin´(cos´(tan´(¨(½(¼(Ž(^-1ans(1)0.8106/14/2005BUSYSTOPBATT 2ND SHIFT 3RD ALPHAALOCKSALCKAøcºprÿ ÁQÈÿüHxa4XAúúZr1Á[İAf>0@NC ¼ CúüçaüAúú:r 1Á[ưAfCúüÑadAúú$J@gAøcºpB˜QÈÿüNuNù"EúHPaH f(aZ6g åHAøc¶!Œa¢a g 1C 1| XNu?NCTˆ6gSCHçÀa˜LßJ@g AèQËÿê‘È6Nu?NCRh0Wa 0_NCJ@fSh‘ÈNu2(SAÂüAðNu2NC4´PlPB1ÄüX‚/?a\NuQB´PlæpNuNCTˆ0rCúNù"K¤Lï ™f ‘mnNupÿNupNup ÑÁQÈÿøAèÿòCéÿòNuHPN¹!·N40@NCTˆ2SA0ÁÂüÑÁ"_aÊ0B?aÿj0_`Ž /H@0|NC"HTH2SA°h g AèQÉÿôpNu ‰H@0<H@Nup“É \fCè fòRˆ f"HAø\DNuHQCø\Nr \gÀQÉÿôBAø\N"_NuHç`ÀHPadª?aèp0"_H@“È0 LßNup/ Üe âc óg øgpNu o"oHxHPHQa HOï Nu o"opÙWÈÿüNu o"opÙWÈÿüBNu0oNC"o g p0/H@“È0 Nu /J€gH@0@H@NC"H2)ÂüXA²@cÐÀNu‘ÈNu oCúúEa vJ@WÀH€Nu?6/?<B§a,\Çh ax fô6Nu//a”.€ga”0h a'¦/ °fB— Nu"oJ!füR‰HQa4J@gZ"W0|aý\p"fJHxa ö>€g:0@NC ¼ 0|aýb g"opÙQÈÿü ü€0×0|aý˜`a pBW0TXNu o0h NC0(Nu"oJ!füR‰0|aüæp"g Iaÿ D@T@Nu4/f4"oJ!füR‰0| g aü² g\ h pÀoga p`Ha ’`BCú ŒpÀogCú X0|a P0|NCTˆ4SBmHç À0h N‘LßAèQÊÿì0|N‘pNu"oJ!füR‰0|aü> g"_ gpgÁQÈÿøBNuOïÿœ"OBØfüB§HiÿÿaOïlNuBg`?<//a \ fûTNu oaû ofAúöQHQ"H0|aùÌ"_ g0h aù¾Nu"oJ!füR‰ oJ füRˆaÎ fûNu oJ füRˆ"H0|aùŠ`úìpÀo1À\b @f&"o gJ!füR‰ g0|aùZ g0h `0|NCTˆ2aú¨JAg!À\:NuB¸\:‘ÈNu‘È 8\:gð x\bfHaû&2( A€g:0h NCTˆ2aúj!À\:JAgNu x\bfº 8\:aùà@!À\:aúè g¢Nu@!À\:aúÖ gÎNu‘È 8\:g† x\bf^aú¼2( A€gP@mÿjaú¦0h NCTˆ2gSAÂüÑÁaùê!À\:JAgNu x\bfÿ: 8\:aù^!À\:aúj gÿ$Nu@mØ!À\:aúT gÌNu 8\:g"HA Agaù&`ú6Aúô¡Nu?/HzõªHx\Oaj6Oï B8\NAø\SNuNu08\dR@1À\d?aÒHPaúzJ@f¢žaâ W\Nu08\dg?a´BWHPaüSx\d\Nu?68\d–oaÚQËÿü6NuOïÿœ"OBØfüHiÿÿa,OïhNu"oJ!füR‰ oJ füRˆ` o/aø¤Aúóó` o/aø”HQ"H0|a÷b 0h f aùè0@J@f¡J6aüJ@f£Þ"W0Ca÷: f40Ca÷Z f¢ž"WpÙQÈÿü üBX0Ca÷’0C"Wa÷ aøl.€` aød.€2( Ag£Ô?( Bh aBT &Nu /aøÞ` Bg//aüÞ\ g0( @˜f?( a÷vJWgaTpNupNu o0( @g,0( @f"?( 1h Bhhûï h aÆTpNuBg//aün\r fpNur0( @gð1h Bh h hýÿ `÷Œ o /OïÿêgBWHo/aû°P IHPa¢.€g\0hNCp0T@/a RX4a÷ìJBf1h Bhhûï h B—`1B 0hNCp0R@"H0BNCÙQÈÿü OïNuJgôa÷.€`ì?<B§aü \0( @gaþæaüL fêNupNuBg//aû|\ g:0( @f0?( // aýÔXa÷N g1_ Bg//aûH\aõòpNuTpNu oaúDJ@g"a€ o"o @lCé“ÀBØfüpNupNuNVÿÜHx /. HnÿâaX|#ÿëHnÿëBg?<@Hnÿì/.N¹"ÆX.ˆaN^Nu0/ @@g0 @@g @@g¡//aýXNu//aýaöŽX1o Nu o /8]®/8]¶!È]¶ ÚbaD–`p0/‘ÀRˆ!È]®aEâ!ß]¶!ß]®?//aüÄaö@X1_ NuHç>$o,8/0BgB§a|d\6g>|4† DfAúñ±a6B§Bgaúx\HPHx\DaõšX _J@f Dg4†aaú¬ fÜ0Lß|øNu?HP?<ÿÿ?a|2Oï RFJ@gNu>ƒa XBC`Ò o"o / g³ÈbÑÀÓÀ!S€fú oNu o"o / gìt"ÂBg" ÂBg(ÙS€g(`" ÂBf"è‰gSA Ù Ù Ù ÙQÉÿö@gÙS€fú oNu o4/ / g<"AgÂS€g.áI4HB4"è‰gSA    ÂQÉÿö@gS@ÂQÈÿü oNu o4/ / g S@´WÈÿüSˆg‘ÈNu o"o / gS€± VÈÿü !H€Nu oa o4/R€`¾ o JfüˆD€S€Nu o"o JfüSˆÙfü @Nu o"o Ùfü @Nu o"oB@BA` ²g ANufòH€Nu o"o`( @c Zb @c Zb ²gpNufÒH€Nu o"o"/ B@Smg°VÉÿøS‰ H€Nu o"o"/ Ùg Sfø oNuBSfú`ò o"o"/ JfüSˆSmÙWÉÿüB oNu"o$/g Bg²gføR‰`ê ¯Nu otg"og$²gföRˆ`ä BNu"/ A/ Jfü° g²ˆfø‘ÈNu"o$/g Bg²føR‰`î ¯Nu o"ot0(1(g R‚²gðJfê‘ÈNu0/Aù"’ @bJfüQÈÿúNu /g!À^J¸^g."x^g ogô°g `ö x^B¸^Nu x^B)ÿÿ!É^Nu‘ÈNuAù‚ö ü} BXpÿAøc¶!È]X À0<ÎB˜QÈÿüNu /a J@f¢žNu //aJ@fa6 aXNu^€rþÀAù‚ö±üdX"4f°cAðú`è’€ bÐ`Cðú"ÁBY!@ÿúHPa. _J@fB`` 1@ÿþåHCøc¶#ˆäH"(ÿúâ‰WBXSfúNupNuAøc¶0<ÏJ˜gQÈÿú`ê@ÏD@Nu o0 ` o0gÒBP`0/gÈåHAøc¶"p" gºB°³ü bN2!BQ$!åI°Af.Aù‚öt±Éb g$ÑÐ`òJ‚g BJhf Ñ"H Añ±üd Jhf Ñ‘Nu0o0gNC`€Nu0oNC0 @€±ü cpNu0o0gNC`ÿNu0o0g NCh€ÿþNu‘ÈNu /göT€aþ†‘È?gaÖ0×TNu0oNC±ü mp0T€Nu (ÿú]€NuAùNup0/åH x]X pNuAù‚öp±üd"o6JXfÐAðú`æNu oCøcºp4<ÎR@±ÙWÊÿúfNuB@Nua"<ÿð°cÃ@Nua*Aù‚öp±üd"oâJXf°b Aðú`â]€NuAù‚ö`ÑÁ±üdZ"o¶Jhfê"Cð³üd@0)f "o–Ó`âg I`Ä$ âˆ0ÙS€fú Bh"B\‚0)åHCøc¶#‚`²NuAøc¶p4<ÏJ˜fR€QÊÿøNu ¯ÿðcB@Nu$/0/f `ý /6^‚rþÄ0@NCB@±ü bª]ˆ Cð°‚ltJif$"Ò€’‚m lÔrCð( ‚Jgt"ÁBY`nB@Jhmj aüÂJ@g`0CNCCèÿú0@NCUˆ"Yâ‰0ÙSfú?0aýT0Aøc¶åHåK!°0B°`$Jif"Ò€’‚Cð("ÁBY ‚` ‚" €lè0/&Nu//a XJ@f¢žNuaþ† /^€rþÀAù‚ö“ɱüd"4f°b"HAðú`æ$ gü” I")ÿú’€ bÐ`AñBa#!@ÿúHPaür _J@fB``üb@€1@ÿþåHCøc¶#ˆäH"(ÿúâ‰WBXSfúNu0oNC0 @€gpNu/ aÿ^XJ@gð0@NC"â‰0ÙSfú?0/aü@Aøc¶02/åHåI!°B°0/NuCøc¶Aù‚ö±üd.4(g åJ$1 ]‚±ÂfP$ ‚cF ‚èb>f8ÑÂ`ʱüf,pÿ"²€f$4<Î"g ‚õc ?ÿÿb AfQÊÿäNuAúå Nù"Eúa`€aB3ü €`B9pü\"Bx]AúÔ!Ð\>aæ1ü€]\Nù!¥ô8\"ï\"Nu8\"Nu!üL[À1ü] 1üï\1ü\ B8] Nu!ï[À1ï \ 0/1À\æHR@1À] €¸[À@À] Nu o!Ø[ÀØ\Ø\!Ø\"Rˆ1Ø]1Ø]1Ø]Ø\'Ø\)Ø\+Ø\-08\`² o ø[Àø\ø\!ø\"B0ø]0ø]0ø]ø\'ø\)ø\+ø\-Nu08]1ï]Nu oHRCø\&Eø\.B@ré2ÀQÉÿö$_NuAø\20ï0ï0ï0ï QˆNu oBB‘“YˆNuB¸\2B¸\6 oØ\3Ø\5Ø\7Ø\9Aø\2Nu o"oaLJ@g> o"o°d)ÿÿáH°d)ÿÿሰc)ÿÿሰc)ÿÿ o €pNu o"op²)b²)b²e ²)epNuŸ\^ŸcŸcŸHç oaÿ"o B@BABBBD˜AlDD6/aRAQÌÿúAø\.aþÒLßNuHçø@²x\(m²x\,nº´@nÁB88\&´Dmª°Dl088\*°Dnš´Do4"x[ÀÂø] ÓÁJ8] fˆx¹BÈBèJrÂèH”f Ð@ÒÀpÿØAéhâhSmg ±Q`XF@ÁQ`RQ`NÐ@ÒÀpÿâhSmg.±YpÿUmFYQÊÿüéh±Q`,F@ÁYpUm2ÀQÊÿüpÿéhF@ÁQ`YpÿUm2ÀQÊÿüéhQLßNu”@8æLÒÄF@Jg. gÑSBkÜQÈÿøR‰QBm,PÙ`øQSBkÈQÈÿøR‰QBmF`ø‘SBk´QÈÿøR‰QBmB`øpPB`´Hçü€°x\&m\°x\*nV´AnÁB88\(´DmH²Dl288\,²Dn:´Do4”A8a8:8] BÂSCmn …ÐÅQÌÿú`µÐÅQÌÿú` FÅÐÅQÌÿúLß?NuHç 6/ :/"<8] Y$OHR//$//$aý~J@g” x[ÀB@æHBB*BD*˜BÄÆÔ@ÐÂBA*æI’@mhJCl2DC˜CcT™*0ÀÆÐÀ0ÀÆCð0HçÀÙS@lúL߯’ÆSDfè`(˜Cc$Ù*0ÀÆCð0HçÀÙS@lúLßÐÆÒÆSDfè?HRHRaýpOêLßxNuHç>(o,&o08/4:/6Q$OHRHTHSaüºJ@g’%TJDl ™*™*`™*dB*™*dB*HjHjHSaü€J@gNÙ*Ù*HjHRHjaüfaJa >g.?HRHRaüÜ0GNC?<HzüÀHPa(D??N¹!ø6?aöP` ?HRHRaü®OêLß|øNuAêB@BABBBCNu1ï]1ï]Nu?8]?8]?8]?/ 1×]?/ 1×]aOï NuHç 0/2/4/ 6/" x[À4x] ´@lÅ@ÃC8 ÈÁ<æNØFÐÄ<FFF:š@8 >žAdDDDG4/$g|SBfî¾Ed:46–EÖCÞGšGDEj ÐÚGjSFl|RHQÊÿð`H ÐÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj ÐÞEjÐÄQËÿö` ÐSFl|RHÞBkêÐÄQËÿîLßøNu¾Ed:46–EÖCÞGšGDEj ÚGjSFl|RHQÊÿð`H ÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj ÞEjÐÄQËÿö` SFl|RHÞBkêÐÄQËÿîLßøNu¾Ed:46–EÖCÞGšGDEj PÚGjSFl|RHQÊÿð`H PÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj PÞEjÐÄQËÿö` PSFl|RHÞBkêÐÄQËÿîLßøNuBx]lBx]Bx]Bx\$1ü€]\a ü]`ät x[À08\ R@Àø] `ð0/2/°x\&m°x\*l²x\(m²x\,la(48]`Nu0/2/a4/g SBgPNuÐNuNu x[À4Äø] r³@Â@æHÔ@ÐÂNu0/2/aÞVÀH€Nu0/2/4/ o Hç>8\"Sg.mv| xÿBIù"yìÄÆØÂ`(Iù"sìÄüØÂ|xÿæ¬áœ`v|xÀIù"kìçJØÂBGÐCÒF°Go²GoºC’F°Gn®²Gn¦YˆBG(²Gl’GÜA˜Á24ÔF(”GoœBRFzÿ4ÔC>PGGø4GBG°Gl > žzïmSEBG(´Go> ž(?zïmSEFEÊ_ÐC>èHÐ@Âø] ÐA"x[ÀÒÀtG”GÔClBTI>/6`<‚¬TÖäfŠ@®"sì"kì"yìPedr0/2/ o4/ Hç>><ð BbžJ8] gZBÔB4; °Kû ¬zÿGù"yìxÿBB@g" gQGmÀü Ió| N•QBlàBTI`ØSˆLß|ørpNuGù"kì(<ÿÿÿB@gâ gÜ]GmØçHIó|N•]BlâBTI`ÚGù"sìB@g¶ g°ÀüIóžCm¢xÿæ¬áœ|N•”lØBTI`Ð$I BoUJpå¨F€Á’ÔÎQÎÿòNupåhF@ÁRÔÎQÎÿòNu$I BoUJp娒ÔÎQÎÿôNupåhRÔÎQÎÿôNu$I BoUJp娱’ÔÎQÎÿôNupåh±RÔÎQÎÿôNu"å¹$I BoUJpå¨Ã’’ÔÎQÎÿòNupåhÃRRÔÎQÎÿòNu"å¹F$I BoUJpå¨F€ƒ’Á’ÔÎQÎÿðNupåhF@ƒRÁRÔÎQÎÿðNu$I BoSŠQBpåhÀEF@Á*àHÁÔÎQÎÿêNu$I BoSŠQBpåhÀE*àHÔÎQÎÿìNu$I BoSŠQBpåhÀE±*àH±ÔÎQÎÿìNu"å¹$I BoSŠQBà™FE‚EFEpåhÀEàYÃàYÃàH"ÔÎQÎÿæNu"å¹F$I BoSŠQBà™ÂEpåhÀEF@àYƒàYƒÁàHÁ"ÔÎQÎÿäNup8\"ÐÐSlCù"sìBA/Âü1Nu o2/Cù"sìtpSmgt`ÐBJfúNuÄüÐ1 BBfòNuHç`À8\"aÊLßNu oHç",O$Haó@BgHzôêHzôæaôîAúôâaóðvp4<ïr]aõ g"BWaó8>¼HR?<^BgaüT>„aòèPø]Aø\.aó´.NLßDNuB@J8]g6Oïÿì OaóZB8]‘Èa€Aø\Da.8\#?aÂBWaöT OaòüOïpNuJ8]gXNu oaðCø\Nrg `c zbàÀQÉÿè`ü QÉÿúü BBgaòN>€?<Hx\N?<^Bgaû Oï aò2TNua˜Bgaò&>€0/ @l(AúÜGS@m AúÜ0gAúÜ/?<HP?<^?<‹aû\Oï añîTNuaÿTBgañà>€0/g ?<Sf>¼HzÛô?<^?<‹aû"Oï añ´TNuaÿBgañ¦>€0/ @ b(Ð@rÿRAâHfúÒA2;"?<H{?<^?<(aúÜOï añnTNuÛ™Û¥Û´Û­Û¼ÛÈÛÂNuAúÚŒ`þ oB@BABB”@RBB@AR@ o0À0ÂNu opBABB”@æJRBB@AR@ÀÂX@NuHç>Y$OÀÁÂÃ$O OaÊ/aëš8g0DNCHPHRN¹!õOê00@NCLß|øNu oañš o4/ Hç028:¸@lÁD˜@ºAlÃEšAvÆBaO˜g S@SATDTEaO†Lß8Aø\.`ñPHç0BE6/8/$oOïÿô&OAëø\'ø\)ø\+ø\-SEm€Aø\NüF0/ 0ÀB?/ Hx\N?/?/aù6Oï aïÈTONuHç> o8að?/€Cï.Eï2Gï6Múa að`TAø\.aðfLß|øNu4268]`ñŠ4+´jlÇJ4*´ilÅI4+´jlÇJ:šQHÅá…2+’igø‹ÁHÅá…<œRHÆá†2+’jgtÁHÆá†>žQHÇá‡4*”ig˜ÂHÇá‡SASB:A6)0H@B@"HçðH@HAN–LßЇ҅RCQÊÿêHçÐH@HAN–Lß 4 І҅RCHçðH@HAN–LßQÊÿêNu>žQHÇá‡4*”iÂHÇá‡6)0H@B@"HçðH@HAN–LßЇ҅RCQÊÿêNu6)4SB0H@B@2HABAHçðH@HAN–LßÐ…Ò†RCQÊÿêNu6)042°BoÅ@´AoÃB°BoÅ@NÖHç> o4aîü?/8aîä>€Múþ"o.Eé&o2aþŒ"o2Eé&o.X‹aþzaî¸TAø\.aî¾Lß|øNuN@Nur 8]ecrÁ\â Á\HçÀ8\8\À°g:R`HçÀ8\`HçÀ8\8\ÀgSÀ\€ 8]efïÀ`LßNuNDNu o"8[´!È[´HÐüøAè, ø[¼ ø]¶ × ÁB@Nu x[´!è8[´Nu0/fpaà"8[´f aNäNù"EÎ ALØüøX!Ø[¼!Ø]¶"X!Ð[´NÑp4/SB BdÄüAø[ÈBp B° B° pNu0/S@Aø[ÈÀü 0Nu0/aêJ€WÀH€Nupÿ4/SB BdÄüAø[È 0 !°  Nu"o `“Ép4/SB Bd*ÄüAø[ÈJ0 f /!€ !€ !‰ p" gp€ NuB8]¬`Pø]¬Pù`B8]­NuB@8]­Nu1ï]Nu1ï]Nu08]&€8]­NuHçpÀB@NA&8^?<aÿRaÿ@J@f>aþ*aɼJ@f6¶¸]f@J8]­f0Jx]&gÚp08](Bx]& @ g@!Ã^@÷ÿTLßNuNE`²aËP`¬aÿl0< `Ü 8]&é˜8]gpãh?aùôT`†8cvg¸ x\h“Ép rÿN¹"IŠ`ÿl/B@NA&8^aÉ,J@fH¶¸]fRJ8]­fBJx]&gæp08](Bx]& @ g !Ã^@÷ÿ&Nu8cvgì x\h“Ép rÿN¹"IŠ`°aÊ®`ªaþÊ0< `Ê 8]&é˜8]gpãh?NºùRT`„Bx]Bx]&Bx]Nu1ï](Pø]&Nu0oNCp0AðNuB§HzÔƒHzÔuaKÌOï Nu oB˜0üBXNuAø^ `Aø^NVHn /.HPHy!©†a>ÄN^Nu0|CúÒ a& g0h "Ja g0h NCp0 0-ÿg‘ÈNuNúÕ\RˆNu 0f( (xf Tˆprg0  c'éˆÐ`æNuprgö0$çˆÐ‚ЂÐ`êB@8] B8] J8_ gaNuaêPø] Nuaâ0/À] NuHçà€F8_ 08]28] @˜b4 A\b. x[ÀZAÂü4æJÒBÐÁ@2<üài0àHt±³AèÿàQÊÿöLßNuJ8] fªNuNqHx¼aÄ”X @g Aù!K Nù"Eú?<aÂT gæ!È]®!È]¶¼éÐü»!È]²Nu x]¶p0/ÑÀ±ø]²bBNu0<å` 0<Ù`0/ x]¶Rˆ±ø]²b$€!È]¶Nu x]¶Tˆ±ø]²boÿÿ¯!È]¶Nu¢žJ8]­g ´ o"o ˆ"x]¶$ Ô€´¸]²bÜR‰RˆS€ØQÈÿüS‰!É]¶NuB@/°/e/Nu"oaR¸]¶ x]¶¯ NuHQarHPaœPNu"oaî"oaèR¸]¶ x]¶¯ Nu o"o ˆ"8]¶‘¸]¶’‰/HiHha¼VP Nu oHPaHPaÊPNu oBg ågRWa `ô0Nu og Sˆ -bƒaû¬.ƒHR"x]¶Hia¸ì>‚a¼ê׸]¶>¼-BgaûÀLîÿôN^NuHR$oBgaû’B@g>€aû†`ô>¼-Bgaû’X$_NuNuNu68kL#/Òêz~¾x†p¦,V˜¾ì@à0šÀâèð 8/ú¦¶¤œ§ €¢qqRrrPrVrrr¦Xs‚®s4È`¾J`½ˆ`Ö6`»h`¼Ø`½`¼`¼~`¼¢`¼†`¼ª`À`Vä`z`" `Éð`ÀN`ÕÚ`Ǩ`±–`j`¸æ^ ^^ \f\h[¸NÐpedrom!¤î!¤îNu1ü^ 1ü^1ü^ Nu/ /$H2VÀHƒ0@f:g?(N¹!b’0T@?Bg?*N¹!c´Pg?*N¹!a”BjTBR0&$_Nu/dev/nullwa+NVÿìHç<((I&JKé bg Jg )bf|`BFJSg KNºÿ`BkJFgp`p'@BkJ„fz`†Hzÿš/N¹!^ÜPJ@f( ag rg wf``6<`26<`*Hnÿì/N¹"Æ*Bg/N¹!WL$HOï°üg&0( @‚gHzÿ&I06C@@@2€z`/ H€?Nºþ„\J@m0 D°LeæR…( <¾Ec$D`êCÿ¿ÇS0LßøNuHç0$o2f„f A4`t0*l Bj@ÿ`hgN¹!z 6?N¹!Æ0T`LGúýÆ JN“J@f:?*N¹!b’ *0BCR€%@T  f*f JN“J@f Rª`pÿ`0Lß NuHç8(8@>&I06C@@@2€z`/ Nºÿ>XJ@mÀ0 D°LeêR…( <¾Ec$D`êCÿ¿ÇS0LßøNuHç0&8&I$Hpÿ`0ü `< @fg¶ŠdSŠ` @ f+gØÀ gSDJDo / NºþÆXJ@nÄBJ@l ¶ŠVÀH€HÀÆ€ CLß Nu2fA0`JhlpÿNu2A€1ANu/ $H0g gN¹!{6BjB@$_NuPÿïNu0@Nu(gp`p!@PÿïBhNuNVHn/. /.HzüzN¹!ºfOïN^Nutemp%04x/ $H°üfB8^pEø^q08^z2RA1Á^z?HzÿÔ/ N¹!ÃVBgHj N¹!WLOï°üfÐ J$_NuNVÿìHnÿì/N¹"Æ/N¹!ZfOï S@N^NuNVÿØHç &Hnÿì/ Eù"ÆN’(HnÿØ/N’//N¹![ÈOïS@LîÿÌN^Nu]d d RXQTYV Ð@"kìcr] ]X 0!¸!¸$!·N!·¤!·Ì!·ô!¶ä!¶¶!¶!º !µî!µ0L"sì"yì !µ$!¸¶!º !º&!º(B¸]ÔB¸]ØB¸a>Nu _a°Bx]Üa ~aÌŒaË.08]Üga2aÄ€ga±˜ , €ÿÿ°¬g @a<>€ga±zIì` REp&ÜQÈÿüQÎÿ¶>®a±öT<…aLLßÿ0.ü¢NuHçÿøm€ÿüaö g Rh*h `” -- €68kg ÒEî.»î g MaÂaz$HB® Jg a g //<RVaØ#_"Ÿ#MB© B©3|B)JgB©#M »ü c&-fvÖmÿþ/a³”>€a±–"HÝSCfúX*Haœ#M ™Ì0-gEõ/a³h?a±j(HBWHPa¬ÐOï an#LGí:gH0Àü $K×À* aš f ÁMaþæÁM"HÒé24v6¶Ampaý‚ a|QÊÿìEê SEfÂ:g$yÈ:v6¶ªÿüm aVQÍÿð:g,-g Eúü:v6$åJf B¼c a&QÍÿæa 0-gGõa M~a$a´PéLßÿNup0gø°mÿþbf`î Hçÿü*HGí:g:0Àü $K×ÀaŽ h "HÒé24v6Öƒ618(؃a”QÊÿìEê SEfÐ:g$yÈ:v6å‹(28anQÍÿò:g:EúûL:v6$åJ(2 -fJBfX„g Ômx85(JCm$a0QÍÿÎ( a(0-gGõa„((aLß?ÿNuap0gÖÙu`öa p0g Ùµ`öJgD„NuMøa:JVgö|Møa:¼Vg.aš i 3|p0(g (ÿ g Pè ?N°<RF`Ê|aj*i 3|`üPAúòŒ»ü!¤îgaNp°Vg»èg»è g AèR@`è‘ÈNu?.ga®TBnNu0gêÀü/?.a°\J@f¢ž=@?.a®äT0ÀüCðNu?HRHzòaŸ _J@gaÖ6gHPaŸ _J@g AèSCfì‘ÈX6NuHçÿ|*O~a g~ h ¶(cz`p0.ü¤a ga† fdOïÿöHWa¡H _ar fRAúòah fHað&H>€g6ažJfa­B`(a®:TˆPî(g" g·ü ca­Aë`0aú~‘ÈB.-H CîpÚQÈÿü.MLß>ÿNuOïÿìHWHPab?<HPa¢ü>¨ HPHRažPJ@faJga­ÀTˆ` a£. fØ‘ÈOï"NuHç`À~?/a­žB@J_g"r2 0óÿf"(à‰ 68kf~¶(SÀLßNuHç(OBg?`.Hç(O?<B§a¢t?( ga­J ¨68cAgTa¢° fâ0g„a¬ÖKèvÿBD-Gí !fV‹HSHRaZPJ@gJfüRCQÌÿâa¬’T`¾0mê +!ÿýga@8—Ë`*x#áLˆ#Ø&DvÖS/a®Ò>€ga¬Â"KÙSCfú8Ta¬L0 K.LLß8NuBACíAéJfüQÉÿú"AÐÁ?HQa J—PfB@NuHçÿþMøa:~Hx a¬$.ˆgv&H&îüž&ï@-Küž$oD/Jaý¦&ˆgD*HaøÄJ@f:& M0/HaP g"/HDAú/HHXLßÿXNuQHçÿÿMøa:Y&nüž*Saù&nüž/c@-cüž.‹aªÚ~X/G@LßÿNu/"(à‰ 68kf"Ðè°XlHÀÐ@00Ð @"Nu‘È`øHçÿþMøa:~Hxa«^.ÈgJCï< îüž Ù-Hüž Y0a¨ gEúU‰"Š#LßÿTNu]HçÿÿMøa: nüž/`<-`üžHPaªB~X/G@LßÿNuHçpp&Gù ¶‹bƒÿÿ"zöª"QX‰4<Îp$Y" g¶Šm"*ÿúg®l]µËmr2TÕÁ¶ŠmR@QÊÿØB@LßNuHçð`6?<B§a \¶h g a J fò‘ÈLßNuHçÿ~Møa:$Haü g*Ha÷6 MJ@g‘ÈLß~ÿNuHçÿþ*Ha÷žLßÿNuNL4@À@àHû `FÂNuHç>Møa:B§Bg?gÄa©Ü>a©þKèv6 0ó8f ¨68kPg ¨68cAg`Êx€`Š0aÿ0aþÖ?.ü¤=@ü¤aö–J@g=_ü¤`Ú/.üšOïÿØHUBg-OüšHx\h?8\fp0- gNFNµMøa:.nüš(aCp6*_g &O [NSCføOï(-_üš-fa´taö°=_ü¤`AíJfüCîpØQÈÿüB.TpaüÜ>€gÿRa©v-H 0aþþ(a¨h`ȱü dJGfÿ,0aþ`$g2aþ/B>€a™Ê/@B—a¡².€gÿ/@a™Î>¨ è `*»ü m"Vƒ.ƒa§T>€gþÚ?@a¨ú0íÿþWCÝQËÿüa¨”p0HpÿHPa[F _XNFNNqNq(a¨d.¯ga™j g ¨ ( g.ˆa °` >¯ga§žPOaÁ:a¿Ü Lß|øNuNu"x]Ôp4 B l åJ#ˆ RQB@NuNusystem0123456789abcdef@0123456789ABCDEF0X0x0b0-+ Oïÿ¸Hç>&o|(o€/ot>Î`´ %fBB`//xH€? oDNRN\`”&H K  gB #g6 +g -g 0g0 ^gÖ zgÐ |f$`ÈB `ÂBÿïB`¸B`²B`¬B`¦Bo4 *f ?\4Aë`$0/4Áü ÐA@ÿÐ?@4H0@ÿÐ @ cÜ0/4l D@?@4 BBo2 .g&H`r&H *f ?\2Gè`L -f6Gè 1f?|2Gè`,?|ÿÿ2`$0/2Áü ÐA@ÿÐ?@2H0@ÿÐ @ cÜJo2mB`Bo2 lg Lf<F@` hg Hf <F€`<F€B¯L/|!º06Jgœmx Emp Go Rg Xgd Yg bgt cg< dg˜m4 em, goØ ig| ogH pgè rg¸ sg" ug@ xg yfæ`–S‹`Ž$\/ N¹!^ X(g 0o2±Àl(60/4D?@4f2gz0`z J@o"ÜÀ`//xH€? oDN\0/4S@?@4lâÜÃv`//x28H? oDNRƒ\¸ƒnæg0/4oüÜÀ`//x?< oDN\0/4S@?@4lä`Ø/\L/|!º1: <!ºBf <!º0/@6?|2F`~/|!ºD: <!ºU`/|!º1: <!ºX` <!º[` <!º^f <!º0/@6g/\L`Np0/@L`Dg `0HÀ"lD/AL"<!º`J€m"<!ºbf"<!ºdf"<!º0/A6gÞFÿï`ÖFf?|2 "4/@B/AF?BJ <!ºbf <!ºdf <!º0/@6`Ž00/4S@?@4f2gx0`x J@o"ÜÀ`//xH? oDN\0/4S@?@4lâRN//xHƒ? oDN\gX0/4oPÜÀ`//x?< oDN\0/4S@?@4lä`,?F0(/L2/2?o4*KïB/o6, o:0@g?|(`?A( XgB bg0 dg" ig og$ pg$ ug xf¨`EïP`ŽCïP`VCïP`$CïP` pÀ„ðèŒJ„fò`>0ÀæŒJ„fîAïP: šHg:SA?A2`00ÀâŒJ„fîAïP: `.Hx /N¹"L˜P0ÀHx /N¹"L¦P(J„fØAïP: šH`â4U2 AÿAÀ A?ÿf$|fP|eQ|dR|nS|uTz`¨ Aàf |0Pz`– A f|¾P4 l|-Q`|+Qz`r0R@ @b  ff˜$-BDBE`Jf pÀ‚fB`0€PPRE~èŠRD DoÖ(-BB` JfpÀ„g0€PPRE~èŒRBpA°BnØJg¼.PPRE`0€PPREèŒRB Boæ6 lÌ`ÀJAmB`DAtCïPv HÁƒÃ H@0ÀJAfìAïP0 HJg¼-PR@¼•P2RA$-BD`Jf pÀ‚fB`0€PRAzèŠRD DoÖ(-tJfpÀ„g0€PRAzèŒSBfÞJg¼.PRA0€P:RE0 l¼¯PPREJ„f JEf|0Pz>/(žE0F@râ`Î@6ÖE//,N¹!^ XÖ@8/*˜C0@f6g4|0`4| JDo"BC`//x4 H‚? oDNRC\¸Cfè6xÿ`BC$o,`//xH€? oDN\fì0/.–@ÖJSCf4g:|0`:| JDo ÖD•Ê`//x2 H? oDNRJ\¸JfèxÿJGoÖG•Ê`//x?<0 oDNRJ\¾Jfê>ÞE`//x7PTH‚? oDN\SE0R@J@nâg JDoÞDBC`//x?< oDNRC\¸CfêÜÇf÷J0Lß|øOïHNu0/"o QÀ"ˆNuNVÿü N!.NqNqNqHn/. /HzÿÔNºöð nÿüBOïN^NuHç8/?N¹!rŒ<68]:8]T D f09"ºHÇÀRCÇÀ1Ã]p `Ê D fx ` D g2Ò@B@9!gðR@°Al†8\"HƒÖC\CÚC2ÒCB@9!gñ°AlBg?Hy!gîHy!gîN¹!iÖšCOï 08]\R@1À]\ @ o0?<N¹!tT&8\hN¹!z CN¹"InJ@gêBgN¹!tBx]\T D fB@`BC?<???N¹!o20ÐFP1À]1Å]0LßxNuHçü4ÔDSBR@a£¢ÒEa£œS@RB’E4ÔERASBa¤¶ÐDa¤°Lß?NuHçøÔ@ÇDa£rRAQÌÿøLßNuHçÿþxaà8:va¤R@RAUDUEa>T@TAYDYEa4$g*4vxa¸T@TA8\"B8\"?<HP??aªtOï Ç\"LßÿNuHçü4ÔDa£ÒEa¢ü’E4ÔEa¤ÐDa¤Lß?NuHçÿþxaÿ`8:vaÆ$g,4vxaÿJT@TA8\"B8\"?<HP??aªOï Ç\"LßÿNuHçÿþxaÿ8:vR@RAUDUEaÿv$g2T@TASD8\"B8\"4a­âHâLÔD”@?<HP??a©¬Oï Ç\"LßÿNuHç÷þÔ@æHæJ”@HçðRBRCÄÃP‚/ašÈX8LßJDg,0DNC0À0Á0Â0Ã"x[ÀÂø] Ò@ÒÁ&IOïÿÄ$O?<U?<›?<?<"OHP?<xHQHRaÎ.JJ@g4HSHRa èa€>¼ a­LPa²x @ g @g`î8HRa*X` Ka«FBDOï<0Lß|øNu?/aHPHzƒy8cvf aÿ`Oï Nua«`ô0/ @ l"Aú„ÃS@gJfü`öHxa2HPHx]àaûL _PNuAúƒ7 @(fAúƒ; @ŒfAúƒ; @´fAúƒH @¾fAú„. @fAúƒj @JfAúƒ0 @šfAú„0 @lfAú„ @ŠfAúƒi @žfAúƒ @ fAú„ @ŽfAúƒ @¢fAú‚ÿ @¬fAúƒ @ÀfAúƒ² @ÊfAúƒö @ÞfAúƒ @‹fAúƒ! @ŒfAúƒ& @fAúƒ' @ŽfAúƒ7 @fAúƒ @fAúƒ0 @‘fAúƒ2 @çfAú‡SNu o(o Nu o1oNu o/ @À\"Nu o"o2¨ "o 2¨Nu oB@((R@Nu oBh Bh0gRh RhNu o1o1o 1o 1o Nu o0/Ñh0/ Ñh Nu o1o1o Nu oB@((R@Nu1Ù]1Ù]1Ù]1Ù]p(H@(Ѹ]Ѹ]NuBB(ÐB(ÒBNu o!È[¬è\"è]0(2( aÒ1À]1Á]HPAèaœÆ _!è0[ÀB@(BA(Nua›æ x[¬(Nua¨ÐoÒo a£"aàga–ÐoÒo a£Nua†ÐoÒo CèBB°Bm²Bm°Bn²Bna£D`›ˆp`øaÿR?(HhHha,a„ga$Oï `þ†aÿ.?/ Hh"oaþèAø]"Hr0lB@ @ðm0<ðÀQÉÿìHx]aœâaÿ:gaœØOï Nuaþä?/Hh0/2/aþÀ??0/2/aþ°??0/2/aþ ??a«aþêgaªøOïNuaþ”Oïÿð?/ Hh"o"02aþl?@?A02aþ\?@?A"o02aþH?@?A02aþ8?@ ?A HoHo a¬"aþvga¬OïNuaþ ?8]Hh?/?/2/0/ aýô??aEÐaþ>gaEÆOïNuaýè?/ Hh"oaý¢Hx]a©$aþga©Oï Nuaý¼"o02aý 1À]1Á]02aý1À]1Á]?8]HhHx]aCúaýÊgaCðOï Nuaýt1ø]]1ø]]0/2/ 1@1A aýD1À]1Á]?8]HhHx]aC®aý~gaC¤Oï Nuaý(1ø]]1ø]]0/2/ Ðx]Òx]1À]1Á]?8]HhHx]aCfaý6gaC\Oï Nuaüà?8]?/HhHy!gîaœŒaý gaœ‚Oï Nuaü¶?8]?/HhHy!gîa&aüâgaOï NuaüŒYHW//HhaùP ga§dP`˜šaühY//Ho//HhaøÖP ga'FP`˜paü>?/Hh//?/?/a*Haühga*>OïNupNu oP€€a˜4 oBgHz™ÖHha™ÞOï oHç<"h0B@(BB(Äø] :x] æHÔ@$x[ÀÔÂÒÂBAB@BB(’((æH(æJB4&I(J‡QÊÿúÒÍÔÍQÉÿìLß<NuNu oPÿNu oa—¦HçB@BABDBE((((˜@šAvaöpLß8 oPÿNua—n o"x]P$<]P±ÉgCé$$ "Q fð`H"B"¨$/(0a’~X o0@g?8("a÷<8` x]P g0@€gHPaþÐ _ h$`æNuAú˜¬a— o"o0¯ P€ Pÿ||1x]ÆaùüBA0@gr1AHç>*I$H0246Bj"8Dg”@–AaöV6!4!5D"fRÿï@ABC%j8Df(z8DgzÛ*Û*›*›*8DgP*%jHxa’LX%H0f0*"ga‘‚p`L!È[ÀaX0246”@–A‘È8:Ef:Eg o6CúôŽDfCúõN‘%x]P$!Ê]Pa•ÜpLß|øNuaù¢0/ BA(ÐA(A4/ Bb$ÔB4; "Aû "Ht-/v aô4aù°g Iaô(&Nu'1<CNoneEnter=OKEnter=SAVEEnter=YESEsc=CANCELESC=NOEnter=GOTOaù /0/ 2/Ð(Ò( o4/6/aôxaù,gaôn&NuaøØ/0/ 2/Ð(Ò( ota(øaøþga(î&Nuaøª"o`aø 1o 1o "o gHQ?HPa: _TO"_`ìNuaøv1o 1o 4/ 0/?6?HPSCma QËÿü\6NuaøFÐh ÒhHç 68$HBE/?a  T>4B@g  E gD E g> Ef(?*HjHja•âaø:ga•ØOï Ja÷<`ž2ÒGB@*R@°AlHBC*ÖC\CØC2ÒCB@*°Al(?*?HjHja—fa÷æga—\Oï !ê0[À˜CBC* E g( E g"?8]Hj???a›Za÷¬ga›POï ÖGB@*–@5C *˜@5DL߸Nu o"x]P gü\±Ég"i$`ða“PHçÿþ8("gaój`BgHhHha”îOï Lßÿ"o0)Q(’(²f¤0)i(’(²fŽ!h!è0[À0)BA(Ag$Ñ(Ñ(Ñ(Ñ(Bg?Hz”~Hha–VOï o"o0BA(Ag&Ñ(Ñ(Ñ(Ñ(D@Bg?Hz”DHha–àOï o!h!h`’pHPaúúX`ûbHç>B@BABBBC o0”@–AAù!PaaðÖLß|øNuBD+˜+BC+–+0Àü*Aò0°El:PÂ2(²Fl<PÂÐhC°Eo:PÂÒh’D²Fo<PÂJfNu?HSaú`aöTIêBC+–+BD+˜+>*SG0E2,’F°Cn<²Dn84,Ô@m04,ÔAm(l l ?,?,/,??HS lNOïIì*QÏÿ°aù$X>Nu o0/2/ Hç>,O$HOïÿ¨&O>*g>SGJj f4vAê48Øh¶Db6Aè*QÊÿîJªgPCTC Cžc6<ž5C Jj f8vAê48(Øh¶Db6Aè*QÊÿìJªgC TC Cbc6<b5C @ÿÿf 0< j â@ Aÿÿf 2<d’j âA6/*gCC0?J@lB@7@<Ðj @Ÿc @Ÿ‘k<0<Ÿ7@@JAlBA7A>Òj Acc Ac“k>2<c7ABAëDN¹!fÈHk*BEBFPÂ`BBH‡0*JGl>SG¾@mBGaýÌ0Àü*IòHT2,’F?0E?HS lNOï J€g&(HCJ@n¼`a£Ž&HT2,’F?0E?HS lNOï HT? l"N\(l†R@gÿvR@gÿhR@gR@gR@g$R@gR@g$`ÿX,`ÿP,`ÿH,`ÿ@,`ÿ80*AêBAS@¶hg"RAAè*QÈÿòHT? j gN(l\`ÿ>`þþx8, HSa÷œXAëDN¹!f .NLß|øNuQ O0À0ÁÐlS@0ÀÒlSA0Á?<HhÿøHSaórOïpNuQ OS@SA0À0ÁÐlT@0ÀÒlTA0Á?<‚HhÿøHSaô†OïpNuHçÀAëaPLßÐ+Ò+/Òl4Ôlv!ë0[ÀabaòzgaX04’l!ë0[Àa‘raò^ga‘h&pNu0H@ CQfpýNu CTfpüNu C fDJ,g\Jl&g22,’FÒ+?0ÐlEÐ+?0l&NCHPaüP @ÿfpùNu0, Nu CXf J,gJl&f¶ Cf0<ÿNupùNuaÿ2/ Ò+ÒlTA?0/ Ð+?0l&NCHPJl&gaü,PNu0H@B@Nu0H@ CRfpûNu CXfpúNu C f0, Nu Cf0<ÿNupùNu0H@ CQfpýNu CTfpüNu C fDJ,gZJl&g22,’FÒ+?0ÐlEÐ+?0l&NCHPaûœP @ÿfpùNu0, Nu Cf0<ÿNu CRfB@Nu CXgöpùNuHxaËîXJ@g0@NC0¼!o1o Bh Nu0/gÊ2/nÄ0@NC4(RBÄü*B/?a˘\J@g 0@NC4(0RhÀü*CðBQ2çI3A3|2Aa3A2/ f2RA3A | | #o2SAATAAPé#|!×N#|!×N#|!Ñr#|!Ø "B©&r iHQa˜N"_T@3@0/NuaV gø0)&fÿ2HxaÊæXJ@gâ?0/2/a003@&0@NC0¼Bh Bh `þþ2/0/a ‘È g iNu0@NC4(g*CèSB²i g 0)&g?HQaÞ _4 f "HCé*QÊÿÞ“ÉNu0oNCBh0/Nu?/?/0oNCHPaù¼P @ÿfpNuHxaÊ4XJ@g0@NC0¼ 1| 1|Ÿ !|!ØÂNu0/gÊ2/nÈ0@NC4(RBÄü*B/?aÉÚ\J@g 0@NC4(0RhÀü*Cð3|3|2A 3A2/ f2RA3A | | #o2SAATAA#|!ØŽ#|!×®#|!Ñr#|!ØÊ"B©&pJBg 0)ÿÖÐiÿÚP@2€ oa‚vÀü3@`øaþ” gò0)&f8HxaÉ"XJ@gÜ?0/2/aþj03@&0@NC0¼1|F 1|b 0@NC4(RBÄü*B/?aÈÌ\J@g’0@NC4(0RhÀü*CðBQ2çI3A3|`3|2Aa3A2/ f2RA3A | | #o2SAATAAPé#|!×N#|!×N#|!Ñr#|!Øþ"B©&0/Nu0/gÌ2/n¼0@NC4(RBÄü*B/?aÈ\J@g¢0@NC4(0RhÀü*CðB@JBg0)ÿÖÐiÿÚP@2€3|3|3|2A 3A2/ f2RA3A | | #o2SAATAA#|!ØŽ#|!×®#|!Ñ:#|!ØÊ"B©&`B@`0/Nu0/NC` oHç>$HBEBFBGPÂOïÿ¼&O?< Hz$HSañJ@gaõÌaðŽOïN JaÙLß|øNuï?/aœà0oB§NCHPaövOï @ÿfpNua‡¾?/aÆôBWHz‰\Hz‰da‰dOï Nu0/2/aü& g JoVÀ@Nu o0¸cl o 8cn €Nua* /!Àcna‚J@g1Àcl0@NC"o 8cnS@ÙQÈÿüNuB¸cnHxcla‚€XNu!ï]¾NuaŽB 8]¾g @`þôNu x]Â!ï]ÂNuNLNù!"¸AúNuŸZNuJ8]ÊfaJ@fúNu2/B@8]ÊÁ]ÊNur`ðHç0Oïÿì—Ë$x]P`0@ g&J$j$ fî gZ“0@€gJ0+kD @l>?|`/KAï.ˆ?+a¸T$x]P`HkHja‡ìPJ@gÒ$j$µËfâp`pOïLß NuOïÿì>¯a?|#/HHo?<ÿÿabOïNup0/Ð@0; Aù!JÌÑÀNu59>CHMSY_behkoOïÿìBWaþä?|/HoHo?<ÿþaOïNuHç 6/$o88]Æ Cÿÿf6 Cÿþf68]È5D5oBj1Ã]ÆHR 8[°g @N x] g R`f JCmåK {0N1Ä]ÆXLßNu!ãX>¯ aþR2/ 0/"o2€Oïÿì>¼?@?ABo/H?Ho?aÿ^1×]È?|aÿP?|aÿFOïNuHç6/8/U¶x]Èf2JDg&>¼aX>¼aR>¼aL>„aþæ>¼a@>¼a:`0>¼a2`(>¼a*>¼a$>¼a1Ã]È>„aþ´>¼a>¼aTLßNuOïÿì?oHo?<ÿþaþ´OïNuOïÿìBx]Ì`>¼a—‚J@g a–Ø>¼a—€a—êa—â>¸]Ìg Bx]Ìaå¾`Ðp&?@ J¸]Îg"x]Î!É]Î CgðJCf"B¸]Îa—ÐJ@ga—Ò6@ø@vÞ?@ JCg,>¼a‘²?|?CHo?8]Èaþ\>¼a–ü`ÿbJ8] g$>¼a–ÜJ@g?|@Ho?8]Èaýà\`ÿ8N¹![ J8]Êfaü¾J@g >¼a–²`ÿ>¼aþêBWa‘6a•€`ÿHç0$ov?/a‘`>¼a–nJ@g a•Ä>¼a–la–úJ@ga–ü6>¼a–V4¼5C `J8] g>¼a–0J@g4¼@`a•`ªJCg>¼a¸0TLß Nu o0 @gû² @g @gf @#g( @$g* @Pg0 @QgLNuBgHz„^Hz„fa„fOï Nu!è]ÎNu?(aÁÒTNuOïÿì?|?|Ho?<ÿÿaü¬OïNuNu0* @ m$ @n? x]¾aÓ^?aúhJ@g>€aý²XNu @ g\ @ g”ª @ kg—D @ gû& @-g6 @ fB§Hy!O¦Hy!O’aâôOï Nu @f B§aüæXNu @+fBB§Hzüað~P @ÿg.AúþÀü*ÑÀB@(Oïÿì?|?@Ho?<ÿÿaûÞOïNu @ cf?<!`" @ xf?< ` @ vf?<"` @f ?<PaüÞTNu @f?<Q`ì @f r?aûTNur @gîr @gær @gÞr @gÖr @gÎr @gÆr @g¾r @*g¶r @7g®r @8g¦r @­gžr @4g–r @9gŽNuJüpNuB§Hy!O¦Hy!O’aáÀOï Nu0/ @ÿýg8Oïÿì>¼BgHoÿþ?aúÞ?|aúÔ?|aúÊ1üÿý]Æ1üÿý]ÈOïNuQ O0ü0Á0ü\A0Á?<HhÿøHSaåOïpNu0H@ CQfpýNu CTfpüNu C f0, Nu Cf0<ÿNupùNu0H@ CQfpýNu CTfpüNu C f0, Nu Cf0<ÿNu l"HfüS‰ CfBpþNu Cf ³Èg$B!pþNu C m Cÿb2,&ÐÁ³ÈgÃBpþNupùNu0H@ CQfpýNu CTfpüNu C f0, Nu CXf02,’FÒ+?0EÐ+?0l&NCHPaîP @ÿgapþNu Cf0<ÿNupùNu x]þ2,(ÒA1€0l&NCCè2(°i gCé*SAfò’hDA1AÂü*)p NuHç>0o,NC$H ’DiAlfˆ./2&o6!Ë]þ6*gtSCIê ," €!æ f߬` €!æšf2,(ÒA03aÿlIì*QËÿÒ0/.2/0??Hj aí4P6*SCmAê"(" !æ fŸ¨Aè*QËÿêH@`B@Lß|øNuHxa½†X?g$a½„ üDiAl ï B˜0¼1o 1o B¨0NuHç>ü\"SGRCÆü*C/?a¼†\<g€0@NCRhCð8Ö2¯43o6Qi3|(3|Bi3D | | G|ÿB)B)#|!åÄ#|!åÄ#|!Ñr#|!åì"2m Âü*EðDNuXLß|øB@NuHç8Oïÿ´6/d$of&oj>ƒa¼(HAï.ˆa*8f.Œa(4€xa>` 4„ 8]ºL6€x>ƒa»Ì0OïLLßNuHç>$o,/8]¶a _Jg!È]¶£ŽpLß|øNuBgvabJfbašJfØRŠ  gâ ,gÚ (g$ {g6 "gì [gn gH *gH +gH -gH /gH ^gH gH œgH gH žgHSŠ`Š4<€`@4<`:4<‹`44<`.4<‘`(4<“`"4<…`4<‡`4<‰`4<†` 4<Š`4<ˆJn$faµ¶HPa´Þaµ\P0<Õa´ž _B ]gþ$H`ÿ0Brÿ&JRAašfö Ab$SŠ (g"B@a´fSAa´^QÉÿøB@a´T`ýÜ$K`þðRŠa´4HS?aýÄ2&_ )fàB@a´*SAa´"QÉÿøB@a´0<Úa´B`ý–RŠB¸[B¸[B¸[ ­f1üÿÿ[Gø[~|ÿ0e6  b0RFgéJ‚`…QÏÿà .gH0eH bBRFfè`r þf40e,  b&géJ‚`…QÏÿâ0e  bfð`8 ef2 ­VÄfz~0e  bH‚Êü ÚBQÏÿèJfDEÜEF@1Æ[a lAø[Cø[a PCø[aµ BSŠ`üœJVÀg /c 9b pNu .WÀNu ­gî •WÀNu \g /c 9b pNuJVÀgø @c> Zb pNu _gö `c$ zcê c ›cÞ ±c ¶cÒ »bÌpNu?/a·˜a`HPaa·\Nu oHç>*HHxa·f>€ga·z(H8<zaBa·b0XLß|øNuSJgx #g¨ ‹gÚ gØ gÖ ‘gÔ “gÒ Úgþ Ùg@ -gH ågX ÕgÐ *g¡š¢ž[DmúüuünüdüeüfNuJ%füAíSDgØØføSŒRDNufäUDcÄü"aÚü"NuSDg´ü0NuDc¨Aír(ÿÿáH?UˆQÉÿòB/ Hy!N×HTaÔDOïØÀ@˜@Nu<+`<-`<*` </`</HUa²&*HaþêSDgÿHÃ*WaþÜ*_Nu<[aÜSDgÿ0ü]NuaÿBSSDgÿü( åf SDgÿü)Nu ågHUaþ˜a±ÊX*HSDgþîü,`à|)ÿÿNuSDgþÚü{ åf SDgþÊü}Nu ågHUaþTa±†X*HSDgþªü,`à|}ÿÿNu oHç>a> #g£ Lß|øNu oHç>a&Lß|øNu0/Hç>?aµTa‹a aµNTLß|øNu*HMúPa #g"N`°œAø[Cø[a 2Cø[`²SJgÌ #g¢ ‹g* g( g& ‘g0 “g@ Úg* ÙgT -gN ågN €g …gú †gä ‡gŒ ˆg¸ ‰g¾ ŠgŠ Õg¡šMú•NuMíNuMúˆAúÈCø[` fMúxAíÿøCø[pØQÈÿüBAø[Cø[` DJ-ÿÿf&Aú Œg Aú –fMú:LÐHø[NuHma´B f£À?( a´ J@g ¾a³úa‰Â Üg óf¢l*HaþÊa³âT*_Nua<` a6` a0Lø?[Hø?[` ÒaLø?[Hø8[Hø[$` LaNù"^ôHUaþ|*_ #g (Lø[HçàHUa¯^*Haþ\*_ #fàLßHø[ NuHUaþB*_ #gÈ -fÀHVHUa¯(*Haþ&*_ -fª _"NNuSˆS‰ g°!gø`J!g"`aº -gäa lJgAú``aè x [fðAú\Cø["Ø"Ø"ØMúþNuaÿLa a .JnÒ`Àaÿ0a JoÄ`²aÿ"a Jm¶`¤HUa²Ú fHJ%füREù"x6< pHU0HrN¹!^ÜPJ@gXŠQËÿè£ÀUHRaýX$_0*N²*_MútNuJ%füS?( a²Paˆ óg¡š(x]¶a­ ågV -g$HUaýAø[Cø[a.Cø[a®þa­öX*H`ÐSpR@J%fú?a¬¸0S@"x]¶R‰ MØQÈÿüS‰!É]¶S`¤a±à0a² x]¶ #fAèÿ÷Cø[a¾B8[ MúÌ!Ì]¶*_NuJg ŒHUa­ˆ*Haü^*W/8]¶Bg?<@HUN¹!\„Oï *_NuJg ŒHUa±¦ f£À>¨ a±ha‡0 Ùg (J%füHhÿÿSaü6 #g£ a< _6 åg SCga­`ð*Haüa±(XNu oa­ ¯HP oa¬ð"_"’¯²€fN¹!^~J@WÀH€Nu#*Hç0$o &o`HSN’J@ga¬¶X&H åfêpLß NuHç0$o &o`HSN’J@fa¬ŠX&H åfêpLß NuHR$o åg J$Ha¬h åfô J$_NuHç8$o$(o(/ / N¹!tàBCBB*BE*šBREBA*’CRA0@SAP6|ÿJ@gx˜@08 àdál6D8PDæDEì08] ÅÀ2æAÔA x[ÀCð 2A8@˜Ägl~žABF`DB@ãh€v`@ÿî`„‚$HB@ãh€RC J¸Cnà@ÿî`„0 À€$Hp0 ÓÀRFºFf¸`"Ù0J¸@nö0 Á(ÿÿp0 ÓÀRA$HºAg J`àLßøNuHç04/ 6o$$o&žFJBfBA`lzšBBD`FB@ä`€À Iv`@ÿëh‚$IB@ä`‚ÁRC"J¼CnÞ@ÿëh‚p0CðRD¸Kf¶` €À0I¼@nòp0CðRA²Kg I`æLß øNuHç04/ 6o$$o&žFJBfBA`lzšBBD`FB@ä`ÀÀ Iv`@ÿëhÂ$IB@ä`ÂÁRC"J¼CnÞ@ÿëhÂp0CðRD¸Kf¶` ÀÀ0I¼@nòp0CðRA²Kg I`æLß øNuHç04/ 6o$$o&žFJBfBA`pzšBBD`HB@ä`³À Iv`@ÿëh±$IB@ä`±ÁRC"J¼CnÞ@ÿëh±p0CðRD¸Kf´`"µÀ0I¼@nðp0CðRA²Kg I`æLß øNuNVÿäHç<>.8n n :6(Kè0lB@@ÿø0 lB@@ÿù6LÖÅ0 S@ @€o0<€@ÿû4GÔÃ0 S@ @ðo0<ð@ÿúHnÿüHy!gî/.N¹!gtOï J@g†BF.ÿüB@.ÿþ0@BB.ÿýBD.ÿÿ¾Hnf¸Lm`¼JnZ´KnT´Lo2’L0^@æ@ÁÁKõšA8B0 ÐE¸@l:šLRE¼Gn2²Jl’B.ÿýS@ÿÿ¼GnB`@ÿü2²Jm`0@ÿþ^C0æ@ÁÅT@0@ T€rþÀŸÀ&OEîÿæ/ N¹!fÄ0S@?QC?/ N¹!fb/ HnÿüNºû/ N¹!fŒKëB@.ÿüBC.ÿþ–@RCÞ@Oï nbˆp0.Ѐ0;NûL$v8L`?</.HnÿøN¹!gþOï ^CæC?/ ?? ?Nºý†`:Bg/.HnÿøN¹!gþOï ^CæC?/ ?? ?Nºûî`^CæC?/ ?? ?Nºü’Oï Lî<øÿÀN^Nu0/2/ o4/ Bft Bb?<HP?<??ÔB4; N» Oï NuüFûŽüþ2$&HÁAÿHÑ`LÐÒAâ‰2Á"Â"ÃNuCø[AéJgü ‘ÉYˆ0Ð@ðfR@LÑa&tQ@g6åHà«`0 @m 6BBHBHCY@g @m àŠà›U@gpÀð†èŠè›Nu08[@@D@Lø[aHø[`þÆ08[ °x[g bpÿNupNuAø[ J@gpÿ`p28[²hgbD@Nu"8[²¨gbò`î"8[²¨gbä`àB@NuHÀAø[BAJ€g4lD€rÿ0Á0¼@t€ü 2gH@„èšB@H@RP`êH@„èšTˆ ÂB˜`þ4 ü B˜B˜Nu08[@@D@Lø[aþÖxz 阀Èü Ø€paþZQÍÿèJx[gD„ NuFx[ Aø[ aÿ:J@nLø~[Høp[Hø[ 08[x[gLø[ aþvHø[ 08[°x[ f8[&G@Eø[0Gø[0pÀ"gÀü AóLÐÒGHø[ aþæRGB@èHgÀü AóLÐÒGHø[ aþÄRG‡l¶08[°x[$VÀH€1À[`üŠEø[0Lú¸Løp[HÒ~Høp[aÀLø[Hêa°Lø[Hê0a Lø[Hê`Lø[Hø[ aþHLø[HêTLêpLø[Hø~[aþ*Lø[Hê$aRLø[HêHLêp0Lø[Hø~[aýúLø[HêJx[gLúö´Hø[ aòvAø[Cîÿöað>Lß|øNuAïHç>Cø[aðañTAø[CîÿöaðLß|øNuHçCø[aï–aø¦Aø[Cîÿöaï˜Lß|øNuAïHç>Cø[aïpaøNAø[CîÿöaïrLß|øNuAïHç>Cø[$aïJa÷ÖAø[CîÿöaïLLß|øNuAïHç>Cø[aï$aùàAø[Cîÿöaï&Lß|øNuAïHç>Cø[aîþaû€Aø[CîÿöaïLß|øNuAïHç>Cø[aîØaûJAø[CîÿöaîÚLß|øNuAïHç>Cø[aî²aL@Aø[Cîÿöaî´Lß|øNuAïHç>Cø[aîŒaRÜAø[CîÿöaîŽLß|øNuAïHç>Cø[aîfaRÈAø[CîÿöaîhLß|øNuAïHç>Cø[aî@Aø[CîÿöaîFLß|øNuAïHç>Cø[aîAúôtCîÿöaî$Lß|øNuAïHç>Cø[aíüLø[Hø[$añLúôXHø[ aû"LúôxHø[ aR>Aï,Cø[ aíÀaïúaöÌLø[Lúpô6Hø~[að¼Aø[Cîÿöaí¨Lß|øNuAïHç>Cø[aí€Lø[Hø[$aðŠLúóÐHø[ aú¦LúóüHø[ aQÂAï,Cø[ aíDaï~aöPLø[LúpóºHø~[að@Aø[Cîÿöaí,Lß|øNuHç>Aï,Cø[aíLúódHø[ aï2Lø[Hø[$Aï,Cø[ aìÜLúóAï,Cø[aì€aõ Lø[Aï,HçpCø[aìfFx[aôîLßHø[ aîŽLø[LúpòæHø~[aïTAø[Cîÿöaì@Lß|øNuHç>Aï,Cø[aìaô¤Lø[Aï,HçpCø[aëþaôŠLßHø[ aî&Lø[Lúpò‚Hø~[aîðAø[CîÿöaëÜLß|øNuHç>Aï,Cø[aë´aô@Lø[Aï,HçpCø[aëšaô&L×Løp[HçHø[ aí¸Lø[Hø[$Lß~Hø~[aí¢Lø[Hø[aðAø[CîÿöaëZLß|øNuHç>Aï,Cø[aë208[@?ÿ"o02€1ü?ÿ[Aø[Cîÿöaë$Lß|øNu4óš4óè3÷ˆ3÷t3HŒ3OJ4OX[õ®\x\ž_¨a¾cÔexplnsincostanasinacosatansinhcoshtanhasinhacoshatanhsqrtdimgetkeytestftestdtime -g Ùf*pAîÿÿNº‘2`AîÿÿJ füRˆa•ˆ`ëüpN¹!z `ëð ( -føBgHnÿÿa•^\ VÀ`ëÔ -fÞHnÿÿN¹!WšX VÀ`ëºp08aN`ë°Hç0 o "o$>8(<(:(B@0@BA)4AB@)6@BA)2A6–GjDC0<>0:8¾Kn ¼Hm¸InºJmú4”DJCf¸Eo0:8¸Jl8 ºIoÆ`†JBf¾Hl>¼Ko²`¬JBm€¾Hl4¸Jl0 DÁÃHÀÂÐG°Hm °Kn >`*0GÁÂHÀÃØ@¸InŠ>`¸Jl0 DÁÃHÀÂÞ@¾Knp8 ¼KoºIoD0IÁÃHÀÂ2’@²Kn2<: `8ºIo4šIÇÅHǜC`ìDB¾Hl0GÁÂHÀÃØ@¸Jm(>¼Ko œKÅÆH…ÚB< ?/(????N¹!k¤Oï Lß øNuOïÿðHç>:o@8oB?/HN¹!fø?@6//FN¹!g\0 n:|4 n8|0 °Ml84 íJ4B0|ÿÿ?|ÿÿ,?|ÿÿ*rÿBo(o (6/(ìCoÿà(Eê 8 ìDEêÿà> ÏÃ4 HÇÂ< ÍÄHÆÂ²Cf¼HgV¶o*lP:/>ÚFC?N“XJFg :/>šF??N“XJCg?4/>”C?N“X¸o*f¾o,gT¸CoP:/>ÚGD?N“XJGg :/>šG??N“XJDg?4/>”D?N“X0 4 HÀÂÑo(0/(HÀ”À¶DlL0F?G,?D*2`þè0 íH4@?|ÿÿ.rÿ?|ÿÿ0?|ÿÿ2Bo6o 6 ìGEêÿà8 ÉÆ4 HĉÂ6 ÇÇHDzDf¾o0gT¾FoP:/>ÚGD?N“XJGg :/>šG??N“XJDg?4/>”D?N“X¶o.f¼o2gV¼o0lP:/>ÚFC?N“XJFg :/>šF??N“XJCg?4/>”C?N“X0 4 HÀÂÑo60/6HÀ”À¼Gl?C.2?G0?F2`þæ?/4N¹!føHx\.N¹!g\Lß|øOïNu(0/NANuNB2/HÁAïü±Ál¢žNu oHÐüü!W0pNu o0/fpLØüü.Nu o"oHRr!p!áH‚@g$t!p!áH„@ ЂEðàˆàˆàˆ`Î$_NuNù!mZ o//HhaA$P opJ0fS@nö€Nu oJhg2UA00Nu o"opJhg 2(2°pNu$/ oB@2(²hlTh21‚TA²hmBA0pNu"o opJhg2(2°UhTA²hmBA1ApNu/ptBC  gø -g ­fvÿ` +f0e  b"ç‰Ò€ÐЂ`æJCgD€&NuAø] Nu"o o0/ gS@ÙQÈÿüNu o0/S@BAÁQÈÿüNua   - 6 Q W H R T Y?/a\Nua 52+3?/a\Nu2/ op4g´AføpNu oaŽð o"oCéAð QÈÿüB! oAèNu o"oJ!füR‰ÙfüpNu pNu$,O<?a‹, g`p00ÿ àfRVˆ$HCù!NåpN¹!^~J@f†aŠŠ.NLß|øNuáH*H@*áH*Nua`*RŠR“g föR“  gú"g gà #gÚNu£ç fèSB`äVŠHRa:$_ x [ga¤ g–a`öaa´aÿn €elsegÜ €elifgÄNu£çaÿV €elsegÿb €elifgÿX €exitgÞ €whilg<àˆ €if gŽOïÿÎ(OB J"Lg gÀ`òBHçÿþN¹!0‚LßÿOï2`ÿ *efÆ * f¾\ŠHU*J$Ma‚$Maþô x [g gØaÿ\`ôaþò*_Nu                                                                                                                                       as("*","*_p")*_pas_error/ HzÿàHx^˜Eù!^ÊN’HzÿÞHx^´N’HzÿØHx^äN’Hzÿ×Hx_*N’Oï.¼""{Hx_ N’1üP^Þ1ü0^àBx^âBx_ü_ü_Bx_P$_Nu//826 4ëJ0BÒAÁ2æAAðAèL4B2<€äa2@`g„`FÄ‚âdRˆRI¸Ilà&(Nu//86 4ëJ0B2AÒÁÉ4æBAð AèL@4<€àb2A`"Jlµ`g‚`FÂAèRI¸IlÚ&(NuHç84< ”@6xèkÖBâC<Ü@pdA8tälØ@âD:ÚA0T@1À^Ö4TB1Â^ÔEúÿ2|0D20N’2|0E20N’6ERK8FRL2|0K2 0R@N’>RG4G`“É0J20NºþÒRJºJnîEúÿ2|0E20N’2|0E20N’2|0K20 N’LßøNuHç 08^ÖÁü0@:8^Ô2YA0æ@€ÿþЈ"@CéLAv–A0HÀxá¬F„0/Áü€ÿÿ$@Õü"`JEfCèKþJ8^Ùl$t À„BAFA|†0C,í©€"€CéQÊÿâ`t À„r0C,í©€"€CéQÊÿèXE1Å^ÔLßxNuYOHç>?@*>&H08^Ò"8^0@J@o,A*x^”ÛÈ*<LðBF`Œ*AMõˆ`ìJf²·Îe»Ëcv`BC"8^²‹f&x^”BB B fR‹t 0S@ @b B g BÿfpJBg BÿgR‹ B g^ BÿgX·Îe»Ëcp`B@†@²‹f&x^”BA A fR‹r 0S@ @b A g Aÿf&JAg AÿgR‹ A g AÿgB`xt r BC`xr Åüp0$@Õü"`Ãüp0 @Ñü"`BCìJCg Cg$ Cf^`:rB@éH„‚CéSA AÿÿgX`ærB@F@éH„‚CéSA Aÿÿg:`ätBAéIF€€CéSB Bÿÿg`àrB@éH€F€CéQÉÿîRŒ0 EÐ@¾@bþˆ…ÒRF¼o*g(EB`àLß|øXONu/ $H`RŠ@ÿ?NºýxTfî$_Nu/&/N¹!^ Xåˆr_F’€ âˆ1À^Ô CNºÿÂPx^Ö&NuNVHn /.B§Hzý0Nº“HOïN^Nu/ HxðBgHxVæEù!^N’Hx?<ÿHxVÈN’Bx^Ô1ü]^Ö1ü^ØOï$_Nu/&NºÿÀ CNºÿT&NuBuildExecGoFindReplConf"'t"'z"'"'‚"'‡"'ŒF%1dHç0NºÿrvGúÿÖ?HzÿèEúÿDN’Rx^Ô/N’Tx^ÔRCOï CfÜü_Lß NuN¹!x¾?8^ÞN¹!yø?8^àN¹!yðXNu NVÿüHçNºî*J8_g28^Ü2|0A\H08^ÚNºúà?<N¹!ynBD`?<N¹!y`TJ@gNºÿp?<N¹!ynT`°0x]8]H€H@B@Ј gr`2 gr`(gr`J@lr`gr` gr`BA²x^âg,0Áü0@Ñü"( 2|Là€€€Cé²üLÇfê1Á^â6RCTD·D gJ8_g28^Ü2|0A\H08^ÚNºúN¹!xR8/HnÿþNºì€PJ@fÿ0.ÿþ@÷ÿ=@ÿþ @! g @ fNºþ„J8_g28^Ü“É0A\H08^ÚNºùº0.ÿþLî8ÿðN^NuOut of memoryCan't exec command.Error opening '%s'/6NºýZAúÿÀ Cg Cf Aúÿ¾NºüÜ`/8^€HzÿÄNºýPNºþNºøìLßOï@NuScroll[UP,DOWN],Cancel[ESC,APPS]NVÿìHç HnÿìHx^äNºçÂBg/N¹!WL$HOï°ügÞAúÿ°Nºø>6* ?N¹!b?N¹!b<$HXp08_Aòr(p Nºõ¤Nºøâ2 @Tf@t(SB Bÿÿg&28_p0J2g€0R@1À_SAp0 2 fÒp08_J2g\BA`2 @Qf,`PSA Aÿÿg"08_ @c0@SH1È_W@€ÿÿ 2 fÖAþø AbÿfJg ?N¹!b,Tü_Nº÷¾`r(`¬LîÿàN^NuJx^Òg Bx^Òü_"x^” ÿgb08^ÚX@1À^Ú  g @Ÿn`Adapted by PpHd for PedroMSave changes?%s [ENTER]=Yes [ESC]=NoNVÿÈHç8 8^€g/HnÿÈN¹!^ÊP`B.ÿÈAîÿÈ!È^€N¹!m|EúõøN’J.ÿÈfAúýîNºòLrpAîÿÈNºôêJg 0N’AúýÝNºò0Hnÿä/8^€N¹!\PJ@fGîÿ÷Bg/ N¹!WL$H\°üg–?( N¹!{PT àfÔ* fÈ@ ?* N¹!b’Gè$K0P[H0HHhN¹!bR !È^„\gv!È^!È^Œ€!À^”!À^ˆ` x^ˆ fü !È^ˆCê`À!È^ˆ$ICêfØ`V/ N¹!YÀ/N¹!SAúø§NºìêrRp{Nºé8x^Ô6x^ÖBFBE1Ë^ÖBG4|1Ì^Ô6 BD1ü^غGf ¼Df1ü^Ø?Nºé’Rx^ÔRDRCT DfÖPx^ÖRGEê G f¾NºíZ @ gR @Qg. @Rg @Tg. @XfN0R@rHÀÁ,HF`ÿ‚SFjÿ|`Nºæ¢NºêŠ8T @Qg @Rgp @Tg @Xfrr`^JCgÿ\SC`ÿV CnÿNRC`ÿHYx^Ô?< NºæRx^ÔHxHx^˜Eîÿä/ Gù!]²N“rp JNºëîOïJfBC`Hx/ Hx^˜N“BC`NYx^Ô?< Nºæx^ÔHxHx^´Eîÿä/ Gù!]²N“rp JNºëžOïJfv`ÂHx/ Hx^´N“vOï `¬Yx^Ô?< Nºå¬x*^ÔHxHx^äEîÿä/ Gù!]²N“rp JNºëHOïJfv`lHx/ Hx^äN“1ü_v`¤ 8_v`L 8_v`BÃü Òx^Þ0S@ @Žcv`,1Á^Þ?N¹!yøv`Òx^à0S@ @0b1Á^à?N¹!yðT D gF Dfýê`0¸aZa„08a\f6Sxa`f(1ø]a`88a^D`BšBšBZBxa^J8abgBx]B8abBD0¼€Nu8aPBx]Bxa^`ÿ<QRTX@ € +-*/^­369,t.258)z0147(y   •|=x 68]g"Jx]&fB@Gø](SC1Ã]gp1À]&6ëQËÿúNu68] De­  $ _¾^ˆ=%/!*&@0œ.ž  (#),?|¿7°8Ÿ9©4€56‚1ƒ2„3…­`=a(b)c,d/e|f7g8h9i*j•k4l5m6n-op1q2r3s+u0v.w­ xxyyzzttAúâ`2Aúæ`,Aúï`&Aú÷` Aú`Aú`Aú`Aú%`Aú3`NLFü'BgHPB§aa <B@S€füNù!"¸Nù!o–Nù!eøNLFü'BgHP?< BgaèaàHz,B§aØ <B@S€füNù!!ˆ2 _0Aúû@ÿg˜FÁNù!xú2 _0@øc:"H @ðfÓØ`( @ñfÓØFÁNÑ @òf0äH"xȰad1À[¼åH"qFÁHPNÑAú`ÿDAú¾`ÿ<åH {Ns!xl!Ï@!Aˆ\!Ñh] !{t!xl!xŒ!yÜ!yèL"Æ!ɺ?@oðÿo0NsÐÈAè1Û pˆNs0@ f8cvg0 _FÀHP x\h“Ép rÿ`bHçÿþMù`Fü$2< PîpPQÈÿþ.gêQÉÿìFü'Pî¹pBnB.Ö=|€Pîpaœ|!=|0<€rQÉÿþQÈÿøfpavNr'=||€|Þ=|€ùpN¹!yÜN¹!{6aù€ ¸È[Øl!üÈ[Ø?<N¹!ynTN¹!x‚LßÿNsFü'3ü€`pÀ`NqNsAøczCú2< 0ÙQÉÿüNøcz29^À`Nq3Á^NqNqNu0NuTrap not definedProtected MemoryAbort by userBUS ERRORSPURIOUS ERRORAddress errorIllegal instructionDivided by zeroChk instructionTrapV instructionPrivilege violationDebug mode not availableLine 1111 EmulatorLine 1010 EmulatorSYSTEM ERROR: rebooting...Rom call not availablerÿ @ g@! m2 AoNu“Ép Hçÿþ,O(:0<NA<?ºx_JgÌ08_J1À`ðaÎJAfºgGøL0<¿/QÈÿügGød0</QÈÿüg —Ë0<?/QÈÿüg&Gù`?+ +?+?++fú+gú/Gø[0<÷?QÈÿüAè&OB#p QÈÿü.KHQ <DX€/m N¹!`Þ4€g0@NC âˆS@0ßQÈÿü0tÿ`&0NA.NLßÿpNurÿJ@m @ l Eø`òÐ@ÔÀ2Nu1À_JaâJAn0aÚJAnNLNù!"¼0A0<NANC OøDŸÀ"OâˆS@2ØQÈÿü0BRN¹!ašOïGø`ð0<÷7QÈÿü(3ü €`gGù`_7_7___ 6ŸgGù0<?'QÈÿügGù€0<'QÈÿügGø[0<¿'QÈÿü0NALßÿpNuEø`òv?N¹!a”TBZQËÿòBx_JBx`ðNu08_JaþöJAgAø`òprÿRAJXWÈÿú1Á_JNuHç>.<,I:âMÁÁ:@`L6ÇÆ8C`>x8 p0$GÕÀ`(GòH/ / N–PJ@o2SA"JÓÀp0Aò±ÉfŠcÒÖF¶Me¾âMJEf°Lß|øNuHç8(H&I>8SDBF6ÖDâK0ÀÇ* Ú€// N’PJ@o<RF`J@l8SD` `¸FdÎp @LßøNuHÁj D‚ÀHADA`‚ÀHAHÁNuHÁjD‚À`ê‚À`ît4„Àr2NuHABAHA‚ÀBAHANu"/ /a@ Nu"/ /aF NuD€Jm `&J€g(mòJlDa,"DNuD€JnD`DaDNua"Nu‚üJ€gømÞJmä°eg$rNurtNuH@J@f*H@‚Ài t4BAHAÃBNu?BAHA‚À$HA4„À2BBHBNutÃBHçv : E€càMvÖ;P6H@x *HE E€càMxØ;P ˜CgRDDDzé­Ò…*é­”…°‚cÔLß8NuOïÿ¼Hç>,H/h(*( ,($(Aï,rp)áˆÒ€p)H@B@Ò€)áHH@B@Ò€ ÁX‰plаˆfÎ&Ɔ F€À‚†€Ö¯(Ö¯,ƒ×j¤xpà»Ö…(È… F€À†ˆ€Ø‚د0„èÇ·Vpà¼Øƒ$ă F€À…„€Ô†Ô¯4‚$ pÛpàºÔ„"„ F€Àƒ‚€Ò…Ò¯8Á½Îîp à¹Ò‚*Ê‚ F€À„Š€Ö…Ö¯<ƒõ|¯pà»Ö*Ê F€À‚Š€Ø…Ø¯@„G‡Æ*pà¼Øƒ*ʃ F€ÀŠ€Ô…Ô¯D‚¨0FpàºÔ„&oH*Ê„ F€ÀƒŠ€Ò…Ò‹ýF•p à¹Ò‚*Ê‚ F€À„Š€Ö…Ö¯Lƒi€˜Øpà»Ö*Ê F€À‚Š€Ø…Ø¯P„‹D÷¯pà¼Øƒ(oT*ʃ F€ÀŠ€Ô…ÔŒ‚ÿÿ[±pàºÔ„*Ê„ F€ÀƒŠ€Ò…Ò¯X‰\×¾p à¹Ò‚"o\*Ê‚ F€À„Š€Ö…Ö‰ƒk"pà»Ö*o`*Ê F€À‚Š€Ø…Ø„ý˜q“pà¼Øƒ.F‡ od Àƒ*Ê€…Ô€Ôˆ‚¦yCŽpàºÔ„,F†$oh À„*ʃ€…Ò€ÒŠI´!p à¹Ò‚ À„*ʇ€…Ö€Ö¯0ƒö%bpà»Ö À‚*ʆ€…؀دD„À@³@pà¼Øƒ À*F…ʃ€…Ô€Ô¯X‚&^ZQpàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯,é¶Çªp à¹Ò‚ À„*F…Ê‚€…Ö€Ö¯@ƒÖ/]pà»Ö À‚*F…Ê€…؀،„DSpà¼Øƒ À*F…ʃ€…Ô€ÔŠ‚Ø¡æpàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯<çÓûÈp à¹Ò‚ À„*F…Ê‚€…Ö€Ö¯Pƒ!áÍæpà»Ö À‚*F…Ê€…؀؈„Ã7Öpà¼Øƒ À*F…ʃ€…Ô€Ô¯8‚ôÕ ‡pàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯LEZíp à¹Ò‚ À„*F…Ê‚€…Ö€Öƒ©ãépà»Ö À‚*F…Ê€…؀د4„üï£øpà¼Øƒ À*F…ʃ€…Ô€Ô‹‚goÙpàºÔ„ Àƒ*F…Ê„€…Ò€Ò‰*LŠp à¹Ò‚ µ€¹€Ö€Ö¯@ƒÿú9Bpà»Ö ³€µ€Ø€Ø¯L„‡qöpà¼Øƒ ·€³€Ô€Ô¯X‚ma"pàºÔ„ ¹€·€Ò€Òˆýå8 p à¹Ò‚ µ€¹€Ö€Ö¯0ƒ¤¾êDpà»Ö ³€µ€Ø€Ø¯<„KÞÏ©pà¼Øƒ ·€³€Ô€Ô‹‚ö»K`pàºÔ„ ¹€·€Ò€ÒŒ¾¿¼pp à¹Ò‚ µ€¹€Ö€Öƒ(›~Æpà»Ö ³€µ€Ø€Ø¯,„ê¡'úpà¼Øƒ ·€³€Ô€Ô¯8‚Ôï0…pàºÔ„ ¹€·€Ò€Ò¯Dˆp à¹Ò‚ µ€¹€Ö€Ö¯PƒÙÔÐ9pà»Ö ³€µ€Ø€Ø‰„æÛ™åpà¼Øƒ ·€³€Ô€ÔŠ‚¢|øpàºÔ„ ¹€·€Ò€Ò¯4ĬVep à¹Ò‚ F€€µ€Ö€Ö¯,ƒô)"Dpà»Ö F€€ƒ³€Ø€Ø‹„C*ÿ—pà¼Øƒ F€€„·€Ô€Ôˆ‚«”#§pàºÔ„ F€€‚¹€Ò€Ò¯@ü“ 9p à¹Ò‚ F€€µ€Ö€Ö‰ƒe[YÃpà»Ö F€€ƒ³€Ø€Ø¯8„ Ì’pà¼Øƒ F€€„·€Ô€ÔŒ‚ÿïô}pàºÔ„ F€€‚¹€Ò€Ò¯0…„]Ñp à¹Ò‚ F€€µ€Ö€Ö¯Lƒo¨~Opà»Ö F€€ƒ³€Ø€ØŠ„þ,æàpà¼Øƒ F€€„·€Ô€Ô¯D‚£CpàºÔ„ F€€‚¹€Ò€ÒN¡p à¹Ò‚ F€€µ€Ö€Ö¯<ƒ÷S~‚pà»Ö F€€ƒ³€Ø€Ø¯X„½:ò5pà¼Øƒ F€€„·€Ô€Ô¯4‚*×Ò»pàºÔ„ /(Ѓ-@Fƒ €ƒ¹€Ò€Ò¯Pë†Ó‘p à¹Ò‚Ó® Õ®Ù®Lß|øOïDNu oB¨B!|gE#!|ïÍ«‰ !|˜ºÜþ!|2TvNuHç<(o $o$*/(&(æŒp?È€$çŠJ…ož râ ",Ò€)A Ђ(€´€cR)AJ„f&J$E`T Ð…r@²€m&`v@–„Kì// HuHN¹!]² ЃOï r?²€l@Gò8$E•Ã"M LNºø `"K LNºøGë@EêÿÀp?°Šmê´üg/ / HlN¹!]²Oï Lß<8Nu€QOHç<*o&o tIïpüÀ‚r‚ 3ç‰â¨€(R‚p°‚fà æˆr7’€ r?À @HhHzÿz/ Eúþ®N’Hx/ / N’tOïpüÀ‚r‚ 3ç‰â¨€(R‚p°‚fäLß<PONuÿÿ?ÿigEsDsPd@%"#8Fÿÿ@9hˆb™u‡@W ‚'‡x‘sÿÿ@'6„”RAd%@ÿÿ@#‚8Y6p#@ Rp„0`ÿÿ@8c6P@AqD0$‚`Aÿÿ@B–qD˜V?ùI”3™7†Qÿÿ?ü11p?þ%f82(”@ÿÿ?ÿFgƒ3—U)@ÿÿ?û†4"TB?ý4$ˆx#XXÿÿ?ÿ3ƒPd!–@?ÿcfw#gX@p€%ÿÿ?úDTEQNVÿlHç< x [g|IúÿÈKø[Nº¬–.Hx / pœÐŽ/N¹!]²Oï -Gÿ¨&ƒÿÿÿ|HxpœÐŽ//N¹!]²Oï Hx/HnÿŒN¹!]²Oï -nÿ”ÿx-nÿÿt=nÿŒÿr=nÿŽÿppÀ®ÿ˜-@ÿl n?õÿpc–!îÿx[ !îÿt[1îÿr[1îÿp[!îÿx[,!îÿt[(1îÿr[$1îÿp[&Nº¤¾EîÿôHx / / N¹!]²Oï Hx / p¬ÐŽ/N¹!]²Oï Hx p¬ÐŽ/Hx[N¹!]²Oï Iúþ˜Nº¤4EîÿÐHx Hx[/ N¹!]²Oï Hx / Hx[N¹!]²Oï !îÿx[,!îÿt[(1îÿr[$1îÿp[&Nº¤*EîÿÄHx Hx[/ N¹!]²Oï Hx / pœÐŽ/N¹!]²Oï Hx p¬ÐŽ/Hx[N¹!]²Oï IúýÄNº£žHx Hx[HnÿÜN¹!]²Oï (.ÿä*.ÿà<.ÿÞ6.ÿÜ0.ÿngFCHx pœÐŽ/Hx[$N¹!]²Oï !Ä[ !Å[1Æ[1Ã[Nº¥EîÿèHx Hx[/ N¹!]²Oï Hx / Hx[`V0.ÿngZHx Hz¦¨Hx[$N¹!]²Oï !îÿx[ !îÿt[1îÿr[1îÿp[Nº¤¸Eîÿ¸Hx / / N¹!]²Oï Hx / / N¹!]²Oï Lî<øÿHN^NuNVÿTHç<8.68[Bx[Hx Hz¦`Hx[ Eù!]²N’Oï Nº¡(Jm\ x?ÿ[bÒJDgJCg=|ÿV`BnÿV`JCWÀH€=@ÿVn ÿVHx Hz¥ÒHx[N¹!]²Oï Hx Hx[Hx[ N¹!]²Oï Nº¡~&ƒÿÿÿ|Hx Hx[/N¹!]²Oï Hx /Hx[N¹!]²Oï Hx Hz¥®Hx[$N¹!]²Oï Nº¢(„ÿÿÿpHx Hx[/N¹!]²Oï &ƒÿÿÿdHx //N¹!]²Oï Hx /Hx[N¹!]²Oï Nº©lEîÿ”Hx Hx[/ N¹!]²Oï Hx / Hx[N¹!]²Oï Nº¢òHx Hx[HnÿˆN¹!]²Oï -nÿÿ`-nÿŒÿ\=nÿˆÿZ=nÿŠÿX`œJDgJCg=|ÿV`=| ÿV`JCVÀH€=@ÿVDnÿV-x[ÿ`-x[ÿ\=x[ÿZ=x[ÿX n?õÿXc°Hx Hx[Hx[Iù!]²N”Oï Hx Hx[Hx[$N”Oï Nº îEîÿ Hx Hx[/ N”Oï Hx / HnÿdN”Oï Hx p›FÐŽ/Hx[N¹!]²Oï IúúFNº jEîÿÐHx Hx[/ N¹!]²Oï Hx / Hx[$N¹!]²Oï Hx p›FÐŽ/Hx[N¹!]²Oï IúùºNº EîÿÜHx Hx[/ N¹!]²Oï Hx / Hx[N¹!]²Oï Nº¡¼EîÿÄHx Hx[/ N¹!]²Oï Hx / Hx[N¹!]²Oï !îÿ`[,!îÿ\[(1îÿZ[$1îÿX[&NºŸâEîÿ¸Hx Hx[/ N¹!]²Oï Hx / Hx[N¹!]²Oï !îÿ`[!îÿ\[1îÿZ[ 1îÿX[Nºž¾EîÿôHx Hx[/ N¹!]²Oï Hx / Hx[N¹!]²Oï 0.ÿVgFx[0.ÿVgbGù!]²EúžpgHx Hz¢öHx[ N“Oï N’Eîÿè`Hx Hz¢èHx[ N“Oï N’Eîÿ¬Hx Hx[/ N“Oï Hx / Hx[N“Oï 0.ÿVgFx[`Hx Hz¢@Hx[N’Oï Lî<øÿ0N^Nu x [gBgNºûÈTNu?<Nºû¼TNuNVÿlHç<=x[ÿl28[0.ÿl€A @ÿgª A fHx Hz¡ÈHx[N¹!]²`Š n ÿlg„-x[ÿx-x[ÿt<8[*…ÿÿÿ|Hx Hx[ /Gù!]²N“Oï Hx /Hx[N“Oï NºœJEîÿˆHx Hx[/ N“Oï Hx / Hx[N“Oï Hx /Hx[ N“Oï Eúœ.N’Jf\Hx /Hx[N“Oï Nºœ°(@!îÿx[!îÿt[1îÿl[1Æ[Hx Hz úHx[ N“Oï N’Jgp°Œf!îÿx[!îÿt[1îÿl[`J!îÿx[!îÿt[1îÿl[1Æ[Hx Hz ¾Hx[ N“Oï N’Jf$& f!îÿx[!îÿt[1îÿl[FF1Æ[`Rp°ŒfZ!îÿx[ !îÿt[1îÿl[1Æ[!îÿx[,!îÿt[(1îÿl[&1Æ[$NºœüGîÿ”Hx Hx[/ Eù!]²N’Oï Hx / Hx[N’`îJFfBnÿr`& VÀH€=@ÿrBF €ÿÿ €ÿþb rHA¸üoÔ Àâ‰J€gö*ABB2nÿl nÿt".ÿx`ª!Á[ !È[1É[1Â[!Á[,!È[(1É[&1Â[$NºœXHx Hx[Hnÿ N¹!]²Oï ".ÿ¨ nÿ¤2nÿ¢4.ÿ  & ÀƒgP!Á[ !È[1É[1Â[!îÿx[,!îÿt[(1îÿl[&Bx[$NºœHx Hx[Hnÿ¬N¹!]²Oï ".ÿ´ nÿ°2nÿ®4.ÿ¬ âˆ*@ºüfÿR`(& Dƒ-CÿnrHA`" .ÿnÀâ‰*AJ€gðHx HzžîHx[$Iù!]²N”Oï !îÿx[ !îÿt[1îÿl[Bx[Nº Hx Hx[HnÿôN”Oï ".ÿü nÿø2nÿö4.ÿô(M`¨!Á[ !È[1É[1Â[!Á[,!È[(1É[&1Â[$Nº›,Hx Hx[HnÿÄKù!]²N•Oï ".ÿÌ nÿÈ2nÿÆ4.ÿÄ À®ÿngL!Á[,!È[(1É[&1Â[$!îÿx[ !îÿt[1îÿl[Bx[NºœdHx Hx[HnÿÐN•Oï ".ÿØ nÿÔ2nÿÒ4.ÿÐ âˆ(@¸üfÿT!Á[!È[1É[6.ÿrµC1Ã[`¨!îÿx[!îÿt[1îÿl[1Æ[Nº hEîÿ¸Hx Hx[/ Kù!]²N•Oï Hx / Hx[N•Oï Hx Hnÿ|Hx[$N•Oï Nºš.EîÿèHx Hx[/ N•Oï Hx / Hx[N•Oï NºŸ’EîÿÜHx Hx[/ N•Oï Hx / Hx[N•Oï Lî<øÿHN^Nu o"o É ÉÓï ÉBPNu o"o/)/)/aÖOï Nu opJh f "(²¨dpNuHç0$o6/&oHSHRaBPJ@g¶Sfp` SÿðfäB@Lß Nu o"h!INu/Y o vÆot oÿðd&.ˆ C mfaÊt` Cfalt4`a6$ X&Nu"op")"i`áˆtЂQÉÿö ÿÿÿÿfæNu///aÿvvaÿná‹aÿfá‹aÿ^á‹ X&Nu///aÿHaÿBáK0X&Nu o (NuHç0$o&o&+/?HRaèOï J@g$ j&k`ÛQËÿüƒ ƒÿÿÿÿfì%HpLß NuHç8&o$oHRaþ~XJ@g6üÿð6üB›B“`T(j ÿf ,ÿgRŒ%LHRaÿJ6?HRaþ Oï "Cÿð *L6Ã6À&Á&ªÓª Cÿðf5| pLßNu o"hïï !INu o"hïï ï ï !INuHç $o&/p ¶€bx:` ƒdxz ` ƒdxz`xz jÑÄÑñêcB@`F0/@ÿð€E?HRaÿr\ Dm*g Dg/HRaÿpP`"jÃ%I` ?HRaÿB\pLß8Nu op ógxW@ øgpS@ âghS@ ág`S@ ÝgXS@ ÞgPS@ àgHS@ -g@S@ ßg8S@ Üf åfú ägp` gS@`U@ Ûg Ùfä ÙgS@NuEXPRLISTMATFUNCPRGMPICSTRTEXTGDBDATAFIGMACOTHSYSALLASM‘È0/ @b 2åIÐAAûœNuAùpCú ÉCú² ÉCúÔ ÉFü#OøKøIøNX,O?</až`a>a Jj ˜fz0 hgàa„v Ég°f`RC xéx°CfRadDf×^&é{HCé{ ƒàb88aH=|ÿþÐDa" #fEùGù@Kù! M0<ÿ$ØQÈÿü5@à<< a¤ V_a¢aòaú0 xgä Vgê fÎaàaÐBV(á\fxHD,„ J0`èàQÈÿú < F˜€dÐDxÜ@?HPa¦X:0<à˜€dÐDx>€/ aŽÚ@>„Hjàa‚ÐEPa`aval»ü!f$AúN#ÈxCù? Qÿÿg Ian M0< a Ma`0< J"Ma€ÒÀ0 KavpH@ÛÀa**a¸–…bÿ0g Ma.Aêà"MaPa Bg OCù!pa>aŒFü'Eù .Z ZNÐ/Fü'0¼PP0¼ 0¼ÐÐ0gø0¼PP0¼ÿÿFü# NuHçà Fü'$ID@°Ie6r’@g 1ÿ2¼PPâI`2<ÿ2¼PP04¼4À0gøQÉÿî2¼PP2¼ÿÿFü#LßNu,¼˜VFü'Cøbf2)XA²il6ù` 3A4) Np˜ RB´imBBQÈÿð3BFü#Nu/?<Hoa\0áX_fîNu/p o6/ g6BBCøadFü#JigöFü'2)1ÂÐBRA²imBA3ASiSCfÐ&Fü#NuFü&HçààCù` EéAøad2(²hmPøch`r4fjg¼à¼Pøci`VgRh2€RA²hmBA0`6 g0AøbfJhg"4g20€ShRA²hmBA0`Ø‘LßNsa`þ/p `/p`/p` /p`/pHçÀAû0"Lp˜CéQÈÿøJ fRŒAúSfIìܼLß Nu>~>~x>  zLx>> >>AAcwwFl8<<<< < >>00  >kk>> 08<><80 >cccccc>>cccccc>~````~>>~`~~`~><<<66666666666>``|bf 0fF8ll8}ofn; 000 0  0""~0 0`@>ccckccc>x~ 8  0`0 ~~`0  0`ccooo``>333~3c```c3|6333336|102>201312>200x3c``gc3ffff~ffff<<fff<s366<663sx0000133cwkccccccs{ogcc6ccccc6~333>000x6cccgo>~333>633sff=p00>3333nffff;f0x;fff>v7;00x 8~F 0b~0`0p  p-&>;offo;66<6666< ~f```````;o 66cc6000006cccc6p0<0>06666666w?v666g36<``3  36ffl8>X >{ko>Ikkk>>ccccc66w"AIII6>00<00>!~`b<8lp````~>>c66c>>ccc> 8 0 > ~~0``0 0`| 0TT<<<>khhk>300~00`Z$BB$Zfff<~~$($$ l<"MUQQM"666> (P( ~>"YUYUU"|8DDD8|6 ><<v66`?kkk; c66c8<666>P( (P>fflm6 XX04ZZZ,0`f<0333>0x336333;n0<>ff; <>ff;$<>ff;,<>ff;6<>ff;$<>ff;6 ?HI6fff<,|fffff0 80p6;333>0xffff> 8Ì]P!Î!É!Î !É"!ÎÈ!ͪ!ÍÔ!͆!Ñœ!ÑÌ!ÎÒ!ÊÀ!Ζ!Î!Ëò!Êä!Ë~!Ë.!É.!É@!ÎŒ!Éh!ÌV!ÌV!Ìž!Ìê!Ɇ!ɺ!ɤ!Ï@!ÊŒ!Êj!Ì*!ÒØ!Í\!Í2!Ñh!Ñr!Óà"kâ!Ç!Ƙ"kâ!g&!gR!g>\>"kâ!Ç4!çD!è!çè!Ðp!Þ"kâ!Þ‚!Þ^!Þ "kâ!Þ¢!Þ¢"kâ"kâ"kâ!Ûf!Ý8!Û:!Ù¨!Ù€!Û !Û!Ú¼!ß"kâ"kâ"kâ"kâ!íþ!íþ!{D!z°!z!ÃV!J$!Ip"kâ"kâ"kâ"kâ!C!Cz!YÀ!Y°!Zf!Z\!W4!W8!Wš![È!S¾!U<!U~!T@!Ur!Td!Tè!T0!W²!X!Xr!Xô!Yš!W|!Y0!Y2!YT!Yn!Y!Sd"kâ!S<!VÚ"Æ"ð"kâ"kâ!Hô!£!Rà!Rú!S !V!W4!\„"kâ!R¾![Ä"kâ![Ä![Ä"kâ!Sx!b¤!`Þ!`Þ!dš!`Ð!dŠ!c"!b’!a”!aˆ!b<!b!b!bæ!c¦!bl!b,!e&!bŠ!bR!a€"Æ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"È"Â"¼"¶"l""R"8!¢F!¢!\H!ÞÒ!Þ¾!|B!|:!|&!ß(!Þþ!âØ!ß<!ßJ!ßn!ßL!ßZ!àz!àz!ßú"kâ"kâ"kâ!á<!àä!àP!ßj!ßJ!åd!åd!åd!åd!åh!åd!å€!tÖ!tH!t!s^!s¨!tÖ!rô!t‚!tÖ!tÖ!tÖ!tØ!yè!yÜ!yØ!yÒ!y–!y&!yL!y`!yn" " è" 4" V" œ" v" Â" ô"\"À" *" " Þ"kâ"°" P" ^" " ," „]¶!¡h"kâ"kâ"kâ!30""kâ"kâ"kâ"b"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!Sš"kâ"kâ"kâ"kâ"kâ"kâ"cö"kâ"d"dD"kâ"dT"dš"dÆ"dô"kâ"cÆ"cÜ"f"eþ"eè"eh"e"e"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!ÇÂ!ÇÂ!xò!xÂ!xæ!ß4!ãX!áÎ!ß"ü!'È"kâ!'°"kâ!(!+Œ!)†!*!+Š!+ˆ!(\![!)"kâ"kâ!+f!)8"kâ!,â"kâ!^þ"kâ!(þ"à" 0" `" x"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!z !z!{6!{`"r"š"°!õ!tà!ø6!u!gþ!gt!iÖ!jš!gÂ!f<!f0!rŒ!n"è"†!m!uh!uº!r°!vn!x!fø!g!k€!kr!m|!mò!fÄ!fŒ!fb!fB!o2!v2!ú@!k¤!mº!o–"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!Ç8"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ" "kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!af!bÈ!c""""""""!¢Ì""!{P!yø!yð!Cè!Eº!Aˆ!AÈ!Aº!BR!B!Bè!BÚ"kâ"UB"Un"Vt"B"kâ"kâ"kâ!íæ!ð!ð$!ïü!ð!ét"kâ"kâ! T! Z"kâ"Ø"è"kâ"kâ!]²!]!^Ê!_`!^²!_‚!^p!^Ü!_:!^R!^Ž!_¦!_Ì!_ð!` !`,!`h!^!^!`N!^ !ZÖ!Zš"kâ!S !WL!y!y&"kâ" ô" x" p"kâ"kâ"kâ"kâ"kâ!] "kâ!ÉÌ!ÉV!à"Ä"kâ!xl!xŒ"kâ"kâ!x¾!xR"¼!,°!,Ö!,æ"kâ!,æ"kâ[°"Lp"LZ"L~"LŠ"Lì"L¼"Lö"Lâ!¤>"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!ôf"kâ!Çæ! @!¡!¡!¡B!¡B!£†!£î"kâ"kâ!¤ "kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ! Ì!¢´!¢´"kâ! –! Þ! þ"kâ"kâ"kâ! `! x"kâ"kâ"kâ! >! >"kâ"kâ"kâ"kâ!¢”" Ö"B"kâ"„"kâ"†"˜"˜"†"À"ª"˜"Ò"kâ"kâ"kâ!¢h"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!¤^"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"<"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!J$"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!I*!I*"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"˜"Æ"|"h!{t"kâ"kâ"kâ"kâ"kâ"kâ"kâ!ôš!ôÆ"kâ"kâ"kâ!ôò"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!¡R"kâ"kâ"kâ"kâ"kâ"kâ!éÊ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!\"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ]®"kâ!&Ê"f²"gŠ"kâ"kâ"kâ"kâ"kâ"kâ@!!PG!PBc¶"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ!¤Ä"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâaL"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ[¸"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ"kâ(http://www.timetoteam.fr.st) This program is free software; you can redistribute it and/or modify it under the terms of the GNU GPL as published by the Free Software Foundation (version 2, or any later version). It is distributed WITHOUT ANY WARRANTY. See http://www.gnu.org for more details.Nq @tiemu-3.03-nogdb+dfsg/pedrom/pedrom89ti.tib000066400000000000000000002765131220314353500205760ustar00rootroot00000000000000€}€ €!€28O€¡€MAdvanced Mathematics Software& @€|„ÌÌÌÌL!ˆ‚Eð‚Eü‚F‚F‚F‚F‚F‚F ‚F~‚F–RO®š®À®à®ì®ö®š‚Eö‚@º‚@Þ‚@ê‚k‚@ì‚A*‚A¤‚HX‚G<!ˆ‚GP‚G\‚G‚‚GZ‚Fä‚Fä‚Fì‚Fä‚Fò‚H ‚Fä‚Fä‚FäÿUªÿü‚„H¹pFü'OøLpKù`Mùp=|@@;|ÿÿ:¼€2<tQÉÿþ€Aù^¤NqNqNqFü'0€NqNqNqFü'0€9pp3ü?p3À^3À^3À ^#Àp#ÀpNqNqNqFü'0p|ÿ@ ;|1€;| €@|!|²|î;|ÿÿ‘ÈpÿB˜QÈÿüa¸"||ª³ü€bþ9`Vø]ËB¸aLaCvHz(Fa$Hz(\aHy‚›Øaa>a-øa}ZaLaŽ` Nù{ŒB8]ËOøLAøDN`aTap2$*3ü²`v Ac&( Cg3üÌ`Aú(@‚ fBrŸHkPÄAø]düÿÃÅÄ ¨ÿüBN¹®ŒB¸[´B§vRWaUöQËÿøHy‚A¬Hxd?<aVJHxÐ?<aVDHxd?<aV8Hy|¢Hx?<aV aX²aTÞaWº>¼2aVl>¼‚aVlHx] aWàaV@aB\Aø]l!È]TBP||N¹ÉÄBhBh" <ïx!@!@!@!|L0B¨$!È]Pa¢aAa?4a|&N¹‚"Ô9`gý€OøLFü`Nù‚FR¹`Aúüb“Ép?"ØQÈÿüù`NuHçÿþOïÿì,OEùƒGù„ RÿÿgR Rÿüf6 NCêBpÙWÈÿüfSˆü\Cê pÙWÈÿügBSˆIêa,v)ˆx8*DrÂDØAÕĵËe¨$K×üµü¿ÿÿc˜OîLßÿNuHçþNL?BEaþJf¬08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`µüÿÿbp @fh·ü¿ÿÿb`·ü‚ÿÿcX @fPRƒCÿþIó8ÿ " H@HA²@f:Iò8ÿ¹üÿÿb. ¸ƒÃÌ[¨f$ ¸%Ue]¨fâ‹0<AúJCøcz2ØQÈÿüNøczzAù^¹`NqNqNqFü'0NqNqNqFü'0ù`0FßLßþNuSCm"(K8¼PP>6¼6Ç0gøQËÿî8¼PP8¼ÿÿNù%€HçþNL?BEaÜJfx08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`µü¿ÿÿb>µü‚ÿÿc6 ¸ƒÃÌ[¨f, ¸%Ue]¨f" €ÿÿ$@0<AúJCøcz2ØQÈÿüNøczzAù^¹`NqNqNqFü'0NqNqNqFü'0ù`0FßLßþNu4¼ÿÿ4¼PP4¼ 4¼ÐÐ0gø4¼PP4¼ÿÿNù&nN¹‚A¬ ]ÀNuHç`pt2RAÐBQÉÿúLßNuHçÿþNL?Fü'!üƒÃÌ[¨!ü%Ue]¨EùƒGù„~ÿ¾Rglx8*DrÂDØAIê!Ü\N!Ü\RB8\VAø\Na.¾Jg6!Ü\N!Ü\RAø\Na.ªJg":aÿtº@fÕĵËe¬$K×üµü¿ÿÿcœ`EëŠÐaþZ`ä ŠcÞâˆS@¾ZVÈÿüfä`ÐB¸[¨B¸]¨FßLßÿNu /B@ @tÿ2 o &/$NL?Fü'!üƒÃÌ[¨!ü%Ue]¨,O"gHPa,î& g¸a(îB@2( Af¦0h NC(HpÐT/aýž faaý’ g‚Gèÿì a(²*Ha6Ò8gl a'ŽJ€gbaü2?/-//(/?<ÿþ$OvaúGë$L6TCaùò>¼ÿü$OGëÿìvaùâJ@g"Gëm ?- ;D Aøc¶åL!‹@a6’p.NB¸[¨B¸]¨FßLß|Nu oNL?Fü'!üƒÃÌ[¨!ü%Ue]¨BgHPa, g/H>¨ aü~ oBh a/\B¸[¨B¸]¨FßNu"y€³ü€c ³ü€ÿÿbNÑAú˜Nù‚F&pNuHç>NL?Fü'!üƒÃÌ[¨!ü%Ue]¨,OEùƒGù„Bz| Rÿÿg RÿügPÃR…p0*@rÂ@ÐAÕÀµËeÚJgžçE¿Åcª$K•üBg RÿÿgDx8*DrÂDØA Rÿøg(AêN¹·R?gt/a4²?gj0@NCâŒSD0ÚQÌÿüxÕĵËe¶EëŠÐaù”J@gH>g,aû¶Gèÿì0GNC$H&aøV0CëAøc¶åH!‰0a5`Ð$K×üBzµü¿ÿÿcÿ$| .NB¸[¨B¸]¨FßLß|øNuaü†/(Hx/(/(Hz"E//axÂOïNuCúô o`1òpNuNLFü'08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`Aù Cø[$pØQÈÿüAù^¹`NqNqNqFü'0NqNqNqFü'0ù`Fü o?8[(/8[$Hz!WHPaxOïNuaþ a?Öa4Receiving a TIB... ON to cancel BEFORE receiving. aMÊNLFü'Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`aö"aÎAù‚gúCù0<"ØQÈÿüNù LJfüBgHhÿÿa)& f&a(aL.ˆg0|a"ü g0h "La"î f W`Ü\NuHyMma(îX g0h aLè ÙfSˆNu‘ÈNu -föaräCèNug *g ?g g²gèpNuRˆ`àNuNugö²føHç@ÀaÈLßJfêNuHçþþ$LxGø\hgÖ gôSŠ'Š@XD DŒlÀB "f0R³@üRŠgª "fô`PRŠRŠ >fRŠg gôSŠ` >gà gÊg` *fPÁ ?fPÁ fæB*ÿÿJgÿn*3@üYDCø\DJfü?<Hiÿÿa(,\`a(z&gÿF"EaþòJfì'ƒ@XD DŒmà`SŠJfºa äL1Ä\fLßNu s@üEø^ CúN f >fRˆT‰`Eø^ 2f" >f  gúJ gavd gYDb¬auØNurwaHçðàap(68\fUCmEø\pÔÃÔÃÔÃÔÃ/"at~XQËÿöLßNuEúaKR g$aK‚ @ m @ènÀü/?<aH®aI\NuaulaÈat LgZ "f gP "fö |fæHPB 8^fBx^Aø^0¸^1<a|‘ÈCúÿREø^auœa@(_8^ fAø^ au` 8^f$Bx^Aø^0¸^1<a{Ô1ü^aAø^ `tîanþ1ø]\$  gúSŒGúà$K0g&Có LJg± gøTŠ`êg fòaý|0Nó L—Ëg föGèÿÿBaü¨ g¼ (gF?( aIÌ óg àg"T`.aý6aþ†0Bx]Üat08]ÜfNu`GHaýaþh0Nù‚°HTaJ.¸]¶N¹ðlJ8[ºg .¸]¶N¹îV>€0@NCHPaIšXaa/œXNuHçÿþv(žÃ&OHT$Lg  föB$aIއ gga``ø(WgB $gZ >g f t a8t>a4`ê ,2ÿþf , ÿýgÚt a,ÿÿ`ÐBp( _"Oa+DOï(LßÿNuSCmÂNu~$L {fRŠgÒ }fö`~SŒ`~ gô  föB,ÿÿHçOïÿÄHWaEøJ@f,amFHRa:.¸]¶N¹ðlX*x]¶8(KzN¹îŠ6&LaEìOï@Lßpðgÿ$aÿ|`ÿNùê"Hç>HPa+€ _aarlLß|øNu o0/Hç>>VGGÿþžÇ"OBS@m.ØQÈÿüBIïOïÿÄHWaE`J@f aýaEx`>€ar&Oï@ÞÇLß|øNuHz‰aGþ`Hz` Hzê`HzaGâXNuHzÍaGÜYaG„ OvaJB@ yf ef sfJWÀPNuaHbaF.?aHD0NuHçàÀ?<HP??a;žOï LßNuHç~ðzÿ"HBBD<8]N¹‚~ÐF1À]HQJfüHQ| ÿÿü ü B028]a¨"_B!"_aŽ @ gŠ @g" @g` @gp @Qgn @Tgr @RgÒ @XgÖ @RgÚ @XgÜ @ •gx @ gj @ m @oT @ÿbta*`ÿX³ÈgÿRSDS‰$Iêfú`ÿBBDBaþª0Lß~NuHR¸CgRD$IJfüSŠRSеÉlöÀ$_Nu@ HçàÀOïÿì?HzVHoaptEï aF„Oï$HLß gþàJgþÚgþÔ ;gaš`ð³ÈgþÄS‰`þ¾Jgþ¸R‰`þ²³Ègþ¬S‰`öJgþ¢R‰`öJgzÿa `þ’"HücülüeüaürB`ÿ:0g2HPY OÆø] üŸ¸] \?<Hz2.Hhÿýa26Oï _"HBBDNu E lþ6RE`JEoSEGø_L0Àü*×ÀJg a¤gaþâ`öSE`þ a2`þHçÿþ/8]aED!ß]Lßÿ`ýìHçàÀAúHz¬aCdHzÀaC\aûTN¹‚KÚJ8]Ëg HzaX g2( g agü0N¹‚°Oïÿà08\$°x]o1À]8]lf x\]oa4ØBWa;|a-raëˆaB¢Pø[º(OBHzlaBäX Lv(aûVJgêa2OïÿÄHWa@J@f a÷¼a@`N¹ÈBHPHzSaB¬POï@`ÿ|HxzHx_LHx_va$šHx)HTHx_La$®OïNulPöçÄá–Ï"®X–rÙHˆ¢7¸€>œ‚ҽƳ2<ÞÚÿ`‘äZ«ø¸\1¼?BùfZíNÔTÉ>aúJ@g:NL?Fü'!üƒÃÌ[¨!ü%Ue]¨Eùƒèaì,ÕüµüÀcîNBaùÜJ@föNuaùÒJ@fó¤NuaùÆJ@fñ€Nu/,OEú x\fm$ x\l -f hgŒ lf EúÔHz¶aAlHx\DHzxaA`>¼B8\CAø\DJfüHhÿÿarv g>RC&H0( f B§BgBgBg`0@NCHPt4B@0(ÿ??+ ?HSHRaAOïa†`¾>ƒHz6a@ú.N,_NuHzHza@èBgB§a v gÖRCHPHzOa@ÎPaH`èEúþF0gAúþ>HpHz/a@®PXŠ`æ`ø a(:QB§B§B§HoHoB§aí^Oï Ñ—a'š/Hza@tOï Nu`2!üM³\l1ü\f`.AúïÈ`(AúÎ`"Aú Î`Aúî$`Aúþ`AúP` Aú `Aúîž x\fmøOïÿœ&O$H08\fS@g41À\fåHCø\h"q KBÙfüB§HhÿÿN’PJ@fHkHzéa?¾P`ÄOïdNuHç>N¹‚Kºawar¨a¼aè0ad,?<B§a¼>¨ hþÿ a&(a fêEøcº:<ÎvxJšg$0 @g @g°xaƒa%TRCQÍÿÔa)0a&Ô>„g Hzýa?.X\Lß|øNu x\ff÷ x\lJfü"x\pJfüHiÿÿHhÿÿa>PJ@fHzýHza>æPNu x\fföä] x\laf gF>¨ 0WNCp0V@a$J@g00WNC2VA"H>€0@NCÙSAfú x\pa–J€g aL1W `a$–HzHz£a>xP\Nup x\fg 8\l!À^€N¹‚5,`0. x\fm/8\lHz¢a>HP`ö>Nuaunppg is unvailablea> XNu x\fmö$Hç>Oïÿt&O"KAø\lp!"ØQÈÿüOïÿÒ(OB:8\fSE Lp(Cø^ N¹¬ gPJgêJfü ( ÿþfB(ÿþañ88\fEø\habL/afî.¸]¶Bg?<@ [JfüHhÿÿašOï SEgSDfÒ`žOïºLß|øNu?8_JHz8a=z\Eø`òvBD0g0@NCHh/?Hz+a=XOïRDQËÿàNu x\fmõT x\la=’N¹‚JÖJAo0BRa#:Nu48`ð x\fg x\la=jNù‚JîEú‚ x\fmRSx\fgJ08\fåHCø\h&q?<=HSaè\ gÜB 1WÃtÿ0gÎRBAò"Ka J@fì¸cvJg¶øcv`°Nuvÿ0gøRCHzU8cvfV—HrHz|a<ŽOï `ÜMS[f x\l x\fgEø^ CúðþN¹¦t8^ fBx]\Hx^ aXJ@ma`ðp Hx^?a \NuNù«.Nù©† x\foEø\lCúð² Z -f Aø^ f.` N¹¨^ g"HPaÂJ@m Hx^?a¼\`î _N¹¦Sx\fn¼NuUx\fm”n8^ fˆEú 0x^`N~Eø\p ZaB gd0h NCp0 0àÿfRVˆ&H/8\lHPa 0P g>·Èl föTˆHPg fö&‘×SH?/*ÿüa %s: %.*s a;ROï CJf²Sx\flŒNu x\ffóHHç x\la;‚&@vrP‹B@#?QÉÿøHSP‹Hz¥a; OïQËÿàLßNuhexdumpgrepcatmoreflagsinstall formatpsexitkillreadinstall tibunppgechosidegetcalccpmvcleansendcalccdrmdirmkdirrmcleararcunarcmeminstall product coderesethelplsrmarcAutoArcOffSwitchGetKeySwitchStatusError0<NA1ÀcjNu0`8J8cigaýÞp`0J8]­gp`&a5¤J@f?HRaþŠ\r2g–@ÕÁa5–JCfÄp\LßNuB@J8\õf xajTÀNuHç,O.NHxÈHxHx\ôaÿjJ@fþÜ08\öáX1À\ö8\ôg ‰g ˆg ˜g g¢Œ8\õ g g ¢g 6g Éfdv68\ö.ƒapJ@f¢ž1À\øHxÈ/0@NCHPaþòJ@fþdHxÈHxHx\úaþÜJ@fþN0x\øNC28\öaN°x\úg(aüÎpZr‘ÈaV`ÿ: Zf08\ü28\þ x]a>`ÿ" VgrJ8\ôf2<pV‘Èa".NLß@8NuB@BBSAÐBQÉÿúáXNuHç"PÅ`Hç"BE,O6<˜x8$H Vg 1Ã\ü1Ä\þ!Ê]àY?? OHxHPaý¸J@fýœ gFJgB— OHxHPaýœJ@fý€Y„.„HRaýŒJ@fýp J"aÿv1À\úHxHx\úaýnJ@fýR.NLßD8Nu08\øgaèBx\øNua6ja4/8]Hç>,OJ8\õfHzra->¼a3ŒOïÿÄHWa2Ö>€ga¶aû’Pø\õa_ža3Úaû‚`Öaýì8\õ Vg ’gº Zg² hgª 6g faÿh`– g Éfþ0x\øNCCúDBAXˆgÁIN¹‚ IJ@f¢B@ c¢ŽS@Oïÿì"OB @c Zb ÁQÈÿêBHQaþþaœ g0( @GgHx Orp6aþN` ‘Èrp aþ@aý 8V\õfÿ(aý 8\õfÿaÆ.€f¢Š0x\øNCCè08\öâHU@0ÙQÈÿüp08\öY€/?8\øaŠ\a 1x\ø Bx\ø8cvg /B§aâÎP`Œ ¢fZ0x\øNC( f—ËBA(g\ˆ c¢ŽB§B§BgGïSAØQÉÿüx?<HSa(O gVDOïÿò./hBop0( 0h NC@€f00ÿT@Aúêg´fø(`prAàXH@/@ a`¦ gB§?<QJ#füR‹ OpÛQÈÿüDaýŽà\AùJ¦/ / / >„ Or paüäOï aû¼ 8V\õfýÈaû® 8 \õfýº" ’Xp Oaü®aû’ 8V\õfýž0<’BA‘Èaüœ`ZBA(g c¢ŽOïÿì\ˆ$OBSAØQÉÿüaýBHRaÂ`* mfAøL2<paüV` ‡f ?8\öa2pT`¢a0a*|B8\õ.NLß|ø!ß]Nu o?( a2RT Üf Uˆ"o0) g  fÐNuNuNVÿ aø˜Hnÿ¦a/Š>€fHza)°B—?<˜Bg/.aa/`a~ºa0|aøVa)öpN^Nu o0/ Hç0OïÿÄ&O6HPa ÄX g„a (0h NC"K2TAàY2ÁBY2ü!HQ/a &X“ß2 Ap\A KaûRaú. 8V\õfBaú" 8 \õf6 a Z0h NC2\Apaûaú 8V\õf0<’BA‘Èaû p`p`pOï RAM Free: %6.6ld Flash ROM Free: %7.7ld ONOFF%%=%u PID size name %d %ld %s Kill: %s Shell%s %s stdinArg: filename(s) Arg: SrcFile DestFile %s:failed Arg: number %04d%08lX %02X ????%f%ld%sall#!PedroMNot a script! Line %ld: %s %02lX-%lX-%lX-%lX%06lX: %02X %02X %02X %02X %02X %02X %02X %02X %02X Free %d handle(s) USE LEFT, RIGHT, UP, DOWN, ENTER and CANCELAPPLICATIONS & MODEAPPS/MODE menu not implemented. Wait for next release.Help Keys=[] )[©] /[!] *[&] ->[@]ln(exp(sin(cos(tan(sin´(cos´(tan´(¨(½(¼(Ž(^-1ans(1)0.8106/14/2005BUSYSTOPBATT 2ND SHIFT 3RD ALPHAALOCKSALCKAøcºprÿ ÁQÈÿüHxa4XAúúZr1Á[İAf>0@NC ¼ CúüçaüAúú:r 1Á[ưAfCúüÑadAúú$J@gAøcºpB˜QÈÿüNuNù‚FRHPaH f(aZ6g åHAøc¶!Œa¢a g 1C 1| XNu?NCTˆ6gSCHçÀa˜LßJ@g AèQËÿê‘È6Nu?NCRh0Wa 0_NCJ@fSh‘ÈNu2(SAÂüAðNu2NC4´PlPB1ÄüX‚/?a\NuQB´PlæpNuNCTˆ0rCúNù‚KüLï ™f ‘mnNupÿNupNup ÑÁQÈÿøAèÿòCéÿòNuHPN¹·R40@NCTˆ2SA0ÁÂüÑÁ"_aÊ0B?aÿj0_`Ž /H@0|NC"HTH2SA°h g AèQÉÿôpNu ‰H@0<H@Nup“É \fCè fòRˆ f"HAø\DNuHQCø\Nr \gÀQÉÿôBAø\N"_NuHç`ÀHPadª?aèp0"_H@“È0 LßNup/ Üe âc óg øgpNu o"oHxHPHQa HOï Nu o"opÙWÈÿüNu o"opÙWÈÿüBNu0oNC"o g p0/H@“È0 Nu /J€gH@0@H@NC"H2)ÂüXA²@cÐÀNu‘ÈNu oCúúEa vJ@WÀH€Nu?6/?<B§a,\Çh ax fô6Nu//a”.€ga”0h a'¦/ °fB— Nu"oJ!füR‰HQa4J@gZ"W0|aý\p"fJHxa ö>€g:0@NC ¼ 0|aýb g"opÙQÈÿü ü€0×0|aý˜`a pBW0TXNu o0h NC0(Nu"oJ!füR‰0|aüæp"g Iaÿ D@T@Nu4/f4"oJ!füR‰0| g aü² g\ h pÀoga p`Ha ’`BCú ŒpÀogCú X0|a P0|NCTˆ4SBmHç À0h N‘LßAèQÊÿì0|N‘pNu"oJ!füR‰0|aü> g"_ gpgÁQÈÿøBNuOïÿœ"OBØfüB§HiÿÿaOïlNuBg`?<//a \ fûTNu oaû ofAúöQHQ"H0|aùÌ"_ g0h aù¾Nu"oJ!füR‰ oJ füRˆaÎ fûNu oJ füRˆ"H0|aùŠ`úìpÀo1À\b @f&"o gJ!füR‰ g0|aùZ g0h `0|NCTˆ2aú¨JAg!À\:NuB¸\:‘ÈNu‘È 8\:gð x\bfHaû&2( A€g:0h NCTˆ2aúj!À\:JAgNu x\bfº 8\:aùà@!À\:aúè g¢Nu@!À\:aúÖ gÎNu‘È 8\:g† x\bf^aú¼2( A€gP@mÿjaú¦0h NCTˆ2gSAÂüÑÁaùê!À\:JAgNu x\bfÿ: 8\:aù^!À\:aúj gÿ$Nu@mØ!À\:aúT gÌNu 8\:g"HA Agaù&`ú6Aúô¡Nu?/HzõªHx\OajŠOï B8\NAø\SNuNu08\dR@1À\d?aÒHPaúzJ@f¢žaâ W\Nu08\dg?a´BWHPaüSx\d\Nu?68\d–oaÚQËÿü6NuOïÿœ"OBØfüHiÿÿa,OïhNu"oJ!füR‰ oJ füRˆ` o/aø¤Aúóó` o/aø”HQ"H0|a÷b 0h f aùè0@J@f¡J6aüJ@f£Þ"W0Ca÷: f40Ca÷Z f¢ž"WpÙQÈÿü üBX0Ca÷’0C"Wa÷ aøl.€` aød.€2( Ag£Ô?( Bh aBT &Nu /aøÞ` Bg//aüÞ\ g0( @˜f?( a÷vJWgaTpNupNu o0( @g,0( @f"?( 1h Bhhûï h aÆTpNuBg//aün\r fpNur0( @gð1h Bh h hýÿ `÷Œ o /OïÿêgBWHo/aû°P IHPa¢.€g\0hNCp0T@/a RX4a÷ìJBf1h Bhhûï h B—`1B 0hNCp0R@"H0BNCÙQÈÿü OïNuJgôa÷.€`ì?<B§aü \0( @gaþæaüL fêNupNuBg//aû|\ g:0( @f0?( // aýÔXa÷N g1_ Bg//aûH\aõòpNuTpNu oaúDJ@g"a€ o"o @lCé“ÀBØfüpNupNuNVÿÜHx /. HnÿâaX|#ÿëHnÿëBg?<@Hnÿì/.N¹‚X.ˆaN^Nu0/ @@g0 @@g @@g¡//aýXNu//aýaöŽX1o Nu o /8]®/8]¶!È]¶ ÚbaD’`p0/‘ÀRˆ!È]®aEÞ!ß]¶!ß]®?//aüÄaö@X1_ NuHç>$o,8/0BgB§a|¸\6g>|4† DfAúñ±a6B§Bgaúx\HPHx\DaõšX _J@f Dg4†aaú¬ fÜ0Lß|øNu?HP?<ÿÿ?a|†Oï RFJ@gNu>ƒa XBC`Ò o"o / g³ÈbÑÀÓÀ!S€fú oNu o"o / gìt"ÂBg" ÂBg(ÙS€g(`" ÂBf"è‰gSA Ù Ù Ù ÙQÉÿö@gÙS€fú oNu o4/ / g<"AgÂS€g.áI4HB4"è‰gSA    ÂQÉÿö@gS@ÂQÈÿü oNu o4/ / g S@´WÈÿüSˆg‘ÈNu o"o / gS€± VÈÿü !H€Nu oa o4/R€`¾ o JfüˆD€S€Nu o"o JfüSˆÙfü @Nu o"o Ùfü @Nu o"oB@BA` ²g ANufòH€Nu o"o`( @c Zb @c Zb ²gpNufÒH€Nu o"o"/ B@Smg°VÉÿøS‰ H€Nu o"o"/ Ùg Sfø oNuBSfú`ò o"o"/ JfüSˆSmÙWÉÿüB oNu"o$/g Bg²gføR‰`ê ¯Nu otg"og$²gföRˆ`ä BNu"/ A/ Jfü° g²ˆfø‘ÈNu"o$/g Bg²føR‰`î ¯Nu o"ot0(1(g R‚²gðJfê‘ÈNu0/Aù‚ê @bJfüQÈÿúNu /g!À^J¸^g."x^g ogô°g `ö x^B¸^Nu x^B)ÿÿ!É^Nu‘ÈNuAù‚ö ü} BXpÿAøc¶!È]X À0<ÎB˜QÈÿüNu /a J@f¢žNu //aJ@fa6 aXNu^€rþÀAù‚ö±üdX"4f°cAðú`è’€ bÐ`Cðú"ÁBY!@ÿúHPa. _J@fB`` 1@ÿþåHCøc¶#ˆäH"(ÿúâ‰WBXSfúNupNuAøc¶0<ÏJ˜gQÈÿú`ê@ÏD@Nu o0 ` o0gÒBP`0/gÈåHAøc¶"p" gºB°³ü€bN2!BQ$!åI°Af.Aù‚öt±Éb g$ÑÐ`òJ‚g BJhf Ñ"H Añ±üd Jhf Ñ‘Nu0o0gNC`€Nu0oNC0 @€±ü€cpNu0o0gNC`ÿNu0o0g NCh€ÿþNu‘ÈNu /göT€aþ†‘È?gaÖ0×TNu0oNC±ü€mp0T€Nu (ÿú]€NuAùNup0/åH x]X pNuAù‚öp±üd"o6JXfÐAðú`æNu oCøcºp4<ÎR@±ÙWÊÿúfNuB@Nua"<ÿð°cÃ@Nua*Aù‚öp±üd"oâJXf°b Aðú`â]€NuAù‚ö`ÑÁ±üdZ"o¶Jhfê"Cð³üd@0)f "o–Ó`âg I`Ä$ âˆ0ÙS€fú Bh"B\‚0)åHCøc¶#‚`²NuAøc¶p4<ÏJ˜fR€QÊÿøNu ¯ÿðcB@Nu$/0/f `ý /6^‚rþÄ0@NCB@±ü bª]ˆ Cð°‚ltJif$"Ò€’‚m lÔrCð( ‚Jgt"ÁBY`nB@Jhmj aüÂJ@g`0CNCCèÿú0@NCUˆ"Yâ‰0ÙSfú?0aýT0Aøc¶åHåK!°0B°`$Jif"Ò€’‚Cð("ÁBY ‚` ‚" €lè0/&Nu//a XJ@f¢žNuaþ† /^€rþÀAù‚ö“ɱüd"4f°b"HAðú`æ$ gü” I")ÿú’€ bÐ`AñBa#!@ÿúHPaür _J@fB``üb@€1@ÿþåHCøc¶#ˆäH"(ÿúâ‰WBXSfúNu0oNC0 @€gpNu/ aÿ^XJ@gð0@NC"â‰0ÙSfú?0/aü@Aøc¶02/åHåI!°B°0/NuCøc¶Aù‚ö±üd.4(g åJ$1 ]‚±ÂfP$ ‚cF ‚èb>f8ÑÂ`ʱüf,pÿ"²€f$4<Î"g ‚õc ¿ÿÿb AfQÊÿäNuAúå Nù‚FRa`€aB3ü €`B9pü\"Bx]AúÔ!Ð\>aæ1ü€]\Nù¥ô8\"ï\"Nu8\"Nu!üL[À1ü] 1üï\1ü\ B8] Nu!ï[À1ï \ 0/1À\æHR@1À] €¸[À@À] Nu o!Ø[ÀØ\Ø\!Ø\"Rˆ1Ø]1Ø]1Ø]Ø\'Ø\)Ø\+Ø\-08\`² o ø[Àø\ø\!ø\"B0ø]0ø]0ø]ø\'ø\)ø\+ø\-Nu08]1ï]Nu oHRCø\&Eø\.B@ré2ÀQÉÿö$_NuAø\20ï0ï0ï0ï QˆNu oBB‘“YˆNuB¸\2B¸\6 oØ\3Ø\5Ø\7Ø\9Aø\2Nu o"oaLJ@g> o"o°d)ÿÿáH°d)ÿÿሰc)ÿÿሰc)ÿÿ o €pNu o"op²)b²)b²e ²)epNuŸ\^ŸcŸcŸHç oaÿ"o B@BABBBD˜AlDD6/aRAQÌÿúAø\.aþÒLßNuHçø@²x\(m²x\,nº´@nÁB88\&´Dmª°Dl088\*°Dnš´Do4"x[ÀÂø] ÓÁJ8] fˆx¹BÈBèJrÂèH”f Ð@ÒÀpÿØAéhâhSmg ±Q`XF@ÁQ`RQ`NÐ@ÒÀpÿâhSmg.±YpÿUmFYQÊÿüéh±Q`,F@ÁYpUm2ÀQÊÿüpÿéhF@ÁQ`YpÿUm2ÀQÊÿüéhQLßNu”@8æLÒÄF@Jg. gÑSBkÜQÈÿøR‰QBm,PÙ`øQSBkÈQÈÿøR‰QBmF`ø‘SBk´QÈÿøR‰QBmB`øpPB`´Hçü€°x\&m\°x\*nV´AnÁB88\(´DmH²Dl288\,²Dn:´Do4”A8a8:8] BÂSCmn …ÐÅQÌÿú`µÐÅQÌÿú` FÅÐÅQÌÿúLß?NuHç 6/ :/"<8] Y$OHR//$//$aý~J@g” x[ÀB@æHBB*BD*˜BÄÆÔ@ÐÂBA*æI’@mhJCl2DC˜CcT™*0ÀÆÐÀ0ÀÆCð0HçÀÙS@lúL߯’ÆSDfè`(˜Cc$Ù*0ÀÆCð0HçÀÙS@lúLßÐÆÒÆSDfè?HRHRaýpOêLßxNuHç>(o,&o08/4:/6Q$OHRHTHSaüºJ@g’%TJDl ™*™*`™*dB*™*dB*HjHjHSaü€J@gNÙ*Ù*HjHRHjaüfaJa >g.?HRHRaüÜ0GNC?<HzüÀHPa(D??N¹øŽ?aöP` ?HRHRaü®OêLß|øNuAêB@BABBBCNu1ï]1ï]Nu?8]?8]?8]?/ 1×]?/ 1×]aOï NuHç 0/2/4/ 6/" x[À4x] ´@lÅ@ÃC8 ÈÁ<æNØFÐÄ<FFF:š@8 >žAdDDDG4/$g|SBfî¾Ed:46–EÖCÞGšGDEj ÐÚGjSFl|RHQÊÿð`H ÐÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj ÐÞEjÐÄQËÿö` ÐSFl|RHÞBkêÐÄQËÿîLßøNu¾Ed:46–EÖCÞGšGDEj ÚGjSFl|RHQÊÿð`H ÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj ÞEjÐÄQËÿö` SFl|RHÞBkêÐÄQËÿîLßøNu¾Ed:46–EÖCÞGšGDEj PÚGjSFl|RHQÊÿð`H PÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj PÞEjÐÄQËÿö` PSFl|RHÞBkêÐÄQËÿîLßøNuBx]lBx]Bx]Bx\$1ü€]\a ü]`ät x[À08\ R@Àø] `ð0/2/°x\&m°x\*l²x\(m²x\,la(48]`Nu0/2/a4/g SBgPNuÐNuNu x[À4Äø] r³@Â@æHÔ@ÐÂNu0/2/aÞVÀH€Nu0/2/4/ o Hç>8\"Sg.mv| xÿBIù‚zDÄÆØÂ`(Iù‚tDÄüØÂ|xÿæ¬áœ`v|xÀIù‚lDçJØÂBGÐCÒF°Go²GoºC’F°Gn®²Gn¦YˆBG(²Gl’GÜA˜Á24ÔF(”GoœBRFzÿ4ÔC>PGGø4GBG°Gl > žzïmSEBG(´Go> ž(?zïmSEFEÊ_ÐC>èHÐ@Âø] ÐA"x[ÀÒÀtG”GÔClBTI>/6`<‚¬TÖäfŠ@®‚tD‚lD‚zDPedr0/2/ o4/ Hç>><ð BbžJ8] gZBÔB4; °Kû ¬zÿGù‚zDxÿBB@g" gQGmÀü Ió| N•QBlàBTI`ØSˆLß|ørpNuGù‚lD(<ÿÿÿB@gâ gÜ]GmØçHIó|N•]BlâBTI`ÚGù‚tDB@g¶ g°ÀüIóžCm¢xÿæ¬áœ|N•”lØBTI`Ð$I BoUJpå¨F€Á’ÔÎQÎÿòNupåhF@ÁRÔÎQÎÿòNu$I BoUJp娒ÔÎQÎÿôNupåhRÔÎQÎÿôNu$I BoUJp娱’ÔÎQÎÿôNupåh±RÔÎQÎÿôNu"å¹$I BoUJpå¨Ã’’ÔÎQÎÿòNupåhÃRRÔÎQÎÿòNu"å¹F$I BoUJpå¨F€ƒ’Á’ÔÎQÎÿðNupåhF@ƒRÁRÔÎQÎÿðNu$I BoSŠQBpåhÀEF@Á*àHÁÔÎQÎÿêNu$I BoSŠQBpåhÀE*àHÔÎQÎÿìNu$I BoSŠQBpåhÀE±*àH±ÔÎQÎÿìNu"å¹$I BoSŠQBà™FE‚EFEpåhÀEàYÃàYÃàH"ÔÎQÎÿæNu"å¹F$I BoSŠQBà™ÂEpåhÀEF@àYƒàYƒÁàHÁ"ÔÎQÎÿäNup8\"ÐÐSlCù‚tDBA/Âü1Nu o2/Cù‚tDtpSmgt`ÐBJfúNuÄüÐ1 BBfòNuHç`À8\"aÊLßNu oHç",O$Haó@BgHzôêHzôæaôîAúôâaóðvp4<ïr]aõ g"BWaó8>¼HR?<^BgaüT>„aòèPø]Aø\.aó´.NLßDNuB@J8]g6Oïÿì OaóZB8]‘Èa€Aø\Da.8\#?aÂBWaöT OaòüOïpNuJ8]gXNu oaðCø\Nrg `c zbàÀQÉÿè`ü QÉÿúü BBgaòN>€?<Hx\N?<^Bgaû Oï aò2TNua˜Bgaò&>€0/ @l(AúÜGS@m AúÜ0gAúÜ/?<HP?<^?<‹aû\Oï añîTNuaÿTBgañà>€0/g ?<Sf>¼HzÛô?<^?<‹aû"Oï añ´TNuaÿBgañ¦>€0/ @ b(Ð@rÿRAâHfúÒA2;"?<H{?<^?<(aúÜOï añnTNuÛ™Û¥Û´Û­Û¼ÛÈÛÂNuAúÚŒ`þ oB@BABB”@RBB@AR@ o0À0ÂNu opBABB”@æJRBB@AR@ÀÂX@NuHç>Y$OÀÁÂÃ$O OaÊ/aëš8g0DNCHPHRN¹õjOê00@NCLß|øNu oañš o4/ Hç028:¸@lÁD˜@ºAlÃEšAvÆBaOìg S@SATDTEaOÚLß8Aø\.`ñPHç0BE6/8/$oOïÿô&OAëø\'ø\)ø\+ø\-SEm€Aø\NüF0/ 0ÀB?/ Hx\N?/?/aù6Oï aïÈTONuHç> o8að?/€Cï.Eï2Gï6Múa að`TAø\.aðfLß|øNu4268]`ñŠ4+´jlÇJ4*´ilÅI4+´jlÇJ:šQHÅá…2+’igø‹ÁHÅá…<œRHÆá†2+’jgtÁHÆá†>žQHÇá‡4*”ig˜ÂHÇá‡SASB:A6)0H@B@"HçðH@HAN–LßЇ҅RCQÊÿêHçÐH@HAN–Lß 4 І҅RCHçðH@HAN–LßQÊÿêNu>žQHÇá‡4*”iÂHÇá‡6)0H@B@"HçðH@HAN–LßЇ҅RCQÊÿêNu6)4SB0H@B@2HABAHçðH@HAN–LßÐ…Ò†RCQÊÿêNu6)042°BoÅ@´AoÃB°BoÅ@NÖHç> o4aîü?/8aîä>€Múþ"o.Eé&o2aþŒ"o2Eé&o.X‹aþzaî¸TAø\.aî¾Lß|øNuN@Nur 8]ecrÁ\â Á\HçÀ8\8\À°g:R`HçÀ8\`HçÀ8\8\ÀgSÀ\€ 8]efïÀ`LßNuNDNu o"8[´!È[´HÐüøAè, ø[¼ ø]¶ × ÁB@Nu x[´!è8[´Nu0/fpaà"8[´f aO8Nù‚F& ALØüøX!Ø[¼!Ø]¶"X!Ð[´NÑp4/SB BdÄüAø[ÈBp B° B° pNu0/S@Aø[ÈÀü 0Nu0/aêJ€WÀH€Nupÿ4/SB BdÄüAø[È 0 !°  Nu"o `“Ép4/SB Bd*ÄüAø[ÈJ0 f /!€ !€ !‰ p" gp€ NuB8]¬`Pø]¬Pù`B8]­NuB@8]­Nu1ï]Nu1ï]Nu08]&€8]­NuHçpÀB@NA&8^?<aÿRaÿ@J@f>aþ*aɼJ@f6¶¸]f@J8]­f0Jx]&gÚp08](Bx]& @ g@!Ã^@÷ÿTLßNuNE`²aËP`¬aÿl0< `Ü 8]&é˜8]gpãh?aùôT`†8cvg¸ x\h“Ép rÿN¹‚Iâ`ÿl/B@NA&8^aÉ,J@fH¶¸]fRJ8]­fBJx]&gæp08](Bx]& @ g !Ã^@÷ÿ&Nu8cvgì x\h“Ép rÿN¹‚Iâ`°aÊ®`ªaþÊ0< `Ê 8]&é˜8]gpãh?NºùRT`„Bx]Bx]&Bx]Nu1ï](Pø]&Nu0oNCp0AðNuB§HzÔƒHzÔuaL Oï Nu oB˜0üBXNuAø^ `Aø^NVHn /.HPHy©†a?N^Nu0|CúÒ a& g0h "Ja g0h NCp0 0-ÿg‘ÈNuNúÕ\RˆNu 0f( (xf Tˆprg0  c'éˆÐ`æNuprgö0$çˆÐ‚ЂÐ`êB@8] B8] J8_ gaNuaêPø] Nuaâ0/À] NuHçà€F8_ 08]28] @˜b4 A\b. x[ÀZAÂü4æJÒBÐÁ@2<üài0àHt±³AèÿàQÊÿöLßNuJ8] fªNuNqHx¼aĘX @g AùKNù‚FR?<aÂT gæ!È]®!È]¶¼éÐü»!È]²Nu x]¶p0/ÑÀ±ø]²bBNu0<å` 0<Ù`0/ x]¶Rˆ±ø]²b$€!È]¶Nu x]¶Tˆ±ø]²boÿÿ¯!È]¶Nu¢žJ8]­g ´ o"o ˆ"x]¶$ Ô€´¸]²bÜR‰RˆS€ØQÈÿüS‰!É]¶NuB@/°/e/Nu"oaR¸]¶ x]¶¯ NuHQarHPaœPNu"oaî"oaèR¸]¶ x]¶¯ Nu o"o ˆ"8]¶‘¸]¶’‰/HiHha¼ZP Nu oHPaHPaÊPNu oBg ågRWa `ô0Nu og Sˆ -bƒaû¬.ƒHR"x]¶Hia¸ð>‚a¼î׸]¶>¼-BgaûÀLîÿôN^NuHR$oBgaû’B@g>€aû†`ô>¼-Bgaû’X$_NuNuNu68kL#/Òêz~¾Ð†p¦,V˜¾ì@à0šÀâèð 80R§¤ô§x€¢q^qªrvr¨r®rÊrþ°sh‚®sŒÌ"`¾N`½Œ`Ö:`»l`¼Ü`½`¼`¼‚`¼¦`¼Š`¼®``W<`~`"x`Éô`ÀR`ÕÞ`Ǭ`±š`n`¸ê^ ^^ \f\h[¸NÐpedrom¤î¤îNu1ü^ 1ü^1ü^ Nu/ /$H2VÀHƒ0@f:g?(N¹b–0T@?Bg?*N¹c¸Pg?*N¹a˜BjTBR0&$_Nu/dev/nullwa+NVÿìHç<((I&JKé bg Jg )bf|`BFJSg KNºÿ`BkJFgp`p'@BkJ„fz`†Hzÿš/N¹^àPJ@f( ag rg wf``6<`26<`*Hnÿì/N¹‚*Bg/N¹WP$HOï°üg&0( @‚gHzÿ&I06C@@@2€z`/ H€?Nºþ„\J@m0 D°LeæR…( <¾Ec$D`êCÿ¿ÇS0LßøNuHç0$o2f„f A4`t0*l Bj@ÿ`hgN¹z6?N¹ÃÞ0T`LGúýÆ JN“J@f:?*N¹b– *0BCR€%@T  f*f JN“J@f Rª`pÿ`0Lß NuHç8(8@>&I06C@@@2€z`/ Nºÿ>XJ@mÀ0 D°LeêR…( <¾Ec$D`êCÿ¿ÇS0LßøNuHç0&8&I$Hpÿ`0ü `< @fg¶ŠdSŠ` @ f+gØÀ gSDJDo / NºþÆXJ@nÄBJ@l ¶ŠVÀH€HÀÆ€ CLß Nu2fA0`JhlpÿNu2A€1ANu/ $H0g gN¹{:BjB@$_NuPÿïNu0@Nu(gp`p!@PÿïBhNuNVHn/. /.HzüzN¹º¾OïN^Nutemp%04x/ $H°üfB8^pEø^q08^z2RA1Á^z?HzÿÔ/ N¹Ã®BgHj N¹WPOï°üfÐ J$_NuNVÿìHnÿì/N¹‚/N¹ZjOï S@N^NuNVÿØHç &Hnÿì/ Eù‚N’(HnÿØ/N’//N¹[ÌOïS@LîÿÌN^Nu]d d€RXQTYV Ð@‚lDcr] ]X 0¸¸(·R·¨·Ð·ø¶è¶º¶"ºµòµ4L‚tD‚zD µ(¸ººº* º€B¸]ÔB¸]ØB¸a>Nu _a´Bx]Üa ‚aÌaË208]ÜgaŠaÄ@NuHç~IúT?a³ÊTOKèN”AîÿøLß~þNuHç~Iú4*N`èHç~Iú¨`ÒHç~Iúž`èJnü¢f=@ü¢Cîÿø JpØQÈÿüNuHçÿøMøa:<Bnü¢OïÿÄHWaÉ–J@f"aaJ(f aÉ¢Oï@Lßÿ0.ü¢NuOï@a¢aL I`FHç Jhg$Shf h Eè:ga> gaÚEê SEfîLß NuHçÿøMøa:a¬"g–a¸?.a²Œ(H&H<`J+gJkf ~ k aDGëQÎÿäz&L<`HJlf8 ,g @a^>€ga±œ , €ÿÿ°¬g @a@>€ga±~Iì` REp&ÜQÈÿüQÎÿ¶>®a±úT<…aPLßÿ0.ü¢NuHçÿøm€ÿüaú g Rh*h `” -- €68kg ÒEî.»î g MaÆaz$HB® Jg a" g //<RVaÜ#_"Ÿ#MB© B©3|B)JgB©#M »ü c&-fvÖmÿþ/a³˜>€a±š"HÝSCfúX*Ha #M ™Ì0-gEõ/a³l?a±n(HBWHPa¬ÔOï ar#LGí:gH0Àü $K×À* až f ÁMaþæÁM"HÒé24v6¶Ampaý‚ a|QÊÿìEê SEfÂ:g$yÈ:v6¶ªÿüm aVQÍÿð:g,-g Eúü:v6$åJf B¼c a&QÍÿæa 0-gGõa M~a$a¸PéLßÿNup0gø°mÿþbf`î Hçÿü*HGí:g:0Àü $K×Àa’ h "HÒé24v6Öƒ618(؃a˜QÊÿìEê SEfÐ:g$yÈ:v6å‹(28arQÍÿò:g:EúûL:v6$åJ(2 -fJBfX„g Ômx85(JCm(a4QÍÿÎ( a,0-gGõaˆ((aaZLß?ÿNuap0gÒÙu`öa p0g Ùµ`öJgD„NuMøa:JVgö|Møa:¼Vg.aš i 3|p0(g (ÿ g Pè ?N°<RF`Ê|aj*i 3|`üLAúòˆ»ü¤îgaNp°Vg»èg»è g AèR@`è‘ÈNu?.ga®TBnNu0gêÀü/?.a°\J@f¢ž=@?.a®äT0ÀüCðNu?HRHzòaŸ _J@gaÖ6gHPaŸ _J@g AèSCfì‘ÈX6NuHçÿ|*O~a g~ h ¶(cz`p0.ü¤a ga† fdOïÿöHWa¡H _ar fRAúFah fHað&H>€g6ažJfa­B`(a®:TˆPî(g" g·ü ca­Aë`0aúz‘ÈB.-H CîpÚQÈÿü.MLß>ÿNuOïÿìHWHPabn?<HPa¢ü>¨ HPHRažPJ@faJga­ÀTˆ` a£. fØ‘ÈOï"NuHç`À~?/a­žB@J_g"r2 0óÿf"(à‰ 68kf~¶(SÀLßNuHç(OBg?`.Hç(O?<B§a¢t?( ga­J ¨68cAgTa¢° fâ0g„a¬ÖKèvÿBD-Gí !fV‹HSHRaZPJ@gJfüRCQÌÿâa¬’T`¾0mê +!ÿýga@8—Ë`*x#áLˆ#Ø&DvÖS/a®Ò>€ga¬Â"KÙSCfú8Ta¬L0 K.LLß8NuBACíAéJfüQÉÿú"AÐÁ?HQa J—PfB@NuHçÿþMøa:~Hx a¬$.ˆgv&H&îüž&ï@-Küž$oD/Jaý¦&ˆgD*HaøÀJ@f:& M0/HaP g"/HDAú/HHXLßÿXNuQHçÿÿMøa:Y&nüž*Saù&nüž/c@-cüž.‹aªÚ~X/G@LßÿNu/"(à‰ 68kf"Ðè°XlHÀÐ@00Ð @"Nu‘È`øHçÿþMøa:~Hxa«^.ÈgJCï< îüž Ù-Hüž Y0a¨ gEúU‰"Š#LßÿTNu]HçÿÿMøa: nüž/`<-`üžHPaªB~X/G@LßÿNuHçpp&Gù ¶‹bƒÿÿ"zö¦"QX‰4<Îp$Y" g¶Šm"*ÿúg®l]µËmr2TÕÁ¶ŠmR@QÊÿØB@LßNuHçð`6?<B§a \¶h g a J fò‘ÈLßNuHçÿ~Møa:$Haü g*Ha÷2 MJ@g‘ÈLß~ÿNuHçÿþ*Ha÷šLßÿNuNL4@À@àHû `FÂNuHç>Møa:B§Bg?gÄa©Ü>a©þKèv6 0ó8f ¨68kPg ¨68cAg`Êx€`Š0aÿ0aþÖ?.ü¤=@ü¤aö’J@g=_ü¤`Ú/.üšOïÿØHUBg-OüšHx\h?8\fp0- gNFNµMøa:.nüš(aCÄ6*_g &O [NSCføOï(-_üš-fa´taö¬=_ü¤`AíJfüCîpØQÈÿüB.TpaüÜ>€gÿRa©v-H 0aþþ(a¨h`ȱü dJGfÿ,0aþ`$g2aþ/B>€a™Ê/@B—a¡².€gÿ/@a™Î>¨ è `*»ü m"Vƒ.ƒa§T>€gþÚ?@a¨ú0íÿþWCÝQËÿüa¨”p0HpÿHPa[š _XNFNNqNq(a¨d.¯ga™j g ¨ ( g.ˆa °` >¯ga§žPOaÁ:a¿Ü Lß|øNuNu"x]Ôp4 B l åJ#ˆ RQB@NuNu-fJJfF|HFœºôBx8-ÿþIõH  €dg" €tg €f0-ÿþ@ñÿ @ÑüfB•`•T»ÌoÌNusystem0123456789abcdef@0123456789ABCDEF0X0x0b0-+ Oïÿ¸Hç>&o|(o€/ot>Î`´ %fBB`//xH€? oDNRN\`”&H K  gB #g6 +g -g 0g0 ^gÖ zgÐ |f$`ÈB `ÂBÿïB`¸B`²B`¬B`¦Bo4 *f ?\4Aë`$0/4Áü ÐA@ÿÐ?@4H0@ÿÐ @ cÜ0/4l D@?@4 BBo2 .g&H`r&H *f ?\2Gè`L -f6Gè 1f?|2Gè`,?|ÿÿ2`$0/2Áü ÐA@ÿÐ?@2H0@ÿÐ @ cÜJo2mB`Bo2 lg Lf<F@` hg Hf <F€`<F€B¯L/|ºˆ6Jgœmx Emp Go Rg Xgd Yg bgt cg< dg˜m4 em, goØ ig| ogH pgè rg¸ sg" ug@ xg yfæ`–S‹`Ž$\/ N¹^¤X(g 0o2±Àl(60/4D?@4f2gz0`z J@o"ÜÀ`//xH€? oDN\0/4S@?@4lâÜÃv`//x28H? oDNRƒ\¸ƒnæg0/4oüÜÀ`//x?< oDN\0/4S@?@4lä`Ø/\L/|º‰: <ºšf <ºˆ/@6?|2F`~/|ºœ: <º­`/|º‰: <º°` <º³` <º¶f <ºˆ/@6g/\L`Np0/@L`Dg `0HÀ"lD/AL"<º¸J€m"<ººf"<º¼f"<ºˆ/A6gÞFÿï`ÖFf?|2 "4/@B/AF?BJ <ººf <º¼f <ºˆ/@6`Ž00/4S@?@4f2gx0`x J@o"ÜÀ`//xH? oDN\0/4S@?@4lâRN//xHƒ? oDN\gX0/4oPÜÀ`//x?< oDN\0/4S@?@4lä`,?F0(/L2/2?o4*KïB/o6, o:0@g?|(`?A( XgB bg0 dg" ig og$ pg$ ug xf¨`EïP`ŽCïP`VCïP`$CïP` pÀ„ðèŒJ„fò`>0ÀæŒJ„fîAïP: šHg:SA?A2`00ÀâŒJ„fîAïP: `.Hx /N¹‚LðP0ÀHx /N¹‚LþP(J„fØAïP: šH`â4U2 AÿAÀ A?ÿf$|fP|eQ|dR|nS|uTz`¨ Aàf |0Pz`– A f|¾P4 l|-Q`|+Qz`r0R@ @b  ff˜$-BDBE`Jf pÀ‚fB`0€PPRE~èŠRD DoÖ(-BB` JfpÀ„g0€PPRE~èŒRBpA°BnØJg¼.PPRE`0€PPREèŒRB Boæ6 lÌ`ÀJAmB`DAtCïPv HÁƒÃ H@0ÀJAfìAïP0 HJg¼-PR@¼•P2RA$-BD`Jf pÀ‚fB`0€PRAzèŠRD DoÖ(-tJfpÀ„g0€PRAzèŒSBfÞJg¼.PRA0€P:RE0 l¼¯PPREJ„f JEf|0Pz>/(žE0F@râ`Î@6ÖE//,N¹^¤XÖ@8/*˜C0@f6g4|0`4| JDo"BC`//x4 H‚? oDNRC\¸Cfè6xÿ`BC$o,`//xH€? oDN\fì0/.–@ÖJSCf4g:|0`:| JDo ÖD•Ê`//x2 H? oDNRJ\¸JfèxÿJGoÖG•Ê`//x?<0 oDNRJ\¾Jfê>ÞE`//x7PTH‚? oDN\SE0R@J@nâg JDoÞDBC`//x?< oDNRC\¸CfêÜÇf÷J0Lß|øOïHNu0/"o QÀ"ˆNuNVÿü N!.NqNqNqHn/. /HzÿÔNºöð nÿüBOïN^NuHç8/?N¹r<68]:8]T D f09‚HÇÀRCÇÀ1Ã]p `Ê D fx ` D g2Ò@B@9gôR@°Al†8\"HƒÖC\CÚC2ÒCB@9gõ°AlBg?HygòHygòN¹iÚšCOï 08]\R@1À]\ @ o0?<N¹tT&8\hN¹z CN¹‚IÆJ@gêBgN¹tBx]\T D fB@`BC?<???N¹o60ÐFP1À]1Å]0LßxNuHçü4ÔDSBR@a£NÒEa£HS@RB’E4ÔERASBa¤bÐDa¤\Lß?NuHçøÔ@ÇDa£RAQÌÿøLßNuHçÿþxaà8:va¤R@RAUDUEa>T@TAYDYEa4$g*4vxa¸T@TA8\"B8\"?<HP??aª Oï Ç\"LßÿNuHçü4ÔDa¢®ÒEa¢¨’E4ÔEa£ÊÐDa£ÄLß?NuHçÿþxaÿ`8:vaÆ$g,4vxaÿJT@TA8\"B8\"?<HP??a©°Oï Ç\"LßÿNuHçÿþxaÿ8:vR@RAUDUEaÿv$g2T@TASD8\"B8\"4a¬¼âHâLÔD”@?<HP??a©XOï Ç\"LßÿNuHç÷þÔ@æHæJ”@HçðRBRCÄÃP‚/aštX8LßJDg,0DNC0À0Á0Â0Ã"x[ÀÂø] Ò@ÒÁ&IOïÿÄ$O?<U?<›?<?<"OHP?<xHQHRaÎ.JJ@g4HSHRa èa€>¼ a¬øPa²$ @ g @g`î8HRa*X` KaªòBDOï<0Lß|øNu?/aHPHzƒ%8cvf aÿ`Oï Nuaª¾`ô0/ @ l"Aú„oS@gJfü`öHxa2HPHx]àaûL _PNuAú‚ã @(fAú‚ç @ŒfAú‚ç @´fAú‚ô @¾fAúƒÚ @fAúƒ @JfAú‚Ü @šfAúƒÜ @lfAúƒÆ @ŠfAúƒ @žfAú‚» @ fAúƒÄ @ŽfAú‚® @¢fAú‚« @¬fAú‚® @ÀfAúƒ^ @ÊfAúƒ¢ @ÞfAú‚± @‹fAú‚Í @ŒfAú‚Ò @fAú‚Ó @ŽfAú‚ã @fAú‚Ê @fAú‚Ü @‘fAú‚Þ @çfAú†ÿNu o(o Nu o1oNu o/ @À\"Nu o"o2¨ "o 2¨Nu oB@((R@Nu oBh Bh0gRh RhNu o1o1o 1o 1o Nu o0/Ñh0/ Ñh Nu o1o1o Nu oB@((R@Nu1Ù]1Ù]1Ù]1Ù]p(H@(Ѹ]Ѹ]NuBB(ÐB(ÒBNu o!È[¬è\"è]0(2( aÒ1À]1Á]HPAèaœr _!è0[ÀB@(BA(Nua›’ x[¬(Nua¨ÐoÒo a¢Îaàga–ÐoÒo a¢¼Nua†ÐoÒo CèBB°Bm²Bm°Bn²Bna¢ð`›4p`øaÿR?(HhHhaœØa„gaœÐOï `þ†aÿ.?/ Hh"oaþèAø]"Hr0lB@ @ðm0<ðÀQÉÿìHx]aœŽaÿ:gaœ„Oï Nuaþä?/Hh0/2/aþÀ??0/2/aþ°??0/2/aþ ??aª®aþêgaª¤OïNuaþ”Oïÿð?/ Hh"o"02aþl?@?A02aþ\?@?A"o02aþH?@?A02aþ8?@ ?A HoHo a«Îaþvga«ÄOïNuaþ ?8]Hh?/?/2/0/ aýô??aEÐaþ>gaEÆOïNuaýè?/ Hh"oaý¢Hx]a¨Ðaþga¨ÆOï Nuaý¼"o02aý 1À]1Á]02aý1À]1Á]?8]HhHx]aCúaýÊgaCðOï Nuaýt1ø]]1ø]]0/2/ 1@1A aýD1À]1Á]?8]HhHx]aC®aý~gaC¤Oï Nuaý(1ø]]1ø]]0/2/ Ðx]Òx]1À]1Á]?8]HhHx]aCfaý6gaC\Oï Nuaüà?8]?/HhHygòaœ8aý gaœ.Oï Nuaü¶?8]?/HhHygòaœÒaüâgaœÈOï NuaüŒYHW//HhaùP ga§P`˜FaühY//Ho//HhaøÖP ga'FP`˜aü>?/Hh//?/?/a*Haühga*>OïNupNu oP€€a—à oBgHz™‚Hha™ŠOï oHç<"h0B@(BB(Äø] :x] æHÔ@$x[ÀÔÂÒÂBAB@BB(’((æH(æJB4&I(J‡QÊÿúÒÍÔÍQÉÿìLß<NuNu oPÿNu oa—RHçB@BABDBE((((˜@šAvaöpLß8 oPÿNua— o"x]P$<]P±ÉgCé$$ "Q fð`H"B"¨$/(0a’*X o0@g?8("a÷<8` x]P g0@€gHPaþÐ _ h$`æNuAú˜Xa—n o"o0¯ P€ Pÿ||1x]ÆaùüBA0@gr1AHç>*I$H0246Bj"8Dg”@–AaöV6!4!5D"fRÿï@ABC%j8Df(z8DgzÛ*Û*›*›*8DgP*%jHxa‘øX%H0f0*"ga‘.p`L!È[Àa0246”@–A‘È8:Ef:Eg o6CúôŽDfCúõN‘%x]P$!Ê]Pa•ˆpLß|øNuaù¢0/ BA(ÐA(A4/ Bb$ÔB4; "Aû "Ht-/v aô4aù°g Iaô(&Nu'1<CNoneEnter=OKEnter=SAVEEnter=YESEsc=CANCELESC=NOEnter=GOTOaù /0/ 2/Ð(Ò( o4/6/aôxaù,gaôn&NuaøØ/0/ 2/Ð(Ò( ota(øaøþga(î&Nuaøª"o`aø 1o 1o "o gHQ?HPa: _TO"_`ìNuaøv1o 1o 4/ 0/?6?HPSCma QËÿü\6NuaøFÐh ÒhHç 68$HBE/?a LT>4B@g  E gD E g> Ef(?*HjHja•Žaø:ga•„Oï Ja÷<`ž2ÒGB@*R@°AlHBC*ÖC\CØC2ÒCB@*°Al(?*?HjHja—a÷æga—Oï !ê0[À˜CBC* E g( E g"?8]Hj???a›a÷¬gašüOï ÖGB@*–@5C *˜@5DL߸Nu o"x]P gü\±Ég"i$`ða’üHçÿþ8("gaój`BgHhHha”šOï Lßÿ"o0)Q(’(²f¤0)i(’(²fŽ!h!è0[À0)BA(Ag$Ñ(Ñ(Ñ(Ñ(Bg?Hz”*Hha–Oï o"o0BA(Ag&Ñ(Ñ(Ñ(Ñ(D@Bg?Hz“ðHha–ŒOï o!h!h`’HPaúúX`ûbHç>B@BABBBC o0”@–AAùPeaðÖLß|øNuBD+˜+BC+–+0Àü*Aò0°El:PÂ2(²Fl<PÂÐhC°Eo:PÂÒh’D²Fo<PÂJfNu?HSaú`aöTIêBC+–+BD+˜+>*SG0E2,’F°Cn<²Dn84,Ô@m04,ÔAm(l l ?,?,/,??HS lNOïIì*QÏÿ°aù$X>Nu o0/2/ Hç>,O$HOïÿ¨&O>*g>SGJj f4vAê48Øh¶Db6Aè*QÊÿîJªgPCTC Cžc6<ž5C Jj f8vAê48(Øh¶Db6Aè*QÊÿìJªgC TC Cbc6<b5C @ÿÿf 0< j â@ Aÿÿf 2<d’j âA6/*gCC0?J@lB@7@<Ðj @Ÿc @Ÿ‘k<0<Ÿ7@@JAlBA7A>Òj Acc Ac“k>2<c7ABAëDN¹fÌHk*BEBFPÂ`BBH‡0*JGl>SG¾@mBGaýÌ0Àü*IòHT2,’F?0E?HS lNOï J€g&(HCJ@n¼`a£:&HT2,’F?0E?HS lNOï HT? l"N\(l†R@gÿvR@gÿhR@gR@gR@g$R@gR@g$`ÿX,`ÿP,`ÿH,`ÿ@,`ÿ80*AêBAS@¶hg"RAAè*QÈÿòHT? j gN(l\`ÿ>`þþx8, HSa÷œXAëDN¹f” .NLß|øNuQ O0À0ÁÐlS@0ÀÒlSA0Á?<HhÿøHSaórOïpNuQ OS@SA0À0ÁÐlT@0ÀÒlTA0Á?<‚HhÿøHSaô†OïpNuHçÀAëaŽüLßÐ+Ò+/Òl4Ôlv!ë0[Àaaòzga04’l!ë0[Àa‘aò^ga‘&pNu0H@ CQfpýNu CTfpüNu C fDJ,g\Jl&g22,’FÒ+?0ÐlEÐ+?0l&NCHPaüP @ÿfpùNu0, Nu CXf J,gJl&f¶ Cf0<ÿNupùNuaÿ2/ Ò+ÒlTA?0/ Ð+?0l&NCHPJl&gaü,PNu0H@B@Nu0H@ CRfpûNu CXfpúNu C f0, Nu Cf0<ÿNupùNu0H@ CQfpýNu CTfpüNu C fDJ,gZJl&g22,’FÒ+?0ÐlEÐ+?0l&NCHPaûœP @ÿfpùNu0, Nu Cf0<ÿNu CRfB@Nu CXgöpùNuHxaË–XJ@g0@NC0¼!o1o Bh Nu0/gÊ2/nÄ0@NC4(RBÄü*B/?aË@\J@g 0@NC4(0RhÀü*CðBQ2çI3A3|2Aa3A2/ f2RA3A | | #o2SAATAAPé#|צ#|צ#|ÑÊ#|Øb"B©&r iHQa—ú"_T@3@0/NuaV gø0)&fÿ2HxaÊŽXJ@gâ?0/2/a003@&0@NC0¼Bh Bh `þþ2/0/a ‘È g iNu0@NC4(g*CèSB²i g 0)&g?HQaÞ _4 f "HCé*QÊÿÞ“ÉNu0oNCBh0/Nu?/?/0oNCHPaù¼P @ÿfpNuHxaÉÜXJ@g0@NC0¼ 1| 1|Ÿ !|ÙNu0/gÊ2/nÈ0@NC4(RBÄü*B/?aÉ‚\J@g 0@NC4(0RhÀü*Cð3|3|2A 3A2/ f2RA3A | | #o2SAATAA#|Øæ#|Ø#|ÑÊ#|Ù""B©&pJBg 0)ÿÖÐiÿÚP@2€ oa‚"Àü3@`øaþ” gò0)&f8HxaÈÊXJ@gÜ?0/2/aþj03@&0@NC0¼1|F 1|b 0@NC4(RBÄü*B/?aÈt\J@g’0@NC4(0RhÀü*CðBQ2çI3A3|`3|2Aa3A2/ f2RA3A | | #o2SAATAAPé#|צ#|צ#|ÑÊ#|ÙV"B©&0/Nu0/gÌ2/n¼0@NC4(RBÄü*B/?aǰ\J@g¢0@NC4(0RhÀü*CðB@JBg0)ÿÖÐiÿÚP@2€3|3|3|2A 3A2/ f2RA3A | | #o2SAATAA#|Øæ#|Ø#|Ñ’#|Ù""B©&`B@`0/Nu0/NC` oHç>$HBEBFBGPÂOïÿ¼&O?< Hz$HSañJ@gaõÌaðŽOïN JaجLß|øNuï?/aœŒ0oB§NCHPaövOï @ÿfpNua‡j?/aÆœBWHz‰Hz‰a‰Oï Nu0/2/aü& g JoVÀ@Nu o0¸cl o 8cn €Nua* /!Àcna°J@g1Àcl0@NC"o 8cnS@ÙQÈÿüNuB¸cnHxcla‚,XNu!ï]¾Nuaî 8]¾g @`þôNu x]Â!ï]ÂNuNLNù"¸AúNuŸZNuJ8]ÊfaJ@fúNu2/B@8]ÊÁ]ÊNur`ðHç0Oïÿì—Ë$x]P`0@ g&J$j$ fî gZ“0@€gJ0+kD @l>?|`/KAï.ˆ?+a¸T$x]P`HkHja‡˜PJ@gÒ$j$µËfâp`pOïLß NuOïÿì>¯a?|#/HHo?<ÿÿabOïNup0/Ð@0; AùJÐÑÀNu59>CHMSY_behkoOïÿìBWaþä?|/HoHo?<ÿþaOïNuHç 6/$o88]Æ Cÿÿf6 Cÿþf68]È5D5oBj1Ã]ÆHR 8[°g @N x] g R`f JCmåK {0N1Ä]ÆXLßNuã°>¯ aþR2/ 0/"o2€Oïÿì>¼?@?ABo/H?Ho?aÿ^1×]È?|aÿP?|aÿFOïNuHç6/8/U¶x]Èf2JDg&>¼aX>¼aR>¼aL>„aþæ>¼a@>¼a:`0>¼a2`(>¼a*>¼a$>¼a1Ã]È>„aþ´>¼a>¼aTLßNuOïÿì?oHo?<ÿþaþ´OïNuOïÿìBx]Ì`>¼a—.J@g a–„>¼a—,a—–a—Ž>¸]Ìg Bx]Ìaå¾`Ðp&?@ J¸]Îg"x]Î!É]Î CgðJCf"B¸]Îa—|J@ga—~6@ø@vÞ?@ JCg,>¼a‘^?|?CHo?8]Èaþ\>¼a–¨`ÿbJ8] g$>¼a–ˆJ@g?|@Ho?8]Èaýà\`ÿ8N¹[¤J8]Êfaü¾J@g >¼a–^`ÿ>¼aþêBWaâa•,`ÿHç0$ov?/aÈ`>¼a–J@g a•p>¼a–a–¦J@ga–¨6>¼a–4¼5C `J8] g>¼a•ÜJ@g4¼@`a”À`ªJCg>¼ad0TLß Nu o0 @gû² @g @gf @#g( @$g* @Pg0 @QgLNuBgHz„ Hz„a„Oï Nu!è]ÎNu?(aÁzTNuOïÿì?|?|Ho?<ÿÿaü¬OïNuNu0* @ m$ @n? x]¾aÓ ?aúhJ@g>€aý²XNu @ g\ @ g”V @ kg–ð @ gû& @-g6 @ fB§HyOªHyO–aâôOï Nu @f B§aüæXNu @+fBB§Hzüað~P @ÿg.AúþÀü*ÑÀB@(Oïÿì?|?@Ho?<ÿÿaûÞOïNu @ cf?<!`" @ xf?< ` @ vf?<"` @f ?<PaüÞTNu @f?<Q`ì @f r?aûTNur @gîr @gær @gÞr @gÖr @gÎr @gÆr @g¾r @*g¶r @7g®r @8g¦r @­gžr @4g–r @9gŽNuJüpNuB§HyOªHyO–aáÀOï Nu0/ @ÿýg8Oïÿì>¼BgHoÿþ?aúÞ?|aúÔ?|aúÊ1üÿý]Æ1üÿý]ÈOïNuQ O0ü0Á0ü\A0Á?<HhÿøHSaåOïpNu0H@ CQfpýNu CTfpüNu C f0, Nu Cf0<ÿNupùNu0H@ CQfpýNu CTfpüNu C f0, Nu Cf0<ÿNu l"HfüS‰ CfBpþNu Cf ³Èg$B!pþNu C m Cÿb2,&ÐÁ³ÈgÃBpþNupùNu0H@ CQfpýNu CTfpüNu C f0, Nu CXf02,’FÒ+?0EÐ+?0l&NCHPaîP @ÿgapþNu Cf0<ÿNupùNu x]þ2,(ÒA1€0l&NCCè2(°i gCé*SAfò’hDA1AÂü*)p NuHç>0o,NC$H ’DiAlfˆ./2&o6!Ë]þ6*gtSCIê ," €æxf߬` €æòf2,(ÒA03aÿlIì*QËÿÒ0/.2/0??Hj aí4P6*SCmAê"(" æxfŸ¨Aè*QËÿêH@`B@Lß|øNuHxa½.X?g$a½, üDiAl ï B˜0¼1o 1o B¨0NuHç>ü\"SGRCÆü*C/?a¼.\<g€0@NCRhCð8Ö2¯43o6Qi3|(3|Bi3D | | G|ÿB)B)#|æ#|æ#|ÑÊ#|æD"2m Âü*EðDNuXLß|øB@NuHç8Oïÿ´6/d$of&oj>ƒa»¬(HAï.ˆaŽÖ8f.Œa(4€xaŽê` 4„ 8]ºL6€x>ƒa»t0OïLLßNuHç>$o,/8]¶a _Jg!È]¶£ŽpLß|øNuBgvabJfbašJfØRŠ  gâ ,gÚ (g$ {g6 "gì [gn gH *gH +gH -gH /gH ^gH gH œgH gH žgHSŠ`Š4<€`@4<`:4<‹`44<`.4<‘`(4<“`"4<…`4<‡`4<‰`4<†` 4<Š`4<ˆJn$faµ^HPa´†aµP0<Õa´F _B ]gþ$H`ÿ0Brÿ&JRAašfö Ab$SŠ (g"B@a´SAa´QÉÿøB@a³ü`ýÜ$K`þðRŠa³ÜHS?aýÄ2&_ )fàB@a³ÒSAa³ÊQÉÿøB@a³À0<Úa³¸B`ý–RŠB¸[B¸[B¸[ ­f1üÿÿ[Gø[~|ÿ0e6  b0RFgéJ‚`…QÏÿà .gH0eH bBRFfè`r þf40e,  b&géJ‚`…QÏÿâ0e  bfð`8 ef2 ­VÄfz~0e  bH‚Êü ÚBQÏÿèJfDEÜEF@1Æ[a lAø[Cø[a PCø[a´ÈBSŠ`üœJVÀg /c 9b pNu .WÀNu ­gî •WÀNu \g /c 9b pNuJVÀgø @c> Zb pNu _gö `c$ zcê c ›cÞ ±c ¶cÒ »bÌpNu?/a·@a HPaa·8\Nu oHç>*HHxa·>€ga·"(H8<zaBa· 0XLß|øNuSJgx #g¨ ‹gÚ gØ gÖ ‘gÔ “gÒ Úgþ Ùg@ -gH ågX ÕgÐ *g¡š¢ž[DmúüuünüdüeüfNuJ%füAíSDgØØføSŒRDNufäUDcÄü"aÚü"NuSDg´ü0NuDc¨Aír(ÿÿáH?UˆQÉÿòB/ HyNÛHTaÔDOïØÀ@˜@Nu<+`<-`<*` </`</HUa±Î*HaþêSDgÿHÃ*WaþÜ*_Nu<[aÜSDgÿ0ü]NuaÿBSSDgÿü( åf SDgÿü)Nu ågHUaþ˜a±rX*HSDgþîü,`à|)ÿÿNuSDgþÚü{ åf SDgþÊü}Nu ågHUaþTa±.X*HSDgþªü,`à|}ÿÿNu oHç>a> #g£ Lß|øNu oHç>a&Lß|øNu0/Hç>?a´üaŠÈa a´öTLß|øNu*HMúPa #g"N`°DAø[Cø[a 2Cø[`±ªSJgÌ #g¢ ‹g* g( g& ‘g0 “g@ Úg* ÙgT -gN ågN €g …gú †gä ‡gŒ ˆg¸ ‰g¾ ŠgŠ Õg¡šMú•NuMíNuMúˆAúÈCø[` fMúxAíÿøCø[pØQÈÿüBAø[Cø[` DJ-ÿÿf&Aú Œg Aú –fMú:LÐHø[NuHma³ê f£À?( a³´J@g ¾a³¢a‰n Üg óf¢l*HaþÊa³ŠT*_Nua<` a6` a0Lø?[Hø?[` ÒaLø?[Hø8[Hø[$` LaNù‚_LHUaþ|*_ #g (Lø[HçàHUa¯*Haþ\*_ #fàLßHø[ NuHUaþB*_ #gÈ -fÀHVHUa®Ð*Haþ&*_ -fª _"NNuSˆS‰ g°!gø`J!g"`aº -gäa lJgAú``aè x [fðAú\Cø["Ø"Ø"ØMúþNuaÿLa a .JnÒ`Àaÿ0a JoÄ`²aÿ"a Jm¶`¤HUa²‚ fHJ%füREù‚Ð6< pHU0HrN¹^àPJ@gXŠQËÿè£ÀUHRaýX$_0*N²*_MútNuJ%füS?( a±øa‡Ä óg¡š(x]¶a¬´ ågV -g$HUaýAø[Cø[a.Cø[a®¦a­žX*H`ÐSpR@J%fú?a¬`0S@"x]¶R‰ MØQÈÿüS‰!É]¶S`¤a±ˆ0a±² x]¶ #fAèÿ÷Cø[a¾B8[ MúÌ!Ì]¶*_NuJg ŒHUa­0*Haü^*W/8]¶Bg?<@HUN¹\ˆOï *_NuJg ŒHUa±N f£À>¨ a±a†Ü Ùg (J%füHhÿÿSaü6 #g£ a< _6 åg SCga¬À`ð*Haüa°ÐXNu oa¬¨ ¯HP oa¬˜"_"’¯²€fN¹^‚J@WÀH€Nu#*Hç0$o &o`HSN’J@ga¬^X&H åfêpLß NuHç0$o &o`HSN’J@fa¬2X&H åfêpLß NuHR$o åg J$Ha¬ åfô J$_NuHç8$o$(o(/ / N¹täBCBB*BE*šBREBA*’CRA0@SAP6|ÿJ@gx˜@08 àdál6D8PDæDEì08] ÅÀ2æAÔA x[ÀCð 2A8@˜Ägl~žABF`DB@ãh€v`@ÿî`„‚$HB@ãh€RC J¸Cnà@ÿî`„0 À€$Hp0 ÓÀRFºFf¸`"Ù0J¸@nö0 Á(ÿÿp0 ÓÀRA$HºAg J`àLßøNuHç04/ 6o$$o&žFJBfBA`lzšBBD`FB@ä`€À Iv`@ÿëh‚$IB@ä`‚ÁRC"J¼CnÞ@ÿëh‚p0CðRD¸Kf¶` €À0I¼@nòp0CðRA²Kg I`æLß øNuHç04/ 6o$$o&žFJBfBA`lzšBBD`FB@ä`ÀÀ Iv`@ÿëhÂ$IB@ä`ÂÁRC"J¼CnÞ@ÿëhÂp0CðRD¸Kf¶` ÀÀ0I¼@nòp0CðRA²Kg I`æLß øNuHç04/ 6o$$o&žFJBfBA`pzšBBD`HB@ä`³À Iv`@ÿëh±$IB@ä`±ÁRC"J¼CnÞ@ÿëh±p0CðRD¸Kf´`"µÀ0I¼@nðp0CðRA²Kg I`æLß øNuNVÿäHç<>.8n n :6(Kè0lB@@ÿø0 lB@@ÿù6LÖÅ0 S@ @€o0<€@ÿû4GÔÃ0 S@ @ðo0<ð@ÿúHnÿüHygò/.N¹gxOï J@g†BF.ÿüB@.ÿþ0@BB.ÿýBD.ÿÿ¾Hnf¸Lm`¼JnZ´KnT´Lo2’L0^@æ@ÁÁKõšA8B0 ÐE¸@l:šLRE¼Gn2²Jl’B.ÿýS@ÿÿ¼GnB`@ÿü2²Jm`0@ÿþ^C0æ@ÁÅT@0@ T€rþÀŸÀ&OEîÿæ/ N¹fÈ0S@?QC?/ N¹ff/ HnÿüNºû/ N¹fKëB@.ÿüBC.ÿþ–@RCÞ@Oï nbˆp0.Ѐ0;NûL$v8L`?</.HnÿøN¹hOï ^CæC?/ ?? ?Nºý†`:Bg/.HnÿøN¹hOï ^CæC?/ ?? ?Nºûî`^CæC?/ ?? ?Nºü’Oï Lî<øÿÀN^Nu0/2/ o4/ Bft Bb?<HP?<??ÔB4; N» Oï NuüFûŽüþ2$&HÁAÿHÑ`LÐÒAâ‰2Á"Â"ÃNuCø[AéJgü ‘ÉYˆ0Ð@ðfR@LÑa&tQ@g6åHà«`0 @m 6BBHBHCY@g @m àŠà›U@gpÀð†èŠè›Nu08[@@D@Lø[aHø[`þÆ08[ °x[g bpÿNupNuAø[ J@gpÿ`p28[²hgbD@Nu"8[²¨gbò`î"8[²¨gbä`àB@NuHÀAø[BAJ€g4lD€rÿ0Á0¼@t€ü 2gH@„èšB@H@RP`êH@„èšTˆ ÂB˜`þ4 ü B˜B˜Nu08[@@D@Lø[aþÖxz 阀Èü Ø€paþZQÍÿèJx[gD„ NuFx[ Aø[ aÿ:J@nLø~[Høp[Hø[ 08[x[gLø[ aþvHø[ 08[°x[ f8[&G@Eø[0Gø[0pÀ"gÀü AóLÐÒGHø[ aþæRGB@èHgÀü AóLÐÒGHø[ aþÄRG‡l¶08[°x[$VÀH€1À[`üŠEø[0Lú¸Løp[HÒ~Høp[aÀLø[Hêa°Lø[Hê0a Lø[Hê`Lø[Hø[ aþHLø[HêTLêpLø[Hø~[aþ*Lø[Hê$aRLø[HêHLêp0Lø[Hø~[aýúLø[HêJx[gLúö´Hø[ aòvAø[Cîÿöað>Lß|øNuAïHç>Cø[aðañTAø[CîÿöaðLß|øNuHçCø[aï–aø¦Aø[Cîÿöaï˜Lß|øNuAïHç>Cø[aïpaøNAø[CîÿöaïrLß|øNuAïHç>Cø[$aïJa÷ÖAø[CîÿöaïLLß|øNuAïHç>Cø[aï$aùàAø[Cîÿöaï&Lß|øNuAïHç>Cø[aîþaû€Aø[CîÿöaïLß|øNuAïHç>Cø[aîØaûJAø[CîÿöaîÚLß|øNuAïHç>Cø[aî²aL@Aø[Cîÿöaî´Lß|øNuAïHç>Cø[aîŒaRÜAø[CîÿöaîŽLß|øNuAïHç>Cø[aîfaRÈAø[CîÿöaîhLß|øNuAïHç>Cø[aî@Aø[CîÿöaîFLß|øNuAïHç>Cø[aîAúôtCîÿöaî$Lß|øNuAïHç>Cø[aíüLø[Hø[$añLúôXHø[ aû"LúôxHø[ aR>Aï,Cø[ aíÀaïúaöÌLø[Lúpô6Hø~[að¼Aø[Cîÿöaí¨Lß|øNuAïHç>Cø[aí€Lø[Hø[$aðŠLúóÐHø[ aú¦LúóüHø[ aQÂAï,Cø[ aíDaï~aöPLø[LúpóºHø~[að@Aø[Cîÿöaí,Lß|øNuHç>Aï,Cø[aíLúódHø[ aï2Lø[Hø[$Aï,Cø[ aìÜLúóAï,Cø[aì€aõ Lø[Aï,HçpCø[aìfFx[aôîLßHø[ aîŽLø[LúpòæHø~[aïTAø[Cîÿöaì@Lß|øNuHç>Aï,Cø[aìaô¤Lø[Aï,HçpCø[aëþaôŠLßHø[ aî&Lø[Lúpò‚Hø~[aîðAø[CîÿöaëÜLß|øNuHç>Aï,Cø[aë´aô@Lø[Aï,HçpCø[aëšaô&L×Løp[HçHø[ aí¸Lø[Hø[$Lß~Hø~[aí¢Lø[Hø[aðAø[CîÿöaëZLß|øNuHç>Aï,Cø[aë208[@?ÿ"o02€1ü?ÿ[Aø[Cîÿöaë$Lß|øNu4óš4óè3÷ˆ3÷t3HŒ3OJ4OX[õ®\x\ž_¨a¾cÔexplnsincostanasinacosatansinhcoshtanhasinhacoshatanhsqrtdimgetkeytestftestdtime -g Ùf*pAîÿÿNºÚ`AîÿÿJ füRˆa•0`ëüpN¹z`ëð ( -føBgHnÿÿa•\ VÀ`ëÔ -fÞHnÿÿN¹WžX VÀ`ëºp08aN`ë°Hç0 o "o$>8(<(:(B@0@BA)4AB@)6@BA)2A6–GjDC0<>0:8¾Kn ¼Hm¸InºJmú4”DJCf¸Eo0:8¸Jl8 ºIoÆ`†JBf¾Hl>¼Ko²`¬JBm€¾Hl4¸Jl0 DÁÃHÀÂÐG°Hm °Kn >`*0GÁÂHÀÃØ@¸InŠ>`¸Jl0 DÁÃHÀÂÞ@¾Knp8 ¼KoºIoD0IÁÃHÀÂ2’@²Kn2<: `8ºIo4šIÇÅHǜC`ìDB¾Hl0GÁÂHÀÃØ@¸Jm(>¼Ko œKÅÆH…ÚB< ?/(????N¹k¨Oï Lß øNuOïÿðHç>:o@8oB?/HN¹fü?@6//FN¹g\0 n:|4 n8|0 °Ml84 íJ4B0|ÿÿ?|ÿÿ,?|ÿÿ*rÿBo(o (6/(ìCoÿà(Eê 8 ìDEêÿà> ÏÃ4 HÇÂ< ÍÄHÆÂ²Cf¼HgV¶o*lP:/>ÚFC?N“XJFg :/>šF??N“XJCg?4/>”C?N“X¸o*f¾o,gT¸CoP:/>ÚGD?N“XJGg :/>šG??N“XJDg?4/>”D?N“X0 4 HÀÂÑo(0/(HÀ”À¶DlL0F?G,?D*2`þè0 íH4@?|ÿÿ.rÿ?|ÿÿ0?|ÿÿ2Bo6o 6 ìGEêÿà8 ÉÆ4 HĉÂ6 ÇÇHDzDf¾o0gT¾FoP:/>ÚGD?N“XJGg :/>šG??N“XJDg?4/>”D?N“X¶o.f¼o2gV¼o0lP:/>ÚFC?N“XJFg :/>šF??N“XJCg?4/>”C?N“X0 4 HÀÂÑo60/6HÀ”À¼Gl?C.2?G0?F2`þæ?/4N¹füHx\.N¹g\Lß|øOïNu(0/NANuNB2/HÁAïü±Ál¢žNu oHÐüü!W0pNu o0/fpLØüü.Nu o"oHRr!p!áH‚@g$t!p!áH„@ ЂEðàˆàˆàˆ`Î$_NuNùm^ o//HhaA$P opJ0fS@nö€Nu oJhg2UA00Nu o"opJhg 2(2°pNu$/ oB@2(²hlTh21‚TA²hmBA0pNu"o opJhg2(2°UhTA²hmBA1ApNu/ptBC  gø -g ­fvÿ` +f0e  b"ç‰Ò€ÐЂ`æJCgD€&NuAø] Nu"o o0/ gS@ÙQÈÿüNu o0/S@BAÁQÈÿüNua   - 6 Q W H R T Y?/a\Nua 52+3?/a\Nu2/ op4g´AføpNu oaŽ˜ o"oCéAð QÈÿüB! oAèNu o"oJ!füR‰ÙfüpNu pNu$,O<?aŠÔ g`p00ÿ àfRVˆ$HCùNépN¹^‚J@f†aŠ2.NLß|øNuáH*H@*áH*Nua`*RŠR“g föR“  gú"g gà #gÚNu£ç fèSB`äVŠHRa:$_ x [ga¤ g–a`öaa´aÿn €elsegÜ €elifgÄNu£çaÿV €elsegÿb €elifgÿX €exitgÞ €whilg<àˆ €if gŽOïÿÎ(OB J"Lg gÀ`òBHçÿþN¹0†LßÿOï2`ÿ *efÆ * f¾\ŠHU*J$Ma‚$Maþô x [g gØaÿ\`ôaþò*_Nu                                                                                                                                       as("*","*_p")*_pas_error/ HzÿàHx^˜Eù^ÎN’HzÿÞHx^´N’HzÿØHx^äN’Hzÿ×Hx_*N’Oï.¼‚"ÓHx_ N’1üP^Þ1ü0^àBx^âBx_ü_ü_Bx_P$_Nu//826 4ëJ0BÒAÁ2æAAðAèL4B2<€äa2@`g„`FÄ‚âdRˆRI¸Ilà&(Nu//86 4ëJ0B2AÒÁÉ4æBAð AèL@4<€àb2A`"Jlµ`g‚`FÂAèRI¸IlÚ&(NuHç84< ”@6xèkÖBâC<Ü@pdA8tälØ@âD:ÚA0T@1À^Ö4TB1Â^ÔEúÿ2|0D20N’2|0E20N’6ERK8FRL2|0K2 0R@N’>RG4G`“É0J20NºþÒRJºJnîEúÿ2|0E20N’2|0E20N’2|0K20 N’LßøNuHç 08^ÖÁü0@:8^Ô2YA0æ@€ÿþЈ"@CéLAv–A0HÀxá¬F„0/Áü€ÿÿ$@Õü‚¸JEfCèKþJ8^Ùl$t À„BAFA|†0C,í©€"€CéQÊÿâ`t À„r0C,í©€"€CéQÊÿèXE1Å^ÔLßxNuYOHç>?@*>&H08^Ò"8^0@J@o,A*x^”ÛÈ*<LðBF`Œ*AMõˆ`ìJf²·Îe»Ëcv`BC"8^²‹f&x^”BB B fR‹t 0S@ @b B g BÿfpJBg BÿgR‹ B g^ BÿgX·Îe»Ëcp`B@†@²‹f&x^”BA A fR‹r 0S@ @b A g Aÿf&JAg AÿgR‹ A g AÿgB`xt r BC`xr Åüp0$@Õü‚¸Ãüp0 @Ñü‚¸BCìJCg Cg$ Cf^`:rB@éH„‚CéSA AÿÿgX`ærB@F@éH„‚CéSA Aÿÿg:`ätBAéIF€€CéSB Bÿÿg`àrB@éH€F€CéQÉÿîRŒ0 EÐ@¾@bþˆ…ÒRF¼o*g(EB`àLß|øXONu/ $H`RŠ@ÿ?NºýxTfî$_Nu/&/N¹^¤Xåˆr_F’€ âˆ1À^Ô CNºÿÂPx^Ö&NuNVHn /.B§Hzý0Nº“HOïN^Nu/ HxðBgHxVæEù^N’Hx?<ÿHxVÈN’Bx^Ô1ü]^Ö1ü^ØOï$_Nu/&NºÿÀ CNºÿT&NuBuildExecGoFindReplConf‚'Ì‚'Ò‚'ׂ'Ú‚'ß‚'äF%1dHç0NºÿrvGúÿÖ?HzÿèEúÿDN’Rx^Ô/N’Tx^ÔRCOï CfÜü_Lß NuN¹xÂ?8^ÞN¹yü?8^àN¹yôXNu NVÿüHçNºî*J8_g28^Ü2|0A\H08^ÚNºúà?<N¹yrBD`?<N¹ydTJ@gNºÿp?<N¹yrT`°0x]8]H€H@B@Ј gr`2 gr`(gr`J@lr`gr` gr`BA²x^âg,0Áü0@Ñü‚(d2|Là€€€Cé²üLÇfê1Á^â6RCTD·D gJ8_g28^Ü2|0A\H08^ÚNºúN¹xV8/HnÿþNºì€PJ@fÿ0.ÿþ@÷ÿ=@ÿþ @! g @ fNºþ„J8_g28^Ü“É0A\H08^ÚNºùº0.ÿþLî8ÿðN^NuOut of memoryCan't exec command.Error opening '%s'/6NºýZAúÿÀ Cg Cf Aúÿ¾NºüÜ`/8^€HzÿÄNºýPNºþNºøìLßOï@NuScroll[UP,DOWN],Cancel[ESC,APPS]NVÿìHç HnÿìHx^äNºçÂBg/N¹WP$HOï°ügÞAúÿ°Nºø>6* ?N¹b?N¹b@$HXp08_Aòr(p Nºõ¤Nºøâ2 @Tf@t(SB Bÿÿg&28_p0J2g€0R@1À_SAp0 2 fÒp08_J2g\BA`2 @Qf,`PSA Aÿÿg"08_ @c0@SH1È_W@€ÿÿ 2 fÖAþø AbÿfJg ?N¹b0Tü_Nº÷¾`r(`¬LîÿàN^NuJx^Òg Bx^Òü_"x^” ÿgb08^ÚX@1À^Ú  g @Ÿn`Adapted by PpHd for PedroMSave changes?%s [ENTER]=Yes [ESC]=NoNVÿÈHç8 8^€g/HnÿÈN¹^ÎP`B.ÿÈAîÿÈ!È^€N¹m€EúõøN’J.ÿÈfAúýîNºòLrpAîÿÈNºôêJg 0N’AúýÝNºò0Hnÿä/8^€N¹\PJ@fGîÿ÷Bg/ N¹WP$H\°üg–?( N¹{TT àfÔ* fÈ@ ?* N¹b–Gè$K0P[H0HHhN¹bV !È^„\gv!È^!È^Œ€!À^”!À^ˆ` x^ˆ fü !È^ˆCê`À!È^ˆ$ICêfØ`V/ N¹YÄ/N¹S@P°üg:/ N¹ZjHxN¹bV !È^„Pfp`j!È^!È^Œ€!À^”!À^ˆ—Ë`p`L x^ˆPÐ1ü^ÐB8_Bx^ÒBx^Ú1ü^ܶüg2Eëÿþv` x^”  fRƒNºù|08^’x^†ÐC°Rmâ` Nºó,J@f ¶Nºñ ü_Bx^Ö1üˆ^Ô1ü^Ø?8^ÐHzüSNºðB\J8_g x^Œr(p NºîB8_ü_GúñLN“6B8_2Aÿð AïbNºúø`– @ gô @gÜ @g, @ g8 @ g8 @ g6 @g: @gœ @gè @gÀ @gð @Qg @Rg @Tg @Xg* @+gì @Qg~ @Rgò @Tgh @Xg @ xg² @ yg^ @ zg` @!g: @!QgT @!Rg” @!Tgh @!XgÔ @AQg" @ARg @ATg @AXf’`þv `êv `ØNºóì`þ–8_08_gþŠB8_?N¹b@$HT ÿg RŠH€Nºù¶J@gì?8_N¹b0Ã_T`þRNºó J@fþHNºùD`þ@NºøF`þ8Nºøä`þ0Nºø`þ(Jx^ÒgBx^Òü_`Nºø x^±ø^„gþ ( ÿÿfè`ýúJx^ÒgBx^Òü_`Nº÷: x^” ÿgýÖ fè`ýÌNºøxQËÿú`ýÀNº÷QËÿú`ý´Aú÷º` Nºòð`ý¦AúøRNºò¾`ýšAú÷j`òJx^ÒgBx^Òü_`Nºø."x^³ø^„fò`ýpJx^ÒgBx^Òü_`Nº÷. x^” ÿfò`ýLNº÷R 8^°¸^„gý< x^” gä gÞNº÷0"8^²¸^„gý x^” g fÞNºöZ`ýNºöR x^” ÿgüî g fâ`Nºö2 x^” ÿgüÎ gè gâ`ü¾Nº÷š`ü¶NºøÜ`ü®&8^p Nº÷ðJ8_güœ"8^„ C` gBD`RD²ˆg fè` p Nº÷ÀRC`BC¸Cfð`üfNº÷bJg`üZNºø€ x^” güH ÿfè`ü>Aúø§NºìêrRp{Nºé8x^Ô6x^ÖBFBE1Ë^ÖBG4|1Ì^Ô6 BD1ü^غGf ¼Df1ü^Ø?Nºé’Rx^ÔRDRCT DfÖPx^ÖRGEê G f¾NºíZ @ gR @Qg. @Rg @Tg. @XfN0R@rHÀÁ,HF`ÿ‚SFjÿ|`Oï J@fØ`VEúë*Aú÷N’GúíÊrpAø_ N“Jg8Aú÷N’rpAø_*N“Jg"Hx_ N¹^¤X8v`„Nºó„ x^” ÿgt2D/ Hx_ /N¹_>Oï J@fÚEø_ `NºïHJfø x^Œr(p Nºè8Aúö¢Nºêž CfNºëh @ g @g @f`BC`vNºõìEø_*`RŠH€Nºõfô x^” ÿg€JCfÿn`vAúövNºêFr<0<žNºæp:8^ÖTE<8^ÔBC1Å^Ö1Æ^ÔEúîCø^˜pAúögN’Cø^´pAúöeN’Cø^äpAúöcN’Cø_B@AúödN’Cø_B@AúöqN’Cø^ÞpAúöuN’Cø^àpAúö~N’0çHÐE1À^ÖTx^Ô?<>Nºæ¢NºêŠ8T @Qg @Rgp @Tg @Xfrr`^JCgÿ\SC`ÿV CnÿNRC`ÿHYx^Ô?< NºæRx^ÔHxHx^˜Eîÿä/ Gù]¶N“rp JNºëîOïJfBC`Hx/ Hx^˜N“BC`NYx^Ô?< Nºæx^ÔHxHx^´Eîÿä/ Gù]¶N“rp JNºëžOïJfv`ÂHx/ Hx^´N“vOï `¬Yx^Ô?< Nºå¬x*^ÔHxHx^äEîÿä/ Gù]¶N“rp JNºëHOïJfv`lHx/ Hx^äN“1ü_v`¤ 8_v`L 8_v`BÃü Òx^Þ0S@ @Žcv`,1Á^Þ?N¹yüv`Òx^à0S@ @0b1Á^à?N¹yôT D gF Dfýê`0¸aZa„08a\f6Sxa`f(1ø]a`88a^D`BšBšBZBxa^J8abgBx]B8abBD0¼€Nu8aPBx]Bxa^`ÿ<QRTX@ € +-*/^­369,t.258)z0147(y   •|=x 68]g"Jx]&fB@Gø](SC1Ã]gp1À]&6ëQËÿúNu68] De­  $ _¾^ˆ=%/!*&@0œ.ž  (#),?|¿7°8Ÿ9©4€56‚1ƒ2„3…­`=a(b)c,d/e|f7g8h9i*j•k4l5m6n-op1q2r3s+u0v.w­ xxyyzzttAúâ`2Aúæ`,Aúï`&Aú÷` Aú`Aú`Aú`Aú%`Aú3`NLFü'BgHPB§aa <B@S€füNù"¸NùošNùeüNLFü'BgHP?< BgaèaàHz,B§aØ <B@S€füNù!ˆ2 _0Aúû@ÿg˜FÁNùxþ2 _0@øc:"H @ðfÓØ`( @ñfÓØFÁNÑ @òf0äH"xȰad1À[¼åH"qFÁHPNÑAú`ÿDAú¾`ÿ<åH {NsxpϘAŒ\ÑÀ] {xxpxyàyìL‚Ê?@oðÿo0NsÐÈAè1Û pˆNs0@ f8cvg0 _FÀHP x\h“Ép rÿ`bHçÿþMù`Fü$2< PîpPQÈÿþ.gêQÉÿìFü'Pî¹pBnB.Ö=|€Pîpaœ|!=|0<€rQÉÿþQÈÿøfpavNr'=||€|Þ=|€ùpN¹yàN¹{:aù€ ¸È[Øl!üÈ[Ø?<N¹yrTN¹x†LßÿNsFü'3ü€`pÀ`NqNsAøczCú2< 0ÙQÉÿüNøcz29^À`Nq3Á^NqNqNu0NuTrap not definedProtected MemoryAbort by userBUS ERRORSPURIOUS ERRORAddress errorIllegal instructionDivided by zeroChk instructionTrapV instructionPrivilege violationDebug mode not availableLine 1111 EmulatorLine 1010 EmulatorSYSTEM ERROR: rebooting...Rom call not availablerÿ @ g@! m2 AoNu“Ép Hçÿþ,O(:0<NA<?ºx_JgÌ08_J1À`ðaÎJAfºgGøL0<¿/QÈÿügGød0</QÈÿüg —Ë0<?/QÈÿüg&Gù`?+ +?+?++fú+gú/Gø[0<÷?QÈÿüAè&OB#p QÈÿü.KHQ <DX€/m N¹`â4€g0@NC âˆS@0ßQÈÿü0tÿ`&0NA.NLßÿpNurÿJ@m @ l Eø`òÐ@ÔÀ2Nu1À_JaâJAn0aÚJAnNLNù"¼0A0<NANC OøDŸÀ"OâˆS@2ØQÈÿü0BRN¹ažOïGø`ð0<÷7QÈÿü(3ü €`gGù`_7_7___ 6ŸgGù 0<?'QÈÿügGù €0<'QÈÿügGø[0<¿'QÈÿü0NALßÿpNuEø`òv?N¹a˜TBZQËÿòBx_JBx`ðNu08_JaþöJAgAø`òprÿRAJXWÈÿú1Á_JNuHç>.<,I:âMÁÁ:@`L6ÇÆ8C`>x8 p0$GÕÀ`(GòH/ / N–PJ@o2SA"JÓÀp0Aò±ÉfŠcÒÖF¶Me¾âMJEf°Lß|øNuHç8(H&I>8SDBF6ÖDâK0ÀÇ* Ú€// N’PJ@o<RF`J@l8SD` `¸FdÎp @LßøNuHÁj D‚ÀHADA`‚ÀHAHÁNuHÁjD‚À`ê‚À`ît4„Àr2NuHABAHA‚ÀBAHANu"/ /a@ Nu"/ /aF NuD€Jm `&J€g(mòJlDa,"DNuD€JnD`DaDNua"Nu‚üJ€gømÞJmä°eg$rNurtNuH@J@f*H@‚Ài t4BAHAÃBNu?BAHA‚À$HA4„À2BBHBNutÃBHçv : E€càMvÖ;P6H@x *HE E€càMxØ;P ˜CgRDDDzé­Ò…*é­”…°‚cÔLß8NuOïÿ¼Hç>,H/h(*( ,($(Aï,rp)áˆÒ€p)H@B@Ò€)áHH@B@Ò€ ÁX‰plаˆfÎ&Ɔ F€À‚†€Ö¯(Ö¯,ƒ×j¤xpà»Ö…(È… F€À†ˆ€Ø‚د0„èÇ·Vpà¼Øƒ$ă F€À…„€Ô†Ô¯4‚$ pÛpàºÔ„"„ F€Àƒ‚€Ò…Ò¯8Á½Îîp à¹Ò‚*Ê‚ F€À„Š€Ö…Ö¯<ƒõ|¯pà»Ö*Ê F€À‚Š€Ø…Ø¯@„G‡Æ*pà¼Øƒ*ʃ F€ÀŠ€Ô…Ô¯D‚¨0FpàºÔ„&oH*Ê„ F€ÀƒŠ€Ò…Ò‹ýF•p à¹Ò‚*Ê‚ F€À„Š€Ö…Ö¯Lƒi€˜Øpà»Ö*Ê F€À‚Š€Ø…Ø¯P„‹D÷¯pà¼Øƒ(oT*ʃ F€ÀŠ€Ô…ÔŒ‚ÿÿ[±pàºÔ„*Ê„ F€ÀƒŠ€Ò…Ò¯X‰\×¾p à¹Ò‚"o\*Ê‚ F€À„Š€Ö…Ö‰ƒk"pà»Ö*o`*Ê F€À‚Š€Ø…Ø„ý˜q“pà¼Øƒ.F‡ od Àƒ*Ê€…Ô€Ôˆ‚¦yCŽpàºÔ„,F†$oh À„*ʃ€…Ò€ÒŠI´!p à¹Ò‚ À„*ʇ€…Ö€Ö¯0ƒö%bpà»Ö À‚*ʆ€…؀دD„À@³@pà¼Øƒ À*F…ʃ€…Ô€Ô¯X‚&^ZQpàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯,é¶Çªp à¹Ò‚ À„*F…Ê‚€…Ö€Ö¯@ƒÖ/]pà»Ö À‚*F…Ê€…؀،„DSpà¼Øƒ À*F…ʃ€…Ô€ÔŠ‚Ø¡æpàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯<çÓûÈp à¹Ò‚ À„*F…Ê‚€…Ö€Ö¯Pƒ!áÍæpà»Ö À‚*F…Ê€…؀؈„Ã7Öpà¼Øƒ À*F…ʃ€…Ô€Ô¯8‚ôÕ ‡pàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯LEZíp à¹Ò‚ À„*F…Ê‚€…Ö€Öƒ©ãépà»Ö À‚*F…Ê€…؀د4„üï£øpà¼Øƒ À*F…ʃ€…Ô€Ô‹‚goÙpàºÔ„ Àƒ*F…Ê„€…Ò€Ò‰*LŠp à¹Ò‚ µ€¹€Ö€Ö¯@ƒÿú9Bpà»Ö ³€µ€Ø€Ø¯L„‡qöpà¼Øƒ ·€³€Ô€Ô¯X‚ma"pàºÔ„ ¹€·€Ò€Òˆýå8 p à¹Ò‚ µ€¹€Ö€Ö¯0ƒ¤¾êDpà»Ö ³€µ€Ø€Ø¯<„KÞÏ©pà¼Øƒ ·€³€Ô€Ô‹‚ö»K`pàºÔ„ ¹€·€Ò€ÒŒ¾¿¼pp à¹Ò‚ µ€¹€Ö€Öƒ(›~Æpà»Ö ³€µ€Ø€Ø¯,„ê¡'úpà¼Øƒ ·€³€Ô€Ô¯8‚Ôï0…pàºÔ„ ¹€·€Ò€Ò¯Dˆp à¹Ò‚ µ€¹€Ö€Ö¯PƒÙÔÐ9pà»Ö ³€µ€Ø€Ø‰„æÛ™åpà¼Øƒ ·€³€Ô€ÔŠ‚¢|øpàºÔ„ ¹€·€Ò€Ò¯4ĬVep à¹Ò‚ F€€µ€Ö€Ö¯,ƒô)"Dpà»Ö F€€ƒ³€Ø€Ø‹„C*ÿ—pà¼Øƒ F€€„·€Ô€Ôˆ‚«”#§pàºÔ„ F€€‚¹€Ò€Ò¯@ü“ 9p à¹Ò‚ F€€µ€Ö€Ö‰ƒe[YÃpà»Ö F€€ƒ³€Ø€Ø¯8„ Ì’pà¼Øƒ F€€„·€Ô€ÔŒ‚ÿïô}pàºÔ„ F€€‚¹€Ò€Ò¯0…„]Ñp à¹Ò‚ F€€µ€Ö€Ö¯Lƒo¨~Opà»Ö F€€ƒ³€Ø€ØŠ„þ,æàpà¼Øƒ F€€„·€Ô€Ô¯D‚£CpàºÔ„ F€€‚¹€Ò€ÒN¡p à¹Ò‚ F€€µ€Ö€Ö¯<ƒ÷S~‚pà»Ö F€€ƒ³€Ø€Ø¯X„½:ò5pà¼Øƒ F€€„·€Ô€Ô¯4‚*×Ò»pàºÔ„ /(Ѓ-@Fƒ €ƒ¹€Ò€Ò¯Pë†Ó‘p à¹Ò‚Ó® Õ®Ù®Lß|øOïDNu oB¨B!|gE#!|ïÍ«‰ !|˜ºÜþ!|2TvNuHç<(o $o$*/(&(æŒp?È€$çŠJ…ož râ ",Ò€)A Ђ(€´€cR)AJ„f&J$E`T Ð…r@²€m&`v@–„Kì// HuHN¹]¶ ЃOï r?²€l@Gò8$E•Ã"M LNºø `"K LNºøGë@EêÿÀp?°Šmê´üg/ / HlN¹]¶Oï Lß<8Nu€QOHç<*o&o tIïpüÀ‚r‚ 3ç‰â¨€(R‚p°‚fà æˆr7’€ r?À @HhHzÿz/ Eúþ®N’Hx/ / N’tOïpüÀ‚r‚ 3ç‰â¨€(R‚p°‚fäLß<PONuÿÿ?ÿigEsDsPd@%"#8Fÿÿ@9hˆb™u‡@W ‚'‡x‘sÿÿ@'6„”RAd%@ÿÿ@#‚8Y6p#@ Rp„0`ÿÿ@8c6P@AqD0$‚`Aÿÿ@B–qD˜V?ùI”3™7†Qÿÿ?ü11p?þ%f82(”@ÿÿ?ÿFgƒ3—U)@ÿÿ?û†4"TB?ý4$ˆx#XXÿÿ?ÿ3ƒPd!–@?ÿcfw#gX@p€%ÿÿ?úDTEQNVÿlHç< x [g|IúÿÈKø[Nº¬–.Hx / pœÐŽ/N¹]¶Oï -Gÿ¨&ƒÿÿÿ|HxpœÐŽ//N¹]¶Oï Hx/HnÿŒN¹]¶Oï -nÿ”ÿx-nÿÿt=nÿŒÿr=nÿŽÿppÀ®ÿ˜-@ÿl n?õÿpc–!îÿx[ !îÿt[1îÿr[1îÿp[!îÿx[,!îÿt[(1îÿr[$1îÿp[&Nº¤¾EîÿôHx / / N¹]¶Oï Hx / p¬ÐŽ/N¹]¶Oï Hx p¬ÐŽ/Hx[N¹]¶Oï Iúþ˜Nº¤4EîÿÐHx Hx[/ N¹]¶Oï Hx / Hx[N¹]¶Oï !îÿx[,!îÿt[(1îÿr[$1îÿp[&Nº¤*EîÿÄHx Hx[/ N¹]¶Oï Hx / pœÐŽ/N¹]¶Oï Hx p¬ÐŽ/Hx[N¹]¶Oï IúýÄNº£žHx Hx[HnÿÜN¹]¶Oï (.ÿä*.ÿà<.ÿÞ6.ÿÜ0.ÿngFCHx pœÐŽ/Hx[$N¹]¶Oï !Ä[ !Å[1Æ[1Ã[Nº¥EîÿèHx Hx[/ N¹]¶Oï Hx / Hx[`V0.ÿngZHx Hz¦¨Hx[$N¹]¶Oï !îÿx[ !îÿt[1îÿr[1îÿp[Nº¤¸Eîÿ¸Hx / / N¹]¶Oï Hx / / N¹]¶Oï Lî<øÿHN^NuNVÿTHç<8.68[Bx[Hx Hz¦`Hx[ Eù]¶N’Oï Nº¡(Jm\ x?ÿ[bÒJDgJCg=|ÿV`BnÿV`JCWÀH€=@ÿVn ÿVHx Hz¥ÒHx[N¹]¶Oï Hx Hx[Hx[ N¹]¶Oï Nº¡~&ƒÿÿÿ|Hx Hx[/N¹]¶Oï Hx /Hx[N¹]¶Oï Hx Hz¥®Hx[$N¹]¶Oï Nº¢(„ÿÿÿpHx Hx[/N¹]¶Oï &ƒÿÿÿdHx //N¹]¶Oï Hx /Hx[N¹]¶Oï Nº©lEîÿ”Hx Hx[/ N¹]¶Oï Hx / Hx[N¹]¶Oï Nº¢òHx Hx[HnÿˆN¹]¶Oï -nÿÿ`-nÿŒÿ\=nÿˆÿZ=nÿŠÿX`œJDgJCg=|ÿV`=| ÿV`JCVÀH€=@ÿVDnÿV-x[ÿ`-x[ÿ\=x[ÿZ=x[ÿX n?õÿXc°Hx Hx[Hx[Iù]¶N”Oï Hx Hx[Hx[$N”Oï Nº îEîÿ Hx Hx[/ N”Oï Hx / HnÿdN”Oï Hx p›FÐŽ/Hx[N¹]¶Oï IúúFNº jEîÿÐHx Hx[/ N¹]¶Oï Hx / Hx[$N¹]¶Oï Hx p›FÐŽ/Hx[N¹]¶Oï IúùºNº EîÿÜHx Hx[/ N¹]¶Oï Hx / Hx[N¹]¶Oï Nº¡¼EîÿÄHx Hx[/ N¹]¶Oï Hx / Hx[N¹]¶Oï !îÿ`[,!îÿ\[(1îÿZ[$1îÿX[&NºŸâEîÿ¸Hx Hx[/ N¹]¶Oï Hx / Hx[N¹]¶Oï !îÿ`[!îÿ\[1îÿZ[ 1îÿX[Nºž¾EîÿôHx Hx[/ N¹]¶Oï Hx / Hx[N¹]¶Oï 0.ÿVgFx[0.ÿVgbGù]¶EúžpgHx Hz¢öHx[ N“Oï N’Eîÿè`Hx Hz¢èHx[ N“Oï N’Eîÿ¬Hx Hx[/ N“Oï Hx / Hx[N“Oï 0.ÿVgFx[`Hx Hz¢@Hx[N’Oï Lî<øÿ0N^Nu x [gBgNºûÈTNu?<Nºû¼TNuNVÿlHç<=x[ÿl28[0.ÿl€A @ÿgª A fHx Hz¡ÈHx[N¹]¶`Š n ÿlg„-x[ÿx-x[ÿt<8[*…ÿÿÿ|Hx Hx[ /Gù]¶N“Oï Hx /Hx[N“Oï NºœJEîÿˆHx Hx[/ N“Oï Hx / Hx[N“Oï Hx /Hx[ N“Oï Eúœ.N’Jf\Hx /Hx[N“Oï Nºœ°(@!îÿx[!îÿt[1îÿl[1Æ[Hx Hz úHx[ N“Oï N’Jgp°Œf!îÿx[!îÿt[1îÿl[`J!îÿx[!îÿt[1îÿl[1Æ[Hx Hz ¾Hx[ N“Oï N’Jf$& f!îÿx[!îÿt[1îÿl[FF1Æ[`Rp°ŒfZ!îÿx[ !îÿt[1îÿl[1Æ[!îÿx[,!îÿt[(1îÿl[&1Æ[$NºœüGîÿ”Hx Hx[/ Eù]¶N’Oï Hx / Hx[N’`îJFfBnÿr`& VÀH€=@ÿrBF €ÿÿ €ÿþb rHA¸üoÔ Àâ‰J€gö*ABB2nÿl nÿt".ÿx`ª!Á[ !È[1É[1Â[!Á[,!È[(1É[&1Â[$NºœXHx Hx[Hnÿ N¹]¶Oï ".ÿ¨ nÿ¤2nÿ¢4.ÿ  & ÀƒgP!Á[ !È[1É[1Â[!îÿx[,!îÿt[(1îÿl[&Bx[$NºœHx Hx[Hnÿ¬N¹]¶Oï ".ÿ´ nÿ°2nÿ®4.ÿ¬ âˆ*@ºüfÿR`(& Dƒ-CÿnrHA`" .ÿnÀâ‰*AJ€gðHx HzžîHx[$Iù]¶N”Oï !îÿx[ !îÿt[1îÿl[Bx[Nº Hx Hx[HnÿôN”Oï ".ÿü nÿø2nÿö4.ÿô(M`¨!Á[ !È[1É[1Â[!Á[,!È[(1É[&1Â[$Nº›,Hx Hx[HnÿÄKù]¶N•Oï ".ÿÌ nÿÈ2nÿÆ4.ÿÄ À®ÿngL!Á[,!È[(1É[&1Â[$!îÿx[ !îÿt[1îÿl[Bx[NºœdHx Hx[HnÿÐN•Oï ".ÿØ nÿÔ2nÿÒ4.ÿÐ âˆ(@¸üfÿT!Á[!È[1É[6.ÿrµC1Ã[`¨!îÿx[!îÿt[1îÿl[1Æ[Nº hEîÿ¸Hx Hx[/ Kù]¶N•Oï Hx / Hx[N•Oï Hx Hnÿ|Hx[$N•Oï Nºš.EîÿèHx Hx[/ N•Oï Hx / Hx[N•Oï NºŸ’EîÿÜHx Hx[/ N•Oï Hx / Hx[N•Oï Lî<øÿHN^Nu o"o É ÉÓï ÉBPNu o"o/)/)/aÖOï Nu opJh f "(²¨dpNuHç0$o6/&oHSHRaBPJ@g¶Sfp` SÿðfäB@Lß Nu o"h!INu/Y o vÆot oÿðd&.ˆ C mfaÊt` Cfalt4`a6$ X&Nu"op")"i`áˆtЂQÉÿö ÿÿÿÿfæNu///aÿvvaÿná‹aÿfá‹aÿ^á‹ X&Nu///aÿHaÿBáK0X&Nu o (NuHç0$o&o&+/?HRaèOï J@g$ j&k`ÛQËÿüƒ ƒÿÿÿÿfì%HpLß NuHç8&o$oHRaþ~XJ@g6üÿð6üB›B“`T(j ÿf ,ÿgRŒ%LHRaÿJ6?HRaþ Oï "Cÿð *L6Ã6À&Á&ªÓª Cÿðf5| pLßNu o"hïï !INu o"hïï ï ï !INuHç $o&/p ¶€bx:` ƒdxz ` ƒdxz`xz jÑÄÑñêcB@`F0/@ÿð€E?HRaÿr\ Dm*g Dg/HRaÿpP`"jÃ%I` ?HRaÿB\pLß8Nu op ógxW@ øgpS@ âghS@ ág`S@ ÝgXS@ ÞgPS@ àgHS@ -g@S@ ßg8S@ Üf åfú ägp` gS@`U@ Ûg Ùfä ÙgS@NuEXPRLISTMATFUNCPRGMPICSTRTEXTGDBDATAFIGMACOTHSYSALLASM‘È0/ @b 2åIÐAAûœNuAù pCú ÉCú² ÉCúÔ ÉFü#OøKøIøNX,O?</až`a>a Jj ˜fz0 hgàa„v Ég°f`RC xéx°CfRadDf×^&é{HCé{ ƒàb88aH=|ÿþÐDa" #fEùGù@Kù M0<ÿ$ØQÈÿü5@à<< a¤ V_a¢aòaú0 xgä Vgê fÎaàaÐBV(á\fxHD,„ J0`èàQÈÿú < F˜€dÐDxÜ@?HPa¦X:0<à˜€dÐDx>€/ aŽÚ@>„Hjàa‚ÐEPa`aval»üf$AúN#È xCù¿ Qÿÿg Ian M0< a Ma`0< J"Ma€ÒÀ0 KavpH@ÛÀa**a¸–…bÿ0g Ma.Aêà"MaPa Bg OCùpa>aŒFü'Eù€.Z ZNÐ/Fü'0¼PP0¼ 0¼ÐÐ0gø0¼PP0¼ÿÿFü# NuHçà Fü'$ID@°Ie6r’@g 1ÿ2¼PPâI`2<ÿ2¼PP04¼4À0gøQÉÿî2¼PP2¼ÿÿFü#LßNu,¼˜VFü'Cøbf2)XA²il6ù` 3A4) Np˜ RB´imBBQÈÿð3BFü#Nu/?<Hoa\0áX_fîNu/p o6/ g6BBCøadFü#JigöFü'2)1ÂÐBRA²imBA3ASiSCfÐ&Fü#NuFü&HçààCù` EéAøad2(²hmPøch`r4fjg¼à¼Pøci`VgRh2€RA²hmBA0`6 g0AøbfJhg"4g20€ShRA²hmBA0`Ø‘LßNsa`þ/p `/p`/p` /p`/pHçÀAû0"Lp˜CéQÈÿøJ fRŒAúSfIìܼLß Nu>~>~x>  zLx>> >>AAcwwFl8<<<< < >>00  >kk>> 08<><80 >cccccc>>cccccc>~````~>>~`~~`~><<<66666666666>``|bf 0fF8ll8}ofn; 000 0  0""~0 0`@>ccckccc>x~ 8  0`0 ~~`0  0`ccooo``>333~3c```c3|6333336|102>201312>200x3c``gc3ffff~ffff<<fff<s366<663sx0000133cwkccccccs{ogcc6ccccc6~333>000x6cccgo>~333>633sff=p00>3333nffff;f0x;fff>v7;00x 8~F 0b~0`0p  p-&>;offo;66<6666< ~f```````;o 66cc6000006cccc6p0<0>06666666w?v666g36<``3  36ffl8>X >{ko>Ikkk>>ccccc66w"AIII6>00<00>!~`b<8lp````~>>c66c>>ccc> 8 0 > ~~0``0 0`| 0TT<<<>khhk>300~00`Z$BB$Zfff<~~$($$ l<"MUQQM"666> (P( ~>"YUYUU"|8DDD8|6 ><<v66`?kkk; c66c8<666>P( (P>fflm6 XX04ZZZ,0`f<0333>0x336333;n0<>ff; <>ff;$<>ff;,<>ff;6<>ff;$<>ff;6 ?HI6fff<,|fffff0 80p6;333>0xffff> 8Ì]PÎ\ÉjÎdÉzÏ ÎÎ,ÍÞÑôÒ$Ï*ËÎîÎXÌJË<ËÖˆɆɘÎäÉÀ̮̮ÌöÍBÉÞÊÉüϘÊäÊÂÌ‚Ó0Í´ÍŠÑÀÑÊÔ8‚l:ÇrÆð‚l:g*gVgB\>‚l:ÇŒçœèvè@ÐÈÞl‚l:ÞÚÞ¶Þd‚l:ÞúÞú‚l:‚l:‚l:Û¾ÝÛ’ÚÙØÛbÛrÛßr‚l:‚l:‚l:‚l:îVîV{Hz´zîJ(It‚l:‚l:‚l:‚l:C C~YÄY´ZjZ`W8W<Wž[ÌSÂU@U‚TDUvThTìT4W¶X XvXøYžW€Y4Y6YXYrYSh‚l:S@VÞ‚‚H‚l:‚l:Hø£RäRþSVW8\ˆ‚l:RÂ[È‚l:[È[È‚l:S|b¨`â`âdž`ÔdŽc&b–a˜aŒb@bbbêcªbpb0e*bŽbVa„‚‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚ ‚‚‚‚Ä‚h‚ª‚¢F¢\Lß*ß|F|>|*߀ßVã0ߔߢ߯ߤ߲àÒàÒàR‚l:‚l:‚l:á”á<à¨ßÂߢå¼å¼å¼å¼åÀå¼åØtÚtLtsbs¬tÚrøt†tÚtÚtÚtÜyìyàyÜyÖyšy*yPydyr‚ f‚ @‚ Œ‚ ®‚ ô‚ ΂ ‚L‚´‚‚ ‚‚ \‚ 6‚l:‚‚ ¨‚ ¶‚ j‚ „‚ Ü]¶¡h‚l:‚l:‚l:34‚^‚l:‚l:‚l:‚º‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:Sž‚l:‚l:‚l:‚l:‚l:‚l:‚dN‚l:‚dh‚dœ‚l:‚d¬‚dò‚e‚eL‚l:‚d‚d4‚ft‚fV‚f@‚eÀ‚eh‚et‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:ÈÈxöxÆxêߌã°â&ßf‚T'Ì‚l:'´‚l:(+)Š*+Ž+Œ(`[)‚l:‚l:+j)<‚l:,æ‚l:_‚l:)‚ 8‚ ˆ‚ ¸‚ Ђl:‚l:‚l:‚l:‚l:‚l:‚l:‚l:zz{:{d‚Ê‚ò‚õjtäøŽu hgxiÚjžgÆf@f4rn‚@‚Þm”ulu¾r´vrxfügk„kvm€möfÈffffFo6v6ú˜k¨m¾oš‚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:‚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:ajbÌc”‚`‚`‚`‚`‚`‚`‚`‚`¢Ì‚^‚^{TyüyôCìE¾AŒAÌA¾BVBBìBÞ‚l:‚Uš‚UÆ‚VÌ‚š‚l:‚l:‚l:î>ðlð|ðTðléÌ‚l:‚l: T Z‚l:‚0‚@‚l:‚l:]¶]”^Î_d^¶_†^t^à_>^V^’_ª_Ð_ô``0`l^^`R^¤ZÚZž‚l:S$WPy”y*‚l:‚ L‚ Ђ È‚l:‚l:‚l:‚l:‚l:]‚l:Ê$É®àv‚‚l:xpx‚l:‚l:xÂxV‚,´,Ú,ê‚l:,ê‚l:[°‚LÈ‚L²‚LÖ‚Lâ‚MD‚M‚MN‚M:¤>‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:ô¾‚l:È> @¡¡¡B¡B£†£î‚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: ` x‚l:‚l:‚l: > >‚l:‚l:‚l:‚l:¢”‚ .‚š‚l:‚Ü‚l:‚Þ‚ð‚ð‚Þ‚ ‚ ‚ð‚ *‚l:‚l:‚l:¢h‚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:J(‚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:I.I.‚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:‚ð‚‚Ô‚À{x‚l:‚l:‚l:‚l:‚l:‚l:‚l:ôòõ‚l:‚l:‚l:õJ‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:¡R‚l:‚l:‚l:‚l:‚l:‚l:ê"‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚l:‚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:&΂g ‚gâ‚l:‚l:‚l:‚l:‚l:‚l:ÀPKPFc¶‚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:‚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:‚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:aL‚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:‚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:‚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:‚l:‚l:(http://www.timetoteam.fr.st) This program is free software; you can redistribute it and/or modify it under the terms of the GNU GPL as published by the Free Software Foundation (version 2, or any later version). It is distributed WITHOUT ANY WARRANTY. See http://www.gnu.org for more details.Nq @tiemu-3.03-nogdb+dfsg/pedrom/pedrom9x.tib000066400000000000000000002761471220314353500203440ustar00rootroot00000000000000€|€€!€28O€¡€MAdvanced Mathematics Software& @€{ ÌÌÌÌLA!ˆBEBE BE&BE,BE2BE8BE>BEDBE¢BEºROA®šA®ÀA®àA®ìA®öA®šBEB@pB@”B@ Bj<B@¢B@àBAZBG|BF`A!ˆBFtBF€BF¦BF~BFBFBFBFBFBG¾BFBFBFÿUªÿüBƒd¹pFü'OøLpKù`Mùp=|@@;|ÿÿ:¼€2<tQÉÿþg€Aù^¤NqNqNqFü'0€NqNqNqFü'0€9pp3ü?p3À^3À^3À ^#Àp#ÀpNqNqNqFü'0p@@ ;|1€;| €@|!|²|î;|ÿÿ‘ÈpÿB˜QÈÿüa¶"|A}$³üA€bþ9`Vø]ËB¸aLaCìHz(Da$Hz(ZaHyBšôaa>†a.na}VaJaŒ` NùA|B8]ËOøLAøDN`aRan2$*3ü²`v Ac&( Cg3üÌ`Aú(>S‚fBrŸHkPÄAø]düÃÅÄ ¨ÿü¼N¹A®ŒB¸[´B§vRWaV‚QËÿøHyBAbHxd?<aVÖHxÐ?<aVÐHxd?<aVÄHyA}Hx?<aV¬aY*aUVaX2>¼2aVø>¼‚aVøHx] aXXaVÌaBÔAø]l!È]TBP||N¹AÉlBhBh" <ïx!@!@!@!|L0B¨$!È]Pa¢aBa?¬a|$N¹B"|9`gý~OøLFü`NùBEv¹`Aúü`“Ép?"ØQÈÿüù`NuHçÿþOïÿì,OEùCGùD RÿÿgR Rÿüf6 NCêBpÙWÈÿüfSˆü\Cê pÙWÈÿügBSˆIêa,î)ˆx8*DrÂDØAÕĵËe¨$K×üµü_ÿÿc˜OîLßÿNuHçþNL?BEaþJf¬08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`µüÿÿbp @fh·ü_ÿÿb`·üBÿÿcX @fPRƒCÿþIó8ÿ " H@HA²@f:Iò8ÿ¹üÿÿb. ¸ƒÃÌ[¨f$ ¸%Ue]¨fâ‹0<AúJCøcz2ØQÈÿüNøczzAù^¹`NqNqNqFü'0NqNqNqFü'0ù`0FßLßþNuSCm"(K8¼PP>6¼6Ç0gøQËÿî8¼PP8¼ÿÿNùA%‚HçþNL?BEaÜJfx08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`µü_ÿÿb>µüBÿÿc6 ¸ƒÃÌ[¨f, ¸%Ue]¨f" €ÿÿ$@0<AúJCøcz2ØQÈÿüNøczzAù^¹`NqNqNqFü'0NqNqNqFü'0ù`0FßLßþNu4¼ÿÿ4¼PP4¼ 4¼ÐÐ0gø4¼PP4¼ÿÿNùA&pN¹BAb ]ÀNuHç`pt2RAÐBQÉÿúLßNuHçÿþNL?Fü'!üƒÃÌ[¨!ü%Ue]¨EùCGùD~ÿ¾Rglx8*DrÂDØAIê!Ü\N!Ü\RB8\VAø\Na/6Jg6!Ü\N!Ü\RAø\Na/"Jg":aÿtº@fÕĵËe¬$K×üµü_ÿÿcœ`EëŠÐaþZ`ä ŠcÞâˆS@¾ZVÈÿüfä`ÐB¸[¨B¸]¨FßLßÿNu /B@ @tÿ2 o &/$NL?Fü'!üƒÃÌ[¨!ü%Ue]¨,O"gHPa-f& g¸a)fB@2( Af¦0h NC(HpÐT/aýž faaý’ g‚Gèÿì a)**Ha7J8gl a(J€gbaü2?/-//(/?<ÿþ$OvaúGë$L6TCaùò>¼ÿü$OGëÿìvaùâJ@g"Gëm ?- ;D Aøc¶åL!‹@a7 p.NB¸[¨B¸]¨FßLß|Nu oNL?Fü'!üƒÃÌ[¨!ü%Ue]¨BgHPa,Š g/H>¨ aü~ oBh a/”\B¸[¨B¸]¨FßNu"y@³ü@c ³ü@ÿÿbNÑAú˜NùBEJpNuHç>NL?Fü'!üƒÃÌ[¨!ü%Ue]¨,OEùCGùDBz| Rÿÿg RÿügPÃR…p0*@rÂ@ÐAÕÀµËeÚJgžçE¿Åcª$K•üBg RÿÿgDx8*DrÂDØA Rÿøg(AêN¹A·N?gt/a5*?gj0@NCâŒSD0ÚQÌÿüxÕĵËe¶EëŠÐaù”J@gH>g,aû¶Gèÿì0GNC$H&aøV0CëAøc¶åH!‰0a5’`Ð$K×üBzµü_ÿÿcÿ$| .NB¸[¨B¸]¨FßLß|øNuaü†/(Hx/(/(Hz"E//axÀOïNuCúô o`2jpNuNLFü'08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`AùA Cø[$pØQÈÿüAù^¹`NqNqNqFü'0NqNqNqFü'0ù`Fü o?8[(/8[$Hz!WHPaxOïNuaþ a@Na4Receiving a TIB... ON to cancel BEFORE receiving. aNBNLFü'Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`aö"aÎAùBgCù0<"ØQÈÿüNù LJfüBgHhÿÿa)ž f&a(aL.ˆg0|a#t g0h "La#f f W`Ü\NuHyAMoa)fX g0h aM` ÙfSˆNu‘ÈNu -föarâCèNug *g ?g g²gèpNuRˆ`àNuNugö²føHç@ÀaÈLßJfêNuHçþþ$LxGø\hgÖ gôSŠ'Š@XD DŒlÀB "f0R³@üRŠgª "fô`PRŠRŠ >fRŠg gôSŠ` >gà gÊg` *fPÁ ?fPÁ fæB*ÿÿJgÿn*3@üYDCø\DJfü?<Hiÿÿa(¤\`a(ò&gÿF"EaþòJfì'ƒ@XD DŒmà`SŠJfºa äL1Ä\fLßNu s@üEø^ CúN f >fRˆT‰`Eø^ 2f" >f  gúJ gavb gYDb¬auÖNurwaHçðàap&68\fUCmEø\pÔÃÔÃÔÃÔÃ/"at|XQËÿöLßNuEúaKÊ g$aKú @ m @ènÀü/?<aI:aI¦\NuaujaÈat LgZ "f gP "fö |fæHPB 8^fBx^Aø^0¸^1<a|‘ÈCúÿREø^auša@(_8^ fAø^ au` 8^f$Bx^Aø^0¸^1<a{Ò1ü^aAø^ `tìanü1ø]\$  gúSŒGúà$K0g&Có LJg± gøTŠ`êg fòaý|0Nó L—Ëg föGèÿÿBaü¨ g¼ (gF?( aJD óg àg"T`.aý6aþ†0Bx]Üat 08]ÜfNu`GÔaýaþh0NùBXHTaJ.¸]¶N¹AðJ8[ºg .¸]¶N¹Aíþ>€0@NCHPaJXaa0XNuHçÿþv(žÃ&OHT$Lg  föB$aJ‡ gga``ø(WgB $gZ >g f t a8t>a4`ê ,2ÿþf , ÿýgÚt a,ÿÿ`ÐBp( _"Oa+¼Oï(LßÿNuSCmÂNu~$L {fRŠgÒ }fö`~SŒ`~ gô  föB,ÿÿHçOïÿÄHWaF„J@f,amDHRa:.¸]¶N¹AðX*x]¶8(KzN¹Aî26&LaFxOï@Lßpðgÿ$aÿ|`ÿNùAéÊHç>HPa+ø _aarjLß|øNu o0/Hç>>VGGÿþžÇ"OBS@m.ØQÈÿüBIïOïÿÄHWaEìJ@f aýaF`>€ar$Oï@ÞÇLß|øNuHz‰aHv`Hz` Hzê`HzaHZXNuHzÍaHTYaGü OvaJB@ yf ef sfJWÀPNuaHÚaFº?aH¼0NuHçàÀ?<HP??a<Oï LßNuHç~ðzÿ"HBBD<8]N¹B&ÐF1À]HQJfüHQ| ÿÿü ü B028]a¨"_B!"_aŽ @ gŠ @g" @g` @gp @Rgn @Xgr @QgÒ @TgÖ @QgÚ @TgÜ @ kgx @ gj @ m @oT @ÿbta*`ÿX³ÈgÿRSDS‰$Iêfú`ÿBBDBaþª0Lß~NuHR¸CgRD$IJfüSŠRSеÉlöÀ$_Nu@ HçàÀOïÿì?HzVHoaprEï aFüOï$HLß gþàJgþÚgþÔ ;gaš`ð³ÈgþÄS‰`þ¾Jgþ¸R‰`þ²³Ègþ¬S‰`öJgþ¢R‰`öJgzÿa `þ’"HücülüeüaürB`ÿ:0g2HPY OÆø] üï¸] P?<Hz2¦Hhÿýa2®Oï _"HBBDNu E lþ6RE`JEoSEGø_L0Àü*×ÀJg a¤gaþâ`öSE`þ a2`þHçÿþ/8]aE¼!ß]Lßÿ`ýìHçàÀAúœ‚ҽƳ2<ÞÚÿ`‘äZ«ø¸\1¼?BùfZíNÔTÉ>aúJ@g:NL?Fü'!üƒÃÌ[¨!ü%Ue]¨EùCèaì,Õüµü`cîNBaùÜJ@föNuaùÒJ@fó¤NuaùÆJ@fñ€Nu/,OEú x\fm$ x\l -f hgŒ lf EúÔHz¶aAäHx\DHzxaAØ>¼B8\CAø\DJfüHhÿÿaêv g>RC&H0( f B§BgBgBg`0@NCHPt4B@0(ÿ??+ ?HSHRaA†Oïaþ`¾>ƒHz6aAr.N,_NuHzHzaA`BgB§a‚v gÖRCHPHzOaAFPaÀ`èEúþF0gAúþ>HpHz/aA&PXŠ`æ`ø a(²QB§B§B§HoHoB§aí^Oï Ñ—a(/Hza@ìOï Nu`2´Aú’ x\fm"x\lg \föB!`>!üAMµ\l1ü\f`.AúïÈ`(AúÎ`"Aú Î`Aúî$`Aúv`AúÈ` Aú‚`Aúîž x\fmøOïÿœ&O$H08\fS@g41À\fåHCø\h"q KBÙfüB§HhÿÿN’PJ@fHkHzéa@6P`ÄOïdNuHç>N¹BJØawar¦a 4aè0ad*?<B§a4>¨ hþÿ a& ax fêEøcº:<ÎvxJšg$0 @g @g°xaƒa%ÌRCQÍÿÔa)¨a'L>„g Hzýa?¦X\Lß|øNu x\ff÷ x\lJfü"x\pJfüHiÿÿHhÿÿa¶PJ@fHzýHza?^PNu x\fföä] x\laÞ gF>¨ 0WNCp0V@a$J@g00WNC2VA"H>€0@NCÙSAfú x\paJ€g aÄ1W `a%HzHz£a>ðP\Nup x\fg 8\l!À^€N¹B4à`0¦ x\fm/8\lHz¢a>ÀP`ö>Nuaunppg is unvailablea>˜XNu x\fmö$Hç>Oïÿt&O"KAø\lp!"ØQÈÿüOïÿÒ(OB:8\fSE Lp(Cø^ N¹A¬ gPJgêJfü ( ÿþfB(ÿþañ88\fEø\habJ/afì.¸]¶Bg?<@ [JfüHhÿÿaOï SEgSDfÒ`žOïºLß|øNu?8_JHz8a=ò\Eø`òvBD0g0@NCHh/?Hz+a=ÐOïRDQËÿàNu x\fmõT x\la> N¹BIôJAo0BRa#²Nu48`ð x\fg x\la=âNùBJ Eú‚ x\fmRSx\fgJ08\fåHCø\h&q?<=HSa `\ gÜB 1WÃtÿ0gÎRBAò"Ka –J@fì¸cvJg¶øcv`°Nuvÿ0gøRCHzU8cvfV—HrHz|a=Oï `ÜMS[f x\l x\fgEø^ CúðþN¹A¦t8^ fBx]\Hx^ aXJ@ma`ðp Hx^?a \NuNùA«.NùA©† x\foEø\lCúð² Z -f Aø^ f.` N¹A¨^ g"HPaÂJ@m Hx^?a¼\`î _N¹A¦Sx\fn¼NuUx\fm”n8^ fˆEú 0x^`AN€Eø\p Zaº gd0h NCp0 0àÿfRVˆ&H/8\lHPa ¨P g>·Èl föTˆHPg fö&‘×SH?/*ÿüa %s: %.*s a;ÊOï CJf²Sx\flŒNu x\ffóHHç x\la;ú&@vrP‹B@#?QÉÿøHSP‹Hz¥a;„OïQËÿàLßNuhexdumpgrepcatmoreflagsinstall formatpsexitkillreadinstall tibunppgechosidegetcalccpmvcleansendcalccdrmdirmkdirrmcleararcunarcmeminstall product coderesethelplsrmarcAutoArcOffSwitchGetKeySwitchStatusError0<NA1ÀcjNu0`ÿ" VgrJ8\ôf2<pV‘Èa".NLß@8NuB@BBSAÐBQÉÿúáXNuHç"PÅ`Hç"BE,O6<ˆx8$H Vg 1Ã\ü1Ä\þ!Ê]àY?? OHxHPaý¸J@fýœ gFJgB— OHxHPaýœJ@fý€Y„.„HRaýŒJ@fýp J"aÿv1À\úHxHx\úaýnJ@fýR.NLßD8Nu08\øga`Bx\øNua6âa4¨/8]Hç>,OJ8\õfHzra-’>¼a4OïÿÄHWa3b>€ga¶aû’Pø\õa_œa4faû‚`Öaýì8\õ Vg ’gº Zg² hgª 6g faÿh`– g Éfþ0x\øNCCúDBAXˆgÁIN¹B¸ IJ@f¢B@ c¢ŽS@Oïÿì"OB @c Zb ÁQÈÿêBHQaþþa g0( @GgHx Orp6aþN` ‘Èrp aþ@aý 8V\õfÿ(aý 8\õfÿa>.€f¢Š0x\øNCCè08\öâHU@0ÙQÈÿüp08\öY€/?8\øa\a „1x\ø Bx\ø8cvg /B§aâÎP`Œ ¢fZ0x\øNC( f—ËBA(g\ˆ c¢ŽB§B§BgGïSAØQÉÿüx?<HSaŽ(O gVDOïÿò./hBop0( 0h NC@€f00ÿT@Aúêg´fø(`prAàXH@/@ aŠ`¦ gB§?<QJ#füR‹ OpÛQÈÿüDaýŽà\AùAJ¨/ / / >„ Or paüäOï aû¼ 8V\õfýÈaû® 8 \õfýº" ’Xp Oaü®aû’ 8V\õfýž0<’BA‘Èaüœ`ZBA(g c¢ŽOïÿì\ˆ$OBSAØQÉÿüaýBHRaÂ`* mfAøL2<paüV` ‡f ?8\öa2èT`¢a0”a*ôB8\õ.NLß|ø!ß]Nu o?( a2ÊT Üf Uˆ"o0) g  fÐNuNuNVÿ aø˜Hnÿ¦a0>€fHza*(B—?<ˆBg/.aa0`a~`a1aøVa*npN^Nu o0/ Hç0OïÿÄ&O6HPa RAM Free: %6.6ld Flash ROM Free: %7.7ld ONOFF%%=%u PID size name %d %ld %s Kill: %s Shell%s %s stdinArg: filename(s) Arg: SrcFile DestFile %s:failed Arg: number %04d%08lX %02X ????%f%ld%sall#!PedroMNot a script! Line %ld: %s %02lX-%lX-%lX-%lX%06lX: %02X %02X %02X %02X %02X %02X %02X %02X %02X Free %d handle(s) USE LEFT, RIGHT, UP, DOWN, ENTER and CANCELAPPLICATIONS & MODEAPPS/MODE menu not implemented. Wait for next release.Help KeysQ[?] W[!] E[é] R[@] T[#] Y[] U[ü] I[—] O[ô] P[_] A[à] S[ß] D[°] F[Ÿ] G[€] H[&] J[¾] K[|] L["] Z[CAPS] X[©] C[ç] V[] B['] N[~] M[;] ˆ[:] ' '[$]ln(exp(sin(cos(tan(sin´(cos´(tan´(¨(½(¼(Ž(^-1ans(1)0.8106/14/2005BUSYSTOPBATT 2ND SHIFT 3RD ALPHAALOCKSALCKAøcºprÿ ÁQÈÿüHxa4XAúùâr1Á[İAf>0@NC ¼ CúüoaüAúùÂr 1Á[ưAfCúüYadAúù¬J@gAøcºpB˜QÈÿüNuNùBEvHPaH f(aZ6g åHAøc¶!Œa¢a g 1C 1| XNu?NCTˆ6gSCHçÀa˜LßJ@g AèQËÿê‘È6Nu?NCRh0Wa 0_NCJ@fSh‘ÈNu2(SAÂüAðNu2NC4´PlPB1ÄüX‚/?a\NuQB´PlæpNuNCTˆ0rCúNùBKLï ™f ‘mnNupÿNupNup ÑÁQÈÿøAèÿòCéÿòNuHPN¹A·N40@NCTˆ2SA0ÁÂüÑÁ"_aÊ0B?aÿj0_`Ž /H@0|NC"HTH2SA°h g AèQÉÿôpNu ‰H@0<H@Nup“É \fCè fòRˆ f"HAø\DNuHQCø\Nr \gÀQÉÿôBAø\N"_NuHç`ÀHPad,?aèp0"_H@“È0 LßNup/ Üe âc óg øgpNu o"oHxHPHQa HOï Nu o"opÙWÈÿüNu o"opÙWÈÿüBNu0oNC"o g p0/H@“È0 Nu /J€gH@0@H@NC"H2)ÂüXA²@cÐÀNu‘ÈNu oCúùÍa vJ@WÀH€Nu?6/?<B§a,\Çh ax fô6Nu//a”.€ga”0h a'¦/ °fB— Nu"oJ!füR‰HQa4J@gZ"W0|aý\p"fJHxa ö>€g:0@NC ¼ 0|aýb g"opÙQÈÿü ü€0×0|aý˜`a pBW0TXNu o0h NC0(Nu"oJ!füR‰0|aüæp"g Iaÿ D@T@Nu4/f4"oJ!füR‰0| g aü² g\ h pÀoga p`Ha ’`BCú ŒpÀogCú X0|a P0|NCTˆ4SBmHç À0h N‘LßAèQÊÿì0|N‘pNu"oJ!füR‰0|aü> g"_ gpgÁQÈÿøBNuOïÿœ"OBØfüB§HiÿÿaOïlNuBg`?<//a \ fûTNu oaû ofAúõÙHQ"H0|aùÌ"_ g0h aù¾Nu"oJ!füR‰ oJ füRˆaÎ fûNu oJ füRˆ"H0|aùŠ`úìpÀo1À\b @f&"o gJ!füR‰ g0|aùZ g0h `0|NCTˆ2aú¨JAg!À\:NuB¸\:‘ÈNu‘È 8\:gð x\bfHaû&2( A€g:0h NCTˆ2aúj!À\:JAgNu x\bfº 8\:aùà@!À\:aúè g¢Nu@!À\:aúÖ gÎNu‘È 8\:g† x\bf^aú¼2( A€gP@mÿjaú¦0h NCTˆ2gSAÂüÑÁaùê!À\:JAgNu x\bfÿ: 8\:aù^!À\:aúj gÿ$Nu@mØ!À\:aúT gÌNu 8\:g"HA Agaù&`ú6Aúô)Nu?/Hzõ2Hx\Oai¸Oï B8\NAø\SNuNu08\dR@1À\d?aÒHPaúzJ@f¢žaâ W\Nu08\dg?a´BWHPaüSx\d\Nu?68\d–oaÚQËÿü6NuOïÿœ"OBØfüHiÿÿa,OïhNu"oJ!füR‰ oJ füRˆ` o/aø¤Aúó{` o/aø”HQ"H0|a÷b 0h f aùè0@J@f¡J6aüJ@f£Þ"W0Ca÷: f40Ca÷Z f¢ž"WpÙQÈÿü üBX0Ca÷’0C"Wa÷ aøl.€` aød.€2( Ag£Ô?( Bh aBT &Nu /aøÞ` Bg//aüÞ\ g0( @˜f?( a÷vJWgaTpNupNu o0( @g,0( @f"?( 1h Bhhûï h aÆTpNuBg//aün\r fpNur0( @gð1h Bh h hýÿ `÷Œ o /OïÿêgBWHo/aû°P IHPa¢.€g\0hNCp0T@/a RX4a÷ìJBf1h Bhhûï h B—`1B 0hNCp0R@"H0BNCÙQÈÿü OïNuJgôa÷.€`ì?<B§aü \0( @gaþæaüL fêNupNuBg//aû|\ g:0( @f0?( // aýÔXa÷N g1_ Bg//aûH\aõòpNuTpNu oaúDJ@g"a€ o"o @lCé“ÀBØfüpNupNuNVÿÜHx /. HnÿâaX|#ÿëHnÿëBg?<@Hnÿì/.N¹BÆX.ˆaN^Nu0/ @@g0 @@g @@g¡//aýXNu//aýaöŽX1o Nu o /8]®/8]¶!È]¶ ÚbaD`p0/‘ÀRˆ!È]®aEd!ß]¶!ß]®?//aüÄaö@X1_ NuHç>$o,8/0BgB§a{æ\6g>|4† DfAúñ9a6B§Bgaúx\HPHx\DaõšX _J@f Dg4†aaú¬ fÜ0Lß|øNu?HP?<ÿÿ?a{´Oï RFJ@gNu>ƒa XBC`Ò o"o / g³ÈbÑÀÓÀ!S€fú oNu o"o / gìt"ÂBg" ÂBg(ÙS€g(`" ÂBf"è‰gSA Ù Ù Ù ÙQÉÿö@gÙS€fú oNu o4/ / g<"AgÂS€g.áI4HB4"è‰gSA    ÂQÉÿö@gS@ÂQÈÿü oNu o4/ / g S@´WÈÿüSˆg‘ÈNu o"o / gS€± VÈÿü !H€Nu oa o4/R€`¾ o JfüˆD€S€Nu o"o JfüSˆÙfü @Nu o"o Ùfü @Nu o"oB@BA` ²g ANufòH€Nu o"o`( @c Zb @c Zb ²gpNufÒH€Nu o"o"/ B@Smg°VÉÿøS‰ H€Nu o"o"/ Ùg Sfø oNuBSfú`ò o"o"/ JfüSˆSmÙWÉÿüB oNu"o$/g Bg²gføR‰`ê ¯Nu otg"og$²gföRˆ`ä BNu"/ A/ Jfü° g²ˆfø‘ÈNu"o$/g Bg²føR‰`î ¯Nu o"ot0(1(g R‚²gðJfê‘ÈNu0/AùB’ @bJfüQÈÿúNu /g!À^J¸^g."x^g ogô°g `ö x^B¸^Nu x^B)ÿÿ!É^Nu‘ÈNuAù‚ö ü} BXpÿAøc¶!È]X À0<ÎB˜QÈÿüNu /a J@f¢žNu //aJ@fa6 aXNu^€rþÀAù‚ö±üdX"4f°cAðú`è’€ bÐ`Cðú"ÁBY!@ÿúHPa. _J@fB`` 1@ÿþåHCøc¶#ˆäH"(ÿúâ‰WBXSfúNupNuAøc¶0<ÏJ˜gQÈÿú`ê@ÏD@Nu o0 ` o0gÒBP`0/gÈåHAøc¶"p" gºB°³ü@bN2!BQ$!åI°Af.Aù‚öt±Éb g$ÑÐ`òJ‚g BJhf Ñ"H Añ±üd Jhf Ñ‘Nu0o0gNC`€Nu0oNC0 @€±ü@cpNu0o0gNC`ÿNu0o0g NCh€ÿþNu‘ÈNu /göT€aþ†‘È?gaÖ0×TNu0oNC±ü@mp0T€Nu (ÿú]€NuAùNup0/åH x]X pNuAù‚öp±üd"o6JXfÐAðú`æNu oCøcºp4<ÎR@±ÙWÊÿúfNuB@Nua"<ÿð°cÃ@Nua*Aù‚öp±üd"oâJXf°b Aðú`â]€NuAù‚ö`ÑÁ±üdZ"o¶Jhfê"Cð³üd@0)f "o–Ó`âg I`Ä$ âˆ0ÙS€fú Bh"B\‚0)åHCøc¶#‚`²NuAøc¶p4<ÏJ˜fR€QÊÿøNu ¯ÿðcB@Nu$/0/f `ý /6^‚rþÄ0@NCB@±ü bª]ˆ Cð°‚ltJif$"Ò€’‚m lÔrCð( ‚Jgt"ÁBY`nB@Jhmj aüÂJ@g`0CNCCèÿú0@NCUˆ"Yâ‰0ÙSfú?0aýT0Aøc¶åHåK!°0B°`$Jif"Ò€’‚Cð("ÁBY ‚` ‚" €lè0/&Nu//a XJ@f¢žNuaþ† /^€rþÀAù‚ö“ɱüd"4f°b"HAðú`æ$ gü” I")ÿú’€ bÐ`AñBa#!@ÿúHPaür _J@fB``üb@€1@ÿþåHCøc¶#ˆäH"(ÿúâ‰WBXSfúNu0oNC0 @€gpNu/ aÿ^XJ@gð0@NC"â‰0ÙSfú?0/aü@Aøc¶02/åHåI!°B°0/NuCøc¶Aù‚ö±üd.4(g åJ$1 ]‚±ÂfP$ ‚cF ‚èb>f8ÑÂ`ʱüf,pÿ"²€f$4<Î"g ‚õc _ÿÿb AfQÊÿäNuAúä“NùBEva`€aB3ü €`B9pü\"Bx]AúÔ!Ð\>aæ1ü€]\NùA¥ô8\"ï\"Nu8\"Nu!üL[À1ü] 1üï\1ü\ B8] Nu!ï[À1ï \ 0/1À\æHR@1À] €¸[À@À] Nu o!Ø[ÀØ\Ø\!Ø\"Rˆ1Ø]1Ø]1Ø]Ø\'Ø\)Ø\+Ø\-08\`² o ø[Àø\ø\!ø\"B0ø]0ø]0ø]ø\'ø\)ø\+ø\-Nu08]1ï]Nu oHRCø\&Eø\.B@ré2ÀQÉÿö$_NuAø\20ï0ï0ï0ï QˆNu oBB‘“YˆNuB¸\2B¸\6 oØ\3Ø\5Ø\7Ø\9Aø\2Nu o"oaLJ@g> o"o°d)ÿÿáH°d)ÿÿሰc)ÿÿሰc)ÿÿ o €pNu o"op²)b²)b²e ²)epNuïxzïïïHç oaÿ"o B@BABBBD˜AlDD6/aRAQÌÿúAø\.aþÒLßNuHçø@²x\(m²x\,nº´@nÁB88\&´Dmª°Dl088\*°Dnš´Do4"x[ÀÂø] ÓÁJ8] fˆx¹BÈBèJrÂèH”f Ð@ÒÀpÿØAéhâhSmg ±Q`XF@ÁQ`RQ`NÐ@ÒÀpÿâhSmg.±YpÿUmFYQÊÿüéh±Q`,F@ÁYpUm2ÀQÊÿüpÿéhF@ÁQ`YpÿUm2ÀQÊÿüéhQLßNu”@8æLÒÄF@Jg. gÑSBkÜQÈÿøR‰QBm,PÙ`øQSBkÈQÈÿøR‰QBmF`ø‘SBk´QÈÿøR‰QBmB`øpPB`´Hçü€°x\&m\°x\*nV´AnÁB88\(´DmH²Dl288\,²Dn:´Do4”A8a8:8] BÂSCmn …ÐÅQÌÿú`µÐÅQÌÿú` FÅÐÅQÌÿúLß?NuHç 6/ :/"<8] Y$OHR//$//$aý~J@g” x[ÀB@æHBB*BD*˜BÄÆÔ@ÐÂBA*æI’@mhJCl2DC˜CcT™*0ÀÆÐÀ0ÀÆCð0HçÀÙS@lúL߯’ÆSDfè`(˜Cc$Ù*0ÀÆCð0HçÀÙS@lúLßÐÆÒÆSDfè?HRHRaýpOêLßxNuHç>(o,&o08/4:/6Q$OHRHTHSaüºJ@g’%TJDl ™*™*`™*dB*™*dB*HjHjHSaü€J@gNÙ*Ù*HjHRHjaüfaJa >g.?HRHRaüÜ0GNC?<HzüÀHPa(D??N¹Aø6?aöP` ?HRHRaü®OêLß|øNuAêB@BABBBCNu1ï]1ï]Nu?8]?8]?8]?/ 1×]?/ 1×]aOï NuHç 0/2/4/ 6/" x[À4x] ´@lÅ@ÃC8 ÈÁ<æNØFÐÄ<FFF:š@8 >žAdDDDG4/$g|SBfî¾Ed:46–EÖCÞGšGDEj ÐÚGjSFl|RHQÊÿð`H ÐÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj ÐÞEjÐÄQËÿö` ÐSFl|RHÞBkêÐÄQËÿîLßøNu¾Ed:46–EÖCÞGšGDEj ÚGjSFl|RHQÊÿð`H ÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj ÞEjÐÄQËÿö` SFl|RHÞBkêÐÄQËÿîLßøNu¾Ed:46–EÖCÞGšGDEj PÚGjSFl|RHQÊÿð`H PÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj PÞEjÐÄQËÿö` PSFl|RHÞBkêÐÄQËÿîLßøNuBx]lBx]Bx]Bx\$1ü€]\a ü]`ät x[À08\ R@Àø] `ð0/2/°x\&m°x\*l²x\(m²x\,la(48]`Nu0/2/a4/g SBgPNuÐNuNu x[À4Äø] r³@Â@æHÔ@ÐÂNu0/2/aÞVÀH€Nu0/2/4/ o Hç>8\"Sg.mv| xÿBIùBy`ÄÆØÂ`(IùBs`ÄüØÂ|xÿæ¬áœ`v|xÀIùBk`çJØÂBGÐCÒF°Go²GoºC’F°Gn®²Gn¦YˆBG(²Gl’GÜA˜Á24ÔF(”GoœBRFzÿ4ÔC>PGGø4GBG°Gl > žzïmSEBG(´Go> ž(?zïmSEFEÊ_ÐC>èHÐ@Âø] ÐA"x[ÀÒÀtG”GÔClBTI>/6`<‚¬TÖäfŠ@®Bs`Bk`By`Pedr0/2/ o4/ Hç>><ð BbžJ8] gZBÔB4; °Kû ¬zÿGùBy`xÿBB@g" gQGmÀü Ió| N•QBlàBTI`ØSˆLß|ørpNuGùBk`(<ÿÿÿB@gâ gÜ]GmØçHIó|N•]BlâBTI`ÚGùBs`B@g¶ g°ÀüIóžCm¢xÿæ¬áœ|N•”lØBTI`Ð$I BoUJpå¨F€Á’ÔÎQÎÿòNupåhF@ÁRÔÎQÎÿòNu$I BoUJp娒ÔÎQÎÿôNupåhRÔÎQÎÿôNu$I BoUJp娱’ÔÎQÎÿôNupåh±RÔÎQÎÿôNu"å¹$I BoUJpå¨Ã’’ÔÎQÎÿòNupåhÃRRÔÎQÎÿòNu"å¹F$I BoUJpå¨F€ƒ’Á’ÔÎQÎÿðNupåhF@ƒRÁRÔÎQÎÿðNu$I BoSŠQBpåhÀEF@Á*àHÁÔÎQÎÿêNu$I BoSŠQBpåhÀE*àHÔÎQÎÿìNu$I BoSŠQBpåhÀE±*àH±ÔÎQÎÿìNu"å¹$I BoSŠQBà™FE‚EFEpåhÀEàYÃàYÃàH"ÔÎQÎÿæNu"å¹F$I BoSŠQBà™ÂEpåhÀEF@àYƒàYƒÁàHÁ"ÔÎQÎÿäNup8\"ÐÐSlCùBs`BA/Âü1Nu o2/CùBs`tpSmgt`ÐBJfúNuÄüÐ1 BBfòNuHç`À8\"aÊLßNu oHç",O$Haó@BgHzôêHzôæaôîAúôâaóðvp4<ïryaõ g"BWaó8>¼HR?<zBgaüT>„aòèPø]Aø\.aó´.NLßDNuB@J8]g6Oïÿì OaóZB8]‘Èa€Aø\Da.8\#?aÂBWaöT OaòüOïpNuJ8]gXNu oaðCø\Nrg `c zbàÀQÉÿè`ü QÉÿúü BBgaòN>€?<Hx\N?<zBgaû Oï aò2TNua˜Bgaò&>€0/ @l(AúÜGS@m AúÜ0gAúÜ/?<HP?<z?<Ûaû\Oï añîTNuaÿTBgañà>€0/g ?<Sf>¼HzÛô?<z?<Ûaû"Oï añ´TNuaÿBgañ¦>€0/ @ b(Ð@rÿRAâHfúÒA2;"?<H{?<z?<(aúÜOï añnTNuÛ™Û¥Û´Û­Û¼ÛÈÛÂNuAúÚ`þ oB@BABB”@RBB@AR@ o0À0ÂNu opBABB”@æJRBB@AR@ÀÂX@NuHç>Y$OÀÁÂÃ$O OaÊ/aëš8g0DNCHPHRN¹AõOê00@NCLß|øNu oañš o4/ Hç028:¸@lÁD˜@ºAlÃEšAvÆBaOg S@SATDTEaOLß8Aø\.`ñPHç0BE6/8/$oOïÿô&OAëø\'ø\)ø\+ø\-SEm€Aø\NüF0/ 0ÀB?/ Hx\N?/?/aù6Oï aïÈTONuHç> o8að?/€Cï.Eï2Gï6Múa að`TAø\.aðfLß|øNu4268]`ñŠ4+´jlÇJ4*´ilÅI4+´jlÇJ:šQHÅá…2+’igø‹ÁHÅá…<œRHÆá†2+’jgtÁHÆá†>žQHÇá‡4*”ig˜ÂHÇá‡SASB:A6)0H@B@"HçðH@HAN–LßЇ҅RCQÊÿêHçÐH@HAN–Lß 4 І҅RCHçðH@HAN–LßQÊÿêNu>žQHÇá‡4*”iÂHÇá‡6)0H@B@"HçðH@HAN–LßЇ҅RCQÊÿêNu6)4SB0H@B@2HABAHçðH@HAN–LßÐ…Ò†RCQÊÿêNu6)042°BoÅ@´AoÃB°BoÅ@NÖHç> o4aîü?/8aîä>€Múþ"o.Eé&o2aþŒ"o2Eé&o.X‹aþzaî¸TAø\.aî¾Lß|øNuN@Nur 8]ecrÁ\â Á\HçÀ8\8\À°gDR`HçÀ8\`HçÀ8\8\Àg&SÀ\F 8]efgù`âÀ`LßNu¹``èNDNu o"8[´!È[´HÐüøAè, ø[¼ ø]¶ × ÁB@Nu x[´!è8[´Nu0/fpaà"8[´f aNRNùBEJ ALØüøX!Ø[¼!Ø]¶"X!Ð[´NÑp4/SB BdÄüAø[ÈBp B° B° pNu0/S@Aø[ÈÀü 0Nu0/aêJ€WÀH€Nupÿ4/SB BdÄüAø[È 0 !°  Nu"o `“Ép4/SB Bd*ÄüAø[ÈJ0 f /!€ !€ !‰ p" gp€ NuB8]¬`Pø]¬Pù`B8]­NuB@8]­Nu1ï]Nu1ï]Nu08]&€8]­NuHçpÀB@NA&8^?<aÿRaÿ@J@f>aþaÉ0J@f6¶¸]f@J8]­f0Jx]&gÚp08](Bx]& @ g6!Ã^@÷ÿTLßNuNE`²aÊÄ`¬aÿl0< `Ü 8]&é˜?aùêT`8cvg x\h“Ép rÿN¹BI`ÿv/B@NA&8^aȪJ@fH¶¸]fRJ8]­fBJx]&gæp08](Bx]& @ g !Ã^@÷ÿ&Nu8cvgì x\h“Ép rÿN¹BI`°aÊ,`ªaþÔ0< `Ê 8]&é˜?NºùRT`ŽBx]Bx]&Bx]Nu1ï](Pø]&Nu0oNCp0AðNuB§HzÔ HzÓýaKNOï Nu oB˜0üBXNuAø^ `Aø^NVHn /.HPHyA©†a>FN^Nu0|CúÑ“a& g0h "Ja g0h NCp0 0-ÿg‘ÈNuNúÕ\RˆNu 0f( (xf Tˆprg0  c'éˆÐ`æNuprgö0$çˆÐ‚ЂÐ`êB@8] B8] J8_ gaNuaêPø] Nuaâ0/À] NuHçà€F8_ 08]28] @èb4 Axb. x[À^AÂü4æJÒBÐÁ@2<üài0àHt±³AèÿàQÊÿöLßNuJ8] fªNuHx¼aÅX @g AùAKNùBEv?<a˜T gæ!È]®!È]¶¼éÐü»!È]²Nu x]¶p0/ÑÀ±ø]²bBNu0<å` 0<Ù`0/ x]¶Rˆ±ø]²b$€!È]¶Nu x]¶Tˆ±ø]²boÿÿ¯!È]¶Nu¢žJ8]­g ´ o"o ˆ"x]¶$ Ô€´¸]²bÜR‰RˆS€ØQÈÿüS‰!É]¶NuB@/°/e/Nu"oaR¸]¶ x]¶¯ NuHQarHPaœPNu"oaî"oaèR¸]¶ x]¶¯ Nu o"o ˆ"8]¶‘¸]¶’‰/HiHha¼ÔP Nu oHPaHPaÊPNu oBg ågRWa `ô0Nu og Sˆ -bX?f!ø]®]¶¢ž0@NC 8]¶¸]®R€0À"x]®a»>a¿¦!ø]®]¶0Nu oa³ÈJ@f‘ÈNuBpR@ \fPÂJfð?Jf2/ AVÂg Aø\Da»ÖR@ÑWaüìTO x]¶"RˆBJgCø\DÙfü|\ÿÿ"oÙfüSˆ!È]¶ ANu oa2JgpÿNu o €ÿo0¼ÿpNu €ÿÿ€l0¼€pNu0€pNu g  fp g bሠSfø  fD€NuPÁNu oaÊJgpÿNu o €ÿÿo0¼ÿÿpNuJ€lBPpNu0€pNu oa˜Jg¦°¯l¦°¯ o¦Nu"o / o HP‘À??<@HQa¸ªpNuNVÿðHîÿôB§B§/.aIŒ8f¢žBWaûâ0DNC$H.Šaº”v6>ƒaû¬.ƒHR"x]¶Hia¹j>‚a½h׸]¶>¼-BgaûÀLîÿôN^NuHR$oBgaû’B@g>€aû†`ô>¼-Bgaû’X$_NuNuNu68kL#/Òêz~¾x†p¦,V˜¾ì@à0šÀâèð 8/ú¦,¤¦–€¢qqRrrPrVrrr¦Xs‚®s4È`¾È`¾`Ö´`»æ`½V`½’`¼`¼ü`½ `½`½(`À`Vä`€`" `Ên`ÀÌ`ÖX`È&`²`j`¹d^ ^^ \f\h[¸NÐpedromA¤îA¤îNu1ü^ 1ü^1ü^ Nu/ /$H2VÀHƒ0@f:g?(N¹Ac0T@?Bg?*N¹Ad2Pg?*N¹AbBjTBR0&$_Nu/dev/nullwa+NVÿìHç<((I&JKé bg Jg )bf|`BFJSg KNºÿ`BkJFgp`p'@BkJ„fz`†Hzÿš/N¹A_ZPJ@f( ag rg wf``6<`26<`*Hnÿì/N¹BÆ*Bg/N¹AWÊ$HOï°üg&0( @‚gHzÿ/N¹ASºP°üf?+N¹Ab—ËT`T1k v?+N¹AcTJFgBP` ¼!| à`v +g Jg ,+fCJFgC@6ƒ`—Ë KLî&I06C@@@2€z`/ H€?Nºþ„\J@m0 D°LeæR…( <¾Ec$D`êCÿ¿ÇS0LßøNuHç0$o2f„f A4`t0*l Bj@ÿ`hgN¹Azœ6?N¹AÆ0T`LGúýÆ JN“J@f:?*N¹Ac *0BCR€%@T  f*f JN“J@f Rª`pÿ`0Lß NuHç8(8@>&I06C@@@2€z`/ Nºÿ>XJ@mÀ0 D°LeêR…( <¾Ec$D`êCÿ¿ÇS0LßøNuHç0&8&I$Hpÿ`0ü `< @fg¶ŠdSŠ` @ f+gØÀ gSDJDo / NºþÆXJ@nÄBJ@l ¶ŠVÀH€HÀÆ€ CLß Nu2fA0`JhlpÿNu2A€1ANu/ $H0g gN¹A{´BjB@$_NuPÿïNu0@Nu(gp`p!@PÿïBhNuNVHn/. /.HzüzN¹AºfOïN^Nutemp%04x/ $H°üfB8^pEø^q08^z2RA1Á^z?HzÿÔ/ N¹AÃVBgHj N¹AWÊOï°üfÐ J$_NuNVÿìHnÿì/N¹BÆ/N¹AZäOï S@N^NuNVÿØHç &Hnÿì/ EùBÆN’(HnÿØ/N’//N¹A\FOïS@LîÿÌN^Nu]dð€@QTRXVY @Bk`cr] ]X 0A¸A¸$A·NA·¤A·ÌA·ôA¶äA¶¶A¶Aº AµîAµ0LBs`By` Aµ$A¸¶Aº Aº&Aº(B¸]ÔB¸]ØB¸a>Nu _a°Bx]Üa ~aÍ aËÀ08]Üga2aĺNuHç~IúT?a´DTOKèN”AîÿøLß~þNuHç~Iú4*N`èHç~Iú¨`ÒHç~Iúž`èJnü¢f=@ü¢Cîÿø JpØQÈÿüNuHçÿøMøa:<Bnü¢OïÿÄHWaÊ$J@f"aaJ(f aÊ0Oï@Lßÿ0.ü¢NuOï@a¢aH I`FHç Jhg$Shf h Eè:ga: gaÚEê SEfîLß NuHçÿøMøa:a¨"g–a¸?.a³(H&H<`J+gJkf ~ k aDGëQÎÿäz&L<`HJlf8 ,g @aZ>€ga² , €ÿÿ°¬g @a<>€ga±øIì` REp&ÜQÈÿüQÎÿ¶>®a²tT<…aLLßÿ0.ü¢NuHçÿøm€ÿüaö g Rh*h `” -- €68kg ÒEî.»î g MaÂaz$HB® Jg a g //<RVaØ#_"Ÿ#MB© B©3|B)JgB©#M »ü c&-fvÖmÿþ/a´>€a²"HÝSCfúX*Haœ#M ™Ì0-gEõ/a³æ?a±è(HBWHPa­NOï an#LGí:gH0Àü $K×À* aš f ÁMaþæÁM"HÒé24v6¶Ampaý‚ a|QÊÿìEê SEfÂ:g$yÈ:v6¶ªÿüm aVQÍÿð:g,-g Eúü:v6$åJf B¼c a&QÍÿæa 0-gGõa M~a$a´PéLßÿNup0gø°mÿþbf`î Hçÿü*HGí:g:0Àü $K×ÀaŽ h "HÒé24v6Öƒ618(؃a”QÊÿìEê SEfÐ:g$yÈ:v6å‹(28anQÍÿò:g:EúûL:v6$åJ(2 -fJBfX„g Ômx85(JCm$a0QÍÿÎ( a(0-gGõa„((aLß?ÿNuap0gÖÙu`öa p0g Ùµ`öJgD„NuMøa:JVgö|Møa:¼Vg.aš i 3|p0(g (ÿ g Pè ?N°<RF`Ê|aj*i 3|`üPAúòŒ»üA¤îgaNp°Vg»èg»è g AèR@`è‘ÈNu?.ga®’TBnNu0gêÀü/?.a°˜\J@f¢ž=@?.a¯bT0ÀüCðNu?HRHzòaŸ– _J@gaÖ6gHPaŸ„ _J@g AèSCfì‘ÈX6NuHçÿ|*O~a g~ h ¶(cz`p0.ü¤a ga† fdOïÿöHWa¡Æ _ar fRAúòah fHað&H>€g6ažJfa­À`(a®¸TˆPî(g" g·ü ca­œAë`0aú~‘ÈB.-H CîpÚQÈÿü.MLß>ÿNuOïÿìHWHPab?<HPa£z>¨ HPHRažœPJ@faJga®>Tˆ` a£¬ fØ‘ÈOï"NuHç`À~?/a®B@J_g"r2 0óÿf"(à‰ 68kf~¶(SÀLßNuHç(OBg?`.Hç(O?<B§a¢ò?( ga­È ¨68cAgTa£. fâ0g„a­TKèvÿBD-Gí !fV‹HSHRaØPJ@gJfüRCQÌÿâa­T`¾0mê +!ÿýga@8—Ë`*x#áLˆ#Ø&DvÖS/a¯P>€ga­@"KÙSCfú8Ta¬Ê0 K.LLß8NuBACíAéJfüQÉÿú"AÐÁ?HQa J—PfB@NuHçÿþMøa:~Hx a¬¢.ˆgv&H&îüž&ï@-Küž$oD/Jaý¦&ˆgD*HaøÄJ@f:& M0/HaP g"/HDAú/HHXLßÿXNuQHçÿÿMøa:Y&nüž*Saù&nüž/c@-cüž.‹a«X~X/G@LßÿNu/"(à‰ 68kf"Ðè°XlHÀÐ@00Ð @"Nu‘È`øHçÿþMøa:~Hxa«Ü.ÈgJCï< îüž Ù-Hüž Y0a¨ gEúU‰"Š#LßÿTNu]HçÿÿMøa: nüž/`<-`üžHPaªÀ~X/G@LßÿNuHçpp&Gù ¶‹bƒÿÿ"zöª"QX‰4<Îp$Y" g¶Šm"*ÿúg®ê]µËmr2TÕÁ¶ŠmR@QÊÿØB@LßNuHçð`6?<B§a ~\¶h g a È fò‘ÈLßNuHçÿ~Møa:$Haü g*Ha÷6 MJ@g‘ÈLß~ÿNuHçÿþ*Ha÷žLßÿNuNL4@À@àHû `FÂNuHç>Møa:B§Bg?gÄaªZ>aª|Kèv6 0ó8f ¨68kPg ¨68cAg`Êx€`Š0aÿ0aþÖ?.ü¤=@ü¤aö–J@g=_ü¤`Ú/.üšOïÿØHUBg-OüšHx\h?8\fp0- gNFNµMøa:.nüš(aCp6*_g &O [NSCføOï(-_üš-fa´òaö°=_ü¤`AíJfüCîpØQÈÿüB.TpaüÜ>€gÿRa©ô-H 0aþþ(a¨æ`ȱü dJGfÿ,0aþ`$g2aþ/B>€ašH/@B—a¢0.€gÿ/@ašL>¨ è `*»ü m"Vƒ.ƒa§Ò>€gþÚ?@a©x0íÿþWCÝQËÿüa©p0HpÿHPa[F _XNFNNqNq(a¨â.¯ga™è g ¨ ( g.ˆa¡.` >¯ga¨POaÁ¸aÀn Lß|øNuNu"x]Ôp4 B l åJ#ˆ RQB@NuNusystem0123456789abcdef@0123456789ABCDEF0X0x0b0-+ Oïÿ¸Hç>&o|(o€/ot>Î`´ %fBB`//xH€? oDNRN\`”&H K  gB #g6 +g -g 0g0 ^gÖ zgÐ |f$`ÈB `ÂBÿïB`¸B`²B`¬B`¦Bo4 *f ?\4Aë`$0/4Áü ÐA@ÿÐ?@4H0@ÿÐ @ cÜ0/4l D@?@4 BBo2 .g&H`r&H *f ?\2Gè`L -f6Gè 1f?|2Gè`,?|ÿÿ2`$0/2Áü ÐA@ÿÐ?@2H0@ÿÐ @ cÜJo2mB`Bo2 lg Lf<F@` hg Hf <F€`<F€B¯L/|Aº06Jgœmx Emp Go Rg Xgd Yg bgt cg< dg˜m4 em, goØ ig| ogH pgè rg¸ sg" ug@ xg yfæ`–S‹`Ž$\/ N¹A_X(g 0o2±Àl(60/4D?@4f2gz0`z J@o"ÜÀ`//xH€? oDN\0/4S@?@4lâÜÃv`//x28H? oDNRƒ\¸ƒnæg0/4oüÜÀ`//x?< oDN\0/4S@?@4lä`Ø/\L/|Aº1: <AºBf <Aº0/@6?|2F`~/|AºD: <AºU`/|Aº1: <AºX` <Aº[` <Aº^f <Aº0/@6g/\L`Np0/@L`Dg `0HÀ"lD/AL"<Aº`J€m"<Aºbf"<Aºdf"<Aº0/A6gÞFÿï`ÖFf?|2 "4/@B/AF?BJ <Aºbf <Aºdf <Aº0/@6`Ž00/4S@?@4f2gx0`x J@o"ÜÀ`//xH? oDN\0/4S@?@4lâRN//xHƒ? oDN\gX0/4oPÜÀ`//x?< oDN\0/4S@?@4lä`,?F0(/L2/2?o4*KïB/o6, o:0@g?|(`?A( XgB bg0 dg" ig og$ pg$ ug xf¨`EïP`ŽCïP`VCïP`$CïP` pÀ„ðèŒJ„fò`>0ÀæŒJ„fîAïP: šHg:SA?A2`00ÀâŒJ„fîAïP: `.Hx /N¹BLP0ÀHx /N¹BLP(J„fØAïP: šH`â4U2 AÿAÀ A?ÿf$|fP|eQ|dR|nS|uTz`¨ Aàf |0Pz`– A f|¾P4 l|-Q`|+Qz`r0R@ @b  ff˜$-BDBE`Jf pÀ‚fB`0€PPRE~èŠRD DoÖ(-BB` JfpÀ„g0€PPRE~èŒRBpA°BnØJg¼.PPRE`0€PPREèŒRB Boæ6 lÌ`ÀJAmB`DAtCïPv HÁƒÃ H@0ÀJAfìAïP0 HJg¼-PR@¼•P2RA$-BD`Jf pÀ‚fB`0€PRAzèŠRD DoÖ(-tJfpÀ„g0€PRAzèŒSBfÞJg¼.PRA0€P:RE0 l¼¯PPREJ„f JEf|0Pz>/(žE0F@râ`Î@6ÖE//,N¹A_XÖ@8/*˜C0@f6g4|0`4| JDo"BC`//x4 H‚? oDNRC\¸Cfè6xÿ`BC$o,`//xH€? oDN\fì0/.–@ÖJSCf4g:|0`:| JDo ÖD•Ê`//x2 H? oDNRJ\¸JfèxÿJGoÖG•Ê`//x?<0 oDNRJ\¾Jfê>ÞE`//x7PTH‚? oDN\SE0R@J@nâg JDoÞDBC`//x?< oDNRC\¸CfêÜÇf÷J0Lß|øOïHNu0/"o QÀ"ˆNuNVÿü N!.NqNqNqHn/. /HzÿÔNºöð nÿüBOïN^NuHç8/?N¹As <68]:8]T D f09BºHÇÀRCÇÀ1Ã]p `Ê D fx ` D g2Ò@B@9AhnR@°Al†8\"HƒÖC\CÚC2ÒCB@9Aho°AlBg?HyAhlHyAhlN¹AjTšCOï 08]\R@1À]\ @ o0?<N¹At‚T&8\hN¹Azœ CN¹BHäJ@gêBgN¹At‚Bx]\T D fB@`BC?<???N¹Ao°0ÐFP1À]1Å]0LßxNuHçü4ÔDSBR@a¤ ÒEa¤S@RB’E4ÔERASBa¥4ÐDa¥.Lß?NuHçøÔ@ÇDa£ðRAQÌÿøLßNuHçÿþxaà8:va¤R@RAUDUEa>T@TAYDYEa4$g*4vxa¸T@TA8\"B8\"?<HP??aªòOï Ç\"LßÿNuHçü4ÔDa£€ÒEa£z’E4ÔEa¤œÐDa¤–Lß?NuHçÿþxaÿ`8:vaÆ$g,4vxaÿJT@TA8\"B8\"?<HP??aª‚Oï Ç\"LßÿNuHçÿþxaÿ8:vR@RAUDUEaÿv$g2T@TASD8\"B8\"4a­ŽâHâLÔD”@?<HP??aª*Oï Ç\"LßÿNuHç÷þÔ@æHæJ”@HçðRBRCÄÃP‚/a›FX8LßJDg,0DNC0À0Á0Â0Ã"x[ÀÂø] Ò@ÒÁ&IOïÿÄ$O?<c?<È?<?<("OHP?<xHQHRaÎ.JJ@g4HSHRa èa€>¼ a­ÊPa³ @ g @g`î8HRa*X` Ka«ÄBDOï<0Lß|øNu?/aHPHzƒ8cvf aÿ`Oï Nua«`ô0/ @ l"Aú„ÉS@gJfü`öHxa2HPHx]àaûL _PNuAúƒ= @(fAúƒA @ŒfAúƒA @´fAúƒN @¾fAú„4 @fAúƒp @JfAúƒ6 @šfAú„6 @lfAú„ @ŠfAúƒo @žfAúƒ @ fAú„ @ŽfAúƒ @¢fAúƒ @¬fAúƒ @ÀfAúƒ¸ @ÊfAúƒü @ÞfAúƒ @‹fAúƒ' @ŒfAúƒ, @fAúƒ- @ŽfAúƒ= @fAúƒ$ @fAúƒ6 @‘fAúƒ8 @çfAú‡ÑNu o(o Nu o1oNu o/ @À\"Nu o"o2¨ "o 2¨Nu oB@((R@Nu oBh Bh0gRh RhNu o1o1o 1o 1o Nu o0/Ñh0/ Ñh Nu o1o1o Nu oB@((R@Nu1Ù]1Ù]1Ù]1Ù]p(H@(Ѹ]Ѹ]NuBB(ÐB(ÒBNu o!È[¬è\"è]0(2( aÒ1À]1Á]HPAèaD _!è0[ÀB@(BA(Nuaœd x[¬(Nua¨ÐoÒo a£ aàga–ÐoÒo a£ŽNua†ÐoÒo CèBB°Bm²Bm°Bn²Bna£Â`œp`øaÿR?(HhHhaªa„ga¢Oï `þ†aÿ.?/ Hh"oaþèAø]"Hr0lB@ @ðm0<ðÀQÉÿìHx]a`aÿ:gaVOï Nuaþä?/Hh0/2/aþÀ??0/2/aþ°??0/2/aþ ??a«€aþêga«vOïNuaþ”Oïÿð?/ Hh"o"02aþl?@?A02aþ\?@?A"o02aþH?@?A02aþ8?@ ?A HoHo a¬ aþvga¬–OïNuaþ ?8]Hh?/?/2/0/ aýô??aEÐaþ>gaEÆOïNuaýè?/ Hh"oaý¢Hx]a©¢aþga©˜Oï Nuaý¼"o02aý 1À]1Á]02aý1À]1Á]?8]HhHx]aCúaýÊgaCðOï Nuaýt1ø]]1ø]]0/2/ 1@1A aýD1À]1Á]?8]HhHx]aC®aý~gaC¤Oï Nuaý(1ø]]1ø]]0/2/ Ðx]Òx]1À]1Á]?8]HhHx]aCfaý6gaC\Oï Nuaüà?8]?/HhHyAhla aý gaOï Nuaü¶?8]?/HhHyAhla¤aüâgašOï NuaüŒYHW//HhaùP ga§âP`™aühY//Ho//HhaøÖP ga'FP`˜îaü>?/Hh//?/?/a*Haühga*>OïNupNu oP€€a˜² oBgHzšTHhaš\Oï oHç<"h0B@(BB(Äø] :x] æHÔ@$x[ÀÔÂÒÂBAB@BB(’((æH(æJB4&I(J‡QÊÿúÒÍÔÍQÉÿìLß<NuNu oPÿNu oa˜$HçB@BABDBE((((˜@šAvaöpLß8 oPÿNua—ì o"x]P$<]P±ÉgCé$$ "Q fð`H"B"¨$/(0a’üX o0@g?8("a÷<8` x]P g0@€gHPaþÐ _ h$`æNuAú™*a˜@ o"o0¯ P€ Pÿ||1x]ÆaùüBA0@gr1AHç>*I$H0246Bj"8Dg”@–AaöV6!4!5D"fRÿï@ABC%j8Df(z8DgzÛ*Û*›*›*8DgP*%jHxa’ÊX%H0f0*"ga’p`L!È[ÀaÖ0246”@–A‘È8:Ef:Eg o6CúôŽDfCúõN‘%x]P$!Ê]Pa–ZpLß|øNuaù¢0/ BA(ÐA(A4/ Bb$ÔB4; "Aû "Ht-/v aô4aù°g Iaô(&Nu'1<CNoneEnter=OKEnter=SAVEEnter=YESEsc=CANCELESC=NOEnter=GOTOaù /0/ 2/Ð(Ò( o4/6/aôxaù,gaôn&NuaøØ/0/ 2/Ð(Ò( ota(øaøþga(î&Nuaøª"o`aø 1o 1o "o gHQ?HPa: _TO"_`ìNuaøv1o 1o 4/ 0/?6?HPSCma QËÿü\6NuaøFÐh ÒhHç 68$HBE/?a¡T>4B@g  E gD E g> Ef(?*HjHja–`aø:ga–VOï Ja÷<`ž2ÒGB@*R@°AlHBC*ÖC\CØC2ÒCB@*°Al(?*?HjHja—äa÷æga—ÚOï !ê0[À˜CBC* E g( E g"?8]Hj???a›Øa÷¬ga›ÎOï ÖGB@*–@5C *˜@5DL߸Nu o"x]P gü\±Ég"i$`ða“ÎHçÿþ8("gaój`BgHhHha•lOï Lßÿ"o0)Q(’(²f¤0)i(’(²fŽ!h!è0[À0)BA(Ag$Ñ(Ñ(Ñ(Ñ(Bg?Hz”üHha–ÔOï o"o0BA(Ag&Ñ(Ñ(Ñ(Ñ(D@Bg?Hz”ÂHha—^Oï o!h!h`’îHPaúúX`ûbHç>B@BABBBC o0”@–AAùAPßaðÖLß|øNuBD+˜+BC+–+0Àü*Aò0°El:PÂ2(²Fl<PÂÐhC°Eo:PÂÒh’D²Fo<PÂJfNu?HSaú`aöTIêBC+–+BD+˜+>*SG0E2,’F°Cn<²Dn84,Ô@m04,ÔAm(l l ?,?,/,??HS lNOïIì*QÏÿ°aù$X>Nu o0/2/ Hç>,O$HOïÿ¨&O>*g>SGJj f4vAê48Øh¶Db6Aè*QÊÿîJªgPCTC Cîc6<î5C Jj f8vAê48(Øh¶Db6Aè*QÊÿìJªgC TC C~c6<~5C @ÿÿf 0<ðj â@ Aÿÿf 2<€’j âA6/*gCC0?J@lB@7@<Ðj @ïc @ï‘k<0<ï7@@JAlBA7A>Òj Ac A“k>2<7ABAëDN¹AgFHk*BEBFPÂ`BBH‡0*JGl>SG¾@mBGaýÌ0Àü*IòHT2,’F?0E?HS lNOï J€g&(HCJ@n¼`a¤ &HT2,’F?0E?HS lNOï HT? l"N\(l†R@gÿvR@gÿhR@gR@gR@g$R@gR@g$`ÿX,`ÿP,`ÿH,`ÿ@,`ÿ80*AêBAS@¶hg"RAAè*QÈÿòHT? j gN(l\`ÿ>`þþx8, HSa÷œXAëDN¹Ag .NLß|øNuQ O0À0ÁÐlS@0ÀÒlSA0Á?<HhÿøHSaórOïpNuQ OS@SA0À0ÁÐlT@0ÀÒlTA0Á?<‚HhÿøHSaô†OïpNuHçÀAëaÎLßÐ+Ò+/Òl4Ôlv!ë0[ÀaàaòzgaÖ04’l!ë0[Àa‘ðaò^ga‘æ&pNu0H@ CRfpýNu CXfpüNu C fDJ,g\Jl&g22,’FÒ+?0ÐlEÐ+?0l&NCHPaüP @ÿfpùNu0, Nu CTf J,gJl&f¶ Cf0<ÿNupùNuaÿ2/ Ò+ÒlTA?0/ Ð+?0l&NCHPJl&gaü,PNu0H@B@Nu0H@ CQfpûNu CTfpúNu C f0, Nu Cf0<ÿNupùNu0H@ CRfpýNu CXfpüNu C fDJ,gZJl&g22,’FÒ+?0ÐlEÐ+?0l&NCHPaûœP @ÿfpùNu0, Nu Cf0<ÿNu CQfB@Nu CTgöpùNuHxaËîXJ@g0@NC0¼!o1o Bh Nu0/gÊ2/nÄ0@NC4(RBÄü*B/?a˘\J@g 0@NC4(0RhÀü*CðBQ2çI3A3|2Aa3A2/ f2RA3A | | #o2SAATAAPé#|A×N#|A×N#|AÑr#|AØ "B©&r iHQa˜Ì"_T@3@0/NuaV gø0)&fÿ2HxaÊæXJ@gâ?0/2/a003@&0@NC0¼Bh Bh `þþ2/0/a ‘È g iNu0@NC4(g*CèSB²i g 0)&g?HQaÞ _4 f "HCé*QÊÿÞ“ÉNu0oNCBh0/Nu?/?/0oNCHPaù¼P @ÿfpNuHxaÊ4XJ@g0@NC0¼ 1| 1|ï !|AØÂNu0/gÊ2/nÈ0@NC4(RBÄü*B/?aÉÚ\J@g 0@NC4(0RhÀü*Cð3|3|2A 3A2/ f2RA3A | | #o2SAATAA#|AØŽ#|A×®#|AÑr#|AØÊ"B©&pJBg 0)ÿÖÐiÿÚP@2€ oa‚ôÀü3@`øaþ” gò0)&f8HxaÉ"XJ@gÜ?0/2/aþj03@&0@NC0¼1|F 1|b 0@NC4(RBÄü*B/?aÈÌ\J@g’0@NC4(0RhÀü*CðBQ2çI3A3|`3|2Aa3A2/ f2RA3A | | #o2SAATAAPé#|A×N#|A×N#|AÑr#|AØþ"B©&0/Nu0/gÌ2/n¼0@NC4(RBÄü*B/?aÈ\J@g¢0@NC4(0RhÀü*CðB@JBg0)ÿÖÐiÿÚP@2€3|3|3|2A 3A2/ f2RA3A | | #o2SAATAA#|AØŽ#|A×®#|AÑ:#|AØÊ"B©&`B@`0/Nu0/NC` oHç>$HBEBFBGPÂOïÿ¼&O?< Hz$HSañJ@gaõÌaðŽOïN JaÙLß|øNuï?/a^0oB§NCHPaövOï @ÿfpNuaˆ?|`/KAï.ˆ?+a¸T$x]P`HkHjaˆjPJ@gÒ$j$µËfâp`pOïLß NuOïÿì>¯a?|#/HHo?<ÿÿabOïNup0/Ð@0; AùAJÒÑÀNu¬°µº¿ÄÊÐÖÙÜßâæOïÿìBWaþä?|/HoHo?<ÿþaOïNuHç 6/$o88]Æ Cÿÿf6 Cÿþf68]È5D5oBj1Ã]ÆHR 8[°g @N x] g R`f JCmåK {0N1Ä]ÆXLßNuAãX>¯ aþR2/ 0/"o2€Oïÿì>¼?@?ABo/H?Ho?aÿ^1×]È?|aÿP?|aÿFOïNuHç6/8/U¶x]Èf2JDg&>¼aX>¼aR>¼aL>„aþæ>¼a@>¼a:`0>¼a2`(>¼a*>¼a$>¼a1Ã]È>„aþ´>¼a>¼aTLßNuOïÿì?oHo?<ÿþaþ´OïNuOïÿìBx]Ì`>¼a˜J@g a—j>¼a˜a˜|a˜t>¸]Ìg Bx]Ìaå¾`Ðp&?@ J¸]Îg"x]Î!É]Î CgðJCf"B¸]Îa˜bJ@ga˜d6@ø@vÞ?@ JCg,>¼a’0?|?CHo?8]Èaþ\>¼a—Ž`ÿbJ8] g$>¼a—nJ@g?|@Ho?8]Èaýà\`ÿ8N¹A\J8]Êfaü¾J@g >¼a—D`ÿ>¼aþêBWa‘´a•þ`ÿHç0$ov?/a‘š`>¼a—J@g a–V>¼a–þa—ŒJ@ga—Ž6>¼a–è4¼5C `J8] g>¼a–ÂJ@g4¼@`a•’`ªJCg>¼a‘60TLß Nu o0 @gû² @g @gf @#g( @$g* @Pg0 @QgLNuBgHz„ÜHz„äa„äOï Nu!è]ÎNu?(aÁÒTNuOïÿì?|?|Ho?<ÿÿaü¬OïNuNu0* @ m$ @n? x]¾aÓ^?aúhJ@g>€aý²XNu @ g\ @ g•< @ kg— @ gû& @-g6 @ fB§HyAO¬HyAO˜aâôOï Nu @f B§aüæXNu @+fBB§Hzüað~P @ÿg.AúþÀü*ÑÀB@(Oïÿì?|?@Ho?<ÿÿaûÞOïNu @ cf?<!`" @ xf?< ` @ vf?<"` @f ?<PaüÞTNu @f?<Q`ì @f r?aûTNur @gîr @gær @gÞr @gÖr @gÎr @gÆr @g¾r @*g¶r @7g®r @8g¦r @­gžr @4g–r @9gŽNuJüpNuB§HyAO¬HyAO˜aáÀOï Nu0/ @ÿýg8Oïÿì>¼BgHoÿþ?aúÞ?|aúÔ?|aúÊ1üÿý]Æ1üÿý]ÈOïNuQ O0ü0Á0ü\A0Á?<HhÿøHSaåOïpNu0H@ CRfpýNu CXfpüNu C f0, Nu Cf0<ÿNupùNu0H@ CRfpýNu CXfpüNu C f0, Nu Cf0<ÿNu l"HfüS‰ CfBpþNu Cf ³Èg$B!pþNu C m Cÿb2,&ÐÁ³ÈgÃBpþNupùNu0H@ CRfpýNu CXfpüNu C f0, Nu CTf02,’FÒ+?0EÐ+?0l&NCHPaîP @ÿgapþNu Cf0<ÿNupùNu x]þ2,(ÒA1€0l&NCCè2(°i gCé*SAfò’hDA1AÂü*)p NuHç>0o,NC$H ’DiAlfˆ./2&o6!Ë]þ6*gtSCIê ," €Aæ f߬` €Aæšf2,(ÒA03aÿlIì*QËÿÒ0/.2/0??Hj aí4P6*SCmAê"(" Aæ fŸ¨Aè*QËÿêH@`B@Lß|øNuHxa½†X?g$a½„ üDiAl ï B˜0¼1o 1o B¨0NuHç>ü\"SGRCÆü*C/?a¼†\<g€0@NCRhCð8Ö2¯43o6Qi3|(3| Bi3D | | G|ÿB)B)#|AåÄ#|AåÄ#|AÑr#|Aåì"2m Âü*EðDNuXLß|øB@NuHç8Oïÿ´6/d$of&oj>ƒa¼(HAï.ˆa¼8f.Œa(4€xaÐ` 4„ 8]ºL6€x>ƒa»Ì0OïLLßNuHç>$o,/8]¶a _Jg!È]¶£ŽpLß|øNuBgvabJfbašJfØRŠ  gâ ,gÚ (g$ {g6 "gì [gn gH *gH +gH -gH /gH ^gH gH œgH gH žgHSŠ`Š4<€`@4<`:4<‹`44<`.4<‘`(4<“`"4<…`4<‡`4<‰`4<†` 4<Š`4<ˆJn$faµ¶HPa´Þaµ\P0<Õa´ž _B ]gþ$H`ÿ0Brÿ&JRAašfö Ab$SŠ (g"B@a´fSAa´^QÉÿøB@a´T`ýÜ$K`þðRŠa´4HS?aýÄ2&_ )fàB@a´*SAa´"QÉÿøB@a´0<Úa´B`ý–RŠB¸[B¸[B¸[ ­f1üÿÿ[Gø[~|ÿ0e6  b0RFgéJ‚`…QÏÿà .gH0eH bBRFfè`r þf40e,  b&géJ‚`…QÏÿâ0e  bfð`8 ef2 ­VÄfz~0e  bH‚Êü ÚBQÏÿèJfDEÜEF@1Æ[a lAø[Cø[a PCø[aµ BSŠ`üœJVÀg /c 9b pNu .WÀNu ­gî •WÀNu \g /c 9b pNuJVÀgø @c> Zb pNu _gö `c$ zcê c ›cÞ ±c ¶cÒ »bÌpNu?/a·˜aÞHPaa·\Nu oHç>*HHxa·f>€ga·z(H8<zaBa·b0XLß|øNuSJgx #g¨ ‹gÚ gØ gÖ ‘gÔ “gÒ Úgþ Ùg@ -gH ågX ÕgÐ *g¡š¢ž[DmúüuünüdüeüfNuJ%füAíSDgØØføSŒRDNufäUDcÄü"aÚü"NuSDg´ü0NuDc¨Aír(ÿÿáH?UˆQÉÿòB/ HyANÝHTaÔDOïØÀ@˜@Nu<+`<-`<*` </`</HUa²&*HaþêSDgÿHÃ*WaþÜ*_Nu<[aÜSDgÿ0ü]NuaÿBSSDgÿü( åf SDgÿü)Nu ågHUaþ˜a±ÊX*HSDgþîü,`à|)ÿÿNuSDgþÚü{ åf SDgþÊü}Nu ågHUaþTa±†X*HSDgþªü,`à|}ÿÿNu oHç>a> #g£ Lß|øNu oHç>a&Lß|øNu0/Hç>?aµTa‹ša aµNTLß|øNu*HMúPa #g"N`°œAø[Cø[a 2Cø[`²SJgÌ #g¢ ‹g* g( g& ‘g0 “g@ Úg* ÙgT -gN ågN €g …gú †gä ‡gŒ ˆg¸ ‰g¾ ŠgŠ Õg¡šMú•NuMíNuMúˆAúÈCø[` fMúxAíÿøCø[pØQÈÿüBAø[Cø[` DJ-ÿÿf&Aú Œg Aú –fMú:LÐHø[NuHma´B f£À?( a´ J@g ¾a³úaŠ@ Üg óf¢l*HaþÊa³âT*_Nua<` a6` a0Lø?[Hø?[` ÒaLø?[Hø8[Hø[$` LaNùB^jHUaþ|*_ #g (Lø[HçàHUa¯^*Haþ\*_ #fàLßHø[ NuHUaþB*_ #gÈ -fÀHVHUa¯(*Haþ&*_ -fª _"NNuSˆS‰ g°!gø`J!g"`aº -gäa lJgAú``aè x [fðAú\Cø["Ø"Ø"ØMúþNuaÿLa a .JnÒ`Àaÿ0a JoÄ`²aÿ"a Jm¶`¤HUa²Ú fHJ%füREùBx6< pHU0HrN¹A_ZPJ@gXŠQËÿè£ÀUHRaýX$_0*N²*_MútNuJ%füS?( a²Paˆ– óg¡š(x]¶a­ ågV -g$HUaýAø[Cø[a.Cø[a®þa­öX*H`ÐSpR@J%fú?a¬¸0S@"x]¶R‰ MØQÈÿüS‰!É]¶S`¤a±à0a² x]¶ #fAèÿ÷Cø[a¾B8[ MúÌ!Ì]¶*_NuJg ŒHUa­ˆ*Haü^*W/8]¶Bg?<@HUN¹A]Oï *_NuJg ŒHUa±¦ f£À>¨ a±ha‡® Ùg (J%füHhÿÿSaü6 #g£ a< _6 åg SCga­`ð*Haüa±(XNu oa­ ¯HP oa¬ð"_"’¯²€fN¹A^üJ@WÀH€Nu#*Hç0$o &o`HSN’J@ga¬¶X&H åfêpLß NuHç0$o &o`HSN’J@fa¬ŠX&H åfêpLß NuHR$o åg J$Ha¬h åfô J$_NuHç8$o$(o(/ / N¹Au^BCBB*BE*šBREBA*’CRA0@SAP6|ÿJ@gx˜@08 àdál6D8PDæDEì08] ÅÀ2æAÔA x[ÀCð 2A8@˜Ägl~žABF`DB@ãh€v`@ÿî`„‚$HB@ãh€RC J¸Cnà@ÿî`„0 À€$Hp0 ÓÀRFºFf¸`"Ù0J¸@nö0 Á(ÿÿp0 ÓÀRA$HºAg J`àLßøNuHç04/ 6o$$o&žFJBfBA`lzšBBD`FB@ä`€À Iv`@ÿëh‚$IB@ä`‚ÁRC"J¼CnÞ@ÿëh‚p0CðRD¸Kf¶` €À0I¼@nòp0CðRA²Kg I`æLß øNuHç04/ 6o$$o&žFJBfBA`lzšBBD`FB@ä`ÀÀ Iv`@ÿëhÂ$IB@ä`ÂÁRC"J¼CnÞ@ÿëhÂp0CðRD¸Kf¶` ÀÀ0I¼@nòp0CðRA²Kg I`æLß øNuHç04/ 6o$$o&žFJBfBA`pzšBBD`HB@ä`³À Iv`@ÿëh±$IB@ä`±ÁRC"J¼CnÞ@ÿëh±p0CðRD¸Kf´`"µÀ0I¼@nðp0CðRA²Kg I`æLß øNuNVÿäHç<>.8n n :6(Kè0lB@@ÿø0 lB@@ÿù6LÖÅ0 S@ @€o0<€@ÿû4GÔÃ0 S@ @ðo0<ð@ÿúHnÿüHyAhl/.N¹AgòOï J@g†BF.ÿüB@.ÿþ0@BB.ÿýBD.ÿÿ¾Hnf¸Lm`¼JnZ´KnT´Lo2’L0^@æ@ÁÁKõšA8B0 ÐE¸@l:šLRE¼Gn2²Jl’B.ÿýS@ÿÿ¼GnB`@ÿü2²Jm`0@ÿþ^C0æ@ÁÅT@0@ T€rþÀŸÀ&OEîÿæ/ N¹AgB0S@?QC?/ N¹Afà/ HnÿüNºû/ N¹Ag KëB@.ÿüBC.ÿþ–@RCÞ@Oï nbˆp0.Ѐ0;NûL$v8L`?</.HnÿøN¹Ah|Oï ^CæC?/ ?? ?Nºý†`:Bg/.HnÿøN¹Ah|Oï ^CæC?/ ?? ?Nºûî`^CæC?/ ?? ?Nºü’Oï Lî<øÿÀN^Nu0/2/ o4/ Bft Bb?<HP?<??ÔB4; N» Oï NuüFûŽüþ2$&HÁAÿHÑ`LÐÒAâ‰2Á"Â"ÃNuCø[AéJgü ‘ÉYˆ0Ð@ðfR@LÑa&tQ@g6åHà«`0 @m 6BBHBHCY@g @m àŠà›U@gpÀð†èŠè›Nu08[@@D@Lø[aHø[`þÆ08[ °x[g bpÿNupNuAø[ J@gpÿ`p28[²hgbD@Nu"8[²¨gbò`î"8[²¨gbä`àB@NuHÀAø[BAJ€g4lD€rÿ0Á0¼@t€ü 2gH@„èšB@H@RP`êH@„èšTˆ ÂB˜`þ4 ü B˜B˜Nu08[@@D@Lø[aþÖxz 阀Èü Ø€paþZQÍÿèJx[gD„ NuFx[ Aø[ aÿ:J@nLø~[Høp[Hø[ 08[x[gLø[ aþvHø[ 08[°x[ f8[&G@Eø[0Gø[0pÀ"gÀü AóLÐÒGHø[ aþæRGB@èHgÀü AóLÐÒGHø[ aþÄRG‡l¶08[°x[$VÀH€1À[`üŠEø[0Lú¸Løp[HÒ~Høp[aÀLø[Hêa°Lø[Hê0a Lø[Hê`Lø[Hø[ aþHLø[HêTLêpLø[Hø~[aþ*Lø[Hê$aRLø[HêHLêp0Lø[Hø~[aýúLø[HêJx[gLúö´Hø[ aòvAø[Cîÿöað>Lß|øNuAïHç>Cø[aðañTAø[CîÿöaðLß|øNuHçCø[aï–aø¦Aø[Cîÿöaï˜Lß|øNuAïHç>Cø[aïpaøNAø[CîÿöaïrLß|øNuAïHç>Cø[$aïJa÷ÖAø[CîÿöaïLLß|øNuAïHç>Cø[aï$aùàAø[Cîÿöaï&Lß|øNuAïHç>Cø[aîþaû€Aø[CîÿöaïLß|øNuAïHç>Cø[aîØaûJAø[CîÿöaîÚLß|øNuAïHç>Cø[aî²aK¶Aø[Cîÿöaî´Lß|øNuAïHç>Cø[aîŒaRRAø[CîÿöaîŽLß|øNuAïHç>Cø[aîfaR>Aø[CîÿöaîhLß|øNuAïHç>Cø[aî@Aø[CîÿöaîFLß|øNuAïHç>Cø[aîAúôtCîÿöaî$Lß|øNuAïHç>Cø[aíüLø[Hø[$añLúôXHø[ aû"LúôxHø[ aQ´Aï,Cø[ aíÀaïúaöÌLø[Lúpô6Hø~[að¼Aø[Cîÿöaí¨Lß|øNuAïHç>Cø[aí€Lø[Hø[$aðŠLúóÐHø[ aú¦LúóüHø[ aQ8Aï,Cø[ aíDaï~aöPLø[LúpóºHø~[að@Aø[Cîÿöaí,Lß|øNuHç>Aï,Cø[aíLúódHø[ aï2Lø[Hø[$Aï,Cø[ aìÜLúóAï,Cø[aì€aõ Lø[Aï,HçpCø[aìfFx[aôîLßHø[ aîŽLø[LúpòæHø~[aïTAø[Cîÿöaì@Lß|øNuHç>Aï,Cø[aìaô¤Lø[Aï,HçpCø[aëþaôŠLßHø[ aî&Lø[Lúpò‚Hø~[aîðAø[CîÿöaëÜLß|øNuHç>Aï,Cø[aë´aô@Lø[Aï,HçpCø[aëšaô&L×Løp[HçHø[ aí¸Lø[Hø[$Lß~Hø~[aí¢Lø[Hø[aðAø[CîÿöaëZLß|øNuHç>Aï,Cø[aë208[@?ÿ"o02€1ü?ÿ[Aø[Cîÿöaë$Lß|øNu4óš4óè3÷ˆ3÷t3H3NÀ4NÎ[õ®\x\ž_¨a¾cÔexplnsincostanasinacosatansinhcoshtanhasinhacoshatanhsqrtdimgetkeytestftestdtime -g Ùf*pAîÿÿNº‘2`AîÿÿJ füRˆa•ˆ`ëüpN¹Azœ`ëð ( -føBgHnÿÿa•^\ VÀ`ëÔ -fÞHnÿÿN¹AXX VÀ`ëºp08aN`ë°Hç0 o "o$>8(<(:(B@0@BA)4AB@)6@BA)2A6–GjDC0<>0:8¾Kn ¼Hm¸InºJmú4”DJCf¸Eo0:8¸Jl8 ºIoÆ`†JBf¾Hl>¼Ko²`¬JBm€¾Hl4¸Jl0 DÁÃHÀÂÐG°Hm °Kn >`*0GÁÂHÀÃØ@¸InŠ>`¸Jl0 DÁÃHÀÂÞ@¾Knp8 ¼KoºIoD0IÁÃHÀÂ2’@²Kn2<: `8ºIo4šIÇÅHǜC`ìDB¾Hl0GÁÂHÀÃØ@¸Jm(>¼Ko œKÅÆH…ÚB< ?/(????N¹Al"Oï Lß øNuOïÿðHç>:o@8oB?/HN¹Agv?@6//FN¹Ag‚\0 n:|4 n8|0 °Ml84 íJ4B0|ÿÿ?|ÿÿ,?|ÿÿ*rÿBo(o (6/(ìCoÿà(Eê 8 ìDEêÿà> ÏÃ4 HÇÂ< ÍÄHÆÂ²Cf¼HgV¶o*lP:/>ÚFC?N“XJFg :/>šF??N“XJCg?4/>”C?N“X¸o*f¾o,gT¸CoP:/>ÚGD?N“XJGg :/>šG??N“XJDg?4/>”D?N“X0 4 HÀÂÑo(0/(HÀ”À¶DlL0F?G,?D*2`þè0 íH4@?|ÿÿ.rÿ?|ÿÿ0?|ÿÿ2Bo6o 6 ìGEêÿà8 ÉÆ4 HĉÂ6 ÇÇHDzDf¾o0gT¾FoP:/>ÚGD?N“XJGg :/>šG??N“XJDg?4/>”D?N“X¶o.f¼o2gV¼o0lP:/>ÚFC?N“XJFg :/>šF??N“XJCg?4/>”C?N“X0 4 HÀÂÑo60/6HÀ”À¼Gl?C.2?G0?F2`þæ?/4N¹AgvHx\.N¹Ag‚\Lß|øOïNu<0/NANuNB2/HÁAïü±Ál¢žNu oHÐüü!W0pNu o0/fpLØüü.Nu o"oHRr!p!áH‚@g$t!p!áH„@ ЂEðàˆàˆàˆ`Î$_NuNùAmØ o//Hha@šP opJ0fS@nö€Nu oJhg2UA00Nu o"opJhg 2(2°pNu$/ oB@2(²hlTh21‚TA²hmBA0pNu"o opJhg2(2°UhTA²hmBA1ApNu/ptBC  gø -g ­fvÿ` +f0e  b"ç‰Ò€ÐЂ`æJCgD€&NuAø] Nu"o o0/ gS@ÙQÈÿüNu o0/S@BAÁQÈÿüNua   - 6 Q W H R T Y?/a\Nua 52+3?/a\Nu2/ op4g´AføpNu oaŽð o"oCéAð QÈÿüB! oAèNu o"oJ!füR‰ÙfüpNu pNu$,O<?a‹, g`p00ÿ àfRVˆ$HCùANëpN¹A^üJ@f†aŠŠ.NLß|øNuáH*H@*áH*Nua`*RŠR“g föR“  gú"g gà #gÚNu£ç fèSB`äVŠHRa:$_ x [ga¤ g–a`öaa´aÿn €elsegÜ €elifgÄNu£çaÿV €elsegÿb €elifgÿX €exitgÞ €whilg<àˆ €if gŽOïÿÎ(OB J"Lg gÀ`òBHçÿþN¹A0ˆLßÿOï2`ÿ *efÆ * f¾\ŠHU*J$Ma‚$Maþô x [g gØaÿ\`ôaþò*_Nu                                                                                                                                       as("*","*_p")*_pas_error/ HzÿàHx^˜EùA_HN’HzÿÞHx^´N’HzÿØHx^äN’Hzÿ×Hx_*N’Oï.¼B"{Hx_ N’1üP^Þ1ü0^àBx^âBx_ü_ü_Bx_P$_Nu//826 4ëJ0BÒAÁ2æAAðAèL4B2<€äa2@`g„`FÄ‚âdRˆRI¸Ilà&(Nu//86 4ëJ0B2AÒÁÉ4æBAð AèL@4<€àb2A`"Jlµ`g‚`FÂAèRI¸IlÚ&(NuHç84<ð”@6xèkÖBâC<Ü@0<€A8tälØ@âD:ÚA0T@1À^Ö4TB1Â^ÔEúÿ2|0D20N’2|0E20N’6ERK8FRL2|0K2 0R@N’>RG4G`“É0J20NºþÐRJºJnîEúÿ2|0E20N’2|0E20N’2|0K20 N’LßøNuHç 08^ÖÁü0@:8^Ô2YA0æ@€ÿþЈ"@CéLAv–A0HÀxá¬F„0/Áü€ÿÿ$@ÕüB`JEfCèKþJ8^Ùl$t À„BAFA|†0C,í©€"€CéQÊÿâ`t À„r0C,í©€"€CéQÊÿèXE1Å^ÔLßxNuYOHç>?@*>&H08^Ò"8^0@J@o,A*x^”ÛÈ*<LðBF`Œ*AMõˆ`ìJf²·Îe»Ëcv`BC"8^²‹f&x^”BB B fR‹t 0S@ @b B g BÿfpJBg BÿgR‹ B g^ BÿgX·Îe»Ëcp`B@†@²‹f&x^”BA A fR‹r 0S@ @b A g Aÿf&JAg AÿgR‹ A g AÿgB`xt r BC`xr Åüp0$@ÕüB`Ãüp0 @ÑüB`BCìJCg Cg$ Cf^`:rB@éH„‚CéSA AÿÿgX`ærB@F@éH„‚CéSA Aÿÿg:`ätBAéIF€€CéSB Bÿÿg`àrB@éH€F€CéQÉÿîRŒ0 EÐ@¾@bþˆ…ÒRF¼o*g(EB`àLß|øXONu/ $H`RŠ@ÿ?NºýxTfî$_Nu/&/N¹A_XåˆrF’€ âˆ1À^Ô CNºÿÂPx^Ö&NuNVHn /.B§Hzý0Nº“FOïN^Nu/ HxðBgHxZ.EùA^€N’Hx?<ÿHxZN’Bx^Ô1üy^Ö1ü^ØOï$_Nu/&NºÿÀ CNºÿT&NuBuildExecGotoFindReplaceConfigAboutB'vB'|B'B'†B'‹B'“B'šF%1d %s/ /Nºÿ`vEúÿÐ/?HzÿäNºÿ0Tx^ÔRCOï Cfäü_&$_NuN¹AyP?8^ÞN¹AzŠ?8^àN¹Az‚XNu NVÿüHçNºíô*J8_g28^Ü2|0A\H08^ÚNºúÔ?<N¹AzBD`?<N¹AyòTJ@gNºÿp?<N¹AzT`°0x]8]H€H@B@Ј gr`2 gr`(gr`J@lr`gr` gr`BA²x^âg,0Áü0@ÑüB(2|Là€€€Cé²üLÑfê1Á^â6RCTD·D gJ8_g28^Ü2|0A\H08^ÚNºùüN¹AxÐ8/HnÿþNºìtPJ@fÿ0.ÿþ@÷ÿ=@ÿþ @! g @ fNºþ„J8_g28^Ü“É0A\H08^ÚNºù®0.ÿþLî8ÿðN^NuOut of memoryCan't exec command.Error opening '%s'/6NºýPAúÿÀ Cg Cf Aúÿ¾NºüÒ`/8^€HzÿÄNºý PNºþ/N¹ASº$HP°üfp`ð* â gB§/N¹A)ŒPJ@gÐ x^„"x^ˆ 8^"8^”z`°ˆf A  fR„°ˆcR…Rˆ³Èbæ?* N¹Abª/?* N¹Ad2PJ@f•Ê`j5@ ?N¹AcUD0„08^’x^†ÐE1@| Zˆ"x^„T`*³ø^f"x^” f¼ | Tˆ` ÿgÀR‰³ø^ˆeÐB|àEèJg B§/N¹A*P´üfpNºûÄ`B8_B@LîxÿØN^NuExecute: Press any key to continue.OïÿÀHç8$HNºþZJ@fv"8^€ JEï ` *f"A`ÀR‰fø`ÀRˆfäBIúøÜAúÿ˜N”Gï rp? KNºû|Jg0EùAmúN’ KN¹A3N¹AfÀAúÿtN”Nºù‚N’ü_Nºü>NºøôLßOï@NuScroll[UP,DOWN],Cancel[ESC,APPS]NVÿìHç HnÿìHx^äNºç¶Bg/N¹AWÊ$HOï°ügÞAúÿ°Nºø46* ?N¹Ab’?N¹Abº$HXp08_AòrAdapted by PpHd for PedroMSave changes?%s [ENTER]=Yes [ESC]=NoNVÿÈHç8 8^€g/HnÿÈN¹A_HP`B.ÿÈAîÿÈ!È^€N¹AmúEúõøN’J.ÿÈfAúýîNºòBrpAîÿÈNºôêJg 2N’AúýÝNºò&Hnÿä/8^€N¹A\”PJ@fGîÿ÷Bg/ N¹AWÊ$H\°üg–?( N¹A{ÎT àfÔ* fÈ@ ?* N¹AcGè$K0P[H0HHhN¹AbÐ !È^„\gv!È^!È^Œ€!À^”!À^ˆ` x^ˆ fü !È^ˆCê`À!È^ˆ$ICêfØ`V/ N¹AZ>/N¹ASºP°üg:/ N¹AZäHxN¹AbÐ !È^„Pfp`j!È^!È^Œ€!À^”!À^ˆ—Ë`p`L x^ˆPÐ1ü^ÐB8_Bx^ÒBx^Ú1ü^ܶüg2Eëÿþv` x^”  fRƒNºù|08^’x^†ÐC°Rmâ` Nºó,J@f ¸Nºñü_Bx^Ö1üØ^Ô1ü^Ø?8^ÐHzüSNºð8\J8_g x^Œr x^” gä gÞNº÷2"8^²¸^„gý x^” g fÞNºö\`ýNºöT x^” ÿgüð g fâ`Nºö4 x^” ÿgüÐ gè gâ`üÀNº÷œ`ü¸NºøÞ`ü°&8^p Nº÷òJ8_güž"8^„ C` gBD`RD²ˆg fè` p Nº÷ÂRC`BC¸Cfð`ühNº÷dJg`ü\Nºø‚ x^” güJ ÿfè`ü@Aúø©NºìârRp{Nºé 8x^Ô6x^ÖBFBE1Ë^ÖBG4|1Ì^Ô6 BD1ü^غGf ¼Df1ü^Ø?NºéŠRx^ÔRDRCT DfÖPx^ÖRGEê G f¾Nºí\ @ gT @Qg& @Rg* @Tg @XfP`(0R@rHÀÁ,HF`ÿ€SFjÿz`>SEjÿpz `ÿj0R@r HÀÁ*HE`ÿXËüÚF0@Nºö¶`D @ g< @fÿ4`0Nºó’`ûJAø^˜`Aø^´NºòÌ`û8Aú÷ÆNºëÚB.ÿäEîÿäBAp JNºî|fBC` JN¹A|^6NºìJgûJCfv¶x^ÐlNºõ¢¶x^Ðlúê`òNºô¸¶x^ÐoúÜ x^” ÿfê`úÎAú÷hNºëprpAø_ NºîJg’Hx_ N¹A_X6Nºóø x^” ÿgt2C/ Hx_ /N¹A_¸Oï J@fØ`XEúë Aú÷N’GúíÊrpAø_ N“Jg:Aú÷N’rpAø_*N“Jg$Hx_ N¹A_X8v`„Nºó„ x^” ÿgt2D/ Hx_ /N¹A_¸Oï J@fÚEø_ `NºïHJfø x^ŒrNºæ˜NºêŠ8T @Qgx @Rg @Tg @Xft`r`^JCgÿZSC`ÿT CnÿLRC`ÿFYx^Ô?< NºæFx^ÔHxHx^˜Eîÿä/ GùA^0N“rp JNºëìOïJfBC`Hx/ Hx^˜N“BC`NYx^Ô?< Nºåöx^ÔHxHx^´Eîÿä/ GùA^0N“rp JNºëœOïJfv`ÂHx/ Hx^´N“vOï `¬Yx^Ô?< Nºå x*^ÔHxHx^äEîÿä/ GùA^0N“rp JNºëFOïJfv`lHx/ Hx^äN“1ü_v`¤ 8_v`L 8_v`BÃü Òx^Þ0S@ @Žcv`,1Á^Þ?N¹AzŠv`Òx^à0S@ @0b1Á^à?N¹Az‚T D gF Dfýè`2 Ac "( Af;@ Cÿë0FÇLßþNu2¼€rRWÉÿúNuÍÞïÿpXQÈÿþNuAù`CèEøaPBPaæFg|BDr 4<ÿþ0‚aÔ†FÁFg(pVÈÿü1ÂaZ1Àa\êÿÿØ@ØD8;@z1Äa^1ø]a``TãZPDQÉÿÀ08a^gD @d>0¸aZa„08a\f6Sxa`f(1ø]a`88a^D`BšBšBZBxa^J8abgBx]B8abBD0¼€Nu8ðaPBx]Bxa^`ÿ< @€QRTXzsw123xde456cfr789 vgt (),/bhy^nju  p=mki *ˆlo+ - aq0.­68]g"Jx]&fB@Gø](SC1Ã]gp1À]&6ëQËÿúNu68] De ¸CfBD1Ä]Nu Cg4 C@gl C gF8]g Dae DzbDÿàaVBx]8ðaPPøabNu DzfF8]`äAúZ0g&Xˆ¸@fö8 `Ð D+fN¹Axê`Ä D-fN¹Ay `¶ˆC`° Dbö`˜68] CdGø](ÖÃ7„0RC1Ã]1ü]&Nuq?w!eér@t#yuüi—oÔp_aàsd°fŸg€h&j¾k|l"x©cÇvb'nñm;=\ˆ:({)},[/]^Œ7½8¼9´*¨4Ž5566--1•2233++0<.>­     $AúÜ`2Aúà`,Aúé`&Aúñ` Aúÿ`Aú `Aú`Aú`Aú-`NLFü'BgHPB§aa <B@S€füNùA"¼NùApNùAfvNLFü'BgHP?< BgaèaàHz&B§aØ <B@S€füNùA!ˆ2 _0Aúõ@ÿg˜FÁNùAyŒ2 _0@øc:"H @ðfÓØ`( @ñfÓØFÁNÑ @òf0äH"xȰad1À[¼åH"qFÁHPNÑAúŠ`ÿDAú¸`ÿ<åH {NsAxêAÏ@AAŽ\AÑh] A{òAxêAy AznAzzLBÆAɺ?@oðÿo0NsÐÈAè1Û pˆNs0@ f8cvg0 _FÀHP x\h“Ép rÿ`\HçÿþMù`Fü$2< PîpPQÈÿþ.gêQÉÿìFü'Pî¹pBnB.Ö=|€Pîpa–|!=|0<€rQÉÿþQÈÿøfpapNr'=||€|Þ=|€ùpN¹AznN¹A{´aú ¸È[Øl!üÈ[Ø?<N¹AzTN¹AyLßÿNsFü'3ü€`paNsAøczCú2< 0ÙQÉÿüNøcz29^À`Nq3Á^NqNqNu0NuTrap not definedProtected MemoryAbort by userBUS ERRORSPURIOUS ERRORAddress errorIllegal instructionDivided by zeroChk instructionTrapV instructionPrivilege violationDebug mode not availableLine 1111 EmulatorLine 1010 EmulatorSYSTEM ERROR: rebooting...Rom call not availablerÿ @ g@! m2 AoNu“Ép Hçÿþ,O(:0<NA<?ºx_JgÌ08_J1À`ðaÎJAfºgGøL0<¿/QÈÿügGød0</QÈÿüg —Ë0<?/QÈÿüg&Gù`?+ +?+?++fú+gú/Gø[0<÷?QÈÿüAè&OB#p QÈÿü.KHQ <DX€/m N¹Aa\4€g0@NC âˆS@0ßQÈÿü0tÿ`&0NA.NLßÿpNurÿJ@m @ l Eø`òÐ@ÔÀ2Nu1À_JaâJAn0aÚJAnNLNùA"À0A0<NANC OøDŸÀ"OâˆS@2ØQÈÿü0BRN¹AbOïGø`ð0<÷7QÈÿü(3ü €`gGù`_7_7___ 6ŸgGù0<?'QÈÿügGù€0<'QÈÿügGø[0<¿'QÈÿü0NALßÿpNuEø`òv?N¹AbTBZQËÿòBx_JBx`ðNu08_JaþöJAgAø`òprÿRAJXWÈÿú1Á_JNuHç>.<,I:âMÁÁ:@`L6ÇÆ8C`>x8 p0$GÕÀ`(GòH/ / N–PJ@o2SA"JÓÀp0Aò±ÉfŠcÒÖF¶Me¾âMJEf°Lß|øNuHç8(H&I>8SDBF6ÖDâK0ÀÇ* Ú€// N’PJ@o<RF`J@l8SD` `¸FdÎp @LßøNuHÁj D‚ÀHADA`‚ÀHAHÁNuHÁjD‚À`ê‚À`ît4„Àr2NuHABAHA‚ÀBAHANu"/ /a@ Nu"/ /aF NuD€Jm `&J€g(mòJlDa,"DNuD€JnD`DaDNua"Nu‚üJ€gømÞJmä°eg$rNurtNuH@J@f*H@‚Ài t4BAHAÃBNu?BAHA‚À$HA4„À2BBHBNutÃBHçv : E€càMvÖ;P6H@x *HE E€càMxØ;P ˜CgRDDDzé­Ò…*é­”…°‚cÔLß8NuOïÿ¼Hç>,H/h(*( ,($(Aï,rp)áˆÒ€p)H@B@Ò€)áHH@B@Ò€ ÁX‰plаˆfÎ&Ɔ F€À‚†€Ö¯(Ö¯,ƒ×j¤xpà»Ö…(È… F€À†ˆ€Ø‚د0„èÇ·Vpà¼Øƒ$ă F€À…„€Ô†Ô¯4‚$ pÛpàºÔ„"„ F€Àƒ‚€Ò…Ò¯8Á½Îîp à¹Ò‚*Ê‚ F€À„Š€Ö…Ö¯<ƒõ|¯pà»Ö*Ê F€À‚Š€Ø…Ø¯@„G‡Æ*pà¼Øƒ*ʃ F€ÀŠ€Ô…Ô¯D‚¨0FpàºÔ„&oH*Ê„ F€ÀƒŠ€Ò…Ò‹ýF•p à¹Ò‚*Ê‚ F€À„Š€Ö…Ö¯Lƒi€˜Øpà»Ö*Ê F€À‚Š€Ø…Ø¯P„‹D÷¯pà¼Øƒ(oT*ʃ F€ÀŠ€Ô…ÔŒ‚ÿÿ[±pàºÔ„*Ê„ F€ÀƒŠ€Ò…Ò¯X‰\×¾p à¹Ò‚"o\*Ê‚ F€À„Š€Ö…Ö‰ƒk"pà»Ö*o`*Ê F€À‚Š€Ø…Ø„ý˜q“pà¼Øƒ.F‡ od Àƒ*Ê€…Ô€Ôˆ‚¦yCŽpàºÔ„,F†$oh À„*ʃ€…Ò€ÒŠI´!p à¹Ò‚ À„*ʇ€…Ö€Ö¯0ƒö%bpà»Ö À‚*ʆ€…؀دD„À@³@pà¼Øƒ À*F…ʃ€…Ô€Ô¯X‚&^ZQpàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯,é¶Çªp à¹Ò‚ À„*F…Ê‚€…Ö€Ö¯@ƒÖ/]pà»Ö À‚*F…Ê€…؀،„DSpà¼Øƒ À*F…ʃ€…Ô€ÔŠ‚Ø¡æpàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯<çÓûÈp à¹Ò‚ À„*F…Ê‚€…Ö€Ö¯Pƒ!áÍæpà»Ö À‚*F…Ê€…؀؈„Ã7Öpà¼Øƒ À*F…ʃ€…Ô€Ô¯8‚ôÕ ‡pàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯LEZíp à¹Ò‚ À„*F…Ê‚€…Ö€Öƒ©ãépà»Ö À‚*F…Ê€…؀د4„üï£øpà¼Øƒ À*F…ʃ€…Ô€Ô‹‚goÙpàºÔ„ Àƒ*F…Ê„€…Ò€Ò‰*LŠp à¹Ò‚ µ€¹€Ö€Ö¯@ƒÿú9Bpà»Ö ³€µ€Ø€Ø¯L„‡qöpà¼Øƒ ·€³€Ô€Ô¯X‚ma"pàºÔ„ ¹€·€Ò€Òˆýå8 p à¹Ò‚ µ€¹€Ö€Ö¯0ƒ¤¾êDpà»Ö ³€µ€Ø€Ø¯<„KÞÏ©pà¼Øƒ ·€³€Ô€Ô‹‚ö»K`pàºÔ„ ¹€·€Ò€ÒŒ¾¿¼pp à¹Ò‚ µ€¹€Ö€Öƒ(›~Æpà»Ö ³€µ€Ø€Ø¯,„ê¡'úpà¼Øƒ ·€³€Ô€Ô¯8‚Ôï0…pàºÔ„ ¹€·€Ò€Ò¯Dˆp à¹Ò‚ µ€¹€Ö€Ö¯PƒÙÔÐ9pà»Ö ³€µ€Ø€Ø‰„æÛ™åpà¼Øƒ ·€³€Ô€ÔŠ‚¢|øpàºÔ„ ¹€·€Ò€Ò¯4ĬVep à¹Ò‚ F€€µ€Ö€Ö¯,ƒô)"Dpà»Ö F€€ƒ³€Ø€Ø‹„C*ÿ—pà¼Øƒ F€€„·€Ô€Ôˆ‚«”#§pàºÔ„ F€€‚¹€Ò€Ò¯@ü“ 9p à¹Ò‚ F€€µ€Ö€Ö‰ƒe[YÃpà»Ö F€€ƒ³€Ø€Ø¯8„ Ì’pà¼Øƒ F€€„·€Ô€ÔŒ‚ÿïô}pàºÔ„ F€€‚¹€Ò€Ò¯0…„]Ñp à¹Ò‚ F€€µ€Ö€Ö¯Lƒo¨~Opà»Ö F€€ƒ³€Ø€ØŠ„þ,æàpà¼Øƒ F€€„·€Ô€Ô¯D‚£CpàºÔ„ F€€‚¹€Ò€ÒN¡p à¹Ò‚ F€€µ€Ö€Ö¯<ƒ÷S~‚pà»Ö F€€ƒ³€Ø€Ø¯X„½:ò5pà¼Øƒ F€€„·€Ô€Ô¯4‚*×Ò»pàºÔ„ /(Ѓ-@Fƒ €ƒ¹€Ò€Ò¯Pë†Ó‘p à¹Ò‚Ó® Õ®Ù®Lß|øOïDNu oB¨B!|gE#!|ïÍ«‰ !|˜ºÜþ!|2TvNuHç<(o $o$*/(&(æŒp?È€$çŠJ…ož râ ",Ò€)A Ђ(€´€cR)AJ„f&J$E`T Ð…r@²€m&`v@–„Kì// HuHN¹A^0 ЃOï r?²€l@Gò8$E•Ã"M LNºø `"K LNºøGë@EêÿÀp?°Šmê´üg/ / HlN¹A^0Oï Lß<8Nu€QOHç<*o&o tIïpüÀ‚r‚ 3ç‰â¨€(R‚p°‚fà æˆr7’€ r?À @HhHzÿz/ Eúþ®N’Hx/ / N’tOïpüÀ‚r‚ 3ç‰â¨€(R‚p°‚fäLß<PONuÿÿ?ÿigEsDsPd@%"#8Fÿÿ@9hˆb™u‡@W ‚'‡x‘sÿÿ@'6„”RAd%@ÿÿ@#‚8Y6p#@ Rp„0`ÿÿ@8c6P@AqD0$‚`Aÿÿ@B–qD˜V?ùI”3™7†Qÿÿ?ü11p?þ%f82(”@ÿÿ?ÿFgƒ3—U)@ÿÿ?û†4"TB?ý4$ˆx#XXÿÿ?ÿ3ƒPd!–@?ÿcfw#gX@p€%ÿÿ?úDTEQNVÿlHç< x [g|IúÿÈKø[Nº­ .Hx / pœÐŽ/N¹A^0Oï -Gÿ¨&ƒÿÿÿ|HxpœÐŽ//N¹A^0Oï Hx/HnÿŒN¹A^0Oï -nÿ”ÿx-nÿÿt=nÿŒÿr=nÿŽÿppÀ®ÿ˜-@ÿl n?õÿpc–!îÿx[ !îÿt[1îÿr[1îÿp[!îÿx[,!îÿt[(1îÿr[$1îÿp[&Nº¥HEîÿôHx / / N¹A^0Oï Hx / p¬ÐŽ/N¹A^0Oï Hx p¬ÐŽ/Hx[N¹A^0Oï Iúþ˜Nº¤¾EîÿÐHx Hx[/ N¹A^0Oï Hx / Hx[N¹A^0Oï !îÿx[,!îÿt[(1îÿr[$1îÿp[&Nº¤´EîÿÄHx Hx[/ N¹A^0Oï Hx / pœÐŽ/N¹A^0Oï Hx p¬ÐŽ/Hx[N¹A^0Oï IúýÄNº¤(Hx Hx[HnÿÜN¹A^0Oï (.ÿä*.ÿà<.ÿÞ6.ÿÜ0.ÿngFCHx pœÐŽ/Hx[$N¹A^0Oï !Ä[ !Å[1Æ[1Ã[Nº¥žEîÿèHx Hx[/ N¹A^0Oï Hx / Hx[`V0.ÿngZHx Hz§2Hx[$N¹A^0Oï !îÿx[ !îÿt[1îÿr[1îÿp[Nº¥BEîÿ¸Hx / / N¹A^0Oï Hx / / N¹A^0Oï Lî<øÿHN^NuNVÿTHç<8.68[Bx[Hx Hz¦êHx[ EùA^0N’Oï Nº¡²Jm\ x?ÿ[bÒJDgJCg=|ÿV`BnÿV`JCWÀH€=@ÿVn ÿVHx Hz¦\Hx[N¹A^0Oï Hx Hx[Hx[ N¹A^0Oï Nº¢&ƒÿÿÿ|Hx Hx[/N¹A^0Oï Hx /Hx[N¹A^0Oï Hx Hz¦8Hx[$N¹A^0Oï Nº¢ž(„ÿÿÿpHx Hx[/N¹A^0Oï &ƒÿÿÿdHx //N¹A^0Oï Hx /Hx[N¹A^0Oï Nº©öEîÿ”Hx Hx[/ N¹A^0Oï Hx / Hx[N¹A^0Oï Nº£|Hx Hx[HnÿˆN¹A^0Oï -nÿÿ`-nÿŒÿ\=nÿˆÿZ=nÿŠÿX`œJDgJCg=|ÿV`=| ÿV`JCVÀH€=@ÿVDnÿV-x[ÿ`-x[ÿ\=x[ÿZ=x[ÿX n?õÿXc°Hx Hx[Hx[IùA^0N”Oï Hx Hx[Hx[$N”Oï Nº¡xEîÿ Hx Hx[/ N”Oï Hx / HnÿdN”Oï Hx p›FÐŽ/Hx[N¹A^0Oï IúúFNº ôEîÿÐHx Hx[/ N¹A^0Oï Hx / Hx[$N¹A^0Oï Hx p›FÐŽ/Hx[N¹A^0Oï IúùºNº ¦EîÿÜHx Hx[/ N¹A^0Oï Hx / Hx[N¹A^0Oï Nº¢FEîÿÄHx Hx[/ N¹A^0Oï Hx / Hx[N¹A^0Oï !îÿ`[,!îÿ\[(1îÿZ[$1îÿX[&Nº lEîÿ¸Hx Hx[/ N¹A^0Oï Hx / Hx[N¹A^0Oï !îÿ`[!îÿ\[1îÿZ[ 1îÿX[NºŸHEîÿôHx Hx[/ N¹A^0Oï Hx / Hx[N¹A^0Oï 0.ÿVgFx[0.ÿVgbGùA^0EúžúgHx Hz£€Hx[ N“Oï N’Eîÿè`Hx Hz£rHx[ N“Oï N’Eîÿ¬Hx Hx[/ N“Oï Hx / Hx[N“Oï 0.ÿVgFx[`Hx Hz¢ÊHx[N’Oï Lî<øÿ0N^Nu x [gBgNºûÈTNu?<Nºû¼TNuNVÿlHç<=x[ÿl28[0.ÿl€A @ÿgª A fHx Hz¢RHx[N¹A^0`Š n ÿlg„-x[ÿx-x[ÿt<8[*…ÿÿÿ|Hx Hx[ /GùA^0N“Oï Hx /Hx[N“Oï NºœÔEîÿˆHx Hx[/ N“Oï Hx / Hx[N“Oï Hx /Hx[ N“Oï Eúœ¸N’Jf\Hx /Hx[N“Oï Nº:(@!îÿx[!îÿt[1îÿl[1Æ[Hx Hz¡„Hx[ N“Oï N’Jgp°Œf!îÿx[!îÿt[1îÿl[`J!îÿx[!îÿt[1îÿl[1Æ[Hx Hz¡HHx[ N“Oï N’Jf$& f!îÿx[!îÿt[1îÿl[FF1Æ[`Rp°ŒfZ!îÿx[ !îÿt[1îÿl[1Æ[!îÿx[,!îÿt[(1îÿl[&1Æ[$Nº†Gîÿ”Hx Hx[/ EùA^0N’Oï Hx / Hx[N’`îJFfBnÿr`& VÀH€=@ÿrBF €ÿÿ €ÿþb rHA¸üoÔ Àâ‰J€gö*ABB2nÿl nÿt".ÿx`ª!Á[ !È[1É[1Â[!Á[,!È[(1É[&1Â[$NºœâHx Hx[Hnÿ N¹A^0Oï ".ÿ¨ nÿ¤2nÿ¢4.ÿ  & ÀƒgP!Á[ !È[1É[1Â[!îÿx[,!îÿt[(1îÿl[&Bx[$NºœŠHx Hx[Hnÿ¬N¹A^0Oï ".ÿ´ nÿ°2nÿ®4.ÿ¬ âˆ*@ºüfÿR`(& Dƒ-CÿnrHA`" .ÿnÀâ‰*AJ€gðHx HzŸxHx[$IùA^0N”Oï !îÿx[ !îÿt[1îÿl[Bx[Nº”Hx Hx[HnÿôN”Oï ".ÿü nÿø2nÿö4.ÿô(M`¨!Á[ !È[1É[1Â[!Á[,!È[(1É[&1Â[$Nº›¶Hx Hx[HnÿÄKùA^0N•Oï ".ÿÌ nÿÈ2nÿÆ4.ÿÄ À®ÿngL!Á[,!È[(1É[&1Â[$!îÿx[ !îÿt[1îÿl[Bx[NºœîHx Hx[HnÿÐN•Oï ".ÿØ nÿÔ2nÿÒ4.ÿÐ âˆ(@¸üfÿT!Á[!È[1É[6.ÿrµC1Ã[`¨!îÿx[!îÿt[1îÿl[1Æ[Nº òEîÿ¸Hx Hx[/ KùA^0N•Oï Hx / Hx[N•Oï Hx Hnÿ|Hx[$N•Oï Nºš¸EîÿèHx Hx[/ N•Oï Hx / Hx[N•Oï Nº EîÿÜHx Hx[/ N•Oï Hx / Hx[N•Oï Lî<øÿHN^Nu o"o É ÉÓï ÉBPNu o"o/)/)/aÖOï Nu opJh f "(²¨dpNuHç0$o6/&oHSHRaBPJ@g¶Sfp` SÿðfäB@Lß Nu o"h!INu/Y o vÆot oÿðd&.ˆ C mfaÊt` Cfalt4`a6$ X&Nu"op")"i`áˆtЂQÉÿö ÿÿÿÿfæNu///aÿvvaÿná‹aÿfá‹aÿ^á‹ X&Nu///aÿHaÿBáK0X&Nu o (NuHç0$o&o&+/?HRaèOï J@g$ j&k`ÛQËÿüƒ ƒÿÿÿÿfì%HpLß NuHç8&o$oHRaþ~XJ@g6üÿð6üB›B“`T(j ÿf ,ÿgRŒ%LHRaÿJ6?HRaþ Oï "Cÿð *L6Ã6À&Á&ªÓª Cÿðf5| pLßNu o"hïï !INu o"hïï ï ï !INuHç $o&/p ¶€bx:` ƒdxz ` ƒdxz`xz jÑÄÑñêcB@`F0/@ÿð€E?HRaÿr\ Dm*g Dg/HRaÿpP`"jÃ%I` ?HRaÿB\pLß8Nu op ógxW@ øgpS@ âghS@ ág`S@ ÝgXS@ ÞgPS@ àgHS@ -g@S@ ßg8S@ Üf åfú ägp` gS@`U@ Ûg Ùfä ÙgS@NuEXPRLISTMATFUNCPRGMPICSTRTEXTGDBDATAFIGMACOTHSYSALLASM‘È0/ @b 2åIÐAAûœNuAùpCú ÉCú² ÉCúÔ ÉFü#OøKøIøNX,O?</až`a>a Jj ˆfz0 hgàa„v Ég°f`RC xéx°CfRadDf×^&é{HCé{ ƒàb88aH=|ÿþÐDa" #fEùGù@KùA M0<ÿ$ØQÈÿü5@à<< a¤ V_a¢aòaú0 xgä Vgê fÎaàaÐBV(á\fxHD,„ J0`èàQÈÿú < F˜€dÐDxÜ@?HPa¦X:0<à˜€dÐDx>€/ aŽÚ@>„Hjàa‚ÐEPa`aval»üAf$AúN#ÈxCù_ Qÿÿg Ian M0< a Ma`0< J"Ma€ÒÀ0 KavpH@ÛÀa**a¸–…bÿ0g Ma.Aêà"MaPa Bg OCùApa>aŒFü'Eù@.Z ZNÐ/Fü'0¼PP0¼ 0¼ÐÐ0gø0¼PP0¼ÿÿFü# NuHçà Fü'$ID@°Ie6r’@g 1ÿ2¼PPâI`2<ÿ2¼PP04¼4À0gøQÉÿî2¼PP2¼ÿÿFü#LßNu,¼ˆVFü'Cøbf2)XA²il6ù` 3A4) Np˜ RB´imBBQÈÿð3BFü#Nu/?<Hoa\0áX_fîNu/p o6/ g6BBCøadFü#JigöFü'2)1ÂÐBRA²imBA3ASiSCfÐ&Fü#NuFü&HçààCù` EéAøad2(²hmPøch`r4fjg¼à¼Pøci`VgRh2€RA²hmBA0`6 g0AøbfJhg"4g20€ShRA²hmBA0`Ø‘LßNsa`þ/p `/p`/p` /p`/pHçÀAû0"Lp˜CéQÈÿøJ fRŒAúSfIìܼLß Nu>~>~x>  zLx>> >>AAcwwFl8<<<< < >>00  >kk>> 08<><80 >cccccc>>cccccc>~````~>>~`~~`~><<<66666666666>``|bf 0fF8ll8}ofn; 000 0  0""~0 0`@>ccckccc>x~ 8  0`0 ~~`0  0`ccooo``>333~3c```c3|6333336|102>201312>200x3c``gc3ffff~ffff<<fff<s366<663sx0000133cwkccccccs{ogcc6ccccc6~333>000x6cccgo>~333>633sff=p00>3333nffff;f0x;fff>v7;00x 8~F 0b~0`0p  p-&>;offo;66<6666< ~f```````;o 66cc6000006cccc6p0<0>06666666w?v666g36<``3  36ffl8>X >{ko>Ikkk>>ccccc66w"AIII6>00<00>!~`b<8lp````~>>c66c>>ccc> 8 0 > ~~0``0 0`| 0TT<<<>khhk>300~00`Z$BB$Zfff<~~$($$ l<"MUQQM"666> (P( ~>"YUYUU"|8DDD8|6 ><<v66`?kkk; c66c8<666>P( (P>fflm6 XX04ZZZ,0`f<0333>0x336333;n0<>ff; <>ff;$<>ff;,<>ff;6<>ff;$<>ff;6 ?HI6fff<,|fffff0 80p6;333>0xffff> 8Ì]PAÎAÉAÎ AÉ"AÎÈAͪAÍÔA͆AÑœAÑÌAÎÒAÊÀAΖAÎAËòAÊäAË~AË.AÉ.AÉ@AÎŒAÉhAÌVAÌVAÌžAÌêAɆAɺAɤAÏ@AÊŒAÊjAÌ*AÒØAÍ\AÍ2AÑhAÑrAÓàBkXAÇAƘBkXAg¤AgÐAg¼\>BkXAÇ4AçDAèAçèAÐpAÞBkXAÞ‚AÞ^AÞ BkXAÞ¢AÞ¢BkXBkXBkXAÛfAÝ8AÛ:AÙ¨AÙ€AÛ AÛAÚ¼AßBkXBkXBkXBkXAíþAíþA{ÂA{8Az’AÃVAJ*AIvBkXBkXBkXBkXACAC€AZ>AZ.AZäAZÚAW²AW¶AXA\FAT<AUºAUüAT¾AUðATâAUfAT®AX0AX†AXðAYrAZAWúAY®AY°AYÒAYìAYASâBkXASºAWXBÆBðBkXBkXAHúA£AS^ASxASŠAV~AW²A]BkXAS<A\BBkXA\BA\BBkXASöAc"Aa\Aa\AeAaNAeAc AcAbAbAbºAb‚Ab’AcdAd$AbêAbªAe¤AcAbÐAaþBÆBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBÈBÂB¼B¶BlBBRB8A¢FA¢A\ÆAÞÒAÞ¾A|ÀA|¸A|¤Aß(AÞþAâØAß<AßJAßnAßLAßZAàzAàzAßúBkXBkXBkXAá<AàäAàPAßjAßJAådAådAådAådAåhAådAå€AuTAtÆAt‚AsÜAt&AuTAsrAuAuTAuTAuTAuVAzzAznAzjAzdAz(Ay¸AyÞAyòAzB B èB 4B VB œB vB ÂB ôB\BÀB *B B ÞBkXB°B PB ^B B ,B „]¶A¡hBkXBkXBkXA36BBkXBkXBkXBbBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXATBkXBkXBkXBkXBkXBkXBclBkXBc†BcºBkXBcÊBdBd<BdjBkXBc<BcRBe’BetBe^BdÞBd†Bd’BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXAÇÂAÇÂAy„AyTAyxAß4AãXAáÎAßBüA'ÎBkXA'¶BkXA(A+’A)ŒA*A+A+ŽA(bA[A)BkXBkXA+lA)>BkXA,èBkXA_|BkXA)BàB 0B `B xBkXBkXBkXBkXBkXBkXBkXBkXAzœAz’A{´A{ÞBrBšB°AõAu^Aø6Au„Ah|AgòAjTAkAh@AfºAf®As An‚BèB†AnAuæAv8As.AvìAx€AgvAg‚AkþAkðAmúAnpAgBAg AfàAfÀAo°Av°Aú@Al"An8ApBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXAÇ8BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXB BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXAaäAcFAdBBBBBBBBA¢ÌBBA{ÎAzŠAz‚ACîAEÀAAŽAAÎAAÀABXABABîABàBkXBT¸BTäBUêBBBkXBkXBkXAíæAðAð$AïüAðAétBkXBkXA TA ZBkXBØBèBkXBkXA^0A^A_HA_ÞA_0A`A^îA_ZA_¸A^ÐA_ A`$A`JA`nA`ˆA`ªA`æA^€A^€A`ÌA_A[TA[BkXASžAWÊAz"Ay¸BkXB ôB xB pBkXBkXBkXBkXBkXA]ˆBkXAÉÌAÉVAàBÄBkXAxêAy BkXBkXAyPAxÐB¼A,¶A,ÜA,ìBkXA,ìBkX[°BKæBKÐBKôBLBLbBL2BLlBLXA¤>BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXAôfBkXAÇæA @A¡A¡A¡BA¡BA£†A£îBkXBkXA¤ BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXA ÌA¢´A¢´BkXA –A ÞA þBkXBkXBkXA `A xBkXBkXBkXA >A >BkXBkXBkXBkXA¢”B ÖBBBkXB„BkXB†B˜B˜B†BÀBªB˜BÒBkXBkXBkXA¢hBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXA¤^BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXB<BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXAJ*BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXAI0AI0BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXB˜BÆB|BhA{òBkXBkXBkXBkXBkXBkXBkXAôšAôÆBkXBkXBkXAôòBkXBkXBkXBkXBkXBkXBkXBkXA¡RBkXBkXBkXBkXBkXBkXAéÊBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXA\”BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkX]®BkXA&ÐBf(BgBkXBkXBkXBkXBkXBkX`AAPÅAPÀc¶BkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXA¤ÄBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXaLBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkXBkX[¸BkXBkXBkXBkXBkXBkXBkXBkXBkXBkX(http://www.timetoteam.fr.st) This program is free software; you can redistribute it and/or modify it under the terms of the GNU GPL as published by the Free Software Foundation (version 2, or any later version). It is distributed WITHOUT ANY WARRANTY. See http://www.gnu.org for more details.Nq @tiemu-3.03-nogdb+dfsg/pedrom/pedromv2.tib000066400000000000000000002761471220314353500203330ustar00rootroot00000000000000€|€€!€28O€¡€MAdvanced Mathematics Software& @€{ ÌÌÌÌL!!ˆ"E"E "E&"E,"E2"E8"E>"ED"E¢"EºRO!®š!®À!®à!®ì!®ö!®š"E"@p"@”"@ "j<"@¢"@à"AZ"G|"F`!!ˆ"Ft"F€"F¦"F~"F"F"F"F"F"G¾"F"F"FÿUªÿü"ƒd¹pFü'OøLpKù`Mùp=|@@;|ÿÿ:¼€2<tQÉÿþg€Aù^¤NqNqNqFü'0€NqNqNqFü'0€9pp3ü?p3À^3À^3À ^#Àp#ÀpNqNqNqFü'0p@@ ;|1€;| €@|!|²|î;|ÿÿ‘ÈpÿB˜QÈÿüa¶"|!}$³ü!€bþ9`Vø]ËB¸aLaCìHz(Da$Hz(ZaHy"šôaa>†a.na}VaJaŒ` Nù!|B8]ËOøLAøDN`aRan2$*3ü²`v Ac&( Cg3üÌ`Aú(>Q‚fBrŸHkPÄAø]düÃÅÄ ¨ÿü¼N¹!®ŒB¸[´B§vRWaV‚QËÿøHy"AbHxd?<aVÖHxÐ?<aVÐHxd?<aVÄHy!}Hx?<aV¬aY*aUVaX2>¼2aVø>¼‚aVøHx] aXXaVÌaBÔAø]l!È]TBP||N¹!ÉlBhBh" <ïx!@!@!@!|L0B¨$!È]Pa¢aBa?¬a|$N¹""|9`gý~OøLFü`Nù"Ev¹`Aúü`“Ép?"ØQÈÿüù`NuHçÿþOïÿì,OEù#Gù$ RÿÿgR Rÿüf6 NCêBpÙWÈÿüfSˆü\Cê pÙWÈÿügBSˆIêa,î)ˆx8*DrÂDØAÕĵËe¨$K×üµü_ÿÿc˜OîLßÿNuHçþNL?BEaþJf¬08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`µüÿÿbp @fh·ü_ÿÿb`·ü"ÿÿcX @fPRƒCÿþIó8ÿ " H@HA²@f:Iò8ÿ¹üÿÿb. ¸ƒÃÌ[¨f$ ¸%Ue]¨fâ‹0<AúJCøcz2ØQÈÿüNøczzAù^¹`NqNqNqFü'0NqNqNqFü'0ù`0FßLßþNuSCm"(K8¼PP>6¼6Ç0gøQËÿî8¼PP8¼ÿÿNù!%‚HçþNL?BEaÜJfx08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`µü_ÿÿb>µü"ÿÿc6 ¸ƒÃÌ[¨f, ¸%Ue]¨f" €ÿÿ$@0<AúJCøcz2ØQÈÿüNøczzAù^¹`NqNqNqFü'0NqNqNqFü'0ù`0FßLßþNu4¼ÿÿ4¼PP4¼ 4¼ÐÐ0gø4¼PP4¼ÿÿNù!&pN¹"Ab ]ÀNuHç`pt2RAÐBQÉÿúLßNuHçÿþNL?Fü'!üƒÃÌ[¨!ü%Ue]¨Eù#Gù$~ÿ¾Rglx8*DrÂDØAIê!Ü\N!Ü\RB8\VAø\Na/6Jg6!Ü\N!Ü\RAø\Na/"Jg":aÿtº@fÕĵËe¬$K×üµü_ÿÿcœ`EëŠÐaþZ`ä ŠcÞâˆS@¾ZVÈÿüfä`ÐB¸[¨B¸]¨FßLßÿNu /B@ @tÿ2 o &/$NL?Fü'!üƒÃÌ[¨!ü%Ue]¨,O"gHPa-f& g¸a)fB@2( Af¦0h NC(HpÐT/aýž faaý’ g‚Gèÿì a)**Ha7J8gl a(J€gbaü2?/-//(/?<ÿþ$OvaúGë$L6TCaùò>¼ÿü$OGëÿìvaùâJ@g"Gëm ?- ;D Aøc¶åL!‹@a7 p.NB¸[¨B¸]¨FßLß|Nu oNL?Fü'!üƒÃÌ[¨!ü%Ue]¨BgHPa,Š g/H>¨ aü~ oBh a/”\B¸[¨B¸]¨FßNu"y ³ü c ³ü ÿÿbNÑAú˜Nù"EJpNuHç>NL?Fü'!üƒÃÌ[¨!ü%Ue]¨,OEù#Gù$Bz| Rÿÿg RÿügPÃR…p0*@rÂ@ÐAÕÀµËeÚJgžçE¿Åcª$K•üBg RÿÿgDx8*DrÂDØA Rÿøg(AêN¹!·N?gt/a5*?gj0@NCâŒSD0ÚQÌÿüxÕĵËe¶EëŠÐaù”J@gH>g,aû¶Gèÿì0GNC$H&aøV0CëAøc¶åH!‰0a5’`Ð$K×üBzµü_ÿÿcÿ$| .NB¸[¨B¸]¨FßLß|øNuaü†/(Hx/(/(Hz"E//axÀOïNuCúô o`2jpNuNLFü'08^¤Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`Aù! Cø[$pØQÈÿüAù^¹`NqNqNqFü'0NqNqNqFü'0ù`Fü o?8[(/8[$Hz!WHPaxOïNuaþ a@Na4Receiving a TIB... ON to cancel BEFORE receiving. aNBNLFü'Aù^¤¹`NqNqNqFü'0€NqNqNqFü'0€ù`aö"aÎAù"gCù0<"ØQÈÿüNù LJfüBgHhÿÿa)ž f&a(aL.ˆg0|a#t g0h "La#f f W`Ü\NuHy!Moa)fX g0h aM` ÙfSˆNu‘ÈNu -föarâCèNug *g ?g g²gèpNuRˆ`àNuNugö²føHç@ÀaÈLßJfêNuHçþþ$LxGø\hgÖ gôSŠ'Š@XD DŒlÀB "f0R³@üRŠgª "fô`PRŠRŠ >fRŠg gôSŠ` >gà gÊg` *fPÁ ?fPÁ fæB*ÿÿJgÿn*3@üYDCø\DJfü?<Hiÿÿa(¤\`a(ò&gÿF"EaþòJfì'ƒ@XD DŒmà`SŠJfºa äL1Ä\fLßNu s@üEø^ CúN f >fRˆT‰`Eø^ 2f" >f  gúJ gavb gYDb¬auÖNurwaHçðàap&68\fUCmEø\pÔÃÔÃÔÃÔÃ/"at|XQËÿöLßNuEúaKÊ g$aKú @ m @ènÀü/?<aI:aI¦\NuaujaÈat LgZ "f gP "fö |fæHPB 8^fBx^Aø^0¸^1<a|‘ÈCúÿREø^auša@(_8^ fAø^ au` 8^f$Bx^Aø^0¸^1<a{Ò1ü^aAø^ `tìanü1ø]\$  gúSŒGúà$K0g&Có LJg± gøTŠ`êg fòaý|0Nó L—Ëg föGèÿÿBaü¨ g¼ (gF?( aJD óg àg"T`.aý6aþ†0Bx]Üat 08]ÜfNu`GÔaýaþh0Nù"XHTaJ.¸]¶N¹!ðJ8[ºg .¸]¶N¹!íþ>€0@NCHPaJXaa0XNuHçÿþv(žÃ&OHT$Lg  föB$aJ‡ gga``ø(WgB $gZ >g f t a8t>a4`ê ,2ÿþf , ÿýgÚt a,ÿÿ`ÐBp( _"Oa+¼Oï(LßÿNuSCmÂNu~$L {fRŠgÒ }fö`~SŒ`~ gô  föB,ÿÿHçOïÿÄHWaF„J@f,amDHRa:.¸]¶N¹!ðX*x]¶8(KzN¹!î26&LaFxOï@Lßpðgÿ$aÿ|`ÿNù!éÊHç>HPa+ø _aarjLß|øNu o0/Hç>>VGGÿþžÇ"OBS@m.ØQÈÿüBIïOïÿÄHWaEìJ@f aýaF`>€ar$Oï@ÞÇLß|øNuHz‰aHv`Hz` Hzê`HzaHZXNuHzÍaHTYaGü OvaJB@ yf ef sfJWÀPNuaHÚaFº?aH¼0NuHçàÀ?<HP??a<Oï LßNuHç~ðzÿ"HBBD<8]N¹"&ÐF1À]HQJfüHQ| ÿÿü ü B028]a¨"_B!"_aŽ @ gŠ @g" @g` @gp @Rgn @Xgr @QgÒ @TgÖ @QgÚ @TgÜ @ kgx @ gj @ m @oT @ÿbta*`ÿX³ÈgÿRSDS‰$Iêfú`ÿBBDBaþª0Lß~NuHR¸CgRD$IJfüSŠRSеÉlöÀ$_Nu@ HçàÀOïÿì?HzVHoaprEï aFüOï$HLß gþàJgþÚgþÔ ;gaš`ð³ÈgþÄS‰`þ¾Jgþ¸R‰`þ²³Ègþ¬S‰`öJgþ¢R‰`öJgzÿa `þ’"HücülüeüaürB`ÿ:0g2HPY OÆø] üï¸] P?<Hz2¦Hhÿýa2®Oï _"HBBDNu E lþ6RE`JEoSEGø_L0Àü*×ÀJg a¤gaþâ`öSE`þ a2`þHçÿþ/8]aE¼!ß]Lßÿ`ýìHçàÀAúœ‚ҽƳ2<ÞÚÿ`‘äZ«ø¸\1¼?BùfZíNÔTÉ>aúJ@g:NL?Fü'!üƒÃÌ[¨!ü%Ue]¨Eù#èaì,Õüµü`cîNBaùÜJ@föNuaùÒJ@fó¤NuaùÆJ@fñ€Nu/,OEú x\fm$ x\l -f hgŒ lf EúÔHz¶aAäHx\DHzxaAØ>¼B8\CAø\DJfüHhÿÿaêv g>RC&H0( f B§BgBgBg`0@NCHPt4B@0(ÿ??+ ?HSHRaA†Oïaþ`¾>ƒHz6aAr.N,_NuHzHzaA`BgB§a‚v gÖRCHPHzOaAFPaÀ`èEúþF0gAúþ>HpHz/aA&PXŠ`æ`ø a(²QB§B§B§HoHoB§aí^Oï Ñ—a(/Hza@ìOï Nu`2´Aú’ x\fm"x\lg \föB!`>!ü!Mµ\l1ü\f`.AúïÈ`(AúÎ`"Aú Î`Aúî$`Aúv`AúÈ` Aú‚`Aúîž x\fmøOïÿœ&O$H08\fS@g41À\fåHCø\h"q KBÙfüB§HhÿÿN’PJ@fHkHzéa@6P`ÄOïdNuHç>N¹"JØawar¦a 4aè0ad*?<B§a4>¨ hþÿ a& ax fêEøcº:<ÎvxJšg$0 @g @g°xaƒa%ÌRCQÍÿÔa)¨a'L>„g Hzýa?¦X\Lß|øNu x\ff÷ x\lJfü"x\pJfüHiÿÿHhÿÿa¶PJ@fHzýHza?^PNu x\fföä] x\laÞ gF>¨ 0WNCp0V@a$J@g00WNC2VA"H>€0@NCÙSAfú x\paJ€g aÄ1W `a%HzHz£a>ðP\Nup x\fg 8\l!À^€N¹"4à`0¦ x\fm/8\lHz¢a>ÀP`ö>Nuaunppg is unvailablea>˜XNu x\fmö$Hç>Oïÿt&O"KAø\lp!"ØQÈÿüOïÿÒ(OB:8\fSE Lp(Cø^ N¹!¬ gPJgêJfü ( ÿþfB(ÿþañ88\fEø\habJ/afì.¸]¶Bg?<@ [JfüHhÿÿaOï SEgSDfÒ`žOïºLß|øNu?8_JHz8a=ò\Eø`òvBD0g0@NCHh/?Hz+a=ÐOïRDQËÿàNu x\fmõT x\la> N¹"IôJAo0BRa#²Nu48`ð x\fg x\la=âNù"J Eú‚ x\fmRSx\fgJ08\fåHCø\h&q?<=HSa `\ gÜB 1WÃtÿ0gÎRBAò"Ka –J@fì¸cvJg¶øcv`°Nuvÿ0gøRCHzU8cvfV—HrHz|a=Oï `ÜMS[f x\l x\fgEø^ CúðþN¹!¦t8^ fBx]\Hx^ aXJ@ma`ðp Hx^?a \NuNù!«.Nù!©† x\foEø\lCúð² Z -f Aø^ f.` N¹!¨^ g"HPaÂJ@m Hx^?a¼\`î _N¹!¦Sx\fn¼NuUx\fm”n8^ fˆEú 0x^`!N€Eø\p Zaº gd0h NCp0 0àÿfRVˆ&H/8\lHPa ¨P g>·Èl föTˆHPg fö&‘×SH?/*ÿüa %s: %.*s a;ÊOï CJf²Sx\flŒNu x\ffóHHç x\la;ú&@vrP‹B@#?QÉÿøHSP‹Hz¥a;„OïQËÿàLßNuhexdumpgrepcatmoreflagsinstall formatpsexitkillreadinstall tibunppgechosidegetcalccpmvcleansendcalccdrmdirmkdirrmcleararcunarcmeminstall product coderesethelplsrmarcAutoArcOffSwitchGetKeySwitchStatusError0<NA1ÀcjNu0`ÿ" VgrJ8\ôf2<pV‘Èa".NLß@8NuB@BBSAÐBQÉÿúáXNuHç"PÅ`Hç"BE,O6<ˆx8$H Vg 1Ã\ü1Ä\þ!Ê]àY?? OHxHPaý¸J@fýœ gFJgB— OHxHPaýœJ@fý€Y„.„HRaýŒJ@fýp J"aÿv1À\úHxHx\úaýnJ@fýR.NLßD8Nu08\øga`Bx\øNua6âa4¨/8]Hç>,OJ8\õfHzra-’>¼a4OïÿÄHWa3b>€ga¶aû’Pø\õa_œa4faû‚`Öaýì8\õ Vg ’gº Zg² hgª 6g faÿh`– g Éfþ0x\øNCCúDBAXˆgÁIN¹"¸ IJ@f¢B@ c¢ŽS@Oïÿì"OB @c Zb ÁQÈÿêBHQaþþa g0( @GgHx Orp6aþN` ‘Èrp aþ@aý 8V\õfÿ(aý 8\õfÿa>.€f¢Š0x\øNCCè08\öâHU@0ÙQÈÿüp08\öY€/?8\øa\a „1x\ø Bx\ø8cvg /B§aâÎP`Œ ¢fZ0x\øNC( f—ËBA(g\ˆ c¢ŽB§B§BgGïSAØQÉÿüx?<HSaŽ(O gVDOïÿò./hBop0( 0h NC@€f00ÿT@Aúêg´fø(`prAàXH@/@ aŠ`¦ gB§?<QJ#füR‹ OpÛQÈÿüDaýŽà\Aù!J¨/ / / >„ Or paüäOï aû¼ 8V\õfýÈaû® 8 \õfýº" ’Xp Oaü®aû’ 8V\õfýž0<’BA‘Èaüœ`ZBA(g c¢ŽOïÿì\ˆ$OBSAØQÉÿüaýBHRaÂ`* mfAøL2<paüV` ‡f ?8\öa2èT`¢a0”a*ôB8\õ.NLß|ø!ß]Nu o?( a2ÊT Üf Uˆ"o0) g  fÐNuNuNVÿ aø˜Hnÿ¦a0>€fHza*(B—?<ˆBg/.aa0`a~`a1aøVa*npN^Nu o0/ Hç0OïÿÄ&O6HPa RAM Free: %6.6ld Flash ROM Free: %7.7ld ONOFF%%=%u PID size name %d %ld %s Kill: %s Shell%s %s stdinArg: filename(s) Arg: SrcFile DestFile %s:failed Arg: number %04d%08lX %02X ????%f%ld%sall#!PedroMNot a script! Line %ld: %s %02lX-%lX-%lX-%lX%06lX: %02X %02X %02X %02X %02X %02X %02X %02X %02X Free %d handle(s) USE LEFT, RIGHT, UP, DOWN, ENTER and CANCELAPPLICATIONS & MODEAPPS/MODE menu not implemented. Wait for next release.Help KeysQ[?] W[!] E[é] R[@] T[#] Y[] U[ü] I[—] O[ô] P[_] A[à] S[ß] D[°] F[Ÿ] G[€] H[&] J[¾] K[|] L["] Z[CAPS] X[©] C[ç] V[] B['] N[~] M[;] ˆ[:] ' '[$]ln(exp(sin(cos(tan(sin´(cos´(tan´(¨(½(¼(Ž(^-1ans(1)0.8106/14/2005BUSYSTOPBATT 2ND SHIFT 3RD ALPHAALOCKSALCKAøcºprÿ ÁQÈÿüHxa4XAúùâr1Á[İAf>0@NC ¼ CúüoaüAúùÂr 1Á[ưAfCúüYadAúù¬J@gAøcºpB˜QÈÿüNuNù"EvHPaH f(aZ6g åHAøc¶!Œa¢a g 1C 1| XNu?NCTˆ6gSCHçÀa˜LßJ@g AèQËÿê‘È6Nu?NCRh0Wa 0_NCJ@fSh‘ÈNu2(SAÂüAðNu2NC4´PlPB1ÄüX‚/?a\NuQB´PlæpNuNCTˆ0rCúNù"KLï ™f ‘mnNupÿNupNup ÑÁQÈÿøAèÿòCéÿòNuHPN¹!·N40@NCTˆ2SA0ÁÂüÑÁ"_aÊ0B?aÿj0_`Ž /H@0|NC"HTH2SA°h g AèQÉÿôpNu ‰H@0<H@Nup“É \fCè fòRˆ f"HAø\DNuHQCø\Nr \gÀQÉÿôBAø\N"_NuHç`ÀHPad,?aèp0"_H@“È0 LßNup/ Üe âc óg øgpNu o"oHxHPHQa HOï Nu o"opÙWÈÿüNu o"opÙWÈÿüBNu0oNC"o g p0/H@“È0 Nu /J€gH@0@H@NC"H2)ÂüXA²@cÐÀNu‘ÈNu oCúùÍa vJ@WÀH€Nu?6/?<B§a,\Çh ax fô6Nu//a”.€ga”0h a'¦/ °fB— Nu"oJ!füR‰HQa4J@gZ"W0|aý\p"fJHxa ö>€g:0@NC ¼ 0|aýb g"opÙQÈÿü ü€0×0|aý˜`a pBW0TXNu o0h NC0(Nu"oJ!füR‰0|aüæp"g Iaÿ D@T@Nu4/f4"oJ!füR‰0| g aü² g\ h pÀoga p`Ha ’`BCú ŒpÀogCú X0|a P0|NCTˆ4SBmHç À0h N‘LßAèQÊÿì0|N‘pNu"oJ!füR‰0|aü> g"_ gpgÁQÈÿøBNuOïÿœ"OBØfüB§HiÿÿaOïlNuBg`?<//a \ fûTNu oaû ofAúõÙHQ"H0|aùÌ"_ g0h aù¾Nu"oJ!füR‰ oJ füRˆaÎ fûNu oJ füRˆ"H0|aùŠ`úìpÀo1À\b @f&"o gJ!füR‰ g0|aùZ g0h `0|NCTˆ2aú¨JAg!À\:NuB¸\:‘ÈNu‘È 8\:gð x\bfHaû&2( A€g:0h NCTˆ2aúj!À\:JAgNu x\bfº 8\:aùà@!À\:aúè g¢Nu@!À\:aúÖ gÎNu‘È 8\:g† x\bf^aú¼2( A€gP@mÿjaú¦0h NCTˆ2gSAÂüÑÁaùê!À\:JAgNu x\bfÿ: 8\:aù^!À\:aúj gÿ$Nu@mØ!À\:aúT gÌNu 8\:g"HA Agaù&`ú6Aúô)Nu?/Hzõ2Hx\Oai¸Oï B8\NAø\SNuNu08\dR@1À\d?aÒHPaúzJ@f¢žaâ W\Nu08\dg?a´BWHPaüSx\d\Nu?68\d–oaÚQËÿü6NuOïÿœ"OBØfüHiÿÿa,OïhNu"oJ!füR‰ oJ füRˆ` o/aø¤Aúó{` o/aø”HQ"H0|a÷b 0h f aùè0@J@f¡J6aüJ@f£Þ"W0Ca÷: f40Ca÷Z f¢ž"WpÙQÈÿü üBX0Ca÷’0C"Wa÷ aøl.€` aød.€2( Ag£Ô?( Bh aBT &Nu /aøÞ` Bg//aüÞ\ g0( @˜f?( a÷vJWgaTpNupNu o0( @g,0( @f"?( 1h Bhhûï h aÆTpNuBg//aün\r fpNur0( @gð1h Bh h hýÿ `÷Œ o /OïÿêgBWHo/aû°P IHPa¢.€g\0hNCp0T@/a RX4a÷ìJBf1h Bhhûï h B—`1B 0hNCp0R@"H0BNCÙQÈÿü OïNuJgôa÷.€`ì?<B§aü \0( @gaþæaüL fêNupNuBg//aû|\ g:0( @f0?( // aýÔXa÷N g1_ Bg//aûH\aõòpNuTpNu oaúDJ@g"a€ o"o @lCé“ÀBØfüpNupNuNVÿÜHx /. HnÿâaX|#ÿëHnÿëBg?<@Hnÿì/.N¹"ÆX.ˆaN^Nu0/ @@g0 @@g @@g¡//aýXNu//aýaöŽX1o Nu o /8]®/8]¶!È]¶ ÚbaD`p0/‘ÀRˆ!È]®aEd!ß]¶!ß]®?//aüÄaö@X1_ NuHç>$o,8/0BgB§a{æ\6g>|4† DfAúñ9a6B§Bgaúx\HPHx\DaõšX _J@f Dg4†aaú¬ fÜ0Lß|øNu?HP?<ÿÿ?a{´Oï RFJ@gNu>ƒa XBC`Ò o"o / g³ÈbÑÀÓÀ!S€fú oNu o"o / gìt"ÂBg" ÂBg(ÙS€g(`" ÂBf"è‰gSA Ù Ù Ù ÙQÉÿö@gÙS€fú oNu o4/ / g<"AgÂS€g.áI4HB4"è‰gSA    ÂQÉÿö@gS@ÂQÈÿü oNu o4/ / g S@´WÈÿüSˆg‘ÈNu o"o / gS€± VÈÿü !H€Nu oa o4/R€`¾ o JfüˆD€S€Nu o"o JfüSˆÙfü @Nu o"o Ùfü @Nu o"oB@BA` ²g ANufòH€Nu o"o`( @c Zb @c Zb ²gpNufÒH€Nu o"o"/ B@Smg°VÉÿøS‰ H€Nu o"o"/ Ùg Sfø oNuBSfú`ò o"o"/ JfüSˆSmÙWÉÿüB oNu"o$/g Bg²gføR‰`ê ¯Nu otg"og$²gföRˆ`ä BNu"/ A/ Jfü° g²ˆfø‘ÈNu"o$/g Bg²føR‰`î ¯Nu o"ot0(1(g R‚²gðJfê‘ÈNu0/Aù"’ @bJfüQÈÿúNu /g!À^J¸^g."x^g ogô°g `ö x^B¸^Nu x^B)ÿÿ!É^Nu‘ÈNuAù‚ö ü} BXpÿAøc¶!È]X À0<ÎB˜QÈÿüNu /a J@f¢žNu //aJ@fa6 aXNu^€rþÀAù‚ö±üdX"4f°cAðú`è’€ bÐ`Cðú"ÁBY!@ÿúHPa. _J@fB`` 1@ÿþåHCøc¶#ˆäH"(ÿúâ‰WBXSfúNupNuAøc¶0<ÏJ˜gQÈÿú`ê@ÏD@Nu o0 ` o0gÒBP`0/gÈåHAøc¶"p" gºB°³ü bN2!BQ$!åI°Af.Aù‚öt±Éb g$ÑÐ`òJ‚g BJhf Ñ"H Añ±üd Jhf Ñ‘Nu0o0gNC`€Nu0oNC0 @€±ü cpNu0o0gNC`ÿNu0o0g NCh€ÿþNu‘ÈNu /göT€aþ†‘È?gaÖ0×TNu0oNC±ü mp0T€Nu (ÿú]€NuAùNup0/åH x]X pNuAù‚öp±üd"o6JXfÐAðú`æNu oCøcºp4<ÎR@±ÙWÊÿúfNuB@Nua"<ÿð°cÃ@Nua*Aù‚öp±üd"oâJXf°b Aðú`â]€NuAù‚ö`ÑÁ±üdZ"o¶Jhfê"Cð³üd@0)f "o–Ó`âg I`Ä$ âˆ0ÙS€fú Bh"B\‚0)åHCøc¶#‚`²NuAøc¶p4<ÏJ˜fR€QÊÿøNu ¯ÿðcB@Nu$/0/f `ý /6^‚rþÄ0@NCB@±ü bª]ˆ Cð°‚ltJif$"Ò€’‚m lÔrCð( ‚Jgt"ÁBY`nB@Jhmj aüÂJ@g`0CNCCèÿú0@NCUˆ"Yâ‰0ÙSfú?0aýT0Aøc¶åHåK!°0B°`$Jif"Ò€’‚Cð("ÁBY ‚` ‚" €lè0/&Nu//a XJ@f¢žNuaþ† /^€rþÀAù‚ö“ɱüd"4f°b"HAðú`æ$ gü” I")ÿú’€ bÐ`AñBa#!@ÿúHPaür _J@fB``üb@€1@ÿþåHCøc¶#ˆäH"(ÿúâ‰WBXSfúNu0oNC0 @€gpNu/ aÿ^XJ@gð0@NC"â‰0ÙSfú?0/aü@Aøc¶02/åHåI!°B°0/NuCøc¶Aù‚ö±üd.4(g åJ$1 ]‚±ÂfP$ ‚cF ‚èb>f8ÑÂ`ʱüf,pÿ"²€f$4<Î"g ‚õc _ÿÿb AfQÊÿäNuAúä“Nù"Eva`€aB3ü €`B9pü\"Bx]AúÔ!Ð\>aæ1ü€]\Nù!¥ô8\"ï\"Nu8\"Nu!üL[À1ü] 1üï\1ü\ B8] Nu!ï[À1ï \ 0/1À\æHR@1À] €¸[À@À] Nu o!Ø[ÀØ\Ø\!Ø\"Rˆ1Ø]1Ø]1Ø]Ø\'Ø\)Ø\+Ø\-08\`² o ø[Àø\ø\!ø\"B0ø]0ø]0ø]ø\'ø\)ø\+ø\-Nu08]1ï]Nu oHRCø\&Eø\.B@ré2ÀQÉÿö$_NuAø\20ï0ï0ï0ï QˆNu oBB‘“YˆNuB¸\2B¸\6 oØ\3Ø\5Ø\7Ø\9Aø\2Nu o"oaLJ@g> o"o°d)ÿÿáH°d)ÿÿሰc)ÿÿሰc)ÿÿ o €pNu o"op²)b²)b²e ²)epNuïxzïïïHç oaÿ"o B@BABBBD˜AlDD6/aRAQÌÿúAø\.aþÒLßNuHçø@²x\(m²x\,nº´@nÁB88\&´Dmª°Dl088\*°Dnš´Do4"x[ÀÂø] ÓÁJ8] fˆx¹BÈBèJrÂèH”f Ð@ÒÀpÿØAéhâhSmg ±Q`XF@ÁQ`RQ`NÐ@ÒÀpÿâhSmg.±YpÿUmFYQÊÿüéh±Q`,F@ÁYpUm2ÀQÊÿüpÿéhF@ÁQ`YpÿUm2ÀQÊÿüéhQLßNu”@8æLÒÄF@Jg. gÑSBkÜQÈÿøR‰QBm,PÙ`øQSBkÈQÈÿøR‰QBmF`ø‘SBk´QÈÿøR‰QBmB`øpPB`´Hçü€°x\&m\°x\*nV´AnÁB88\(´DmH²Dl288\,²Dn:´Do4”A8a8:8] BÂSCmn …ÐÅQÌÿú`µÐÅQÌÿú` FÅÐÅQÌÿúLß?NuHç 6/ :/"<8] Y$OHR//$//$aý~J@g” x[ÀB@æHBB*BD*˜BÄÆÔ@ÐÂBA*æI’@mhJCl2DC˜CcT™*0ÀÆÐÀ0ÀÆCð0HçÀÙS@lúL߯’ÆSDfè`(˜Cc$Ù*0ÀÆCð0HçÀÙS@lúLßÐÆÒÆSDfè?HRHRaýpOêLßxNuHç>(o,&o08/4:/6Q$OHRHTHSaüºJ@g’%TJDl ™*™*`™*dB*™*dB*HjHjHSaü€J@gNÙ*Ù*HjHRHjaüfaJa >g.?HRHRaüÜ0GNC?<HzüÀHPa(D??N¹!ø6?aöP` ?HRHRaü®OêLß|øNuAêB@BABBBCNu1ï]1ï]Nu?8]?8]?8]?/ 1×]?/ 1×]aOï NuHç 0/2/4/ 6/" x[À4x] ´@lÅ@ÃC8 ÈÁ<æNØFÐÄ<FFF:š@8 >žAdDDDG4/$g|SBfî¾Ed:46–EÖCÞGšGDEj ÐÚGjSFl|RHQÊÿð`H ÐÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj ÐÞEjÐÄQËÿö` ÐSFl|RHÞBkêÐÄQËÿîLßøNu¾Ed:46–EÖCÞGšGDEj ÚGjSFl|RHQÊÿð`H ÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj ÞEjÐÄQËÿö` SFl|RHÞBkêÐÄQËÿîLßøNu¾Ed:46–EÖCÞGšGDEj PÚGjSFl|RHQÊÿð`H PÐÄÚCkêSFl|RHQÊÿî`264”GÔBÚEžEDGj PÞEjÐÄQËÿö` PSFl|RHÞBkêÐÄQËÿîLßøNuBx]lBx]Bx]Bx\$1ü€]\a ü]`ät x[À08\ R@Àø] `ð0/2/°x\&m°x\*l²x\(m²x\,la(48]`Nu0/2/a4/g SBgPNuÐNuNu x[À4Äø] r³@Â@æHÔ@ÐÂNu0/2/aÞVÀH€Nu0/2/4/ o Hç>8\"Sg.mv| xÿBIù"y`ÄÆØÂ`(Iù"s`ÄüØÂ|xÿæ¬áœ`v|xÀIù"k`çJØÂBGÐCÒF°Go²GoºC’F°Gn®²Gn¦YˆBG(²Gl’GÜA˜Á24ÔF(”GoœBRFzÿ4ÔC>PGGø4GBG°Gl > žzïmSEBG(´Go> ž(?zïmSEFEÊ_ÐC>èHÐ@Âø] ÐA"x[ÀÒÀtG”GÔClBTI>/6`<‚¬TÖäfŠ@®"s`"k`"y`Pedr0/2/ o4/ Hç>><ð BbžJ8] gZBÔB4; °Kû ¬zÿGù"y`xÿBB@g" gQGmÀü Ió| N•QBlàBTI`ØSˆLß|ørpNuGù"k`(<ÿÿÿB@gâ gÜ]GmØçHIó|N•]BlâBTI`ÚGù"s`B@g¶ g°ÀüIóžCm¢xÿæ¬áœ|N•”lØBTI`Ð$I BoUJpå¨F€Á’ÔÎQÎÿòNupåhF@ÁRÔÎQÎÿòNu$I BoUJp娒ÔÎQÎÿôNupåhRÔÎQÎÿôNu$I BoUJp娱’ÔÎQÎÿôNupåh±RÔÎQÎÿôNu"å¹$I BoUJpå¨Ã’’ÔÎQÎÿòNupåhÃRRÔÎQÎÿòNu"å¹F$I BoUJpå¨F€ƒ’Á’ÔÎQÎÿðNupåhF@ƒRÁRÔÎQÎÿðNu$I BoSŠQBpåhÀEF@Á*àHÁÔÎQÎÿêNu$I BoSŠQBpåhÀE*àHÔÎQÎÿìNu$I BoSŠQBpåhÀE±*àH±ÔÎQÎÿìNu"å¹$I BoSŠQBà™FE‚EFEpåhÀEàYÃàYÃàH"ÔÎQÎÿæNu"å¹F$I BoSŠQBà™ÂEpåhÀEF@àYƒàYƒÁàHÁ"ÔÎQÎÿäNup8\"ÐÐSlCù"s`BA/Âü1Nu o2/Cù"s`tpSmgt`ÐBJfúNuÄüÐ1 BBfòNuHç`À8\"aÊLßNu oHç",O$Haó@BgHzôêHzôæaôîAúôâaóðvp4<ïryaõ g"BWaó8>¼HR?<zBgaüT>„aòèPø]Aø\.aó´.NLßDNuB@J8]g6Oïÿì OaóZB8]‘Èa€Aø\Da.8\#?aÂBWaöT OaòüOïpNuJ8]gXNu oaðCø\Nrg `c zbàÀQÉÿè`ü QÉÿúü BBgaòN>€?<Hx\N?<zBgaû Oï aò2TNua˜Bgaò&>€0/ @l(AúÜGS@m AúÜ0gAúÜ/?<HP?<z?<Ûaû\Oï añîTNuaÿTBgañà>€0/g ?<Sf>¼HzÛô?<z?<Ûaû"Oï añ´TNuaÿBgañ¦>€0/ @ b(Ð@rÿRAâHfúÒA2;"?<H{?<z?<(aúÜOï añnTNuÛ™Û¥Û´Û­Û¼ÛÈÛÂNuAúÚ`þ oB@BABB”@RBB@AR@ o0À0ÂNu opBABB”@æJRBB@AR@ÀÂX@NuHç>Y$OÀÁÂÃ$O OaÊ/aëš8g0DNCHPHRN¹!õOê00@NCLß|øNu oañš o4/ Hç028:¸@lÁD˜@ºAlÃEšAvÆBaOg S@SATDTEaOLß8Aø\.`ñPHç0BE6/8/$oOïÿô&OAëø\'ø\)ø\+ø\-SEm€Aø\NüF0/ 0ÀB?/ Hx\N?/?/aù6Oï aïÈTONuHç> o8að?/€Cï.Eï2Gï6Múa að`TAø\.aðfLß|øNu4268]`ñŠ4+´jlÇJ4*´ilÅI4+´jlÇJ:šQHÅá…2+’igø‹ÁHÅá…<œRHÆá†2+’jgtÁHÆá†>žQHÇá‡4*”ig˜ÂHÇá‡SASB:A6)0H@B@"HçðH@HAN–LßЇ҅RCQÊÿêHçÐH@HAN–Lß 4 І҅RCHçðH@HAN–LßQÊÿêNu>žQHÇá‡4*”iÂHÇá‡6)0H@B@"HçðH@HAN–LßЇ҅RCQÊÿêNu6)4SB0H@B@2HABAHçðH@HAN–LßÐ…Ò†RCQÊÿêNu6)042°BoÅ@´AoÃB°BoÅ@NÖHç> o4aîü?/8aîä>€Múþ"o.Eé&o2aþŒ"o2Eé&o.X‹aþzaî¸TAø\.aî¾Lß|øNuN@Nur 8]ecrÁ\â Á\HçÀ8\8\À°gDR`HçÀ8\`HçÀ8\8\Àg&SÀ\F 8]efgù`âÀ`LßNu¹``èNDNu o"8[´!È[´HÐüøAè, ø[¼ ø]¶ × ÁB@Nu x[´!è8[´Nu0/fpaà"8[´f aNRNù"EJ ALØüøX!Ø[¼!Ø]¶"X!Ð[´NÑp4/SB BdÄüAø[ÈBp B° B° pNu0/S@Aø[ÈÀü 0Nu0/aêJ€WÀH€Nupÿ4/SB BdÄüAø[È 0 !°  Nu"o `“Ép4/SB Bd*ÄüAø[ÈJ0 f /!€ !€ !‰ p" gp€ NuB8]¬`Pø]¬Pù`B8]­NuB@8]­Nu1ï]Nu1ï]Nu08]&€8]­NuHçpÀB@NA&8^?<aÿRaÿ@J@f>aþaÉ0J@f6¶¸]f@J8]­f0Jx]&gÚp08](Bx]& @ g6!Ã^@÷ÿTLßNuNE`²aÊÄ`¬aÿl0< `Ü 8]&é˜?aùêT`8cvg x\h“Ép rÿN¹"I`ÿv/B@NA&8^aȪJ@fH¶¸]fRJ8]­fBJx]&gæp08](Bx]& @ g !Ã^@÷ÿ&Nu8cvgì x\h“Ép rÿN¹"I`°aÊ,`ªaþÔ0< `Ê 8]&é˜?NºùRT`ŽBx]Bx]&Bx]Nu1ï](Pø]&Nu0oNCp0AðNuB§HzÔ HzÓýaKNOï Nu oB˜0üBXNuAø^ `Aø^NVHn /.HPHy!©†a>FN^Nu0|CúÑ“a& g0h "Ja g0h NCp0 0-ÿg‘ÈNuNúÕ\RˆNu 0f( (xf Tˆprg0  c'éˆÐ`æNuprgö0$çˆÐ‚ЂÐ`êB@8] B8] J8_ gaNuaêPø] Nuaâ0/À] NuHçà€F8_ 08]28] @èb4 Axb. x[À^AÂü4æJÒBÐÁ@2<üài0àHt±³AèÿàQÊÿöLßNuJ8] fªNuHx¼aÅX @g Aù!KNù"Ev?<a˜T gæ!È]®!È]¶¼éÐü»!È]²Nu x]¶p0/ÑÀ±ø]²bBNu0<å` 0<Ù`0/ x]¶Rˆ±ø]²b$€!È]¶Nu x]¶Tˆ±ø]²boÿÿ¯!È]¶Nu¢žJ8]­g ´ o"o ˆ"x]¶$ Ô€´¸]²bÜR‰RˆS€ØQÈÿüS‰!É]¶NuB@/°/e/Nu"oaR¸]¶ x]¶¯ NuHQarHPaœPNu"oaî"oaèR¸]¶ x]¶¯ Nu o"o ˆ"8]¶‘¸]¶’‰/HiHha¼ÔP Nu oHPaHPaÊPNu oBg ågRWa `ô0Nu og Sˆ -bX?f!ø]®]¶¢ž0@NC 8]¶¸]®R€0À"x]®a»>a¿¦!ø]®]¶0Nu oa³ÈJ@f‘ÈNuBpR@ \fPÂJfð?Jf2/ AVÂg Aø\Da»ÖR@ÑWaüìTO x]¶"RˆBJgCø\DÙfü|\ÿÿ"oÙfüSˆ!È]¶ ANu oa2JgpÿNu o €ÿo0¼ÿpNu €ÿÿ€l0¼€pNu0€pNu g  fp g bሠSfø  fD€NuPÁNu oaÊJgpÿNu o €ÿÿo0¼ÿÿpNuJ€lBPpNu0€pNu oa˜Jg¦°¯l¦°¯ o¦Nu"o / o HP‘À??<@HQa¸ªpNuNVÿðHîÿôB§B§/.aIŒ8f¢žBWaûâ0DNC$H.Šaº”v6>ƒaû¬.ƒHR"x]¶Hia¹j>‚a½h׸]¶>¼-BgaûÀLîÿôN^NuHR$oBgaû’B@g>€aû†`ô>¼-Bgaû’X$_NuNuNu68kL#/Òêz~¾x†p¦,V˜¾ì@à0šÀâèð 8/ú¦,¤¦–€¢qqRrrPrVrrr¦Xs‚®s4È`¾È`¾`Ö´`»æ`½V`½’`¼`¼ü`½ `½`½(`À`Vä`€`" `Ên`ÀÌ`ÖX`È&`²`j`¹d^ ^^ \f\h[¸NÐpedrom!¤î!¤îNu1ü^ 1ü^1ü^ Nu/ /$H2VÀHƒ0@f:g?(N¹!c0T@?Bg?*N¹!d2Pg?*N¹!bBjTBR0&$_Nu/dev/nullwa+NVÿìHç<((I&JKé bg Jg )bf|`BFJSg KNºÿ`BkJFgp`p'@BkJ„fz`†Hzÿš/N¹!_ZPJ@f( ag rg wf``6<`26<`*Hnÿì/N¹"Æ*Bg/N¹!WÊ$HOï°üg&0( @‚gHzÿ/N¹!SºP°üf?+N¹!b—ËT`T1k v?+N¹!cTJFgBP` ¼!| à`v +g Jg ,+fCJFgC@6ƒ`—Ë KLî&I06C@@@2€z`/ H€?Nºþ„\J@m0 D°LeæR…( <¾Ec$D`êCÿ¿ÇS0LßøNuHç0$o2f„f A4`t0*l Bj@ÿ`hgN¹!zœ6?N¹!Æ0T`LGúýÆ JN“J@f:?*N¹!c *0BCR€%@T  f*f JN“J@f Rª`pÿ`0Lß NuHç8(8@>&I06C@@@2€z`/ Nºÿ>XJ@mÀ0 D°LeêR…( <¾Ec$D`êCÿ¿ÇS0LßøNuHç0&8&I$Hpÿ`0ü `< @fg¶ŠdSŠ` @ f+gØÀ gSDJDo / NºþÆXJ@nÄBJ@l ¶ŠVÀH€HÀÆ€ CLß Nu2fA0`JhlpÿNu2A€1ANu/ $H0g gN¹!{´BjB@$_NuPÿïNu0@Nu(gp`p!@PÿïBhNuNVHn/. /.HzüzN¹!ºfOïN^Nutemp%04x/ $H°üfB8^pEø^q08^z2RA1Á^z?HzÿÔ/ N¹!ÃVBgHj N¹!WÊOï°üfÐ J$_NuNVÿìHnÿì/N¹"Æ/N¹!ZäOï S@N^NuNVÿØHç &Hnÿì/ Eù"ÆN’(HnÿØ/N’//N¹!\FOïS@LîÿÌN^Nu]dð€ QTRXVY @"k`cr] ]X 0!¸!¸$!·N!·¤!·Ì!·ô!¶ä!¶¶!¶!º !µî!µ0L"s`"y` !µ$!¸¶!º !º&!º(B¸]ÔB¸]ØB¸a>Nu _a°Bx]Üa ~aÍ aËÀ08]Üga2aĺNuHç~IúT?a´DTOKèN”AîÿøLß~þNuHç~Iú4*N`èHç~Iú¨`ÒHç~Iúž`èJnü¢f=@ü¢Cîÿø JpØQÈÿüNuHçÿøMøa:<Bnü¢OïÿÄHWaÊ$J@f"aaJ(f aÊ0Oï@Lßÿ0.ü¢NuOï@a¢aH I`FHç Jhg$Shf h Eè:ga: gaÚEê SEfîLß NuHçÿøMøa:a¨"g–a¸?.a³(H&H<`J+gJkf ~ k aDGëQÎÿäz&L<`HJlf8 ,g @aZ>€ga² , €ÿÿ°¬g @a<>€ga±øIì` REp&ÜQÈÿüQÎÿ¶>®a²tT<…aLLßÿ0.ü¢NuHçÿøm€ÿüaö g Rh*h `” -- €68kg ÒEî.»î g MaÂaz$HB® Jg a g //<RVaØ#_"Ÿ#MB© B©3|B)JgB©#M »ü c&-fvÖmÿþ/a´>€a²"HÝSCfúX*Haœ#M ™Ì0-gEõ/a³æ?a±è(HBWHPa­NOï an#LGí:gH0Àü $K×À* aš f ÁMaþæÁM"HÒé24v6¶Ampaý‚ a|QÊÿìEê SEfÂ:g$yÈ:v6¶ªÿüm aVQÍÿð:g,-g Eúü:v6$åJf B¼c a&QÍÿæa 0-gGõa M~a$a´PéLßÿNup0gø°mÿþbf`î Hçÿü*HGí:g:0Àü $K×ÀaŽ h "HÒé24v6Öƒ618(؃a”QÊÿìEê SEfÐ:g$yÈ:v6å‹(28anQÍÿò:g:EúûL:v6$åJ(2 -fJBfX„g Ômx85(JCm$a0QÍÿÎ( a(0-gGõa„((aLß?ÿNuap0gÖÙu`öa p0g Ùµ`öJgD„NuMøa:JVgö|Møa:¼Vg.aš i 3|p0(g (ÿ g Pè ?N°<RF`Ê|aj*i 3|`üPAúòŒ»ü!¤îgaNp°Vg»èg»è g AèR@`è‘ÈNu?.ga®’TBnNu0gêÀü/?.a°˜\J@f¢ž=@?.a¯bT0ÀüCðNu?HRHzòaŸ– _J@gaÖ6gHPaŸ„ _J@g AèSCfì‘ÈX6NuHçÿ|*O~a g~ h ¶(cz`p0.ü¤a ga† fdOïÿöHWa¡Æ _ar fRAúòah fHað&H>€g6ažJfa­À`(a®¸TˆPî(g" g·ü ca­œAë`0aú~‘ÈB.-H CîpÚQÈÿü.MLß>ÿNuOïÿìHWHPab?<HPa£z>¨ HPHRažœPJ@faJga®>Tˆ` a£¬ fØ‘ÈOï"NuHç`À~?/a®B@J_g"r2 0óÿf"(à‰ 68kf~¶(SÀLßNuHç(OBg?`.Hç(O?<B§a¢ò?( ga­È ¨68cAgTa£. fâ0g„a­TKèvÿBD-Gí !fV‹HSHRaØPJ@gJfüRCQÌÿâa­T`¾0mê +!ÿýga@8—Ë`*x#áLˆ#Ø&DvÖS/a¯P>€ga­@"KÙSCfú8Ta¬Ê0 K.LLß8NuBACíAéJfüQÉÿú"AÐÁ?HQa J—PfB@NuHçÿþMøa:~Hx a¬¢.ˆgv&H&îüž&ï@-Küž$oD/Jaý¦&ˆgD*HaøÄJ@f:& M0/HaP g"/HDAú/HHXLßÿXNuQHçÿÿMøa:Y&nüž*Saù&nüž/c@-cüž.‹a«X~X/G@LßÿNu/"(à‰ 68kf"Ðè°XlHÀÐ@00Ð @"Nu‘È`øHçÿþMøa:~Hxa«Ü.ÈgJCï< îüž Ù-Hüž Y0a¨ gEúU‰"Š#LßÿTNu]HçÿÿMøa: nüž/`<-`üžHPaªÀ~X/G@LßÿNuHçpp&Gù ¶‹bƒÿÿ"zöª"QX‰4<Îp$Y" g¶Šm"*ÿúg®ê]µËmr2TÕÁ¶ŠmR@QÊÿØB@LßNuHçð`6?<B§a ~\¶h g a È fò‘ÈLßNuHçÿ~Møa:$Haü g*Ha÷6 MJ@g‘ÈLß~ÿNuHçÿþ*Ha÷žLßÿNuNL4@À@àHû `FÂNuHç>Møa:B§Bg?gÄaªZ>aª|Kèv6 0ó8f ¨68kPg ¨68cAg`Êx€`Š0aÿ0aþÖ?.ü¤=@ü¤aö–J@g=_ü¤`Ú/.üšOïÿØHUBg-OüšHx\h?8\fp0- gNFNµMøa:.nüš(aCp6*_g &O [NSCføOï(-_üš-fa´òaö°=_ü¤`AíJfüCîpØQÈÿüB.TpaüÜ>€gÿRa©ô-H 0aþþ(a¨æ`ȱü dJGfÿ,0aþ`$g2aþ/B>€ašH/@B—a¢0.€gÿ/@ašL>¨ è `*»ü m"Vƒ.ƒa§Ò>€gþÚ?@a©x0íÿþWCÝQËÿüa©p0HpÿHPa[F _XNFNNqNq(a¨â.¯ga™è g ¨ ( g.ˆa¡.` >¯ga¨POaÁ¸aÀn Lß|øNuNu"x]Ôp4 B l åJ#ˆ RQB@NuNusystem0123456789abcdef@0123456789ABCDEF0X0x0b0-+ Oïÿ¸Hç>&o|(o€/ot>Î`´ %fBB`//xH€? oDNRN\`”&H K  gB #g6 +g -g 0g0 ^gÖ zgÐ |f$`ÈB `ÂBÿïB`¸B`²B`¬B`¦Bo4 *f ?\4Aë`$0/4Áü ÐA@ÿÐ?@4H0@ÿÐ @ cÜ0/4l D@?@4 BBo2 .g&H`r&H *f ?\2Gè`L -f6Gè 1f?|2Gè`,?|ÿÿ2`$0/2Áü ÐA@ÿÐ?@2H0@ÿÐ @ cÜJo2mB`Bo2 lg Lf<F@` hg Hf <F€`<F€B¯L/|!º06Jgœmx Emp Go Rg Xgd Yg bgt cg< dg˜m4 em, goØ ig| ogH pgè rg¸ sg" ug@ xg yfæ`–S‹`Ž$\/ N¹!_X(g 0o2±Àl(60/4D?@4f2gz0`z J@o"ÜÀ`//xH€? oDN\0/4S@?@4lâÜÃv`//x28H? oDNRƒ\¸ƒnæg0/4oüÜÀ`//x?< oDN\0/4S@?@4lä`Ø/\L/|!º1: <!ºBf <!º0/@6?|2F`~/|!ºD: <!ºU`/|!º1: <!ºX` <!º[` <!º^f <!º0/@6g/\L`Np0/@L`Dg `0HÀ"lD/AL"<!º`J€m"<!ºbf"<!ºdf"<!º0/A6gÞFÿï`ÖFf?|2 "4/@B/AF?BJ <!ºbf <!ºdf <!º0/@6`Ž00/4S@?@4f2gx0`x J@o"ÜÀ`//xH? oDN\0/4S@?@4lâRN//xHƒ? oDN\gX0/4oPÜÀ`//x?< oDN\0/4S@?@4lä`,?F0(/L2/2?o4*KïB/o6, o:0@g?|(`?A( XgB bg0 dg" ig og$ pg$ ug xf¨`EïP`ŽCïP`VCïP`$CïP` pÀ„ðèŒJ„fò`>0ÀæŒJ„fîAïP: šHg:SA?A2`00ÀâŒJ„fîAïP: `.Hx /N¹"LP0ÀHx /N¹"LP(J„fØAïP: šH`â4U2 AÿAÀ A?ÿf$|fP|eQ|dR|nS|uTz`¨ Aàf |0Pz`– A f|¾P4 l|-Q`|+Qz`r0R@ @b  ff˜$-BDBE`Jf pÀ‚fB`0€PPRE~èŠRD DoÖ(-BB` JfpÀ„g0€PPRE~èŒRBpA°BnØJg¼.PPRE`0€PPREèŒRB Boæ6 lÌ`ÀJAmB`DAtCïPv HÁƒÃ H@0ÀJAfìAïP0 HJg¼-PR@¼•P2RA$-BD`Jf pÀ‚fB`0€PRAzèŠRD DoÖ(-tJfpÀ„g0€PRAzèŒSBfÞJg¼.PRA0€P:RE0 l¼¯PPREJ„f JEf|0Pz>/(žE0F@râ`Î@6ÖE//,N¹!_XÖ@8/*˜C0@f6g4|0`4| JDo"BC`//x4 H‚? oDNRC\¸Cfè6xÿ`BC$o,`//xH€? oDN\fì0/.–@ÖJSCf4g:|0`:| JDo ÖD•Ê`//x2 H? oDNRJ\¸JfèxÿJGoÖG•Ê`//x?<0 oDNRJ\¾Jfê>ÞE`//x7PTH‚? oDN\SE0R@J@nâg JDoÞDBC`//x?< oDNRC\¸CfêÜÇf÷J0Lß|øOïHNu0/"o QÀ"ˆNuNVÿü N!.NqNqNqHn/. /HzÿÔNºöð nÿüBOïN^NuHç8/?N¹!s <68]:8]T D f09"ºHÇÀRCÇÀ1Ã]p `Ê D fx ` D g2Ò@B@9!hnR@°Al†8\"HƒÖC\CÚC2ÒCB@9!ho°AlBg?Hy!hlHy!hlN¹!jTšCOï 08]\R@1À]\ @ o0?<N¹!t‚T&8\hN¹!zœ CN¹"HäJ@gêBgN¹!t‚Bx]\T D fB@`BC?<???N¹!o°0ÐFP1À]1Å]0LßxNuHçü4ÔDSBR@a¤ ÒEa¤S@RB’E4ÔERASBa¥4ÐDa¥.Lß?NuHçøÔ@ÇDa£ðRAQÌÿøLßNuHçÿþxaà8:va¤R@RAUDUEa>T@TAYDYEa4$g*4vxa¸T@TA8\"B8\"?<HP??aªòOï Ç\"LßÿNuHçü4ÔDa£€ÒEa£z’E4ÔEa¤œÐDa¤–Lß?NuHçÿþxaÿ`8:vaÆ$g,4vxaÿJT@TA8\"B8\"?<HP??aª‚Oï Ç\"LßÿNuHçÿþxaÿ8:vR@RAUDUEaÿv$g2T@TASD8\"B8\"4a­ŽâHâLÔD”@?<HP??aª*Oï Ç\"LßÿNuHç÷þÔ@æHæJ”@HçðRBRCÄÃP‚/a›FX8LßJDg,0DNC0À0Á0Â0Ã"x[ÀÂø] Ò@ÒÁ&IOïÿÄ$O?<c?<È?<?<("OHP?<xHQHRaÎ.JJ@g4HSHRa èa€>¼ a­ÊPa³ @ g @g`î8HRa*X` Ka«ÄBDOï<0Lß|øNu?/aHPHzƒ8cvf aÿ`Oï Nua«`ô0/ @ l"Aú„ÉS@gJfü`öHxa2HPHx]àaûL _PNuAúƒ= @(fAúƒA @ŒfAúƒA @´fAúƒN @¾fAú„4 @fAúƒp @JfAúƒ6 @šfAú„6 @lfAú„ @ŠfAúƒo @žfAúƒ @ fAú„ @ŽfAúƒ @¢fAúƒ @¬fAúƒ @ÀfAúƒ¸ @ÊfAúƒü @ÞfAúƒ @‹fAúƒ' @ŒfAúƒ, @fAúƒ- @ŽfAúƒ= @fAúƒ$ @fAúƒ6 @‘fAúƒ8 @çfAú‡ÑNu o(o Nu o1oNu o/ @À\"Nu o"o2¨ "o 2¨Nu oB@((R@Nu oBh Bh0gRh RhNu o1o1o 1o 1o Nu o0/Ñh0/ Ñh Nu o1o1o Nu oB@((R@Nu1Ù]1Ù]1Ù]1Ù]p(H@(Ѹ]Ѹ]NuBB(ÐB(ÒBNu o!È[¬è\"è]0(2( aÒ1À]1Á]HPAèaD _!è0[ÀB@(BA(Nuaœd x[¬(Nua¨ÐoÒo a£ aàga–ÐoÒo a£ŽNua†ÐoÒo CèBB°Bm²Bm°Bn²Bna£Â`œp`øaÿR?(HhHhaªa„ga¢Oï `þ†aÿ.?/ Hh"oaþèAø]"Hr0lB@ @ðm0<ðÀQÉÿìHx]a`aÿ:gaVOï Nuaþä?/Hh0/2/aþÀ??0/2/aþ°??0/2/aþ ??a«€aþêga«vOïNuaþ”Oïÿð?/ Hh"o"02aþl?@?A02aþ\?@?A"o02aþH?@?A02aþ8?@ ?A HoHo a¬ aþvga¬–OïNuaþ ?8]Hh?/?/2/0/ aýô??aEÐaþ>gaEÆOïNuaýè?/ Hh"oaý¢Hx]a©¢aþga©˜Oï Nuaý¼"o02aý 1À]1Á]02aý1À]1Á]?8]HhHx]aCúaýÊgaCðOï Nuaýt1ø]]1ø]]0/2/ 1@1A aýD1À]1Á]?8]HhHx]aC®aý~gaC¤Oï Nuaý(1ø]]1ø]]0/2/ Ðx]Òx]1À]1Á]?8]HhHx]aCfaý6gaC\Oï Nuaüà?8]?/HhHy!hla aý gaOï Nuaü¶?8]?/HhHy!hla¤aüâgašOï NuaüŒYHW//HhaùP ga§âP`™aühY//Ho//HhaøÖP ga'FP`˜îaü>?/Hh//?/?/a*Haühga*>OïNupNu oP€€a˜² oBgHzšTHhaš\Oï oHç<"h0B@(BB(Äø] :x] æHÔ@$x[ÀÔÂÒÂBAB@BB(’((æH(æJB4&I(J‡QÊÿúÒÍÔÍQÉÿìLß<NuNu oPÿNu oa˜$HçB@BABDBE((((˜@šAvaöpLß8 oPÿNua—ì o"x]P$<]P±ÉgCé$$ "Q fð`H"B"¨$/(0a’üX o0@g?8("a÷<8` x]P g0@€gHPaþÐ _ h$`æNuAú™*a˜@ o"o0¯ P€ Pÿ||1x]ÆaùüBA0@gr1AHç>*I$H0246Bj"8Dg”@–AaöV6!4!5D"fRÿï@ABC%j8Df(z8DgzÛ*Û*›*›*8DgP*%jHxa’ÊX%H0f0*"ga’p`L!È[ÀaÖ0246”@–A‘È8:Ef:Eg o6CúôŽDfCúõN‘%x]P$!Ê]Pa–ZpLß|øNuaù¢0/ BA(ÐA(A4/ Bb$ÔB4; "Aû "Ht-/v aô4aù°g Iaô(&Nu'1<CNoneEnter=OKEnter=SAVEEnter=YESEsc=CANCELESC=NOEnter=GOTOaù /0/ 2/Ð(Ò( o4/6/aôxaù,gaôn&NuaøØ/0/ 2/Ð(Ò( ota(øaøþga(î&Nuaøª"o`aø 1o 1o "o gHQ?HPa: _TO"_`ìNuaøv1o 1o 4/ 0/?6?HPSCma QËÿü\6NuaøFÐh ÒhHç 68$HBE/?a¡T>4B@g  E gD E g> Ef(?*HjHja–`aø:ga–VOï Ja÷<`ž2ÒGB@*R@°AlHBC*ÖC\CØC2ÒCB@*°Al(?*?HjHja—äa÷æga—ÚOï !ê0[À˜CBC* E g( E g"?8]Hj???a›Øa÷¬ga›ÎOï ÖGB@*–@5C *˜@5DL߸Nu o"x]P gü\±Ég"i$`ða“ÎHçÿþ8("gaój`BgHhHha•lOï Lßÿ"o0)Q(’(²f¤0)i(’(²fŽ!h!è0[À0)BA(Ag$Ñ(Ñ(Ñ(Ñ(Bg?Hz”üHha–ÔOï o"o0BA(Ag&Ñ(Ñ(Ñ(Ñ(D@Bg?Hz”ÂHha—^Oï o!h!h`’îHPaúúX`ûbHç>B@BABBBC o0”@–AAù!PßaðÖLß|øNuBD+˜+BC+–+0Àü*Aò0°El:PÂ2(²Fl<PÂÐhC°Eo:PÂÒh’D²Fo<PÂJfNu?HSaú`aöTIêBC+–+BD+˜+>*SG0E2,’F°Cn<²Dn84,Ô@m04,ÔAm(l l ?,?,/,??HS lNOïIì*QÏÿ°aù$X>Nu o0/2/ Hç>,O$HOïÿ¨&O>*g>SGJj f4vAê48Øh¶Db6Aè*QÊÿîJªgPCTC Cîc6<î5C Jj f8vAê48(Øh¶Db6Aè*QÊÿìJªgC TC C~c6<~5C @ÿÿf 0<ðj â@ Aÿÿf 2<€’j âA6/*gCC0?J@lB@7@<Ðj @ïc @ï‘k<0<ï7@@JAlBA7A>Òj Ac A“k>2<7ABAëDN¹!gFHk*BEBFPÂ`BBH‡0*JGl>SG¾@mBGaýÌ0Àü*IòHT2,’F?0E?HS lNOï J€g&(HCJ@n¼`a¤ &HT2,’F?0E?HS lNOï HT? l"N\(l†R@gÿvR@gÿhR@gR@gR@g$R@gR@g$`ÿX,`ÿP,`ÿH,`ÿ@,`ÿ80*AêBAS@¶hg"RAAè*QÈÿòHT? j gN(l\`ÿ>`þþx8, HSa÷œXAëDN¹!g .NLß|øNuQ O0À0ÁÐlS@0ÀÒlSA0Á?<HhÿøHSaórOïpNuQ OS@SA0À0ÁÐlT@0ÀÒlTA0Á?<‚HhÿøHSaô†OïpNuHçÀAëaÎLßÐ+Ò+/Òl4Ôlv!ë0[ÀaàaòzgaÖ04’l!ë0[Àa‘ðaò^ga‘æ&pNu0H@ CRfpýNu CXfpüNu C fDJ,g\Jl&g22,’FÒ+?0ÐlEÐ+?0l&NCHPaüP @ÿfpùNu0, Nu CTf J,gJl&f¶ Cf0<ÿNupùNuaÿ2/ Ò+ÒlTA?0/ Ð+?0l&NCHPJl&gaü,PNu0H@B@Nu0H@ CQfpûNu CTfpúNu C f0, Nu Cf0<ÿNupùNu0H@ CRfpýNu CXfpüNu C fDJ,gZJl&g22,’FÒ+?0ÐlEÐ+?0l&NCHPaûœP @ÿfpùNu0, Nu Cf0<ÿNu CQfB@Nu CTgöpùNuHxaËîXJ@g0@NC0¼!o1o Bh Nu0/gÊ2/nÄ0@NC4(RBÄü*B/?a˘\J@g 0@NC4(0RhÀü*CðBQ2çI3A3|2Aa3A2/ f2RA3A | | #o2SAATAAPé#|!×N#|!×N#|!Ñr#|!Ø "B©&r iHQa˜Ì"_T@3@0/NuaV gø0)&fÿ2HxaÊæXJ@gâ?0/2/a003@&0@NC0¼Bh Bh `þþ2/0/a ‘È g iNu0@NC4(g*CèSB²i g 0)&g?HQaÞ _4 f "HCé*QÊÿÞ“ÉNu0oNCBh0/Nu?/?/0oNCHPaù¼P @ÿfpNuHxaÊ4XJ@g0@NC0¼ 1| 1|ï !|!ØÂNu0/gÊ2/nÈ0@NC4(RBÄü*B/?aÉÚ\J@g 0@NC4(0RhÀü*Cð3|3|2A 3A2/ f2RA3A | | #o2SAATAA#|!ØŽ#|!×®#|!Ñr#|!ØÊ"B©&pJBg 0)ÿÖÐiÿÚP@2€ oa‚ôÀü3@`øaþ” gò0)&f8HxaÉ"XJ@gÜ?0/2/aþj03@&0@NC0¼1|F 1|b 0@NC4(RBÄü*B/?aÈÌ\J@g’0@NC4(0RhÀü*CðBQ2çI3A3|`3|2Aa3A2/ f2RA3A | | #o2SAATAAPé#|!×N#|!×N#|!Ñr#|!Øþ"B©&0/Nu0/gÌ2/n¼0@NC4(RBÄü*B/?aÈ\J@g¢0@NC4(0RhÀü*CðB@JBg0)ÿÖÐiÿÚP@2€3|3|3|2A 3A2/ f2RA3A | | #o2SAATAA#|!ØŽ#|!×®#|!Ñ:#|!ØÊ"B©&`B@`0/Nu0/NC` oHç>$HBEBFBGPÂOïÿ¼&O?< Hz$HSañJ@gaõÌaðŽOïN JaÙLß|øNuï?/a^0oB§NCHPaövOï @ÿfpNuaˆ?|`/KAï.ˆ?+a¸T$x]P`HkHjaˆjPJ@gÒ$j$µËfâp`pOïLß NuOïÿì>¯a?|#/HHo?<ÿÿabOïNup0/Ð@0; Aù!JÒÑÀNu¬°µº¿ÄÊÐÖÙÜßâæOïÿìBWaþä?|/HoHo?<ÿþaOïNuHç 6/$o88]Æ Cÿÿf6 Cÿþf68]È5D5oBj1Ã]ÆHR 8[°g @N x] g R`f JCmåK {0N1Ä]ÆXLßNu!ãX>¯ aþR2/ 0/"o2€Oïÿì>¼?@?ABo/H?Ho?aÿ^1×]È?|aÿP?|aÿFOïNuHç6/8/U¶x]Èf2JDg&>¼aX>¼aR>¼aL>„aþæ>¼a@>¼a:`0>¼a2`(>¼a*>¼a$>¼a1Ã]È>„aþ´>¼a>¼aTLßNuOïÿì?oHo?<ÿþaþ´OïNuOïÿìBx]Ì`>¼a˜J@g a—j>¼a˜a˜|a˜t>¸]Ìg Bx]Ìaå¾`Ðp&?@ J¸]Îg"x]Î!É]Î CgðJCf"B¸]Îa˜bJ@ga˜d6@ø@vÞ?@ JCg,>¼a’0?|?CHo?8]Èaþ\>¼a—Ž`ÿbJ8] g$>¼a—nJ@g?|@Ho?8]Èaýà\`ÿ8N¹!\J8]Êfaü¾J@g >¼a—D`ÿ>¼aþêBWa‘´a•þ`ÿHç0$ov?/a‘š`>¼a—J@g a–V>¼a–þa—ŒJ@ga—Ž6>¼a–è4¼5C `J8] g>¼a–ÂJ@g4¼@`a•’`ªJCg>¼a‘60TLß Nu o0 @gû² @g @gf @#g( @$g* @Pg0 @QgLNuBgHz„ÜHz„äa„äOï Nu!è]ÎNu?(aÁÒTNuOïÿì?|?|Ho?<ÿÿaü¬OïNuNu0* @ m$ @n? x]¾aÓ^?aúhJ@g>€aý²XNu @ g\ @ g•< @ kg— @ gû& @-g6 @ fB§Hy!O¬Hy!O˜aâôOï Nu @f B§aüæXNu @+fBB§Hzüað~P @ÿg.AúþÀü*ÑÀB@(Oïÿì?|?@Ho?<ÿÿaûÞOïNu @ cf?<!`" @ xf?< ` @ vf?<"` @f ?<PaüÞTNu @f?<Q`ì @f r?aûTNur @gîr @gær @gÞr @gÖr @gÎr @gÆr @g¾r @*g¶r @7g®r @8g¦r @­gžr @4g–r @9gŽNuJüpNuB§Hy!O¬Hy!O˜aáÀOï Nu0/ @ÿýg8Oïÿì>¼BgHoÿþ?aúÞ?|aúÔ?|aúÊ1üÿý]Æ1üÿý]ÈOïNuQ O0ü0Á0ü\A0Á?<HhÿøHSaåOïpNu0H@ CRfpýNu CXfpüNu C f0, Nu Cf0<ÿNupùNu0H@ CRfpýNu CXfpüNu C f0, Nu Cf0<ÿNu l"HfüS‰ CfBpþNu Cf ³Èg$B!pþNu C m Cÿb2,&ÐÁ³ÈgÃBpþNupùNu0H@ CRfpýNu CXfpüNu C f0, Nu CTf02,’FÒ+?0EÐ+?0l&NCHPaîP @ÿgapþNu Cf0<ÿNupùNu x]þ2,(ÒA1€0l&NCCè2(°i gCé*SAfò’hDA1AÂü*)p NuHç>0o,NC$H ’DiAlfˆ./2&o6!Ë]þ6*gtSCIê ," €!æ f߬` €!æšf2,(ÒA03aÿlIì*QËÿÒ0/.2/0??Hj aí4P6*SCmAê"(" !æ fŸ¨Aè*QËÿêH@`B@Lß|øNuHxa½†X?g$a½„ üDiAl ï B˜0¼1o 1o B¨0NuHç>ü\"SGRCÆü*C/?a¼†\<g€0@NCRhCð8Ö2¯43o6Qi3|(3| Bi3D | | G|ÿB)B)#|!åÄ#|!åÄ#|!Ñr#|!åì"2m Âü*EðDNuXLß|øB@NuHç8Oïÿ´6/d$of&oj>ƒa¼(HAï.ˆa¼8f.Œa(4€xaÐ` 4„ 8]ºL6€x>ƒa»Ì0OïLLßNuHç>$o,/8]¶a _Jg!È]¶£ŽpLß|øNuBgvabJfbašJfØRŠ  gâ ,gÚ (g$ {g6 "gì [gn gH *gH +gH -gH /gH ^gH gH œgH gH žgHSŠ`Š4<€`@4<`:4<‹`44<`.4<‘`(4<“`"4<…`4<‡`4<‰`4<†` 4<Š`4<ˆJn$faµ¶HPa´Þaµ\P0<Õa´ž _B ]gþ$H`ÿ0Brÿ&JRAašfö Ab$SŠ (g"B@a´fSAa´^QÉÿøB@a´T`ýÜ$K`þðRŠa´4HS?aýÄ2&_ )fàB@a´*SAa´"QÉÿøB@a´0<Úa´B`ý–RŠB¸[B¸[B¸[ ­f1üÿÿ[Gø[~|ÿ0e6  b0RFgéJ‚`…QÏÿà .gH0eH bBRFfè`r þf40e,  b&géJ‚`…QÏÿâ0e  bfð`8 ef2 ­VÄfz~0e  bH‚Êü ÚBQÏÿèJfDEÜEF@1Æ[a lAø[Cø[a PCø[aµ BSŠ`üœJVÀg /c 9b pNu .WÀNu ­gî •WÀNu \g /c 9b pNuJVÀgø @c> Zb pNu _gö `c$ zcê c ›cÞ ±c ¶cÒ »bÌpNu?/a·˜aÞHPaa·\Nu oHç>*HHxa·f>€ga·z(H8<zaBa·b0XLß|øNuSJgx #g¨ ‹gÚ gØ gÖ ‘gÔ “gÒ Úgþ Ùg@ -gH ågX ÕgÐ *g¡š¢ž[DmúüuünüdüeüfNuJ%füAíSDgØØføSŒRDNufäUDcÄü"aÚü"NuSDg´ü0NuDc¨Aír(ÿÿáH?UˆQÉÿòB/ Hy!NÝHTaÔDOïØÀ@˜@Nu<+`<-`<*` </`</HUa²&*HaþêSDgÿHÃ*WaþÜ*_Nu<[aÜSDgÿ0ü]NuaÿBSSDgÿü( åf SDgÿü)Nu ågHUaþ˜a±ÊX*HSDgþîü,`à|)ÿÿNuSDgþÚü{ åf SDgþÊü}Nu ågHUaþTa±†X*HSDgþªü,`à|}ÿÿNu oHç>a> #g£ Lß|øNu oHç>a&Lß|øNu0/Hç>?aµTa‹ša aµNTLß|øNu*HMúPa #g"N`°œAø[Cø[a 2Cø[`²SJgÌ #g¢ ‹g* g( g& ‘g0 “g@ Úg* ÙgT -gN ågN €g …gú †gä ‡gŒ ˆg¸ ‰g¾ ŠgŠ Õg¡šMú•NuMíNuMúˆAúÈCø[` fMúxAíÿøCø[pØQÈÿüBAø[Cø[` DJ-ÿÿf&Aú Œg Aú –fMú:LÐHø[NuHma´B f£À?( a´ J@g ¾a³úaŠ@ Üg óf¢l*HaþÊa³âT*_Nua<` a6` a0Lø?[Hø?[` ÒaLø?[Hø8[Hø[$` LaNù"^jHUaþ|*_ #g (Lø[HçàHUa¯^*Haþ\*_ #fàLßHø[ NuHUaþB*_ #gÈ -fÀHVHUa¯(*Haþ&*_ -fª _"NNuSˆS‰ g°!gø`J!g"`aº -gäa lJgAú``aè x [fðAú\Cø["Ø"Ø"ØMúþNuaÿLa a .JnÒ`Àaÿ0a JoÄ`²aÿ"a Jm¶`¤HUa²Ú fHJ%füREù"x6< pHU0HrN¹!_ZPJ@gXŠQËÿè£ÀUHRaýX$_0*N²*_MútNuJ%füS?( a²Paˆ– óg¡š(x]¶a­ ågV -g$HUaýAø[Cø[a.Cø[a®þa­öX*H`ÐSpR@J%fú?a¬¸0S@"x]¶R‰ MØQÈÿüS‰!É]¶S`¤a±à0a² x]¶ #fAèÿ÷Cø[a¾B8[ MúÌ!Ì]¶*_NuJg ŒHUa­ˆ*Haü^*W/8]¶Bg?<@HUN¹!]Oï *_NuJg ŒHUa±¦ f£À>¨ a±ha‡® Ùg (J%füHhÿÿSaü6 #g£ a< _6 åg SCga­`ð*Haüa±(XNu oa­ ¯HP oa¬ð"_"’¯²€fN¹!^üJ@WÀH€Nu#*Hç0$o &o`HSN’J@ga¬¶X&H åfêpLß NuHç0$o &o`HSN’J@fa¬ŠX&H åfêpLß NuHR$o åg J$Ha¬h åfô J$_NuHç8$o$(o(/ / N¹!u^BCBB*BE*šBREBA*’CRA0@SAP6|ÿJ@gx˜@08 àdál6D8PDæDEì08] ÅÀ2æAÔA x[ÀCð 2A8@˜Ägl~žABF`DB@ãh€v`@ÿî`„‚$HB@ãh€RC J¸Cnà@ÿî`„0 À€$Hp0 ÓÀRFºFf¸`"Ù0J¸@nö0 Á(ÿÿp0 ÓÀRA$HºAg J`àLßøNuHç04/ 6o$$o&žFJBfBA`lzšBBD`FB@ä`€À Iv`@ÿëh‚$IB@ä`‚ÁRC"J¼CnÞ@ÿëh‚p0CðRD¸Kf¶` €À0I¼@nòp0CðRA²Kg I`æLß øNuHç04/ 6o$$o&žFJBfBA`lzšBBD`FB@ä`ÀÀ Iv`@ÿëhÂ$IB@ä`ÂÁRC"J¼CnÞ@ÿëhÂp0CðRD¸Kf¶` ÀÀ0I¼@nòp0CðRA²Kg I`æLß øNuHç04/ 6o$$o&žFJBfBA`pzšBBD`HB@ä`³À Iv`@ÿëh±$IB@ä`±ÁRC"J¼CnÞ@ÿëh±p0CðRD¸Kf´`"µÀ0I¼@nðp0CðRA²Kg I`æLß øNuNVÿäHç<>.8n n :6(Kè0lB@@ÿø0 lB@@ÿù6LÖÅ0 S@ @€o0<€@ÿû4GÔÃ0 S@ @ðo0<ð@ÿúHnÿüHy!hl/.N¹!gòOï J@g†BF.ÿüB@.ÿþ0@BB.ÿýBD.ÿÿ¾Hnf¸Lm`¼JnZ´KnT´Lo2’L0^@æ@ÁÁKõšA8B0 ÐE¸@l:šLRE¼Gn2²Jl’B.ÿýS@ÿÿ¼GnB`@ÿü2²Jm`0@ÿþ^C0æ@ÁÅT@0@ T€rþÀŸÀ&OEîÿæ/ N¹!gB0S@?QC?/ N¹!fà/ HnÿüNºû/ N¹!g KëB@.ÿüBC.ÿþ–@RCÞ@Oï nbˆp0.Ѐ0;NûL$v8L`?</.HnÿøN¹!h|Oï ^CæC?/ ?? ?Nºý†`:Bg/.HnÿøN¹!h|Oï ^CæC?/ ?? ?Nºûî`^CæC?/ ?? ?Nºü’Oï Lî<øÿÀN^Nu0/2/ o4/ Bft Bb?<HP?<??ÔB4; N» Oï NuüFûŽüþ2$&HÁAÿHÑ`LÐÒAâ‰2Á"Â"ÃNuCø[AéJgü ‘ÉYˆ0Ð@ðfR@LÑa&tQ@g6åHà«`0 @m 6BBHBHCY@g @m àŠà›U@gpÀð†èŠè›Nu08[@@D@Lø[aHø[`þÆ08[ °x[g bpÿNupNuAø[ J@gpÿ`p28[²hgbD@Nu"8[²¨gbò`î"8[²¨gbä`àB@NuHÀAø[BAJ€g4lD€rÿ0Á0¼@t€ü 2gH@„èšB@H@RP`êH@„èšTˆ ÂB˜`þ4 ü B˜B˜Nu08[@@D@Lø[aþÖxz 阀Èü Ø€paþZQÍÿèJx[gD„ NuFx[ Aø[ aÿ:J@nLø~[Høp[Hø[ 08[x[gLø[ aþvHø[ 08[°x[ f8[&G@Eø[0Gø[0pÀ"gÀü AóLÐÒGHø[ aþæRGB@èHgÀü AóLÐÒGHø[ aþÄRG‡l¶08[°x[$VÀH€1À[`üŠEø[0Lú¸Løp[HÒ~Høp[aÀLø[Hêa°Lø[Hê0a Lø[Hê`Lø[Hø[ aþHLø[HêTLêpLø[Hø~[aþ*Lø[Hê$aRLø[HêHLêp0Lø[Hø~[aýúLø[HêJx[gLúö´Hø[ aòvAø[Cîÿöað>Lß|øNuAïHç>Cø[aðañTAø[CîÿöaðLß|øNuHçCø[aï–aø¦Aø[Cîÿöaï˜Lß|øNuAïHç>Cø[aïpaøNAø[CîÿöaïrLß|øNuAïHç>Cø[$aïJa÷ÖAø[CîÿöaïLLß|øNuAïHç>Cø[aï$aùàAø[Cîÿöaï&Lß|øNuAïHç>Cø[aîþaû€Aø[CîÿöaïLß|øNuAïHç>Cø[aîØaûJAø[CîÿöaîÚLß|øNuAïHç>Cø[aî²aK¶Aø[Cîÿöaî´Lß|øNuAïHç>Cø[aîŒaRRAø[CîÿöaîŽLß|øNuAïHç>Cø[aîfaR>Aø[CîÿöaîhLß|øNuAïHç>Cø[aî@Aø[CîÿöaîFLß|øNuAïHç>Cø[aîAúôtCîÿöaî$Lß|øNuAïHç>Cø[aíüLø[Hø[$añLúôXHø[ aû"LúôxHø[ aQ´Aï,Cø[ aíÀaïúaöÌLø[Lúpô6Hø~[að¼Aø[Cîÿöaí¨Lß|øNuAïHç>Cø[aí€Lø[Hø[$aðŠLúóÐHø[ aú¦LúóüHø[ aQ8Aï,Cø[ aíDaï~aöPLø[LúpóºHø~[að@Aø[Cîÿöaí,Lß|øNuHç>Aï,Cø[aíLúódHø[ aï2Lø[Hø[$Aï,Cø[ aìÜLúóAï,Cø[aì€aõ Lø[Aï,HçpCø[aìfFx[aôîLßHø[ aîŽLø[LúpòæHø~[aïTAø[Cîÿöaì@Lß|øNuHç>Aï,Cø[aìaô¤Lø[Aï,HçpCø[aëþaôŠLßHø[ aî&Lø[Lúpò‚Hø~[aîðAø[CîÿöaëÜLß|øNuHç>Aï,Cø[aë´aô@Lø[Aï,HçpCø[aëšaô&L×Løp[HçHø[ aí¸Lø[Hø[$Lß~Hø~[aí¢Lø[Hø[aðAø[CîÿöaëZLß|øNuHç>Aï,Cø[aë208[@?ÿ"o02€1ü?ÿ[Aø[Cîÿöaë$Lß|øNu4óš4óè3÷ˆ3÷t3H3NÀ4NÎ[õ®\x\ž_¨a¾cÔexplnsincostanasinacosatansinhcoshtanhasinhacoshatanhsqrtdimgetkeytestftestdtime -g Ùf*pAîÿÿNº‘2`AîÿÿJ füRˆa•ˆ`ëüpN¹!zœ`ëð ( -føBgHnÿÿa•^\ VÀ`ëÔ -fÞHnÿÿN¹!XX VÀ`ëºp08aN`ë°Hç0 o "o$>8(<(:(B@0@BA)4AB@)6@BA)2A6–GjDC0<>0:8¾Kn ¼Hm¸InºJmú4”DJCf¸Eo0:8¸Jl8 ºIoÆ`†JBf¾Hl>¼Ko²`¬JBm€¾Hl4¸Jl0 DÁÃHÀÂÐG°Hm °Kn >`*0GÁÂHÀÃØ@¸InŠ>`¸Jl0 DÁÃHÀÂÞ@¾Knp8 ¼KoºIoD0IÁÃHÀÂ2’@²Kn2<: `8ºIo4šIÇÅHǜC`ìDB¾Hl0GÁÂHÀÃØ@¸Jm(>¼Ko œKÅÆH…ÚB< ?/(????N¹!l"Oï Lß øNuOïÿðHç>:o@8oB?/HN¹!gv?@6//FN¹!g‚\0 n:|4 n8|0 °Ml84 íJ4B0|ÿÿ?|ÿÿ,?|ÿÿ*rÿBo(o (6/(ìCoÿà(Eê 8 ìDEêÿà> ÏÃ4 HÇÂ< ÍÄHÆÂ²Cf¼HgV¶o*lP:/>ÚFC?N“XJFg :/>šF??N“XJCg?4/>”C?N“X¸o*f¾o,gT¸CoP:/>ÚGD?N“XJGg :/>šG??N“XJDg?4/>”D?N“X0 4 HÀÂÑo(0/(HÀ”À¶DlL0F?G,?D*2`þè0 íH4@?|ÿÿ.rÿ?|ÿÿ0?|ÿÿ2Bo6o 6 ìGEêÿà8 ÉÆ4 HĉÂ6 ÇÇHDzDf¾o0gT¾FoP:/>ÚGD?N“XJGg :/>šG??N“XJDg?4/>”D?N“X¶o.f¼o2gV¼o0lP:/>ÚFC?N“XJFg :/>šF??N“XJCg?4/>”C?N“X0 4 HÀÂÑo60/6HÀ”À¼Gl?C.2?G0?F2`þæ?/4N¹!gvHx\.N¹!g‚\Lß|øOïNu<0/NANuNB2/HÁAïü±Ál¢žNu oHÐüü!W0pNu o0/fpLØüü.Nu o"oHRr!p!áH‚@g$t!p!áH„@ ЂEðàˆàˆàˆ`Î$_NuNù!mØ o//Hha@šP opJ0fS@nö€Nu oJhg2UA00Nu o"opJhg 2(2°pNu$/ oB@2(²hlTh21‚TA²hmBA0pNu"o opJhg2(2°UhTA²hmBA1ApNu/ptBC  gø -g ­fvÿ` +f0e  b"ç‰Ò€ÐЂ`æJCgD€&NuAø] Nu"o o0/ gS@ÙQÈÿüNu o0/S@BAÁQÈÿüNua   - 6 Q W H R T Y?/a\Nua 52+3?/a\Nu2/ op4g´AføpNu oaŽð o"oCéAð QÈÿüB! oAèNu o"oJ!füR‰ÙfüpNu pNu$,O<?a‹, g`p00ÿ àfRVˆ$HCù!NëpN¹!^üJ@f†aŠŠ.NLß|øNuáH*H@*áH*Nua`*RŠR“g föR“  gú"g gà #gÚNu£ç fèSB`äVŠHRa:$_ x [ga¤ g–a`öaa´aÿn €elsegÜ €elifgÄNu£çaÿV €elsegÿb €elifgÿX €exitgÞ €whilg<àˆ €if gŽOïÿÎ(OB J"Lg gÀ`òBHçÿþN¹!0ˆLßÿOï2`ÿ *efÆ * f¾\ŠHU*J$Ma‚$Maþô x [g gØaÿ\`ôaþò*_Nu                                                                                                                                       as("*","*_p")*_pas_error/ HzÿàHx^˜Eù!_HN’HzÿÞHx^´N’HzÿØHx^äN’Hzÿ×Hx_*N’Oï.¼""{Hx_ N’1üP^Þ1ü0^àBx^âBx_ü_ü_Bx_P$_Nu//826 4ëJ0BÒAÁ2æAAðAèL4B2<€äa2@`g„`FÄ‚âdRˆRI¸Ilà&(Nu//86 4ëJ0B2AÒÁÉ4æBAð AèL@4<€àb2A`"Jlµ`g‚`FÂAèRI¸IlÚ&(NuHç84<ð”@6xèkÖBâC<Ü@0<€A8tälØ@âD:ÚA0T@1À^Ö4TB1Â^ÔEúÿ2|0D20N’2|0E20N’6ERK8FRL2|0K2 0R@N’>RG4G`“É0J20NºþÐRJºJnîEúÿ2|0E20N’2|0E20N’2|0K20 N’LßøNuHç 08^ÖÁü0@:8^Ô2YA0æ@€ÿþЈ"@CéLAv–A0HÀxá¬F„0/Áü€ÿÿ$@Õü"`JEfCèKþJ8^Ùl$t À„BAFA|†0C,í©€"€CéQÊÿâ`t À„r0C,í©€"€CéQÊÿèXE1Å^ÔLßxNuYOHç>?@*>&H08^Ò"8^0@J@o,A*x^”ÛÈ*<LðBF`Œ*AMõˆ`ìJf²·Îe»Ëcv`BC"8^²‹f&x^”BB B fR‹t 0S@ @b B g BÿfpJBg BÿgR‹ B g^ BÿgX·Îe»Ëcp`B@†@²‹f&x^”BA A fR‹r 0S@ @b A g Aÿf&JAg AÿgR‹ A g AÿgB`xt r BC`xr Åüp0$@Õü"`Ãüp0 @Ñü"`BCìJCg Cg$ Cf^`:rB@éH„‚CéSA AÿÿgX`ærB@F@éH„‚CéSA Aÿÿg:`ätBAéIF€€CéSB Bÿÿg`àrB@éH€F€CéQÉÿîRŒ0 EÐ@¾@bþˆ…ÒRF¼o*g(EB`àLß|øXONu/ $H`RŠ@ÿ?NºýxTfî$_Nu/&/N¹!_XåˆrF’€ âˆ1À^Ô CNºÿÂPx^Ö&NuNVHn /.B§Hzý0Nº“FOïN^Nu/ HxðBgHxZ.Eù!^€N’Hx?<ÿHxZN’Bx^Ô1üy^Ö1ü^ØOï$_Nu/&NºÿÀ CNºÿT&NuBuildExecGotoFindReplaceConfigAbout"'v"'|"'"'†"'‹"'“"'šF%1d %s/ /Nºÿ`vEúÿÐ/?HzÿäNºÿ0Tx^ÔRCOï Cfäü_&$_NuN¹!yP?8^ÞN¹!zŠ?8^àN¹!z‚XNu NVÿüHçNºíô*J8_g28^Ü2|0A\H08^ÚNºúÔ?<N¹!zBD`?<N¹!yòTJ@gNºÿp?<N¹!zT`°0x]8]H€H@B@Ј gr`2 gr`(gr`J@lr`gr` gr`BA²x^âg,0Áü0@Ñü"(2|Là€€€Cé²üLÑfê1Á^â6RCTD·D gJ8_g28^Ü2|0A\H08^ÚNºùüN¹!xÐ8/HnÿþNºìtPJ@fÿ0.ÿþ@÷ÿ=@ÿþ @! g @ fNºþ„J8_g28^Ü“É0A\H08^ÚNºù®0.ÿþLî8ÿðN^NuOut of memoryCan't exec command.Error opening '%s'/6NºýPAúÿÀ Cg Cf Aúÿ¾NºüÒ`/8^€HzÿÄNºý PNºþ/N¹!Sº$HP°üfp`ð* â gB§/N¹!)ŒPJ@gÐ x^„"x^ˆ 8^"8^”z`°ˆf A  fR„°ˆcR…Rˆ³Èbæ?* N¹!bª/?* N¹!d2PJ@f•Ê`j5@ ?N¹!cUD0„08^’x^†ÐE1@| Zˆ"x^„T`*³ø^f"x^” f¼ | Tˆ` ÿgÀR‰³ø^ˆeÐB|àEèJg B§/N¹!*P´üfpNºûÄ`B8_B@LîxÿØN^NuExecute: Press any key to continue.OïÿÀHç8$HNºþZJ@fv"8^€ JEï ` *f"A`ÀR‰fø`ÀRˆfäBIúøÜAúÿ˜N”Gï rp? KNºû|Jg0Eù!múN’ KN¹!3N¹!fÀAúÿtN”Nºù‚N’ü_Nºü>NºøôLßOï@NuScroll[UP,DOWN],Cancel[ESC,APPS]NVÿìHç HnÿìHx^äNºç¶Bg/N¹!WÊ$HOï°ügÞAúÿ°Nºø46* ?N¹!b’?N¹!bº$HXp08_AòrAdapted by PpHd for PedroMSave changes?%s [ENTER]=Yes [ESC]=NoNVÿÈHç8 8^€g/HnÿÈN¹!_HP`B.ÿÈAîÿÈ!È^€N¹!múEúõøN’J.ÿÈfAúýîNºòBrpAîÿÈNºôêJg 2N’AúýÝNºò&Hnÿä/8^€N¹!\”PJ@fGîÿ÷Bg/ N¹!WÊ$H\°üg–?( N¹!{ÎT àfÔ* fÈ@ ?* N¹!cGè$K0P[H0HHhN¹!bÐ !È^„\gv!È^!È^Œ€!À^”!À^ˆ` x^ˆ fü !È^ˆCê`À!È^ˆ$ICêfØ`V/ N¹!Z>/N¹!SºP°üg:/ N¹!ZäHxN¹!bÐ !È^„Pfp`j!È^!È^Œ€!À^”!À^ˆ—Ë`p`L x^ˆPÐ1ü^ÐB8_Bx^ÒBx^Ú1ü^ܶüg2Eëÿþv` x^”  fRƒNºù|08^’x^†ÐC°Rmâ` Nºó,J@f ¸Nºñü_Bx^Ö1üØ^Ô1ü^Ø?8^ÐHzüSNºð8\J8_g x^Œr x^” gä gÞNº÷2"8^²¸^„gý x^” g fÞNºö\`ýNºöT x^” ÿgüð g fâ`Nºö4 x^” ÿgüÐ gè gâ`üÀNº÷œ`ü¸NºøÞ`ü°&8^p Nº÷òJ8_güž"8^„ C` gBD`RD²ˆg fè` p Nº÷ÂRC`BC¸Cfð`ühNº÷dJg`ü\Nºø‚ x^” güJ ÿfè`ü@Aúø©NºìârRp{Nºé 8x^Ô6x^ÖBFBE1Ë^ÖBG4|1Ì^Ô6 BD1ü^غGf ¼Df1ü^Ø?NºéŠRx^ÔRDRCT DfÖPx^ÖRGEê G f¾Nºí\ @ gT @Qg& @Rg* @Tg @XfP`(0R@rHÀÁ,HF`ÿ€SFjÿz`>SEjÿpz `ÿj0R@r HÀÁ*HE`ÿXËüÚF0@Nºö¶`D @ g< @fÿ4`0Nºó’`ûJAø^˜`Aø^´NºòÌ`û8Aú÷ÆNºëÚB.ÿäEîÿäBAp JNºî|fBC` JN¹!|^6NºìJgûJCfv¶x^ÐlNºõ¢¶x^Ðlúê`òNºô¸¶x^ÐoúÜ x^” ÿfê`úÎAú÷hNºëprpAø_ NºîJg’Hx_ N¹!_X6Nºóø x^” ÿgt2C/ Hx_ /N¹!_¸Oï J@fØ`XEúë Aú÷N’GúíÊrpAø_ N“Jg:Aú÷N’rpAø_*N“Jg$Hx_ N¹!_X8v`„Nºó„ x^” ÿgt2D/ Hx_ /N¹!_¸Oï J@fÚEø_ `NºïHJfø x^ŒrNºæ˜NºêŠ8T @Qgx @Rg @Tg @Xft`r`^JCgÿZSC`ÿT CnÿLRC`ÿFYx^Ô?< NºæFx^ÔHxHx^˜Eîÿä/ Gù!^0N“rp JNºëìOïJfBC`Hx/ Hx^˜N“BC`NYx^Ô?< Nºåöx^ÔHxHx^´Eîÿä/ Gù!^0N“rp JNºëœOïJfv`ÂHx/ Hx^´N“vOï `¬Yx^Ô?< Nºå x*^ÔHxHx^äEîÿä/ Gù!^0N“rp JNºëFOïJfv`lHx/ Hx^äN“1ü_v`¤ 8_v`L 8_v`BÃü Òx^Þ0S@ @Žcv`,1Á^Þ?N¹!zŠv`Òx^à0S@ @0b1Á^à?N¹!z‚T D gF Dfýè`2 Ac "( Af;@ Cÿë0FÇLßþNu2¼€rRWÉÿúNuÍÞïÿpXQÈÿþNuAù`CèEøaPBPaæFg|BDr 4<ÿþ0‚aÔ†FÁFg(pVÈÿü1ÂaZ1Àa\êÿÿØ@ØD8;@z1Äa^1ø]a``TãZPDQÉÿÀ08a^gD @d>0¸aZa„08a\f6Sxa`f(1ø]a`88a^D`BšBšBZBxa^J8abgBx]B8abBD0¼€Nu8ðaPBx]Bxa^`ÿ< @€QRTXzsw123xde456cfr789 vgt (),/bhy^nju  p=mki *ˆlo+ - aq0.­68]g"Jx]&fB@Gø](SC1Ã]gp1À]&6ëQËÿúNu68] De ¸CfBD1Ä]Nu Cg4 C@gl C gF8]g Dae DzbDÿàaVBx]8ðaPPøabNu DzfF8]`äAúZ0g&Xˆ¸@fö8 `Ð D+fN¹!xê`Ä D-fN¹!y `¶ˆC`° Dbö`˜68] CdGø](ÖÃ7„0RC1Ã]1ü]&Nuq?w!eér@t#yuüi—oÔp_aàsd°fŸg€h&j¾k|l"x©cÇvb'nñm;=\ˆ:({)},[/]^Œ7½8¼9´*¨4Ž5566--1•2233++0<.>­     $AúÜ`2Aúà`,Aúé`&Aúñ` Aúÿ`Aú `Aú`Aú`Aú-`NLFü'BgHPB§aa <B@S€füNù!"¼Nù!pNù!fvNLFü'BgHP?< BgaèaàHz&B§aØ <B@S€füNù!!ˆ2 _0Aúõ@ÿg˜FÁNù!yŒ2 _0@øc:"H @ðfÓØ`( @ñfÓØFÁNÑ @òf0äH"xȰad1À[¼åH"qFÁHPNÑAúŠ`ÿDAú¸`ÿ<åH {Ns!xê!Ï@!AŽ\!Ñh] !{ò!xê!y !zn!zzL"Æ!ɺ?@oðÿo0NsÐÈAè1Û pˆNs0@ f8cvg0 _FÀHP x\h“Ép rÿ`\HçÿþMù`Fü$2< PîpPQÈÿþ.gêQÉÿìFü'Pî¹pBnB.Ö=|€Pîpa–|!=|0<€rQÉÿþQÈÿøfpapNr'=||€|Þ=|€ùpN¹!znN¹!{´aú ¸È[Øl!üÈ[Ø?<N¹!zTN¹!yLßÿNsFü'3ü€`paNsAøczCú2< 0ÙQÉÿüNøcz29^À`Nq3Á^NqNqNu0NuTrap not definedProtected MemoryAbort by userBUS ERRORSPURIOUS ERRORAddress errorIllegal instructionDivided by zeroChk instructionTrapV instructionPrivilege violationDebug mode not availableLine 1111 EmulatorLine 1010 EmulatorSYSTEM ERROR: rebooting...Rom call not availablerÿ @ g@! m2 AoNu“Ép Hçÿþ,O(:0<NA<?ºx_JgÌ08_J1À`ðaÎJAfºgGøL0<¿/QÈÿügGød0</QÈÿüg —Ë0<?/QÈÿüg&Gù`?+ +?+?++fú+gú/Gø[0<÷?QÈÿüAè&OB#p QÈÿü.KHQ <DX€/m N¹!a\4€g0@NC âˆS@0ßQÈÿü0tÿ`&0NA.NLßÿpNurÿJ@m @ l Eø`òÐ@ÔÀ2Nu1À_JaâJAn0aÚJAnNLNù!"À0A0<NANC OøDŸÀ"OâˆS@2ØQÈÿü0BRN¹!bOïGø`ð0<÷7QÈÿü(3ü €`gGù`_7_7___ 6ŸgGù0<?'QÈÿügGù€0<'QÈÿügGø[0<¿'QÈÿü0NALßÿpNuEø`òv?N¹!bTBZQËÿòBx_JBx`ðNu08_JaþöJAgAø`òprÿRAJXWÈÿú1Á_JNuHç>.<,I:âMÁÁ:@`L6ÇÆ8C`>x8 p0$GÕÀ`(GòH/ / N–PJ@o2SA"JÓÀp0Aò±ÉfŠcÒÖF¶Me¾âMJEf°Lß|øNuHç8(H&I>8SDBF6ÖDâK0ÀÇ* Ú€// N’PJ@o<RF`J@l8SD` `¸FdÎp @LßøNuHÁj D‚ÀHADA`‚ÀHAHÁNuHÁjD‚À`ê‚À`ît4„Àr2NuHABAHA‚ÀBAHANu"/ /a@ Nu"/ /aF NuD€Jm `&J€g(mòJlDa,"DNuD€JnD`DaDNua"Nu‚üJ€gømÞJmä°eg$rNurtNuH@J@f*H@‚Ài t4BAHAÃBNu?BAHA‚À$HA4„À2BBHBNutÃBHçv : E€càMvÖ;P6H@x *HE E€càMxØ;P ˜CgRDDDzé­Ò…*é­”…°‚cÔLß8NuOïÿ¼Hç>,H/h(*( ,($(Aï,rp)áˆÒ€p)H@B@Ò€)áHH@B@Ò€ ÁX‰plаˆfÎ&Ɔ F€À‚†€Ö¯(Ö¯,ƒ×j¤xpà»Ö…(È… F€À†ˆ€Ø‚د0„èÇ·Vpà¼Øƒ$ă F€À…„€Ô†Ô¯4‚$ pÛpàºÔ„"„ F€Àƒ‚€Ò…Ò¯8Á½Îîp à¹Ò‚*Ê‚ F€À„Š€Ö…Ö¯<ƒõ|¯pà»Ö*Ê F€À‚Š€Ø…Ø¯@„G‡Æ*pà¼Øƒ*ʃ F€ÀŠ€Ô…Ô¯D‚¨0FpàºÔ„&oH*Ê„ F€ÀƒŠ€Ò…Ò‹ýF•p à¹Ò‚*Ê‚ F€À„Š€Ö…Ö¯Lƒi€˜Øpà»Ö*Ê F€À‚Š€Ø…Ø¯P„‹D÷¯pà¼Øƒ(oT*ʃ F€ÀŠ€Ô…ÔŒ‚ÿÿ[±pàºÔ„*Ê„ F€ÀƒŠ€Ò…Ò¯X‰\×¾p à¹Ò‚"o\*Ê‚ F€À„Š€Ö…Ö‰ƒk"pà»Ö*o`*Ê F€À‚Š€Ø…Ø„ý˜q“pà¼Øƒ.F‡ od Àƒ*Ê€…Ô€Ôˆ‚¦yCŽpàºÔ„,F†$oh À„*ʃ€…Ò€ÒŠI´!p à¹Ò‚ À„*ʇ€…Ö€Ö¯0ƒö%bpà»Ö À‚*ʆ€…؀دD„À@³@pà¼Øƒ À*F…ʃ€…Ô€Ô¯X‚&^ZQpàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯,é¶Çªp à¹Ò‚ À„*F…Ê‚€…Ö€Ö¯@ƒÖ/]pà»Ö À‚*F…Ê€…؀،„DSpà¼Øƒ À*F…ʃ€…Ô€ÔŠ‚Ø¡æpàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯<çÓûÈp à¹Ò‚ À„*F…Ê‚€…Ö€Ö¯Pƒ!áÍæpà»Ö À‚*F…Ê€…؀؈„Ã7Öpà¼Øƒ À*F…ʃ€…Ô€Ô¯8‚ôÕ ‡pàºÔ„ Àƒ*F…Ê„€…Ò€Ò¯LEZíp à¹Ò‚ À„*F…Ê‚€…Ö€Öƒ©ãépà»Ö À‚*F…Ê€…؀د4„üï£øpà¼Øƒ À*F…ʃ€…Ô€Ô‹‚goÙpàºÔ„ Àƒ*F…Ê„€…Ò€Ò‰*LŠp à¹Ò‚ µ€¹€Ö€Ö¯@ƒÿú9Bpà»Ö ³€µ€Ø€Ø¯L„‡qöpà¼Øƒ ·€³€Ô€Ô¯X‚ma"pàºÔ„ ¹€·€Ò€Òˆýå8 p à¹Ò‚ µ€¹€Ö€Ö¯0ƒ¤¾êDpà»Ö ³€µ€Ø€Ø¯<„KÞÏ©pà¼Øƒ ·€³€Ô€Ô‹‚ö»K`pàºÔ„ ¹€·€Ò€ÒŒ¾¿¼pp à¹Ò‚ µ€¹€Ö€Öƒ(›~Æpà»Ö ³€µ€Ø€Ø¯,„ê¡'úpà¼Øƒ ·€³€Ô€Ô¯8‚Ôï0…pàºÔ„ ¹€·€Ò€Ò¯Dˆp à¹Ò‚ µ€¹€Ö€Ö¯PƒÙÔÐ9pà»Ö ³€µ€Ø€Ø‰„æÛ™åpà¼Øƒ ·€³€Ô€ÔŠ‚¢|øpàºÔ„ ¹€·€Ò€Ò¯4ĬVep à¹Ò‚ F€€µ€Ö€Ö¯,ƒô)"Dpà»Ö F€€ƒ³€Ø€Ø‹„C*ÿ—pà¼Øƒ F€€„·€Ô€Ôˆ‚«”#§pàºÔ„ F€€‚¹€Ò€Ò¯@ü“ 9p à¹Ò‚ F€€µ€Ö€Ö‰ƒe[YÃpà»Ö F€€ƒ³€Ø€Ø¯8„ Ì’pà¼Øƒ F€€„·€Ô€ÔŒ‚ÿïô}pàºÔ„ F€€‚¹€Ò€Ò¯0…„]Ñp à¹Ò‚ F€€µ€Ö€Ö¯Lƒo¨~Opà»Ö F€€ƒ³€Ø€ØŠ„þ,æàpà¼Øƒ F€€„·€Ô€Ô¯D‚£CpàºÔ„ F€€‚¹€Ò€ÒN¡p à¹Ò‚ F€€µ€Ö€Ö¯<ƒ÷S~‚pà»Ö F€€ƒ³€Ø€Ø¯X„½:ò5pà¼Øƒ F€€„·€Ô€Ô¯4‚*×Ò»pàºÔ„ /(Ѓ-@Fƒ €ƒ¹€Ò€Ò¯Pë†Ó‘p à¹Ò‚Ó® Õ®Ù®Lß|øOïDNu oB¨B!|gE#!|ïÍ«‰ !|˜ºÜþ!|2TvNuHç<(o $o$*/(&(æŒp?È€$çŠJ…ož râ ",Ò€)A Ђ(€´€cR)AJ„f&J$E`T Ð…r@²€m&`v@–„Kì// HuHN¹!^0 ЃOï r?²€l@Gò8$E•Ã"M LNºø `"K LNºøGë@EêÿÀp?°Šmê´üg/ / HlN¹!^0Oï Lß<8Nu€QOHç<*o&o tIïpüÀ‚r‚ 3ç‰â¨€(R‚p°‚fà æˆr7’€ r?À @HhHzÿz/ Eúþ®N’Hx/ / N’tOïpüÀ‚r‚ 3ç‰â¨€(R‚p°‚fäLß<PONuÿÿ?ÿigEsDsPd@%"#8Fÿÿ@9hˆb™u‡@W ‚'‡x‘sÿÿ@'6„”RAd%@ÿÿ@#‚8Y6p#@ Rp„0`ÿÿ@8c6P@AqD0$‚`Aÿÿ@B–qD˜V?ùI”3™7†Qÿÿ?ü11p?þ%f82(”@ÿÿ?ÿFgƒ3—U)@ÿÿ?û†4"TB?ý4$ˆx#XXÿÿ?ÿ3ƒPd!–@?ÿcfw#gX@p€%ÿÿ?úDTEQNVÿlHç< x [g|IúÿÈKø[Nº­ .Hx / pœÐŽ/N¹!^0Oï -Gÿ¨&ƒÿÿÿ|HxpœÐŽ//N¹!^0Oï Hx/HnÿŒN¹!^0Oï -nÿ”ÿx-nÿÿt=nÿŒÿr=nÿŽÿppÀ®ÿ˜-@ÿl n?õÿpc–!îÿx[ !îÿt[1îÿr[1îÿp[!îÿx[,!îÿt[(1îÿr[$1îÿp[&Nº¥HEîÿôHx / / N¹!^0Oï Hx / p¬ÐŽ/N¹!^0Oï Hx p¬ÐŽ/Hx[N¹!^0Oï Iúþ˜Nº¤¾EîÿÐHx Hx[/ N¹!^0Oï Hx / Hx[N¹!^0Oï !îÿx[,!îÿt[(1îÿr[$1îÿp[&Nº¤´EîÿÄHx Hx[/ N¹!^0Oï Hx / pœÐŽ/N¹!^0Oï Hx p¬ÐŽ/Hx[N¹!^0Oï IúýÄNº¤(Hx Hx[HnÿÜN¹!^0Oï (.ÿä*.ÿà<.ÿÞ6.ÿÜ0.ÿngFCHx pœÐŽ/Hx[$N¹!^0Oï !Ä[ !Å[1Æ[1Ã[Nº¥žEîÿèHx Hx[/ N¹!^0Oï Hx / Hx[`V0.ÿngZHx Hz§2Hx[$N¹!^0Oï !îÿx[ !îÿt[1îÿr[1îÿp[Nº¥BEîÿ¸Hx / / N¹!^0Oï Hx / / N¹!^0Oï Lî<øÿHN^NuNVÿTHç<8.68[Bx[Hx Hz¦êHx[ Eù!^0N’Oï Nº¡²Jm\ x?ÿ[bÒJDgJCg=|ÿV`BnÿV`JCWÀH€=@ÿVn ÿVHx Hz¦\Hx[N¹!^0Oï Hx Hx[Hx[ N¹!^0Oï Nº¢&ƒÿÿÿ|Hx Hx[/N¹!^0Oï Hx /Hx[N¹!^0Oï Hx Hz¦8Hx[$N¹!^0Oï Nº¢ž(„ÿÿÿpHx Hx[/N¹!^0Oï &ƒÿÿÿdHx //N¹!^0Oï Hx /Hx[N¹!^0Oï Nº©öEîÿ”Hx Hx[/ N¹!^0Oï Hx / Hx[N¹!^0Oï Nº£|Hx Hx[HnÿˆN¹!^0Oï -nÿÿ`-nÿŒÿ\=nÿˆÿZ=nÿŠÿX`œJDgJCg=|ÿV`=| ÿV`JCVÀH€=@ÿVDnÿV-x[ÿ`-x[ÿ\=x[ÿZ=x[ÿX n?õÿXc°Hx Hx[Hx[Iù!^0N”Oï Hx Hx[Hx[$N”Oï Nº¡xEîÿ Hx Hx[/ N”Oï Hx / HnÿdN”Oï Hx p›FÐŽ/Hx[N¹!^0Oï IúúFNº ôEîÿÐHx Hx[/ N¹!^0Oï Hx / Hx[$N¹!^0Oï Hx p›FÐŽ/Hx[N¹!^0Oï IúùºNº ¦EîÿÜHx Hx[/ N¹!^0Oï Hx / Hx[N¹!^0Oï Nº¢FEîÿÄHx Hx[/ N¹!^0Oï Hx / Hx[N¹!^0Oï !îÿ`[,!îÿ\[(1îÿZ[$1îÿX[&Nº lEîÿ¸Hx Hx[/ N¹!^0Oï Hx / Hx[N¹!^0Oï !îÿ`[!îÿ\[1îÿZ[ 1îÿX[NºŸHEîÿôHx Hx[/ N¹!^0Oï Hx / Hx[N¹!^0Oï 0.ÿVgFx[0.ÿVgbGù!^0EúžúgHx Hz£€Hx[ N“Oï N’Eîÿè`Hx Hz£rHx[ N“Oï N’Eîÿ¬Hx Hx[/ N“Oï Hx / Hx[N“Oï 0.ÿVgFx[`Hx Hz¢ÊHx[N’Oï Lî<øÿ0N^Nu x [gBgNºûÈTNu?<Nºû¼TNuNVÿlHç<=x[ÿl28[0.ÿl€A @ÿgª A fHx Hz¢RHx[N¹!^0`Š n ÿlg„-x[ÿx-x[ÿt<8[*…ÿÿÿ|Hx Hx[ /Gù!^0N“Oï Hx /Hx[N“Oï NºœÔEîÿˆHx Hx[/ N“Oï Hx / Hx[N“Oï Hx /Hx[ N“Oï Eúœ¸N’Jf\Hx /Hx[N“Oï Nº:(@!îÿx[!îÿt[1îÿl[1Æ[Hx Hz¡„Hx[ N“Oï N’Jgp°Œf!îÿx[!îÿt[1îÿl[`J!îÿx[!îÿt[1îÿl[1Æ[Hx Hz¡HHx[ N“Oï N’Jf$& f!îÿx[!îÿt[1îÿl[FF1Æ[`Rp°ŒfZ!îÿx[ !îÿt[1îÿl[1Æ[!îÿx[,!îÿt[(1îÿl[&1Æ[$Nº†Gîÿ”Hx Hx[/ Eù!^0N’Oï Hx / Hx[N’`îJFfBnÿr`& VÀH€=@ÿrBF €ÿÿ €ÿþb rHA¸üoÔ Àâ‰J€gö*ABB2nÿl nÿt".ÿx`ª!Á[ !È[1É[1Â[!Á[,!È[(1É[&1Â[$NºœâHx Hx[Hnÿ N¹!^0Oï ".ÿ¨ nÿ¤2nÿ¢4.ÿ  & ÀƒgP!Á[ !È[1É[1Â[!îÿx[,!îÿt[(1îÿl[&Bx[$NºœŠHx Hx[Hnÿ¬N¹!^0Oï ".ÿ´ nÿ°2nÿ®4.ÿ¬ âˆ*@ºüfÿR`(& Dƒ-CÿnrHA`" .ÿnÀâ‰*AJ€gðHx HzŸxHx[$Iù!^0N”Oï !îÿx[ !îÿt[1îÿl[Bx[Nº”Hx Hx[HnÿôN”Oï ".ÿü nÿø2nÿö4.ÿô(M`¨!Á[ !È[1É[1Â[!Á[,!È[(1É[&1Â[$Nº›¶Hx Hx[HnÿÄKù!^0N•Oï ".ÿÌ nÿÈ2nÿÆ4.ÿÄ À®ÿngL!Á[,!È[(1É[&1Â[$!îÿx[ !îÿt[1îÿl[Bx[NºœîHx Hx[HnÿÐN•Oï ".ÿØ nÿÔ2nÿÒ4.ÿÐ âˆ(@¸üfÿT!Á[!È[1É[6.ÿrµC1Ã[`¨!îÿx[!îÿt[1îÿl[1Æ[Nº òEîÿ¸Hx Hx[/ Kù!^0N•Oï Hx / Hx[N•Oï Hx Hnÿ|Hx[$N•Oï Nºš¸EîÿèHx Hx[/ N•Oï Hx / Hx[N•Oï Nº EîÿÜHx Hx[/ N•Oï Hx / Hx[N•Oï Lî<øÿHN^Nu o"o É ÉÓï ÉBPNu o"o/)/)/aÖOï Nu opJh f "(²¨dpNuHç0$o6/&oHSHRaBPJ@g¶Sfp` SÿðfäB@Lß Nu o"h!INu/Y o vÆot oÿðd&.ˆ C mfaÊt` Cfalt4`a6$ X&Nu"op")"i`áˆtЂQÉÿö ÿÿÿÿfæNu///aÿvvaÿná‹aÿfá‹aÿ^á‹ X&Nu///aÿHaÿBáK0X&Nu o (NuHç0$o&o&+/?HRaèOï J@g$ j&k`ÛQËÿüƒ ƒÿÿÿÿfì%HpLß NuHç8&o$oHRaþ~XJ@g6üÿð6üB›B“`T(j ÿf ,ÿgRŒ%LHRaÿJ6?HRaþ Oï "Cÿð *L6Ã6À&Á&ªÓª Cÿðf5| pLßNu o"hïï !INu o"hïï ï ï !INuHç $o&/p ¶€bx:` ƒdxz ` ƒdxz`xz jÑÄÑñêcB@`F0/@ÿð€E?HRaÿr\ Dm*g Dg/HRaÿpP`"jÃ%I` ?HRaÿB\pLß8Nu op ógxW@ øgpS@ âghS@ ág`S@ ÝgXS@ ÞgPS@ àgHS@ -g@S@ ßg8S@ Üf åfú ägp` gS@`U@ Ûg Ùfä ÙgS@NuEXPRLISTMATFUNCPRGMPICSTRTEXTGDBDATAFIGMACOTHSYSALLASM‘È0/ @b 2åIÐAAûœNuAùpCú ÉCú² ÉCúÔ ÉFü#OøKøIøNX,O?</až`a>a Jj ˆfz0 hgàa„v Ég°f`RC xéx°CfRadDf×^&é{HCé{ ƒàb88aH=|ÿþÐDa" #fEùGù@Kù! M0<ÿ$ØQÈÿü5@à<< a¤ V_a¢aòaú0 xgä Vgê fÎaàaÐBV(á\fxHD,„ J0`èàQÈÿú < F˜€dÐDxÜ@?HPa¦X:0<à˜€dÐDx>€/ aŽÚ@>„Hjàa‚ÐEPa`aval»ü!f$AúN#ÈxCù_ Qÿÿg Ian M0< a Ma`0< J"Ma€ÒÀ0 KavpH@ÛÀa**a¸–…bÿ0g Ma.Aêà"MaPa Bg OCù!pa>aŒFü'Eù .Z ZNÐ/Fü'0¼PP0¼ 0¼ÐÐ0gø0¼PP0¼ÿÿFü# NuHçà Fü'$ID@°Ie6r’@g 1ÿ2¼PPâI`2<ÿ2¼PP04¼4À0gøQÉÿî2¼PP2¼ÿÿFü#LßNu,¼ˆVFü'Cøbf2)XA²il6ù` 3A4) Np˜ RB´imBBQÈÿð3BFü#Nu/?<Hoa\0áX_fîNu/p o6/ g6BBCøadFü#JigöFü'2)1ÂÐBRA²imBA3ASiSCfÐ&Fü#NuFü&HçààCù` EéAøad2(²hmPøch`r4fjg¼à¼Pøci`VgRh2€RA²hmBA0`6 g0AøbfJhg"4g20€ShRA²hmBA0`Ø‘LßNsa`þ/p `/p`/p` /p`/pHçÀAû0"Lp˜CéQÈÿøJ fRŒAúSfIìܼLß Nu>~>~x>  zLx>> >>AAcwwFl8<<<< < >>00  >kk>> 08<><80 >cccccc>>cccccc>~````~>>~`~~`~><<<66666666666>``|bf 0fF8ll8}ofn; 000 0  0""~0 0`@>ccckccc>x~ 8  0`0 ~~`0  0`ccooo``>333~3c```c3|6333336|102>201312>200x3c``gc3ffff~ffff<<fff<s366<663sx0000133cwkccccccs{ogcc6ccccc6~333>000x6cccgo>~333>633sff=p00>3333nffff;f0x;fff>v7;00x 8~F 0b~0`0p  p-&>;offo;66<6666< ~f```````;o 66cc6000006cccc6p0<0>06666666w?v666g36<``3  36ffl8>X >{ko>Ikkk>>ccccc66w"AIII6>00<00>!~`b<8lp````~>>c66c>>ccc> 8 0 > ~~0``0 0`| 0TT<<<>khhk>300~00`Z$BB$Zfff<~~$($$ l<"MUQQM"666> (P( ~>"YUYUU"|8DDD8|6 ><<v66`?kkk; c66c8<666>P( (P>fflm6 XX04ZZZ,0`f<0333>0x336333;n0<>ff; <>ff;$<>ff;,<>ff;6<>ff;$<>ff;6 ?HI6fff<,|fffff0 80p6;333>0xffff> 8Ì]P!Î!É!Î !É"!ÎÈ!ͪ!ÍÔ!͆!Ñœ!ÑÌ!ÎÒ!ÊÀ!Ζ!Î!Ëò!Êä!Ë~!Ë.!É.!É@!ÎŒ!Éh!ÌV!ÌV!Ìž!Ìê!Ɇ!ɺ!ɤ!Ï@!ÊŒ!Êj!Ì*!ÒØ!Í\!Í2!Ñh!Ñr!Óà"kX!Ç!Ƙ"kX!g¤!gÐ!g¼\>"kX!Ç4!çD!è!çè!Ðp!Þ"kX!Þ‚!Þ^!Þ "kX!Þ¢!Þ¢"kX"kX"kX!Ûf!Ý8!Û:!Ù¨!Ù€!Û !Û!Ú¼!ß"kX"kX"kX"kX!íþ!íþ!{Â!{8!z’!ÃV!J*!Iv"kX"kX"kX"kX!C!C€!Z>!Z.!Zä!ZÚ!W²!W¶!X!\F!T<!Uº!Uü!T¾!Uð!Tâ!Uf!T®!X0!X†!Xð!Yr!Z!Wú!Y®!Y°!YÒ!Yì!Y!Sâ"kX!Sº!WX"Æ"ð"kX"kX!Hú!£!S^!Sx!SŠ!V~!W²!]"kX!S<!\B"kX!\B!\B"kX!Sö!c"!a\!a\!e!aN!e!c !c!b!b!bº!b‚!b’!cd!d$!bê!bª!e¤!c!bÐ!aþ"Æ"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"È"Â"¼"¶"l""R"8!¢F!¢!\Æ!ÞÒ!Þ¾!|À!|¸!|¤!ß(!Þþ!âØ!ß<!ßJ!ßn!ßL!ßZ!àz!àz!ßú"kX"kX"kX!á<!àä!àP!ßj!ßJ!åd!åd!åd!åd!åh!åd!å€!uT!tÆ!t‚!sÜ!t&!uT!sr!u!uT!uT!uT!uV!zz!zn!zj!zd!z(!y¸!yÞ!yò!z" " è" 4" V" œ" v" Â" ô"\"À" *" " Þ"kX"°" P" ^" " ," „]¶!¡h"kX"kX"kX!36""kX"kX"kX"b"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!T"kX"kX"kX"kX"kX"kX"cl"kX"c†"cº"kX"cÊ"d"d<"dj"kX"c<"cR"e’"et"e^"dÞ"d†"d’"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!ÇÂ!ÇÂ!y„!yT!yx!ß4!ãX!áÎ!ß"ü!'Î"kX!'¶"kX!(!+’!)Œ!*!+!+Ž!(b![!)"kX"kX!+l!)>"kX!,è"kX!_|"kX!)"à" 0" `" x"kX"kX"kX"kX"kX"kX"kX"kX!zœ!z’!{´!{Þ"r"š"°!õ!u^!ø6!u„!h|!gò!jT!k!h@!fº!f®!s !n‚"è"†!n!uæ!v8!s.!vì!x€!gv!g‚!kþ!kð!mú!np!gB!g !fà!fÀ!o°!v°!ú@!l"!n8!p"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!Ç8"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX" "kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!aä!cF!d""""""""!¢Ì""!{Î!zŠ!z‚!Cî!EÀ!AŽ!AÎ!AÀ!BX!B!Bî!Bà"kX"T¸"Tä"Uê"B"kX"kX"kX!íæ!ð!ð$!ïü!ð!ét"kX"kX! T! Z"kX"Ø"è"kX"kX!^0!^!_H!_Þ!_0!`!^î!_Z!_¸!^Ð!_ !`$!`J!`n!`ˆ!`ª!`æ!^€!^€!`Ì!_![T!["kX!Sž!WÊ!z"!y¸"kX" ô" x" p"kX"kX"kX"kX"kX!]ˆ"kX!ÉÌ!ÉV!à"Ä"kX!xê!y "kX"kX!yP!xÐ"¼!,¶!,Ü!,ì"kX!,ì"kX[°"Kæ"KÐ"Kô"L"Lb"L2"Ll"LX!¤>"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!ôf"kX!Çæ! @!¡!¡!¡B!¡B!£†!£î"kX"kX!¤ "kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX! Ì!¢´!¢´"kX! –! Þ! þ"kX"kX"kX! `! x"kX"kX"kX! >! >"kX"kX"kX"kX!¢”" Ö"B"kX"„"kX"†"˜"˜"†"À"ª"˜"Ò"kX"kX"kX!¢h"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!¤^"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"<"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!J*"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!I0!I0"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"˜"Æ"|"h!{ò"kX"kX"kX"kX"kX"kX"kX!ôš!ôÆ"kX"kX"kX!ôò"kX"kX"kX"kX"kX"kX"kX"kX!¡R"kX"kX"kX"kX"kX"kX!éÊ"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!\”"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX]®"kX!&Ð"f("g"kX"kX"kX"kX"kX"kX`!!PÅ!PÀc¶"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX!¤Ä"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kXaL"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX[¸"kX"kX"kX"kX"kX"kX"kX"kX"kX"kX(http://www.timetoteam.fr.st) This program is free software; you can redistribute it and/or modify it under the terms of the GNU GPL as published by the Free Software Foundation (version 2, or any later version). It is distributed WITHOUT ANY WARRANTY. See http://www.gnu.org for more details.Nq @tiemu-3.03-nogdb+dfsg/pixmaps/000077500000000000000000000000001220314353500162475ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/pixmaps/Makefile.am000066400000000000000000000002541220314353500203040ustar00rootroot00000000000000pixmapsdir = $(pkgdatadir)/pixmaps dist_pixmaps_DATA = *.xpm *.ico EXTRA_DIST = copy.bat uninstall: rm -f $(pkgdatadir)/pixmaps/*.xpm rm -f $(pkgdatadir)/pixmaps/*.ico tiemu-3.03-nogdb+dfsg/pixmaps/Makefile.in000066400000000000000000000321651220314353500203230ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = pixmaps DIST_COMMON = $(dist_pixmaps_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pixmapsdir)" dist_pixmapsDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_pixmaps_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTODIRS = @AUTODIRS@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLADE_CFLAGS = @GLADE_CFLAGS@ GLADE_LIBS = @GLADE_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GROFF = @GROFF@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INCINTL = @INCINTL@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KDECONFIG = @KDECONFIG@ KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ KDE_INCLUDES = @KDE_INCLUDES@ KDE_LDFLAGS = @KDE_LDFLAGS@ KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@ KDE_MT_LIBS = @KDE_MT_LIBS@ KDE_RPATH = @KDE_RPATH@ LDFLAGS = @LDFLAGS@ LIBCOMPAT = @LIBCOMPAT@ LIBCRYPT = @LIBCRYPT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBOBJS = @LIBOBJS@ LIBPNG = @LIBPNG@ LIBPTHREAD = @LIBPTHREAD@ LIBRESOLV = @LIBRESOLV@ LIBS = @LIBS@ LIBSM = @LIBSM@ LIBSOCKET = @LIBSOCKET@ LIBTOOL = @LIBTOOL@ LIBUCB = @LIBUCB@ LIBUTIL = @LIBUTIL@ LIBXINERAMA = @LIBXINERAMA@ LIBZ = @LIBZ@ LIB_KAB = @LIB_KAB@ LIB_KDECORE = @LIB_KDECORE@ LIB_KDEPRINT = @LIB_KDEPRINT@ LIB_KDEUI = @LIB_KDEUI@ LIB_KFILE = @LIB_KFILE@ LIB_KFM = @LIB_KFM@ LIB_KHTML = @LIB_KHTML@ LIB_KIO = @LIB_KIO@ LIB_KPARTS = @LIB_KPARTS@ LIB_KSPELL = @LIB_KSPELL@ LIB_KSYCOCA = @LIB_KSYCOCA@ LIB_QPE = @LIB_QPE@ LIB_QT = @LIB_QT@ LIB_SMB = @LIB_SMB@ LIB_X11 = @LIB_X11@ LIB_XEXT = @LIB_XEXT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ QTE_NORTTI = @QTE_NORTTI@ QT_INCLUDES = @QT_INCLUDES@ QT_LDFLAGS = @QT_LDFLAGS@ RANLIB = @RANLIB@ RC = @RC@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TICABLES_CFLAGS = @TICABLES_CFLAGS@ TICABLES_LIBS = @TICABLES_LIBS@ TICALCS_CFLAGS = @TICALCS_CFLAGS@ TICALCS_LIBS = @TICALCS_LIBS@ TICONV_CFLAGS = @TICONV_CFLAGS@ TICONV_LIBS = @TICONV_LIBS@ TIFILES_CFLAGS = @TIFILES_CFLAGS@ TIFILES_LIBS = @TIFILES_LIBS@ UIC = @UIC@ UIC_TR = @UIC_TR@ USER_INCLUDES = @USER_INCLUDES@ USER_LDFLAGS = @USER_LDFLAGS@ USE_NLS = @USE_NLS@ USE_THREADS = @USE_THREADS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_INCLUDES = @X_INCLUDES@ X_LDFLAGS = @X_LDFLAGS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ all_includes = @all_includes@ all_libraries = @all_libraries@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ dbus = @dbus@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ kde = @kde@ kde_appsdir = @kde_appsdir@ kde_bindir = @kde_bindir@ kde_confdir = @kde_confdir@ kde_datadir = @kde_datadir@ kde_htmldir = @kde_htmldir@ kde_icondir = @kde_icondir@ kde_includes = @kde_includes@ kde_libraries = @kde_libraries@ kde_libs_htmldir = @kde_libs_htmldir@ kde_libs_prefix = @kde_libs_prefix@ kde_locale = @kde_locale@ kde_mimedir = @kde_mimedir@ kde_moduledir = @kde_moduledir@ kde_qtver = @kde_qtver@ kde_servicesdir = @kde_servicesdir@ kde_servicetypesdir = @kde_servicetypesdir@ kde_sounddir = @kde_sounddir@ kde_styledir = @kde_styledir@ kde_templatesdir = @kde_templatesdir@ kde_wallpaperdir = @kde_wallpaperdir@ kde_widgetdir = @kde_widgetdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ qt_includes = @qt_includes@ qt_libraries = @qt_libraries@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x_includes = @x_includes@ x_libraries = @x_libraries@ pixmapsdir = $(pkgdatadir)/pixmaps dist_pixmaps_DATA = *.xpm *.ico EXTRA_DIST = copy.bat all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu pixmaps/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pixmapsDATA: $(dist_pixmaps_DATA) @$(NORMAL_INSTALL) test -z "$(pixmapsdir)" || $(MKDIR_P) "$(DESTDIR)$(pixmapsdir)" @list='$(dist_pixmaps_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_pixmapsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pixmapsdir)/$$f'"; \ $(dist_pixmapsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pixmapsdir)/$$f"; \ done uninstall-dist_pixmapsDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pixmaps_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pixmapsdir)/$$f'"; \ rm -f "$(DESTDIR)$(pixmapsdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pixmapsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dist_pixmapsDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pixmapsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pixmapsDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pixmapsDATA uninstall: rm -f $(pkgdatadir)/pixmaps/*.xpm rm -f $(pkgdatadir)/pixmaps/*.ico # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/pixmaps/bkpt.xpm000066400000000000000000000002561220314353500177400ustar00rootroot00000000000000/* XPM */ static char * bkpt_xpm[] = { "8 8 2 1", " c None", ". c #FF0217", ". .", " . . ", " .... ", " .... ", " .... ", " .... ", " . . ", ". ."}; tiemu-3.03-nogdb+dfsg/pixmaps/copy.bat000066400000000000000000000001071220314353500177070ustar00rootroot00000000000000mkdir c:\lpg\msvc\pixmaps copy *.xpm c:\lpg\msvc\pixmaps\ del *.bak tiemu-3.03-nogdb+dfsg/pixmaps/icon.xpm000066400000000000000000000057001220314353500177270ustar00rootroot00000000000000/* XPM */ static char *icon[] = { "48 48 31 1", "` c None", ". c #6f686f", "# c #302f30", "a c #605f60", "b c #a09fa0", "c c #808080", "d c #4f484f", "e c #908f90", "f c #807080", "g c #d0cfd0", "h c #2f5fb0", "i c #b0a8b0", "j c #3f383f", "k c #5f775f", "l c #405f40", "m c #7f707f", "n c #3f373f", "o c #6f9f6f", "p c #709f70", "q c #303030", "r c #2f282f", "s c #706f70", "t c #1f181f", "u c #3060bf", "v c #80b780", "w c #3060b0", "x c #dfd000", "y c #df00df", "z c #201f20", "A c #8f7f8f", "B c #000000", "```..#####################################``````", "``abbccccccccccccccccccccccccccccccccccccbBB````", "``abbccccccccccccccccccccccccccccccccccccbBB````", "``deefgggggggggggggggggggggggfhhfiifiifiieBB````", "``jccfggkkkkkkkkkkkkkkkkkklggffffffffffffmBB````", "``jccfggkkkkkkkkkkkkkkkkkklggffffffffffffmBB````", "``nccfggloooooooooooooooool##################BB`", "``nccfgglooooooooooooooooo###################BB`", "``nccfgglooooooooooooooooo##i################BB`", "``nccfgglooooooooooooooooo###kkkkkkkkkkkkkkk#BB`", "``jccfgglooooooooooooooooo###loooooooooooooo#BB`", "``jccfgglooooooooooooooooo###loooooooooooooo#BB`", "``nccfgglooooooooooooooooo###loooooooooooooo#BB`", "``nccfggllllllllllllllllll###loooooooooooooo#BB`", "``nccfggllllllllllllllllll###loooooooooooooo#BB`", "``nccfgggggggggggggggggggg###looooopoooooooo#BB`", "``qccfffffffffffffffffffff###loooooooooooooo#BB`", "``qccfggfggfggfggfggfggfgg###loooooooooooooo#BB`", "``qccfffffffffffffffffffff###lllllllllllllll#BB`", "``qccffBfBBfBBfBBfBBfBBfff###################BB`", "``qccffifiifiifiifiifiifif###################BB`", "``rccfffffffffffffffffffff#cffffffffffffffffsBB`", "``tccffqfqqfqqfqqfqqf##fff#cffhhfhhfuufuufuusBB`", "``tccffifiifiifiifiifiifif#cffhhfhhfuufuufuusBB`", "``Bccfftfttfttfttf##f##fff#cffiifiifiifiifiisBB`", "``rccffifiifiifiifiifiifif#cffffffffffffffffmBB`", "``rccfffffffffffffffff##ff#cffffffffffffffffmBB`", "``tccfggfvvfwwf#####ff##ff#cffxxfggfwwfffgffmBB`", "``Bbbfiifiifiifiiiiiffiiff#cffffffffffffgfgfmBB`", "``Bbbfffffffffffffffffffff#cffffffffffffgfgfmBB`", "```BBecccccccccccccccccccc#cffvvfyyfwwfffgffmBB`", "`````BBB###################cffffffffffffffffmBB`", "`````BBB###################cffffffffffffffffmBB`", "``````````````````````````#cffttfBBfzzfzzfzzmBB`", "``````````````````````````#cfffifiifiifiififmBB`", "``````````````````````````#cffiifiifiifiifiimBB`", "``````````````````````````#cffttfBBfBBfBBfzzmBB`", "``````````````````````````#cffiifiifiifiifiimBB`", "``````````````````````````#cffiifiifiifiifiimBB`", "``````````````````````````#cffttfBBfBBfBBfzzmBB`", "``````````````````````````#cffiifiifiifiifiimBB`", "``````````````````````````#cfffifiifiifiififmBB`", "``````````````````````````#eeAzzfBBfBBfBBhhhABB`", "```````````````````````````BBfffffffffcfffffB```", "```````````````````````````BBcccccccccccccccB```", "`````````````````````````````BBBBBBBBBBBBBBB````", "````````````````````````````````````````````````", "````````````````````````````````````````````````" }; tiemu-3.03-nogdb+dfsg/pixmaps/logo.xpm000066400000000000000000005064311220314353500177460ustar00rootroot00000000000000/* XPM */ static char * logo_xpm[] = { "180 90 7899 2", " c #FFFFFF", ". c #FEFDFE", "+ c #FCFBFC", "@ c #FAF9FB", "# c #F9F7FA", "$ c #F8F7F9", "% c #F9F8FA", "& c #FBFAFB", "* c #FBFAFC", "= c #F9F7F9", "- c #F8F6F9", "; c #F7F5F8", "> c #F6F4F7", ", c #F7F6F9", "' c #FEFEFF", ") c #FDFDFE", "! c #FCFBFD", "~ c #FAF8FA", "{ c #FAF9FA", "] c #FDFDFD", "^ c #FEFEFE", "/ c #FBFBFC", "( c #F7F5F9", "_ c #F6F4F8", ": c #FCFCFD", "< c #FDFCFD", "[ c #F0ECF2", "} c #E9E4EC", "| c #E5DFE9", "1 c #E4DDE7", "2 c #E4DEE8", "3 c #E6E0EA", "4 c #E8E3EC", "5 c #EAE5ED", "6 c #ECE7EE", "7 c #EDE9F0", "8 c #EDEAF0", "9 c #E6E1EA", "0 c #E4DDE8", "a c #E1DAE6", "b c #DFD8E4", "c c #DED6E2", "d c #DCD5E2", "e c #DDD5E2", "f c #DED6E3", "g c #E1DAE5", "h c #E9E4ED", "i c #EBE7EE", "j c #EBE6EE", "k c #E8E2EB", "l c #E5DEE9", "m c #E3DDE7", "n c #F0EDF2", "o c #F5F3F7", "p c #E7E1EA", "q c #E7E2EA", "r c #E9E3EC", "s c #EFEBF1", "t c #F3F0F5", "u c #F5F2F6", "v c #EEEAF0", "w c #E0DAE5", "x c #DFD7E3", "y c #E0D8E4", "z c #F1EEF3", "A c #F3F1F5", "B c #E8E3EB", "C c #DED7E3", "D c #E2DBE6", "E c #E7E2EB", "F c #F6F3F7", "G c #FBF9FB", "H c #EAE6ED", "I c #F2F0F4", "J c #D2C8D9", "K c #C4B6CD", "L c #BBACC5", "M c #B8A8C2", "N c #BAA9C4", "O c #BDADC6", "P c #C1B2CA", "Q c #C4B6CC", "R c #C7BACF", "S c #C9BDD1", "T c #CBBFD2", "U c #CBBFD3", "V c #CABED2", "W c #C3B5CB", "X c #BDAEC7", "Y c #B9A8C3", "Z c #B5A3BF", "` c #B19FBC", " . c #AE9CBA", ".. c #AD9AB9", "+. c #B09DBB", "@. c #B5A4C0", "#. c #BCADC6", "$. c #C3B5CC", "%. c #C6B9CF", "&. c #C6BACF", "*. c #C6B8CE", "=. c #C5B7CD", "-. c #C3B6CC", ";. c #C2B4CB", ">. c #BFB1C9", ",. c #BAAAC4", "'. c #B8A7C2", "). c #D3C9DA", "!. c #D1C6D8", "~. c #C6B9CE", "{. c #C0B1C9", "]. c #BEAEC7", "^. c #BFB0C8", "/. c #C1B3CA", "(. c #CEC2D5", "_. c #D9D0DE", ":. c #E5DFE8", "<. c #ECE7EF", "[. c #CEC3D5", "}. c #B8A8C3", "|. c #B3A2BE", "1. c #B19EBC", "2. c #AF9DBB", "3. c #B2A0BD", "4. c #D6CCDC", "5. c #E6E0E9", "6. c #F3F0F4", "7. c #F5F3F6", "8. c #DAD2DF", "9. c #CCC0D3", "0. c #B9A9C3", "a. c #B4A3BF", "b. c #AE9BBA", "c. c #AE9BB9", "d. c #B09EBC", "e. c #B6A5C1", "f. c #D0C5D7", "g. c #F2EFF4", "h. c #ECE8EF", "i. c #E0D9E5", "j. c #D2C7D8", "k. c #B6A5C0", "l. c #B6A4C0", "m. c #BEAFC7", "n. c #D9D0DF", "o. c #F1EDF3", "p. c #DCD5E1", "q. c #A48FB2", "r. c #8F759F", "s. c #846796", "t. c #806292", "u. c #816493", "v. c #846896", "w. c #896D9A", "x. c #8C729D", "y. c #9076A0", "z. c #9279A2", "A. c #947BA4", "B. c #957CA4", "C. c #937AA3", "D. c #8B709C", "E. c #856997", "F. c #806393", "G. c #7C5E8F", "H. c #78598C", "I. c #76568A", "J. c #755489", "K. c #745488", "L. c #755589", "M. c #77588B", "N. c #856896", "O. c #8C719D", "P. c #8F76A0", "Q. c #8F75A0", "R. c #8E749E", "S. c #8D739E", "T. c #8C719C", "U. c #8A6F9B", "V. c #876B99", "W. c #826594", "X. c #7F6292", "Y. c #9077A0", "Z. c #A691B3", "`. c #DCD4E1", " + c #D3C9D9", ".+ c #A18BAE", "++ c #886D9A", "@+ c #866A98", "#+ c #8A6E9B", "$+ c #9A83A9", "%+ c #AB98B7", "&+ c #C8BCD0", "*+ c #9D87AC", "=+ c #7B5C8E", "-+ c #78588B", ";+ c #77578B", ">+ c #7A5B8D", ",+ c #A995B5", "'+ c #F4F1F6", ")+ c #9981A8", "!+ c #7C5D8F", "~+ c #755689", "{+ c #7E6191", "]+ c #A18BAF", "^+ c #BCACC5", "/+ c #CFC4D6", "(+ c #A28CAF", "_+ c #7D5F90", ":+ c #7D5E90", "<+ c #876B98", "[+ c #977EA6", "}+ c #CCC1D4", "|+ c #977FA6", "1+ c #5F3A76", "2+ c #552D6E", "3+ c #52296B", "4+ c #522A6B", "5+ c #552D6D", "6+ c #573070", "7+ c #5A3472", "8+ c #5C3774", "9+ c #5E3976", "0+ c #603B77", "a+ c #5D3774", "b+ c #593371", "c+ c #552E6E", "d+ c #4F2669", "e+ c #4D2467", "f+ c #4B2265", "g+ c #4B2165", "h+ c #4C2366", "i+ c #502769", "j+ c #5C3674", "k+ c #5B3573", "l+ c #5A3372", "m+ c #583170", "n+ c #562F6F", "o+ c #542D6D", "p+ c #532B6C", "q+ c #51296B", "r+ c #76578A", "s+ c #9880A7", "t+ c #D2C8D8", "u+ c #8B709B", "v+ c #6F4D84", "w+ c #5F3976", "x+ c #562E6E", "y+ c #67437D", "z+ c #8E739E", "A+ c #9D86AB", "B+ c #9982A8", "C+ c #6C4A82", "D+ c #4F2668", "E+ c #4D2367", "F+ c #4E2568", "G+ c #623D78", "H+ c #BEAFC8", "I+ c #A590B2", "J+ c #68447D", "K+ c #715085", "L+ c #8E749F", "M+ c #AB97B7", "N+ c #6F4E84", "O+ c #4F2769", "P+ c #66437C", "Q+ c #A793B4", "R+ c #9F89AD", "S+ c #725187", "T+ c #42165E", "U+ c #3C0F58", "V+ c #3A0C56", "W+ c #3A0D57", "X+ c #3B0E58", "Y+ c #3D115A", "Z+ c #3E125A", "`+ c #3F135B", " @ c #40145C", ".@ c #40135B", "+@ c #3F125A", "@@ c #3D1059", "#@ c #3A0C57", "$@ c #390B56", "%@ c #380A55", "&@ c #380955", "*@ c #370954", "=@ c #390C56", "-@ c #3C0E58", ";@ c #3E115A", ">@ c #43175E", ",@ c #542C6C", "'@ c #735287", ")@ c #9A82A8", "!@ c #AA97B7", "~@ c #886D99", "{@ c #64407B", "]@ c #41155C", "^@ c #451A60", "/@ c #50286A", "(@ c #613C77", "_@ c #6D4B82", ":@ c #6B4880", "<@ c #4A2064", "[@ c #3B0D57", "}@ c #43185E", "|@ c #532C6C", "1@ c #715086", "2@ c #9B84AA", "3@ c #C5B8CE", "4@ c #D4CBDB", "5@ c #471D62", "6@ c #886C99", "7@ c #795A8C", "8@ c #4C2266", "9@ c #390B55", "0@ c #5D3875", "a@ c #B4A2BF", "b@ c #F4F2F6", "c@ c #836695", "d@ c #593271", "e@ c #360753", "f@ c #330450", "g@ c #320350", "h@ c #330350", "i@ c #340451", "j@ c #320250", "k@ c #32024F", "l@ c #31024F", "m@ c #330451", "n@ c #360853", "o@ c #583271", "p@ c #69467F", "q@ c #3B0E57", "r@ c #350652", "s@ c #340551", "t@ c #491E63", "u@ c #41155D", "v@ c #340552", "w@ c #7D5E8F", "x@ c #AC98B8", "y@ c #69477F", "z@ c #481D62", "A@ c #3C0F59", "B@ c #562F6E", "C@ c #461B60", "D@ c #491F63", "E@ c #6A4880", "F@ c #9C86AB", "G@ c #EFECF2", "H@ c #6D4C83", "I@ c #491F64", "J@ c #5E3A73", "K@ c #7F668F", "L@ c #6A4B7D", "M@ c #58346E", "N@ c #492361", "O@ c #3C1554", "P@ c #380B55", "Q@ c #370953", "R@ c #360852", "S@ c #370A54", "T@ c #380A54", "U@ c #31014F", "V@ c #47215F", "W@ c #6C4D80", "X@ c #7A608B", "Y@ c #8B739A", "Z@ c #9884A5", "`@ c #A393AE", " # c #AC9BB6", ".# c #AE9DB9", "+# c #A898B3", "@# c #9C89A7", "## c #340650", "$# c #390C55", "%# c #3E1755", "&# c #4E2766", "*# c #512B69", "=# c #532C6B", "-# c #522C6A", ";# c #512A69", "># c #532D6B", ",# c #583270", "'# c #5A3A6E", ")# c #654578", "!# c #745587", "~# c #836B92", "{# c #5A3470", "]# c #481E63", "^# c #715186", "/# c #68487B", "(# c #5F4073", "_# c #59376E", ":# c #56306E", "<# c #471E60", "[# c #350753", "}# c #715383", "|# c #8F779E", "1# c #9886A3", "2# c #917B9E", "3# c #4E2765", "4# c #461B61", "5# c #67447D", "6# c #967DA5", "7# c #8D729D", "8# c #5E3875", "9# c #340652", "0# c #390B54", "a# c #6D4E81", "b# c #7E658D", "c# c #9179A0", "d# c #9988A4", "e# c #A392AE", "f# c #A796B1", "g# c #A392AD", "h# c #9784A3", "i# c #634177", "j# c #43185F", "k# c #41145C", "l# c #340550", "m# c #5E3B73", "n# c #795F8A", "o# c #866E95", "p# c #887097", "q# c #7E668D", "r# c #7F678D", "s# c #380B53", "t# c #5C3673", "u# c #5D3775", "v# c #CFC7D4", "w# c #F9F9F9", "x# c #F5F5F5", "y# c #F4F4F4", "z# c #F7F7F7", "A# c #FBFBFB", "B# c #D3CED6", "C# c #30004E", "D# c #8C749B", "E# c #633F79", "F# c #380E52", "G# c #EFEFEF", "H# c #FCFCFC", "I# c #B0A2B9", "J# c #3D1159", "K# c #4D2366", "L# c #573170", "M# c #44195F", "N# c #5E3D73", "O# c #E7E3E9", "P# c #3B0F56", "Q# c #F4F3F4", "R# c #EDEBEF", "S# c #AA96B6", "T# c #AC99B8", "U# c #876C99", "V# c #5B3472", "W# c #41185A", "X# c #B3A4BC", "Y# c #502C67", "Z# c #846795", "`# c #7B5D8E", " $ c #532E6A", ".$ c #BAADC2", "+$ c #765A87", "@$ c #603C77", "#$ c #3D1655", "$$ c #ECEAED", "%$ c #31034E", "&$ c #370854", "*$ c #42165D", "=$ c #866D96", "-$ c #5D3B72", ";$ c #806690", ">$ c #654678", ",$ c #A591B2", "'$ c #31024E", ")$ c #FAFAFA", "!$ c #C5BDCA", "~$ c #66457A", "{$ c #6F5083", "]$ c #816494", "^$ c #6B4981", "/$ c #471C62", "($ c #9984A5", "_$ c #EBE9EC", ":$ c #C6BCCC", "<$ c #B7A6C1", "[$ c #C4B8CB", "}$ c #8C779A", "|$ c #624376", "1$ c #5C3873", "2$ c #431D5B", "3$ c #D4CED7", "4$ c #C0B6C6", "5$ c #BFB5C5", "6$ c #BFB6C5", "7$ c #C1B7C7", "8$ c #C2B9C8", "9$ c #C4BBCA", "0$ c #C7BECD", "a$ c #C9BFCF", "b$ c #CAC0D0", "c$ c #D3CCD7", "d$ c #56336D", "e$ c #AD9EB7", "f$ c #A391AE", "g$ c #CBC3D0", "h$ c #9986A5", "i$ c #68457E", "j$ c #9E88AC", "k$ c #E6E6E6", "l$ c #C2B7C9", "m$ c #F2F1F2", "n$ c #D9D2DD", "o$ c #785E89", "p$ c #F3F2F3", "q$ c #5C3B71", "r$ c #542C6D", "s$ c #5E3975", "t$ c #D8D3DC", "u$ c #B6A9BE", "v$ c #431C5C", "w$ c #3C1355", "x$ c #3F1659", "y$ c #441B5E", "z$ c #431A5D", "A$ c #34084F", "B$ c #2F0549", "C$ c #2F0648", "D$ c #30084A", "E$ c #C0B6C7", "F$ c #56336C", "G$ c #542E6B", "H$ c #3A1254", "I$ c #EDECEE", "J$ c #57336D", "K$ c #492261", "L$ c #705382", "M$ c #6D4C81", "N$ c #8E759D", "O$ c #887197", "P$ c #D6D1D9", "Q$ c #F1F1F1", "R$ c #461E60", "S$ c #D1CAD6", "T$ c #957DA5", "U$ c #DBD4DF", "V$ c #55306D", "W$ c #C9C3CD", "X$ c #E4E4E4", "Y$ c #8E779B", "Z$ c #E6E5E6", "`$ c #745886", " % c #4F2867", ".% c #57306F", "+% c #4A2362", "@% c #D5CCDB", "#% c #D5CDD9", "$% c #E7E4E9", "%% c #320450", "&% c #431C5B", "*% c #E5E3E7", "=% c #512D67", "-% c #745786", ";% c #C7C0CB", ">% c #B7A8C0", ",% c #370B53", "'% c #ECEAEE", ")% c #8B7599", "!% c #95849F", "~% c #431A5C", "{% c #725186", "]% c #896E9A", "^% c #CDC6D2", "/% c #5C3D6F", "(% c #F3F3F3", "_% c #A491AF", ":% c #D0C9D5", "<% c #8A7498", "[% c #3E1757", "}% c #8B719C", "|% c #E9E5ED", "1% c #DAD1DF", "2% c #725287", "3% c #481F63", "4% c #846B93", "5% c #D5CEDA", "6% c #AE9FB8", "7% c #390E54", "8% c #4A2660", "9% c #775A89", "0% c #DCD7DF", "a% c #614075", "b% c #BAAEC1", "c% c #3C1157", "d% c #F1F0F2", "e% c #AD9DB6", "f% c #CAC2D0", "g% c #DBD7DE", "h% c #350951", "i% c #F0EFF1", "j% c #7D618E", "k% c #471C61", "l% c #633E79", "m% c #C3BCC7", "n% c #644578", "o% c #30004D", "p% c #B7ABBE", "q% c #BEB3C6", "r% c #A18FAC", "s% c #F7F6F6", "t% c #D8D8D8", "u% c #BAB9BB", "v% c #9C989F", "w% c #756B7D", "x% c #503A5F", "y% c #39174F", "z% c #32074D", "A% c #30024E", "B% c #C1B5C8", "C% c #E8E6E9", "D% c #CEC7D3", "E% c #C4BDC9", "F% c #DAD6DD", "G% c #795D8A", "H% c #F6F6F6", "I% c #F1EEF2", "J% c #441E5C", "K% c #795C8B", "L% c #D8D1DD", "M% c #F0EEF1", "N% c #C0B4C7", "O% c #BEB0C7", "P% c #C7C0CC", "Q% c #D6CFDB", "R% c #E3E2E4", "S% c #F8F8F8", "T% c #350751", "U% c #917B9F", "V% c #866F94", "W% c #8A7796", "X% c #F1F0F1", "Y% c #360952", "Z% c #41195B", "`% c #937EA0", " & c #6B517B", ".& c #AC9DB5", "+& c #BDB2C4", "@& c #6A477F", "#& c #BFB5C6", "$& c #6A4A7D", "%& c #C3B7CA", "&& c #31084A", "*& c #CCC4D1", "=& c #AFA0B8", "-& c #B4A5BD", ";& c #EDE8EF", ">& c #E9E8EA", ",& c #C7C6C8", "'& c #A8A8AA", ")& c #87868C", "!& c #616065", "~& c #45434A", "{& c #3F3E44", "]& c #38383D", "^& c #2F2E37", "/& c #2B2436", "(& c #2C193C", "_& c #2E0D45", ":& c #2F054A", "<& c #30024D", "[& c #4C2862", "}& c #4F2B66", "|& c #380F53", "1& c #EDEAEE", "2& c #7B638A", "3& c #7B618C", "4& c #9B87A7", "5& c #C4BAC9", "6& c #E4E1E7", "7& c #4B2663", "8& c #32054F", "9& c #42175D", "0& c #7B5E8D", "a& c #D3CCD8", "b& c #8D759C", "c& c #30014D", "d& c #3E1557", "e& c #55326B", "f& c #705282", "g& c #340850", "h& c #C1B8C6", "i& c #7D668B", "j& c #F7F6F8", "k& c #5C3D70", "l& c #735784", "m& c #7F678F", "n& c #664978", "o& c #EFEEEF", "p& c #674A79", "q& c #F6F5F6", "r& c #3D0F59", "s& c #C0B2C9", "t& c #6C4C7F", "u& c #C5B9CC", "v& c #370F51", "w& c #E2DEE5", "x& c #A290AC", "y& c #EDEDED", "z& c #CECECF", "A& c #828087", "B& c #59585E", "C& c #414146", "D& c #393A3F", "E& c #303135", "F& c #2B2D30", "G& c #292B2E", "H& c #2B2B31", "I& c #2B2A30", "J& c #292930", "K& c #2A2333", "L& c #291736", "M& c #2D0F42", "N& c #310A4B", "O& c #30044D", "P& c #32034F", "Q& c #30014E", "R& c #E0DDE1", "S& c #330650", "T& c #31014E", "U& c #30024C", "V& c #E9E9EA", "W& c #2E024A", "X& c #3D1258", "Y& c #57366B", "Z& c #7C5F8E", "`& c #C9C2CE", " * c #9682A3", ".* c #340651", "+* c #F1EFF2", "@* c #E5E2E6", "#* c #856D94", "$* c #947FA1", "%* c #BDB3C4", "&* c #BFB4C6", "** c #C4BCCA", "=* c #CEC7D2", "-* c #897397", ";* c #705381", ">* c #785D8A", ",* c #6A4B7E", "'* c #CABED1", ")* c #3C1356", "!* c #F2F2F2", "~* c #9984A7", "{* c #CCC5D1", "]* c #E9E6EB", "^* c #623E79", "/* c #CDC1D4", "(* c #ECEBEB", "_* c #C1C0C0", ":* c #9A999B", "<* c #6C6B6E", "[* c #48484C", "}* c #3C3D41", "|* c #333438", "1* c #2C2D31", "2* c #2A2C2F", "3* c #282A2C", "4* c #28292B", "5* c #272A2C", "6* c #252A2C", "7* c #272A2D", "8* c #2B2E32", "9* c #2B2C32", "0* c #2A252D", "a* c #29252E", "b* c #29202F", "c* c #271A32", "d* c #311944", "e* c #38154F", "f* c #31094B", "g* c #32064D", "h* c #30034D", "i* c #31034F", "j* c #D6D4D8", "k* c #E4E0E7", "l* c #E9E5EC", "m* c #30044B", "n* c #380D53", "o* c #58396C", "p* c #7D608F", "q* c #D0C5D6", "r* c #7F658F", "s* c #705680", "t* c #6A497F", "u* c #614076", "v* c #68467D", "w* c #755A86", "x* c #8E779C", "y* c #59356F", "z* c #AE9DB8", "A* c #EAE8EB", "B* c #694B7B", "C* c #F9F9FA", "D* c #41195A", "E* c #42195B", "F* c #856D95", "G* c #C9C1CF", "H* c #B5A8BD", "I* c #A08FAB", "J* c #67487A", "K* c #CBC6CE", "L* c #401759", "M* c #8E799C", "N* c #D7D0DB", "O* c #E5E0E8", "P* c #CDC2D3", "Q* c #EAE6EC", "R* c #F3F2F5", "S* c #F6F5F7", "T* c #C2C1C3", "U* c #989699", "V* c #666568", "W* c #424348", "X* c #3B3C40", "Y* c #2F3135", "Z* c #2C2F33", "`* c #2B2E31", " = c #292C2E", ".= c #2C2E32", "+= c #282B2D", "@= c #2E3134", "#= c #42454A", "$= c #505156", "%= c #605F66", "&= c #38373D", "*= c #27272C", "== c #27232A", "-= c #29232F", ";= c #2D2536", ">= c #30203F", ",= c #341A46", "'= c #39194F", ")= c #3F1A57", "!= c #360F4E", "~= c #2F0749", "{= c #31064D", "]= c #D2CDD5", "^= c #E6E1E9", "/= c #33074E", "(= c #5A3B6D", "_= c #7E6190", ":= c #B2A3BB", "<= c #8D769B", "[= c #745986", "}= c #D7D3DA", "|= c #7D658C", "1= c #D7D1DA", "2= c #897098", "3= c #4F2E64", "4= c #FAFAFB", "5= c #F4F3F5", "6= c #624474", "7= c #3E1558", "8= c #614174", "9= c #D5D0D8", "0= c #512C69", "a= c #856F92", "b= c #E0DBE3", "c= c #340950", "d= c #391651", "e= c #3F284F", "f= c #42384B", "g= c #414047", "h= c #434145", "i= c #424344", "j= c #444747", "k= c #48494A", "l= c #4E4F50", "m= c #565859", "n= c #646566", "o= c #707173", "p= c #808081", "q= c #959495", "r= c #A7A6A7", "s= c #B9B8B9", "t= c #D0CFD0", "u= c #454449", "v= c #333439", "w= c #2D3033", "x= c #2C2F32", "y= c #2D2F33", "z= c #2B2D31", "A= c #2A2B2E", "B= c #292B2F", "C= c #292D2F", "D= c #414348", "E= c #494A51", "F= c #5A5960", "G= c #69676F", "H= c #616069", "I= c #6D6C73", "J= c #4F4E56", "K= c #3C3C43", "L= c #35353B", "M= c #313036", "N= c #37353C", "O= c #46444E", "P= c #645F6A", "Q= c #78727D", "R= c #7E7385", "S= c #81708B", "T= c #7E698D", "U= c #7B628B", "V= c #4D305F", "W= c #321247", "X= c #2F0B48", "Y= c #370C51", "Z= c #D4CBDA", "`= c #C8BECF", " - c #E4DFE7", ".- c #34094F", "+- c #2F024B", "@- c #5B3C6F", "#- c #7F6291", "$- c #C1B8C7", "%- c #4B2761", "&- c #7F678E", "*- c #EBE9ED", "=- c #F3F2F4", "-- c #C1B6C8", ";- c #7D648D", ">- c #7A5F8B", ",- c #DDD8E0", "'- c #836A93", ")- c #59396D", "!- c #E1DCE4", "~- c #816792", "{- c #DEDDDE", "]- c #360A51", "^- c #431F59", "/- c #5E476D", "(- c #716576", "_- c #878288", ":- c #8B898B", "<- c #8F8D8E", "[- c #8A8789", "}- c #8B898A", "|- c #878587", "1- c #868386", "2- c #828082", "3- c #7C7B7D", "4- c #797A7B", "5- c #747476", "6- c #616263", "7- c #454648", "8- c #484649", "9- c #525053", "0- c #767376", "a- c #565557", "b- c #515359", "c- c #54565D", "d- c #37383D", "e- c #5F6167", "f- c #5A5E63", "g- c #606167", "h- c #636369", "i- c #4E5054", "j- c #4B4D52", "k- c #3F4247", "l- c #323339", "m- c #33313A", "n- c #38363F", "o- c #46454C", "p- c #66636B", "q- c #7A777E", "r- c #858287", "s- c #ACA9AD", "t- c #B2AFB2", "u- c #B1AEB2", "v- c #BDBABF", "w- c #B0ABB4", "x- c #C7BFCB", "y- c #A59AAD", "z- c #A79AB0", "A- c #7B6985", "B- c #392349", "C- c #2C1042", "D- c #360F4F", "E- c #D5CBDB", "F- c #BEB2C6", "G- c #51296A", "H- c #370C52", "I- c #F2EFF3", "J- c #806492", "K- c #7C628C", "L- c #D8D2DC", "M- c #350851", "N- c #F2F1F3", "O- c #D3CED7", "P- c #67497A", "Q- c #6F5380", "R- c #EBEAEC", "S- c #775C88", "T- c #C0B5C6", "U- c #9481A0", "V- c #55306C", "W- c #E1E1E1", "X- c #DAD5DD", "Y- c #380C53", "Z- c #47235D", "`- c #70597E", " ; c #857A8C", ".; c #A4A0A7", "+; c #979497", "@; c #A8A7A9", "#; c #A5A4A7", "$; c #A09FA1", "%; c #A7A5A7", "&; c #A19FA2", "*; c #908C8E", "=; c #918D8F", "-; c #928F91", ";; c #969496", ">; c #989698", ",; c #908F91", "'; c #57595B", "); c #4F4D51", "!; c #757376", "~; c #514F52", "{; c #BEBDBF", "]; c #414046", "^; c #75767D", "/; c #A1A1A9", "(; c #3A3C42", "_; c #4B4E52", ":; c #3B3E43", "<; c #35353A", "[; c #3A3A3F", "}; c #4F4D54", "|; c #878489", "1; c #979599", "2; c #A8A5A9", "3; c #C5C3C6", "4; c #D6D4D6", "5; c #B3B1B5", "6; c #B6B4B7", "7; c #BAB8BB", "8; c #BCBABC", "9; c #CAC8CA", "0; c #B3B0B4", "a; c #C9C6CA", "b; c #D1CFD3", "c; c #CBC6CD", "d; c #CDC7D0", "e; c #B0A7B5", "f; c #493952", "g; c #2C1440", "h; c #310C4A", "i; c #360A52", "j; c #D5CDDA", "k; c #B5A9BD", "l; c #3F125B", "m; c #E6E2E9", "n; c #ECE9ED", "o; c #54306A", "p; c #8A7497", "q; c #957FA2", "r; c #9B86A9", "s; c #9E88AB", "t; c #9B85A9", "u; c #9782A5", "v; c #947EA1", "w; c #907B9E", "x; c #8F7A9C", "y; c #F2F0F3", "z; c #664779", "A; c #5D3C72", "B; c #9C88A8", "C; c #9B88A7", "D; c #9885A5", "E; c #441D5D", "F; c #5E3F72", "G; c #4D2665", "H; c #E1DFE2", "I; c #4D2964", "J; c #431B5D", "K; c #90799E", "L; c #370B52", "M; c #401D57", "N; c #5B4368", "O; c #6F6375", "P; c #7C767D", "Q; c #827F81", "R; c #817E80", "S; c #838082", "T; c #848183", "U; c #868385", "V; c #858284", "W; c #8F8C8E", "X; c #918D90", "Y; c #949093", "Z; c #979496", "`; c #9A999A", " > c #595A5C", ".> c #4F4F50", "+> c #8E8C8F", "@> c #48474D", "#> c #2D2E32", "$> c #3B3D42", "%> c #3F4047", "&> c #444448", "*> c #5E5D61", "=> c #7D7C7F", "-> c #939194", ";> c #A19FA0", ">> c #B3B1B3", ",> c #BEBCBE", "'> c #BFBDBF", ")> c #D7D5D6", "!> c #CDCBCD", "~> c #C4C2C5", "{> c #C2C0C3", "]> c #C6C4C6", "^> c #D4D3D4", "/> c #D1D0D1", "(> c #DAD9DA", "_> c #E9E8E9", ":> c #F2F1F1", "<> c #EDEBED", "[> c #D4CED6", "}> c #64566B", "|> c #321B44", "1> c #2E0B46", "2> c #D6D3D7", "3> c #AFA3B7", "4> c #6E4D83", "5> c #3C1057", "6> c #E7E4E8", "7> c #5C3C6F", "8> c #9883A6", "9> c #634377", "0> c #D1CAD5", "a> c #674B79", "b> c #B2A5BB", "c> c #7A5E8B", "d> c #D0CAD4", "e> c #9580A1", "f> c #F0F0F0", "g> c #45225B", "h> c #441B5D", "i> c #E5E5E5", "j> c #DBD6DE", "k> c #5A4368", "l> c #6D6173", "m> c #7A757B", "n> c #807E7F", "o> c #828081", "p> c #858283", "q> c #858384", "r> c #8C898B", "s> c #8D8A8B", "t> c #8F8B8D", "u> c #918E90", "v> c #939093", "w> c #9A989A", "x> c #8F8E91", "y> c #747274", "z> c #4F4F51", "A> c #8C8B8C", "B> c #504D58", "C> c #2E3036", "D> c #48484F", "E> c #CBCACB", "F> c #B7B5B9", "G> c #C6C5C7", "H> c #B5B3B6", "I> c #C9C7C8", "J> c #CBC9C9", "K> c #C0BEC0", "L> c #BBB9BB", "M> c #D6D5D6", "N> c #DCDBDC", "O> c #DBDBDB", "P> c #E9E8E8", "Q> c #F4F3F3", "R> c #F3F2F2", "S> c #F1EFF0", "T> c #E2DDE3", "U> c #86798C", "V> c #3B2249", "W> c #32064E", "X> c #DFDCE0", "Y> c #ACA0B3", "Z> c #6E4C83", "`> c #31034D", " , c #EAE9EA", "., c #3E1359", "+, c #E3E1E4", "@, c #5B3C6E", "#, c #7F698D", "$, c #A191AB", "%, c #AD9FB6", "&, c #C9C0CE", "*, c #F3F3F4", "=, c #B3A6BB", "-, c #694B7D", ";, c #876F96", ">, c #DEDAE1", ",, c #4A2661", "', c #451C5E", "), c #B8ACC0", "!, c #715483", "~, c #360C51", "{, c #432256", "], c #54425E", "^, c #676166", "/, c #72776C", "(, c #767E6E", "_, c #788170", ":, c #7A816F", "<, c #7B8270", "[, c #7B8372", "}, c #7B8371", "|, c #7D8673", "1, c #7C8673", "2, c #7D8572", "3, c #7D8574", "4, c #7E8675", "5, c #838A78", "6, c #7B7C7A", "7, c #A7A6A9", "8, c #7A787B", "9, c #4F4E50", "0, c #8A888A", "a, c #57555D", "b, c #313238", "c, c #35363B", "d, c #D8D7D8", "e, c #C4C3C5", "f, c #C7C5C8", "g, c #B4B2B5", "h, c #CECDCD", "i, c #DAD8D9", "j, c #F5F5F4", "k, c #DDDBDC", "l, c #DBDADB", "m, c #DFDAE0", "n, c #A699AD", "o, c #432952", "p, c #2F0A47", "q, c #30044C", "r, c #EAE7EB", "s, c #AB9FB2", "t, c #33054F", "u, c #EEEEEE", "v, c #40155B", "w, c #E1DEE2", "x, c #593A6D", "y, c #826D90", "z, c #A89AB1", "A, c #EEEBF0", "B, c #705283", "C, c #C1B7C8", "D, c #6F5381", "E, c #684B7A", "F, c #421B5A", "G, c #5D4070", "H, c #5B3970", "I, c #40185A", "J, c #56326D", "K, c #CEC5D4", "L, c #6F5281", "M, c #E1DCE3", "N, c #462459", "O, c #53405B", "P, c #736E6F", "Q, c #7C8274", "R, c #777F6B", "S, c #7F8773", "T, c #828975", "U, c #79816E", "V, c #7C8370", "W, c #7B826F", "X, c #747B69", "Y, c #717966", "Z, c #727969", "`, c #979F87", " ' c #7B8076", ".' c #A9A8AB", "+' c #88878A", "@' c #504E50", "#' c #888789", "$' c #5B595C", "%' c #36373C", "&' c #2F3035", "*' c #ADABAF", "=' c #DCDCDC", "-' c #DFDFDF", ";' c #EEEDED", ">' c #F5F4F4", ",' c #F6F6F5", "'' c #F1F0F0", ")' c #C0BEBF", "!' c #B0AFB0", "~' c #DFDEDF", "{' c #F2F2F1", "]' c #E6E5E5", "^' c #AFACAE", "/' c #B8B5B7", "(' c #F0EEEF", "_' c #533862", ":' c #320C4A", "<' c #2F034C", "[' c #ACA0B4", "}' c #6C4A81", "|' c #350852", "1' c #57386B", "2' c #867194", "3' c #AC9EB5", "4' c #AFA0B9", "5' c #624275", "6' c #897297", "7' c #A898B2", "8' c #DCD8DF", "9' c #A594AF", "0' c #806790", "a' c #A697B0", "b' c #DEDAE0", "c' c #C1B6C7", "d' c #512D68", "e' c #E9E7EB", "f' c #5D3E6F", "g' c #492163", "h' c #E2DFE3", "i' c #6E5180", "j' c #360A50", "k' c #401E54", "l' c #513D5A", "m' c #6E686D", "n' c #676B60", "o' c #707967", "p' c #757C69", "q' c #6D7461", "r' c #727967", "s' c #6E7464", "t' c #606757", "u' c #6E7564", "v' c #666E5D", "w' c #757D6C", "x' c #64695B", "y' c #8A927E", "z' c #879079", "A' c #7F8477", "B' c #A9A7AD", "C' c #8B8A8D", "D' c #858487", "E' c #5D5B5E", "F' c #404145", "G' c #838086", "H' c #F7F7F6", "I' c #F0EFEF", "J' c #D7D6D7", "K' c #D3D2D3", "L' c #A8A6A8", "M' c #BFBEBF", "N' c #A4A2A4", "O' c #A9A6A9", "P' c #AAA7AA", "Q' c #918E91", "R' c #969395", "S' c #B6B3B5", "T' c #F0EEF0", "U' c #E1DBE3", "V' c #BBADC3", "W' c #654975", "X' c #350F4D", "Y' c #B0A4B7", "Z' c #5A3471", "`' c #E1DFE3", " ) c #58356D", ".) c #8B7699", "+) c #AB9DB4", "@) c #A794B3", "#) c #9581A2", "$) c #522E68", "%) c #E0DCE2", "&) c #4E2A65", "*) c #DFDBE2", "=) c #755B86", "-) c #5C3A71", ";) c #CAC2CF", ">) c #4A2462", ",) c #9680A3", "') c #DFDAE1", ")) c #775C87", "!) c #66447B", "~) c #6D4D80", "{) c #F9F8F9", "]) c #E7E7E7", "^) c #533F5D", "/) c #666166", "() c #6F7369", "_) c #747D6D", ":) c #6C7563", "<) c #747C6A", "[) c #747B6B", "}) c #656D5C", "|) c #6C7664", "1) c #6F7668", "2) c #6E7465", "3) c #6D7564", "4) c #747E69", "5) c #949E88", "6) c #83887B", "7) c #A9A8AC", "8) c #919194", "9) c #514F51", "0) c #818082", "a) c #626062", "b) c #48494D", "c) c #58535C", "d) c #EBEBEB", "e) c #F6F7F5", "f) c #F8F9F7", "g) c #F6F5F5", "h) c #B0ADB0", "i) c #A29FA1", "j) c #A29FA2", "k) c #ACAAAC", "l) c #A19FA1", "m) c #BAB8BA", "n) c #BBBABB", "o) c #AAA9AB", "p) c #A5A3A5", "q) c #827F82", "r) c #9E9B9E", "s) c #908D91", "t) c #C5C4C6", "u) c #EFEDEF", "v) c #DFD9E1", "w) c #BAABC2", "x) c #755A87", "y) c #381050", "z) c #30034C", "A) c #42195C", "B) c #B4A8BC", "C) c #39114F", "D) c #3D1950", "E) c #3C1750", "F) c #370D4F", "G) c #32054E", "H) c #3A0E55", "I) c #421E58", "J) c #E4E2E6", "K) c #917C9F", "L) c #A798B0", "M) c #B8ADBF", "N) c #C9BFCE", "O) c #E9E7EA", "P) c #4B2662", "Q) c #B6AABE", "R) c #BEB3C5", "S) c #674A7A", "T) c #C5BFCA", "U) c #4A2461", "V) c #BEB4C4", "W) c #5F3E74", "X) c #634576", "Y) c #613F76", "Z) c #775D88", "`) c #D8D3DB", " ! c #755986", ".! c #B8ACBF", "+! c #A190AD", "@! c #A291AC", "#! c #EAE8EC", "$! c #6E5280", "%! c #E8E8E8", "&! c #31044D", "*! c #370B51", "=! c #442158", "-! c #5A4663", ";! c #726D6F", ">! c #818577", ",! c #8C9380", "'! c #79826F", ")! c #808976", "!! c #727B67", "~! c #88907D", "{! c #86907B", "]! c #858F7A", "^! c #868F7B", "/! c #868E7A", "(! c #8A937D", "_! c #8B957E", ":! c #9EA78E", "~ c #787779", ",~ c #6D6B6D", "'~ c #59575B", ")~ c #313137", "!~ c #B1ADB2", "~~ c #F3F3F2", "{~ c #D8D7D7", "]~ c #848182", "^~ c #989598", "/~ c #99979A", "(~ c #9A979A", "_~ c #B3B1B2", ":~ c #B1AFB0", "<~ c #AAA9AC", "[~ c #CAC9CA", "}~ c #EEEBEE", "|~ c #B1A1BB", "1~ c #795B8B", "2~ c #31044E", "3~ c #624277", "4~ c #C2B6C9", "5~ c #360E4E", "6~ c #421F58", "7~ c #3E1954", "8~ c #390F53", "9~ c #49255F", "0~ c #A08DAC", "a~ c #9C87AA", "b~ c #EAE9EB", "c~ c #59366F", "d~ c #B7AABF", "e~ c #56326C", "f~ c #3C1257", "g~ c #F8F7F8", "h~ c #3A0F55", "i~ c #E2DFE5", "j~ c #340750", "k~ c #614175", "l~ c #E1DEE3", "m~ c #A38FAF", "n~ c #4B2562", "o~ c #6B4C7F", "p~ c #C7BECC", "q~ c #C5BBCB", "r~ c #9D8BA9", "s~ c #765E85", "t~ c #8D799A", "u~ c #A897B2", "v~ c #BDB1C5", "w~ c #360953", "x~ c #432058", "y~ c #5A4564", "z~ c #736D71", "A~ c #7B7D72", "B~ c #6F7467", "C~ c #707767", "D~ c #88917D", "E~ c #88917E", "F~ c #89907C", "G~ c #89907D", "H~ c #8A927D", "I~ c #8C947D", "J~ c #8B957D", "K~ c #8C957F", "L~ c #8A937C", "M~ c #9DA78F", "N~ c #828977", "O~ c #A6A4A8", "P~ c #9E9CA0", "Q~ c #6F6E70", "R~ c #7F7D7C", "S~ c #5D5A5D", "T~ c #3E3E41", "U~ c #868189", "V~ c #F4F4F3", "W~ c #F8F8F7", "X~ c #E9E9E9", "Y~ c #8E8A8D", "Z~ c #9E9B9D", "`~ c #A6A4A6", " { c #A8A6A9", ".{ c #A6A4A7", "+{ c #BBB8BC", "@{ c #C9C7CA", "#{ c #EDECEC", "${ c #DDDBDD", "%{ c #D3D0D4", "&{ c #C1B9C5", "*{ c #9B88A5", "={ c #6F5182", "-{ c #492062", ";{ c #32044F", ">{ c #765A88", ",{ c #C9BED0", "'{ c #300748", "){ c #300B47", "!{ c #2F0946", "~{ c #30054A", "{{ c #552E6D", "]{ c #786285", "^{ c #31064C", "/{ c #4C2664", "({ c #A799B0", "_{ c #907A9D", ":{ c #866E96", "<{ c #A290AD", "[{ c #6A4D7C", "}{ c #522D69", "|{ c #907A9E", "1{ c #664A77", "2{ c #877494", "3{ c #8D779A", "4{ c #E0DDE2", "5{ c #390D55", "6{ c #442059", "7{ c #5C4667", "8{ c #6C666C", "9{ c #797B72", "0{ c #8C9383", "a{ c #79806F", "b{ c #8C9481", "c{ c #8B947F", "d{ c #89937F", "e{ c #8A9480", "f{ c #8D9883", "g{ c #8E9781", "h{ c #8F9882", "i{ c #8C9480", "j{ c #9FA68D", "k{ c #848D79", "l{ c #A5A4A8", "m{ c #A2A2A6", "n{ c #4F4D50", "o{ c #6C6B6D", "p{ c #A09E9F", "q{ c #646163", "r{ c #47454B", "s{ c #2B2B30", "t{ c #5A525C", "u{ c #EFEFEE", "v{ c #E0DFE0", "w{ c #D1CFD1", "x{ c #E2E1E1", "y{ c #C2BFC3", "z{ c #8C8493", "A{ c #5D4A6B", "B{ c #3B1B50", "C{ c #30064A", "D{ c #887296", "E{ c #F3F1F4", "F{ c #BDB3C3", "G{ c #33064F", "H{ c #370F50", "I{ c #3A1652", "J{ c #3A1552", "K{ c #350C50", "L{ c #B6A7BF", "M{ c #705183", "N{ c #725386", "O{ c #705184", "P{ c #654878", "Q{ c #604372", "R{ c #786088", "S{ c #B2A3BA", "T{ c #A89BB1", "U{ c #D3CBD7", "V{ c #533069", "W{ c #A999B2", "X{ c #D3CDD7", "Y{ c #C5BBCC", "Z{ c #8B749A", "`{ c #9783A4", " ] c #F4F4F5", ".] c #3D1754", "+] c #3D1953", "@] c #432B50", "#] c #615961", "$] c #707269", "%] c #757B6D", "&] c #62695A", "*] c #757E6B", "=] c #747D69", "-] c #757F6A", ";] c #75806C", ">] c #717D69", ",] c #747C69", "'] c #767E6B", ")] c #8A917C", "!] c #A7A5AA", "~] c #ABAAAE", "{] c #4D4B4D", "]] c #656466", "^] c #686668", "/] c #514E54", "(] c #2D2D32", "_] c #3D3841", ":] c #D5D3D6", "<] c #ADAAAD", "[] c #BDBBBF", "}] c #B1AFB3", "|] c #8E8D91", "1] c #777679", "2] c #4E4B51", "3] c #2E2A31", "4] c #26212B", "5] c #251B2F", "6] c #271337", "7] c #2A0A41", "8] c #2E0449", "9] c #9F8CAA", "0] c #3A1054", "a] c #3B1554", "b] c #390E53", "c] c #330550", "d] c #441C5D", "e] c #411B59", "f] c #D4CFD7", "g] c #CBC7CE", "h] c #C8C2CC", "i] c #CAC0D1", "j] c #C8C3CB", "k] c #CCC7CF", "l] c #D2CED5", "m] c #E9E8EB", "n] c #AFA1B8", "o] c #EEECF0", "p] c #D0C9D4", "q] c #826893", "r] c #C2B8C9", "s] c #3C1156", "t] c #7C608D", "u] c #C3BAC8", "v] c #BFB7C5", "w] c #604074", "x] c #40165A", "y] c #482360", "z] c #350950", "A] c #3C1853", "B] c #4E375B", "C] c #5D555F", "D] c #676964", "E] c #686D62", "F] c #5E6658", "G] c #838B77", "H] c #8A947D", "I] c #8A927C", "J] c #88927B", "K] c #848E78", "L] c #858E79", "M] c #868F79", "N] c #87907B", "O] c #89917B", "P] c #8B937F", "Q] c #A6A4A9", "R] c #B2B1B5", "S] c #48484A", "T] c #5E5D5F", "U] c #E3E2E3", "V] c #6E6B6E", "W] c #585559", "X] c #2E2F34", "Y] c #ACA8AD", "Z] c #EEEEED", "`] c #DBDADC", " ^ c #CECDCF", ".^ c #909093", "+^ c #6D6C6F", "@^ c #4F4F53", "#^ c #2B2830", "$^ c #242029", "%^ c #201D26", "&^ c #1F1C25", "*^ c #1F1B24", "=^ c #201B25", "-^ c #221928", ";^ c #26152E", ">^ c #280F37", ",^ c #2B0941", "'^ c #2E044A", ")^ c #B5A8BE", "!^ c #3B1155", "~^ c #3B1154", "{^ c #401957", "]^ c #411A58", "^^ c #3A0F54", "/^ c #715285", "(^ c #3B1553", "_^ c #927D9F", ":^ c #765B87", "<^ c #4D2765", "[^ c #7E648E", "}^ c #BFB3C6", "|^ c #E4E1E5", "1^ c #E3DEE6", "2^ c #DDD9E0", "3^ c #401D56", "4^ c #5A4465", "5^ c #716C71", "6^ c #818578", "7^ c #89917D", "8^ c #77806E", "9^ c #7F8776", "0^ c #868F78", "a^ c #858F79", "b^ c #8C937F", "c^ c #A8A6AB", "d^ c #B8B8BE", "e^ c #47474A", "f^ c #565457", "g^ c #787677", "h^ c #5B595D", "i^ c #38383E", "j^ c #28292C", "k^ c #827D84", "l^ c #A9A7AA", "m^ c #E3E3E3", "n^ c #AFAFAF", "o^ c #848487", "p^ c #565659", "q^ c #313236", "r^ c #232529", "s^ c #212227", "t^ c #201F26", "u^ c #231D26", "v^ c #1D1B24", "w^ c #1C1B24", "x^ c #1D1A24", "y^ c #1E1C24", "z^ c #231F2A", "A^ c #241E2D", "B^ c #251731", "C^ c #281036", "D^ c #30114B", "E^ c #350E55", "F^ c #7B618B", "G^ c #AD9CB8", "H^ c #AD9DB8", "I^ c #34074F", "J^ c #391052", "K^ c #3E1955", "L^ c #380F52", "M^ c #9885A3", "N^ c #A493AE", "O^ c #9681A3", "P^ c #6E5081", "Q^ c #421C5A", "R^ c #B6A6C1", "S^ c #694A7D", "T^ c #8C749C", "U^ c #9785A3", "V^ c #A090AB", "W^ c #A695B0", "X^ c #A695B1", "Y^ c #A191AC", "Z^ c #9887A3", "`^ c #90789F", " / c #502B68", "./ c #482061", "+/ c #9E8BAA", "@/ c #B3A2BD", "#/ c #9886A2", "$/ c #94829F", "%/ c #9F8EA9", "&/ c #AE9EB9", "*/ c #B4A3BE", "=/ c #B09FBB", "-/ c #A18EAC", ";/ c #380C52", ">/ c #380C54", ",/ c #9882A4", "'/ c #856C94", ")/ c #350651", "!/ c #462559", "~/ c #5D4B66", "{/ c #736F71", "]/ c #84897B", "^/ c #8D9581", "// c #7A846F", "(/ c #8C967F", "_/ c #78826F", ":/ c #838C77", "( c #475261", ",( c #64798D", "'( c #697C9C", ")( c #3B3C53", "!( c #3A4056", "~( c #5F7795", "{( c #6E839E", "]( c #63718C", "^( c #4C5276", "/( c #2B1C3D", "(( c #280F3B", "_( c #2B0A46", ":( c #32044E", "<( c #370A52", "[( c #47215D", "}( c #593A68", "|( c #695173", "1( c #6B5373", "2( c #5D3F6B", "3( c #4B265F", "4( c #3F1557", "5( c #390C54", "6( c #370A53", "7( c #31024D", "8( c #2F004C", "9( c #30034F", "0( c #300351", "a( c #300451", "b( c #2F0451", "c( c #2F0551", "d( c #2F0552", "e( c #300452", "f( c #310552", "g( c #390A55", "h( c #451B5F", "i( c #3D1358", "j( c #370C53", "k( c #340851", "l( c #31054D", "m( c #360C50", "n( c #3A1153", "o( c #421C58", "p( c #4E2F60", "q( c #614C6A", "r( c #6D636D", "s( c #646361", "t( c #74796B", "u( c #73796A", "v( c #7B836F", "w( c #949C86", "x( c #959E8A", "y( c #697361", "z( c #949D88", "A( c #959D86", "B( c #939C86", "C( c #929D86", "D( c #939D86", "E( c #9CA58D", "F( c #8A927F", "G( c #BEBDC3", "H( c #535356", "I( c #CFCFCF", "J( c #6D6A6C", "K( c #535256", "L( c #282B2F", "M( c #252427", "N( c #252428", "O( c #262629", "P( c #202427", "Q( c #232229", "R( c #302A31", "S( c #2E2C30", "T( c #3E4758", "U( c #4D5C72", "V( c #5B6F84", "W( c #3D475A", "X( c #2D303D", "Y( c #607A96", "Z( c #7D92AB", "`( c #8594AD", " _ c #65789E", "._ c #3E465E", "+_ c #1F1D2B", "@_ c #262D41", "#_ c #1B2134", "$_ c #191E2A", "%_ c #1E1D2B", "&_ c #31283D", "*_ c #402D50", "=_ c #442E5E", "-_ c #42215D", ";_ c #3B1455", ">_ c #370E52", ",_ c #390F54", "'_ c #31074B", ")_ c #2E0448", "!_ c #3D1456", "~_ c #3E1657", "{_ c #421A5A", "]_ c #451E5C", "^_ c #4C2960", "/_ c #5D3F6A", "(_ c #725D77", "__ c #827481", ":_ c #827582", "<_ c #79667C", "[_ c #64496F", "}_ c #533264", "|_ c #46215C", "1_ c #451D5B", "2_ c #411859", "3_ c #3F1856", "4_ c #46205C", "5_ c #47215C", "6_ c #441E5A", "7_ c #461F5C", "8_ c #401858", "9_ c #42195A", "0_ c #411759", "a_ c #401758", "b_ c #3F1658", "c_ c #3F1657", "d_ c #3B1253", "e_ c #3B1254", "f_ c #3B1355", "g_ c #2F0649", "h_ c #32074C", "i_ c #32084C", "j_ c #2B0245", "k_ c #340B4E", "l_ c #3D1556", "m_ c #3F1757", "n_ c #330B4D", "o_ c #2F0951", "p_ c #300B57", "q_ c #33094E", "r_ c #2E074F", "s_ c #310C58", "t_ c #310D59", "u_ c #300E5A", "v_ c #2F0F5A", "w_ c #2E115B", "x_ c #2D105A", "y_ c #2D0F59", "z_ c #2F0D58", "A_ c #310D58", "B_ c #320B53", "C_ c #370D52", "D_ c #340A4E", "E_ c #360C4F", "F_ c #380E4F", "G_ c #613C78", "H_ c #4A2165", "I_ c #623D79", "J_ c #9C85AA", "K_ c #9177A1", "L_ c #4A2164", "M_ c #461F5F", "N_ c #431F5C", "O_ c #3E1C56", "P_ c #37174F", "Q_ c #381751", "R_ c #371451", "S_ c #371251", "T_ c #361150", "U_ c #3C1754", "V_ c #34104C", "W_ c #300C47", "X_ c #37134E", "Y_ c #3E1B52", "Z_ c #3F1E53", "`_ c #432454", " : c #492E57", ".: c #55415E", "+: c #635866", "@: c #73706E", "#: c #7F8375", "$: c #858C78", "%: c #888F7B", "&: c #8B907B", "*: c #878D7A", "=: c #848A79", "-: c #818877", ";: c #7A8270", ">: c #6F7866", ",: c #69705F", "': c #646B5C", "): c #5C6356", "!: c #51554E", "~: c #ACAAB0", "{: c #BDBCC3", "]: c #575759", "^: c #484849", "/: c #C5C4C4", "(: c #726F71", "_: c #59585B", ":: c #2A282D", "<: c #322D30", "[: c #23232B", "}: c #282E3C", "|: c #3D4A59", "1: c #3B4454", "2: c #27262E", "3: c #5E7386", "4: c #758DA8", "5: c #98A7BF", "6: c #6C8AAC", "7: c #586888", "8: c #1C1F2B", "9: c #39445D", "0: c #2E364F", "a: c #222337", "b: c #201E2C", "c: c #231E29", "d: c #231A25", "e: c #24202A", "f: c #35343B", "g: c #4A494F", "h: c #5F606D", "i: c #6A7791", "j: c #697393", "k: c #756E94", "l: c #4F487A", "m: c #4E3D75", "n: c #3D1E56", "o: c #3F205A", "p: c #43235B", "q: c #46255B", "r: c #49285E", "s: c #3B194E", "t: c #2B0A3E", "u: c #503462", "v: c #4D315F", "w: c #523662", "x: c #563B65", "y: c #5C4668", "z: c #6A596F", "A: c #837981", "B: c #858280", "C: c #8B8985", "D: c #7C757A", "E: c #7D6F7D", "F: c #6C5873", "G: c #5B4467", "H: c #5A3E66", "I: c #5A3C68", "J: c #5A3C69", "K: c #533562", "L: c #5C416B", "M: c #533962", "N: c #61486D", "O: c #5F476C", "P: c #644C70", "Q: c #644A71", "R: c #583C66", "S: c #5E406B", "T: c #5D3E6B", "U: c #523462", "V: c #553764", "W: c #5B3D69", "X: c #5B3C69", "Y: c #5B3D6A", "Z: c #5C3D6A", "`: c #553663", " < c #553865", ".< c #4D2E5E", "+< c #4D3361", "@< c #2D0F41", "#< c #321146", "$< c #321246", "%< c #230437", "&< c #351549", "*< c #290A3C", "=< c #270939", "-< c #260A38", ";< c #270B39", ">< c #391A4C", ",< c #2E1754", "'< c #2C1A62", ")< c #2D1961", "!< c #39184E", "~< c #2C1452", "{< c #3C276D", "]< c #4A3477", "^< c #50397B", "/< c #443377", "(< c #352B71", "_< c #2C266D", ":< c #2A236A", "<< c #2A2067", "[< c #2B1D64", "}< c #2D1D65", "|< c #2D1757", "1< c #432257", "2< c #3A194D", "3< c #401F51", "4< c #422150", "5< c #947BA3", "6< c #967EA5", "7< c #704F85", "8< c #704E84", "9< c #9278A2", "0< c #B7A6C2", "a< c #6B507E", "b< c #523467", "c< c #3E1F55", "d< c #381950", "e< c #3A1D52", "f< c #3C2352", "g< c #3E2853", "h< c #3F2A53", "i< c #3F2954", "j< c #3F2756", "k< c #40275B", "l< c #3E2556", "m< c #432A59", "n< c #432A52", "o< c #301840", "p< c #3B244B", "q< c #60486F", "r< c #5A4367", "s< c #5B4568", "t< c #5C4868", "u< c #5F4D69", "v< c #64556C", "w< c #675E6C", "x< c #69656B", "y< c #6A696B", "z< c #676768", "A< c #666667", "B< c #666566", "C< c #676767", "D< c #686868", "E< c #6A6B69", "F< c #6C6D6B", "G< c #727373", "H< c #767777", "I< c #7B7B7C", "J< c #848484", "K< c #8B8D89", "L< c #828281", "M< c #AAA9AE", "N< c #5D5D60", "O< c #454445", "P< c #BFBFBF", "Q< c #5E5C5F", "R< c #3E3F43", "S< c #565F6C", "T< c #61768F", "U< c #9AABC5", "V< c #708DAB", "W< c #728AAA", "X< c #1D1F29", "Y< c #454F67", "Z< c #3F4B68", "`< c #323850", " [ c #22263B", ".[ c #25212F", "+[ c #211B26", "@[ c #1B1C25", "#[ c #211B25", "$[ c #27202C", "%[ c #332E38", "&[ c #443D46", "*[ c #565058", "=[ c #646165", "-[ c #69676A", ";[ c #5E6A81", ">[ c #6C8FA4", ",[ c #7D8FA9", "'[ c #7C85A4", ")[ c #626D96", "![ c #534E78", "~[ c #453966", "{[ c #4C4678", "][ c #4E4879", "^[ c #524368", "/[ c #624D6F", "([ c #422D4D", "_[ c #261230", ":[ c #6C6073", "<[ c #706475", "[[ c #847586", "}[ c #7F7380", "|[ c #766F77", "1[ c #8C8787", "2[ c #92928A", "3[ c #9FA293", "4[ c #9FA494", "5[ c #95978B", "6[ c #97938C", "7[ c #8D8688", "8[ c #887E87", "9[ c #877B87", "0[ c #7C6F7E", "a[ c #756779", "b[ c #7C6E7E", "c[ c #766879", "d[ c #7C707F", "e[ c #675D6B", "f[ c #716974", "g[ c #79717A", "h[ c #7A727B", "i[ c #877C87", "j[ c #766878", "k[ c #837383", "l[ c #7E6E80", "m[ c #5F5165", "n[ c #5F5065", "o[ c #7F6F81", "p[ c #7E6F80", "q[ c #7E6F81", "r[ c #7B6D7F", "s[ c #736576", "t[ c #807081", "u[ c #756778", "v[ c #665C71", "w[ c #2A1B37", "x[ c #321D3D", "y[ c #301D3B", "z[ c #180823", "A[ c #3D2A49", "B[ c #3B2947", "C[ c #3A2843", "D[ c #3A2A44", "E[ c #3E2E48", "F[ c #4A3955", "G[ c #44304E", "H[ c #573F4E", "I[ c #675051", "J[ c #503A56", "K[ c #2D234F", "L[ c #464682", "M[ c #736DA2", "N[ c #867FAC", "O[ c #807BAB", "P[ c #59609B", "Q[ c #334487", "R[ c #293B7E", "S[ c #263578", "T[ c #273275", "U[ c #263174", "V[ c #2D2553", "W[ c #513C5D", "X[ c #45304E", "Y[ c #4B3552", "Z[ c #4E3852", "`[ c #C9BCD1", " } c #A894B5", ".} c #A792B4", "+} c #A893B4", "@} c #E3E0E7", "#} c #B8B3BD", "$} c #756F7D", "%} c #534960", "&} c #40334F", "*} c #413152", "=} c #412E54", "-} c #3F2C53", ";} c #402D53", ">} c #412F54", ",} c #433556", "'} c #463A5B", ")} c #473C5A", "!} c #483F5E", "~} c #463A5A", "{} c #46395B", "]} c #443958", "^} c #433554", "/} c #5D5269", "(} c #302539", "_} c #41364A", ":} c #655A6F", "<} c #675F6E", "[} c #6D6772", "}} c #6D6571", "|} c #786E7E", "1} c #828085", "2} c #939792", "3} c #92998F", "4} c #959992", "5} c #89878C", "6} c #919296", "7} c #989D96", "8} c #98A096", "9} c #848283", "0} c #949B91", "a} c #969E93", "b} c #8F948C", "c} c #848781", "d} c #888686", "e} c #90948D", "f} c #879185", "g} c #989997", "h} c #AAA9AF", "i} c #606063", "j} c #434345", "k} c #BDBCBC", "l} c #AFADAE", "m} c #4A494D", "n} c #282A2D", "o} c #4D5B72", "p} c #50617E", "q} c #4A5570", "r} c #384054", "s} c #333245", "t} c #212127", "u} c #211D28", "v} c #22212A", "w} c #282932", "x} c #322E37", "y} c #3A353F", "z} c #473E49", "A} c #504D52", "B} c #5B565D", "C} c #635C63", "D} c #626064", "E} c #616066", "F} c #67666A", "G} c #636064", "H} c #666772", "I} c #7E879D", "J} c #595D74", "K} c #48526E", "L} c #505F7A", "M} c #525B79", "N} c #4E506B", "O} c #555060", "P} c #4D4E6F", "Q} c #646F90", "R} c #898AA7", "S} c #5E6084", "T} c #716778", "U} c #5E5463", "V} c #211824", "W} c #848683", "X} c #8C8B86", "Y} c #A3A09A", "Z} c #8F8F89", "`} c #9A9B91", " | c #9EA092", ".| c #A1A795", "+| c #A9B09A", "@| c #A0A894", "#| c #818A7B", "$| c #808576", "%| c #999C8E", "&| c #9A9B90", "*| c #93928C", "=| c #94938C", "-| c #98948F", ";| c #979490", ">| c #7A7B77", ",| c #747670", "'| c #6E726B", ")| c #A2A498", "!| c #A1A397", "~| c #9EA095", "{| c #909189", "]| c #7E7F7A", "^| c #8E8E87", "/| c #757773", "(| c #7C7C78", "_| c #626261", ":| c #777673", "<| c #8B8984", "[| c #93918C", "}| c #8E8C89", "|| c #9C9B95", "1| c #9F9B95", "2| c #8F8D88", "3| c #7A7777", "4| c #797F7C", "5| c #28262D", "6| c #2C2330", "7| c #2B2430", "8| c #0F0B13", "9| c #453D4B", "0| c #3A3340", "a| c #403945", "b| c #423C47", "c| c #47414C", "d| c #504854", "e| c #454154", "f| c #6E6C6F", "g| c #7F786D", "h| c #544C58", "i| c #383345", "j| c #223767", "k| c #213466", "l| c #2B4076", "m| c #AFB4CF", "n| c #9AA6CC", "o| c #536FAA", "p| c #365896", "q| c #2F4A7D", "r| c #223968", "s| c #213867", "t| c #3D3647", "u| c #584E5C", "v| c #4D414D", "w| c #544853", "x| c #564952", "y| c #DBD2E0", "z| c #D8CFDE", "A| c #DAD2E0", "B| c #E3DCE7", "C| c #E2DDE6", "D| c #B9B6BE", "E| c #89888E", "F| c #64646B", "G| c #484751", "H| c #41414E", "I| c #40454E", "J| c #3D454D", "K| c #423F51", "L| c #453D54", "M| c #463D55", "N| c #453B54", "O| c #453C55", "P| c #484259", "Q| c #5D586A", "R| c #A5A3AC", "S| c #BEBBC2", "T| c #BCB8BF", "U| c #696474", "V| c #484158", "W| c #484159", "X| c #504D5E", "Y| c #3D3B44", "Z| c #635E65", "`| c #59555C", " 1 c #4F4B52", ".1 c #615E62", "+1 c #736F74", "@1 c #6B6A6B", "#1 c #5C5D5E", "$1 c #5A5A5B", "%1 c #797B77", "&1 c #7C7E7B", "*1 c #6F6E6E", "=1 c #606060", "-1 c #61625F", ";1 c #6A6969", ">1 c #5A5B5B", ",1 c #5B5D5C", "'1 c #7B797A", ")1 c #777576", "!1 c #69686A", "~1 c #666567", "{1 c #616062", "]1 c #ACABB0", "^1 c #BBBAC1", "/1 c #626264", "(1 c #444345", "_1 c #BBBBBB", ":1 c #CDCCCD", "<1 c #6C6A6C", "[1 c #535257", "}1 c #373739", "|1 c #28272E", "11 c #2E2A34", "21 c #35313C", "31 c #3E3E45", "41 c #4B464F", "51 c #534E57", "61 c #58535D", "71 c #5C5861", "81 c #5D5A62", "91 c #5E5B62", "01 c #605C63", "a1 c #625E62", "b1 c #787575", "c1 c #827E7A", "d1 c #6D7381", "e1 c #6D8192", "f1 c #747C91", "g1 c #636066", "h1 c #6F7992", "i1 c #94A7CE", "j1 c #8A99BA", "k1 c #6C7086", "l1 c #76716F", "m1 c #7E7D76", "n1 c #67696D", "o1 c #61646A", "p1 c #474D65", "q1 c #5F7291", "r1 c #7482A1", "s1 c #617094", "t1 c #69656E", "u1 c #79747B", "v1 c #373436", "w1 c #919B8B", "x1 c #9DA292", "y1 c #B0B3A1", "z1 c #A8AE9B", "A1 c #9EA691", "B1 c #ACB29B", "C1 c #ABB09B", "D1 c #B4BAA4", "E1 c #B4BBA4", "F1 c #9AA38B", "G1 c #9FA58E", "H1 c #ADB39C", "I1 c #9EA48F", "J1 c #ADB19C", "K1 c #A6A997", "L1 c #ADB19D", "M1 c #AEB3A1", "N1 c #989F8D", "O1 c #919886", "P1 c #747E6D", "Q1 c #B0B6A1", "R1 c #ADB39E", "S1 c #AEB49F", "T1 c #B2B8A3", "U1 c #999D8C", "V1 c #B1B5A1", "W1 c #74776C", "X1 c #858B7D", "Y1 c #878E7C", "Z1 c #798073", "`1 c #ADB39D", " 2 c #969D8A", ".2 c #AFB2A0", "+2 c #9DA28F", "@2 c #868B7D", "#2 c #839283", "$2 c #262B28", "%2 c #272528", "&2 c #252426", "*2 c #080B09", "=2 c #3D3B3E", "-2 c #434244", ";2 c #59575A", ">2 c #676568", ",2 c #454245", "'2 c #2E4467", ")2 c #3E619C", "!2 c #395C9A", "~2 c #506B9D", "{2 c #56535A", "]2 c #273A55", "^2 c #2C518A", "/2 c #264778", "(2 c #B4C2DA", "_2 c #B7C7E2", ":2 c #869FCD", "<2 c #587AB0", "[2 c #3E6095", "}2 c #2D5185", "|2 c #27354E", "12 c #595459", "22 c #504C51", "32 c #5E565A", "42 c #575153", "52 c #5A5151", "62 c #E8E6EA", "72 c #BDBBC0", "82 c #939198", "92 c #6B6A73", "02 c #464853", "a2 c #3B3C49", "b2 c #3B3E49", "c2 c #40424C", "d2 c #3C454A", "e2 c #3D444B", "f2 c #454552", "g2 c #434751", "h2 c #484C58", "i2 c #505A6B", "j2 c #565564", "k2 c #494558", "l2 c #484355", "m2 c #474354", "n2 c #494854", "o2 c #D0D1D6", "p2 c #696774", "q2 c #4B4859", "r2 c #514E5F", "s2 c #4A475A", "t2 c #626169", "u2 c #4B4D4E", "v2 c #6A686C", "w2 c #A09FA3", "x2 c #626065", "y2 c #6F6E6F", "z2 c #757372", "A2 c #737172", "B2 c #908F92", "C2 c #666467", "D2 c #656463", "E2 c #6B6B6A", "F2 c #7D7B7D", "G2 c #89888A", "H2 c #656467", "I2 c #60605E", "J2 c #8E8C90", "K2 c #6A686A", "L2 c #696869", "M2 c #5C5B5D", "N2 c #A5A3A6", "O2 c #959396", "P2 c #5E5D62", "Q2 c #AAA9AD", "R2 c #434344", "S2 c #B9B9B9", "T2 c #727071", "U2 c #5B585B", "V2 c #59575C", "W2 c #5B5860", "X2 c #5B5861", "Y2 c #5C5961", "Z2 c #5D5B5F", "`2 c #5D5B61", " 3 c #626066", ".3 c #6C6970", "+3 c #67656C", "@3 c #656369", "#3 c #625F63", "$3 c #626977", "%3 c #778CA3", "&3 c #8C9EB5", "*3 c #99A9C0", "=3 c #7E96BD", "-3 c #6A6B79", ";3 c #68748E", ">3 c #AEBEDC", ",3 c #AAB3CA", "'3 c #7887A5", ")3 c #767372", "!3 c #8F8A7B", "~3 c #676668", "{3 c #6B7076", "]3 c #474A53", "^3 c #4D5977", "/3 c #5C7092", "(3 c #5B6A88", "_3 c #68696D", ":3 c #827F84", "<3 c #575555", "[3 c #9BA591", "}3 c #A2AA94", "|3 c #B5BCA6", "13 c #979D89", "23 c #AFB69E", "33 c #B8BEA4", "43 c #B4B9A1", "53 c #B3B8A1", "63 c #B3B8A0", "73 c #9FA78F", "83 c #AEB39A", "93 c #B1B69D", "03 c #B4B8A2", "a3 c #B4B9A2", "b3 c #B3B9A2", "c3 c #A4AD95", "d3 c #B4BAA2", "e3 c #AAB29C", "f3 c #75816D", "g3 c #B2BBA3", "h3 c #B0B8A1", "i3 c #B5BCA4", "j3 c #9EA58F", "k3 c #98A18A", "l3 c #A7AE97", "m3 c #A1A991", "n3 c #B2B7A0", "o3 c #B5BAA2", "p3 c #8B917F", "q3 c #869682", "r3 c #262D26", "s3 c #212121", "t3 c #202220", "u3 c #060A06", "v3 c #3C3A3B", "w3 c #333433", "x3 c #323232", "y3 c #2C2C2C", "z3 c #272826", "A3 c #434243", "B3 c #344867", "C3 c #7B94B7", "D3 c #728AB0", "E3 c #768FB2", "F3 c #495265", "G3 c #605D63", "H3 c #2A4059", "I3 c #244A7C", "J3 c #5979A6", "K3 c #7D97BF", "L3 c #6888B8", "M3 c #3D669C", "N3 c #29538A", "O3 c #22374E", "P3 c #4F4E4F", "Q3 c #5E5C5D", "R3 c #4F4D4E", "S3 c #605B5B", "T3 c #585252", "U3 c #57504C", "V3 c #CDCDCF", "W3 c #A3A3A6", "X3 c #78787E", "Y3 c #4E4E55", "Z3 c #5D5D62", "`3 c #78797F", " 4 c #5A5D64", ".4 c #383846", "+4 c #3B424B", "@4 c #43464F", "#4 c #43434F", "$4 c #3C424A", "%4 c #3E414C", "&4 c #3F4650", "*4 c #444450", "=4 c #71747F", "-4 c #B9BBC1", ";4 c #D6D7DA", ">4 c #9B99A1", ",4 c #484555", "'4 c #494757", ")4 c #434251", "!4 c #74747B", "~4 c #797A7F", "{4 c #5C5B63", "]4 c #464553", "^4 c #4B485B", "/4 c #8F8F96", "(4 c #BFBFC3", "_4 c #666571", ":4 c #585666", "<4 c #5F6162", "[4 c #5C5B5F", "}4 c #747174", "|4 c #605F60", "14 c #757474", "24 c #838280", "34 c #666466", "44 c #888689", "54 c #6B696C", "64 c #7A7978", "74 c #757473", "84 c #7B797C", "94 c #8C898D", "04 c #666565", "a4 c #858385", "b4 c #8A878B", "c4 c #6A686B", "d4 c #6D6C6E", "e4 c #767476", "f4 c #ADABB1", "g4 c #BCBBC2", "h4 c #67686A", "i4 c #444344", "j4 c #B8B7B8", "k4 c #5F5C5E", "l4 c #58565A", "m4 c #5B585C", "n4 c #5D5A5E", "o4 c #626265", "p4 c #676160", "q4 c #6D6861", "r4 c #605E61", "s4 c #636166", "t4 c #7D7B81", "u4 c #7B7B81", "v4 c #858389", "w4 c #626063", "x4 c #4F566A", "y4 c #667E99", "z4 c #7790AA", "A4 c #6F7F9C", "B4 c #637192", "C4 c #5F616E", "D4 c #505164", "E4 c #8CA1C9", "F4 c #96A7CB", "G4 c #7D88A7", "H4 c #6B696F", "I4 c #7F888D", "J4 c #6D8194", "K4 c #6A869B", "L4 c #688699", "M4 c #55627A", "N4 c #41465D", "O4 c #545563", "P4 c #7E7B7F", "Q4 c #9BA690", "R4 c #8B947E", "S4 c #97A08A", "T4 c #8B927D", "U4 c #ACB39A", "V4 c #A3AA92", "W4 c #A2A991", "X4 c #A0A68F", "Y4 c #A0A890", "Z4 c #8F9982", "`4 c #9CA38A", " 5 c #969D88", ".5 c #9FA590", "+5 c #9FA68F", "@5 c #A0A891", "#5 c #9AA08D", "$5 c #9FA792", "%5 c #B1BBA2", "&5 c #B6BDA5", "*5 c #9AA28D", "=5 c #838977", "-5 c #777F70", ";5 c #556152", ">5 c #858F7C", ",5 c #7D8772", "'5 c #919A87", ")5 c #818A78", "!5 c #6F7966", "~5 c #6A7562", "{5 c #8C947E", "]5 c #A3A993", "^5 c #B6BCA2", "/5 c #A4AB93", "(5 c #8D9380", "_5 c #899A85", ":5 c #262D27", "<5 c #181A18", "[5 c #050A05", "}5 c #313030", "|5 c #2D2D2E", "15 c #37352D", "25 c #313231", "35 c #2A4365", "45 c #2F5692", "55 c #4C6A9D", "65 c #3A5F99", "75 c #3E4A5E", "85 c #5A585C", "95 c #383D46", "05 c #152A40", "a5 c #142C4B", "b5 c #132B49", "c5 c #182B3D", "d5 c #3D4147", "e5 c #585556", "f5 c #5D5B5C", "g5 c #5A5453", "h5 c #58504C", "i5 c #D9D9DB", "j5 c #ACACB0", "k5 c #78777F", "l5 c #42424B", "m5 c #52545E", "n5 c #767B82", "o5 c #A0A5A9", "p5 c #D5D5D5", "q5 c #D9D8D8", "r5 c #E8E8E7", "s5 c #75757C", "t5 c #3A3F49", "u5 c #464454", "v5 c #3F414B", "w5 c #4E5E6F", "x5 c #637698", "y5 c #7092B5", "z5 c #444957", "A5 c #66656B", "B5 c #E6E6E5", "C5 c #E3E5E8", "D5 c #DBDCDE", "E5 c #4F4D59", "F5 c #686777", "G5 c #7C7D85", "H5 c #4A4857", "I5 c #4A4958", "J5 c #494657", "K5 c #484657", "L5 c #7E7E85", "M5 c #BCBBBF", "N5 c #BBBBC0", "O5 c #4D4B60", "P5 c #696771", "Q5 c #757477", "R5 c #5E5E5F", "S5 c #68676A", "T5 c #747375", "U5 c #757476", "V5 c #717170", "W5 c #797878", "X5 c #807F7F", "Y5 c #6C6C6C", "Z5 c #5F5F60", "`5 c #666666", " 6 c #7D7B7C", ".6 c #81807F", "+6 c #605E5F", "@6 c #6D6C6C", "#6 c #787A75", "$6 c #7B7B79", "%6 c #6F6D6E", "&6 c #8C8B8B", "*6 c #B0AFB5", "=6 c #676769", "-6 c #B6B5B6", ";6 c #A5A2A3", ">6 c #646264", ",6 c #585659", "'6 c #6A665C", ")6 c #B1AB74", "!6 c #D1CA83", "~6 c #EAE28F", "{6 c #F0E992", "]6 c #868167", "^6 c #5F5F63", "/6 c #757377", "(6 c #7D7B82", "_6 c #8C8B90", ":6 c #79777D", "<6 c #58575C", "[6 c #525159", "}6 c #444B66", "|6 c #545761", "16 c #7C7666", "26 c #7E7A71", "36 c #626068", "46 c #5B575C", "56 c #505A77", "66 c #7C8EB2", "76 c #677088", "86 c #63768A", "96 c #658EA1", "06 c #91A1B5", "a6 c #95A6BB", "b6 c #638A9F", "c6 c #6B8098", "d6 c #565861", "e6 c #6C6B6F", "f6 c #706E71", "g6 c #7A777A", "h6 c #9FA896", "i6 c #A1A992", "j6 c #B8BFA7", "k6 c #B5BBA3", "l6 c #B1B79F", "m6 c #929B84", "n6 c #B4BBA3", "o6 c #ACB49C", "p6 c #B8BFA4", "q6 c #BABFA6", "r6 c #969D87", "s6 c #AFB7A0", "t6 c #B2BAA0", "u6 c #AAB299", "v6 c #A5AD95", "w6 c #A0A88F", "x6 c #A3AA95", "y6 c #A4AB96", "z6 c #75816E", "A6 c #B4BEA5", "B6 c #909A86", "C6 c #778270", "D6 c #89917F", "E6 c #8B9480", "F6 c #64705E", "G6 c #9AA18C", "H6 c #89917A", "I6 c #959D89", "J6 c #8E9482", "K6 c #6D7765", "L6 c #828C77", "M6 c #7C8672", "N6 c #616859", "O6 c #888E7B", "P6 c #737A69", "Q6 c #8E9583", "R6 c #889984", "S6 c #262C26", "T6 c #151715", "U6 c #151714", "V6 c #060B05", "W6 c #4A484A", "X6 c #696448", "Y6 c #5B5644", "Z6 c #404041", "`6 c #535152", " 7 c #2B4366", ".7 c #4C6C9F", "+7 c #5471A1", "@7 c #375D96", "#7 c #39475B", "$7 c #3C475C", "%7 c #4D6D98", "&7 c #566070", "*7 c #494A4F", "=7 c #464546", "-7 c #474446", ";7 c #48494E", ">7 c #424F65", ",7 c #3E5F8E", "'7 c #5A6574", ")7 c #5B595B", "!7 c #5D5857", "~7 c #565150", "{7 c #574E4A", "]7 c #A5A6A7", "^7 c #6A6A71", "/7 c #3F4049", "(7 c #43454F", "_7 c #78787F", ":7 c #B0B1B4", "<7 c #D2D5DB", "[7 c #D2D3D5", "}7 c #ACAEAF", "|7 c #BDBEBE", "17 c #B0B0AF", "27 c #C8C7C9", "37 c #3A3A45", "47 c #40414E", "57 c #393D46", "67 c #4E617C", "77 c #6B95BB", "87 c #6D95BC", "97 c #5F7082", "07 c #31353B", "a7 c #BCBCBE", "b7 c #C5C5C5", "c7 c #C7C7C7", "d7 c #8E8E95", "e7 c #E7E8E7", "f7 c #787682", "g7 c #4C4A5D", "h7 c #4B495B", "i7 c #4D4B61", "j7 c #4C4D59", "k7 c #CCCBCD", "l7 c #D2D2D4", "m7 c #5A5968", "n7 c #545164", "o7 c #7B7A7F", "p7 c #6F6E71", "q7 c #737174", "r7 c #747376", "s7 c #777677", "t7 c #767676", "u7 c #787A77", "v7 c #7B7A7A", "w7 c #7A7B79", "x7 c #7B7D79", "y7 c #7C7A7B", "z7 c #7D7C7C", "A7 c #7A7B7A", "B7 c #3B3B39", "C7 c #3D3C3B", "D7 c #515151", "E7 c #8D8A8C", "F7 c #AFAEB3", "G7 c #BDBCC2", "H7 c #696A6D", "I7 c #464648", "J7 c #B3B2B2", "K7 c #6C696B", "L7 c #58585A", "M7 c #5C5A5E", "N7 c #8D8764", "O7 c #F1EA92", "P7 c #F1EA96", "Q7 c #9E966C", "R7 c #47464C", "S7 c #595A5E", "T7 c #5B5C60", "U7 c #454446", "V7 c #585859", "W7 c #625C63", "X7 c #5F5E67", "Y7 c #757580", "Z7 c #858C91", "`7 c #9499A5", " 8 c #828CA6", ".8 c #64626A", "+8 c #5D5A60", "@8 c #54525D", "#8 c #67646C", "$8 c #48536A", "%8 c #54768F", "&8 c #516D8A", "*8 c #4D607C", "=8 c #4E5972", "-8 c #585863", ";8 c #6B6A6D", ">8 c #6D6B6E", ",8 c #6D6B6F", "'8 c #6D6C70", ")8 c #7F7C80", "!8 c #8F958B", "~8 c #A0A992", "{8 c #B0B7A0", "]8 c #AEB49A", "^8 c #A4AA92", "/8 c #B9BEA5", "(8 c #9DA38B", "_8 c #A1A891", ":8 c #A8AE96", "<8 c #A2A992", "[8 c #B4BBA1", "}8 c #A9B198", "|8 c #A2AA92", "18 c #979F88", "28 c #BABFA7", "38 c #B2B8A2", "48 c #79836F", "58 c #B5BDA6", "68 c #556153", "78 c #737D6C", "88 c #788372", "98 c #76806E", "08 c #85907C", "a8 c #87927D", "b8 c #919985", "c8 c #8F9683", "d8 c #6E7967", "e8 c #646F5F", "f8 c #727B6A", "g8 c #536051", "h8 c #737C69", "i8 c #747D6C", "j8 c #8F9583", "k8 c #899A87", "l8 c #131612", "m8 c #111411", "n8 c #414041", "o8 c #353434", "p8 c #504F50", "q8 c #585658", "r8 c #555255", "s8 c #424041", "t8 c #2D4467", "u8 c #637EAA", "v8 c #42649A", "w8 c #3A4658", "x8 c #384557", "y8 c #295593", "z8 c #2A5591", "A8 c #5579AB", "B8 c #4C6C9B", "C8 c #4B6D9C", "D8 c #486EA5", "E8 c #285490", "F8 c #2D5692", "G8 c #30578A", "H8 c #565455", "I8 c #5B5656", "J8 c #424249", "K8 c #7D7D85", "L8 c #A1A3A7", "M8 c #CACBCF", "N8 c #D4D4D6", "O8 c #B6B6B7", "P8 c #9C9C9D", "Q8 c #919294", "R8 c #8B8C8B", "S8 c #939495", "T8 c #D0D1D3", "U8 c #B5B6B8", "V8 c #89898B", "W8 c #CFCFD0", "X8 c #E9E9E8", "Y8 c #EAECEA", "Z8 c #696B70", "`8 c #3C3B49", " 9 c #3A4147", ".9 c #2D3542", "+9 c #6F8AAD", "@9 c #64799A", "#9 c #384056", "$9 c #3E3E49", "%9 c #707177", "&9 c #E7E7E6", "*9 c #4D4B57", "=9 c #818187", "-9 c #D2D2D3", ";9 c #CECED0", ">9 c #4D4C63", ",9 c #504E6A", "'9 c #4D4D63", ")9 c #5F636A", "!9 c #8E8F96", "~9 c #4C4A5E", "{9 c #4E4B64", "]9 c #676671", "^9 c #7F877E", "/9 c #7B7E7B", "(9 c #767577", "_9 c #747574", ":9 c #787778", "<9 c #787A78", "[9 c #7A7B78", "}9 c #797A79", "|9 c #7C7B7C", "19 c #80807F", "29 c #595859", "39 c #706D6F", "49 c #505053", "59 c #403F3F", "69 c #656563", "79 c #B0AFB4", "89 c #6D6D70", "99 c #484749", "09 c #AFAEAF", "a9 c #E7E6E7", "b9 c #716F70", "c9 c #5C595C", "d9 c #625F4D", "e9 c #D0C985", "f9 c #C6BE7A", "g9 c #A69F69", "h9 c #89815A", "i9 c #6A645E", "j9 c #5E5B61", "k9 c #5D5A5F", "l9 c #797575", "m9 c #8A8582", "n9 c #81797C", "o9 c #6C616F", "p9 c #656167", "q9 c #556077", "r9 c #8598B0", "s9 c #9CA9C0", "t9 c #9BABBE", "u9 c #90A3C1", "v9 c #6A6E81", "w9 c #646265", "x9 c #636065", "y9 c #646065", "z9 c #5F5B63", "A9 c #52525C", "B9 c #595562", "C9 c #605D64", "D9 c #636266", "E9 c #66656A", "F9 c #7C797E", "G9 c #6E6D70", "H9 c #837F84", "I9 c #7F807E", "J9 c #A0A990", "K9 c #B0B8A0", "L9 c #B2B9A1", "M9 c #B5BAA3", "N9 c #B0B69D", "O9 c #B1B7A0", "P9 c #ACB59D", "Q9 c #AEB79F", "R9 c #9BA48E", "S9 c #ABB39D", "T9 c #939D89", "U9 c #7A8471", "V9 c #848D7C", "W9 c #727D6E", "X9 c #788272", "Y9 c #636F5E", "Z9 c #656E5E", "`9 c #767F6F", " 0 c #747E6B", ".0 c #86917D", "+0 c #7E8975", "@0 c #7C8573", "#0 c #717B6B", "$0 c #556253", "%0 c #6F7A68", "&0 c #A1A993", "*0 c #A4AB92", "=0 c #AAAF98", "-0 c #8C9281", ";0 c #879A86", ">0 c #272D26", ",0 c #0F110E", "'0 c #0E100E", ")0 c #050A04", "!0 c #3B3B3B", "~0 c #222323", "{0 c #434445", "]0 c #575959", "^0 c #202121", "/0 c #403F40", "(0 c #2E476A", "_0 c #6480A9", ":0 c #3F6298", "<0 c #3B6196", "[0 c #384456", "}0 c #364458", "|0 c #264E8C", "10 c #2A518D", "20 c #5A78A4", "30 c #54729F", "40 c #5A75A1", "50 c #28508B", "60 c #26508B", "70 c #204A80", "80 c #4B4A4B", "90 c #544F4D", "00 c #534A47", "a0 c #D7D7D7", "b0 c #DEDDDD", "c0 c #D9DADC", "d0 c #B0B0B1", "e0 c #9A9A9C", "f0 c #797A7E", "g0 c #494A4E", "h0 c #1E2023", "i0 c #07080C", "j0 c #030505", "k0 c #3E3F41", "l0 c #E1E0E0", "m0 c #C1C1C3", "n0 c #3C3C48", "o0 c #41424E", "p0 c #373742", "q0 c #292D38", "r0 c #333643", "s0 c #434351", "t0 c #484955", "u0 c #3F3E48", "v0 c #CFCDCF", "w0 c #E6E6E7", "x0 c #7C7B84", "y0 c #42424A", "z0 c #B3B3B5", "A0 c #E7E8E8", "B0 c #5A5A64", "C0 c #504F65", "D0 c #504E67", "E0 c #525163", "F0 c #5F5F6E", "G0 c #4F4E67", "H0 c #504F62", "I0 c #77818F", "J0 c #708398", "K0 c #6E737B", "L0 c #747373", "M0 c #727271", "N0 c #868C84", "O0 c #7C827B", "P0 c #767576", "Q0 c #82848A", "R0 c #898A94", "S0 c #848884", "T0 c #8C9489", "U0 c #878B85", "V0 c #7B7D7A", "W0 c #5F5F5D", "X0 c #76767D", "Y0 c #535A5F", "Z0 c #656464", "`0 c #BCBBC1", " a c #ACACAD", ".a c #605D60", "+a c #57575A", "@a c #57555B", "#a c #59554D", "$a c #5A5653", "%a c #5B565B", "&a c #5C5A60", "*a c #5E5E66", "=a c #5E5C64", "-a c #665F6A", ";a c #8E8892", ">a c #9B96A2", ",a c #9793A2", "'a c #847D91", ")a c #69636D", "!a c #4C4F61", "~a c #627495", "{a c #59708C", "]a c #566480", "^a c #535B74", "/a c #5D5B63", "(a c #625F62", "_a c #807C79", ":a c #716D6C", "b c #070A0B", ",b c #131515", "'b c #262924", ")b c #3D4139", "!b c #292C27", "~b c #0E1112", "{b c #56565F", "]b c #3F434D", "^b c #454652", "/b c #3F464D", "(b c #585665", "_b c #898994", ":b c #A4A5AF", "c c #99A48B", ",c c #99A48D", "'c c #99A38B", ")c c #96A089", "!c c #97A089", "~c c #969F88", "{c c #99A28B", "]c c #959E89", "^c c #929A86", "/c c #A4AD96", "(c c #99A48E", "_c c #9EA791", ":c c #959F89", "d c #525069", ",d c #514F65", "'d c #787F8E", ")d c #62758F", "!d c #646565", "~d c #5F5D61", "{d c #757478", "]d c #727072", "^d c #4B4A4A", "/d c #2F2C2E", "(d c #3D3D3E", "_d c #5F5F5F", ":d c #595959", "e c #464347", ",e c #464345", "'e c #494649", ")e c #474748", "!e c #343535", "~e c #3E3D3E", "{e c #373637", "]e c #464446", "^e c #434342", "/e c #595758", "(e c #4B4949", "_e c #595454", ":e c #54504E", "f c #3D3840", ",f c #3E3A43", "'f c #454348", ")f c #5A585D", "!f c #737074", "~f c #7E7976", "{f c #646266", "]f c #69666A", "^f c #6E6C70", "/f c #7D797E", "(f c #767377", "_f c #78767B", ":f c #787579", "g c #787780", ",g c #4D4C62", "'g c #4D4C5D", ")g c #61606C", "!g c #9797A0", "~g c #CACACC", "{g c #C9CBC9", "]g c #DDDDDE", "^g c #5A5A69", "/g c #504F68", "(g c #545268", "_g c #696772", ":g c #9D9D9F", "h c #252B24", ",h c #0A0B09", "'h c #3C3C3E", ")h c #1C1D1B", "!h c #141513", "~h c #131413", "{h c #161816", "]h c #232424", "^h c #131412", "/h c #111310", "(h c #141514", "_h c #3D3C3E", ":h c #38383A", "i c #A3A1A6", ",i c #67646B", "'i c #444348", ")i c #4D4C51", "!i c #404044", "~i c #3F4044", "{i c #5E5C61", "]i c #646161", "^i c #767371", "/i c #616266", "(i c #69696D", "_i c #656368", ":i c #565355", "j c #86858B", ",j c #474653", "'j c #494655", ")j c #343640", "!j c #2C303A", "~j c #4A4A5A", "{j c #464655", "]j c #4D4D54", "^j c #E9EAE9", "/j c #63626D", "(j c #4F5157", "_j c #BBBDBC", ":j c #A6A7A8", "k c #2C2D2C", ",k c #3A3A3C", "'k c #42413F", ")k c #454646", "!k c #464647", "~k c #2E2E2D", "{k c #3F3F41", "]k c #454343", "^k c #434346", "/k c #49494B", "(k c #393939", "_k c #3B3B3C", ":k c #44433D", "l c #716F74", ",l c #7E7B80", "'l c #555154", ")l c #393535", "!l c #353333", "~l c #2F2E2E", "{l c #2C2B2B", "]l c #242624", "^l c #1D1E1C", "/l c #191A19", "(l c #181817", "_l c #0F120F", ":l c #0D100D", "m c #9E9C9F", ",m c #7E7C7F", "'m c #A8A6AC", ")m c #BAB9C0", "!m c #67676A", "~m c #9F9F9F", "{m c #555359", "]m c #5C595D", "^m c #787370", "/m c #666164", "(m c #5C5B60", "_m c #504D55", ":m c #525256", "n c #2B2D38", ",n c #373A45", "'n c #4C4B5D", ")n c #545467", "!n c #656C7A", "~n c #838692", "{n c #727180", "]n c #393B49", "^n c #4E4E60", "/n c #8C8D95", "(n c #92979F", "_n c #4D4D5B", ":n c #403F52", "o c #525152", ",o c #474547", "'o c #666148", ")o c #5A5446", "!o c #4B494B", "~o c #474544", "{o c #4E4948", "]o c #4A4543", "^o c #4A433F", "/o c #868977", "(o c #8E8D73", "_o c #8E9077", ":o c #909680", "p c #3D4243", ",p c #353637", "'p c #303032", ")p c #313133", "!p c #333335", "~p c #3D3D3F", "{p c #373636", "]p c #45443C", "^p c #3B3C3D", "/p c #424345", "(p c #39393B", "_p c #393A3B", ":p c #3A3B3C", "

    Q c #555755", ",Q c #535554", "'Q c #545655", ")Q c #525353", "!Q c #525453", "~Q c #515353", "{Q c #535553", "]Q c #555756", "^Q c #545555", "/Q c #3C3D3E", "(Q c #312F30", "_Q c #9F9C9E", ":Q c #5F5A5D", "R c #35344A", ",R c #272B32", "'R c #3A404B", ")R c #333540", "!R c #272A34", "~R c #4E5566", "{R c #484C5C", "]R c #3D3E4F", "^R c #313440", "/R c #777479", "(R c #8D8C93", "_R c #62616F", ":R c #3E424C", "S c #4A4C53", ",S c #3B3F4A", "'S c #2B303B", ")S c #2A2E39", "!S c #3D424C", "~S c #40494E", "{S c #3A3947", "]S c #232B33", "^S c #21292B", "/S c #212A2D", "(S c #252C30", "_S c #272A2E", ":S c #25262A", "T c #33343E", ",T c #323247", "'T c #363549", ")T c #E4E3E3", "!T c #BDBEBF", "~T c #676B73", "{T c #2F303A", "]T c #212835", "^T c #272A35", "/T c #38384A", "(T c #3C3B4C", "_T c #323443", ":T c #758BA9", "U c #333342", ",U c #40404F", "'U c #5F5F70", ")U c #696D7A", "!U c #636775", "~U c #32333C", "{U c #5F665E", "]U c #8E9884", "^U c #677469", "/U c #3F494E", "(U c #323448", "_U c #2C2F3B", ":U c #31343F", " > > > > > , % @ * * * * * & @ @ @ @ @ @ @ @ % # $ $ # @ + . ' ) ! & @ ~ ~ { @ * + ] ^ ' ^ ] / ~ $ ( ; _ ; $ @ : ^ ^ < / @ = , ; > > > > _ - ~ + ) ' ' . ! & % $ - - - - $ % & < ^ ", " ^ * _ [ } | 1 2 3 4 5 6 7 7 8 8 8 8 8 8 8 8 8 8 8 7 6 } 9 0 a b c d d d e f g | h i 6 j j j 5 5 5 5 5 5 5 } k 3 l 1 m | h n ; + . ] @ o [ j k p 9 q r j s t - @ % u v k m w x f y 0 5 z - + ^ ' < # A 7 B 2 g x e d d e C D E s F G ! @ > n H 3 m D D D D m 3 6 I # < ", " ^ @ z m J K L M N O P Q R S T U U U U U U U U U U U V R W X Y Z ` .........+.@.#.$.%.&.*.=.=.K K K K K K -.;.>.O ,.M '.L =.).0 z - ; 7 y !.~.{.].X ^./.~.(._.:.<.h c [./.}.|.1.2.3.N ~.4.5.6.@ ] + 7.} 8.9.P 0.a.1.b.....c.d.e./.f.g v g.h.i.j.*.X '.k.@.@.l.'.m.S n.} F ! ", " ^ * o.p.P q.r.s.t.u.v.w.x.y.z.A.B.B.B.B.B.B.B.B.B.B.B.C.y.D.E.F.G.H.I.J.K.K.L.M.G.N.O.P.Q.R.S.S.x.x.x.x.x.x.T.U.V.N.W.t.X.s.Y.Z.;.`.5 p +Y .+Y.++E.E.@+#+y.$+%+^.9.&+@.*+D.F.=+-+;+>+W.z.,+Q f n - '+2 U +.)+U.u.!+H.~+K.K.L.-+{+O.]+^+J 8./+Y (+Y.E.X._+G.G.:+X.<+[+2.}+5.> < ", " < 7.g ^.|+L.1+2+3+4+5+6+7+8+9+0+0+0+0+0+0+0+0+0+0+0+0+1+a+b+c+4+d+e+f+g+g+g+g+h+i+c+7+8+j+k+7+7+l+l+l+l+l+l+b+m+n+o+p+q+q+c+0+r+s+O t+9. .u+v+w+6+c+5+x+m+a+y+M.z+A+B+N.C+k+4+D+E+h+F+o+G+H.)+H+f 7 9 U I+F.J+l+p+D+E+g+g+g+g+E+3+8+K+L+M+a.I+w.N+w+x+q+i+O+d+O+q+m+P+u.Q+[.i % ^ ", " ^ @ <.}+R+S+4+T+U+V+W+X+U+Y+Z+`+ @ @ @ @ @ @ @ @ @ @ @ @.@+@@@X+#@$@%@%@&@*@*@&@%@=@-@Y+Z+Z+;@;@@@@@@@@@@@@@@@@@@@U+X+W+V+V+U+>@,@'@)@3.!@~@{@h+]@@@X+X+-@@@`+^@/@(@_@:@k+<@`+[@$@%@%@$@U+}@|@1@2@3@e 4@+.u.j+5@;@[@$@%@&@*@*@&@%@[@]@D+P+X.6@7@0+8@]@U+V+=@$@9@=@#@;@5@0@s.a@e b@< ", " ) F y e.c@d@ @e@f@g@g@h@h@f@i@i@i@i@i@i@i@i@i@i@i@i@i@i@i@i@f@h@g@j@j@k@k@l@l@k@j@g@h@m@i@i@i@f@h@h@h@h@h@h@h@h@h@h@h@g@g@g@f@n@]@o@>+Y.~@p@f+q@r@f@h@h@h@f@s@e@q@}@<@t@u@$@v@h@j@k@j@g@f@n@`+c+w@x@V W )@y@z@$@s@h@j@k@k@k@l@k@j@h@r@A@g+k+0+B@C@#@r@f@g@j@k@k@j@h@s@$@D@E@F@[.v * ", " + G@j.]+H@I@%@g@J@K@L@M@N@O@W+P@Q@R@R@R@Q@S@P@=@W+[@[@W+T@U@U@V@W@X@Y@Z@`@ #.#+#@#<@U@U@##$#%#V@&#*#=#=#-#*#;#*#>#,#'#)#!#~#{#h@9@]#(@^#:@p++@r@h@/#/#(#_#:#<#k@m@e@%@%@[#f@k@}#~#|#1#2#3#g@*@4#5#6#Y @.7#8# @9#0#a#b#c#d#e#f#g#h#i#j@r@X+j#4#k#9@m@l#m#n#o#p#~#q#r#s#v@`+t#x.;.4 ~ ^ ", " ^ % k ;.S.u# @v@k@v# ] w#x#y#y#y#x#z#w#A#] ] ^ ] B#C#C#D# E#C#F#G#H# I#U@v@J#K#L#p+M#%@g@N# O#s@U@k@g@g@k@U@P#Q# R#$#s@;@d@s.S#T#U#V#;@m@W# X#U@k@v@*@%@n@m@k@Y# L@h@X+5+Z#^+| # ^ ", " ) o f 3.`#/@#@g@ $^ .$C#C#+$ @$C##$ $$%$g@&$Z+M#*$V+s@U@=$ -$U@U@U@U@U@U@;$ >$g@$@F+L.A+,$<+k+Z+m@'$)$ !$U@U@k@g@h@j@U@U@~$ {$g@W+p+]$,.2 $ ^ ", " + n J .+^$/$n@k@($ ^ _$:$<$<$<$<$<$<$<$<$<$<$<$[$ }$C#C#|$ w# 1$C#2$ 3$4$5$6$4$7$8$9$:$0$a$b$c$ d$U@h@e@%@*@s@k@U@e$ f$C#C#U@U@C#C#g$ h$k@n@4#i$r.j$@+0@.@s@U@k$ l$m$ n$C#U@U@U@U@U@U@C#o$ ^ p$ q$g@[@r$s.#.5.# ^ ", " ^ @ h =.y.s$ @s@U@t$ u$v$w$x$y$z$A$C#B$C$C$C$C$D$E$ F$C#C#G$ H$I$ J$C#K$ L$M$S.S.S.S.S.S.S.S.S.S.N$w# O$U@U@j@h@g@k@U@U@P$ Q$ O#f@C#C#C#C#R$H# H# S$U@s@.@k+u.T$v.w+]@s@U@U$ V$W$ X$C#C#C#U@U@U@C#C#Y$ Z$`$ %h@-@.%U#{.k % ' ", " ^ ; D <$F.p+[@h@+%] @%C##% $%%%C#C#&% C#*% =%C#&# -%;% >%C#U@U@U@U@U@U@,%H# '%)% |$C#C#C#C#p# ^ !% A#~%h@[@/@{%]%X.s$*$9#U@^% /%&+ (%C#C#C#C#C#C#C#C#_% :%<% [%h@@@b+}%$.|%@ ' ", " ] b@1%M+2%3%n@l@4% 4.C#5% 6%C#C#C#7%^ C#R# 8%C#-# 9%5% 0%C#C#U@U@U@C#C#a% b%c%d% e%C#C#C#C#f% g%h%i% j%k@&$k%l%>+r+k+u@r@U@m% n%[$ ] o%C#C#C#C#C#C#C#p% q%r% H#V+m@;@j+r.%.i & ", " s%t%u%v%w%x%y%z%A%C#B% C%D%E%F%^ 4.C#5% G%C#C#C#R@H% C#I% J%C#:# K%L% M%N%O%^.6$P%Q%R%S% y#T%C#C#C#C#C#C#U% V%W%e# X%Y%C#C#Z%& `% &.& +&U@v@`+o+p@@&x+.@v@U@#& $&%& &&C#C#C#C#C#C#C#*& =&-& y#R@i@`+9+z.S ;&* ", " ^ >&,&'&)&!&~&{&]&^&/&(&_&:&<&C#[&}&|&U@U@C#C#1& 4.C#5% ^ 2&3&4&5&6&7&C#C#C#8&G# C#b@ ^ 9&C#b+ 0&a& b&C#C#C#C#C#C#C#c&d&e&f&)%g&C#C#C#C#C#C#h& i&j&k&] l&C#C#m& ] n&o&p& q&c%g@$@5@m+V#e+r&i@U@s& t&u& v&C#C#C#C#C#C#C#w& x&7$ y&8&i@ @0+B.U 8 / ", " Q#z&'&A&B&C&D&E&F&G&H&H&I&J&K&L&M&N&O&P&Q&C#Q&U@U@C#C#R& 4.C#5% Q$S&C#U@U@T&U@U@U@C#U&V& W&Q# A#X&C#Y& Z&`& *C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#.*+* @*#* $*%* &*C#C#** =*-* ;*$% >*k@r@@@z@g+}@9@h@U@P ,*'* )*C#C#C#C#C#C###!* ~*{* ]*'$s@u@^*|+/*s + ", " (*_*:*<*[*}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*U&i*P&k@U@C#j* 4.C#5% k*C#U@U@U@k@k@U@U@C#C#l* m*y# w#n*C#o* p*&* q*r*s*t*u*-$N#v*w*x*r@C#C#C#C#C#C#C#C#y* e$z* A*B* C*D*E*H# F*G* H*I* N%U@g@n@-@;@W+r@k@U@#& J*K* L*C#C#C#C#C#C#)*^ M*N* O*U@v@*${@)@P*Q*R*S*z#w#H#^ ", "T*U*V*W*X*Y*Z*`*2* =.=`*+=3*@=#=$=%=&=*===-=;=>=,='=)=!=~={=##s@l@U@#% 4.C#5% ]=C#U@k@s@e@e@m@k@U@C#^= z%H% H%/=C#(= _=:= J$C#C#C#C#C#C#C#C#<= [=}= |=1= 2=<= A#3=4= 5=6= )$7=U@g@9#r@s@g@U@U@m% 8=9= E*C#C#C#C#C#C#0= a=x b=C#l@c=d=e=f=g=h=h=i=j=k=l=m=n=o=p=q=r=s=t=k${ ", "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=X=Y=R@g@U@Z= 4.C#5% `=U@k@r@X+]@ @#@s@l@U@ - .-z# 5=+-C#@- #-r% 4&C#C#C#C#C#C#C#C#$- A#%-] t$&- *-=- --;- >-,- '-U@U@k@k@k@U@U@C#{* )-!- ~%C#C#C#C#C#C#>$ ~-{- 0%C#l@]-^-/-(-_-:-<-[-}-|-1-2-3-4-5-6-7-8-9-0-a-X$ ", "D&Z*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-Y%m@U@E- 4.C#5% F-U@f@V+/$p+G-M#%@g@U@k* H-S% I-C#C#/% J-K-c$c$c$c$c$c$c$c$c$L- $%S&C#C#C#C#C#C#M-N- O-P- Q-R- S-T- $-U- ^%Q&U@U@U@U@U@C#C#L% V-A* z$C#C#C#C#C#C#>- _=W- X-C#P&Y-Z-`- ;.;+;@;#;$;%;&;*;=;-;;;>;,;';);!;~;{; ", "];1*^;/;(;_;:;<;<;[;};G=|;1;2;3;4;5;6;7;8;9;0;a;b;c;d;e;f;g;h;i;s@U@j; 4.C#5% k;U@s@l;p+{@G+F+-@f@U@m; 7%w# n;C#C#/% W.o;p;q;r;s;s;t;u;v;w;x;y; z;C#C#C#C#C#C#A; B;C; **D; =-E;w# )$F;^ ] G;C#C#U@C#C#C#C#H; I;(% J;C#C#C#C#C#C#K; K%X$ X-C#P&L;M;N;O;P;Q;R;S;T;Q;U;V;W;X;Y;Z;`;:* >!;.>+> ", "@>#>$>%>&>*>=>->;>>>,>'>)>!>7;~>{>6;]>^>/>(>_>(%:>X%<>[>}>|>1>g&g@U@2> 4.C#5% 3>U@r@*$7+4>:@p+Y+m@U@5 5>)$ 6>C#C#7> c@8> C;C#C#C#C#C#C#v; 9>0> ] a>)$ b>c> V%d> e>C#C#C#C#C#C#C#f> g>] h>C#C#C#C#C#C#e# `$i> j>C#P&L;^-k>l>m>n>Q;R;S;o>p>q>r>s>t>u>v>w>x>y>z>A> ", "B>C>D>E>9;F>G>H>,>I>8;J>K>L>M>N>O>P>Q>R>:>R>Q>Q>Q>Q>S>T>U>V>1>W>P&U@X> 4.C#5% Y>U@[#>@8+{%Z>o+;@i@`> , .,H# +,C#C#@, #,$, %,C#C#C#C#C#C#&, *,2$)$ .&=, -,N% 0>;, >,'$C#C#C#C#C#m*^ A#,, ',C#C#C#C#C#C#), !,i> ,-Q&P&~,{,],^,/,(,_,:,<,[,},|,1,2,3,4,5,6,7,8,9,0, ", "a,b,c,d,e,f,f,g,h,i,/>)>_>j,Q>k,l,Q>Q>R>:>R>R>R>Q>Q>S>m,n,o,p,q,l@U@r, 4.C#5% s,U@[#}@8+{%H@o+;@i@t,u, v,] w,C#C#x, y,z, A,M+M+M+M+M+M+M+M+M+M+B,C#C#C#C#C#h%S% C,D, z#E,^ A*F,S% ] G,C* H,C#C#C#C#C#I, !*J, <#C#C#C#C#C#C#K, L,k$ M,Q&P&Y=N,O,P,Q,R,S,T,U,V,W,X,W,Y,Z,R,`, '.'+'@'#' ", "$'%'&'*'N>='-';'>'j,,'''Q>Q>Q>)'!'~'''{']'G>^'/'R>Q>('M,H*_':'<'T&h*5= 4.C#5% ['U@[#>@j+K+}'p+@@m@|'(% }@^ R&C#C#1' 2'3' 4'C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#5' 6'7' 8' }$^% 9'0' a'b' *c' f$C#C#C#C#C#d' e'f' g'C#C#C#C#C#C#h' i'k$ ^=Q&l@j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'A'B'C'@'D' ", "E'F'1*G''','H'j,>'>','I't=J'K'L'M'N'O'P'Q':-R'S':>Q>T'U'V'W'X'<'Q&n*w# 4.C#5% Y'U@r@*$Z'M$v*G-U+f@P@w# M# `'C#C# ) .)+) @)C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C##) $)%) >&&)H# *)=) -);) / >),) '))) ]*l@C#C#C#C#!) >,~) -#C#C#C#C#C#K${) i']) ]*c&'$j'k'^)/)()_):)<)[)})|)1)2)Z,3)4)5)6)7)8)9)0) ", "a)b)y=c)d)e)f)H'>'j,g)h)i)j)k)l)m)n)o)p)q)r)s)t)''R>u)v)w)x)y)z)Q&A)^ 4.C#5% B)C#'$A$C)D)E)F)G)T&H)^ I) J)C#C#d@ K)L) M)c&C#C#C#C#C#C#C#C#C#m*/=C#C#C#C#N) O)P)^ Q)C#R) S)T)U)H# V)C#W) X)i% Y)C#C#C#C#Z) `) ! +*.!+!@!I##&#! $!%! d)&!l@*!=!-!;!>!,!'!)!!!~!{!]!^!/!(!_!:!':>6!7!8!9!0!>>a!b!c!d!e!f!(*Q>R>g!h!i!j!k!`>C#Y# 4.C#5% l!C#m!n!o!p!q!r!s!o%t! u! A*C#C#v! w!x! ] $$y!z!A!8$0$B!C!D!E!F!w,l@C#C#M-Q# G!H! I!C#J! K!L!M! N!C#O!A# P!Q! f$C#C#C#C#<= S*R!S!^ A#T!0>),@!U!V! Q$S&l@W!X!-!Y!Z!~ ", ",~'~)~M=!~~~e)H'g),'{~]~^~/~(~p)_~:~m)<~G>[~{-:>Q>R>}~n$|~1~',2~C#3~ 4.C#5% 4~T&P&g&5~6~7~8~##T&+% 9~ y;C#C#*# 0~a~ b~%$C#C#c~ K-d~ e~C#f~g~ =-h~i~ #!j~C#o%6> *-k~ l~l@C#C#C#m~ g$n~o~p~H# G#q~r~U=s~|=t~u~v~+&,%Q$ z#w~l@]-x~y~z~A~B~C~D~E~F~G~H~I~J~K~L~M~N~O~P~@'Q~^ ", "R~S~T~1*U~V~W~f)H'X~Y~Z~`~ {.{h)>>+{@{#{R>:>Q>''(*${%{&{*{={-{;{C#>{ 4.C#5% ,{C#c&z)'{){!{~{U&C#{{ ]{ x#^{C#/{ ({_{ p%C#C#C#:{ ] K$$$ y#M-C#C#N% P% <{C#C#C#&, [{L- }{C#C#C#Q) ] ;)|{1{2{3{I#9=S% 4{ ] 5{l@]-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{;'f)f)W~u{;'~~V~R>~~>'V~:>R>I'v{w{!>(>k,x{y{z{A{B{C{c&C#D{ E{F{d% C!Q&'$G{H{I{J{K{;{Q&(= )$P#C#V@ L{W#k&>$o~M{N{N{O{W@P{Q{R{ N!C#C#C#S{ S%T{ U{C#C#C#L, V{C#C#C#W{ X{Y{ Z{C#C#C#`{ ] ^ j>%& .]'$g&+]@]#]$]%]&]*]=]-]4);]>],]*]']j{)]!]~]{]]]H# ", "_*^]/](]_]:]j,f)W~f),'>'>'j,g)P>l,!><][]}]H>|]1]2]3]4]5]6]7]8]c&C#9] I$;{T&j~0]t!a]b]c]T&z; d]C#e] 5=f]g]h]i]j]k]l]F% -m]G#z# S%R@C#C#C#j> n]C#C#C#;{o] p]C#C#C#C#q] r]C#C#U@U@s]t]u]A# v]w]'$x]H# y]l@z]A]B]C]D]E]F]G]H]I]J]K]L]M]N]O]j{P]Q]R]S]T]S% ", "U]V]W]2!X]Y]>'5!H'f)Z]{-l,`]l,W- ^.^+^@^#^$^%^&^*^=^-^;^>^,^'^c&C#)^ ] !^T&##~^{^]^^^##l@/^ J,C#(^ B%C#C#C#n*{) _^C#C#C#C#g$ :^U@U@U@U@<^^ d%T%U@U@l@k@k@l@x$[^}^Q# X{w]U@U@U@P&|^H%!*u,d)O)B 1^2^&#'$g&3^4^5^6^7^'!8^9^0^M]0^L]a^+~O]*~b^c^d^e^f^y# ", "A#g^h^i^j^k^''K'L>l^m^d,n^o^p^q^r^s^t^u^=^v^w^x^y^z^A^B^C^D^E^9#l@F^G^z*z*z*H^H^z*z*z*A)l@I^J^7~K^L^j~P&.,>-M^N^x!O^~#P^ )Q^f@Q&]-R^<$<$<$<$<$<$<$<$<$<$<$<$e.R^R^e.e.S^C#C#C#0]T^U^V^W^X^Y^Z^`^ /C#C#Q&C#./+/@/u~#/$/.*l@k@k@l@k@'-%/&/k.<$<$*/=/-/;/k@m@r@e@[#v@f@j@k@>/)#,/'/)/k@k@g@k@k@Q@w~##8&h*c&Q&Q&T&Q&;{b]!/~/{/]/^///(/_/:/(,('()(!(~({(](^(/(((_(:&&!:(;{;{f@P&<&c&c]##T%<(w/[(}(|(1(2(3(4(5(Y%T%T%T%T%M-j~<(6(6(M-T%T%.*######l#c]c]##)/)/c]c]c&7('$8(%$<&%$2~:(%$9(0(0('$A%0(a(a(b(c(d(d(d(e(f(9(;{%$:(:(;@u@*$`+U+$@%@&$n@n@n@&$*@g(U+}@/@1+p@i$1+r$<@>@;@W+$@V+@@>@]#h(i(j(g&k(I^l(q,/=^^F#m(n(o(p(q(r(s(t(u(v(w(x(y(z(A(B(C(B(D(E(F(B'G(H(9,I( ", " J'J(K(L(M(N(O(@(P(Q(R(S(T(U(V(W(X(Y(Z(`( _._+_@_#_$_%_&_*_=_-_;_L^>_F#,_b]'_)_!_~_{_]_^_/_(___:_<_[_}_|_1_{_2_2_2_{_3_4_5_6_7_8_9_2_2_0_a_a_0_a_b_c_d_e_f_g_h_i_j_i_k_l_m_l_n_o_p_p_q_r_p_s_t_u_v_w_x_y_z_A_B_C_D_E_F_b+G_^*a+c+D+f+I@]#5@]#D@H_e+r$I_M.R.F@J_K_u.{%{@b+4+F+L_M_N_O_P_Q_R_S_T_U_V_W_X_x~Y_Z_`_ :.:+:@:#:$:%:&:*:=:=:-:;:<)>:,:':):!:~:{:]:^:/: ", " m$(:_:|*::<:[:}:|: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:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:X:Y:Z:`: <.<+<@<#<$<%<&<*<=<-<;<><,<'<)Q[,['[)[![~[{[][^[/[([_[:[<[[[}[|[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[X[Y[Z[{.`[T =.L |.b.!@ }.}+}S#T#d.M 3@4.| v @}#}$}%}&}*}=}-};}>},}'})}!}~}{}]}^}/}(}_}:}<}[}}}|}1}2}3}4}5}6}7}8}K<9}0}a}b}c}d}e}f}g}h}{:i}j}k} ", " l}X/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}X}Y}Z}`} |.|+|@|#|$|%|&|*|=|-|;|>|,|'|)|!|~|{|]|^|/|(|_|:|<|[|}|||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|p <.7 5 :.i.e y|n.z|_.A|`.C B|C|D|E|F|G|H|I|J|K|L|M|N|O|M|P|Q|R|S|T|U|V|W|X|Y|];Z|`| 1.1+1@1#1$1%1&1*1=1-16,o>;1>1,1'1)1!1~1{1]1^1/1(1_1 ", " :1<1[1}1|111213141516171819101.1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1`1 2.2.2.2+2@2#2$2%2&2*2=2-2;2>2f|,2'2)2!2~2{2]2^2/2(2_2:2<2[2}2|21222324252~ * / @ # ; > o b@b@b@6272829202a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2-'K'[]p2q2r2s2t2u2v2w2x2y2z2A2B2C2D2E2F2G2H2D2I2v>J2K2L2M2N2O2P2Q2^1]]R2S2 ", " I'T2U2V2V2W2X2Y2Z2Z2b/`2 3.3+3@3#3$3%3&3*3=3-3;3>3,3'3)3!3~3{3]3^3/3(3_3:3<3[3}3|31323334353637383936303a3b3c3d3e3f3g3h3b3i3w(j38^k3@~)!l3m3n3n3o3m3p3q3r3s3t3u3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3 ' ^ ^ ]V3W3X3Y3Z3`3 4.4+4@4#4$4%4&4*4=4-4;4>4,4'4)4!4~4{4]4^4/4(4_4:4<4[4}4|4142434445464748494+^)104a4b4c4g^d4d4e4A5,5'5)5!5~5{5]5^5/5(5_5:5<5<5[5A3}5|515259)3545556575@'859505a5b5c5d59-e5f5R3S3g5h5 S%i5j5k5l5m5n5o5p5q5r5])s5t5u5v5w5x5y5z5A5B5C5D5E5^4F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5R5C2W5X5Y5Z5`5 6.6D<+6@6#6@6$6%6&6*6^1=6R2-6 ", " ;6>6,6h^'6)6!6~6{6]6^6/6(6_6:6<6[6}6|616263646566676869606a6b6c6d6e6<*f6g6h6i6j6I]k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6A3X6Y6Z6`6 7.7+7@7#7$7%7&7*7=7-7;7>7,7'7)7P3!7~7{7m^]7^7/7(7_7:7<7[7}7|717!'_>r5273747576777879707a7b7c7d7'4[!e7f7g7h7i7j7k7l7m7n7o7p7q7r7U5U5s7t7u7v7w7x7y7z7 6z7z7A7B7C7D7o>E7F7G7H7I7J7 ", " /:K7L7M7N7O7P7O7O7Q7R7S7T7U7V7W7#3X7Y7Z7`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:8<8[8}8|8*~18]528384858;56878889808a8b8c8d8e8f8g8h8i8j8k8r3l8m8[5n8o8p8q8r8s8t8u8v8@7w8x8y8z8A8B8C8D8E8F8G8H8{]I8~7{7J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8`8 9.9+9@9#9$9%9&9i>`]*9=9-9;9^4>9,9'9)9!9~9{9]9^9/9q7!;(9_9t7:9<9%1[9}9w76,|9192939495969s>79G7899909 ", " a9b9c9h^d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9A9B9C9V*D9E9,8F9G9H9I9J9n3K9L953a3d3M9N953O9P9i6Q9R9K9S9T9U9V9W9X9Y9Z9`9 0.0+0@0#0$0%0&0*0=0-0;0>0,0'0)0!0~0{0]0^0/0(0_0:0<0[0}0|01020304020506070a-80I89000a0q5q5b0c0d0n)e0f0g0h0i0j0k0l0r5m0n0o0p0q0r0s0t0u0v0w0k$x0y0z0A0B0C0D0E0F0H5D0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0;1y2W0X0Y03/@1Z0w2`0+^^: a ", " ^ R;.a+a@a#a$a%a&a*a=a-a;a>a,a'a)a!a~a{a]a^a/a(a_a:ab,b'b)b!b~br=X8&9{b]b^b/b(b_b:bc,c'c;c)c!c~c{c]c^c/c(c_c:cd,d'd)d!d~d{dVb]d^d/dH8(d_d:de,e'e)e!e~e-2i4i4O<{eO<]e^e/e(e_e:ef,f'f)f!f-[~f{f]f^f/f(f_f:fg,g'g)g!g2/~g{g]']g^g/g(g_gfb:ghGaGa,h'h)h!h~h{h99]h^h/h(h_h:h~hie!,i'ixd)i!i~if^{i]i^i/i_3(i_i:ij,j'j)j!jr0~j{j]jChce^j/j(j_j:jk,k'k)k!k~k{k]k^k/k(k_k:kofRkSkTkUkVkWk_:Xk;8YkZk`k l.lD9+l@l#l$l%l&la/*l}4=lyg-ls4;l>l,l'l)l!lsb~l{lUj]lWjXj^l/l(lU6[h_l:lV~GlHlIlJlKlLlMlNlpgOlPlQlRlSlTlUlVlWlXlYlZl`l m.m+m@m#m$m%mBd0,J2&m(9B<*m<-=m-m;m>m&m,m'm)m!m99~m ", " q>.1{m]m^m/m;f(mJjx2_m:mn,n'nO5)n!n~n{n]n^n/n(n_n:no,o'o)o!oH8~o{o]o^o/otl(o_o:o`m.j~Coa4Q2Doo499Eo ", " FoK2UbegGoHo 3IoJoKoLoicMoNoOoPoQoE'RoD}vd^f;lcnSoToUo[*VoWoXoYo>8Zo$f{d`o p.p+p@p#p:h$p$p%pT~&p*p=p-p;p>p,p'p)p!p~pj}yf{p]p^p/p:h(p_p:p{080q@aKj/a,q'q)qv2f|!q~q{q]q^q~d/qV*(q_qK(>2:qr,r'r)r!r~r{r]r5jSpSp^r/r(r_r:rKe$1q7orqQ2rqSrFfwrTrblJmUrVrWrXrYrZr`r s`i.s.jba5e@jhhjh$j|o1o+sTq@s#s$s%s&snhu4#ggkScie*s=s-sNl;s>s,s'sTc)s!s~s{s(g]s^s/s(s5j1n_sSp92:sxs!;!;yszsDrAsBsCs*eyf~pZ6DsyfyfEsEiFsurGs9lHsIsJsyfDsKs6hLsMsNsOsPsQsRsSs;eFfdcTsejo8UsVsWs^dXsYsZs`s@oi4 t.t+t@t#t$t%t&t*t=t]k-t;t>t,tZi't`ih{Ufga5e8e7e}osp)ttp!t~t{t]t^tX*G#&sa0/tJ5gk(t_t:tu80,u'u)u!u~u@o{u]u^u/u(u(e_u:uT]VbLuMuvbV7>~Q5f|R/NuIiI7Ou ", " H%PuQuRuSuTuUuVuWuXuYuV]Zu`uij v.v+v@v#v$v%v&v]q*v=v-v;v>v,v'v)vfgJ(=[Lv'4gkMvNv,nOvPvwkQvRvSvTvUvVvWvXvYvZv`v w.w+w@w3ti7,g#w$ww4%w&wL7|rZ5fs*wi}=w-w;wNuTnI7,; ", " >w(akg,w'w)w!woj_i~w{w]w^w/w(w_wxd:wl5w6w5n=>7w8w9w0wOuTskwlwfvmwnwowpwv3-lqwrwqwswtw#quwvwwwFfxwomywJmzwAwBw;tCwDwEwFwGwb8UfOqxKh,x'x)x!xlvV79p~xc4{x]x441/owdccc^x ", " /x(x_x:xy,y^4g7'y)y!y47Xl~y{y]y^y/y:4(y_y:yljykylymynyNt'8oypyqybvry+3=lsytyuyvyAtwyxy4n/pyy.u)p'pjqzy!pAyUsBy1v{k=p!pCyDyEy0qFyGy!eR2HyHrIyEsJyKyLyMyNyOyPyQy>uqvRySyYtTyUyVyWyXyYyZy`y z.z+z,u@z#z$z%z&z*z=z-z;z>z,z'z`m)z!z~z{z]z^j-y^z;g/z(z`]_z:zxzL7yzzz;wAzzxBzCz ", " DzEzFzGzvsHzIz)iJzKzLzMzNz!]OzPzQzRzSzTzUzVzWz+v bigXzarYz,~Zz`z AC2D}.A+A`p@A#A$A%A]hSsjq7l&A*A=A-A;Ayf>AGsEs:h,A'A)ASs8q!A}vEsQe!e~e~A{A]A^A/A6h(A_A:AP>%!e70tjAV!N5kAlAmA^jnAmkoApAI5qArAsAtAuAvA'4wAxAyAzAAABACADAEAFAGAHAIAJA*fKALAMAleIu_s+mNAOAPASsQAMaRASATAUAVAMB,B'BGj)B!B4w~B1;{B0s]B!;^B/B(B}aP4_BGq:B~vOhswgB#qhB*61x0q~hiBjBIrkBlBmBnBoBpBqBVeVeVerBrBX8sBtBuB%bOpvB+gApwBxBL5yBzBABBB%rCBDBEBFBGBHBIBJBKBLBMBNBOBPBQB_tRBSBDATBB0UBO~VBWBIuSproXBYBHhZB`B C^].C+C@C#C$C%C&C=7*C ", " =Cigzb-C;C)yt4>C,C'C)C!C^w~C{C]C^Cyb+6_B/C(C_C>8:CD,D5jro_s'D)D4q!D]k~D{D^dw9Qu]D^D/Dn{]e(D ", " Q#_D:D4/q{6D7D'm8D9D0D+laDbDcDdDf7>2eD7gfD(:-l/CgDhD)e~piDiD~pjDiD,k,k~pkD~piDiD~pZtj}kDlDmDnDOnoDpDqDrDsDo8tDuDvDwDxDyD@t.ozDADBDlw@tCDDDs8lw9vEDFDGDHD9vIDJDKDLDMDlBNDODPDQDRD='SDTDUDVDWDr5XDYDZD`D E%4.E+E@E#E$E%E&E*E=E-E;E>E,g,EqAlzEDjxF,F'F*x)F!F~F{F]F^F/F(F_F:FG,G'G)GWEAx8A!G~G{G]GC7^G/G(GNh_Gvz'm:G]GynGeUGVGWG(1XG ", " YG0dZG2C`G H.H1aEq+H@H#HKF2w$H%H]q&H*H=H@a-H;H>H,H'H)Haxax!Hmn~H{H]H^H/H(H_HXz:Hrm<5omomtm8fH<1gHhHiHjHkHlH/AmHnHoHpHqHrHsHtHuHvHwHxHyH&EzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSH;rTHUHVHWHXHYHZH`H I.I+I@I#Io0$I%I&I*ImG=I-I;Iej>I,I'I)I9E!I~I{I]I^IyszxZt/I ", " H#:rE'Ru(I_I:IJ,JE0'J)J!J~JO5{J.v]J^J/J(J_J:J>EA8J9J0JBge!S5e^JEaJ ", " N'bJcJdJeJK,K'K)K!K~K{K]K^K/K(K_KJA+m:KgKUohK(uiKW2jK,BarkKlKmKF>nKY;oKpKqKR|2wrKsKfsibcntK|I<*K2K2yL,L'LX$)L&y!L)sGz~L{L]L^L/L(L_L:LdLUbeLfLgLhL&l;8iLRuEBR|jLkLlLmLnLpKoLegnnYbK2y<^G^G[q;8^GBdBd[q<*UtpLqL&qrLsLtLzDuLvLwLxLGx2G-uIx2GrxyLlBzLmH=FALBLBLCLDLELELFLGLGLHLILJLALlBKLxCLLMLNLOLPLFJQLeHRLSLTLUL+BJ=FiVLWL(rXLYLZL`L M.M+M@M#M$M%M&M*MTc=M-M;M>M,M'M)M!M~M{Md6]Mc2^M/M(M_M:Mn0d4M5M6M7M8M9MZ*0MaMX*Ey{vbMcMdMeM^efMgMSxhMiMtvjM4/8ykMjCqxzflM ", " }-mMnMoMpMqMnKrM(rV2sM}xns4sDjarX/=[gs~3tMtM!1K2uK^G[q^GBduKy<<*Zo~d/]jIa9R>%nI'uMr5]'vMwMxMyMzMAMBMCMDMEMFMGMHMIMCMEMJMKMLMMMMMNMrBVe#{''R>OMPMQMRMSMTMUMVMWMXMYMZM`M N.N+N@N#N$N%N&N*N=N-N;N>Nfn,N3b'N)N~M!N~N{N]N:M^N/N(NUK_N:N INJNKNLNMNNNONPNQNRNSNTNUNVNWNXNYN MZN`NJN O*K.OuA+O@OSJ#O$O%OGG&O*O=O-O;O>O,O'O)O!O~O'j{O]O^Oxn/O(O_O:OmOf^wnnO5OoOpOqOrOar{i=ib/sO~dENtOw9C2fsfs!1c454^G^G54=luOvOwOsOxOyO] )$zOAOBOAOCODOEOFOGOHOIO2LJOKOLOMONOOOPOQORO!&SOTOUOVOWOrkXOYOZO`O P.Psh+P@P#Pg2$P%P&P*P=P-P;P>P,P'P)P'j,y$I!Pb2~P{P]P^PfN/P(P_P0A4/:P.u12P5P6P7n7PV7U7zyoI8P9P ", " A#0PS~CNaPbPKoxtcPENar{ib/&a{idPD}{f~3~3fstMK2BdK2C2&l[1ePfPE'gPhPiP jPkPlPkPmPnPoPpPqPrPsPtPuPvPwPxPyPzP=EAPBPCPDPEPFPGPHPIPJPKPLPMPIOCGNPOPPPQPRPSPTPUPVPWPXPYPZP#g#g`P Q.Q+Q@Q#Q$Qb,gN%Q0M&Q*Q(k-2'hYt:h%Aj==Q-QTL=G;Q>Q;G,Q,Q'Q)Q!Q~Q{Q]Q^QUn/Q_h(psI(QlM ", " _Q:QH# -R;RlPkPkPkP5Q5QlP>R,R'R)R!RnQ~R{R]R^R/R(R_R:RS,SOB'S)SIO!S~SOPOH{SfQ]S^S/S(S_S:SRQMmPVRkSlSmSnSoST,TAO'T>R'T~N~4)T!T~T{T]T^TNH/T(T_T:TwT9;xTyT zTAT;LQM'T>RLNBTCTDTETFTGTHTITJTKTLTKOMTNTOTPTQTRTSTTTUTVTWTXTYTYT|J9Mw=8*ZTP(`T U.Um^] w#LG+U@U@U#U$U@Uc7@U@U%U[~&UMAot(>X~] ", " *U=U-U'T;ULNLN>U,U'U)U!U~U{U]U^U/U(U_U:URbUcUdUeU JfUgUhUiUjUkUlU*NmUnUoU6*pU.Sz=y=qUrU2!.=sUtU.UkR^ ", " ^ uUvUC>wUbUbUxUyUzUAUBUCUDUEUFUGUHUIU7McT8*JU|KFA`*z=KULUMUNU^ "}; tiemu-3.03-nogdb+dfsg/pixmaps/romdump.ico000077500000000000000000000004761220314353500204400ustar00rootroot00000000000000(( À€€€€€€€€€€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððÿÿÿÿðððÿÿÿÿÿÿðððððððððððððððððÿÿÿÿÿÿðtiemu-3.03-nogdb+dfsg/pixmaps/romdump.xpm000066400000000000000000000161661220314353500204720ustar00rootroot00000000000000/* XPM */ static char * romdump_xpm[] = { "48 48 140 2", " c None", ". c #010101", "+ c #000000", "@ c #040404", "# c #0F0F0F", "$ c #1B1B1B", "% c #212121", "& c #222222", "* c #202020", "= c #1F1F1F", "- c #3F3F3F", "; c #6F6F6F", "> c #898989", ", c #909090", "' c #8E8E8E", ") c #878787", "! c #818181", "~ c #808080", "{ c #868686", "] c #8D8D8D", "^ c #919191", "/ c #8F8F8F", "( c #C4C4C4", "_ c #EFEFEF", ": c #F7F7F7", "< c #F1F1F1", "[ c #EEEEEE", "} c #E8E8E8", "| c #E1E1E1", "1 c #E7E7E7", "2 c #EDEDED", "3 c #F0F0F0", "4 c #F6F6F6", "5 c #FFFFFF", "6 c #F4F4F4", "7 c #FEFEFE", "8 c #F3F3F3", "9 c #EBEBEB", "0 c #D8D8D8", "a c #9B9B9B", "b c #999999", "c c #CFCFCF", "d c #D7D7D7", "e c #A0A0A0", "f c #A2A2A2", "g c #E0E0E0", "h c #949494", "i c #333333", "j c #323232", "k c #929292", "l c #121212", "m c #060606", "n c #404040", "o c #EAEAEA", "p c #777777", "q c #050505", "r c #787878", "s c #151515", "t c #888888", "u c #141414", "v c #ECECEC", "w c #7E7E7E", "x c #101010", "y c #131313", "z c #989898", "A c #9A9A9A", "B c #D0D0D0", "C c #7F7F7F", "D c #F2F2F2", "E c #F5F5F5", "F c #E4E4E4", "G c #DEDEDE", "H c #E5E5E5", "I c #D9D9D9", "J c #858585", "K c #717171", "L c #707070", "M c #767676", "N c #7D7D7D", "O c #7C7C7C", "P c #A1A1A1", "Q c #0B0B0B", "R c #111111", "S c #0D0D0D", "T c #090909", "U c #0C0C0C", "V c #1E1E1E", "W c #5C5C5C", "X c #797979", "Y c #BFBFBF", "Z c #E9E9E9", "` c #CECECE", " . c #848484", ".. c #A3A3A3", "+. c #E2E2E2", "@. c #939393", "#. c #8C8C8C", "$. c #313131", "%. c #424242", "&. c #AAAAAA", "*. c #0A0A0A", "=. c #1D1D1D", "-. c #9C9C9C", ";. c #343434", ">. c #0E0E0E", ",. c #727272", "'. c #CCCCCC", "). c #D3D3D3", "!. c #2D2D2D", "~. c #242424", "{. c #FBFBFB", "]. c #020202", "^. c #E3E3E3", "/. c #656565", "(. c #282828", "_. c #272727", ":. c #5F5F5F", "<. c #5E5E5E", "[. c #FDFDFD", "}. c #FAFAFA", "|. c #191919", "1. c #D2D2D2", "2. c #6E6E6E", "3. c #D1D1D1", "4. c #1C1C1C", "5. c #9F9F9F", "6. c #A8A8A8", "7. c #484848", "8. c #757575", "9. c #383838", "0. c #1A1A1A", "a. c #3A3A3A", "b. c #030303", "c. c #252525", "d. c #575757", "e. c #8B8B8B", "f. c #414141", "g. c #181818", "h. c #6A6A6A", "i. c #C0C0C0", ". . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . ", ". . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . ", "+ + @ # $ % & & % * = = * % & & & % * = = * % & & & % * = = * % % * = = * % & & & & & % $ # @ + ", "+ + # - ; > , , ' ) ! ~ { ] ^ ^ ^ ] { ~ ~ { ] ^ ^ ^ ] { ~ ! ) ' ' ) ! ~ { ] ^ ^ ^ / / > ; - # + ", "+ + $ ; ( _ : < [ } | | 1 2 3 < 3 2 1 | | 1 2 3 < 3 2 1 | | } [ [ } | | 1 2 3 < 3 3 4 _ ( ; $ + ", "+ + % > _ 5 5 6 < 7 5 5 5 8 2 9 2 8 5 5 5 5 8 2 9 2 8 5 5 5 7 < < 7 5 5 5 8 2 9 2 4 5 5 _ > % + ", "+ + & / 4 5 0 a b c 5 5 d e ) ~ ) e d 5 5 d e ) ~ ) e d 5 5 c b b c 5 5 d e ) ~ ) f g 5 4 / & + ", "+ + & / 3 8 h i j k < 6 e - l m l - e 6 6 e - l m l - e 6 < k j j k < 6 e - l m l n f 4 3 / & + ", "+ + & , 3 o p q q r 9 [ > s + + + s > [ [ > s + + + s > [ 9 r q q r 9 [ > s + + + s t 2 3 , & + ", "+ + & , 3 o p @ @ r 9 [ t u + + + u t [ [ t u + + + u t [ 9 r @ @ r 9 [ t u + + + u ) 2 3 , & + ", "+ + & , _ v w x x w v _ ' = + + + = ' _ _ ' = + + + = ' _ v w x x w v _ ' = + + + = ' _ _ , & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + + + & / _ v ~ y y ~ v _ / & + + + & / _ _ / & + ", "+ + & , _ v w x x w v _ ' = + + + = ' _ _ ' = + + + = ' _ v w x x w v _ ' = + + + = ' _ _ , & + ", "+ + & , 3 o p @ @ r 9 [ t u + + + u t [ [ t u + + + u t [ 9 r @ @ r 9 [ t u + + + u ) 2 3 , & + ", "+ + & , 3 o p q q r 9 [ > s + + + s > [ [ > s + + + s > [ 9 r q q r 9 [ > s + + + s t 2 3 , & + ", "+ + % ] 2 < k j j k < 6 e - l m l - e 6 6 e - l m l - e 6 < k j j k < 6 e - l m l - e 8 2 ] % + ", "+ + * { 1 5 c z A B 5 5 d e ) C ) e d 5 5 d e ) C ) e d 5 5 c b b c 5 5 d e ) ~ t e d 5 1 { * + ", "+ + = ~ | 5 5 D D 5 5 5 5 8 2 9 2 8 5 5 5 5 8 2 9 2 8 5 5 5 7 < < 7 5 5 5 8 2 v [ 6 5 5 | ~ = + ", "+ + = ~ | 5 5 E v F G G F o 2 [ 2 o F G G F o 2 [ 2 o F G G H 9 9 H G G F o 2 [ [ 6 5 5 | ~ = + ", "+ + * { 1 5 I f J r K L M N ! ! ! N p K K p N ! ! ! N p K K r w w r K L M O ! ! ) P 0 5 1 { * + ", "+ + % ] 2 8 P n y Q # # x l y y y l R x x R l y y y l R x x R y y R x x x l l S y n P 8 2 ] % + ", "+ + & , 3 2 { y + + T l u y y R x x R l y y y l R x x R l y y y y y y y y l T + + y { 2 3 , & + ", "+ + & , 3 v ~ U + V W X ~ ~ w r K K p N ! ! ! N p K K p N ~ ~ ~ ~ ~ ~ C C X W V + U ~ v 3 , & + ", "+ + & , _ v ~ l T W Y v 6 [ 9 H G G F o 2 [ 2 o F G G F o 2 2 v v 2 2 2 8 v Y W T l ~ v _ , & + ", "+ + & / _ v C l l X v 5 5 6 < 5 5 5 5 3 o Z v 6 5 5 5 5 < o 9 [ _ 2 2 4 5 5 v X l l C v _ / & + ", "+ + & / _ v C l y ~ 8 5 0 a b B 5 5 ` ^ p M ...+.5 5 d @.r w #./ t t f g 5 8 ~ y l C v _ / & + ", "+ + & / _ v C y y C 2 8 h i j @.D D z $.@ + # %.&.5 5 e i m *.=.* s s n f 4 2 C y y C v _ / & + ", "+ + & ^ D _ ! y y ~ 2 o p q q M Z 8 -.;.+ + + >.,.'.).t !.+ + + + + + s t 2 2 ~ y y ! _ D ^ & + ", "+ + ~.z 7 {.t s l ~ 2 o p @ ].; ^.5 I A /.(.+ + _.:.X ~ X <._.+ + + + s t 2 2 ~ l s t {.7 z ~.+ ", "+ + ~.z [.}.t s l C v v w x S ; G 5 5 5 ` ,.|.+ + + !.) ).'.,.S + + + * / _ v C l s t }.[.z ~.+ ", "+ + V w 1.c 2.# s ! v v ~ y x K G 5 5 5 3.M 4.+ + + j 5.[.5 6.n *.+ + * ' _ v ! s # 2.c 1.w V + ", "+ + R 7.r 8.9.].0.) [ v ~ y R p F 5 g 6.M a.*.b.c.d.e.c 5 5 I A /._.+ 0.) [ [ ) 0.].9.8.r 7.R + ", "+ + @ R =.0.. + * ' _ v ~ y l N o 6 f f.>.+ + g.h.i._ 5 5 5 5 D i.<.U s ! v _ ' * + . 0.=.R @ + ", ". . + + + + + + & , _ v ~ y y ~ 2 2 ) u + + + % > [ 5 5 5 5 5 5 9 r l l C v _ , & + + + + + + . "}; tiemu-3.03-nogdb+dfsg/pixmaps/run_1.xpm000066400000000000000000000005221220314353500200200ustar00rootroot00000000000000/* XPM */ static char * run_1_xpm[] = { "16 12 2 1", " c None", ". c #2EF407", " .. ", " ... ", " .... ", " ..... ", ".............. ", "............... ", "............... ", ".............. ", " ..... ", " .... ", " ... ", " .. "}; tiemu-3.03-nogdb+dfsg/pixmaps/run_2.xpm000066400000000000000000000005221220314353500200210ustar00rootroot00000000000000/* XPM */ static char * run_2_xpm[] = { "16 12 2 1", " c None", ". c #FF0217", " .. ", " ... ", " .... ", " ..... ", ".............. ", "............... ", "............... ", ".............. ", " ..... ", " .... ", " ... ", " .. "}; tiemu-3.03-nogdb+dfsg/pixmaps/void.xpm000066400000000000000000000002371220314353500177400ustar00rootroot00000000000000/* XPM */ static char * void_xpm[] = { "8 8 1 1", " c None", " ", " ", " ", " ", " ", " ", " ", " "}; tiemu-3.03-nogdb+dfsg/po/000077500000000000000000000000001220314353500152045ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/po/ChangeLog000066400000000000000000000007041220314353500167570ustar00rootroot000000000000002007-07-19 gettextize * Makefile.in.in: New file, from gettext-0.16.1. * boldquot.sed: New file, from gettext-0.16.1. * en@boldquot.header: New file, from gettext-0.16.1. * en@quot.header: New file, from gettext-0.16.1. * insert-header.sin: New file, from gettext-0.16.1. * quot.sed: New file, from gettext-0.16.1. * remove-potcdate.sin: New file, from gettext-0.16.1. * Rules-quot: New file, from gettext-0.16.1. tiemu-3.03-nogdb+dfsg/po/LINGUAS000066400000000000000000000000421220314353500162250ustar00rootroot00000000000000# Set of available languages. fr tiemu-3.03-nogdb+dfsg/po/Makefile.in.in000066400000000000000000000332211220314353500176570ustar00rootroot00000000000000# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2006 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.16 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: all-@USE_NLS@ all-yes: stamp-po all-no: # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all $(mkdir_p) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: $(mkdir_p) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && $(SHELL) ./config.status $(subdir)/$@.in po-directories force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/po/Makevars000066400000000000000000000034161220314353500167040ustar00rootroot00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Free Software Foundation, Inc. # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = tiemu-3.03-nogdb+dfsg/po/POTFILES.in000066400000000000000000000050071220314353500167630ustar00rootroot00000000000000# List of source files containing translatable strings. # TiEmu source code src/core/ti_hw/dbus.c src/core/ti_hw/flash.c src/core/ti_hw/gscales.c src/core/ti_hw/hw.c src/core/ti_hw/hwprot.c src/core/ti_hw/kbd.c src/core/ti_hw/m68k.c src/core/ti_hw/mem.c src/core/ti_hw/mem89.c src/core/ti_hw/mem89tm.c src/core/ti_hw/mem92.c src/core/ti_hw/mem92p.c src/core/ti_hw/memv2.c src/core/ti_hw/ports.c src/core/ti_hw/rtc_hw3.c src/core/ti_hw/tichars.c src/core/ti_sw/er_codes.c src/core/ti_sw/handles.c src/core/ti_sw/iodefs.c src/core/ti_sw/mem_map.c src/core/ti_sw/registers.c src/core/ti_sw/romcalls.c src/core/ti_sw/timem.c src/core/ti_sw/vat.c src/core/error.c src/core/engine.c src/core/images.c src/core/interface.c src/core/state.c src/core/type2str.c src/core/hwpm.c src/core/dbg/bkpts.c src/core/dbg/debug.c src/core/dbg/disasm.c src/core/dbg/fpudasm.c src/core/dbg/gdbcall.c src/misc/cmdline.c src/misc/files.c src/misc/paths.c src/misc/logging.c src/misc/rcfile.c src/misc/screenshot.c src/misc/tie_error.c src/gui/calc/calc.c src/gui/calc/dnd.c src/gui/calc/keymap.c src/gui/calc/keyboard.c src/gui/calc/keynames.c src/gui/calc/keypress.c src/gui/calc/popup.c src/gui/calc/screen.c src/gui/calc/skinkeys.c src/gui/calc/skinops.c src/gui/debugger/dbg_all.c src/gui/debugger/dbg_bkpts.c src/gui/debugger/dbg_bits.c src/gui/debugger/dbg_cause.c src/gui/debugger/dbg_code.c src/gui/debugger/dbg_data.c src/gui/debugger/dbg_entry.c src/gui/debugger/dbg_heap.c src/gui/debugger/dbg_iop.c src/gui/debugger/dbg_mem.c src/gui/debugger/dbg_pclog.c src/gui/debugger/dbg_regs.c src/gui/debugger/dbg_romcall.c src/gui/debugger/dbg_stack.c src/gui/debugger/dbg_vectors.c src/gui/logger/log_link.c src/gui/about.c src/gui/device.c src/gui/dboxes.c src/gui/filesel.c src/gui/fs_misc.c src/gui/infos.c src/gui/main.c src/gui/manpage.c src/gui/pbars.c src/gui/quicksend.c src/gui/refresh.c src/gui/release.c src/gui/romversion.c src/gui/scroptions.c src/gui/splash.c src/gui/support.c src/gui/tsource.c src/gui/wizard.c src/sound/audio.c src/sound/stream.c # TiEmu GUI glade/calc-2.str glade/dbg_bkpts-2.str glade/dbg_bits-2.str glade/dbg_cause-2.str glade/dbg_code-2.str glade/dbg_data-2.str glade/dbg_entry-2.str glade/dbg_heap-2.str glade/dbg_ioports-2.str glade/dbg_mem-2.str glade/dbg_pclog-2.str glade/dbg_regs-2.str glade/dbg_stack-2.str glade/dbg_vectors-2.str glade/dboxes-2.str glade/device-2.str glade/infos-2.str glade/log_link-2.str glade/pbars-2.str glade/popup-2.str glade/quicksend-2.str glade/romversion-2.str glade/scroptions-2.str glade/wizard-2.strtiemu-3.03-nogdb+dfsg/po/Rules-quot000066400000000000000000000033761220314353500172200ustar00rootroot00000000000000# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header tiemu-3.03-nogdb+dfsg/po/TRANSLATORS000066400000000000000000000001711220314353500167420ustar00rootroot00000000000000Internationalization: --------------------- - French: Romain Liévin - Deutsch: Kevin Kofler - Italian: Kevin Kofler tiemu-3.03-nogdb+dfsg/po/boldquot.sed000066400000000000000000000003311220314353500175270ustar00rootroot00000000000000s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g s/“/“/g s/â€/â€/g s/‘/‘/g s/’/’/g tiemu-3.03-nogdb+dfsg/po/copy.bat000066400000000000000000000011451220314353500166470ustar00rootroot00000000000000mkdir c:\lpg\msvc\locale mkdir c:\lpg\msvc\locale\fr mkdir c:\lpg\msvc\locale\fr\LC_MESSAGES msgfmt -c -o fr.mo fr.po copy fr.mo c:\lpg\msvc\locale\fr\LC_MESSAGES\tiemu3.mo msgfmt -c -o ../../ticables2/po/fr.mo ../../ticables2/po/fr.po copy ..\..\ticables2\po\fr.mo c:\lpg\msvc\locale\fr\LC_MESSAGES\libticables2.mo msgfmt -c -o ../../tifiles2/po/fr.mo ../../tifiles2/po/fr.po copy ..\..\tifiles2\po\fr.mo c:\lpg\msvc\locale\fr\LC_MESSAGES\libtifiles2.mo msgfmt -c -o ../../ticalcs2/po/fr.mo ../../ticalcs2/po/fr.po copy ..\..\ticalcs2\po\fr.mo c:\lpg\msvc\locale\fr\LC_MESSAGES\libticalcs2.mo tiemu-3.03-nogdb+dfsg/po/en@boldquot.header000066400000000000000000000024711220314353500206360ustar00rootroot00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # tiemu-3.03-nogdb+dfsg/po/en@quot.header000066400000000000000000000022631220314353500177740ustar00rootroot00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # tiemu-3.03-nogdb+dfsg/po/fr.gmo000066400000000000000000001171221220314353500163230ustar00rootroot00000000000000Þ•WÔ)Œ%0212D2W2j2}22°2Å2Ý2à2ã2æ2é2ì23S3;[3R—3$ê3-4M=4‹4”4–4™4ž4¥4®4µ4·4¼4Â4Ç4Î4×4Ý4ß4ã4å4ç4é4ë4$í45555"5&5 *555 95D5S5W5f5y55£5 ²5¿5Ç5Ü5$å5 66 6 *646 96E6 Y6 e6 q6 }6‹6š6«6°6²6É6 Ð6Û6á6!ò677'7Q_7v±7ª(8Ó8æ8÷8 9%9 >9J9R9h9w9 }9)ˆ9²9¸9¿9Ö9 ð9$þ9#:l>:(«:'Ô:ü:;+4;`; r;;ƒ;‡;‹;;“;—;›;Ÿ; ¤;²;a¹;Y<u<<  <¬<"Ì<ï<= ='=G=IM=-—=$Å=#ê= >>3>D>„V>Û> ß>í>Bó> 6?A?\?{?„? ‰? ”?Ÿ?¥?¸?:¾?ù? @@(@B@ K@W@_@c@r@{@ –@# @Ä@_É@!)AAKA A—AšAA A£A¦A€ªA+B FBTB gB&sBšB ¹BÅB ÎB ÙBåBûBC$C8C%WC}C”C>¦C åC óCÿC D DD;DZDyD˜D·DÖDõDE+Ei4E=žE$ÜE(F*F!;F]F bF pF~FF’F™F¢F§F¬F²F¸FºF¿F ÅF ÐF ÚFäFøF> GIGPG}lGêG ñG4ûG*0H [HiH qH |H‰H’H–H*›H ÆHÓHØHÞH öHII %I 0I:IUI fI pIzIII¤I µI"¿IcâIFJ[JkJsJƒJ‰J ŸJ©JÂJXËJ$K3KFK HKUKYK^KdK iK/sK;£KßKüK LLL 8LtFL»LÊLÙLîLþLM'M):MdMM ŠM˜M¨M°M ¿MÊMçM ìMùM N N(N.N 6N+BNnNˆNŽN”NœN£N³N ¼NÇN ßN éN÷NO"O>OEOMO/OO OŒO£O¨O­O²O¸O¾OÃOÈO ÍOÛOàOæO÷OýOP5PRPoPŒP©PÆPãPÿPQ7QSQoQ‹Q§QÃQÜQäQAéQA+R_mRÍR&]S±„S!6TXT$qT–TœT ¤TM¯T ýT UUUU&U.U6U>UFU]U mUzU‹UU–UšU!ŸU0ÁU)òU&V0CVtVV#¦VÊVæVW% WFW[WzW ‚W W šW§WÁWØWÚWâW æWðWöWþWX XX1X,9XfX0yXªX²X·X¹XUÖXT,Y6YZ¸YGZ[Z]ZpZ wZ ZŽZ “ZžZ ¥Z ²Z¾Z ÎZÙZ ìZùZ[[[ ([6[;[C[R[e[z[ €[[œ[¬[ ±[»[ Ì[×[ Ü[æ[ ì[ö[\ \\)\9\N\S\\\l\t\z\Œ\’\ ›\ ¥\¯\´\Ã\É\Ð\Ö\ ß\ ê\ ö\]]%]<]A]Q]f]l] ƒ] ]š] ¢]¯] ¶]Ä]Ó]Ú]â] é]ö]þ] ^ ^^^ "^,^1^O^(V^^‡^^–^ ž^ ¨^"µ^+Ø^__<_T_j_ _ _<›_ Ø_;ù_5`:U``;¯`ë`! a-aJaaa|a”a—aœa ¥a°a+¶a âaía%b (b3b6b?>b~b†bŠbb­b;dNdadud!ˆdªd¾dÓdëdîdódødýd5e8eL:e;‡eOÃe:fANfPfáfêfìfïfôfûfg g gggg$g-g3g5g9g;g=g?gAg'Cgkgogsgwg{ggƒgŒg gšg©g­g!Âg$äg h#h=hTh\hrh${h h²h ·hÄhÕh Úhåhii!i3iEiXijipiriŠi’i›i¡i7ºiòiNj^ajˆÀjÇIkl,l!Ll+nl&šlÁlÐl×lèlúlm/mCmJmRmkm ‹m6™m!Ðmƒòm6vn5­n+ãn-o:=oxo‹oŸo£o§o«o¯o³o·o»o¿o ÈoÔogÜocDp¨pÁpßp"îpq*q?q Tq/^qŽq‰”q8r>Wr>–rÕrÞròrúr©s¾sÂsÓsQÚs ,t'8t%`t†t•tžt³t ÇtÒtåt:ít(u ?uLu(`u‰u™u¯u·u»u ÒuÜu üu9vAv Ev4SvYˆv âvîvñvôv÷vúvýv˜wšw¶wÆw Úw)èw*x =xIx Zx exqxŒx¦x¿x'Úx-y 0y >yBLy yy¶y ¹yÆyãyÿyz7zSzoz‹z§z¹zËzŽÛzZj{5Å{4û{0|2J|}|‚|‘| |¯|¶|¿|È|Ï|Ô|Ú|â|ä|è| í| û| } }#}>9}x}€}}.~?~+Q~5}~!³~ Õ~ß~è~ú~4 @RZ`~¬ µ Â!Îð € €€/€B€Q€ b€-l€¢š€=Wpyœ »Åã|òo‚€‚Ÿ‚¡‚²‚¶‚ »‚ ǂӂ0å‚BƒYƒxƒ”ƒ£ƒ¬ƒÀƒŽÙƒh„„#—„»„˄ۄ#ô„+…&D… k…y…… ¨…³…É…Ý…÷…þ… †††!†(† 0†5;†q†Œ†‘†˜† †§†¸†džÖ†î†ý†&‡7‡)J‡t‡|‡…‡/‡‡ ·‡ćá‡æ‡ë‡ð‡ö‡ü‡ˆˆ ˆˆˆˆ1ˆ7ˆSˆoˆŒˆ©ˆƈ㈉‰9‰U‰q‰‰©‰ʼná‰ý‰ŠŠ@$Š@eŠ]¦Š~‹*ƒ‹Û®‹*ŠŒ'µŒ-ÝŒ  N$ s}‚‹‘™¡©±¹Ø é÷ ŽŽŽŽ&Ž6FŽ4}Ž9²ŽKìŽ8$X/}+­$Ù%þ0$Un Ž˜­½)Ú‘‘‘%‘ )‘3‘:‘C‘K‘T‘%l‘ ’‘6 ‘ב4ë‘ ’*’.’"0’fS’Qº’5 “sB“O¶“””” #”/”?”D”M”R” a”o” ‚””­” À”Ë”ã”é” ò”• ••#•9•K• S•a•w•{• €•• «•·•¼•͕ӕؕè•ð•÷• –!–5–>–N–j–s–y– ‹–™– ¢–¬–µ–º–Ê– Ò–Ý– à– ê–ô–—"—4—=— \—f—z——–—­— ¾—Ì—Ó—Ø—á—ñ— ˜˜˜ ˜5˜=˜@˜ O˜ [˜f˜n˜w˜;|˜ ¸˜DƘ ™ ™™&™ .™ 8™-D™4r™§™7¿™ ÷™šš-šDšMZš*¨šLÓš* ›KK›*—›L›)œ39œ&mœ”œ²œ!Òœôœøœþœ 6&]e% ¥°³O» žžž5ž"ð¡ÆÄ†º‹´ÜK±dœ<ó@""{HK QêXE%'()*+Ú'á` ŠPÛ¤Uò4)gV¹Éˆ¨í:k–J kV—弊9±,t‰Ý½v…-u þ³£&[Á’:Åž+Ïd@i„(™ÈÖÄÓs¶*ÌcÇú’çïT_5¢€–B];°åD$zƒ-·òž×93!ÐfÔ1IZ¤‡¾²…ø(ç§8Òù· v;)üû€?Y÷1B<Ðý4ëlÕA¿Àøµô;3¼ßLÃ0°¾>þXÙ=ª/•S9»ú\ØWeeõ28‡mqc5Ο&uU§Ê.E˜˜b&?®äœÿí²'W7”Œ‘ï62î¬Þ6Ü}‰DƒÕ´¸¹•ãã=#𻽥7 |üIæÍRrQÙwgLyËRÇ!³MÞxñ­i>lG‘¦nbypé0é-† Shz%ˆ>K.EQm{?Fà¢ö÷/ºÆ£à|q%ÿÂ0CN}ÑB¯\nAp1Ú è ~Ò‚5Ì2«„¸ 4Ãá=ANùR¡‹D7µIFsÅŸ[Ža^ 3NFW6«MUo < O ÁØÊtjVL*Âo+fCæñÛCÓ“$šûTr À©HÑPêôG.$¨xÖöOÏÍݪ¯­Žý“~JZõóèÔYT8¬—›M :h/wì×#™š›”É^`ìâ‚ SOPJ#Gä©jâËë@¿_ßî¦],¶®!aÈ¥Î,ŒH Calculator : %s Firmware : %s Hardware : %i Has boot : %s Memory size : %iMB (%i bytes) Memory type : %s ROM base : %02x length : %i#0#1#2#3#4%s: GUI loading failed! ** If your calculator screen is blank, use 'Ctrl' with '+/-' for adjusting contrast.* TiEmu version %s (cables=%s, files=%s, calcs=%s, conv=%s)* To change to a different calculator or ROM version, use an item of the ROM menu.* To use keys, use mouse or keyboard* You can save the emulator state and config.* You have access to a popup menu by right-clicking in the emulator's window.-000.jpg00000000000000x0000000x4c0011.111/1: 123412345612345678128KB22MB34567A breakpoint has been encountered...A0=A1=A2=A3=A4=A5=A6 (frame)A6=A7 (stack)A7 (stack) is:A7=About TiEmu...Add Bit BreakpointAdd Data BreakpointAdd Vector BreakpointAdd breakpointAdd tab (F1)AddressAddress Error vectorAddress:An exception has been encountered...Bad argument!BitsBlack&_WhiteBlackLinkBootBreak (F11)Breakpoint context:Breakpoint!BreakpointsBu_g reportBuffer size: Burst capture:Bus Error vectorByteCCHK Instruction vectorCable:Calc type:Calc:Calculator stateCan not get ROM/update info: <%s>Can not open file.Can not open state image: file is corrupted or missing.Can not open state image: revision changed. You have to recreate the state image.Can not open state image: state image header does not match ROM image header: have you changed/updated your ROM image?Can not open state image: this state image is not targetted for your current emulator image (calculator model and/or OS version must match!). Choose another image before.Can not stat: <%s>Can't open file.Can't parse folder.Can't upgrade calculator.Cannot load the upgrade.Change fontChecks:Choose a skin to use.Choose font...ClearClear RAM?Click the 'Finish' button to start TiEmu.CloseColo_rCommunication SettingsCompleting image to 4 MB!ConfigurationConfiguration file error at line %i.Configuration file loaded.Configuration file not found, use default values. You can create one by the 'File|Save config' command menu.Configuration file saved (in tiemu.ini).Configuration file saved (in ~/.tiemu).Couldn't allocate memory!Couldn't find pixmap file: %sCouldn't open destination file for writing!Current transfer:Cycle count:D0=D1=D2=D3=D4=D5=D6=D7=DataDefault TI-92Delay:Detected TI89 Titanium patched ROM (ExtendeD): emulated as TI89 by changing the hwID from 9 to 3.Detected V200 patched ROM (ExtendeD): emulated as TI92+ by changing the hwID from 8 to 1.Dis-assemble (indirect)Disable breakpointDisassemblyDisplay the log of all changes.Do a 'save state image' and exits.Do a screenshot now!Do the link cable setup.Dock ModeDoes not seem to be an upgrade.Done.Double click rowl to open tab in the memory window at the handle address.Double-click a row to edit breakpoint values.Double-click the row to disassemble.Double-click value or item to edit.Down (F4)E_xit without saving stateEmulator optionsEnable breakpointEnable/disable hardware protection. Please note you will have to restart the emulator or select an image for changes to take effect.EndEnter AddressErrorError code not found in the list. This is a bug. Please report it.Exception!Failed to close file: <%s>Failed to read from file: <%s>FilenameFindFind _NextFind _nextFind:Folder & Filename:Font:Framework version (cables=%s, files=%s, calcs=%s, conv=%s)Go into the debugger.Go to _PCGo to _addressGo to breakpoint locationGrayLinkHEX addressHW typeHW1H_W protectionHardwareHardware Parameters Block:Hardware:Have a problem ? Check out the log:HeapHexadecimal strings must have 2 chars per byte and can be with or without space: FE ED or FEED.How to report a bug or a problem.I want to use PedRom (GPL'ed replacement OS) shipped with TiEmu.I/O portsI0I1I2I=IdId:If you want to get a ROM dump with TiLP, you will have to download it from: Be sure to read the user's manual!Illegal Instruction vectorImage format:Image information:Image type:Import and/or set an image to emulate.Importing TIBs. Please wait...InformationInfos...Initial PCInitial SSPInitializing D-Bus...Initializing GTK+...Initializing KDE...Initializing OLE...Initializing TiLP framework...Initializing m68k emulation engine...Invalid FLASH upgrade.Invalid ROM dump.Invalid emulator image. File is corrupted or revision changed.Julien BlacheJust exits.KBKey PressL_ow LCD updateLevel 1 Interrupt auto-vectorsLevel 2 Interrupt auto-vectorsLevel 3 Interrupt auto-vectorsLevel 4 Interrupt auto-vectorsLevel 5 Interrupt auto-vectorsLevel 6 Interrupt auto-vectorsLevel 7 Interrupt auto-vectorsLine 1010 Emulator vectorsLine 1111 Emulator vectorsLink LogListen for files sent from TiEmu. Uncheck it if you are running program which use the linkport for sound.Load a FLASH upgrade into the FLASH memory of the calculator.Load the calculator state from file.Load the configuration previously saved.Loading image...Loading previously saved state...LongM_aximize allM_inimize allManual_en.htmlMaskMemoryMessage.MiscModeMode:ModelNNameName:New name: No error.No image.No skin (just LCD).Not enough memoryNote also that the converted image will not have a boot block.NumberNumber of frames to captureNumber of frames to skip between 2 captures. Beware: if you want to capture image every 4 frames, you need to set value to 3.OpcodeOpen fileOpen the Linux manpage (applicable to Windows, too).Open the TiEmu user's manual in a browser.Opendir errorOperandOverwrite PC (pushed):PC tracePC=PD_FPLEASE READ THE DOCUMENTATION FOR DETAILS ParallelLinkPlayPort:Pre-loading debugger...Prgm entryPrivilege Violation vectorQuestionQuick sendRAM size:ROM dump has a weird size.ROM information:ROM size:ROM type:Rate: 0.0 Kbytes/sRate: 0.00 Kb/sRecordRefresh tab (F5)RegistersReload the previously saved state.Remind you that you can not distribute your ROM dump(s). They are copyrighted by Texas Instruments.Remove breakpoint(s)Remove tab (F2)Rename Rename the fileResetReset the calculator.RestoringReturns to default skin.Run (F5)Run the calculator at its default speed (default) or at the maximum the computer can do.Run to _cursorRun to cursor (F4)SSR (pushed):SR=SSP=S_aveSaveSave fileSave the actual configuration into a text file.Save the calculator state into a file (called state image).Scanning images/upgrades... Screen OptionsScreenshotSearchSearching for ROM dumps...Select folderSend the selected file to the emulator. This file can be of any type (single, group, backup, FLASH app or FLASH OS).Sending app(s)Sending var(s)Set PC to _selectionSet ROM versionSet R_OM (image/upgrade)Set _breakpointSet _one shot bkptSet options for screenshot (image, type).Set program entry breakpointSettingsSetup playingSetup recordingShots: Show registersSilverLinkSingle step / Step into (F7)SizeSkin author:Skin for current calcSkin name:Skin version:Skip Skips: Sound ErrorSpawn error: do you have Firefox installed?Spurious Interrupt vectorStackStartStates:StatusStatus RegisterStep _inStep _overStep into (single step)Step ou_tStep out (F9)Step out (return to caller)Step over (F8)Step over (skip subroutine)SymbolSymbol:TTHIS PROGRAM COMES WITH ABSOLUTELY NO WARRANTY TI EducationTI calculator emulatorTI73TI82TI83TI83+TI84+TI85TI86TI89TI89 TitaniumTI92TI92+TIB information:TIGCCTRAP #0 Instruction vectorsTRAP #1 Instruction vectorsTRAP #10 Instruction vectorsTRAP #11 Instruction vectorsTRAP #12 Instruction vectorsTRAP #13 Instruction vectorsTRAP #14 Instruction vectorsTRAP #15 Instruction vectorsTRAP #2 Instruction vectorsTRAP #3 Instruction vectorsTRAP #4 Instruction vectorsTRAP #5 Instruction vectorsTRAP #6 Instruction vectorsTRAP #7 Instruction vectorsTRAP #8 Instruction vectorsTRAP #9 Instruction vectorsTRAPV Instruction vectorTarget:TextThe FLASH upgrade can be imported as HW1 or HW2. Please choose...The FLASH upgrade can be imported as HW3 or HW4. Please choose...The FLASH upgrade you have selected is being to be converted into a TiEmu image. Please wait...The current link cable <%s> port <%s> does not allow direct file loading. Do you let me change link port settings to allow direct file loading?The file %s already exists. Overwrite?The state image you are attempting to load does not match the current running image. Press OK if you want TiEmu to automatically load the corresponding image or Cancel to abort.This file is not a valid TI file.This is not a valid fileThis is not recognized as a TI file.TiEmuTiEmu 3TiEmu MenuTiEmu is now set up and ready for use. Some tips on how to use the emulator:TiEmu wizardTiLPTimeout:TitleTitle 1Title 2Title 3Title 4Title 5Toggle breakpoint (F2)Total transfer:Trace vectorTransfer status:TypeType:USPUSP=Unable to create the directory. Unable to get information on FLASH upgrade: <%s>Unable to get information on ROM dump: %sUnable to get information on image: %sUnable to initialize audio, sound will not play Unable to initialize soundUnable to move file. Unable to move the temporary file. Unable to open audio deviceUnable to open this file: <%s>Unable to remove the file!Unable to run ShellExecute extension.Unassigned, reservedUninitialised Interrupt vectorUp (F3)Use FLASH OSUse PedRomUse ROM dumpUse mouse or press a key.User Interrupt vectorsVV200PLTVTiVTi/TiEmuValueVectorsVersionVersion:View _memoryView memory map (F6)WarningWarning: truncating 8 MB image to 4 MB: <%s>Welcome to TiEmu 3Welcome to TiEmu 3, the Linux/Win32 TI emulator.WindowsWordXYou already have a ROM dump.You do not seem to have saved your settings. Configuration file saved (in tiemu.ini).You do not seem to have saved your settings. Configuration file saved (in ~/.tiemu).You have downloaded a FLASH upgrade on the TI website.You want to use TiLP or another dumping program to get a ROM dump of your calculator ROM.You're using GTK+ >= 2.12 so bookmark support is currently unavailable.ZZero Divide vector_ASCII_About..._Auto-detect_BMP_Bookmarks_Break_Breakpoints_Calculator_Case sensitive_ChangeLog_Copy to clipboard_Custom view_Debug_Debug file with TiEmu..._Dec_Default_Dis-assemble_EPS_Either_Emulate sound_Enter debugger..._Exit and save state_Font_Full screen_Group windows_Heap (handles)_Hex_Hide all_High LCD update_I/O ports_ICO_Infos..._JPEG_LCD only_Large view (x2)_Link_Linkport_Listen for files_Load config..._Load state image..._Log_Manpage_Med LCD update_Memory_None_Normal view (x1)_Now!_Options_Other..._PC trace_PNG_Quick-send..._Quit_Range_Read_Receive_Registers_Reset calc_Restore all_Restrict to actual speed_Revert_Revert to saved state_Run_Save config..._Save state image..._Send_Send file to TiEmu..._Settings..._Show all_Single_Stack frame_State_Upgrade calc_User's Manual_Write_enableaccessaccess rangeaddressatbit changeby addrby idby namebyte readcodecomm.c: GUI loading failed ! customdbg_bkpts-2.glade: GUI loading failed ! defaultdisableddone!enabledexceptionexternal ROMfailed to save pixbuf file: %s: %sfound SSP=$%06x and PC=$%06x at offset 0x%xhttp://education.ti.comhttp://lpg.ticalc.org/prj_tiemuhttp://tigcc.ticalc.orghttp://www.ticalc.orghttp://www.tilp.infohw protectionillegal instrlibticables library version <%s> mini required (<%s> found).libticables: version mismatches.libticalcs library version <%s> mini required (<%s> found).libticalcs: version mismatches.libticonv library version <%s> mini required (<%s> found).libticonv: version mismatches.libtifiles library version <%s> mini required (<%s> found).libtifiles: version mismatches.loading I/O defs: %s (%i entries)loading keymap: %s (%i keys)loading memory map: %sloading skin: %s (%d x %d)loading state image: %snonullone-shotprgm entryrangesaving state image (TiEmu v2.00 format): %sscreenshotscreenshot to %s... sound buffer full, dropping sample(s)ticalc.orgtounknownunsupported screenshot options combination, screenshot aborted.virtualyeszlib deflate errorzlib init errorProject-Id-Version: tiemu Report-Msgid-Bugs-To: tiemu-users@lists.sourceforge.net POT-Creation-Date: 2009-05-30 00:05+0200 PO-Revision-Date: 2004-04-13 13:21+0000 Last-Translator: Romain Liévin Language-Team: Français MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Calculatrice: %s Progiciel : %s Matériel : %i A un boot : %s Taille mém. : %iMo (%i octets) Type mémoire: %s Base ROM : %02x longueur : %i#0n°1n°2n°3n°4%s: échec de chargement de l'interface graphique ! * Si l'écran est blanc, utilisez 'Ctrl' + '+'/'-' pour régler le contraste.* TiEmu version %s (cables=%s, files=%s, calcs=%s, conv=%s) Pour changer de calculatrice et/ou de ROM, sélectionnez une ROM dans le menu.* Utilisez le clavier ou la souris pour frapper une touche* Vous pouvez sauver l'état de l'émulateur et la configuration.* Vous avez accès au menu déroulant par un clic bouton droit dans la fenêtre.-000.jpg00000000000000x0000000x4c0011.111/1: 123412345612345678128KB22Mo34567Un point d'arrêt a été rencontré...A0=A1=A2=A3=A4=A5=A6 (tas)A6=A7 (pile)A7 (pile) est:A7=A propos de TiEmu...Ajouter un point d'arrêt sur bitAjouter un point d'arrêt de donnéeAjouter un point d'arrêtAjouter un point d'arrêtAjouter un onglet (F1)AdresseVecteur Address ErrorAdresse:Une exception a été rencontrée...Mauvais argument!BitsNoir & BlancBlackLink (noir)BootStop (F11)Contexte du point d'arrêt:Point d'arrêt!Points d'arrêtRapport de _bogueTaille du tampon:Capture en rafale:Vecteur Bus ErrorOctetCVecteur CHK InstructionCâble:Modèle:Calc:État de la calculatriceNe peut pas obtenir d'informations sur la ROM/MAJ: <%s>Impossible d'ouvrir le fichier.Ne peut pas ouvrir le fichier d'état: le fichier est corrompu ou introuvable.Ne peut pas ouvrir le fichier d'état: la révision a changé. Vous devez recréer ce fichier.Ne peut pas ouvrir le fichier d'état: l'en-tête ne correspond pas à celui de l'image ROM: avez-vous changé/mis-à-jour l'image ROM ?Ne peut pas ouvrir le fichier d'état: le fichier d'état ne correspond pas à l'image ROM actuelle (le modèle de calculatrice et/ou la version d'OS doit correspondre !). Choisissez une autre image.Ne peut pas évaluer: <%s>Impossible d'ouvrir le fichier.Ne peut pas parcourir le dossier.Ne peut pas mettre à jour la calculatrice.Impossible de charger la mise à jour.Changer policeTests:Choisir un skin.Choisir police...EffacerEffacer la RAM ?Cliquer le bouton 'Finir' pour démarrer TiEmu.FermerCouleurParamètres de connexionComplétion de l'image à 4Mo !ConfigurationErreur dans le fichier de configuration à la line %i.Fichier de configuration chargé.Fichier de configuration introuvable; utilisation des valeurs par défait. Vous pouvez en créer un par le menu File > Save config.Fichier de configuration enregistré (dans tiemu.ini).Fichier de configuration enregistré (dans ~/.tiemu).Ne peut pas allouer la mémoire demandée !Impossible de trouver le fichier pixmap : %sNe peut pas ouvrir le fichier de destination en écriture!Transfert courant:Compteur de cycles:D0=D1=D2=D3=D4=D5=D6=D7=DonnéesPar défautDélai:ROM patchée pour Titanium détectée (ExtendeD): émulée comme TI89 par changement du hwID de 9 à 3.ROM patché pour V200 détectée (ExtendeD): émulée comme TI92+ par changement du hwID de 8 à 1.Désassembler (indirect)Désactiver un point d'arrêtDésassemblageAfficher la liste des changements.Sauve l'état et quitte.Capture maintenant !Configure le câble.Mode dockLe fichier ne semble pas etre une mise à jour.Fait.Double-cliquer une linge pour ouvrir un onglet à l'adresse pointée par le descripteur dans la fenêtre de visualisation de la mémoire.Double-cliquer une ligne pour éditer un point d'arrêt.Double-cliquer une ligne pour mettre à jour la configuration.Double-cliquer une ligne pour mettre à jour la configuration.Bas (F4)Quitter sans sauverOptionsActiver un point d'arrêtActive/désactive la protection matérielle. Veuillez noter que vous devrez redémarrer l'émulateur ou sélectionner une image pour que cette modification prenne effet.FinEntrer l'adresseErreurCode d'erreur introuvable dans la liste. Ceci est un bogue. Veuillez le reporter.Exception !La fermeture du fichier <%s> a échouéLa lecture du fichier <%s> a échouéNom de fichierChercherChercher le _suivantCherche le _suivantRecherche:Dossier & Fichier:Police:Framework version (cables=%s, files=%s, calcs=%s, conv=%s)Aller dans le debuggerAller au _PCAller à l'_adresseAller à l'emplacement du point d'arrêtGrayLink (gris)Adresse hexadécimaleHW typeHW1Protection matérielleMatérielBloc de paramètres matériels:Matériel:Un problème est apparu ? Vérifiez le fichier journal: TasFE EF or FEEDComment envoyer un rapport de bogue ou un problème.Je veux utiliser PedRom (OS de remplacement sous license GPL) qui est fourni avec TiEmu.Ports d'E/SI0I1I2I=IdId:Si vous voulez obtenir une copie de votre ROM avec TiLP, vous devrez le télécharger depuis: . Soyez sûr d'avoir bien lu le manuel !Vecteur Illegal InstructionFormat d'image:Informations Image:Type d'image:Importe et/ou active une image à émulerImportation des TIB. Veuillez patienter...Information_Informations...PC initialSSP initialInitialisation de D-Bus...Initialisation de GTK+...Initialisation de KDE...Initialisation de l'OLE...Initialisation du sous-système TiLP...Initialisation du moteur d'émulation m68k...MAJ invalide.ROM invalide.Image invalide. Le fichier est corrompu ou la révision a changé.Julien BlacheQuitter tout simplement.KoAppui toucheRafraîchissement LCD faibleVecteur automatique Level 1Vecteur automatique Level 2Vecteur automatique Level 3Vecteur automatique Level 4Vecteur automatique Level 5Vecteur automatique Level 6Vecteur automatique Level 7Vecteur Line 1010Vecteur Line 1111Journal du LinkÉcoute le(s) fichier(s) envoyé(s) par TiEmu. Décochez si vous faites tourner un programme qui utilise le port de communication pour le son.Il ne s'agit pas d'une MAJ ou cette MAJ n'est pas destinée à ce modèle de calculatrice.Charger l'état de la calculatrice depuis un fichier.Charge la configuration précédemment enregistrée.Chargement d'une image...Chargment d'un état précédemment sauvegardé...LongTout maximiserTout minimiserManual_en.htmlMasqueMémoireMessage.DiversModeMode:ModèleNNomNom:Nouveau nom: Pas d'erreur.Pas d'image.Pas de skin.Pas assez de mémoireNotez aussi que l'image obtenue n'a pas de bloc de démarrage.NuméroNombre de trames à capturerNombre de trames à sauter entre 2 captures. Attention: si vous voulez capturer une image toutes les 4 trames, vous devez mettre la valeur à 3.Code opératoireOuvrir un fichierOuvrir la page de manuel (Linux & Windows).Ouvrir le manuel de l'utilisateur dans un navigateur.Erreur d'ouverture de répertoireOpérandeÉcraserPC (mis en pile):Trace PCPC=PDFVEUILLEZ LIRE LA DOCUMENTATION POUR PLUS DE DETAILS Câble parallèleLecturePort:Préchargement du debugger...Entrée programmeVecteur Privilege ViolationQuestionEnvoi rapideTaille RAM:Le dump ROM a une taille bizarre.Informations ROM:Taille ROM:Type ROM:Vitesse: 0.0 Koctets/sVitesse: 0.00 Ko/sEnregistrementRafraîchir (F5)RegistresRecharge un état précédemment enregistré.Rappelez-vous que vous ne devez pas distribuez vos copies de ROM. Elles sont soumises au règles du copyright telles qu'édictées dans la license fournie par TI.Enlever un point d'arrêtSupprimer un onglet (F2)RenommerRenommer le fichierRéinitialiserRéinitialise la calculatrice.RestaurerRetourne au skin par défaut.Démarrer (F5)Fait tourner la calculatrice à sa vitesse par défaut (défaut) ou à la vitesse maximale à laquelle l'ordinateur le peut.Jusqu'au curseurExécute jusqu'au curseur (F4)SSR (mis en pile)SR=SSP=EnregistrerEnregistrerSauver un fichierSauve la configuration actuelle dans un fichier.Sauver l'état de la calculatrice dans un fichier (image d'état).Scrutation des images/màj... Options de capture d'écranCapture écranChercherRecherche de ROM...Sélectionner un dossierEnvoi le fichier sélectionné sur l'émulateur. Ce fichier peut être de n'importe quel type (unique, groupe, sauvegarde, application ou OS).Envoi d'application(s)Envoi de(s) variable(s)Initialiser le PC sur la sélectionChoisir une ROMChanger d'imageMettre un point d'arrêtMettre un point d'arrêt temporaireConfigure la capture écran (type & image).Mettre un point d'arrêt sur programmeConfigurationParamètres lectureParamètres enregistrementCaptures: Affiche les registresSilverLink (argent)Un seul pas / dedans (F7)TailleAuteur:Skin courantNom:Version:SauterSauts: Erreur sonErreur de lancement: un navigateur est-il installé ?Vecteur Spurious InterruptPileDébutÉtats:StatutRegistre d'étatUn pas de_dansUn pas _dessusUn pas dedans (un seul)Un pas de_horsUn pas dehors (F9)Un pas dehors (retourne à l'appelant)Un pas dessus (F8)Un pas par dessus (saute la sous-routine)SymboleSymbole:TCE PROGRAMME N'EST FOURNI AVEC AUCUNE GARANTIE TI EducationEmulateur de calculatrice TITI73TI82TI83TI83+TI84+TI85TI86TI89TitaniumTI92TI92+Informations TIB:TIGCCVecteur Instruction TRAP #0Vecteur Instruction TRAP #1Vecteur Instruction TRAP #10Vecteur Instruction TRAP #11Vecteur Instruction TRAP #12Vecteur Instruction TRAP #13Vecteur Instruction TRAP #14Vecteur Instruction TRAP #15Vecteur Instruction TRAP #2Vecteur Instruction TRAP #3Vecteur Instruction TRAP #4Vecteur Instruction TRAP #5Vecteur Instruction TRAP #6Vecteur Instruction TRAP #7Vecteur Instruction TRAP #8Vecteur Instruction TRAP #9Vecteur TRAPV InstructionCible:TexteLa MAJ peut être importé comme HW1 ou HW2. Veuillez choisir...La MAJ peut être importé comme HW3 ou HW4. Veuillez choisir...La MAJ sélectionnée est en train d'être convertie en une image TiEmu.Veuillez patienter...Le cable <%s> port <%s> actuel ne permet pas le chargement direct de fichier. Voulez-vous laisser TiEmu le changer pour vous ?Le fichier %s existe déjà. L'écraser ?L'image d'état que vous tentez de charger ne correspond pas à l'image actuellement en train de tourner. Appuyer sur OK si vous voulez que TiEmu charge automatiquement l'image correspondante; appuyez sur Annuler sinon.Ce fichier n'est pas un fichier TI valide.Ce fichier n'est pas un fichier valide.N'est pas reconnu comme un fichier TI valide.TiEmuTiEmu 3Menu TiEmuTiEmu est maintenant prêt à être utilisé. Quelques conseils d'utilisation:AssistantTiLPTimeout:TitreTitre 1Titre 2Titre 3Titre 4Titre 5Bascule le point d'arrêt (F2)Transfert total:Vecteur TraceÉtat du transfert:TypeType:USPUSP=Impossible de créer le répertoire. Impossible d'obtenir des informations sur la MAJ: <%s>Impossible d'obtenir des informations sur la ROM: %sImpossible d'obtenir des informations sur cette image: %sImpossible d'initialiser le périphérique audio, aucun son ne sera joué. Impossible d'initialiser le sonImpossible de déplacer le fichier. Impossible de déplacer le fichier temporaire. Impossible d'ouvrir le périphérique audioImpossible d'ouvrir ce fichier: <%s>Impossible de supprimer le fichier !Impossible d'exécuter l'extension ShellExecute.Non assigné (réservé)Vecteur Uninitialised InterruptHaut (F3)Utiliser un OS FLASHUtiliser PedRomUtiliser l'extracteur de ROMUtiliser la souris ou presser une touche.Vecteur User InterruptVV200PLTVTiVTi/TiEmuValeurVecteursVersionVersion:Visualiser la _mémoireVisualiser cartographie mémoire (F6)AvertissementAttention: troncature de l'image de 8 Mo à 4 Mo: <%s>Bienvenue sur TiEmuBienvenur sur TiEmu, l'émulateur pour Linux/WindowsFenêtresMotXVous avez déjà une copie de ROM.Il semble que vous n'avez pas sauvegardé votre configuration. Configuration sauvée (dans tiemu.ini).Il semble que vous n'avez pas sauvé votre configuration. Sauvé (dans ~/.tiemu).Vous avez téléchargé une MAJ depuis le site de TI.Vous voulez utiliser TiLP ou un autre programme de dumping pour obtenir une copie de la ROM de votre calculatrice.Vous utilisez GTK+ >= 2.12: les marques-pages ne sont pas (encore) disponibles.ZVecteur Zero Divide_ASCIIA propos..._Autodétection_BMP_FavorisStopPoint d'arrêt_CalculatriceRespect majuscules_Changements_Copier dans le presse-papierVue personnalisée_Débogage_Debugger avec TiEmu..._Déc_DéfautDésassembler_EPSPeu importe_Emulation du sonLancer le debugger...Sauver et quitter_Police_Plein écran_Groupe les fenêtresTas_HexTout _cacherRafraîchissement LCD élevéPorts d'E/S_ICO_Informations..._JPEG_LCDVue _large (x2)_CâbleCâbleÉcoute les fichiersCharger la config...Charger un état..._Journal_Page de manuelRafraîchissement LCD moyenMémoireAucunVue _normale (x1)_Maintenant !_Options_Autre...Trace PC_PNGEnvoi rapide...QuitterIntervalleLu_RecevoirRegistresRéinitialiser la calculatriceTout restaurer_Vitesse nominale_RevenirRevenir à l'état précédentExécuterSauver la config...Sauver un état..._Envoyer_Envoyer un fichier...Configuration...Tout _montrerSimplePileÉtat_s:_Mettre à jourManuel de l'_utilisateurEcrit_activéaccèsintervalle d'accès.adresseàchangement bitpar adressepar valeurpar nomoctet lucodecomm.c : échec du chargement de l'interface graphique ! personnalisédbg_bkpts-2.glade: échec du chargement de l'interface graphique ! défautdésactivéfait !activéexceptionROM externen'a pû sauvegarder le fichier pixbuf: %s: %strouvé un SSP=$%06x et un PC=$%06x à l'offset 0x%xhttp://education.ti.comhttp://lpg.ticalc.org, le groupe de programmeurs Linux.ticalc.orghttp://www.ticalc.orghttp://www.tilp.infoprotection matérielleinstruction illégaleLa version %s au minimum de libticables est nécessaire (trouvé version %s).libticables: la version ne correspond pas.La version %s au minimum de libticalcs est nécessaire (trouvé version %s).libticalcss: la version ne correspond pas.La version %s au minimum de libticonv est nécessaire (trouvé version %s).libticalcss: la version ne correspond pas.La version %s au minimum de libtifiles est nécessaire (trouvé version %s).libtifiles: la version ne correspond pas.chargement des définitions d'E/S: %s (%i entrées)chargement du clavier: %s (%i touches)chargement carte mémoire: %schargement du skin: %s(%d x %d)chargement de l'image d'état: %snonaucunun coupentrée de programmeintervallesauvegarde de l'image d'état (format TiEmu v2.00): %scapturecapture écran dans %s...tampon plein, purge d'échantillon(s)ticalc.orgàinconnucombinaison d'options de capture écran incompatibles; capture écran avortée.virtuelouierreur de décompression zliberreur d'initialisation zlibtiemu-3.03-nogdb+dfsg/po/fr.po000066400000000000000000001723401220314353500161620ustar00rootroot00000000000000# French locale for TiEmu # Copyright (C) 2007 Romain Liévin # This file is distributed under the same license as the libtifiles package. # msgid "" msgstr "" "Project-Id-Version: tiemu\n" "Report-Msgid-Bugs-To: tiemu-users@lists.sourceforge.net\n" "POT-Creation-Date: 2009-05-30 00:05+0200\n" "PO-Revision-Date: 2004-04-13 13:21+0000\n" "Last-Translator: Romain Liévin \n" "Language-Team: Français \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" # ##, c-format # #, c-format #: src/core/ti_hw/flash.c:261 #, c-format msgid "found SSP=$%06x and PC=$%06x at offset 0x%x" msgstr "trouvé un SSP=$%06x et un PC=$%06x à l'offset 0x%x" # ##, c-format # #, c-format #: src/core/ti_sw/iodefs.c:351 #, c-format msgid "loading I/O defs: %s (%i entries)" msgstr "chargement des définitions d'E/S: %s (%i entrées)" # ##, c-format # #, c-format #: src/core/ti_sw/mem_map.c:163 #, c-format msgid "loading memory map: %s" msgstr "chargement carte mémoire: %s" #: src/core/error.c:49 msgid "No error." msgstr "Pas d'erreur." #: src/core/error.c:53 msgid "Can not open file." msgstr "Impossible d'ouvrir le fichier." #: src/core/error.c:57 msgid "Can not open state image: file is corrupted or missing." msgstr "" "Ne peut pas ouvrir le fichier d'état: le fichier est corrompu ou introuvable." #: src/core/error.c:61 msgid "" "Can not open state image: revision changed. You have to recreate the state " "image." msgstr "" "Ne peut pas ouvrir le fichier d'état: la révision a changé. Vous devez " "recréer ce fichier." #: src/core/error.c:65 msgid "" "Can not open state image: state image header does not match ROM image " "header: have you changed/updated your ROM image?" msgstr "" "Ne peut pas ouvrir le fichier d'état: l'en-tête ne correspond pas à celui de " "l'image ROM: avez-vous changé/mis-à-jour l'image ROM ?" #: src/core/error.c:69 msgid "" "Can not open state image: this state image is not targetted for your current " "emulator image (calculator model and/or OS version must match!). Choose " "another image before." msgstr "" "Ne peut pas ouvrir le fichier d'état: le fichier d'état ne correspond pas à " "l'image ROM actuelle (le modèle de calculatrice et/ou la version d'OS doit " "correspondre !). Choisissez une autre image." #: src/core/error.c:73 msgid "Invalid emulator image. File is corrupted or revision changed." msgstr "Image invalide. Le fichier est corrompu ou la révision a changé." #: src/core/error.c:77 src/gui/wizard.c:289 msgid "Invalid FLASH upgrade." msgstr "MAJ invalide." #: src/core/error.c:81 src/gui/wizard.c:253 msgid "Invalid ROM dump." msgstr "ROM invalide." #: src/core/error.c:85 msgid "No image." msgstr "Pas d'image." #: src/core/error.c:89 msgid "ROM dump has a weird size." msgstr "Le dump ROM a une taille bizarre." #: src/core/error.c:93 msgid "This is not recognized as a TI file." msgstr "N'est pas reconnu comme un fichier TI valide." #: src/core/error.c:97 msgid "Can't parse folder." msgstr "Ne peut pas parcourir le dossier." #: src/core/error.c:101 msgid "Can't upgrade calculator." msgstr "Ne peut pas mettre à jour la calculatrice." #: src/core/error.c:105 msgid "" "Error code not found in the list.\n" "This is a bug. Please report it." msgstr "" "Code d'erreur introuvable dans la liste.\n" "Ceci est un bogue. Veuillez le reporter." #: src/core/images.c:121 msgid "ROM information:" msgstr "Informations ROM:" # ##, c-format # #, c-format #: src/core/images.c:122 src/core/images.c:133 src/core/images.c:143 #, c-format msgid " Calculator : %s" msgstr " Calculatrice: %s" # ##, c-format # #, c-format #: src/core/images.c:123 src/core/images.c:134 src/core/images.c:144 #, c-format msgid " Firmware : %s" msgstr " Progiciel : %s" # ##, c-format # #, c-format #: src/core/images.c:124 src/core/images.c:135 src/core/images.c:145 #, c-format msgid " Memory type : %s" msgstr " Type mémoire: %s" # ##, c-format # #, c-format #: src/core/images.c:125 src/core/images.c:136 src/core/images.c:146 #, c-format msgid " Memory size : %iMB (%i bytes)" msgstr " Taille mém. : %iMo (%i octets)" # ##, c-format # #, c-format #: src/core/images.c:126 src/core/images.c:137 src/core/images.c:147 #, c-format msgid " ROM base : %02x" msgstr " Base ROM : %02x" # ##, c-format # #, c-format #: src/core/images.c:127 src/core/images.c:148 #, c-format msgid " Hardware : %i" msgstr " Matériel : %i" #: src/core/images.c:132 msgid "TIB information:" msgstr "Informations TIB:" #: src/core/images.c:142 msgid "Image information:" msgstr "Informations Image:" # ##, c-format # #, c-format #: src/core/images.c:149 #, c-format msgid " Has boot : %s" msgstr " A un boot : %s" #: src/core/images.c:149 src/core/images.c:1092 msgid "yes" msgstr "oui" #: src/core/images.c:149 src/core/images.c:1092 msgid "no" msgstr "non" # #, c-format #: src/core/images.c:176 src/core/images.c:1045 #, c-format msgid "Unable to open this file: <%s>" msgstr "Impossible d'ouvrir ce fichier: <%s>" # ##, c-format # #, c-format #: src/core/images.c:190 #, c-format msgid "Warning: truncating 8 MB image to 4 MB: <%s>" msgstr "Attention: troncature de l'image de 8 Mo à 4 Mo: <%s>" # ##, c-format # #, c-format #: src/core/images.c:203 #, c-format msgid "Failed to read from file: <%s>" msgstr "La lecture du fichier <%s> a échoué" # ##, c-format # #, c-format #: src/core/images.c:209 #, c-format msgid "Failed to close file: <%s>" msgstr "La fermeture du fichier <%s> a échoué" # ##, c-format # #, c-format #: src/core/images.c:463 src/core/images.c:753 src/core/images.c:767 #, c-format msgid "Unable to get information on ROM dump: %s" msgstr "Impossible d'obtenir des informations sur la ROM: %s" #: src/core/images.c:490 msgid "Completing image to 4 MB!" msgstr "Complétion de l'image à 4Mo !" # ##, c-format # #, c-format #: src/core/images.c:547 src/core/images.c:914 #, c-format msgid "Unable to get information on FLASH upgrade: <%s>" msgstr "Impossible d'obtenir des informations sur la MAJ: <%s>" # ##, c-format # #, c-format #: src/core/images.c:838 #, c-format msgid "Unable to get information on image: %s" msgstr "Impossible d'obtenir des informations sur cette image: %s" #: src/core/images.c:973 src/core/images.c:1053 src/core/images.c:1191 msgid "Opendir error" msgstr "Erreur d'ouverture de répertoire" #: src/core/images.c:1039 msgid "Scanning images/upgrades... " msgstr "Scrutation des images/màj... " # ##, c-format # #, c-format #: src/core/images.c:1067 #, c-format msgid "Can not stat: <%s>" msgstr "Ne peut pas évaluer: <%s>" # ##, c-format # #, c-format #: src/core/images.c:1078 #, c-format msgid "Can not get ROM/update info: <%s>" msgstr "Ne peut pas obtenir d'informations sur la ROM/MAJ: <%s>" #: src/core/images.c:1107 msgid "Done." msgstr "Fait." #: src/core/interface.c:252 src/core/interface.c:263 src/core/interface.c:274 #: src/core/interface.c:285 src/core/interface.c:296 msgid "Bad argument!" msgstr "Mauvais argument!" # ##, c-format # #, c-format #: src/core/state.c:178 #, c-format msgid "loading state image: %s" msgstr "chargement de l'image d'état: %s" # ##, c-format # #, c-format #: src/core/state.c:353 #, c-format msgid "saving state image (TiEmu v2.00 format): %s" msgstr "sauvegarde de l'image d'état (format TiEmu v2.00): %s" #: src/core/type2str.c:118 msgid "Initial SSP" msgstr "SSP initial" #: src/core/type2str.c:119 msgid "Initial PC" msgstr "PC initial" #: src/core/type2str.c:120 msgid "Bus Error vector" msgstr "Vecteur Bus Error" #: src/core/type2str.c:121 msgid "Address Error vector" msgstr "Vecteur Address Error" #: src/core/type2str.c:122 msgid "Illegal Instruction vector" msgstr "Vecteur Illegal Instruction" #: src/core/type2str.c:123 msgid "Zero Divide vector" msgstr "Vecteur Zero Divide" #: src/core/type2str.c:124 msgid "CHK Instruction vector" msgstr "Vecteur CHK Instruction" #: src/core/type2str.c:125 msgid "TRAPV Instruction vector" msgstr "Vecteur TRAPV Instruction" #: src/core/type2str.c:126 msgid "Privilege Violation vector" msgstr "Vecteur Privilege Violation" #: src/core/type2str.c:127 msgid "Trace vector" msgstr "Vecteur Trace" #: src/core/type2str.c:128 msgid "Line 1010 Emulator vectors" msgstr "Vecteur Line 1010" #: src/core/type2str.c:129 msgid "Line 1111 Emulator vectors" msgstr "Vecteur Line 1111" #: src/core/type2str.c:130 src/core/type2str.c:131 src/core/type2str.c:132 #: src/core/type2str.c:134 src/core/type2str.c:135 src/core/type2str.c:136 #: src/core/type2str.c:137 src/core/type2str.c:138 src/core/type2str.c:139 #: src/core/type2str.c:140 src/core/type2str.c:141 src/core/type2str.c:181 msgid "Unassigned, reserved" msgstr "Non assigné (réservé)" #: src/core/type2str.c:133 msgid "Uninitialised Interrupt vector" msgstr "Vecteur Uninitialised Interrupt" #: src/core/type2str.c:142 msgid "Spurious Interrupt vector" msgstr "Vecteur Spurious Interrupt" #: src/core/type2str.c:143 msgid "Level 1 Interrupt auto-vectors" msgstr "Vecteur automatique Level 1" #: src/core/type2str.c:144 msgid "Level 2 Interrupt auto-vectors" msgstr "Vecteur automatique Level 2" #: src/core/type2str.c:145 msgid "Level 3 Interrupt auto-vectors" msgstr "Vecteur automatique Level 3" #: src/core/type2str.c:146 msgid "Level 4 Interrupt auto-vectors" msgstr "Vecteur automatique Level 4" #: src/core/type2str.c:147 msgid "Level 5 Interrupt auto-vectors" msgstr "Vecteur automatique Level 5" #: src/core/type2str.c:148 msgid "Level 6 Interrupt auto-vectors" msgstr "Vecteur automatique Level 6" #: src/core/type2str.c:149 msgid "Level 7 Interrupt auto-vectors" msgstr "Vecteur automatique Level 7" #: src/core/type2str.c:150 msgid "TRAP #0 Instruction vectors" msgstr "Vecteur Instruction TRAP #0" #: src/core/type2str.c:151 msgid "TRAP #1 Instruction vectors" msgstr "Vecteur Instruction TRAP #1" #: src/core/type2str.c:152 msgid "TRAP #2 Instruction vectors" msgstr "Vecteur Instruction TRAP #2" #: src/core/type2str.c:153 msgid "TRAP #3 Instruction vectors" msgstr "Vecteur Instruction TRAP #3" #: src/core/type2str.c:154 msgid "TRAP #4 Instruction vectors" msgstr "Vecteur Instruction TRAP #4" #: src/core/type2str.c:155 msgid "TRAP #5 Instruction vectors" msgstr "Vecteur Instruction TRAP #5" #: src/core/type2str.c:156 msgid "TRAP #6 Instruction vectors" msgstr "Vecteur Instruction TRAP #6" #: src/core/type2str.c:157 msgid "TRAP #7 Instruction vectors" msgstr "Vecteur Instruction TRAP #7" #: src/core/type2str.c:158 msgid "TRAP #8 Instruction vectors" msgstr "Vecteur Instruction TRAP #8" #: src/core/type2str.c:159 msgid "TRAP #9 Instruction vectors" msgstr "Vecteur Instruction TRAP #9" #: src/core/type2str.c:160 msgid "TRAP #10 Instruction vectors" msgstr "Vecteur Instruction TRAP #10" #: src/core/type2str.c:161 msgid "TRAP #11 Instruction vectors" msgstr "Vecteur Instruction TRAP #11" #: src/core/type2str.c:162 msgid "TRAP #12 Instruction vectors" msgstr "Vecteur Instruction TRAP #12" #: src/core/type2str.c:163 msgid "TRAP #13 Instruction vectors" msgstr "Vecteur Instruction TRAP #13" #: src/core/type2str.c:164 msgid "TRAP #14 Instruction vectors" msgstr "Vecteur Instruction TRAP #14" #: src/core/type2str.c:165 msgid "TRAP #15 Instruction vectors" msgstr "Vecteur Instruction TRAP #15" #: src/core/type2str.c:182 src/core/type2str.c:184 msgid "User Interrupt vectors" msgstr "Vecteur User Interrupt" #: src/core/type2str.c:192 src/core/type2str.c:208 src/core/type2str.c:221 #: src/gui/debugger/dbg_bkpts.c:296 glade/dbg_cause-2.str:11 msgid "access" msgstr "accès" #: src/core/type2str.c:193 msgid "access range" msgstr "intervalle d'accès." #: src/core/type2str.c:194 msgid "address" msgstr "adresse" #: src/core/type2str.c:195 src/core/type2str.c:211 src/core/type2str.c:227 msgid "exception" msgstr "exception" #: src/core/type2str.c:196 src/core/type2str.c:212 src/core/type2str.c:229 msgid "prgm entry" msgstr "entrée de programme" #: src/core/type2str.c:197 src/core/type2str.c:213 src/core/type2str.c:231 msgid "hw protection" msgstr "protection matérielle" #: src/core/type2str.c:198 src/core/type2str.c:214 src/core/type2str.c:233 msgid "bit change" msgstr "changement bit" #: src/core/type2str.c:199 src/core/type2str.c:215 src/gui/infos.c:61 msgid "unknown" msgstr "inconnu" #: src/core/type2str.c:209 src/core/type2str.c:223 #: src/gui/debugger/dbg_bkpts.c:296 msgid "range" msgstr "intervalle" #: src/core/type2str.c:210 src/core/type2str.c:225 msgid "code" msgstr "code" #: src/core/hwpm.c:61 msgid "Hardware Parameters Block:" msgstr "Bloc de paramètres matériels:" # ##, c-format # #, c-format #: src/core/hwpm.c:62 #, c-format msgid " length : %i" msgstr " longueur : %i" #: src/core/hwpm.c:121 msgid "" "Detected V200 patched ROM (ExtendeD): emulated as TI92+ by changing the hwID " "from 8 to 1." msgstr "" "ROM patché pour V200 détectée (ExtendeD): émulée comme TI92+ par changement " "du hwID de 8 à 1." #: src/core/hwpm.c:127 msgid "" "Detected TI89 Titanium patched ROM (ExtendeD): emulated as TI89 by changing " "the hwID from 9 to 3." msgstr "" "ROM patchée pour Titanium détectée (ExtendeD): émulée comme TI89 par " "changement du hwID de 9 à 3." # #, c-format #: src/misc/cmdline.c:62 #, c-format msgid "THIS PROGRAM COMES WITH ABSOLUTELY NO WARRANTY\n" msgstr "CE PROGRAMME N'EST FOURNI AVEC AUCUNE GARANTIE\n" # #, c-format #: src/misc/cmdline.c:63 #, c-format msgid "PLEASE READ THE DOCUMENTATION FOR DETAILS\n" msgstr "VEUILLEZ LIRE LA DOCUMENTATION POUR PLUS DE DETAILS\n" #: src/misc/files.c:95 src/misc/files.c:107 src/misc/files.c:123 #: src/gui/calc/keyboard.c:77 src/gui/calc/popup.c:176 #: src/gui/calc/popup.c:179 src/gui/calc/popup.c:191 src/gui/dboxes.c:42 #: src/gui/fs_misc.c:155 src/gui/fs_misc.c:158 msgid "Information" msgstr "Information" #: src/misc/files.c:95 msgid "Unable to remove the file!" msgstr "Impossible de supprimer le fichier !" #: src/misc/files.c:107 msgid "" "Unable to move file.\n" "\n" msgstr "Impossible de déplacer le fichier.\n" #: src/misc/files.c:123 msgid "" "Unable to create the directory.\n" "\n" msgstr "" "Impossible de créer le répertoire.\n" "\n" # ##, c-format #: src/misc/files.c:151 #, c-format msgid "" "The file %s already exists.\n" "Overwrite?" msgstr "" "Le fichier %s existe déjà.\n" "L'écraser ?" #: src/misc/files.c:153 src/gui/dboxes.c:44 src/gui/fs_misc.c:82 #: src/gui/fs_misc.c:239 msgid "Warning" msgstr "Avertissement" #: src/misc/files.c:154 msgid "Overwrite " msgstr "Écraser" #: src/misc/files.c:154 msgid "Rename " msgstr "Renommer" #: src/misc/files.c:154 msgid "Skip " msgstr "Sauter" #: src/misc/files.c:164 msgid "Rename the file" msgstr "Renommer le fichier" #: src/misc/files.c:165 msgid "New name: " msgstr "Nouveau nom: " #: src/misc/files.c:209 src/misc/tie_error.c:78 src/gui/calc/popup.c:797 #: src/gui/calc/popup.c:847 src/gui/dboxes.c:48 src/gui/fs_misc.c:212 #: src/gui/fs_misc.c:391 src/gui/fs_misc.c:421 src/gui/fs_misc.c:437 #: src/gui/fs_misc.c:502 src/gui/main.c:218 src/gui/main.c:226 #: src/gui/main.c:234 src/gui/main.c:242 src/gui/quicksend.c:120 #: src/gui/wizard.c:253 src/gui/wizard.c:289 msgid "Error" msgstr "Erreur" #: src/misc/files.c:209 msgid "Unable to move the temporary file.\n" msgstr "Impossible de déplacer le fichier temporaire.\n" # #, c-format #: src/misc/rcfile.c:76 #, c-format msgid "Configuration file error at line %i." msgstr "Erreur dans le fichier de configuration à la line %i." #: src/misc/rcfile.c:181 msgid "" "Configuration file not found, use default values. You can create one by the " "'File|Save config' command menu." msgstr "" "Fichier de configuration introuvable; utilisation des valeurs par défait. " "Vous pouvez en créer un par le menu File > Save config." #: src/misc/screenshot.c:70 msgid "Couldn't allocate memory!" msgstr "Ne peut pas allouer la mémoire demandée !" #: src/misc/screenshot.c:81 msgid "zlib init error" msgstr "erreur d'initialisation zlib" #: src/misc/screenshot.c:97 msgid "zlib deflate error" msgstr "erreur de décompression zlib" #: src/misc/screenshot.c:187 src/misc/screenshot.c:237 msgid "Couldn't open destination file for writing!" msgstr "Ne peut pas ouvrir le fichier de destination en écriture!" # #, c-format #: src/gui/calc/calc.c:234 src/gui/calc/popup.c:655 #: src/gui/debugger/dbg_bkpts.c:363 src/gui/debugger/dbg_bits.c:50 #: src/gui/debugger/dbg_cause.c:60 src/gui/debugger/dbg_cause.c:144 #: src/gui/debugger/dbg_code.c:357 src/gui/debugger/dbg_code.c:698 #: src/gui/debugger/dbg_code.c:1160 src/gui/debugger/dbg_data.c:56 #: src/gui/debugger/dbg_entry.c:207 src/gui/debugger/dbg_heap.c:146 #: src/gui/debugger/dbg_heap.c:267 src/gui/debugger/dbg_iop.c:430 #: src/gui/debugger/dbg_mem.c:712 src/gui/debugger/dbg_mem.c:1087 #: src/gui/debugger/dbg_mem.c:1311 src/gui/debugger/dbg_pclog.c:138 #: src/gui/debugger/dbg_regs.c:194 src/gui/debugger/dbg_regs.c:539 #: src/gui/debugger/dbg_stack.c:163 src/gui/debugger/dbg_stack.c:417 #: src/gui/debugger/dbg_vectors.c:145 src/gui/logger/log_link.c:62 #: src/gui/infos.c:50 src/gui/manpage.c:72 src/gui/pbars.c:63 #: src/gui/quicksend.c:59 src/gui/release.c:77 src/gui/romversion.c:191 #: src/gui/scroptions.c:61 src/gui/wizard.c:71 #, c-format msgid "%s: GUI loading failed!\n" msgstr "%s: échec de chargement de l'interface graphique !\n" # ##, c-format # #, c-format #: src/gui/calc/calc.c:751 #, c-format msgid "screenshot to %s... " msgstr "capture écran dans %s..." #: src/gui/calc/calc.c:770 msgid "unsupported screenshot options combination, screenshot aborted." msgstr "" "combinaison d'options de capture écran incompatibles; capture écran avortée." # ##, c-format # #, c-format #: src/gui/calc/calc.c:797 #, c-format msgid "failed to save pixbuf file: %s: %s" msgstr "n'a pû sauvegarder le fichier pixbuf: %s: %s" #: src/gui/calc/calc.c:802 msgid "done!" msgstr "fait !" # ##, c-format # #, c-format #: src/gui/calc/keymap.c:207 #, c-format msgid "loading keymap: %s (%i keys)" msgstr "chargement du clavier: %s (%i touches)" #: src/gui/calc/keypress.c:58 src/gui/calc/keypress.c:84 msgid "Can't open file." msgstr "Impossible d'ouvrir le fichier." #: src/gui/calc/popup.c:71 #, c-format msgid "* TiEmu version %s (cables=%s, files=%s, calcs=%s, conv=%s)" msgstr "* TiEmu version %s (cables=%s, files=%s, calcs=%s, conv=%s)" #: src/gui/calc/popup.c:177 msgid "Configuration file saved (in tiemu.ini)." msgstr "Fichier de configuration enregistré (dans tiemu.ini)." #: src/gui/calc/popup.c:180 msgid "Configuration file saved (in ~/.tiemu)." msgstr "Fichier de configuration enregistré (dans ~/.tiemu)." #: src/gui/calc/popup.c:191 msgid "Configuration file loaded." msgstr "Fichier de configuration chargé." #: src/gui/calc/popup.c:267 src/gui/dboxes.c:46 msgid "Question" msgstr "Question" #: src/gui/calc/popup.c:267 msgid "Clear RAM?" msgstr "Effacer la RAM ?" #: src/gui/calc/popup.c:512 msgid "Manual_en.html" msgstr "Manual_en.html" #: src/gui/calc/popup.c:533 msgid "You're using GTK+ >= 2.12 so bookmark support is currently unavailable." msgstr "" "Vous utilisez GTK+ >= 2.12: les marques-pages ne sont pas (encore) " "disponibles." #: src/gui/calc/popup.c:553 msgid "" "There are several ways to get in touch if you encounter a problem with TiEmu " "or if you have questions, suggestions, bug reports, etc:\n" "- if you have general questions or problems, please consider the users' " "mailing list first (http://tiemu-users@list.sf.net).\n" "- if you want to discuss about TiEmu, you can use the TiEmu forum (http://" "sourceforge.net/forum/?group_id=23169).\n" "- for bug reports, use the 'Bug Tracking System' (http://sourceforge.net/" "tracker/?group_id=23169).\n" "\n" "Before e-mailing the TiEmu team, make sure you have read the manual and/or " "the FAQ...." msgstr "" #: src/gui/calc/popup.c:797 msgid "Unable to run ShellExecute extension." msgstr "Impossible d'exécuter l'extension ShellExecute." #: src/gui/calc/popup.c:847 msgid "Spawn error: do you have Firefox installed?" msgstr "Erreur de lancement: un navigateur est-il installé ?" # ##, c-format # #, c-format #: src/gui/calc/skinops.c:449 #, c-format msgid "loading skin: %s (%d x %d)" msgstr "chargement du skin: %s(%d x %d)" #: src/gui/debugger/dbg_bkpts.c:63 msgid "Symbol" msgstr "Symbole" #: src/gui/debugger/dbg_bkpts.c:63 src/gui/romversion.c:88 #: glade/dbg_data-2.str:22 msgid "Type" msgstr "Type" #: src/gui/debugger/dbg_bkpts.c:63 msgid "Status" msgstr "Statut" #: src/gui/debugger/dbg_bkpts.c:63 glade/log_link-2.str:9 msgid "Start" msgstr "Début" #: src/gui/debugger/dbg_bkpts.c:63 msgid "End" msgstr "Fin" #: src/gui/debugger/dbg_bkpts.c:63 glade/dbg_data-2.str:11 msgid "Mode" msgstr "Mode" #: src/gui/debugger/dbg_bkpts.c:140 src/gui/debugger/dbg_bkpts.c:167 #: src/gui/debugger/dbg_bkpts.c:195 src/gui/debugger/dbg_bkpts.c:224 #: src/gui/debugger/dbg_bkpts.c:251 src/gui/debugger/dbg_bkpts.c:335 msgid "enabled" msgstr "activé" #: src/gui/debugger/dbg_bkpts.c:140 src/gui/debugger/dbg_bkpts.c:167 #: src/gui/debugger/dbg_bkpts.c:195 src/gui/debugger/dbg_bkpts.c:224 #: src/gui/debugger/dbg_bkpts.c:251 src/gui/debugger/dbg_bkpts.c:335 msgid "disabled" msgstr "désactivé" #: src/gui/debugger/dbg_bkpts.c:143 src/gui/debugger/dbg_bkpts.c:338 msgid "one-shot" msgstr "un coup" #: src/gui/debugger/dbg_bkpts.c:426 msgid "dbg_bkpts-2.glade: GUI loading failed !\n" msgstr "dbg_bkpts-2.glade: échec du chargement de l'interface graphique !\n" #: src/gui/debugger/dbg_code.c:75 src/gui/debugger/dbg_heap.c:55 #: src/gui/debugger/dbg_iop.c:299 src/gui/debugger/dbg_mem.c:185 #: src/gui/debugger/dbg_pclog.c:54 src/gui/debugger/dbg_stack.c:58 msgid "Address" msgstr "Adresse" #: src/gui/debugger/dbg_code.c:75 msgid "Opcode" msgstr "Code opératoire" #: src/gui/debugger/dbg_code.c:75 msgid "Operand" msgstr "Opérande" #: src/gui/debugger/dbg_code.c:1244 msgid "Choose font..." msgstr "Choisir police..." #: src/gui/debugger/dbg_entry.c:91 src/gui/debugger/dbg_iop.c:264 #: src/gui/debugger/dbg_vectors.c:53 msgid "Name" msgstr "Nom" #: src/gui/debugger/dbg_heap.c:55 msgid "Id" msgstr "Id" #: src/gui/debugger/dbg_heap.c:55 src/gui/romversion.c:88 msgid "Size" msgstr "Taille" #: src/gui/debugger/dbg_iop.c:272 src/gui/debugger/dbg_stack.c:58 msgid "Value" msgstr "Valeur" #: src/gui/debugger/dbg_iop.c:308 msgid "Mask" msgstr "Masque" #: src/gui/debugger/dbg_vectors.c:53 msgid "Number" msgstr "Numéro" # #, c-format #: src/gui/about.c:97 #, c-format msgid "Framework version (cables=%s, files=%s, calcs=%s, conv=%s)" msgstr "Framework version (cables=%s, files=%s, calcs=%s, conv=%s)" #: src/gui/device.c:59 src/gui/wizard.c:95 src/gui/wizard.c:180 #: src/gui/wizard.c:219 msgid "comm.c: GUI loading failed !\n" msgstr "comm.c : échec du chargement de l'interface graphique !\n" #: src/gui/filesel.c:389 msgid "Save file" msgstr "Sauver un fichier" #: src/gui/filesel.c:392 src/gui/filesel.c:701 glade/quicksend-2.str:9 msgid "Open file" msgstr "Ouvrir un fichier" #: src/gui/fs_misc.c:83 msgid "" "The state image you are attempting to load does not match the current " "running image. Press OK if you want TiEmu to automatically load the " "corresponding image or Cancel to abort." msgstr "" "L'image d'état que vous tentez de charger ne correspond pas à l'image " "actuellement en train de tourner. Appuyer sur OK si vous voulez que TiEmu " "charge automatiquement l'image correspondante; appuyez sur Annuler sinon." #: src/gui/fs_misc.c:156 msgid "" "You do not seem to have saved your settings. Configuration file saved (in " "tiemu.ini)." msgstr "" "Il semble que vous n'avez pas sauvegardé votre configuration. Configuration " "sauvée (dans tiemu.ini)." #: src/gui/fs_misc.c:159 msgid "" "You do not seem to have saved your settings. Configuration file saved (in ~/." "tiemu)." msgstr "" "Il semble que vous n'avez pas sauvé votre configuration. Sauvé (dans ~/." "tiemu)." #: src/gui/fs_misc.c:173 msgid "Sending app(s)" msgstr "Envoi d'application(s)" #: src/gui/fs_misc.c:177 src/gui/fs_misc.c:185 msgid "Sending var(s)" msgstr "Envoi de(s) variable(s)" #: src/gui/fs_misc.c:181 src/gui/fs_misc.c:189 msgid "Restoring" msgstr "Restaurer" #: src/gui/fs_misc.c:212 src/gui/fs_misc.c:391 src/gui/quicksend.c:120 msgid "This file is not a valid TI file." msgstr "Ce fichier n'est pas un fichier TI valide." #: src/gui/fs_misc.c:236 #, c-format msgid "" "The current link cable <%s> port <%s> does not allow direct file loading. Do " "you let me change link port settings to allow direct file loading?" msgstr "" "Le cable <%s> port <%s> actuel ne permet pas le chargement direct de " "fichier. Voulez-vous laisser TiEmu le changer pour vous ?" #: src/gui/fs_misc.c:421 msgid "Does not seem to be an upgrade." msgstr "Le fichier ne semble pas etre une mise à jour." #: src/gui/fs_misc.c:437 msgid "Cannot load the upgrade." msgstr "Impossible de charger la mise à jour." #: src/gui/fs_misc.c:473 src/gui/fs_misc.c:483 msgid "HW type" msgstr "HW type" #: src/gui/fs_misc.c:474 msgid "The FLASH upgrade can be imported as HW1 or HW2. Please choose..." msgstr "La MAJ peut être importé comme HW1 ou HW2. Veuillez choisir..." #: src/gui/fs_misc.c:484 msgid "The FLASH upgrade can be imported as HW3 or HW4. Please choose..." msgstr "La MAJ peut être importé comme HW3 ou HW4. Veuillez choisir..." #: src/gui/fs_misc.c:502 msgid "This is not a valid file" msgstr "Ce fichier n'est pas un fichier valide." #: src/gui/main.c:153 msgid "Unable to initialize audio, sound will not play\n" msgstr "" "Impossible d'initialiser le périphérique audio, aucun son ne sera joué.\n" #: src/gui/main.c:187 msgid "Initializing GTK+..." msgstr "Initialisation de GTK+..." #: src/gui/main.c:191 msgid "Initializing KDE..." msgstr "Initialisation de KDE..." #: src/gui/main.c:192 glade/device-2.str:15 glade/popup-2.str:78 msgid "TiEmu" msgstr "TiEmu" #: src/gui/main.c:192 msgid "TI calculator emulator" msgstr "Emulateur de calculatrice TI" #: src/gui/main.c:198 msgid "Initializing D-Bus..." msgstr "Initialisation de D-Bus..." #: src/gui/main.c:204 msgid "Initializing OLE..." msgstr "Initialisation de l'OLE..." #: src/gui/main.c:212 msgid "Initializing TiLP framework..." msgstr "Initialisation du sous-système TiLP..." # #, c-format #: src/gui/main.c:216 #, c-format msgid "libticonv library version <%s> mini required (<%s> found)." msgstr "" "La version %s au minimum de libticonv est nécessaire (trouvé version %s)." #: src/gui/main.c:218 msgid "libticonv: version mismatches." msgstr "libticalcss: la version ne correspond pas." # #, c-format #: src/gui/main.c:224 #, c-format msgid "libtifiles library version <%s> mini required (<%s> found)." msgstr "" "La version %s au minimum de libtifiles est nécessaire (trouvé version %s)." #: src/gui/main.c:226 msgid "libtifiles: version mismatches." msgstr "libtifiles: la version ne correspond pas." # #, c-format #: src/gui/main.c:232 #, c-format msgid "libticables library version <%s> mini required (<%s> found)." msgstr "" "La version %s au minimum de libticables est nécessaire (trouvé version %s)." #: src/gui/main.c:234 msgid "libticables: version mismatches." msgstr "libticables: la version ne correspond pas." # #, c-format #: src/gui/main.c:240 #, c-format msgid "libticalcs library version <%s> mini required (<%s> found)." msgstr "" "La version %s au minimum de libticalcs est nécessaire (trouvé version %s)." #: src/gui/main.c:242 msgid "libticalcs: version mismatches." msgstr "libticalcss: la version ne correspond pas." #: src/gui/main.c:249 msgid "Searching for ROM dumps..." msgstr "Recherche de ROM..." #: src/gui/main.c:291 msgid "Loading image..." msgstr "Chargement d'une image..." #: src/gui/main.c:299 msgid "Initializing m68k emulation engine..." msgstr "Initialisation du moteur d'émulation m68k..." #: src/gui/main.c:331 msgid "Loading previously saved state..." msgstr "Chargment d'un état précédemment sauvegardé..." #: src/gui/main.c:342 msgid "Pre-loading debugger..." msgstr "Préchargement du debugger..." #: src/gui/romversion.c:87 msgid "Filename" msgstr "Nom de fichier" #: src/gui/romversion.c:87 msgid "Model" msgstr "Modèle" #: src/gui/romversion.c:87 msgid "Version" msgstr "Version" #: src/gui/romversion.c:88 msgid "Boot" msgstr "Boot" #: src/gui/romversion.c:88 msgid "Hardware" msgstr "Matériel" # ##, c-format # #, c-format #: src/gui/support.c:91 src/gui/support.c:115 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Impossible de trouver le fichier pixmap : %s" #: src/gui/wizard.c:110 msgid "Use PedRom" msgstr "Utiliser PedRom" #: src/gui/wizard.c:112 msgid "Use FLASH OS" msgstr "Utiliser un OS FLASH" #: src/gui/wizard.c:114 msgid "Use ROM dump" msgstr "Utiliser l'extracteur de ROM" #: src/gui/wizard.c:131 msgid "Importing TIBs. Please wait..." msgstr "Importation des TIB. Veuillez patienter..." # #, c-format #: src/sound/audio.c:36 msgid "Unable to initialize sound" msgstr "Impossible d'initialiser le son" #: src/sound/audio.c:65 msgid "Sound Error" msgstr "Erreur son" #: src/sound/audio.c:65 msgid "Not enough memory" msgstr "Pas assez de mémoire" # #, c-format #: src/sound/audio.c:75 msgid "Unable to open audio device" msgstr "Impossible d'ouvrir le périphérique audio" #: src/sound/stream.c:54 msgid "sound buffer full, dropping sample(s)" msgstr "tampon plein, purge d'échantillon(s)" #: glade/calc-2.str:7 msgid "TiEmu 3" msgstr "TiEmu 3" #: glade/calc-2.str:8 msgid "Use mouse or press a key." msgstr "Utiliser la souris ou presser une touche." #: glade/dbg_bkpts-2.str:7 msgid "Breakpoints" msgstr "Points d'arrêt" #: glade/dbg_bkpts-2.str:8 msgid "Add breakpoint" msgstr "Ajouter un point d'arrêt" #: glade/dbg_bkpts-2.str:9 msgid "Remove breakpoint(s)" msgstr "Enlever un point d'arrêt" #: glade/dbg_bkpts-2.str:10 msgid "Disable breakpoint" msgstr "Désactiver un point d'arrêt" #: glade/dbg_bkpts-2.str:11 msgid "Enable breakpoint" msgstr "Activer un point d'arrêt" #: glade/dbg_bkpts-2.str:12 msgid "Go to breakpoint location" msgstr "Aller à l'emplacement du point d'arrêt" #: glade/dbg_bkpts-2.str:13 msgid "Double-click a row to edit breakpoint values." msgstr "Double-cliquer une ligne pour éditer un point d'arrêt." #: glade/dbg_bkpts-2.str:14 msgid "Breakpoint context:" msgstr "Contexte du point d'arrêt:" #: glade/dbg_bkpts-2.str:15 msgid "Bits" msgstr "Bits" #: glade/dbg_bkpts-2.str:16 msgid "Data" msgstr "Données" #: glade/dbg_bkpts-2.str:17 msgid "Vectors" msgstr "Vecteurs" #: glade/dbg_bkpts-2.str:18 msgid "Prgm entry" msgstr "Entrée programme" #: glade/dbg_bits-2.str:7 msgid "Add Bit Breakpoint" msgstr "Ajouter un point d'arrêt sur bit" #: glade/dbg_bits-2.str:8 glade/dbg_cause-2.str:8 msgid "Address:" msgstr "Adresse:" #: glade/dbg_bits-2.str:9 glade/dbg_cause-2.str:10 glade/dbg_data-2.str:16 #: glade/dbg_data-2.str:17 glade/dbg_data-2.str:18 msgid "0x000000" msgstr "0x000000" #: glade/dbg_bits-2.str:10 msgid "Checks:" msgstr "Tests:" #: glade/dbg_bits-2.str:11 glade/dbg_bits-2.str:20 msgid "7" msgstr "7" #: glade/dbg_bits-2.str:12 glade/dbg_bits-2.str:21 msgid "6" msgstr "6" #: glade/dbg_bits-2.str:13 glade/dbg_bits-2.str:22 msgid "5" msgstr "5" #: glade/dbg_bits-2.str:14 glade/dbg_bits-2.str:23 msgid "4" msgstr "4" #: glade/dbg_bits-2.str:15 glade/dbg_bits-2.str:24 msgid "3" msgstr "3" #: glade/dbg_bits-2.str:16 glade/dbg_bits-2.str:25 msgid "2" msgstr "2" #: glade/dbg_bits-2.str:17 glade/dbg_bits-2.str:26 msgid "1" msgstr "1" #: glade/dbg_bits-2.str:18 glade/dbg_bits-2.str:27 glade/dbg_code-2.str:48 #: glade/dbg_regs-2.str:13 glade/dbg_regs-2.str:15 glade/dbg_regs-2.str:16 #: glade/dbg_regs-2.str:19 glade/dbg_regs-2.str:20 glade/dbg_regs-2.str:21 msgid "0" msgstr "0" #: glade/dbg_bits-2.str:19 msgid "States:" msgstr "États:" #: glade/dbg_cause-2.str:7 msgid "Breakpoint!" msgstr "Point d'arrêt!" #: glade/dbg_cause-2.str:9 glade/dbg_cause-2.str:20 msgid "Type:" msgstr "Type:" #: glade/dbg_cause-2.str:12 msgid "byte read" msgstr "octet lu" #: glade/dbg_cause-2.str:13 msgid "Mode:" msgstr "Mode:" #: glade/dbg_cause-2.str:14 msgid "A breakpoint has been encountered..." msgstr "Un point d'arrêt a été rencontré..." #: glade/dbg_cause-2.str:15 msgid "Target:" msgstr "Cible:" #: glade/dbg_cause-2.str:16 msgid "0x4c00" msgstr "0x4c00" #: glade/dbg_cause-2.str:17 glade/dbg_cause-2.str:27 msgid "Id:" msgstr "Id:" #: glade/dbg_cause-2.str:18 glade/dbg_cause-2.str:28 msgid "#0" msgstr "#0" #: glade/dbg_cause-2.str:19 msgid "Exception!" msgstr "Exception !" #: glade/dbg_cause-2.str:21 msgid "PC (pushed):" msgstr "PC (mis en pile):" #: glade/dbg_cause-2.str:22 msgid "illegal instr" msgstr "instruction illégale" #: glade/dbg_cause-2.str:23 glade/dbg_mem-2.str:15 msgid "000000" msgstr "000000" #: glade/dbg_cause-2.str:24 msgid "0000" msgstr "0000" #: glade/dbg_cause-2.str:25 msgid "SR (pushed):" msgstr "SR (mis en pile)" #: glade/dbg_cause-2.str:26 msgid "An exception has been encountered..." msgstr "Une exception a été rencontrée..." #: glade/dbg_code-2.str:7 msgid "Disassembly" msgstr "Désassemblage" #: glade/dbg_code-2.str:8 msgid "_Debug" msgstr "_Débogage" #: glade/dbg_code-2.str:9 msgid "_Run" msgstr "Exécuter" #: glade/dbg_code-2.str:10 msgid "Step into (single step)" msgstr "Un pas dedans (un seul)" #: glade/dbg_code-2.str:11 msgid "Step _in" msgstr "Un pas de_dans" #: glade/dbg_code-2.str:12 msgid "Step over (skip subroutine)" msgstr "Un pas par dessus (saute la sous-routine)" #: glade/dbg_code-2.str:13 msgid "Step _over" msgstr "Un pas _dessus" #: glade/dbg_code-2.str:14 msgid "Step out (return to caller)" msgstr "Un pas dehors (retourne à l'appelant)" #: glade/dbg_code-2.str:15 msgid "Step ou_t" msgstr "Un pas de_hors" #: glade/dbg_code-2.str:16 msgid "Run to _cursor" msgstr "Jusqu'au curseur" #: glade/dbg_code-2.str:17 msgid "_Break" msgstr "Stop" #: glade/dbg_code-2.str:18 msgid "_Log" msgstr "_Journal" #: glade/dbg_code-2.str:19 msgid "_Linkport" msgstr "Câble" #: glade/dbg_code-2.str:20 msgid "Windows" msgstr "Fenêtres" #: glade/dbg_code-2.str:21 msgid "_Registers" msgstr "Registres" #: glade/dbg_code-2.str:22 msgid "_Breakpoints" msgstr "Point d'arrêt" #: glade/dbg_code-2.str:23 msgid "_Memory" msgstr "Mémoire" #: glade/dbg_code-2.str:24 msgid "_PC trace" msgstr "Trace PC" #: glade/dbg_code-2.str:25 msgid "_Stack frame" msgstr "Pile" #: glade/dbg_code-2.str:26 msgid "_Heap (handles)" msgstr "Tas" #: glade/dbg_code-2.str:27 msgid "_I/O ports" msgstr "Ports d'E/S" #: glade/dbg_code-2.str:28 msgid "Dock Mode" msgstr "Mode dock" #: glade/dbg_code-2.str:29 msgid "_Group windows" msgstr "_Groupe les fenêtres" #: glade/dbg_code-2.str:30 msgid "_Show all" msgstr "Tout _montrer" #: glade/dbg_code-2.str:31 msgid "_Hide all" msgstr "Tout _cacher" #: glade/dbg_code-2.str:32 msgid "M_inimize all" msgstr "Tout minimiser" #: glade/dbg_code-2.str:33 msgid "M_aximize all" msgstr "Tout maximiser" #: glade/dbg_code-2.str:34 msgid "_Restore all" msgstr "Tout restaurer" #: glade/dbg_code-2.str:35 msgid "_Quit" msgstr "Quitter" #: glade/dbg_code-2.str:36 msgid "_Font" msgstr "_Police" #: glade/dbg_code-2.str:37 msgid "_State" msgstr "État_s:" #: glade/dbg_code-2.str:38 msgid "S_ave" msgstr "Enregistrer" #: glade/dbg_code-2.str:39 msgid "_Revert" msgstr "_Revenir" #: glade/dbg_code-2.str:40 msgid "Run (F5)" msgstr "Démarrer (F5)" #: glade/dbg_code-2.str:41 msgid "Single step / Step into (F7)" msgstr "Un seul pas / dedans (F7)" #: glade/dbg_code-2.str:42 msgid "Step over (F8)" msgstr "Un pas dessus (F8)" #: glade/dbg_code-2.str:43 msgid "Step out (F9)" msgstr "Un pas dehors (F9)" #: glade/dbg_code-2.str:44 msgid "Run to cursor (F4)" msgstr "Exécute jusqu'au curseur (F4)" #: glade/dbg_code-2.str:45 msgid "Break (F11)" msgstr "Stop (F11)" #: glade/dbg_code-2.str:46 msgid "Toggle breakpoint (F2)" msgstr "Bascule le point d'arrêt (F2)" #: glade/dbg_code-2.str:47 msgid "Cycle count:" msgstr "Compteur de cycles:" #: glade/dbg_code-2.str:49 msgid "00" msgstr "00" #: glade/dbg_code-2.str:50 msgid "Reset" msgstr "Réinitialiser" #: glade/dbg_code-2.str:51 msgid "Symbol:" msgstr "Symbole:" #: glade/dbg_code-2.str:52 msgid "by name" msgstr "par nom" #: glade/dbg_code-2.str:53 msgid "by addr" msgstr "par adresse" #: glade/dbg_code-2.str:54 msgid "by id" msgstr "par valeur" #: glade/dbg_code-2.str:55 glade/dbg_mem-2.str:19 msgid "Go to _address" msgstr "Aller à l'_adresse" #: glade/dbg_code-2.str:56 msgid "Go to _PC" msgstr "Aller au _PC" #: glade/dbg_code-2.str:57 msgid "Set _breakpoint" msgstr "Mettre un point d'arrêt" #: glade/dbg_code-2.str:58 msgid "Set _one shot bkpt" msgstr "Mettre un point d'arrêt temporaire" #: glade/dbg_code-2.str:59 msgid "Set PC to _selection" msgstr "Initialiser le PC sur la sélection" #: glade/dbg_code-2.str:60 glade/dbg_heap-2.str:9 glade/dbg_mem-2.str:22 #: glade/dbg_regs-2.str:10 glade/dbg_stack-2.str:12 msgid "View _memory" msgstr "Visualiser la _mémoire" #: glade/dbg_code-2.str:61 msgid "Change font" msgstr "Changer police" #: glade/dbg_code-2.str:62 glade/device-2.str:18 msgid "custom" msgstr "personnalisé" #: glade/dbg_code-2.str:63 msgid "default" msgstr "défaut" #: glade/dbg_code-2.str:64 msgid "Font:" msgstr "Police:" #: glade/dbg_data-2.str:7 msgid "Add Data Breakpoint" msgstr "Ajouter un point d'arrêt de donnée" #: glade/dbg_data-2.str:8 msgid "_Read" msgstr "Lu" #: glade/dbg_data-2.str:9 msgid "_Write" msgstr "Ecrit" #: glade/dbg_data-2.str:10 msgid "_Either" msgstr "Peu importe" #: glade/dbg_data-2.str:12 msgid "_Single" msgstr "Simple" #: glade/dbg_data-2.str:13 msgid "_Range" msgstr "Intervalle" #: glade/dbg_data-2.str:14 msgid "to" msgstr "à" #: glade/dbg_data-2.str:15 msgid "at" msgstr "à" #: glade/dbg_data-2.str:19 msgid "Byte" msgstr "Octet" #: glade/dbg_data-2.str:20 msgid "Word" msgstr "Mot" #: glade/dbg_data-2.str:21 msgid "Long" msgstr "Long" #: glade/dbg_entry-2.str:2 msgid "Set program entry breakpoint" msgstr "Mettre un point d'arrêt sur programme" #: glade/dbg_heap-2.str:7 msgid "Heap" msgstr "Tas" #: glade/dbg_heap-2.str:8 msgid "" "Double click rowl to open tab in the memory window at the handle address." msgstr "" "Double-cliquer une linge pour ouvrir un onglet à l'adresse pointée par le " "descripteur dans la fenêtre de visualisation de la mémoire." #: glade/dbg_ioports-2.str:7 glade/dbg_regs-2.str:7 glade/dbg_regs-2.str:28 msgid "Show registers" msgstr "Affiche les registres" #: glade/dbg_ioports-2.str:8 msgid "I/O ports" msgstr "Ports d'E/S" #: glade/dbg_ioports-2.str:9 glade/dbg_regs-2.str:9 msgid "Double-click value or item to edit." msgstr "Double-cliquer une ligne pour mettre à jour la configuration." #: glade/dbg_ioports-2.str:10 msgid "_Hex" msgstr "_Hex" #: glade/dbg_ioports-2.str:11 msgid "_Dec" msgstr "_Déc" #: glade/dbg_mem-2.str:7 msgid "Memory" msgstr "Mémoire" #: glade/dbg_mem-2.str:8 msgid "Add tab (F1)" msgstr "Ajouter un onglet (F1)" #: glade/dbg_mem-2.str:9 msgid "Remove tab (F2)" msgstr "Supprimer un onglet (F2)" #: glade/dbg_mem-2.str:10 msgid "Up (F3)" msgstr "Haut (F3)" #: glade/dbg_mem-2.str:11 msgid "Down (F4)" msgstr "Bas (F4)" #: glade/dbg_mem-2.str:12 msgid "Refresh tab (F5)" msgstr "Rafraîchir (F5)" #: glade/dbg_mem-2.str:13 msgid "View memory map (F6)" msgstr "Visualiser cartographie mémoire (F6)" #: glade/dbg_mem-2.str:14 msgid "Enter Address" msgstr "Entrer l'adresse" #: glade/dbg_mem-2.str:16 msgid "HEX address" msgstr "Adresse hexadécimale" #: glade/dbg_mem-2.str:17 msgid "Find" msgstr "Chercher" #: glade/dbg_mem-2.str:18 msgid "Find _next" msgstr "Cherche le _suivant" #: glade/dbg_mem-2.str:20 msgid "_Dis-assemble" msgstr "Désassembler" #: glade/dbg_mem-2.str:21 msgid "Dis-assemble (indirect)" msgstr "Désassembler (indirect)" #: glade/dbg_mem-2.str:23 msgid "Search" msgstr "Chercher" #: glade/dbg_mem-2.str:24 msgid "Find _Next" msgstr "Chercher le _suivant" #: glade/dbg_mem-2.str:25 msgid "Find:" msgstr "Recherche:" #: glade/dbg_mem-2.str:26 msgid "" "Hexadecimal strings must have 2 chars per byte and can be with or without " "space: FE ED or FEED." msgstr "FE EF or FEED" #: glade/dbg_mem-2.str:27 msgid "_ASCII" msgstr "_ASCII" #: glade/dbg_mem-2.str:28 msgid "_Case sensitive" msgstr "Respect majuscules" #: glade/dbg_pclog-2.str:7 msgid "PC trace" msgstr "Trace PC" #: glade/dbg_pclog-2.str:8 msgid "Double-click the row to disassemble." msgstr "Double-cliquer une ligne pour mettre à jour la configuration." #: glade/dbg_regs-2.str:8 glade/dbg_regs-2.str:29 msgid "Registers" msgstr "Registres" #: glade/dbg_regs-2.str:11 msgid "Status Register" msgstr "Registre d'état" #: glade/dbg_regs-2.str:12 glade/dbg_regs-2.str:72 msgid "T" msgstr "T" #: glade/dbg_regs-2.str:14 glade/dbg_regs-2.str:73 msgid "S" msgstr "S" #: glade/dbg_regs-2.str:17 msgid "I2" msgstr "I2" #: glade/dbg_regs-2.str:18 msgid "I1" msgstr "I1" #: glade/dbg_regs-2.str:22 glade/dbg_regs-2.str:74 msgid "X" msgstr "X" #: glade/dbg_regs-2.str:23 glade/dbg_regs-2.str:68 msgid "N" msgstr "N" #: glade/dbg_regs-2.str:24 glade/dbg_regs-2.str:69 msgid "Z" msgstr "Z" #: glade/dbg_regs-2.str:25 glade/dbg_regs-2.str:70 msgid "V" msgstr "V" #: glade/dbg_regs-2.str:26 glade/dbg_regs-2.str:71 msgid "C" msgstr "C" #: glade/dbg_regs-2.str:27 msgid "I0" msgstr "I0" #: glade/dbg_regs-2.str:30 msgid "D1=" msgstr "D1=" #: glade/dbg_regs-2.str:31 msgid "D2=" msgstr "D2=" #: glade/dbg_regs-2.str:32 msgid "D3=" msgstr "D3=" #: glade/dbg_regs-2.str:33 msgid "D4=" msgstr "D4=" #: glade/dbg_regs-2.str:34 msgid "D5=" msgstr "D5=" #: glade/dbg_regs-2.str:35 msgid "D6=" msgstr "D6=" #: glade/dbg_regs-2.str:36 msgid "D7=" msgstr "D7=" #: glade/dbg_regs-2.str:37 msgid "A0=" msgstr "A0=" #: glade/dbg_regs-2.str:38 msgid "A1=" msgstr "A1=" #: glade/dbg_regs-2.str:39 msgid "A2=" msgstr "A2=" #: glade/dbg_regs-2.str:40 msgid "A3=" msgstr "A3=" #: glade/dbg_regs-2.str:41 msgid "A4=" msgstr "A4=" #: glade/dbg_regs-2.str:42 msgid "A5=" msgstr "A5=" #: glade/dbg_regs-2.str:43 msgid "A6=" msgstr "A6=" #: glade/dbg_regs-2.str:44 msgid "A7=" msgstr "A7=" #: glade/dbg_regs-2.str:45 glade/dbg_regs-2.str:46 glade/dbg_regs-2.str:47 #: glade/dbg_regs-2.str:48 glade/dbg_regs-2.str:49 glade/dbg_regs-2.str:50 #: glade/dbg_regs-2.str:51 glade/dbg_regs-2.str:52 glade/dbg_regs-2.str:53 #: glade/dbg_regs-2.str:54 glade/dbg_regs-2.str:55 glade/dbg_regs-2.str:56 #: glade/dbg_regs-2.str:57 glade/dbg_regs-2.str:58 glade/dbg_regs-2.str:59 #: glade/dbg_regs-2.str:76 msgid "12345678" msgstr "12345678" #: glade/dbg_regs-2.str:60 msgid "USP=" msgstr "USP=" #: glade/dbg_regs-2.str:61 msgid "SSP=" msgstr "SSP=" #: glade/dbg_regs-2.str:62 msgid "PC=" msgstr "PC=" #: glade/dbg_regs-2.str:63 msgid "SR=" msgstr "SR=" #: glade/dbg_regs-2.str:64 glade/dbg_regs-2.str:65 glade/dbg_regs-2.str:66 msgid "123456" msgstr "123456" #: glade/dbg_regs-2.str:67 msgid "1234" msgstr "1234" #: glade/dbg_regs-2.str:75 msgid "I=" msgstr "I=" #: glade/dbg_regs-2.str:77 msgid "D0=" msgstr "D0=" #: glade/dbg_stack-2.str:7 msgid "Stack" msgstr "Pile" #: glade/dbg_stack-2.str:8 msgid "A7 (stack) is:" msgstr "A7 (pile) est:" #: glade/dbg_stack-2.str:9 msgid "USP" msgstr "USP" #: glade/dbg_stack-2.str:10 msgid "A7 (stack)" msgstr "A7 (pile)" #: glade/dbg_stack-2.str:11 msgid "A6 (frame)" msgstr "A6 (tas)" #: glade/dbg_vectors-2.str:7 msgid "Add Vector Breakpoint" msgstr "Ajouter un point d'arrêt" #: glade/dboxes-2.str:7 msgid "Title" msgstr "Titre" #: glade/dboxes-2.str:8 msgid "*" msgstr "*" #: glade/dboxes-2.str:9 msgid "Name:" msgstr "Nom:" #: glade/device-2.str:3 msgid "Communication Settings" msgstr "Paramètres de connexion" #: glade/device-2.str:4 msgid "_Auto-detect" msgstr "_Autodétection" #: glade/device-2.str:5 msgid "Cable:" msgstr "Câble:" #: glade/device-2.str:6 msgid "Port:" msgstr "Port:" #: glade/device-2.str:7 msgid "Calc:" msgstr "Calc:" #: glade/device-2.str:8 msgid "Timeout:" msgstr "Timeout:" #: glade/device-2.str:9 msgid "Delay:" msgstr "Délai:" #: glade/device-2.str:10 msgid "GrayLink" msgstr "GrayLink (gris)" #: glade/device-2.str:11 msgid "BlackLink" msgstr "BlackLink (noir)" #: glade/device-2.str:12 msgid "SilverLink" msgstr "SilverLink (argent)" #: glade/device-2.str:13 msgid "ParallelLink" msgstr "Câble parallèle" #: glade/device-2.str:14 msgid "VTi" msgstr "VTi" #: glade/device-2.str:16 msgid "virtual" msgstr "virtuel" #: glade/device-2.str:17 glade/device-2.str:23 msgid "null" msgstr "aucun" #: glade/device-2.str:19 msgid "#1" msgstr "n°1" #: glade/device-2.str:20 msgid "#2" msgstr "n°2" #: glade/device-2.str:21 msgid "#3" msgstr "n°3" #: glade/device-2.str:22 msgid "#4" msgstr "n°4" #: glade/device-2.str:24 msgid "TI73" msgstr "TI73" #: glade/device-2.str:25 msgid "TI82" msgstr "TI82" #: glade/device-2.str:26 msgid "TI83" msgstr "TI83" #: glade/device-2.str:27 msgid "TI83+" msgstr "TI83+" #: glade/device-2.str:28 msgid "TI84+" msgstr "TI84+" #: glade/device-2.str:29 msgid "TI85" msgstr "TI85" #: glade/device-2.str:30 msgid "TI86" msgstr "TI86" #: glade/device-2.str:31 msgid "TI89" msgstr "TI89" #: glade/device-2.str:32 msgid "TI89 Titanium" msgstr "Titanium" #: glade/device-2.str:33 glade/infos-2.str:18 msgid "TI92" msgstr "TI92" #: glade/device-2.str:34 msgid "TI92+" msgstr "TI92+" #: glade/device-2.str:35 msgid "V200PLT" msgstr "V200PLT" #: glade/device-2.str:36 msgid "Settings" msgstr "Configuration" #: glade/device-2.str:37 msgid "Have a problem ? Check out the log:" msgstr "Un problème est apparu ? Vérifiez le fichier journal: " #: glade/infos-2.str:7 msgid "Infos..." msgstr "_Informations..." #: glade/infos-2.str:8 msgid "Skin version:" msgstr "Version:" #: glade/infos-2.str:9 msgid "Skin name:" msgstr "Nom:" #: glade/infos-2.str:10 msgid "Skin author:" msgstr "Auteur:" #: glade/infos-2.str:11 msgid "Version:" msgstr "Version:" #: glade/infos-2.str:12 msgid "RAM size:" msgstr "Taille RAM:" #: glade/infos-2.str:13 msgid "ROM size:" msgstr "Taille ROM:" #: glade/infos-2.str:14 msgid "ROM type:" msgstr "Type ROM:" #: glade/infos-2.str:15 msgid "VTi/TiEmu" msgstr "VTi/TiEmu" #: glade/infos-2.str:16 msgid "Default TI-92" msgstr "Par défaut" #: glade/infos-2.str:17 msgid "Julien Blache" msgstr "Julien Blache" #: glade/infos-2.str:19 msgid "1.11" msgstr "1.11" #: glade/infos-2.str:20 msgid "128KB" msgstr "128KB" #: glade/infos-2.str:21 msgid "2MB" msgstr "2Mo" #: glade/infos-2.str:22 msgid "external ROM" msgstr "ROM externe" #: glade/infos-2.str:23 msgid "Calc type:" msgstr "Modèle:" # ##, c-format # #, c-format #: glade/infos-2.str:24 msgid "Hardware:" msgstr "Matériel:" #: glade/infos-2.str:25 msgid "HW1" msgstr "HW1" #: glade/log_link-2.str:7 msgid "Link Log" msgstr "Journal du Link" #: glade/log_link-2.str:8 msgid "Save" msgstr "Enregistrer" #: glade/log_link-2.str:10 msgid "Clear" msgstr "Effacer" #: glade/log_link-2.str:11 msgid "Close" msgstr "Fermer" #: glade/log_link-2.str:12 msgid "_Send" msgstr "_Envoyer" #: glade/log_link-2.str:13 msgid "_Receive" msgstr "_Recevoir" #: glade/log_link-2.str:14 msgid "Buffer size: " msgstr "Taille du tampon:" #: glade/log_link-2.str:15 msgid "KB" msgstr "Ko" #: glade/pbars-2.str:7 msgid "Title 1" msgstr "Titre 1" #: glade/pbars-2.str:8 msgid "Transfer status:" msgstr "État du transfert:" #: glade/pbars-2.str:9 msgid "Rate: 0.00 Kb/s" msgstr "Vitesse: 0.00 Ko/s" #: glade/pbars-2.str:10 msgid "Title 2" msgstr "Titre 2" #: glade/pbars-2.str:11 msgid "Message." msgstr "Message." #: glade/pbars-2.str:12 msgid "Title 3" msgstr "Titre 3" #: glade/pbars-2.str:13 glade/pbars-2.str:22 msgid "Total transfer:" msgstr "Transfert total:" #: glade/pbars-2.str:14 glade/pbars-2.str:17 glade/pbars-2.str:23 msgid "Current transfer:" msgstr "Transfert courant:" #: glade/pbars-2.str:15 glade/pbars-2.str:20 glade/pbars-2.str:26 msgid "Rate: 0.0 Kbytes/s" msgstr "Vitesse: 0.0 Koctets/s" #: glade/pbars-2.str:16 msgid "Title 4" msgstr "Titre 4" #: glade/pbars-2.str:18 glade/pbars-2.str:24 msgid "1/1: " msgstr "1/1: " #: glade/pbars-2.str:19 glade/pbars-2.str:25 msgid "Text" msgstr "Texte" #: glade/pbars-2.str:21 msgid "Title 5" msgstr "Titre 5" #: glade/popup-2.str:7 msgid "Welcome to TiEmu 3" msgstr "Bienvenue sur TiEmu" #: glade/popup-2.str:8 msgid "TiEmu Menu" msgstr "Menu TiEmu" #: glade/popup-2.str:9 msgid "" "Send the selected file to the emulator. This file can be of any type " "(single, group, backup, FLASH app or FLASH OS)." msgstr "" "Envoi le fichier sélectionné sur l'émulateur. Ce fichier peut être de " "n'importe quel type (unique, groupe, sauvegarde, application ou OS)." #: glade/popup-2.str:10 msgid "_Send file to TiEmu..." msgstr "_Envoyer un fichier..." #: glade/popup-2.str:11 msgid "_Debug file with TiEmu..." msgstr "_Debugger avec TiEmu..." #: glade/popup-2.str:12 msgid "_Link" msgstr "_Câble" #: glade/popup-2.str:13 msgid "Do the link cable setup." msgstr "Configure le câble." #: glade/popup-2.str:14 msgid "_Settings..." msgstr "Configuration..." #: glade/popup-2.str:15 msgid "_Quick-send..." msgstr "Envoi rapide..." #: glade/popup-2.str:16 msgid "" "Listen for files sent from TiEmu. Uncheck it if you are running program " "which use the linkport for sound." msgstr "" "Écoute le(s) fichier(s) envoyé(s) par TiEmu. Décochez si vous faites tourner " "un programme qui utilise le port de communication pour le son." #: glade/popup-2.str:17 msgid "_Listen for files" msgstr "Écoute les fichiers" #: glade/popup-2.str:18 msgid "_Emulate sound" msgstr "_Emulation du son" #: glade/popup-2.str:19 msgid "Configuration" msgstr "Configuration" #: glade/popup-2.str:20 msgid "Save the actual configuration into a text file." msgstr "Sauve la configuration actuelle dans un fichier." #: glade/popup-2.str:21 msgid "_Save config..." msgstr "Sauver la config..." #: glade/popup-2.str:22 msgid "Load the configuration previously saved." msgstr "Charge la configuration précédemment enregistrée." #: glade/popup-2.str:23 msgid "_Load config..." msgstr "Charger la config..." #: glade/popup-2.str:24 msgid "Calculator state" msgstr "État de la calculatrice" #: glade/popup-2.str:25 msgid "Reload the previously saved state." msgstr "Recharge un état précédemment enregistré." #: glade/popup-2.str:26 msgid "_Revert to saved state" msgstr "Revenir à l'état précédent" #: glade/popup-2.str:27 msgid "Load the calculator state from file." msgstr "Charger l'état de la calculatrice depuis un fichier." #: glade/popup-2.str:28 msgid "_Load state image..." msgstr "Charger un état..." #: glade/popup-2.str:29 msgid "Save the calculator state into a file (called state image)." msgstr "Sauver l'état de la calculatrice dans un fichier (image d'état)." # ##, c-format #: glade/popup-2.str:30 msgid "_Save state image..." msgstr "Sauver un état..." #: glade/popup-2.str:31 msgid "Do a 'save state image' and exits." msgstr "Sauve l'état et quitte." #: glade/popup-2.str:32 msgid "_Exit and save state" msgstr "Sauver et quitter" #: glade/popup-2.str:33 msgid "Go into the debugger." msgstr "Aller dans le debugger" #: glade/popup-2.str:34 msgid "_Enter debugger..." msgstr "Lancer le debugger..." #: glade/popup-2.str:35 msgid "Reset the calculator." msgstr "Réinitialise la calculatrice." #: glade/popup-2.str:36 msgid "_Reset calc" msgstr "Réinitialiser la calculatrice" #: glade/popup-2.str:37 msgid "Load a FLASH upgrade into the FLASH memory of the calculator." msgstr "" "Il ne s'agit pas d'une MAJ ou cette MAJ n'est pas destinée à ce modèle de " "calculatrice." #: glade/popup-2.str:38 msgid "_Upgrade calc" msgstr "_Mettre à jour" #: glade/popup-2.str:39 msgid "Import and/or set an image to emulate." msgstr "Importe et/ou active une image à émuler" #: glade/popup-2.str:40 msgid "Set R_OM (image/upgrade)" msgstr "Changer d'image" #: glade/popup-2.str:41 msgid "Emulator options" msgstr "Options" #: glade/popup-2.str:42 msgid "" "Run the calculator at its default speed (default) or at the maximum the " "computer can do." msgstr "" "Fait tourner la calculatrice à sa vitesse par défaut (défaut) ou à la " "vitesse maximale à laquelle l'ordinateur le peut." #: glade/popup-2.str:43 msgid "_Restrict to actual speed" msgstr "_Vitesse nominale" #: glade/popup-2.str:44 msgid "" "Enable/disable hardware protection. Please note you will have to restart the " "emulator or select an image for changes to take effect." msgstr "" "Active/désactive la protection matérielle. Veuillez noter que vous devrez " "redémarrer l'émulateur ou sélectionner une image pour que cette modification " "prenne effet." #: glade/popup-2.str:45 msgid "H_W protection" msgstr "Protection matérielle" #: glade/popup-2.str:46 msgid "_High LCD update" msgstr "Rafraîchissement LCD élevé" #: glade/popup-2.str:47 msgid "_Med LCD update" msgstr "Rafraîchissement LCD moyen" #: glade/popup-2.str:48 msgid "L_ow LCD update" msgstr "Rafraîchissement LCD faible" #: glade/popup-2.str:49 msgid "_Normal view (x1)" msgstr "Vue _normale (x1)" #: glade/popup-2.str:50 msgid "_Large view (x2)" msgstr "Vue _large (x2)" #: glade/popup-2.str:51 msgid "_Full screen" msgstr "_Plein écran" #: glade/popup-2.str:52 msgid "_Custom view" msgstr "Vue personnalisée" #: glade/popup-2.str:53 msgid "Skin for current calc" msgstr "Skin courant" #: glade/popup-2.str:54 msgid "No skin (just LCD)." msgstr "Pas de skin." #: glade/popup-2.str:55 msgid "_None" msgstr "Aucun" #: glade/popup-2.str:56 msgid "Returns to default skin." msgstr "Retourne au skin par défaut." #: glade/popup-2.str:57 msgid "_Default" msgstr "_Défaut" #: glade/popup-2.str:58 msgid "Choose a skin to use." msgstr "Choisir un skin." #: glade/popup-2.str:59 msgid "_Other..." msgstr "_Autre..." #: glade/popup-2.str:60 msgid "Screenshot" msgstr "Capture écran" #: glade/popup-2.str:61 msgid "Do a screenshot now!" msgstr "Capture maintenant !" #: glade/popup-2.str:62 msgid "_Now!" msgstr "_Maintenant !" #: glade/popup-2.str:63 msgid "Set options for screenshot (image, type)." msgstr "Configure la capture écran (type & image)." #: glade/popup-2.str:64 msgid "_Options" msgstr "_Options" #: glade/popup-2.str:65 msgid "_Copy to clipboard" msgstr "_Copier dans le presse-papier" #: glade/popup-2.str:66 msgid "Key Press" msgstr "Appui touche" #: glade/popup-2.str:67 msgid "Setup recording" msgstr "Paramètres enregistrement" #: glade/popup-2.str:68 msgid "Record" msgstr "Enregistrement" #: glade/popup-2.str:69 msgid "Setup playing" msgstr "Paramètres lecture" #: glade/popup-2.str:70 msgid "Play" msgstr "Lecture" #: glade/popup-2.str:71 msgid "Misc" msgstr "Divers" #: glade/popup-2.str:72 msgid "Open the TiEmu user's manual in a browser." msgstr "Ouvrir le manuel de l'utilisateur dans un navigateur." #: glade/popup-2.str:73 msgid "_User's Manual" msgstr "Manuel de l'_utilisateur" #: glade/popup-2.str:74 msgid "Open the Linux manpage (applicable to Windows, too)." msgstr "Ouvrir la page de manuel (Linux & Windows)." #: glade/popup-2.str:75 msgid "_Manpage" msgstr "_Page de manuel" #: glade/popup-2.str:76 msgid "_Bookmarks" msgstr "_Favoris" #: glade/popup-2.str:77 msgid "http://lpg.ticalc.org/prj_tiemu" msgstr "http://lpg.ticalc.org, le groupe de programmeurs Linux." #: glade/popup-2.str:79 msgid "http://tigcc.ticalc.org" msgstr "ticalc.org" #: glade/popup-2.str:80 msgid "TIGCC" msgstr "TIGCC" #: glade/popup-2.str:81 msgid "http://www.tilp.info" msgstr "http://www.tilp.info" #: glade/popup-2.str:82 msgid "TiLP" msgstr "TiLP" #: glade/popup-2.str:83 msgid "http://education.ti.com" msgstr "http://education.ti.com" #: glade/popup-2.str:84 msgid "TI Education" msgstr "TI Education" #: glade/popup-2.str:85 msgid "http://www.ticalc.org" msgstr "http://www.ticalc.org" #: glade/popup-2.str:86 msgid "ticalc.org" msgstr "ticalc.org" #: glade/popup-2.str:87 msgid "How to report a bug or a problem." msgstr "Comment envoyer un rapport de bogue ou un problème." #: glade/popup-2.str:88 msgid "Bu_g report" msgstr "Rapport de _bogue" #: glade/popup-2.str:89 msgid "Display the log of all changes." msgstr "Afficher la liste des changements." #: glade/popup-2.str:90 msgid "_ChangeLog" msgstr "_Changements" #: glade/popup-2.str:91 msgid "About TiEmu..." msgstr "A propos de TiEmu..." #: glade/popup-2.str:92 msgid "_About..." msgstr "A propos..." #: glade/popup-2.str:93 msgid "_Infos..." msgstr "_Informations..." #: glade/popup-2.str:94 msgid "Just exits." msgstr "Quitter tout simplement." #: glade/popup-2.str:95 msgid "E_xit without saving state" msgstr "Quitter sans sauver" #: glade/quicksend-2.str:7 msgid "Quick send" msgstr "Envoi rapide" #: glade/quicksend-2.str:8 msgid "_enable" msgstr "_activé" #: glade/romversion-2.str:7 msgid "Set ROM version" msgstr "Choisir une ROM" #: glade/scroptions-2.str:7 msgid "Screen Options" msgstr "Options de capture d'écran" #: glade/scroptions-2.str:8 msgid "_JPEG" msgstr "_JPEG" #: glade/scroptions-2.str:9 msgid "_PNG" msgstr "_PNG" #: glade/scroptions-2.str:10 msgid "_ICO" msgstr "_ICO" #: glade/scroptions-2.str:11 msgid "_EPS" msgstr "_EPS" #: glade/scroptions-2.str:12 msgid "PD_F" msgstr "PDF" #: glade/scroptions-2.str:13 msgid "_BMP" msgstr "_BMP" #: glade/scroptions-2.str:14 msgid "Image format:" msgstr "Format d'image:" #: glade/scroptions-2.str:15 msgid "Skips: " msgstr "Sauts: " #: glade/scroptions-2.str:16 msgid "Number of frames to capture" msgstr "Nombre de trames à capturer" #: glade/scroptions-2.str:17 msgid "" "Number of frames to skip between 2 captures. Beware: if you want to capture " "image every 4 frames, you need to set value to 3." msgstr "" "Nombre de trames à sauter entre 2 captures. Attention: si vous voulez " "capturer une image toutes les 4 trames, vous devez mettre la valeur à 3." #: glade/scroptions-2.str:18 msgid "Shots: " msgstr "Captures: " #: glade/scroptions-2.str:19 msgid "Burst capture:" msgstr "Capture en rafale:" #: glade/scroptions-2.str:20 msgid "Select folder" msgstr "Sélectionner un dossier" #: glade/scroptions-2.str:21 msgid "screenshot" msgstr "capture" #: glade/scroptions-2.str:22 msgid "-000.jpg" msgstr "-000.jpg" #: glade/scroptions-2.str:23 msgid "Folder & Filename:" msgstr "Dossier & Fichier:" #: glade/scroptions-2.str:24 msgid "Black&_White" msgstr "Noir & Blanc" #: glade/scroptions-2.str:25 msgid "Colo_r" msgstr "Couleur" #: glade/scroptions-2.str:26 msgid "_LCD only" msgstr "_LCD" #: glade/scroptions-2.str:27 msgid "_Calculator" msgstr "_Calculatrice" #: glade/scroptions-2.str:28 msgid "Image type:" msgstr "Type d'image:" #: glade/wizard-2.str:7 glade/wizard-2.str:17 glade/wizard-2.str:25 #: glade/wizard-2.str:27 msgid "TiEmu wizard" msgstr "Assistant" #: glade/wizard-2.str:8 msgid "Welcome to TiEmu 3, the Linux/Win32 TI emulator." msgstr "Bienvenur sur TiEmu, l'émulateur pour Linux/Windows" #: glade/wizard-2.str:9 msgid "" "I want to use PedRom (GPL'ed replacement OS) \n" "shipped with TiEmu." msgstr "" "Je veux utiliser PedRom (OS de remplacement sous license GPL) \n" "qui est fourni avec TiEmu." #: glade/wizard-2.str:11 msgid "" "You have downloaded a FLASH upgrade on the TI\n" "website." msgstr "" "Vous avez téléchargé une MAJ depuis le site\n" "de TI." #: glade/wizard-2.str:13 msgid "You already have a ROM dump." msgstr "Vous avez déjà une copie de ROM." #: glade/wizard-2.str:14 msgid "" "You want to use TiLP or another dumping program \n" "to get a ROM dump of your calculator ROM." msgstr "" "Vous voulez utiliser TiLP ou un autre programme de dumping \n" "pour obtenir une copie de la ROM de votre calculatrice." #: glade/wizard-2.str:16 msgid "" "Remind you that you can not distribute your ROM dump(s). They are " "copyrighted by Texas Instruments." msgstr "" "Rappelez-vous que vous ne devez pas distribuez vos copies de ROM. Elles sont " "soumises au règles du copyright telles qu'édictées dans la license fournie " "par TI." #: glade/wizard-2.str:18 msgid "" "TiEmu is now set up and ready for use. Some tips on how to use the emulator:" msgstr "" "TiEmu est maintenant prêt à être utilisé. Quelques conseils d'utilisation:" #: glade/wizard-2.str:19 msgid "" "* You have access to a popup menu by right-clicking in the emulator's window." msgstr "" "* Vous avez accès au menu déroulant par un clic bouton droit dans la fenêtre." #: glade/wizard-2.str:20 msgid "* To use keys, use mouse or keyboard" msgstr "* Utilisez le clavier ou la souris pour frapper une touche" #: glade/wizard-2.str:21 msgid "" "* To change to a different calculator or ROM version, use an item of the ROM " "menu." msgstr "" " Pour changer de calculatrice et/ou de ROM, sélectionnez une ROM dans le " "menu." #: glade/wizard-2.str:22 msgid "* You can save the emulator state and config." msgstr "* Vous pouvez sauver l'état de l'émulateur et la configuration." #: glade/wizard-2.str:23 msgid "" "* If your calculator screen is blank, use 'Ctrl' with '+/-' for adjusting " "contrast." msgstr "" " Si l'écran est blanc, utilisez 'Ctrl' + '+'/'-' pour régler le contraste." #: glade/wizard-2.str:24 msgid "Click the 'Finish' button to start TiEmu." msgstr "Cliquer le bouton 'Finir' pour démarrer TiEmu." #: glade/wizard-2.str:26 msgid "" "If you want to get a ROM dump with TiLP, you will have to download it from: " "Be sure to read the user's manual!" msgstr "" "Si vous voulez obtenir une copie de votre ROM avec TiLP, vous devrez le " "télécharger depuis: . Soyez sûr d'avoir bien lu le manuel !" #: glade/wizard-2.str:28 msgid "" "The FLASH upgrade you have selected is being to be converted into a TiEmu " "image. Please wait..." msgstr "" "La MAJ sélectionnée est en train d'être convertie en une image TiEmu." "Veuillez patienter..." #: glade/wizard-2.str:29 msgid "Note also that the converted image will not have a boot block." msgstr "Notez aussi que l'image obtenue n'a pas de bloc de démarrage." #~ msgid "Heap (handles)" #~ msgstr "Tas" #~ msgid "Up" #~ msgstr "Haut" #~ msgid "PC log" #~ msgstr "Journal du PC" #~ msgid "Trace (PC listing):" #~ msgstr "Trace du PC:" #~ msgid "_Go to address" #~ msgstr "_Aller au dossier parent" #~ msgid "Stack/Frame pointers" #~ msgstr "Pointeurs de Pile/Tas" tiemu-3.03-nogdb+dfsg/po/insert-header.sin000066400000000000000000000012401220314353500204460ustar00rootroot00000000000000# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } tiemu-3.03-nogdb+dfsg/po/quot.sed000066400000000000000000000002311220314353500166650ustar00rootroot00000000000000s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g tiemu-3.03-nogdb+dfsg/po/remove-potcdate.sin000066400000000000000000000006601220314353500210170ustar00rootroot00000000000000# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } tiemu-3.03-nogdb+dfsg/po/stamp-po000066400000000000000000000000121220314353500166600ustar00rootroot00000000000000timestamp tiemu-3.03-nogdb+dfsg/po/tiemu.pot000066400000000000000000001334701220314353500170630ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: tiemu-users@lists.sourceforge.net\n" "POT-Creation-Date: 2009-05-30 00:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: src/core/ti_hw/flash.c:261 #, c-format msgid "found SSP=$%06x and PC=$%06x at offset 0x%x" msgstr "" #: src/core/ti_sw/iodefs.c:351 #, c-format msgid "loading I/O defs: %s (%i entries)" msgstr "" #: src/core/ti_sw/mem_map.c:163 #, c-format msgid "loading memory map: %s" msgstr "" #: src/core/error.c:49 msgid "No error." msgstr "" #: src/core/error.c:53 msgid "Can not open file." msgstr "" #: src/core/error.c:57 msgid "Can not open state image: file is corrupted or missing." msgstr "" #: src/core/error.c:61 msgid "" "Can not open state image: revision changed. You have to recreate the state " "image." msgstr "" #: src/core/error.c:65 msgid "" "Can not open state image: state image header does not match ROM image " "header: have you changed/updated your ROM image?" msgstr "" #: src/core/error.c:69 msgid "" "Can not open state image: this state image is not targetted for your current " "emulator image (calculator model and/or OS version must match!). Choose " "another image before." msgstr "" #: src/core/error.c:73 msgid "Invalid emulator image. File is corrupted or revision changed." msgstr "" #: src/core/error.c:77 src/gui/wizard.c:289 msgid "Invalid FLASH upgrade." msgstr "" #: src/core/error.c:81 src/gui/wizard.c:253 msgid "Invalid ROM dump." msgstr "" #: src/core/error.c:85 msgid "No image." msgstr "" #: src/core/error.c:89 msgid "ROM dump has a weird size." msgstr "" #: src/core/error.c:93 msgid "This is not recognized as a TI file." msgstr "" #: src/core/error.c:97 msgid "Can't parse folder." msgstr "" #: src/core/error.c:101 msgid "Can't upgrade calculator." msgstr "" #: src/core/error.c:105 msgid "" "Error code not found in the list.\n" "This is a bug. Please report it." msgstr "" #: src/core/images.c:121 msgid "ROM information:" msgstr "" #: src/core/images.c:122 src/core/images.c:133 src/core/images.c:143 #, c-format msgid " Calculator : %s" msgstr "" #: src/core/images.c:123 src/core/images.c:134 src/core/images.c:144 #, c-format msgid " Firmware : %s" msgstr "" #: src/core/images.c:124 src/core/images.c:135 src/core/images.c:145 #, c-format msgid " Memory type : %s" msgstr "" #: src/core/images.c:125 src/core/images.c:136 src/core/images.c:146 #, c-format msgid " Memory size : %iMB (%i bytes)" msgstr "" #: src/core/images.c:126 src/core/images.c:137 src/core/images.c:147 #, c-format msgid " ROM base : %02x" msgstr "" #: src/core/images.c:127 src/core/images.c:148 #, c-format msgid " Hardware : %i" msgstr "" #: src/core/images.c:132 msgid "TIB information:" msgstr "" #: src/core/images.c:142 msgid "Image information:" msgstr "" #: src/core/images.c:149 #, c-format msgid " Has boot : %s" msgstr "" #: src/core/images.c:149 src/core/images.c:1092 msgid "yes" msgstr "" #: src/core/images.c:149 src/core/images.c:1092 msgid "no" msgstr "" #: src/core/images.c:176 src/core/images.c:1045 #, c-format msgid "Unable to open this file: <%s>" msgstr "" #: src/core/images.c:190 #, c-format msgid "Warning: truncating 8 MB image to 4 MB: <%s>" msgstr "" #: src/core/images.c:203 #, c-format msgid "Failed to read from file: <%s>" msgstr "" #: src/core/images.c:209 #, c-format msgid "Failed to close file: <%s>" msgstr "" #: src/core/images.c:463 src/core/images.c:753 src/core/images.c:767 #, c-format msgid "Unable to get information on ROM dump: %s" msgstr "" #: src/core/images.c:490 msgid "Completing image to 4 MB!" msgstr "" #: src/core/images.c:547 src/core/images.c:914 #, c-format msgid "Unable to get information on FLASH upgrade: <%s>" msgstr "" #: src/core/images.c:838 #, c-format msgid "Unable to get information on image: %s" msgstr "" #: src/core/images.c:973 src/core/images.c:1053 src/core/images.c:1191 msgid "Opendir error" msgstr "" #: src/core/images.c:1039 msgid "Scanning images/upgrades... " msgstr "" #: src/core/images.c:1067 #, c-format msgid "Can not stat: <%s>" msgstr "" #: src/core/images.c:1078 #, c-format msgid "Can not get ROM/update info: <%s>" msgstr "" #: src/core/images.c:1107 msgid "Done." msgstr "" #: src/core/interface.c:252 src/core/interface.c:263 src/core/interface.c:274 #: src/core/interface.c:285 src/core/interface.c:296 msgid "Bad argument!" msgstr "" #: src/core/state.c:178 #, c-format msgid "loading state image: %s" msgstr "" #: src/core/state.c:353 #, c-format msgid "saving state image (TiEmu v2.00 format): %s" msgstr "" #: src/core/type2str.c:118 msgid "Initial SSP" msgstr "" #: src/core/type2str.c:119 msgid "Initial PC" msgstr "" #: src/core/type2str.c:120 msgid "Bus Error vector" msgstr "" #: src/core/type2str.c:121 msgid "Address Error vector" msgstr "" #: src/core/type2str.c:122 msgid "Illegal Instruction vector" msgstr "" #: src/core/type2str.c:123 msgid "Zero Divide vector" msgstr "" #: src/core/type2str.c:124 msgid "CHK Instruction vector" msgstr "" #: src/core/type2str.c:125 msgid "TRAPV Instruction vector" msgstr "" #: src/core/type2str.c:126 msgid "Privilege Violation vector" msgstr "" #: src/core/type2str.c:127 msgid "Trace vector" msgstr "" #: src/core/type2str.c:128 msgid "Line 1010 Emulator vectors" msgstr "" #: src/core/type2str.c:129 msgid "Line 1111 Emulator vectors" msgstr "" #: src/core/type2str.c:130 src/core/type2str.c:131 src/core/type2str.c:132 #: src/core/type2str.c:134 src/core/type2str.c:135 src/core/type2str.c:136 #: src/core/type2str.c:137 src/core/type2str.c:138 src/core/type2str.c:139 #: src/core/type2str.c:140 src/core/type2str.c:141 src/core/type2str.c:181 msgid "Unassigned, reserved" msgstr "" #: src/core/type2str.c:133 msgid "Uninitialised Interrupt vector" msgstr "" #: src/core/type2str.c:142 msgid "Spurious Interrupt vector" msgstr "" #: src/core/type2str.c:143 msgid "Level 1 Interrupt auto-vectors" msgstr "" #: src/core/type2str.c:144 msgid "Level 2 Interrupt auto-vectors" msgstr "" #: src/core/type2str.c:145 msgid "Level 3 Interrupt auto-vectors" msgstr "" #: src/core/type2str.c:146 msgid "Level 4 Interrupt auto-vectors" msgstr "" #: src/core/type2str.c:147 msgid "Level 5 Interrupt auto-vectors" msgstr "" #: src/core/type2str.c:148 msgid "Level 6 Interrupt auto-vectors" msgstr "" #: src/core/type2str.c:149 msgid "Level 7 Interrupt auto-vectors" msgstr "" #: src/core/type2str.c:150 msgid "TRAP #0 Instruction vectors" msgstr "" #: src/core/type2str.c:151 msgid "TRAP #1 Instruction vectors" msgstr "" #: src/core/type2str.c:152 msgid "TRAP #2 Instruction vectors" msgstr "" #: src/core/type2str.c:153 msgid "TRAP #3 Instruction vectors" msgstr "" #: src/core/type2str.c:154 msgid "TRAP #4 Instruction vectors" msgstr "" #: src/core/type2str.c:155 msgid "TRAP #5 Instruction vectors" msgstr "" #: src/core/type2str.c:156 msgid "TRAP #6 Instruction vectors" msgstr "" #: src/core/type2str.c:157 msgid "TRAP #7 Instruction vectors" msgstr "" #: src/core/type2str.c:158 msgid "TRAP #8 Instruction vectors" msgstr "" #: src/core/type2str.c:159 msgid "TRAP #9 Instruction vectors" msgstr "" #: src/core/type2str.c:160 msgid "TRAP #10 Instruction vectors" msgstr "" #: src/core/type2str.c:161 msgid "TRAP #11 Instruction vectors" msgstr "" #: src/core/type2str.c:162 msgid "TRAP #12 Instruction vectors" msgstr "" #: src/core/type2str.c:163 msgid "TRAP #13 Instruction vectors" msgstr "" #: src/core/type2str.c:164 msgid "TRAP #14 Instruction vectors" msgstr "" #: src/core/type2str.c:165 msgid "TRAP #15 Instruction vectors" msgstr "" #: src/core/type2str.c:182 src/core/type2str.c:184 msgid "User Interrupt vectors" msgstr "" #: src/core/type2str.c:192 src/core/type2str.c:208 src/core/type2str.c:221 #: src/gui/debugger/dbg_bkpts.c:296 glade/dbg_cause-2.str:11 msgid "access" msgstr "" #: src/core/type2str.c:193 msgid "access range" msgstr "" #: src/core/type2str.c:194 msgid "address" msgstr "" #: src/core/type2str.c:195 src/core/type2str.c:211 src/core/type2str.c:227 msgid "exception" msgstr "" #: src/core/type2str.c:196 src/core/type2str.c:212 src/core/type2str.c:229 msgid "prgm entry" msgstr "" #: src/core/type2str.c:197 src/core/type2str.c:213 src/core/type2str.c:231 msgid "hw protection" msgstr "" #: src/core/type2str.c:198 src/core/type2str.c:214 src/core/type2str.c:233 msgid "bit change" msgstr "" #: src/core/type2str.c:199 src/core/type2str.c:215 src/gui/infos.c:61 msgid "unknown" msgstr "" #: src/core/type2str.c:209 src/core/type2str.c:223 #: src/gui/debugger/dbg_bkpts.c:296 msgid "range" msgstr "" #: src/core/type2str.c:210 src/core/type2str.c:225 msgid "code" msgstr "" #: src/core/hwpm.c:61 msgid "Hardware Parameters Block:" msgstr "" #: src/core/hwpm.c:62 #, c-format msgid " length : %i" msgstr "" #: src/core/hwpm.c:121 msgid "" "Detected V200 patched ROM (ExtendeD): emulated as TI92+ by changing the hwID " "from 8 to 1." msgstr "" #: src/core/hwpm.c:127 msgid "" "Detected TI89 Titanium patched ROM (ExtendeD): emulated as TI89 by changing " "the hwID from 9 to 3." msgstr "" #: src/misc/cmdline.c:62 #, c-format msgid "THIS PROGRAM COMES WITH ABSOLUTELY NO WARRANTY\n" msgstr "" #: src/misc/cmdline.c:63 #, c-format msgid "PLEASE READ THE DOCUMENTATION FOR DETAILS\n" msgstr "" #: src/misc/files.c:95 src/misc/files.c:107 src/misc/files.c:123 #: src/gui/calc/keyboard.c:77 src/gui/calc/popup.c:176 #: src/gui/calc/popup.c:179 src/gui/calc/popup.c:191 src/gui/dboxes.c:42 #: src/gui/fs_misc.c:155 src/gui/fs_misc.c:158 msgid "Information" msgstr "" #: src/misc/files.c:95 msgid "Unable to remove the file!" msgstr "" #: src/misc/files.c:107 msgid "" "Unable to move file.\n" "\n" msgstr "" #: src/misc/files.c:123 msgid "" "Unable to create the directory.\n" "\n" msgstr "" #: src/misc/files.c:151 #, c-format msgid "" "The file %s already exists.\n" "Overwrite?" msgstr "" #: src/misc/files.c:153 src/gui/dboxes.c:44 src/gui/fs_misc.c:82 #: src/gui/fs_misc.c:239 msgid "Warning" msgstr "" #: src/misc/files.c:154 msgid "Overwrite " msgstr "" #: src/misc/files.c:154 msgid "Rename " msgstr "" #: src/misc/files.c:154 msgid "Skip " msgstr "" #: src/misc/files.c:164 msgid "Rename the file" msgstr "" #: src/misc/files.c:165 msgid "New name: " msgstr "" #: src/misc/files.c:209 src/misc/tie_error.c:78 src/gui/calc/popup.c:797 #: src/gui/calc/popup.c:847 src/gui/dboxes.c:48 src/gui/fs_misc.c:212 #: src/gui/fs_misc.c:391 src/gui/fs_misc.c:421 src/gui/fs_misc.c:437 #: src/gui/fs_misc.c:502 src/gui/main.c:218 src/gui/main.c:226 #: src/gui/main.c:234 src/gui/main.c:242 src/gui/quicksend.c:120 #: src/gui/wizard.c:253 src/gui/wizard.c:289 msgid "Error" msgstr "" #: src/misc/files.c:209 msgid "Unable to move the temporary file.\n" msgstr "" #: src/misc/rcfile.c:76 #, c-format msgid "Configuration file error at line %i." msgstr "" #: src/misc/rcfile.c:181 msgid "" "Configuration file not found, use default values. You can create one by the " "'File|Save config' command menu." msgstr "" #: src/misc/screenshot.c:70 msgid "Couldn't allocate memory!" msgstr "" #: src/misc/screenshot.c:81 msgid "zlib init error" msgstr "" #: src/misc/screenshot.c:97 msgid "zlib deflate error" msgstr "" #: src/misc/screenshot.c:187 src/misc/screenshot.c:237 msgid "Couldn't open destination file for writing!" msgstr "" #: src/gui/calc/calc.c:234 src/gui/calc/popup.c:655 #: src/gui/debugger/dbg_bkpts.c:363 src/gui/debugger/dbg_bits.c:50 #: src/gui/debugger/dbg_cause.c:60 src/gui/debugger/dbg_cause.c:144 #: src/gui/debugger/dbg_code.c:357 src/gui/debugger/dbg_code.c:698 #: src/gui/debugger/dbg_code.c:1160 src/gui/debugger/dbg_data.c:56 #: src/gui/debugger/dbg_entry.c:207 src/gui/debugger/dbg_heap.c:146 #: src/gui/debugger/dbg_heap.c:267 src/gui/debugger/dbg_iop.c:430 #: src/gui/debugger/dbg_mem.c:712 src/gui/debugger/dbg_mem.c:1087 #: src/gui/debugger/dbg_mem.c:1311 src/gui/debugger/dbg_pclog.c:138 #: src/gui/debugger/dbg_regs.c:194 src/gui/debugger/dbg_regs.c:539 #: src/gui/debugger/dbg_stack.c:163 src/gui/debugger/dbg_stack.c:417 #: src/gui/debugger/dbg_vectors.c:145 src/gui/logger/log_link.c:62 #: src/gui/infos.c:50 src/gui/manpage.c:72 src/gui/pbars.c:63 #: src/gui/quicksend.c:59 src/gui/release.c:77 src/gui/romversion.c:191 #: src/gui/scroptions.c:61 src/gui/wizard.c:71 #, c-format msgid "%s: GUI loading failed!\n" msgstr "" #: src/gui/calc/calc.c:751 #, c-format msgid "screenshot to %s... " msgstr "" #: src/gui/calc/calc.c:770 msgid "unsupported screenshot options combination, screenshot aborted." msgstr "" #: src/gui/calc/calc.c:797 #, c-format msgid "failed to save pixbuf file: %s: %s" msgstr "" #: src/gui/calc/calc.c:802 msgid "done!" msgstr "" #: src/gui/calc/keymap.c:207 #, c-format msgid "loading keymap: %s (%i keys)" msgstr "" #: src/gui/calc/keypress.c:58 src/gui/calc/keypress.c:84 msgid "Can't open file." msgstr "" #: src/gui/calc/popup.c:71 #, c-format msgid "* TiEmu version %s (cables=%s, files=%s, calcs=%s, conv=%s)" msgstr "" #: src/gui/calc/popup.c:177 msgid "Configuration file saved (in tiemu.ini)." msgstr "" #: src/gui/calc/popup.c:180 msgid "Configuration file saved (in ~/.tiemu)." msgstr "" #: src/gui/calc/popup.c:191 msgid "Configuration file loaded." msgstr "" #: src/gui/calc/popup.c:267 src/gui/dboxes.c:46 msgid "Question" msgstr "" #: src/gui/calc/popup.c:267 msgid "Clear RAM?" msgstr "" #: src/gui/calc/popup.c:512 msgid "Manual_en.html" msgstr "" #: src/gui/calc/popup.c:533 msgid "You're using GTK+ >= 2.12 so bookmark support is currently unavailable." msgstr "" #: src/gui/calc/popup.c:553 msgid "" "There are several ways to get in touch if you encounter a problem with TiEmu " "or if you have questions, suggestions, bug reports, etc:\n" "- if you have general questions or problems, please consider the users' " "mailing list first (http://tiemu-users@list.sf.net).\n" "- if you want to discuss about TiEmu, you can use the TiEmu forum (http://" "sourceforge.net/forum/?group_id=23169).\n" "- for bug reports, use the 'Bug Tracking System' (http://sourceforge.net/" "tracker/?group_id=23169).\n" "\n" "Before e-mailing the TiEmu team, make sure you have read the manual and/or " "the FAQ...." msgstr "" #: src/gui/calc/popup.c:797 msgid "Unable to run ShellExecute extension." msgstr "" #: src/gui/calc/popup.c:847 msgid "Spawn error: do you have Firefox installed?" msgstr "" #: src/gui/calc/skinops.c:449 #, c-format msgid "loading skin: %s (%d x %d)" msgstr "" #: src/gui/debugger/dbg_bkpts.c:63 msgid "Symbol" msgstr "" #: src/gui/debugger/dbg_bkpts.c:63 src/gui/romversion.c:88 #: glade/dbg_data-2.str:22 msgid "Type" msgstr "" #: src/gui/debugger/dbg_bkpts.c:63 msgid "Status" msgstr "" #: src/gui/debugger/dbg_bkpts.c:63 glade/log_link-2.str:9 msgid "Start" msgstr "" #: src/gui/debugger/dbg_bkpts.c:63 msgid "End" msgstr "" #: src/gui/debugger/dbg_bkpts.c:63 glade/dbg_data-2.str:11 msgid "Mode" msgstr "" #: src/gui/debugger/dbg_bkpts.c:140 src/gui/debugger/dbg_bkpts.c:167 #: src/gui/debugger/dbg_bkpts.c:195 src/gui/debugger/dbg_bkpts.c:224 #: src/gui/debugger/dbg_bkpts.c:251 src/gui/debugger/dbg_bkpts.c:335 msgid "enabled" msgstr "" #: src/gui/debugger/dbg_bkpts.c:140 src/gui/debugger/dbg_bkpts.c:167 #: src/gui/debugger/dbg_bkpts.c:195 src/gui/debugger/dbg_bkpts.c:224 #: src/gui/debugger/dbg_bkpts.c:251 src/gui/debugger/dbg_bkpts.c:335 msgid "disabled" msgstr "" #: src/gui/debugger/dbg_bkpts.c:143 src/gui/debugger/dbg_bkpts.c:338 msgid "one-shot" msgstr "" #: src/gui/debugger/dbg_bkpts.c:426 msgid "dbg_bkpts-2.glade: GUI loading failed !\n" msgstr "" #: src/gui/debugger/dbg_code.c:75 src/gui/debugger/dbg_heap.c:55 #: src/gui/debugger/dbg_iop.c:299 src/gui/debugger/dbg_mem.c:185 #: src/gui/debugger/dbg_pclog.c:54 src/gui/debugger/dbg_stack.c:58 msgid "Address" msgstr "" #: src/gui/debugger/dbg_code.c:75 msgid "Opcode" msgstr "" #: src/gui/debugger/dbg_code.c:75 msgid "Operand" msgstr "" #: src/gui/debugger/dbg_code.c:1244 msgid "Choose font..." msgstr "" #: src/gui/debugger/dbg_entry.c:91 src/gui/debugger/dbg_iop.c:264 #: src/gui/debugger/dbg_vectors.c:53 msgid "Name" msgstr "" #: src/gui/debugger/dbg_heap.c:55 msgid "Id" msgstr "" #: src/gui/debugger/dbg_heap.c:55 src/gui/romversion.c:88 msgid "Size" msgstr "" #: src/gui/debugger/dbg_iop.c:272 src/gui/debugger/dbg_stack.c:58 msgid "Value" msgstr "" #: src/gui/debugger/dbg_iop.c:308 msgid "Mask" msgstr "" #: src/gui/debugger/dbg_vectors.c:53 msgid "Number" msgstr "" #: src/gui/about.c:97 #, c-format msgid "Framework version (cables=%s, files=%s, calcs=%s, conv=%s)" msgstr "" #: src/gui/device.c:59 src/gui/wizard.c:95 src/gui/wizard.c:180 #: src/gui/wizard.c:219 msgid "comm.c: GUI loading failed !\n" msgstr "" #: src/gui/filesel.c:389 msgid "Save file" msgstr "" #: src/gui/filesel.c:392 src/gui/filesel.c:701 glade/quicksend-2.str:9 msgid "Open file" msgstr "" #: src/gui/fs_misc.c:83 msgid "" "The state image you are attempting to load does not match the current " "running image. Press OK if you want TiEmu to automatically load the " "corresponding image or Cancel to abort." msgstr "" #: src/gui/fs_misc.c:156 msgid "" "You do not seem to have saved your settings. Configuration file saved (in " "tiemu.ini)." msgstr "" #: src/gui/fs_misc.c:159 msgid "" "You do not seem to have saved your settings. Configuration file saved (in ~/." "tiemu)." msgstr "" #: src/gui/fs_misc.c:173 msgid "Sending app(s)" msgstr "" #: src/gui/fs_misc.c:177 src/gui/fs_misc.c:185 msgid "Sending var(s)" msgstr "" #: src/gui/fs_misc.c:181 src/gui/fs_misc.c:189 msgid "Restoring" msgstr "" #: src/gui/fs_misc.c:212 src/gui/fs_misc.c:391 src/gui/quicksend.c:120 msgid "This file is not a valid TI file." msgstr "" #: src/gui/fs_misc.c:236 #, c-format msgid "" "The current link cable <%s> port <%s> does not allow direct file loading. Do " "you let me change link port settings to allow direct file loading?" msgstr "" #: src/gui/fs_misc.c:421 msgid "Does not seem to be an upgrade." msgstr "" #: src/gui/fs_misc.c:437 msgid "Cannot load the upgrade." msgstr "" #: src/gui/fs_misc.c:473 src/gui/fs_misc.c:483 msgid "HW type" msgstr "" #: src/gui/fs_misc.c:474 msgid "The FLASH upgrade can be imported as HW1 or HW2. Please choose..." msgstr "" #: src/gui/fs_misc.c:484 msgid "The FLASH upgrade can be imported as HW3 or HW4. Please choose..." msgstr "" #: src/gui/fs_misc.c:502 msgid "This is not a valid file" msgstr "" #: src/gui/main.c:153 msgid "Unable to initialize audio, sound will not play\n" msgstr "" #: src/gui/main.c:187 msgid "Initializing GTK+..." msgstr "" #: src/gui/main.c:191 msgid "Initializing KDE..." msgstr "" #: src/gui/main.c:192 glade/device-2.str:15 glade/popup-2.str:78 msgid "TiEmu" msgstr "" #: src/gui/main.c:192 msgid "TI calculator emulator" msgstr "" #: src/gui/main.c:198 msgid "Initializing D-Bus..." msgstr "" #: src/gui/main.c:204 msgid "Initializing OLE..." msgstr "" #: src/gui/main.c:212 msgid "Initializing TiLP framework..." msgstr "" #: src/gui/main.c:216 #, c-format msgid "libticonv library version <%s> mini required (<%s> found)." msgstr "" #: src/gui/main.c:218 msgid "libticonv: version mismatches." msgstr "" #: src/gui/main.c:224 #, c-format msgid "libtifiles library version <%s> mini required (<%s> found)." msgstr "" #: src/gui/main.c:226 msgid "libtifiles: version mismatches." msgstr "" #: src/gui/main.c:232 #, c-format msgid "libticables library version <%s> mini required (<%s> found)." msgstr "" #: src/gui/main.c:234 msgid "libticables: version mismatches." msgstr "" #: src/gui/main.c:240 #, c-format msgid "libticalcs library version <%s> mini required (<%s> found)." msgstr "" #: src/gui/main.c:242 msgid "libticalcs: version mismatches." msgstr "" #: src/gui/main.c:249 msgid "Searching for ROM dumps..." msgstr "" #: src/gui/main.c:291 msgid "Loading image..." msgstr "" #: src/gui/main.c:299 msgid "Initializing m68k emulation engine..." msgstr "" #: src/gui/main.c:331 msgid "Loading previously saved state..." msgstr "" #: src/gui/main.c:342 msgid "Pre-loading debugger..." msgstr "" #: src/gui/romversion.c:87 msgid "Filename" msgstr "" #: src/gui/romversion.c:87 msgid "Model" msgstr "" #: src/gui/romversion.c:87 msgid "Version" msgstr "" #: src/gui/romversion.c:88 msgid "Boot" msgstr "" #: src/gui/romversion.c:88 msgid "Hardware" msgstr "" #: src/gui/support.c:91 src/gui/support.c:115 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "" #: src/gui/wizard.c:110 msgid "Use PedRom" msgstr "" #: src/gui/wizard.c:112 msgid "Use FLASH OS" msgstr "" #: src/gui/wizard.c:114 msgid "Use ROM dump" msgstr "" #: src/gui/wizard.c:131 msgid "Importing TIBs. Please wait..." msgstr "" #: src/sound/audio.c:36 msgid "Unable to initialize sound" msgstr "" #: src/sound/audio.c:65 msgid "Sound Error" msgstr "" #: src/sound/audio.c:65 msgid "Not enough memory" msgstr "" #: src/sound/audio.c:75 msgid "Unable to open audio device" msgstr "" #: src/sound/stream.c:54 msgid "sound buffer full, dropping sample(s)" msgstr "" #: glade/calc-2.str:7 msgid "TiEmu 3" msgstr "" #: glade/calc-2.str:8 msgid "Use mouse or press a key." msgstr "" #: glade/dbg_bkpts-2.str:7 msgid "Breakpoints" msgstr "" #: glade/dbg_bkpts-2.str:8 msgid "Add breakpoint" msgstr "" #: glade/dbg_bkpts-2.str:9 msgid "Remove breakpoint(s)" msgstr "" #: glade/dbg_bkpts-2.str:10 msgid "Disable breakpoint" msgstr "" #: glade/dbg_bkpts-2.str:11 msgid "Enable breakpoint" msgstr "" #: glade/dbg_bkpts-2.str:12 msgid "Go to breakpoint location" msgstr "" #: glade/dbg_bkpts-2.str:13 msgid "Double-click a row to edit breakpoint values." msgstr "" #: glade/dbg_bkpts-2.str:14 msgid "Breakpoint context:" msgstr "" #: glade/dbg_bkpts-2.str:15 msgid "Bits" msgstr "" #: glade/dbg_bkpts-2.str:16 msgid "Data" msgstr "" #: glade/dbg_bkpts-2.str:17 msgid "Vectors" msgstr "" #: glade/dbg_bkpts-2.str:18 msgid "Prgm entry" msgstr "" #: glade/dbg_bits-2.str:7 msgid "Add Bit Breakpoint" msgstr "" #: glade/dbg_bits-2.str:8 glade/dbg_cause-2.str:8 msgid "Address:" msgstr "" #: glade/dbg_bits-2.str:9 glade/dbg_cause-2.str:10 glade/dbg_data-2.str:16 #: glade/dbg_data-2.str:17 glade/dbg_data-2.str:18 msgid "0x000000" msgstr "" #: glade/dbg_bits-2.str:10 msgid "Checks:" msgstr "" #: glade/dbg_bits-2.str:11 glade/dbg_bits-2.str:20 msgid "7" msgstr "" #: glade/dbg_bits-2.str:12 glade/dbg_bits-2.str:21 msgid "6" msgstr "" #: glade/dbg_bits-2.str:13 glade/dbg_bits-2.str:22 msgid "5" msgstr "" #: glade/dbg_bits-2.str:14 glade/dbg_bits-2.str:23 msgid "4" msgstr "" #: glade/dbg_bits-2.str:15 glade/dbg_bits-2.str:24 msgid "3" msgstr "" #: glade/dbg_bits-2.str:16 glade/dbg_bits-2.str:25 msgid "2" msgstr "" #: glade/dbg_bits-2.str:17 glade/dbg_bits-2.str:26 msgid "1" msgstr "" #: glade/dbg_bits-2.str:18 glade/dbg_bits-2.str:27 glade/dbg_code-2.str:48 #: glade/dbg_regs-2.str:13 glade/dbg_regs-2.str:15 glade/dbg_regs-2.str:16 #: glade/dbg_regs-2.str:19 glade/dbg_regs-2.str:20 glade/dbg_regs-2.str:21 msgid "0" msgstr "" #: glade/dbg_bits-2.str:19 msgid "States:" msgstr "" #: glade/dbg_cause-2.str:7 msgid "Breakpoint!" msgstr "" #: glade/dbg_cause-2.str:9 glade/dbg_cause-2.str:20 msgid "Type:" msgstr "" #: glade/dbg_cause-2.str:12 msgid "byte read" msgstr "" #: glade/dbg_cause-2.str:13 msgid "Mode:" msgstr "" #: glade/dbg_cause-2.str:14 msgid "A breakpoint has been encountered..." msgstr "" #: glade/dbg_cause-2.str:15 msgid "Target:" msgstr "" #: glade/dbg_cause-2.str:16 msgid "0x4c00" msgstr "" #: glade/dbg_cause-2.str:17 glade/dbg_cause-2.str:27 msgid "Id:" msgstr "" #: glade/dbg_cause-2.str:18 glade/dbg_cause-2.str:28 msgid "#0" msgstr "" #: glade/dbg_cause-2.str:19 msgid "Exception!" msgstr "" #: glade/dbg_cause-2.str:21 msgid "PC (pushed):" msgstr "" #: glade/dbg_cause-2.str:22 msgid "illegal instr" msgstr "" #: glade/dbg_cause-2.str:23 glade/dbg_mem-2.str:15 msgid "000000" msgstr "" #: glade/dbg_cause-2.str:24 msgid "0000" msgstr "" #: glade/dbg_cause-2.str:25 msgid "SR (pushed):" msgstr "" #: glade/dbg_cause-2.str:26 msgid "An exception has been encountered..." msgstr "" #: glade/dbg_code-2.str:7 msgid "Disassembly" msgstr "" #: glade/dbg_code-2.str:8 msgid "_Debug" msgstr "" #: glade/dbg_code-2.str:9 msgid "_Run" msgstr "" #: glade/dbg_code-2.str:10 msgid "Step into (single step)" msgstr "" #: glade/dbg_code-2.str:11 msgid "Step _in" msgstr "" #: glade/dbg_code-2.str:12 msgid "Step over (skip subroutine)" msgstr "" #: glade/dbg_code-2.str:13 msgid "Step _over" msgstr "" #: glade/dbg_code-2.str:14 msgid "Step out (return to caller)" msgstr "" #: glade/dbg_code-2.str:15 msgid "Step ou_t" msgstr "" #: glade/dbg_code-2.str:16 msgid "Run to _cursor" msgstr "" #: glade/dbg_code-2.str:17 msgid "_Break" msgstr "" #: glade/dbg_code-2.str:18 msgid "_Log" msgstr "" #: glade/dbg_code-2.str:19 msgid "_Linkport" msgstr "" #: glade/dbg_code-2.str:20 msgid "Windows" msgstr "" #: glade/dbg_code-2.str:21 msgid "_Registers" msgstr "" #: glade/dbg_code-2.str:22 msgid "_Breakpoints" msgstr "" #: glade/dbg_code-2.str:23 msgid "_Memory" msgstr "" #: glade/dbg_code-2.str:24 msgid "_PC trace" msgstr "" #: glade/dbg_code-2.str:25 msgid "_Stack frame" msgstr "" #: glade/dbg_code-2.str:26 msgid "_Heap (handles)" msgstr "" #: glade/dbg_code-2.str:27 msgid "_I/O ports" msgstr "" #: glade/dbg_code-2.str:28 msgid "Dock Mode" msgstr "" #: glade/dbg_code-2.str:29 msgid "_Group windows" msgstr "" #: glade/dbg_code-2.str:30 msgid "_Show all" msgstr "" #: glade/dbg_code-2.str:31 msgid "_Hide all" msgstr "" #: glade/dbg_code-2.str:32 msgid "M_inimize all" msgstr "" #: glade/dbg_code-2.str:33 msgid "M_aximize all" msgstr "" #: glade/dbg_code-2.str:34 msgid "_Restore all" msgstr "" #: glade/dbg_code-2.str:35 msgid "_Quit" msgstr "" #: glade/dbg_code-2.str:36 msgid "_Font" msgstr "" #: glade/dbg_code-2.str:37 msgid "_State" msgstr "" #: glade/dbg_code-2.str:38 msgid "S_ave" msgstr "" #: glade/dbg_code-2.str:39 msgid "_Revert" msgstr "" #: glade/dbg_code-2.str:40 msgid "Run (F5)" msgstr "" #: glade/dbg_code-2.str:41 msgid "Single step / Step into (F7)" msgstr "" #: glade/dbg_code-2.str:42 msgid "Step over (F8)" msgstr "" #: glade/dbg_code-2.str:43 msgid "Step out (F9)" msgstr "" #: glade/dbg_code-2.str:44 msgid "Run to cursor (F4)" msgstr "" #: glade/dbg_code-2.str:45 msgid "Break (F11)" msgstr "" #: glade/dbg_code-2.str:46 msgid "Toggle breakpoint (F2)" msgstr "" #: glade/dbg_code-2.str:47 msgid "Cycle count:" msgstr "" #: glade/dbg_code-2.str:49 msgid "00" msgstr "" #: glade/dbg_code-2.str:50 msgid "Reset" msgstr "" #: glade/dbg_code-2.str:51 msgid "Symbol:" msgstr "" #: glade/dbg_code-2.str:52 msgid "by name" msgstr "" #: glade/dbg_code-2.str:53 msgid "by addr" msgstr "" #: glade/dbg_code-2.str:54 msgid "by id" msgstr "" #: glade/dbg_code-2.str:55 glade/dbg_mem-2.str:19 msgid "Go to _address" msgstr "" #: glade/dbg_code-2.str:56 msgid "Go to _PC" msgstr "" #: glade/dbg_code-2.str:57 msgid "Set _breakpoint" msgstr "" #: glade/dbg_code-2.str:58 msgid "Set _one shot bkpt" msgstr "" #: glade/dbg_code-2.str:59 msgid "Set PC to _selection" msgstr "" #: glade/dbg_code-2.str:60 glade/dbg_heap-2.str:9 glade/dbg_mem-2.str:22 #: glade/dbg_regs-2.str:10 glade/dbg_stack-2.str:12 msgid "View _memory" msgstr "" #: glade/dbg_code-2.str:61 msgid "Change font" msgstr "" #: glade/dbg_code-2.str:62 glade/device-2.str:18 msgid "custom" msgstr "" #: glade/dbg_code-2.str:63 msgid "default" msgstr "" #: glade/dbg_code-2.str:64 msgid "Font:" msgstr "" #: glade/dbg_data-2.str:7 msgid "Add Data Breakpoint" msgstr "" #: glade/dbg_data-2.str:8 msgid "_Read" msgstr "" #: glade/dbg_data-2.str:9 msgid "_Write" msgstr "" #: glade/dbg_data-2.str:10 msgid "_Either" msgstr "" #: glade/dbg_data-2.str:12 msgid "_Single" msgstr "" #: glade/dbg_data-2.str:13 msgid "_Range" msgstr "" #: glade/dbg_data-2.str:14 msgid "to" msgstr "" #: glade/dbg_data-2.str:15 msgid "at" msgstr "" #: glade/dbg_data-2.str:19 msgid "Byte" msgstr "" #: glade/dbg_data-2.str:20 msgid "Word" msgstr "" #: glade/dbg_data-2.str:21 msgid "Long" msgstr "" #: glade/dbg_entry-2.str:2 msgid "Set program entry breakpoint" msgstr "" #: glade/dbg_heap-2.str:7 msgid "Heap" msgstr "" #: glade/dbg_heap-2.str:8 msgid "" "Double click rowl to open tab in the memory window at the handle address." msgstr "" #: glade/dbg_ioports-2.str:7 glade/dbg_regs-2.str:7 glade/dbg_regs-2.str:28 msgid "Show registers" msgstr "" #: glade/dbg_ioports-2.str:8 msgid "I/O ports" msgstr "" #: glade/dbg_ioports-2.str:9 glade/dbg_regs-2.str:9 msgid "Double-click value or item to edit." msgstr "" #: glade/dbg_ioports-2.str:10 msgid "_Hex" msgstr "" #: glade/dbg_ioports-2.str:11 msgid "_Dec" msgstr "" #: glade/dbg_mem-2.str:7 msgid "Memory" msgstr "" #: glade/dbg_mem-2.str:8 msgid "Add tab (F1)" msgstr "" #: glade/dbg_mem-2.str:9 msgid "Remove tab (F2)" msgstr "" #: glade/dbg_mem-2.str:10 msgid "Up (F3)" msgstr "" #: glade/dbg_mem-2.str:11 msgid "Down (F4)" msgstr "" #: glade/dbg_mem-2.str:12 msgid "Refresh tab (F5)" msgstr "" #: glade/dbg_mem-2.str:13 msgid "View memory map (F6)" msgstr "" #: glade/dbg_mem-2.str:14 msgid "Enter Address" msgstr "" #: glade/dbg_mem-2.str:16 msgid "HEX address" msgstr "" #: glade/dbg_mem-2.str:17 msgid "Find" msgstr "" #: glade/dbg_mem-2.str:18 msgid "Find _next" msgstr "" #: glade/dbg_mem-2.str:20 msgid "_Dis-assemble" msgstr "" #: glade/dbg_mem-2.str:21 msgid "Dis-assemble (indirect)" msgstr "" #: glade/dbg_mem-2.str:23 msgid "Search" msgstr "" #: glade/dbg_mem-2.str:24 msgid "Find _Next" msgstr "" #: glade/dbg_mem-2.str:25 msgid "Find:" msgstr "" #: glade/dbg_mem-2.str:26 msgid "" "Hexadecimal strings must have 2 chars per byte and can be with or without " "space: FE ED or FEED." msgstr "" #: glade/dbg_mem-2.str:27 msgid "_ASCII" msgstr "" #: glade/dbg_mem-2.str:28 msgid "_Case sensitive" msgstr "" #: glade/dbg_pclog-2.str:7 msgid "PC trace" msgstr "" #: glade/dbg_pclog-2.str:8 msgid "Double-click the row to disassemble." msgstr "" #: glade/dbg_regs-2.str:8 glade/dbg_regs-2.str:29 msgid "Registers" msgstr "" #: glade/dbg_regs-2.str:11 msgid "Status Register" msgstr "" #: glade/dbg_regs-2.str:12 glade/dbg_regs-2.str:72 msgid "T" msgstr "" #: glade/dbg_regs-2.str:14 glade/dbg_regs-2.str:73 msgid "S" msgstr "" #: glade/dbg_regs-2.str:17 msgid "I2" msgstr "" #: glade/dbg_regs-2.str:18 msgid "I1" msgstr "" #: glade/dbg_regs-2.str:22 glade/dbg_regs-2.str:74 msgid "X" msgstr "" #: glade/dbg_regs-2.str:23 glade/dbg_regs-2.str:68 msgid "N" msgstr "" #: glade/dbg_regs-2.str:24 glade/dbg_regs-2.str:69 msgid "Z" msgstr "" #: glade/dbg_regs-2.str:25 glade/dbg_regs-2.str:70 msgid "V" msgstr "" #: glade/dbg_regs-2.str:26 glade/dbg_regs-2.str:71 msgid "C" msgstr "" #: glade/dbg_regs-2.str:27 msgid "I0" msgstr "" #: glade/dbg_regs-2.str:30 msgid "D1=" msgstr "" #: glade/dbg_regs-2.str:31 msgid "D2=" msgstr "" #: glade/dbg_regs-2.str:32 msgid "D3=" msgstr "" #: glade/dbg_regs-2.str:33 msgid "D4=" msgstr "" #: glade/dbg_regs-2.str:34 msgid "D5=" msgstr "" #: glade/dbg_regs-2.str:35 msgid "D6=" msgstr "" #: glade/dbg_regs-2.str:36 msgid "D7=" msgstr "" #: glade/dbg_regs-2.str:37 msgid "A0=" msgstr "" #: glade/dbg_regs-2.str:38 msgid "A1=" msgstr "" #: glade/dbg_regs-2.str:39 msgid "A2=" msgstr "" #: glade/dbg_regs-2.str:40 msgid "A3=" msgstr "" #: glade/dbg_regs-2.str:41 msgid "A4=" msgstr "" #: glade/dbg_regs-2.str:42 msgid "A5=" msgstr "" #: glade/dbg_regs-2.str:43 msgid "A6=" msgstr "" #: glade/dbg_regs-2.str:44 msgid "A7=" msgstr "" #: glade/dbg_regs-2.str:45 glade/dbg_regs-2.str:46 glade/dbg_regs-2.str:47 #: glade/dbg_regs-2.str:48 glade/dbg_regs-2.str:49 glade/dbg_regs-2.str:50 #: glade/dbg_regs-2.str:51 glade/dbg_regs-2.str:52 glade/dbg_regs-2.str:53 #: glade/dbg_regs-2.str:54 glade/dbg_regs-2.str:55 glade/dbg_regs-2.str:56 #: glade/dbg_regs-2.str:57 glade/dbg_regs-2.str:58 glade/dbg_regs-2.str:59 #: glade/dbg_regs-2.str:76 msgid "12345678" msgstr "" #: glade/dbg_regs-2.str:60 msgid "USP=" msgstr "" #: glade/dbg_regs-2.str:61 msgid "SSP=" msgstr "" #: glade/dbg_regs-2.str:62 msgid "PC=" msgstr "" #: glade/dbg_regs-2.str:63 msgid "SR=" msgstr "" #: glade/dbg_regs-2.str:64 glade/dbg_regs-2.str:65 glade/dbg_regs-2.str:66 msgid "123456" msgstr "" #: glade/dbg_regs-2.str:67 msgid "1234" msgstr "" #: glade/dbg_regs-2.str:75 msgid "I=" msgstr "" #: glade/dbg_regs-2.str:77 msgid "D0=" msgstr "" #: glade/dbg_stack-2.str:7 msgid "Stack" msgstr "" #: glade/dbg_stack-2.str:8 msgid "A7 (stack) is:" msgstr "" #: glade/dbg_stack-2.str:9 msgid "USP" msgstr "" #: glade/dbg_stack-2.str:10 msgid "A7 (stack)" msgstr "" #: glade/dbg_stack-2.str:11 msgid "A6 (frame)" msgstr "" #: glade/dbg_vectors-2.str:7 msgid "Add Vector Breakpoint" msgstr "" #: glade/dboxes-2.str:7 msgid "Title" msgstr "" #: glade/dboxes-2.str:8 msgid "*" msgstr "" #: glade/dboxes-2.str:9 msgid "Name:" msgstr "" #: glade/device-2.str:3 msgid "Communication Settings" msgstr "" #: glade/device-2.str:4 msgid "_Auto-detect" msgstr "" #: glade/device-2.str:5 msgid "Cable:" msgstr "" #: glade/device-2.str:6 msgid "Port:" msgstr "" #: glade/device-2.str:7 msgid "Calc:" msgstr "" #: glade/device-2.str:8 msgid "Timeout:" msgstr "" #: glade/device-2.str:9 msgid "Delay:" msgstr "" #: glade/device-2.str:10 msgid "GrayLink" msgstr "" #: glade/device-2.str:11 msgid "BlackLink" msgstr "" #: glade/device-2.str:12 msgid "SilverLink" msgstr "" #: glade/device-2.str:13 msgid "ParallelLink" msgstr "" #: glade/device-2.str:14 msgid "VTi" msgstr "" #: glade/device-2.str:16 msgid "virtual" msgstr "" #: glade/device-2.str:17 glade/device-2.str:23 msgid "null" msgstr "" #: glade/device-2.str:19 msgid "#1" msgstr "" #: glade/device-2.str:20 msgid "#2" msgstr "" #: glade/device-2.str:21 msgid "#3" msgstr "" #: glade/device-2.str:22 msgid "#4" msgstr "" #: glade/device-2.str:24 msgid "TI73" msgstr "" #: glade/device-2.str:25 msgid "TI82" msgstr "" #: glade/device-2.str:26 msgid "TI83" msgstr "" #: glade/device-2.str:27 msgid "TI83+" msgstr "" #: glade/device-2.str:28 msgid "TI84+" msgstr "" #: glade/device-2.str:29 msgid "TI85" msgstr "" #: glade/device-2.str:30 msgid "TI86" msgstr "" #: glade/device-2.str:31 msgid "TI89" msgstr "" #: glade/device-2.str:32 msgid "TI89 Titanium" msgstr "" #: glade/device-2.str:33 glade/infos-2.str:18 msgid "TI92" msgstr "" #: glade/device-2.str:34 msgid "TI92+" msgstr "" #: glade/device-2.str:35 msgid "V200PLT" msgstr "" #: glade/device-2.str:36 msgid "Settings" msgstr "" #: glade/device-2.str:37 msgid "Have a problem ? Check out the log:" msgstr "" #: glade/infos-2.str:7 msgid "Infos..." msgstr "" #: glade/infos-2.str:8 msgid "Skin version:" msgstr "" #: glade/infos-2.str:9 msgid "Skin name:" msgstr "" #: glade/infos-2.str:10 msgid "Skin author:" msgstr "" #: glade/infos-2.str:11 msgid "Version:" msgstr "" #: glade/infos-2.str:12 msgid "RAM size:" msgstr "" #: glade/infos-2.str:13 msgid "ROM size:" msgstr "" #: glade/infos-2.str:14 msgid "ROM type:" msgstr "" #: glade/infos-2.str:15 msgid "VTi/TiEmu" msgstr "" #: glade/infos-2.str:16 msgid "Default TI-92" msgstr "" #: glade/infos-2.str:17 msgid "Julien Blache" msgstr "" #: glade/infos-2.str:19 msgid "1.11" msgstr "" #: glade/infos-2.str:20 msgid "128KB" msgstr "" #: glade/infos-2.str:21 msgid "2MB" msgstr "" #: glade/infos-2.str:22 msgid "external ROM" msgstr "" #: glade/infos-2.str:23 msgid "Calc type:" msgstr "" #: glade/infos-2.str:24 msgid "Hardware:" msgstr "" #: glade/infos-2.str:25 msgid "HW1" msgstr "" #: glade/log_link-2.str:7 msgid "Link Log" msgstr "" #: glade/log_link-2.str:8 msgid "Save" msgstr "" #: glade/log_link-2.str:10 msgid "Clear" msgstr "" #: glade/log_link-2.str:11 msgid "Close" msgstr "" #: glade/log_link-2.str:12 msgid "_Send" msgstr "" #: glade/log_link-2.str:13 msgid "_Receive" msgstr "" #: glade/log_link-2.str:14 msgid "Buffer size: " msgstr "" #: glade/log_link-2.str:15 msgid "KB" msgstr "" #: glade/pbars-2.str:7 msgid "Title 1" msgstr "" #: glade/pbars-2.str:8 msgid "Transfer status:" msgstr "" #: glade/pbars-2.str:9 msgid "Rate: 0.00 Kb/s" msgstr "" #: glade/pbars-2.str:10 msgid "Title 2" msgstr "" #: glade/pbars-2.str:11 msgid "Message." msgstr "" #: glade/pbars-2.str:12 msgid "Title 3" msgstr "" #: glade/pbars-2.str:13 glade/pbars-2.str:22 msgid "Total transfer:" msgstr "" #: glade/pbars-2.str:14 glade/pbars-2.str:17 glade/pbars-2.str:23 msgid "Current transfer:" msgstr "" #: glade/pbars-2.str:15 glade/pbars-2.str:20 glade/pbars-2.str:26 msgid "Rate: 0.0 Kbytes/s" msgstr "" #: glade/pbars-2.str:16 msgid "Title 4" msgstr "" #: glade/pbars-2.str:18 glade/pbars-2.str:24 msgid "1/1: " msgstr "" #: glade/pbars-2.str:19 glade/pbars-2.str:25 msgid "Text" msgstr "" #: glade/pbars-2.str:21 msgid "Title 5" msgstr "" #: glade/popup-2.str:7 msgid "Welcome to TiEmu 3" msgstr "" #: glade/popup-2.str:8 msgid "TiEmu Menu" msgstr "" #: glade/popup-2.str:9 msgid "" "Send the selected file to the emulator. This file can be of any type " "(single, group, backup, FLASH app or FLASH OS)." msgstr "" #: glade/popup-2.str:10 msgid "_Send file to TiEmu..." msgstr "" #: glade/popup-2.str:11 msgid "_Debug file with TiEmu..." msgstr "" #: glade/popup-2.str:12 msgid "_Link" msgstr "" #: glade/popup-2.str:13 msgid "Do the link cable setup." msgstr "" #: glade/popup-2.str:14 msgid "_Settings..." msgstr "" #: glade/popup-2.str:15 msgid "_Quick-send..." msgstr "" #: glade/popup-2.str:16 msgid "" "Listen for files sent from TiEmu. Uncheck it if you are running program " "which use the linkport for sound." msgstr "" #: glade/popup-2.str:17 msgid "_Listen for files" msgstr "" #: glade/popup-2.str:18 msgid "_Emulate sound" msgstr "" #: glade/popup-2.str:19 msgid "Configuration" msgstr "" #: glade/popup-2.str:20 msgid "Save the actual configuration into a text file." msgstr "" #: glade/popup-2.str:21 msgid "_Save config..." msgstr "" #: glade/popup-2.str:22 msgid "Load the configuration previously saved." msgstr "" #: glade/popup-2.str:23 msgid "_Load config..." msgstr "" #: glade/popup-2.str:24 msgid "Calculator state" msgstr "" #: glade/popup-2.str:25 msgid "Reload the previously saved state." msgstr "" #: glade/popup-2.str:26 msgid "_Revert to saved state" msgstr "" #: glade/popup-2.str:27 msgid "Load the calculator state from file." msgstr "" #: glade/popup-2.str:28 msgid "_Load state image..." msgstr "" #: glade/popup-2.str:29 msgid "Save the calculator state into a file (called state image)." msgstr "" #: glade/popup-2.str:30 msgid "_Save state image..." msgstr "" #: glade/popup-2.str:31 msgid "Do a 'save state image' and exits." msgstr "" #: glade/popup-2.str:32 msgid "_Exit and save state" msgstr "" #: glade/popup-2.str:33 msgid "Go into the debugger." msgstr "" #: glade/popup-2.str:34 msgid "_Enter debugger..." msgstr "" #: glade/popup-2.str:35 msgid "Reset the calculator." msgstr "" #: glade/popup-2.str:36 msgid "_Reset calc" msgstr "" #: glade/popup-2.str:37 msgid "Load a FLASH upgrade into the FLASH memory of the calculator." msgstr "" #: glade/popup-2.str:38 msgid "_Upgrade calc" msgstr "" #: glade/popup-2.str:39 msgid "Import and/or set an image to emulate." msgstr "" #: glade/popup-2.str:40 msgid "Set R_OM (image/upgrade)" msgstr "" #: glade/popup-2.str:41 msgid "Emulator options" msgstr "" #: glade/popup-2.str:42 msgid "" "Run the calculator at its default speed (default) or at the maximum the " "computer can do." msgstr "" #: glade/popup-2.str:43 msgid "_Restrict to actual speed" msgstr "" #: glade/popup-2.str:44 msgid "" "Enable/disable hardware protection. Please note you will have to restart the " "emulator or select an image for changes to take effect." msgstr "" #: glade/popup-2.str:45 msgid "H_W protection" msgstr "" #: glade/popup-2.str:46 msgid "_High LCD update" msgstr "" #: glade/popup-2.str:47 msgid "_Med LCD update" msgstr "" #: glade/popup-2.str:48 msgid "L_ow LCD update" msgstr "" #: glade/popup-2.str:49 msgid "_Normal view (x1)" msgstr "" #: glade/popup-2.str:50 msgid "_Large view (x2)" msgstr "" #: glade/popup-2.str:51 msgid "_Full screen" msgstr "" #: glade/popup-2.str:52 msgid "_Custom view" msgstr "" #: glade/popup-2.str:53 msgid "Skin for current calc" msgstr "" #: glade/popup-2.str:54 msgid "No skin (just LCD)." msgstr "" #: glade/popup-2.str:55 msgid "_None" msgstr "" #: glade/popup-2.str:56 msgid "Returns to default skin." msgstr "" #: glade/popup-2.str:57 msgid "_Default" msgstr "" #: glade/popup-2.str:58 msgid "Choose a skin to use." msgstr "" #: glade/popup-2.str:59 msgid "_Other..." msgstr "" #: glade/popup-2.str:60 msgid "Screenshot" msgstr "" #: glade/popup-2.str:61 msgid "Do a screenshot now!" msgstr "" #: glade/popup-2.str:62 msgid "_Now!" msgstr "" #: glade/popup-2.str:63 msgid "Set options for screenshot (image, type)." msgstr "" #: glade/popup-2.str:64 msgid "_Options" msgstr "" #: glade/popup-2.str:65 msgid "_Copy to clipboard" msgstr "" #: glade/popup-2.str:66 msgid "Key Press" msgstr "" #: glade/popup-2.str:67 msgid "Setup recording" msgstr "" #: glade/popup-2.str:68 msgid "Record" msgstr "" #: glade/popup-2.str:69 msgid "Setup playing" msgstr "" #: glade/popup-2.str:70 msgid "Play" msgstr "" #: glade/popup-2.str:71 msgid "Misc" msgstr "" #: glade/popup-2.str:72 msgid "Open the TiEmu user's manual in a browser." msgstr "" #: glade/popup-2.str:73 msgid "_User's Manual" msgstr "" #: glade/popup-2.str:74 msgid "Open the Linux manpage (applicable to Windows, too)." msgstr "" #: glade/popup-2.str:75 msgid "_Manpage" msgstr "" #: glade/popup-2.str:76 msgid "_Bookmarks" msgstr "" #: glade/popup-2.str:77 msgid "http://lpg.ticalc.org/prj_tiemu" msgstr "" #: glade/popup-2.str:79 msgid "http://tigcc.ticalc.org" msgstr "" #: glade/popup-2.str:80 msgid "TIGCC" msgstr "" #: glade/popup-2.str:81 msgid "http://www.tilp.info" msgstr "" #: glade/popup-2.str:82 msgid "TiLP" msgstr "" #: glade/popup-2.str:83 msgid "http://education.ti.com" msgstr "" #: glade/popup-2.str:84 msgid "TI Education" msgstr "" #: glade/popup-2.str:85 msgid "http://www.ticalc.org" msgstr "" #: glade/popup-2.str:86 msgid "ticalc.org" msgstr "" #: glade/popup-2.str:87 msgid "How to report a bug or a problem." msgstr "" #: glade/popup-2.str:88 msgid "Bu_g report" msgstr "" #: glade/popup-2.str:89 msgid "Display the log of all changes." msgstr "" #: glade/popup-2.str:90 msgid "_ChangeLog" msgstr "" #: glade/popup-2.str:91 msgid "About TiEmu..." msgstr "" #: glade/popup-2.str:92 msgid "_About..." msgstr "" #: glade/popup-2.str:93 msgid "_Infos..." msgstr "" #: glade/popup-2.str:94 msgid "Just exits." msgstr "" #: glade/popup-2.str:95 msgid "E_xit without saving state" msgstr "" #: glade/quicksend-2.str:7 msgid "Quick send" msgstr "" #: glade/quicksend-2.str:8 msgid "_enable" msgstr "" #: glade/romversion-2.str:7 msgid "Set ROM version" msgstr "" #: glade/scroptions-2.str:7 msgid "Screen Options" msgstr "" #: glade/scroptions-2.str:8 msgid "_JPEG" msgstr "" #: glade/scroptions-2.str:9 msgid "_PNG" msgstr "" #: glade/scroptions-2.str:10 msgid "_ICO" msgstr "" #: glade/scroptions-2.str:11 msgid "_EPS" msgstr "" #: glade/scroptions-2.str:12 msgid "PD_F" msgstr "" #: glade/scroptions-2.str:13 msgid "_BMP" msgstr "" #: glade/scroptions-2.str:14 msgid "Image format:" msgstr "" #: glade/scroptions-2.str:15 msgid "Skips: " msgstr "" #: glade/scroptions-2.str:16 msgid "Number of frames to capture" msgstr "" #: glade/scroptions-2.str:17 msgid "" "Number of frames to skip between 2 captures. Beware: if you want to capture " "image every 4 frames, you need to set value to 3." msgstr "" #: glade/scroptions-2.str:18 msgid "Shots: " msgstr "" #: glade/scroptions-2.str:19 msgid "Burst capture:" msgstr "" #: glade/scroptions-2.str:20 msgid "Select folder" msgstr "" #: glade/scroptions-2.str:21 msgid "screenshot" msgstr "" #: glade/scroptions-2.str:22 msgid "-000.jpg" msgstr "" #: glade/scroptions-2.str:23 msgid "Folder & Filename:" msgstr "" #: glade/scroptions-2.str:24 msgid "Black&_White" msgstr "" #: glade/scroptions-2.str:25 msgid "Colo_r" msgstr "" #: glade/scroptions-2.str:26 msgid "_LCD only" msgstr "" #: glade/scroptions-2.str:27 msgid "_Calculator" msgstr "" #: glade/scroptions-2.str:28 msgid "Image type:" msgstr "" #: glade/wizard-2.str:7 glade/wizard-2.str:17 glade/wizard-2.str:25 #: glade/wizard-2.str:27 msgid "TiEmu wizard" msgstr "" #: glade/wizard-2.str:8 msgid "Welcome to TiEmu 3, the Linux/Win32 TI emulator." msgstr "" #: glade/wizard-2.str:9 msgid "" "I want to use PedRom (GPL'ed replacement OS) \n" "shipped with TiEmu." msgstr "" #: glade/wizard-2.str:11 msgid "" "You have downloaded a FLASH upgrade on the TI\n" "website." msgstr "" #: glade/wizard-2.str:13 msgid "You already have a ROM dump." msgstr "" #: glade/wizard-2.str:14 msgid "" "You want to use TiLP or another dumping program \n" "to get a ROM dump of your calculator ROM." msgstr "" #: glade/wizard-2.str:16 msgid "" "Remind you that you can not distribute your ROM dump(s). They are " "copyrighted by Texas Instruments." msgstr "" #: glade/wizard-2.str:18 msgid "" "TiEmu is now set up and ready for use. Some tips on how to use the emulator:" msgstr "" #: glade/wizard-2.str:19 msgid "" "* You have access to a popup menu by right-clicking in the emulator's window." msgstr "" #: glade/wizard-2.str:20 msgid "* To use keys, use mouse or keyboard" msgstr "" #: glade/wizard-2.str:21 msgid "" "* To change to a different calculator or ROM version, use an item of the ROM " "menu." msgstr "" #: glade/wizard-2.str:22 msgid "* You can save the emulator state and config." msgstr "" #: glade/wizard-2.str:23 msgid "" "* If your calculator screen is blank, use 'Ctrl' with '+/-' for adjusting " "contrast." msgstr "" #: glade/wizard-2.str:24 msgid "Click the 'Finish' button to start TiEmu." msgstr "" #: glade/wizard-2.str:26 msgid "" "If you want to get a ROM dump with TiLP, you will have to download it from: " "Be sure to read the user's manual!" msgstr "" #: glade/wizard-2.str:28 msgid "" "The FLASH upgrade you have selected is being to be converted into a TiEmu " "image. Please wait..." msgstr "" #: glade/wizard-2.str:29 msgid "Note also that the converted image will not have a boot block." msgstr "" tiemu-3.03-nogdb+dfsg/sdk/000077500000000000000000000000001220314353500153475ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/sdk/dcop/000077500000000000000000000000001220314353500162745ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/sdk/dcop/build.sh000077500000000000000000000003171220314353500177330ustar00rootroot00000000000000#!/bin/sh g++ -Os -s -fno-exceptions -I$QTDIR/include -I/usr/include/kde dcoptest.cpp tiemu_stub.cpp -L$QTDIR/lib -lqt-mt -L`kde-config --prefix`/lib`kde-config --libsuffix`/kde3 -lkdecore -lkio -o dcoptest tiemu-3.03-nogdb+dfsg/sdk/dcop/dcoptest.cpp000077500000000000000000000052121220314353500206300ustar00rootroot00000000000000/* TiEmu DCOP test client Copyright (C) 2003-2006 Kevin Kofler 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 */ #include "tiemu.h" #include #include #include #include #include #include #include using namespace std; int main(int argc, char **argv) { KCmdLineArgs::init(argc,argv,"dcoptest","dcoptest","",""); KApplication app; DCOPClient &dcopclient=*(app.dcopClient()); TiEmuDCOP_stub *tiemuDCOP; if (!dcopclient.attach()) {puts("DCOP error (#1).");return 1;} QCStringList applist=dcopclient.registeredApplications(); QCString appname; QCStringList::iterator it; for (it = applist.begin(); it != applist.end(); ++it) { if ((*it).contains(QRegExp("^tiemu-"))) { appname = (*it); break; } } if (appname.isNull()) { // TiEmu not running KRun::runCommand("tiemu"); do { applist=dcopclient.registeredApplications(); for (it = applist.begin(); it != applist.end(); ++it) { if ((*it).contains(QRegExp("^tiemu-"))) { appname = (*it); break; } } } while (appname.isNull()); } tiemuDCOP = new TiEmuDCOP_stub(appname,"TiEmuDCOP"); bool ready; do { ready=tiemuDCOP->ready_for_transfers(); if (!tiemuDCOP->ok()) {delete tiemuDCOP;dcopclient.detach();puts("DCOP error (#2).");return 2;} } while (!ready); #if 0 // This shouldn't be needed with the new ready_for_transfers(). if (!tiemuDCOP->turn_calc_on() || !tiemuDCOP->ok()) {delete tiemuDCOP;dcopclient.detach();puts("DCOP error (#3).");return 3;} sleep(3); // give the emulated calculator time to react #endif if (!tiemuDCOP->execute_command(QString("2+3")) || !tiemuDCOP->ok()) {delete tiemuDCOP;dcopclient.detach();puts("DCOP error (#4).");return 4;} delete tiemuDCOP; if (!dcopclient.detach()) {puts("DCOP error (#5).");return 5;} return 0; } tiemu-3.03-nogdb+dfsg/sdk/dcop/readme.txt000066400000000000000000000016201220314353500202710ustar00rootroot00000000000000This directory contains the stub object allowing you to easily make calls to TiEmu through the DCOP IPC interface. The files tiemu_stub.* have been generated from src/kde/dcop.h using dcopidl and dcopidl2cpp. In order to use TiEmu through DCOP: * compile and link tiemu_stub.cpp with your project * include "tiemu.h" into your C++ files which will be using TiEmu * create a TiEmuDCOP_stub object. The app parameter should be "tiemu_PID", where PID is the PID of a running TiEmu process (you can use DCOPClient::registeredApplications() to find it). The id parameter should be "TiEmuDCOP". * You can now call any function in the TiEmu DCOP interface through your TiEmuDCOP_stub object. For your convenience, sample code (dcoptest.cpp) is provided under the GPL. IMPORTANT: This is for *nix only. For Win32, please look at the OLE Automation interface, as defined in the oleautsdk directory. tiemu-3.03-nogdb+dfsg/sdk/dcop/tiemu.h000066400000000000000000000003471220314353500175740ustar00rootroot00000000000000#ifndef TIEMU_H__ #define TIEMU_H__ #include "tiemu_stub.h" typedef enum { TIEMU_CALC_TI92 = 1, TIEMU_CALC_TI89 = 2, TIEMU_CALC_TI92p = 4, TIEMU_CALC_V200 = 8, TIEMU_CALC_TI89t = 16 } TiEmuCalcModels; #endif tiemu-3.03-nogdb+dfsg/sdk/dcop/tiemu_stub.cpp000066400000000000000000000164571220314353500211750ustar00rootroot00000000000000/**************************************************************************** ** ** DCOP Stub Implementation created by dcopidl2cpp from tiemu.kidl ** ** WARNING! All changes made in this file will be lost! ** *****************************************************************************/ #include "tiemu_stub.h" #include #include TiEmuDCOP_stub::TiEmuDCOP_stub( const QCString& app, const QCString& obj ) : DCOPStub( app, obj ) { } TiEmuDCOP_stub::TiEmuDCOP_stub( DCOPClient* client, const QCString& app, const QCString& obj ) : DCOPStub( client, app, obj ) { } TiEmuDCOP_stub::TiEmuDCOP_stub( const DCOPRef& ref ) : DCOPStub( ref ) { } bool TiEmuDCOP_stub::image_loaded() { bool result = false; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; if ( dcopClient()->call( app(), obj(), "image_loaded()", data, replyType, replyData ) ) { if ( replyType == "bool" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } int TiEmuDCOP_stub::emulated_calc_type() { int result = 0; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; if ( dcopClient()->call( app(), obj(), "emulated_calc_type()", data, replyType, replyData ) ) { if ( replyType == "int" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } int TiEmuDCOP_stub::emulated_hw_version() { int result = 0; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; if ( dcopClient()->call( app(), obj(), "emulated_hw_version()", data, replyType, replyData ) ) { if ( replyType == "int" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } QString TiEmuDCOP_stub::emulated_os_version() { QString result; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; if ( dcopClient()->call( app(), obj(), "emulated_os_version()", data, replyType, replyData ) ) { if ( replyType == "QString" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } bool TiEmuDCOP_stub::ready_for_transfers() { bool result = false; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; if ( dcopClient()->call( app(), obj(), "ready_for_transfers()", data, replyType, replyData ) ) { if ( replyType == "bool" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } bool TiEmuDCOP_stub::send_file( QString arg0 ) { bool result = false; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; QDataStream arg( data, IO_WriteOnly ); arg << arg0; if ( dcopClient()->call( app(), obj(), "send_file(QString)", data, replyType, replyData ) ) { if ( replyType == "bool" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } bool TiEmuDCOP_stub::send_files( QStringList arg0 ) { bool result = false; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; QDataStream arg( data, IO_WriteOnly ); arg << arg0; if ( dcopClient()->call( app(), obj(), "send_files(QStringList)", data, replyType, replyData ) ) { if ( replyType == "bool" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } bool TiEmuDCOP_stub::debug_file( QString arg0 ) { bool result = false; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; QDataStream arg( data, IO_WriteOnly ); arg << arg0; if ( dcopClient()->call( app(), obj(), "debug_file(QString)", data, replyType, replyData ) ) { if ( replyType == "bool" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } bool TiEmuDCOP_stub::reset_calc( bool arg0 ) { bool result = false; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; QDataStream arg( data, IO_WriteOnly ); arg << arg0; if ( dcopClient()->call( app(), obj(), "reset_calc(bool)", data, replyType, replyData ) ) { if ( replyType == "bool" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } bool TiEmuDCOP_stub::execute_command( QString arg0 ) { bool result = false; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; QDataStream arg( data, IO_WriteOnly ); arg << arg0; if ( dcopClient()->call( app(), obj(), "execute_command(QString)", data, replyType, replyData ) ) { if ( replyType == "bool" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } bool TiEmuDCOP_stub::turn_calc_on() { bool result = false; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; if ( dcopClient()->call( app(), obj(), "turn_calc_on()", data, replyType, replyData ) ) { if ( replyType == "bool" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } bool TiEmuDCOP_stub::enter_debugger() { bool result = false; if ( !dcopClient() ) { setStatus( CallFailed ); return result; } QByteArray data, replyData; QCString replyType; if ( dcopClient()->call( app(), obj(), "enter_debugger()", data, replyType, replyData ) ) { if ( replyType == "bool" ) { QDataStream _reply_stream( replyData, IO_ReadOnly ); _reply_stream >> result; setStatus( CallSucceeded ); } else { callFailed(); } } else { callFailed(); } return result; } tiemu-3.03-nogdb+dfsg/sdk/dcop/tiemu_stub.h000066400000000000000000000023171220314353500206300ustar00rootroot00000000000000/**************************************************************************** ** ** DCOP Stub Definition created by dcopidl2cpp from tiemu.kidl ** ** WARNING! All changes made in this file will be lost! ** *****************************************************************************/ #ifndef __TIEMU_STUB__ #define __TIEMU_STUB__ #include #include #include #include class TiEmuDCOP_stub : virtual public DCOPStub { public: TiEmuDCOP_stub( const QCString& app, const QCString& id ); TiEmuDCOP_stub( DCOPClient* client, const QCString& app, const QCString& id ); explicit TiEmuDCOP_stub( const DCOPRef& ref ); virtual bool image_loaded(); virtual int emulated_calc_type(); virtual int emulated_hw_version(); virtual QString emulated_os_version(); virtual bool ready_for_transfers(); virtual bool send_file( QString ); virtual bool send_files( QStringList ); virtual bool debug_file( QString ); virtual bool reset_calc( bool ); virtual bool execute_command( QString command ); virtual bool turn_calc_on(); virtual bool enter_debugger(); protected: TiEmuDCOP_stub() : DCOPStub( never_use ) {}; }; #endif tiemu-3.03-nogdb+dfsg/sdk/oleaut/000077500000000000000000000000001220314353500166405ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/sdk/oleaut/build.sh000077500000000000000000000001601220314353500202730ustar00rootroot00000000000000#!/bin/sh i386-mingw32-gcc -Os -s -fno-exceptions oletest.c tiemuole.c -lole32 -loleaut32 -luuid -o oletest.exe tiemu-3.03-nogdb+dfsg/sdk/oleaut/oletest.c000077500000000000000000000067671220314353500205060ustar00rootroot00000000000000/* TiEmu OLE test client Copyright (C) 2003-2006 Kevin Kofler 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 */ #include #include #include "tiemuole.h" int main(void) { IUnknown *iunk; ITiEmuOLE *tiemuOLE; VARIANT_BOOL ready; BSTR command; fprintf(stdout, "Initializing OLE...\n"); if (OleInitialize(0) != S_OK) {puts("OLE error. (#1)");return 1;} fprintf(stdout, "Getting object..."); if (GetActiveObject(&CLSID_TiEmuOLE,NULL,&iunk) != S_OK || !iunk) { // TiEmu not running // Figure out the path of TiEmu and run it char buffer[2049]; HKEY hKey; DWORD type, size=2048; if (RegOpenKeyEx(HKEY_CLASSES_ROOT,"CLSID\\{B2A17B13-9D6F-4DD4-A2A9-6FE06ADC1D33}\\LocalServer32",0, KEY_QUERY_VALUE,&hKey)) {OleUninitialize();puts("OLE error (#2).");return 2;} if (RegQueryValueEx(hKey,NULL,NULL,&type,buffer,&size) || type != REG_SZ) {RegCloseKey(hKey);OleUninitialize();puts("OLE error (#3).");return 3;} buffer[2048]=0; if (RegCloseKey(hKey)) {OleUninitialize();puts("OLE error (#4).");return 4;} if ((int)ShellExecute(NULL,NULL,buffer,NULL,NULL,SW_SHOW)<=32) {OleUninitialize();puts("OLE error (#5).");return 5;} while (GetActiveObject(&CLSID_TiEmuOLE,NULL,&iunk) != S_OK || !iunk); // Wait for the object } fprintf(stdout, "Done !\n"); fprintf(stdout, "Querying interface...\n"); if (iunk->lpVtbl->QueryInterface(iunk,&IID_ITiEmuOLE,(void**)&tiemuOLE) != S_OK || !tiemuOLE) {OleUninitialize();puts("OLE error (#6).");return 6;} fprintf(stdout, "Waiting for ready... "); do { if (tiemuOLE->lpVtbl->ready_for_transfers(tiemuOLE,&ready) != S_OK) {tiemuOLE->lpVtbl->Release(tiemuOLE);OleUninitialize();puts("OLE error (#7).");return 7;} } while (!ready); Sleep(10000); // give the emulated calculator time to react fprintf(stdout, "Done !\n"); fprintf(stdout, "Turning calc on... "); if (tiemuOLE->lpVtbl->turn_calc_on(tiemuOLE,&ready) != S_OK || !ready) {tiemuOLE->lpVtbl->Release(tiemuOLE);OleUninitialize();puts("OLE error (#8).");return 8;} Sleep(3000); // give the emulated calculator time to react fprintf(stdout, "Done !\n"); fprintf(stdout, "Sending command... "); command=SysAllocString(L"2+3"); if (!command) {tiemuOLE->lpVtbl->Release(tiemuOLE);OleUninitialize();puts("OLE error (#9).");return 9;} if (tiemuOLE->lpVtbl->execute_command(tiemuOLE,command,&ready) != S_OK || !ready) {SysFreeString(command);tiemuOLE->lpVtbl->Release(tiemuOLE); OleUninitialize();puts("OLE error (#10).");return 10;} SysFreeString(command); fprintf(stdout, "Done !\n"); fprintf(stdout, "Releasing..."); tiemuOLE->lpVtbl->Release(tiemuOLE); OleUninitialize(); fprintf(stdout, "Done !\n"); return 0; } tiemu-3.03-nogdb+dfsg/sdk/oleaut/oletest.dsp000066400000000000000000000106311220314353500210300ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="oletest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=oletest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "oletest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "oletest.mak" CFG="oletest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "oletest - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "oletest - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "oletest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x40c /d "NDEBUG" # ADD RSC /l 0x40c /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "oletest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x40c /d "_DEBUG" # ADD RSC /l 0x40c /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "oletest - Win32 Release" # Name "oletest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\oletest.c # End Source File # Begin Source File SOURCE=.\tiemuole.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\tiemuole.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # Begin Source File SOURCE=.\readme.txt # End Source File # End Target # End Project tiemu-3.03-nogdb+dfsg/sdk/oleaut/oletest.dsw000066400000000000000000000010311220314353500210310ustar00rootroot00000000000000Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "oletest"=.\oletest.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### tiemu-3.03-nogdb+dfsg/sdk/oleaut/readme.txt000066400000000000000000000023071220314353500206400ustar00rootroot00000000000000This directory contains the header file and CLSID declarations allowing you to easily make calls to TiEmu through the OLE Automation IPC interface. The files tiemuole.c and tiemuole.h are copies of src/com_ole/oleaut.h and src/com_ole/oleaut_i.c, respectively, which have been generated from src/com_ole/oleaut.idl using widl or midl. In order to use TiEmu through OLE Automation: * compile and link tiemuole.c with your project * include "tiemuole.h" into your C or C++ files which will be using TiEmu * obtain a "TiEmu.TiEmuOLE" COM object through GetActiveObject. If this fails, you have to run TiEmu manually (e.g. using ShellExecute). WARNING: TiEmu currently does NOT provide a class factory. Therefore, you can't create objects automatically. You have to run TiEmu if it isn't running yet, and then use GetActiveObject. The interface pointer should be an ITiEmuOLE *. * You can now call any function in the TiEmu OLE Automation interface through your ITiEmuOLE * interface pointer. For your convenience, sample code (oletest.c) is provided under the GPL. IMPORTANT: This is for Win32 only. For *nix, please look at the DCOP interface, as defined in the dcopsdk directory. tiemu-3.03-nogdb+dfsg/sdk/oleaut/test_vba.doc000066400000000000000000001510001220314353500211330ustar00rootroot00000000000000ÐÏࡱá>þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥ÁI ¿Âbjbj²³²³ ãÐÙÐÙ&›ÿÿÿÿÿÿ]ºººº¾¾¾îîîîî ú îÒ öÚUUU— ™ ™ ™ ™ ™ ™ $È ô¼Ô½ ¾UÙ|UUU½ ¹ººÚÿ¹¹¹UdººL¾Ú— Ò຺ººU— ¹Þ¹— tJ¾— ^| 0{Þ81Æîî¹— COM test sheet for TiEMu OLE   CONTROLE Forms.CommandButton.1 \s   CONTROLE Forms.TextBox.1 \s   CONTROLE Forms.CommandButton.1 \s   CONTROLE Forms.TextBox.1 \s  !%&'JKMPQnopqtu˜™š›ž»¼½¾ÂúóîäîîÚÕîîËÆîî¼·î j÷UjoœG UVmH jôUjnœG UVmH jUjmœG UVmHjkœG UVmH jU jUmH 5>*CJ, !&NOPrstœ¿ÀÁÂüüüúúúøøøøøøøøøøøú$ !#$%&JKLNOPnoprstu˜™š›œž»¼½¾¿ÀÁýýýýýûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûû$°‚. °ÆA!°€"°€#‰$‰%°`!ðFJz «-Í9wn4§I¯` àó §þxœm‘½JA…ÏÙ$›ÕR1H²ÙTVJð ûTVâ_áVÁ¨ìkØúŠ>„àhk'*– ã¹cvœ ;ÜÙûs¾;ÃA°©Mt¡_B³’¢ÁÿœÑŒzó¦À,½-î_¬§úUòìƒ^s€7`ˆý(#ŒúŒjòýõ)éúžÄ ¹G_ysyHérjT“»>[“ι@ÚH×ó¤Ì;4È—ç‡@&‘®Káú[YÆ6geÿ¡zb´§zkRW¨«oði>œÎƱ³9>›•“bTVx̲áâõ]•Ón¯î+`8½CÃwjûhëYŠ%¾lBKy§¶Ê“Óbâw)¹"ÎYÔ7ôbè5×ðŽ qe„QŸQM~¼=R"]ß“˜#èK o¯.i"]NjcrßgkÒ9Hézž”9rD3|}y déºÔ®¿•ö8+ûï Õ£=ÕÛ”ºjD]}ƒ/óéüpñ;Žm˜ñtrVNŠÝ²ÂS– –ovwýPƒÙ¾SÛŸ¸DÛÊR¬2—ðuSÞiÃòxzZ¦¨—rëâœõýˆ <ÇDd àèèð<² ð C ðA?¿ ÿðÀ2ðrJz «-Í9wn4§I¯ÿNDâ`!ðFJz «-Í9wn4§I¯` àó §þxœm‘½JA…ÏÙ$›ÕR1H²ÙTVJð ûTVâ_áVÁ¨ìkØúŠ>„àhk'*– ã¹cvœ ;ÜÙûs¾;ÃA°©Mt¡_B³’¢ÁÿœÑŒzó¦À,½-î_¬§úUòìƒ^s€7`ˆý(#ŒúŒjòýõ)éúžÄ ¹G_ysyHérjT“»>[“ι@ÚH×ó¤Ì;4È—ç‡@&‘®Káú[YÆ6geÿ¡zb´§zkRW¨«oði>œÎƱ³9>›•“bTVx̲áâõ]•Ón¯î+`8½CÃwjûhëYŠ%¾lBKy§¶Ê“Óbâw)¹"ÎYÔ7ôbFâ`!ð6“àã„ãÓX÷‚§yâ¶sø|þxœm=N1…ߨ $›t’"¨¨²ZÁÒs RPEDB{ Zn*Ôé¸-€ˆ$óf’µ [cÍÏûè5×ðŽ qe„QŸQM~¼=R"]ß“˜#èK o¯.i"]NjcrßgkÒ9Hézž”9rD3|}y déºÔ®¿•ö8+ûï Õ£=ÕÛ”ºjD]}ƒ/óéüpñ;Žm˜ñtrVNŠÝ²ÂS– –ovwýPƒÙ¾SÛŸ¸DÛÊR¬2—ðuSÞiÃòxzZ¦¨—rëâœõýˆ <ÇžDdª hèèð<² ð C ðA?¿ ÿðÀ2ð¥•/´6W×Ùd«Ð”3¼ÿê;â`!ð⥕/´6W×Ùd«Ð”3¼r¶sø|°þxœm;Â0Dg×üC Iœ‰qn@AE×á@df­Ør$dÙû›çµW0Ü@,2BŸ¶P˘7Õ w8zK y~YñÞ·úÀîÁb°Ââ–e„QÉ(’—ó)‘’éÊ@¢C6ô%‘Ÿ×3‘šéæÔ˜6'ëäñ°O¤Ët³@J‡¼rëß ˜'j?·ií&á¹ÔÚjØÏê[‰ŒŠ´=×â½ Ú„Q%ûþÿÿÿ þÿÿÿýÿÿÿQ "!$#IL&@()*+,-./0123456789:;<=>?%ABCDEFGHþÿÿÿJKO^NþÿÿÿPRþÿÿÿS\UVWXYZ[M]_þÿÿÿ`abcdefgþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ ÀFÀ^½ö.Æð¢ç81ÆÀ5Data ÿÿÿÿÿÿÿÿÿÿÿÿ WordDocumentÿÿÿÿÿÿÿÿãObjectPoolÿÿÿÿÿÿÿÿ  0›81Æð¢ç81Æ_1201410667ÿÿÿÿÿÿÿÿ@2×iÎͧwÝþÿÿÿ@ABCDEFþÿÿÿHIJKLMNOPQRSTUVWXþÿÿÿZ[\]þÿÿÿ_`abcdefghþÿÿÿjklmnopqrstuvwxyz{|}~€ì O     `üqod- !ð _ !ð_üñïâ- !ð !ð^ü¬¨™- !ð^ !ð]üÿÿÿ- !ð !ð\üìéØ- !ð\- !ðZ   `IìéØ.ûóÿ@Courier NewÙ 0«Çw«ÇwÀ©Êw0- 2 Test !'ÿÿþÿ ÿÿÿÿ@2×iÎͧwÝ _PID_GUIDäAN{213D8A36-1698-4B76-B5FC-9EA14700EEE4}rU€€ (y VBAÿÿÿÿÿÿÿÿ#PHµ81Æ0FÒ81ÆThisDocumentÿÿÿÿ$ÿÿÿÿ'ØF__SRP_2'ÿÿÿÿÿÿÿÿG^__SRP_3&!ÿÿÿÿY&€P>*X€ ÿÿÿÿ€ ø € .P€ ÿÿÿÿ€ Ø ¸ È0€ ¨€ ÿÿÿÿ€ à  Ø€ À€ ÿÿÿÿ€   8€ ÿÿÿÿ€  Ð € ÿÿÿÿ€ ˜€ ÿÿÿÿ€ ÿÿÿÿ" À€ ÿÿÿÿ€ ÿÿÿÿÈÿÿÿÿ¨ÿÿÿÿxølÿÿØ, Define COM object interface and load object ÿÿZê€ZêÿÿÿÿØDim cable As New CablesfØ Init libraryF &B@.NorØ% Initialize a BlackLink cable on COM1otZêÿÿÿÿ 4 6 &%2'0Ø,ticable.OptionsSetDelay(handle, IDFLT_DELAY)Ø0ticable.OptionsSetTimeout(handle, IDFLT_TIMEOUT)Ø Do communication 0 &B@8 0 &B@:Ø Release handle 0 &B@<Ø Release library &B@.ÿÿÿÿHlÿÿhØ% Initialize a BlackLink cable on COM1yD#eZêÿÿÿÿ ¨ 6 &%2'0$ Z¤•8 0 &B@:Ø Release han¶ÿÿÿÿÿÿÿÿ\ÿÿÍeuhÏL“­•%zԻͺk߃ä̧@™šPŸY‚‘úZ%øÿm0¿JªA›*(‚=ÿÿÿÿÿÿÿÿÿÿÿÿxÄZ1°ÿÿÿÿ³;©×ÿÿãˆ,CommandButton1, 0, 0, MSForms, CommandButton TextBox1, 2, 2, MSForms, TextBox,CommandButton3, 4, 4, MSForms, CommandButton TextBox3, 5, 5, MSForms, TextBoxZ%øÿm0¿JªA›*(‚=ÍeuhÏL“­•%zÔ»Íÿÿv1¼¼&Dÿÿÿÿ4à <8D¨ L˜Tÿÿÿÿßÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ S"ÿÿÿÿSÿÿÿÿS"ÿÿÿÿcÿÿÿÿcÿÿÿÿ>"ÿÿÿÿ< ÿÿ<0ÿÿ<ÿÿ<ÿÿÿÿÿÿÿÿÿÿ<4ÿÿ<8ÿÿ<<ÿÿ<ÿÿÿÿÿÿ(1Normal.ThisDocumentÙ…ñC*\R8003*#5d*\R8003*#5f"*\Rffff*443f185df*\R8003*#44*\R0*#11ß °(-þÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿso$ $*€˜@0@@ÿÿÿÿÿÿÿÿy¸ÿÿÿÿÿÿÿÿÿÿÿÿ˜ÿÿÿÿø8¨ à $$*€¨ P¨P@ÿÿÿÿÿÿÿÿIDƒþÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ$¸`ÿÿÿÿÿÿÿÿ,$ÿkÿÿÿÿe´!!œiƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Èÿÿÿÿÿÿÿÿÿÿÿÿø8h˜$$$$ÿÿÿÿ¼Hÿÿÿÿÿÿÿÿÿ8ƒþÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿ-$ƒþÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$iƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ˜ƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿÀÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿX$‚ ÿÿÿÿþÿÿÿèÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@þÿÿÿÿÿTÿÿÿ ÿÿ ÿÿ,$$ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜Èø8øhÿÿÿÿ `„¸ÿÿÿÿdÿÿÿ ÿÿ$$$ÿÿÿÿHƒþÿÿÿÿÿÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿLibr‚ ÿÿÿÿþÿÿÿ€ÿÿþÿÿÿÿÿÿÿÿÿÿÿHanƒþÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜Èø8øhƒþÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿ°ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿca$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜Èø8øh$$$$ƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ€ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿ°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$@þÿ0Dÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜Èø8øhƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$@þÿÈ4ÿÿÿ ÿÿ UxIðÿÿÿÿ ÿÿÿÿHÿÿÿÿPÿÿÿÿXÿÿÿÿ`‚ ÿÿÿÿþÿÿÿ(ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$@þÿÿÿÿÿ$ÿÿÿ ÿÿ ÿÿÿÿƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÈÿÿÿÿÿÿÿÿÿÿÿÿ ‚ ÿÿÿÿþÿÿÿXÿÿþÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜Èø8øhƒþÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿ ÿÿþÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿàƒþÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿry$‚ ÿÿÿÿþÿÿÿ¸ÿÿþÿÿÿÿÿÿÿÿÿÿÿar$ƒþÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿra$ $$$$$ƒþÿÿÿÿÿÿÿ@ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿp ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿar$*€‹à HœðH@ÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿà*€wÿÿÿÿ8„ø8@ÿÿÿÿÿÿÿÿÈiƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ È$$$ƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ $¸ ÿÿÿÿÿÿÿÿ¨ ÿÿÿÿÿÿÿÿø8øh˜Èà ÿÿÿÿƒþÿÿÿÿÿÿÿÐ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ( ÿÿþÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ0 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$ÿÿÿÿàÿÿÿÿØ ÿÿÿÿà ÿÿÿÿè ƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿP ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿ€ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ` ÿÿÿÿˆ ÿÿÿÿ ¸ ÿÿÿÿÿÿÿÿ¨ ÿÿÿÿÿÿÿÿø8øh˜Èà ÿÿÿÿƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿ0 ÿÿþÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿ` ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$$ÿÿÿÿ¸ ¸ ÿÿÿÿÿÿÿÿ¨ ÿÿÿÿÿÿÿÿø8øh˜Èà ÿÿÿÿƒþÿÿÿÿÿÿÿè ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$ÿÿÿÿà ƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 8$$$ƒþÿÿÿÿÿÿÿ¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿèÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ($ƒþÿÿÿÿÿÿÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ$$$ÿÿÿÿø ‚ ÿÿÿÿþÿÿÿPÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿ|ÿJÿÿÿÿe¸!œÿÿÿÿƒþÿÿÿÿÿÿÿð ÿÿÿÿÿÿÿÿÿÿÿÿÿÿà ‚ ÿÿÿÿþÿÿÿxÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿxƒþÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ$ÿÿÿÿ ÿÿÿÿˆÿÿÿÿÿÿÿÿ˜ÿÿÿÿ ƒþÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿHÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ($$$$à ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ƒþÿÿÿÿÿÿÿ8 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ¨ ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ° ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ$$$ƒþÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿˆÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿhÿÿÿÿpÿÿÿÿx$ƒþÿÿÿÿÿÿÿ¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿHà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ƒþÿÿÿÿÿÿÿ¸ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿh ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿp ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$ƒþÿÿÿÿÿÿÿ¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ$‚ ÿÿÿÿþÿÿÿèÿÿþÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$ÿÿÿÿXà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ(ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$$ÿÿÿÿ`ÿÿÿÿÿÿÿÿ$$$ÿÿÿÿà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ƒþÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿøÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ$$$($ÿÿÿÿÿÿÿÿp‚ ÿÿÿÿþÿÿÿ(ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$,$,$à ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ÿÿÿÿØÿÿÿÿ ƒþÿÿÿÿÿÿÿx ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿøÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ‚ ÿÿÿÿþÿÿÿxÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ÿÿÿÿ`ƒþÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿXÿÿþÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`($($($ÿÿÿÿ@ÿÿÿÿxà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ à ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ‚ ÿÿÿÿþÿÿÿˆÿÿþÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ¸ƒþÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿ°ÿÿþÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$‚ ÿÿÿÿþÿÿÿ@ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$à ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ àdÿÿÿø$ÿÿÿÿØÿÿÿÿаàƒþÿÿÿÿÿÿÿÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿPÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿp! à ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ $$$ÿÿÿÿ¨ƒþÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$ÿÿÿÿØÿÿÿÿPÿÿÿÿXÿÿÿÿ`‚ ÿÿÿÿþÿÿÿ˜ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ $$$ÿÿÿÿȃþÿÿÿÿÿÿÿ¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ‚ ÿÿÿÿþÿÿÿøÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$ÿÿÿÿÿÿÿÿ`ÿÿÿÿhÿÿÿÿpà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ@ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ƒþÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸($($ƒþÿÿÿÿÿÿÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ($($ÿÿÿÿ¨($($($à)Tÿÿÿÿÿ˜ÿÿÿÿ !ÿÿÿÿˆ!‚ ÿÿÿÿþÿÿÿPÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ8ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ÿÿÿÿ8"ƒþÿÿÿÿÿÿÿÀ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿÈ ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿÐ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿhÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ‚ ÿÿÿÿþÿÿÿ`ÿÿþÿÿÿÿÿÿÿÿÿÿÿ($ÿÿÿÿp!ÿÿÿÿ#ÿÿÿÿ #ƒþÿÿÿÿÿÿÿhÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ‚ ÿÿÿÿþÿÿÿpÿÿþÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ"ÿÿÿÿÐ#ƒþÿÿÿÿÿÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ@!ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿH!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿX!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8#ÿÿÿÿ€$,$ƒþÿÿÿÿÿÿÿÀ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜,$‚ ÿÿÿÿþÿÿÿ`!ÿÿþÿÿÿÿÿÿÿÿÿÿÿumenÿÿÿÿ($ÿÿÿÿð$ƒþÿÿÿÿÿÿÿh!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿx%ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ($($($($($ÿÿÿÿX$ÿÿÿÿ %ÿÿÿÿ¨%ƒþÿÿÿÿÿÿÿ€%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ%ƒþÿÿÿÿÿÿÿˆ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ%ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ˜%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ‚ ÿÿÿÿþÿÿÿÀ&ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$ƒþÿÿÿÿÿÿÿð&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$,$ÿÿÿÿÈ$ÿÿÿÿ'ƒþÿÿÿÿÿÿÿø&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ`'ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$ƒþÿÿÿÿÿÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$ƒþÿÿÿÿÿÿÿÀ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$‚ ÿÿÿÿþÿÿÿð'ÿÿþÿÿÿÿÿÿÿÿÿÿÿ,$ƒþÿÿÿÿÿÿÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$ƒþÿÿÿÿÿÿÿP(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$‚ ÿÿÿÿþÿÿÿ€(ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$ƒþÿÿÿÿÿÿÿ°(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$ƒþÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ)ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$ƒþÿÿÿÿÿÿÿ8)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,$ƒþÿÿÿÿÿÿÿh)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ,$,$,$,$ÿÿÿÿ$‚ ÿÿÿÿþÿÿÿp)ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿx)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@+0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø8ø¸h˜È¨ ƒþÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿÐÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ(ÿÿÿÿ*ƒþÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ‚ ÿÿÿÿþÿÿÿ€)ÿÿþÿÿÿÿÿÿÿÿÿÿÿ(ƒþÿÿÿÿÿÿÿ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ *,$,$,$,$°,ÿÿÿÿð*ÿÿÿÿH+ƒþÿÿÿÿÿÿÿ(+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÿÿÿÿþÿÿÿ0+ÿÿþÿÿÿÿÿÿÿÿÿÿÿƒþÿÿÿÿÿÿÿ8+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØ*ÿÿÿÿÐ+`„àÿÿÿÿlÿÿÿ ÿÿÿÿÿÿ`„êÿÿÿÿhÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜ÿÿÿÿÿÿÿÿ@Xÿÿÿ ÿÿ -(Tÿÿÿ ÿÿ -Dÿÿÿ ÿÿ ÿÿÿÿÀ*ÿÿÿÿø,ÿÿÿÿ-ÿÿÿÿ-ÿÿÿÿ-ÿÿÿÿ-øÿÿÿÿÿÿÿÿ8¸ÿÿÿÿÿÿÿÿà ÿÿÿÿøˆ`¼„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ `MEÿÿÿÿÿÿÿÿÿÿþÊ%"€ ÿÿÿÿ€ 2€ €€ ÿÿÿÿdle 0 &B@<Ø Release library &B@>ÿÿÿÿØ2 Define COM object and instanciate (same as above)ÿÿÿÿ¸ÿÿÿÿ€ÿÿÿÿh¦¤+¢Caÿÿÿÿ0ÿÿÿÿ¸ZêÿÿÿÿZêÿÿÿÿÿÿÿÿÀ® Opening... (f® Receiving... (f® Closing... (fÿÿÿÿhÿÿÿÿHÿÿÿÿ8ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿ(¸ ZêÿÿÿÿZêÿÿÿÿÿÿÿÿàÿÿÿÿˆÿÿÿÿˆÿÿÿÿ ÿÿÿÿ¨ÿÿÿÿ°ÿÿÿÿ¸Zêÿÿÿÿ¦A¤+¢= ÿÿÿÿ¸ÿÿÿÿÐØ Optionnalÿÿÿÿ˜ÿÿÿÿxØ!ticable.CableSend handle, data, 4ÿÿÿÿФ'rÿÿÿÿ¸ÿÿÿÿXÿÿÿÿ(¸lÿÿ€ÿÿÿÿ@ÿÿÿÿØÿÿÿÿàÿÿÿÿèÿÿÿÿðÿÿÿÿØÿÿÿÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿ€ÿÿÿÿØ data2(0) = 3e.CablØTextBox3.Text = data2(0)ÿÿÿÿàØTextBox3.Text = data1(3)ÿÿÿÿ ÿÿÿÿhÿÿÿÿˆÿÿÿÿÿÿÿÿxÿÿÿÿ¸Ø Does communication¦‡¤+¢.T¦¤+¢..Ø"ticable.CablePut handle, SndBuf(1)Ø"ticable.CablePut handle, SndBuf(2)Ø"ticable.CablePut handle, SndBuf(3)Ø#ticable.CableGet handle, RecvBuf(1) 0 ¢¤ &%J'Z 0 ¤¤ &%N'ZÿÿÿÿøZƤêÿÿÿÿZêÿÿÿÿØ"ticable.CablePut handle, SndBuf(0)Ø#ticable.CableGet handle, RecvBuf(0)Ø#ticable.CableGet handle, RecvBuf(2)Ø#ticable.CableGet handle, RecvBuf(3)ÿÿÿÿxÿÿÿÿØ$ret = ticable.CableRecv(0, data1, 4)þÿÿÿÿÿØ data2(1) = 5ÿÿÿÿØ$ret = ticable.CableSend(0, data2, 2)ÿÿÿÿÿÿÿÿ¨ÿÿÿÿ Ø+ticable.OptionsSetDelay handle, IDFLT_DELAYØ/ticable.OptionsSetTimeout handle, IDFLT_TIMEOUTÿÿÿÿ ÿÿÿÿ° h Z¤• Z¤•° ´ (² Z ´ ¬B@°(²hÿÿ` ÿÿÿÿX 0 &%8'ZpÇ ´ (² hÿÿð ÿÿÿÿè ® Sending... (f€Ø' Possible way (CableRecv may be better)Ø' Possible way (CableSend may be better)ÿÿÿÿ ® Success !!! (fÿÿÿÿ  Zêÿÿÿÿ ´ (² ( Z ´ ¬B@° tica Z ´ ¬B@° msg)ÿÿÿÿ  0 &%¶'Zÿÿÿÿ Øticable.HandleShow (handle)ÿÿÿÿ ØDim ticable As New CablesØDim ret As IntegerØDim data1() As ByteØDim data2(4) As Byteÿÿÿÿè ÿÿÿÿÈ ÿÿÿÿÀ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ¸ ÿÿÿÿx ÿÿÿÿ° ÿÿÿÿ¸ Ø'Set tiemu = GetObject("TiEmu.TiEmuOLE") AÿÿÿÿÀ ÿÿÿÿØ ÿÿÿÿÀ ÿÿÿÿÈ Ø&TiEmu = CreateObject("TiEmu.TiEmuOLE")ÿÿÿÿp ®+clsid:b2a17b13-9d6f-4dd4-a2a9-6fe06adc1d33:$¼'¸ÿÿÿÿH ØDim TiEmu As TiEmuOLE-a2aØ&TiEmu = CreateObject("TiEmu.TiEmuOLE")Ø@TiEmu = GetObject("clsid:b2a17b13-9d6f-4dd4-a2a9-6fe06adc1d33:")å®+clsid:b2a17b13-9d6f-4dd4-a2a9-6fe06adc1d33:®TiEmu.TiEmuOLE$¼.¸ÿÿÿÿÈ Ø&TiEmu = CreateObject("TiEmu.TiEmuOLE")al] ¸!Ò v(få®+clsid:b2a17b13-9d6f-4dd4-a2a9-6fe06adc1d33:®TiEmu.TiEmuOLE$¼.¸ ¸!Ò (fØ Turn calc onbjecØDim tiemu As Object.¸EmØ Display OS versionÿÿÿÿp ÿÿÿÿÀÿÿÿÿèØ'Set tiemu = GetObject("TiEmu.TiEmuOLE")ÿÿÿÿÿÿÿÿHÿÿÿÿ°Øtiemu.turn_calc_onÿÿÿÿ à_RIANT_ ¸!è'àC: ¸!Ü'àÛE if (tiemuOLE->lpVtbl->ready_for_transfers(tiemuOLE,&ready)!=S_OK)ProÛ_ {tiemuOLE->lpVtbl->Release(tiemuOLE);OleUninitialize();puts("OLE error (#5).");return 5;}olZêà+Ø Sleep(10000)otØ Sleep(3000)WSØ Wait for calc to be readyÿÿÿÿ¸ Zêø+Ø Send commandstd®1+2'êol± ê ¸%ì'à0ÿÿÿÿðåÈ®+clsid:b2a17b13-9d6f-4dd4-a2a9-6fe06adc1d33:$¼.¸ÿÿÿÿ ÿÿÿÿ˜®²Attribute VB_Name = "ThisDocument" ŒBasŒ1Normal.VCreatabl`False –PredeclaIdxTru "ExposeTemplate Deriv$CuÀstomiz‡c€Control|CommandButton1, "0MSFvs, Œ#TextˆBox 2,    13, 4ǵ@ 5, @†Pšž Sub 61_Click() ' Define COM object interface ÀJ loa"dD Dim @~dy As VariantQGcmdÁSÀngƒtiemu OBSet A= Getƒ(, "clsid:b2a17b13-9d6f-4dd4-a2a9-6fe06ad€c1d33:"3·Á&ÁC')Ò'€"TiEmu.BOLEEHWait for calc to beC@ƒDo Whiá€Á(Notˆ#ƒJ*=ƒ8.B_À_transfers!LoopC' Sleep(10‡A!TurnC ¬onC ‹tÀ_A(*_Å'3ëSeðnd c#aãa6à‚¸1+2 WA( s:_(``áDisÀsy OS víÀi¥¥c. n‚0.?ayd_os_ÊC'£k Eï@X!UöY3éY@ÆÙ ™ I i © 9a‰ 4±aÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ < 1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Dy¡¡¨ýÿÿ`Ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ly¡ñ¨ýÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ T  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚ!U‰ù-aiѱåßäœ*:TÿN4ÿ4ÿ'Dÿ$ÿ $ÿü4üødÿ6Dÿ4ÿ$ÿ lÿûÄDÿ\KdÿWDÿüölÿ,dÿWDÿüölÿChÿhÿý“@dÿþšDÿüölÿ dÿWDÿ`F4ÿ%_P,ûýÿÿ6Dÿ4ÿXœ0dÿhÿlÿDÿ4ÿ$ÿ0 üƸ  @ P H 8 DLwrU€€€ ÿÿÿÿÿÿÿÿ`$É`´ÿÿÿÿÿÿÿÿ$ `¸ÿÿÿÿÿÿÿÿ Áÿÿÿÿ@@é@ ÿÿÿÿP@¨)P IÿÿÿÿH@œéH qÿÿÿÿ8@„)8p¹²€0* pH‚däProjectQ(@=­ l €Ù…ñC J< rstdole>stdoleP h%^*\G{00_VBA_PROJECTÿÿÿÿÿÿÿÿÿÿÿÿTðdirÿÿÿÿÿÿÿÿÿÿÿÿ^½__SRP_0%"ÿÿÿÿi¡__SRP_1ÿÿÿÿÿÿÿÿÿÿÿÿˆ2SndBuf ± €ÿ_B_var_SndBuft+„ÿRec΄ÿSendBuf¢ „ÿRecvBufSf€ÿ_B_var_RecvBuf×i €ÿICABLE_SLVÎ× €ÿ_B_var_ifPò€ÿticablesO€ÿ_B_var_ticablesØf€ÿErrorGetZ€ÿTexteÇ~„ÿmsgQµ €ÿCableReset=}„ÿtiemuð. €ÿ_B_var_Set GetObjectzà €ÿ_B_var_Objectj©€ÿtiemuOLETP„ÿTiEmuLib×?€ÿDelObjeta€ÿ_B_var_DelObjet‹8 €ÿDelObjecti6€ÿ_B_var_DelObject-0€ÿDelete¸x €ÿ_B_var_Deleteaó€ÿHRESULTJV€ÿemulated_os_version…à €€ÿout, retval()€ÿBSTRÞ€ÿextBox1±t €ÿITiemuOleÔ €ÿturn_calc_onS €ÿVARIANT_BOOLE„ÿreadyìÝ€ÿ_B_var_Variant¼Š €ÿ_B_var_WhileIf €ÿ_B_var_do ñ€ÿready_for_transfers6K„ÿcmdö~ €ÿsend_commandî¸ÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0}#2.0#0020°430-C 0046}#2.0#0#C:\WINDOWS\System32\e2.tlb#OLE Aut€omation`nMSFor ms> MSFFrm s/|€ r€G49866FDD-89E7-4586-B346-610798D`0689AG4.TWD#Micr@osoft > b Ob² Liàbrary:Qh0¥‡€Q8AE97-7DB2-42A9-A380-CA0DAB314150QDOCUME~1\RÀEin\L OCALSÀTemp\Word8H.0\Å-EXç-á.E à…€.`ŒM ´A“¥ƒ~N[alƒ~NDZ¢a 1 2C ƒðC‚ÃOffic„ˆOf@ic‚ À†ÂG{2DF@e4C-5BFA-101B-BHDE5€AA€Ž4 À2C¹gram€ Files\h\„MSO97°.DLLˆpƒ ÀJEÒpÂÒ³;‚½ThisDocumentQN2@1T€ÃiEÀ¡DÀIcuÀ¤en€ËÀHB1Ú&D‹B,B©×"B +BB“K)^ÿÿÿÿ *\CNormalrU€€€~~~~~~~~~g ÑØð.ÙËá²H Ð0ù§N  䃊a ù ÿÿÿÿ‰ Á ÿÿ©©¹™‘ áPKeí“VH˜¿C*½M¹ ThisDocumentProje‚ƒ„…†‡þÿÿÿ‰Š‹Œþÿÿÿþÿÿÿ‘’“”þÿÿÿþÿÿÿ—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔþÿÿÿÖþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿctïÀF=C:\Program Files\Common Files\Microsoft Shared\VBA\VBA332.dllVBA éÿÿÿÿ ™P ÀF4C:\Program Files\Microsoft Office\Office\MSWORD8.OLBWord ÿÿÿÿ )¡`0ÀFC:\WINDOWS\System32\stdole2.tlbstdole ÿÿÿÿ9pÝo†I牆E³Fa˜ÐhšC:\WINDOWS\System32\MSForms.TWDMSForms é1y€á.E à….`ŒM ´—˜в}©B£€Ê «1AP4C:\DOCUME~1\Romain\LOCALS~1\Temp\Word8.0\MSForms.EXD é9yLÐø-ú[½åªDÞR 2C:\Program Files\Microsoft Office\Office\MSO97.DLLOffice ÿÿÿÿ1¡ k ÀFÍeuhÏL“­•%zԻͺk߃ä̧@™šPŸY‚‘úZ%øÿm0¿JªA›*(‚=ö ÀFDocumentÒ‹BìΞ ª`óTextBoxÌa^ÿ  ä*\G{000204EF-0000-0000-C000-000000000046}#3.0#9#C:\Program Files\Common Files\Microsoft Shared\VBA\VBA332.dll#Visual Basic For Applications*\G{00020905-0000-0000-C000-000000000046}#8.0#409#C:\Program Files\Microsoft Office\Office\MSWORD8.OLB#Microsoft Word 8.0 Object Library¼*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\System32\stdole2.tlb#OLE Automationä*\G{49866FDD-89E7-4586-B346-610798D0689A}#2.0#0#C:\WINDOWS\System32\MSForms.TWD#Microsoft Forms 2.0 Object Library*\G{8A079897-7DB2-42A9-A380-CA0DAB314150}#2.0#0#C:\DOCUME~1\Romain\LOCALS~1\Temp\Word8.0\MSForms.EXD#Microsoft Forms 2.0 Object Libraryá.E à….`ŒM ´*\CNormal*\CNormalƒðC *\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.0#0#C:\Program Files\Microsoft Office\Office\MSO97.DLL#Microsoft Office 8.0 Object LibraryÿÿÿÿÿÿÙ…ñCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³;ThisDocument 443f185df*Dÿÿ©×&Dÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVÿÝÉ͵í@—UxIðüíÿÿÿÿÿÿÿÿ`€vÿ,6 €ÿAs=€ÿDim@€ÿDoL„ÿerrorS€ÿFALSE`€ÿifz€ÿloop†€ÿnot³€ÿThen¿€ÿwhile Wordµk VBA÷âWin16Á~Win32Mac³²test_vbai stdole“`MSFormsC ThisDocument<ž €ÿ_EvaluateÙNormalߨŒ(ÿOfficeu Project-®CommandButton1|ÔCommandButton2}ÔTextBox1¦STextBox2§S„ÿDocumentjÓCommandButton1_ClickäÁ„ÿticable€ÿCablesô„ CreateObjectøŠ €ÿVersionGet/W €ÿLibraryInit$”„ÿhandle• €ÿHandleNewˆ9 €ÿICABLE_BLKÚ|€ÿIPORT_1[ €ÿCableOpen‘t €ÿCableCloseÕD €ÿHandleDel €ÿLibraryExitç² Œ(ÿCTICABLES2Lib¸€ÿClickŠãCommandButton2_Clickôù„ÿcableÛ@€ÿ_B_var_ticable’  €ÿCableSend¸Q„ÿdata; €ÿCableRecv•Š„ÿCountersÖ€ÿCab8}€ÿx00þê€ÿOptionsSetDelayåÁ €ÿIDFLT_DELAYžserroŠ„ÿoldý¾€ÿOptionsSetTimeoutÿ €ÿIDFLT_TIMEOUT•é€ÿTest4«€ÿodlݽ €ÿ_B_var_odlîz €ÿCableSetD0 €ÿCableGetD08=CommandButton21YB TextBox21¨CommandButton21_Click,«„ÿret΀ÿaX„ÿTextBox3¨S€ÿ_B_var_TextBox31+€ÿvmvalÝâ€ÿ_B_var_IDFLT_DELAYe€ÿ_B_var_IDFLT_TIMEOUT3½ €ÿHandleShow#€ÿCaÅ\€ÿCablePut’K€ÿCableGet!CommandButton3~ÔCommandButton3_ClickFA„ÿdataDimE0 €ÿ_B_var_datar €ÿdat£‚ €ÿ_B_var_dat´?„ÿdata1@1„ÿdata2A1 €ÿ_B_var_Data2mõ„ÿ3Ò‹BìΞ ª`óÁ{l¯ÎŸFªWJOCommandButton1@2×iÎͧwÝV2ð$★¶ FÞÑ¡ B‰ÄéÿO”@ñÿÿÿ€€€÷ðÒððpð( ð ððH’ ð C ðA ?ÿðððH’ ð C ðA ?ÿðððH’ ð C ðA ?ÿðððH’ ð C ðA ?ÿðððB ðS ð¿Ëÿ ?ð!"#$ ?ƒ4 û4 ?4 à4 #%&MPqt›¾ÀÃÿÿ Romain Liévin,C:\sources\roms\tiemu3\OLEAUT~1\test_vba.doc Romain Liévin,C:\sources\roms\tiemu3\OLEAUT~1\test_vba.doc Romain Liévin,C:\sources\roms\tiemu3\OLEAUT~1\test_vba.doc Romain Liévin,C:\sources\roms\tiemu3\OLEAUT~1\test_vba.doc Romain Liévin,C:\sources\roms\tiemu3\OLEAUT~1\test_vba.doc Romain LiévinJC:\DOCUME~1\Romain\LOCALS~1\Temp\Enregistrement automatique detest_vba.asd Romain Liévin,C:\sources\roms\tiemu3\OLEAUT~1\test_vba.doc Romain Liévin,C:\sources\roms\tiemu3\OLEAUT~1\test_vba.doc Romain Liévin,C:\sources\roms\tiemu3\OLEAUT~1\test_vba.doc Romain Liévin,C:\sources\roms\tiemu3\OLEAUT~1\test_vba.docÿ@€!!øŸè!!Â@@G‡z€ÿTimes New Roman5€Symbol3& ‡z€ÿArial?5 ‡:ÿCourier New"0ˆÄ©åZ¢Ær¢F!¥À´´€0)ÿÿ#COM test sheet for ticable2 libraryticables2 COM test sheet Romain Liévin Romain Liévinþÿ ÿÿÿÿ ÀFDocument Microsoft Word MSWordDocWord.Document.8ô9²qtiemu-3.03-nogdb+dfsg/sdk/oleaut/tiemuole.c000066400000000000000000000010041220314353500206220ustar00rootroot00000000000000/*** Autogenerated by WIDL 0.9.31 from oleaut.idl - Do not edit ***/ #define INITGUID #include #include #include #ifdef __cplusplus extern "C" { #endif DEFINE_GUID(IID_ITiEmuOLE, 0xe9373bd9, 0x7363, 0x427f, 0xa2,0xa6, 0x1e,0x8b,0xa9,0x1f,0xfb,0x3e); DEFINE_GUID(LIBID_TiEmuOLELib, 0x6140dc7c, 0x3d74, 0x41f9, 0xa7,0x87, 0x59,0x46,0x99,0x4a,0xa8,0xf2); DEFINE_GUID(CLSID_TiEmuOLE, 0xb2a17b13, 0x9d6f, 0x4dd4, 0xa2,0xa9, 0x6f,0xe0,0x6a,0xdc,0x1d,0x33); #ifdef __cplusplus } #endif tiemu-3.03-nogdb+dfsg/sdk/oleaut/tiemuole.h000066400000000000000000000227711220314353500206450ustar00rootroot00000000000000/*** Autogenerated by WIDL 0.9.31 from oleaut.idl - Do not edit ***/ #include #include #ifndef __WIDL_OLEAUT_H #define __WIDL_OLEAUT_H #ifdef __cplusplus extern "C" { #endif #include #include typedef enum __WIDL_oleaut_generated_name_00000000 { TIEMU_CALC_TI92 = 1, TIEMU_CALC_TI89 = 2, TIEMU_CALC_TI92p = 4, TIEMU_CALC_V200 = 8, TIEMU_CALC_TI89t = 16 } TiEmuCalcModels; #ifndef __ITiEmuOLE_FWD_DEFINED__ #define __ITiEmuOLE_FWD_DEFINED__ typedef interface ITiEmuOLE ITiEmuOLE; #endif /***************************************************************************** * ITiEmuOLE interface */ #ifndef __ITiEmuOLE_INTERFACE_DEFINED__ #define __ITiEmuOLE_INTERFACE_DEFINED__ DEFINE_GUID(IID_ITiEmuOLE, 0xe9373bd9, 0x7363, 0x427f, 0xa2,0xa6, 0x1e,0x8b,0xa9,0x1f,0xfb,0x3e); #if defined(__cplusplus) && !defined(CINTERFACE) interface ITiEmuOLE : public IDispatch { virtual HRESULT STDMETHODCALLTYPE image_loaded( VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE emulated_calc_type( int* ret) = 0; virtual HRESULT STDMETHODCALLTYPE emulated_hw_version( int* ret) = 0; virtual HRESULT STDMETHODCALLTYPE emulated_os_version( BSTR* ret) = 0; virtual HRESULT STDMETHODCALLTYPE ready_for_transfers( VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE send_file( BSTR filename, VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE debug_file( BSTR filename, VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE reset_calc( VARIANT_BOOL clearmem, VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE execute_command( BSTR command, VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE turn_calc_on( VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE enter_debugger( VARIANT_BOOL* ret) = 0; }; #else typedef struct ITiEmuOLEVtbl { BEGIN_INTERFACE /*** IUnknown methods ***/ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ITiEmuOLE* This, REFIID riid, void** ppvObject); ULONG (STDMETHODCALLTYPE *AddRef)( ITiEmuOLE* This); ULONG (STDMETHODCALLTYPE *Release)( ITiEmuOLE* This); /*** IDispatch methods ***/ HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( ITiEmuOLE* This, UINT* pctinfo); HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( ITiEmuOLE* This, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo); HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( ITiEmuOLE* This, REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId); HRESULT (STDMETHODCALLTYPE *Invoke)( ITiEmuOLE* This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr); /*** ITiEmuOLE methods ***/ HRESULT (STDMETHODCALLTYPE *image_loaded)( ITiEmuOLE* This, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *emulated_calc_type)( ITiEmuOLE* This, int* ret); HRESULT (STDMETHODCALLTYPE *emulated_hw_version)( ITiEmuOLE* This, int* ret); HRESULT (STDMETHODCALLTYPE *emulated_os_version)( ITiEmuOLE* This, BSTR* ret); HRESULT (STDMETHODCALLTYPE *ready_for_transfers)( ITiEmuOLE* This, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *send_file)( ITiEmuOLE* This, BSTR filename, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *debug_file)( ITiEmuOLE* This, BSTR filename, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *reset_calc)( ITiEmuOLE* This, VARIANT_BOOL clearmem, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *execute_command)( ITiEmuOLE* This, BSTR command, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *turn_calc_on)( ITiEmuOLE* This, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *enter_debugger)( ITiEmuOLE* This, VARIANT_BOOL* ret); END_INTERFACE } ITiEmuOLEVtbl; interface ITiEmuOLE { CONST_VTBL ITiEmuOLEVtbl* lpVtbl; }; #ifdef COBJMACROS /*** IUnknown methods ***/ #define ITiEmuOLE_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) #define ITiEmuOLE_AddRef(p) (p)->lpVtbl->AddRef(p) #define ITiEmuOLE_Release(p) (p)->lpVtbl->Release(p) /*** IDispatch methods ***/ #define ITiEmuOLE_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) #define ITiEmuOLE_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) #define ITiEmuOLE_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) #define ITiEmuOLE_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) /*** ITiEmuOLE methods ***/ #define ITiEmuOLE_image_loaded(p,a) (p)->lpVtbl->image_loaded(p,a) #define ITiEmuOLE_emulated_calc_type(p,a) (p)->lpVtbl->emulated_calc_type(p,a) #define ITiEmuOLE_emulated_hw_version(p,a) (p)->lpVtbl->emulated_hw_version(p,a) #define ITiEmuOLE_emulated_os_version(p,a) (p)->lpVtbl->emulated_os_version(p,a) #define ITiEmuOLE_ready_for_transfers(p,a) (p)->lpVtbl->ready_for_transfers(p,a) #define ITiEmuOLE_send_file(p,a,b) (p)->lpVtbl->send_file(p,a,b) #define ITiEmuOLE_debug_file(p,a,b) (p)->lpVtbl->debug_file(p,a,b) #define ITiEmuOLE_reset_calc(p,a,b) (p)->lpVtbl->reset_calc(p,a,b) #define ITiEmuOLE_execute_command(p,a,b) (p)->lpVtbl->execute_command(p,a,b) #define ITiEmuOLE_turn_calc_on(p,a) (p)->lpVtbl->turn_calc_on(p,a) #define ITiEmuOLE_enter_debugger(p,a) (p)->lpVtbl->enter_debugger(p,a) #endif #endif HRESULT CALLBACK ITiEmuOLE_image_loaded_Proxy( ITiEmuOLE* This, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_image_loaded_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_emulated_calc_type_Proxy( ITiEmuOLE* This, int* ret); void __RPC_STUB ITiEmuOLE_emulated_calc_type_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_emulated_hw_version_Proxy( ITiEmuOLE* This, int* ret); void __RPC_STUB ITiEmuOLE_emulated_hw_version_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_emulated_os_version_Proxy( ITiEmuOLE* This, BSTR* ret); void __RPC_STUB ITiEmuOLE_emulated_os_version_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_ready_for_transfers_Proxy( ITiEmuOLE* This, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_ready_for_transfers_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_send_file_Proxy( ITiEmuOLE* This, BSTR filename, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_send_file_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_debug_file_Proxy( ITiEmuOLE* This, BSTR filename, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_debug_file_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_reset_calc_Proxy( ITiEmuOLE* This, VARIANT_BOOL clearmem, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_reset_calc_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_execute_command_Proxy( ITiEmuOLE* This, BSTR command, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_execute_command_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_turn_calc_on_Proxy( ITiEmuOLE* This, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_turn_calc_on_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_enter_debugger_Proxy( ITiEmuOLE* This, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_enter_debugger_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); #endif /* __ITiEmuOLE_INTERFACE_DEFINED__ */ DEFINE_GUID(LIBID_TiEmuOLELib, 0x6140dc7c, 0x3d74, 0x41f9, 0xa7,0x87, 0x59,0x46,0x99,0x4a,0xa8,0xf2); /***************************************************************************** * TiEmuOLE coclass */ DEFINE_GUID(CLSID_TiEmuOLE, 0xb2a17b13, 0x9d6f, 0x4dd4, 0xa2,0xa9, 0x6f,0xe0,0x6a,0xdc,0x1d,0x33); #ifndef __TiEmuOLE_FWD_DEFINED__ #define __TiEmuOLE_FWD_DEFINED__ typedef struct TiEmuOLE TiEmuOLE; #endif /* defined __TiEmuOLE_FWD_DEFINED__ */ /* Begin additional prototypes for all interfaces */ ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *); unsigned char * __RPC_USER BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *); unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *); void __RPC_USER BSTR_UserFree (ULONG *, BSTR *); /* End additional prototypes */ #ifdef __cplusplus } #endif #endif /* __WIDL_OLEAUT_H */ tiemu-3.03-nogdb+dfsg/skins/000077500000000000000000000000001220314353500157155ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/skins/Makefile.am000066400000000000000000000002411220314353500177460ustar00rootroot00000000000000skinsdir = $(pkgdatadir)/skins dist_skins_DATA = *.skn *.map EXTRA_DIST = copy.bat uninstall: rm -f $(pkgdatadir)/skins/*.skn rm -f $(pkgdatadir)/skins/*.maptiemu-3.03-nogdb+dfsg/skins/Makefile.in000066400000000000000000000321001220314353500177560ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = skins DIST_COMMON = README $(dist_skins_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(skinsdir)" dist_skinsDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_skins_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTODIRS = @AUTODIRS@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLADE_CFLAGS = @GLADE_CFLAGS@ GLADE_LIBS = @GLADE_LIBS@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GROFF = @GROFF@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INCINTL = @INCINTL@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KDECONFIG = @KDECONFIG@ KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ KDE_INCLUDES = @KDE_INCLUDES@ KDE_LDFLAGS = @KDE_LDFLAGS@ KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@ KDE_MT_LIBS = @KDE_MT_LIBS@ KDE_RPATH = @KDE_RPATH@ LDFLAGS = @LDFLAGS@ LIBCOMPAT = @LIBCOMPAT@ LIBCRYPT = @LIBCRYPT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBOBJS = @LIBOBJS@ LIBPNG = @LIBPNG@ LIBPTHREAD = @LIBPTHREAD@ LIBRESOLV = @LIBRESOLV@ LIBS = @LIBS@ LIBSM = @LIBSM@ LIBSOCKET = @LIBSOCKET@ LIBTOOL = @LIBTOOL@ LIBUCB = @LIBUCB@ LIBUTIL = @LIBUTIL@ LIBXINERAMA = @LIBXINERAMA@ LIBZ = @LIBZ@ LIB_KAB = @LIB_KAB@ LIB_KDECORE = @LIB_KDECORE@ LIB_KDEPRINT = @LIB_KDEPRINT@ LIB_KDEUI = @LIB_KDEUI@ LIB_KFILE = @LIB_KFILE@ LIB_KFM = @LIB_KFM@ LIB_KHTML = @LIB_KHTML@ LIB_KIO = @LIB_KIO@ LIB_KPARTS = @LIB_KPARTS@ LIB_KSPELL = @LIB_KSPELL@ LIB_KSYCOCA = @LIB_KSYCOCA@ LIB_QPE = @LIB_QPE@ LIB_QT = @LIB_QT@ LIB_SMB = @LIB_SMB@ LIB_X11 = @LIB_X11@ LIB_XEXT = @LIB_XEXT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POSUB = @POSUB@ QTE_NORTTI = @QTE_NORTTI@ QT_INCLUDES = @QT_INCLUDES@ QT_LDFLAGS = @QT_LDFLAGS@ RANLIB = @RANLIB@ RC = @RC@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TICABLES_CFLAGS = @TICABLES_CFLAGS@ TICABLES_LIBS = @TICABLES_LIBS@ TICALCS_CFLAGS = @TICALCS_CFLAGS@ TICALCS_LIBS = @TICALCS_LIBS@ TICONV_CFLAGS = @TICONV_CFLAGS@ TICONV_LIBS = @TICONV_LIBS@ TIFILES_CFLAGS = @TIFILES_CFLAGS@ TIFILES_LIBS = @TIFILES_LIBS@ UIC = @UIC@ UIC_TR = @UIC_TR@ USER_INCLUDES = @USER_INCLUDES@ USER_LDFLAGS = @USER_LDFLAGS@ USE_NLS = @USE_NLS@ USE_THREADS = @USE_THREADS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_INCLUDES = @X_INCLUDES@ X_LDFLAGS = @X_LDFLAGS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ all_includes = @all_includes@ all_libraries = @all_libraries@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ dbus = @dbus@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ kde = @kde@ kde_appsdir = @kde_appsdir@ kde_bindir = @kde_bindir@ kde_confdir = @kde_confdir@ kde_datadir = @kde_datadir@ kde_htmldir = @kde_htmldir@ kde_icondir = @kde_icondir@ kde_includes = @kde_includes@ kde_libraries = @kde_libraries@ kde_libs_htmldir = @kde_libs_htmldir@ kde_libs_prefix = @kde_libs_prefix@ kde_locale = @kde_locale@ kde_mimedir = @kde_mimedir@ kde_moduledir = @kde_moduledir@ kde_qtver = @kde_qtver@ kde_servicesdir = @kde_servicesdir@ kde_servicetypesdir = @kde_servicetypesdir@ kde_sounddir = @kde_sounddir@ kde_styledir = @kde_styledir@ kde_templatesdir = @kde_templatesdir@ kde_wallpaperdir = @kde_wallpaperdir@ kde_widgetdir = @kde_widgetdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ qt_includes = @qt_includes@ qt_libraries = @qt_libraries@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ x_includes = @x_includes@ x_libraries = @x_libraries@ skinsdir = $(pkgdatadir)/skins dist_skins_DATA = *.skn *.map EXTRA_DIST = copy.bat all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu skins/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu skins/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_skinsDATA: $(dist_skins_DATA) @$(NORMAL_INSTALL) test -z "$(skinsdir)" || $(MKDIR_P) "$(DESTDIR)$(skinsdir)" @list='$(dist_skins_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_skinsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(skinsdir)/$$f'"; \ $(dist_skinsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(skinsdir)/$$f"; \ done uninstall-dist_skinsDATA: @$(NORMAL_UNINSTALL) @list='$(dist_skins_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(skinsdir)/$$f'"; \ rm -f "$(DESTDIR)$(skinsdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(skinsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dist_skinsDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_skinsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_skinsDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_skinsDATA uninstall: rm -f $(pkgdatadir)/skins/*.skn rm -f $(pkgdatadir)/skins/*.map # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tiemu-3.03-nogdb+dfsg/skins/README000066400000000000000000000003151220314353500165740ustar00rootroot00000000000000Skins (converted) from the Rusty Wagner's TI emulator: - ti89 - ti92 Skins (converted) from Jaime Fernando Meza Meza : - emuti89 - emuti92plus Skins from Julien Blache: - v200plt tiemu-3.03-nogdb+dfsg/skins/copy.bat000066400000000000000000000001441220314353500173560ustar00rootroot00000000000000mkdir c:\lpg\msvc\skins copy *.skn c:\lpg\msvc\skins\ copy *.map c:\lpg\msvc\skins\ del *.bak tiemu-3.03-nogdb+dfsg/skins/ipaq_89.skn000066400000000000000000002754671220314353500177310ustar00rootroot00000000000000TiEmu v2.00¾ºíþ¬7TI89 BY "Jaime Fernando Meza Meza" jaimeza@hotmail.com-Jaime Fernando Meza Meza jaimeza@hotmail.com´ÿ´TI-89TÊPØLòPØŽò’ØÐòÔÖòÖTòüJRüŽ–üÒè::T: ò4,4L"JBR"ŽD–"ÒDPHnRNŽn–NÒpÚPnNXp zJœRzŽœ–zÒœÚzžzZœ¦JÈR¦ŽÈ–¦ÒÈڦȦZÈÒJôVÐŒô˜ÐÎòÚÐòÒZôþHVüŒ ˜þÎ Úþ þZ *JLV*ŒL˜*ÎLÚ(J*XJXJvVTŠv˜TÌvÚTvNdxþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿÿØÿàJFIF@ÿþ4Created using the Colosseum Builders JPEG libraryÿÀzhÿÛ„       ÿÄð   !"1#2AQ$3aÑ%&48STVq‚£±´Ò6BCRUXb„¡¢¥¦ÁÓ5crƒ…‘¤²³ '(7DFdðEs’ÃáHWet†“”âäghu§¶ã9GIvwÄ!1AQ"2aq¡±RÁÑð#34S‘áBr$5²ñb‚¢CDTc%sF’ÂÿÚ ?Xr+±ÂÚ¥¶2ñfГyàã.®ëP¶ã¢r¬¬V ð×DÎÙHçR‘¨àô ËIƒâ( 4m„âÇv^øb£Í|­e« ¼C£2œ£ Ô  0ÈÈàÇyòBŠÜ0O!Ø~'‰Ûð.¦LMûEÑÏEMËH]Ò˜fc4´ÉXëȱ,žg<>#sÏ£ g<7x‰·¨·ÑtŽçXŸ÷_'boÀӹ际åtÞpÝ®Ÿ­L¾ÓR:½®ý< cöÊ›êö»ôò€µ€#—üm2CÇ+¼sÕ®»†}€!+ †9·ŽP(H¥0ê=I¡u!7)xÔæÐ¨m7­¼¼H\\®K\{EϸaßÊzùêä¸Ìö)˜./ˆ'W¼"4Ê;¢2ë’(öšÉ$£NGßü«l8”’Í™ÿg¹Õ½}ñÿ©ì_I)íe{¾À_·îùÿÛÈöô:¶Â*_õ<Ù~¥“ieδî¢FL:³sƒÎS2ê2C¦:ç]+‚ß”ÇOyß¼JíNüˆã‡Œù¹Õ½}ñÿ©ì_Ik+ÝóþíÅ{¾À;[×ßúžÅôö²½ß?àÜW»çü¬¿ãh¹’†9]ãž­uÜ3ì ]1ͼrBE)‡QêM ¬y ¹HËƧ6…Ci½måâBfÉ›ãÛLÌ6#•ni—Ý⽩WwyU™ÎƒpŸ z’®íZ‹ÑÞ(öÔy˜ÄDOy|…ǹս}ñÿ©ì_Iíe{¾ÀG·îùÿîuo_|ê{ÒCÚÊ÷|ÿ€{q^ïŸð ê=²=í:3ÛU§Ÿ™r–LŠ[ªù… c´ß,XBn†å3PégÃYù@=¦õGU£µ\29òÊ4~ÑkŒÐ‹]£Äö­Ü±ÔZ/Ü3Ë.ß*’óäÞ[xjO¡wo%õ³K£h,Õ†ž±ñÐ1½¨á« sã¤òNrÇ/÷´"û‰Ýü®ïNKŒÁ£`Ç+Ý3†è ºä:ljD“FgÞAÊÚ Q ÛÌôÌ…ÆrZäm²DðÇ)ìs©®»†Šf%tÄ6éÄ 1L‡R){MhUªN~?ÀK›aÆÕbÑŸð&vvÞ¡/DÒ;¢á¿Ý|‰ƒVç¦f7tUyÃzŠ~¹)í5/«Ùï×Êý²§:½žý| Ô{kþ{ÙŒg±ðªH¿2å-yì÷Vs €§f¹X¬äÞ ú¦!ÓÝg'O†‘ó{Mê~«§r¸dQ圊u¬·Ç¶g—í¿*ܯ0¼ÂúR²òîšüR•eã.:u£šÚ»6"c¼=¨óÓ†‰Žòùob ™Ê9Vâ6Ÿ”zR\VwÝ)QL‡§Lú¦‚¶ƒ©™FšçÄ Ú"ë‘ى̷òçVõ÷Çþ§±}$Oµ•îùÿÜW»çü¹Õ½}ñÿ©ì_Ik+ÝóþíÅ{¾À6ò=޽Cî­Š”}P¶_©kÙ©ó¬Û‡(¯¬¢ØóuLڄ鎷×Rä·eÇÂÓÞkﻓ»")ãá`îuo_|ê{ÒCÚÊ÷|ÿ€{q^ïŸð)Ö²ßÙž_¶ü«r¼Âó èJË˺kðuJU—Œ¸éÖŽkh:ìØ‰Žðöv£ÏN&;Ëä!ŸQËýÓ¹"w‡+»—Sîÿ/hØ ýÉÀ‹7@¢bȼ>©¥Š±ãQ¤‘™wºv…B”h&ó-s!q€–¹B,‘<1Ê{êk®á£b™‰]1 ºqŒS¡ÔŠ^ÓZj“ŸðæØqµX´gãü žçVõ÷Çþ§±}$§µ•îùÿ~ÜW»çü:lƒÏ{NŒöÂ_éçæ\¥“"–ê¾aHí7Ë›¡¹LÇA:{¯dÙÁðÖ~Pi½QÕhíW Ž|²€lí½E¾ˆ;¤w:Äÿºù;~ÏLÌ/+¦ó†ítýjÓR:½®ý< ÙS}^×~žPçVõ÷Çþ§±}$=¬¯wÏø·îùÿk-ñí™åûoÊ·+Ì/0¾T¬¼»¦¿T¥YxËŽh涃®Íˆ˜ïgj<ôá¢c¼¾@ÇǽÉ;§y«} ýÐØU>½sàú~w£ãáªÐvü;3ñµij­â_!19-r6„Y"xc”ö9Ô×]ÃFÅ3ºbtâ ¦ C©(½¦´*Õ'?àQͰãj±hÏÇø=έëïýObúIOk+Ýóþý¸¯wÏøs«zûãÿSؾ’ÖW»çüÛŠ÷|ÿ€mä{úˆ[a/úžl¿RÉ´²çZwQ#&Y€9Áç)™u!Ós®•ÁoÊc‡Œƒ§¼ïÞ%v§~DqÃÆ|ÜêÞ¾øÿÔö/¤‡µ•îùÿöâ½ß?àέëïýObúH{Y^ïŸðn+Ýóþ³¶õ z î‘Ý þëäìLê·=31»¢«ÎÔSõÈ{MKêö{õò€{eNu{=úù@†å{¸cnC±O 7ãMxk†‹£’º•Û§0HÅ0jIª×—z^<Ê8|ÊŸ^"<Ê8oðžI¬kP÷Ù¾íJ¨!íÁ¥É2/‡`.Sp¤YŸ‹ùÜêÃÿô £¾ c+]z¬à}ÁÜ莩c(R`to&Η&ý¨ÿ¼L•ÿ—?­ãÓü©ýo!Ø©çG•Oòt;ŸÌܯ„IŽu5Þåî¼ —PÒ¼s 5-¼4½Ñ”6ךMÓ",ÇCi)&ñ‘{ÏŽD)ÜŒ¢«$tò‰Ž¡ˆ¾åÔûËò{¦‘¿¹fZvå &,Œ'ñ ýlôFÕ¡Ói*^¥2\ÛÊe sR™ÓŽA•dÐå¼±ZÛÃmí4…]÷x_9Ø•æ÷ŠM_ƒÔ],ñrÓI¦wVÉ ¬L÷žC+˧6Ë 0£ï<¾r iõ[X§ôïÌȃ?‚ç/P1ùwyz‡e€€üçó7'gkÁácMw¹{¯BeÔ4¯œè Ko #ote Mµæ“tÈ‹1ÐÚJI¼dEžóã‘kµH ÖmmÓDïE\öÏBøUÞqó'#O|…#Eòµ`³œ ΉuK¾ÂÙA¥%–óãÃ-Ð/QNã šR]]çdž[ \¬š·–+[xm½£æ«¾ï ç;¼ÞñI«ðcZ‹¥‚^3®Zi4K«dÐV& ûÏ ——Nm–aGÞy|ä8“(ļ¿=I1gâx¹-[øÊúÜ/´0®^„!¹T;ŸÏnQ6>ï†"Mz­Î®˜24\I™X›š8M2‹¯ §Ô—¦4“K5–BôŠJYpÖRYeÌ\mÎÌŸÑ´] ÄðÄs²XwpÑ–¦¼ACnœÀP‘J`Ô¥Õ$S/% RT™# §¨KiR™#ñ NØÛºÖÚy ÁÏ !‰0/VLmn¼1óÛŒίU]–ðß…9v&§M¢¨Q:Yeè6¾¦J©Dñe–yå—pé8ÜþtÂ,Žøž$Ú'ªªïÞ˜23ßÌæóD)dQ)tãLúÓÍ&©IA[ŠJ•((.mbÞ«kkþ‚ù™Ñï~ |ýF§ÿ.×?PâL£Br¨w?žÜ¢l}ß D›:õ[\=0dh¸“2±74qše^O©6ÓI¥šŠK!ФRRˆ²’Ë.`åš½Âé‹ XájÛõvæ{FDvëûÂ*"ÍЙK"ˆð ëÓ‚„£J’I¸Ž7À(IJJÐH¸Ž'8(âþ{B,žÙתÚïÝxÂ4\Hæó¤)¦P)´áTº“*É$¨IÉ N%)T 三”  Nòüõ$ÅŸ‰üñJj¢üdýnvwæÏÐÉ2Œ@@ Ê¡Üþ{r‰±÷|1lëÕnupôÁ‘¢âLÊÄÜÑÄ i” ]xU>¤ÛLi&–j),‡B‘IK.ÊK,¹ˆn\»*{í–ÇÜfþ~eؼ,Ô©/€×Tèá¥SêKѦä,¢tËAzÞÛ‰¶í2˜4ù·˜ÿ’L3Á—¢®úÅ1åÌ^y÷àª&úÀ)Ý«!‡@Þà:ÈPRYmãBË.yd&ª…6âz¹o<²¸ÜþtÂ,Žøž$Ú'ªªïÞ˜23ßÌæóD)dQ)tãLúÓÍ&©IA{ŠJ•((.e((¶Óê¶±Oéß™‘53ø.rõXü»¼½C‰2Œ@@@޹Iô¹Kÿì¿ýÚz*Ë—Öñê¶gåKëyŽḐ1Å3åÞ&ò«³R: ª—TÓ”ñ4M%IL÷ðZ‚d™JЈ5NóÊ \` fpÅ1s#½B›—Sî½—zTqήHakæ„€f{“žrUñ,ÑK§R;Ë^î2å*™ÞZ—3ܼ¬É#nNÐôOÂxç«^&ý£ÒJèiZBî‘`$R”4¤ÕUTê4¤òk+mãB.\+̯`ÞÑ?J6þõ3ô×½ïA—Ú5÷‘|æW°ohŸ¥z‡M{Þô´j=ï"ù̯`ÞÑ?J6þõš÷½èhÔ{ÞEò™^Á½¢~”mýê5ï{ÐѨ÷¼‹ä2½ƒ{Dý(ÛûÔ:kÞ÷ =£QïyÈe{ö‰úQ·÷¨t×½ï@{F£Þò/<Êö íô£oïPé¯{Þ€öG½ä_ y•ìÚ'éFßÞ¡Ó^÷½í{Ⱦ@ó+Ø7´OÒ¿½C¦½ïzÚ5÷‘|‚rɜܒbÛ$xFïx7#Ê.óv<Åæ»z¸Ê”ï”Bòº@wiœ†RškuUHY ŽgMוXÛ„ÚU3¦Dj°h‚É!˜ÑcXˆª'Åe¾Ñ6—†\$]ß&0”«Y¾ŸD&()Ç’³I¯"Ôà·÷NÔ!Å%Kê¦$à·÷Ö`ë‡ì‘ßiÐEm„*¾óðÚ&ÖL,—I9µ†ž¥‚bè])˜è (4ãÊY¶µÁø—já´âíW™d²K$f‹¬ú‰ì/%zÅyû>Ó´®Ë°¤¬»Ä=+o Hè%¦}rJîšT¤®H£wC©xÒµ¡É$ÆâÎDŀؕƒZe’:c~åù^a}ÞyÛjË»µÇUÓ¬³àeãJ¿RóK4]1ÜAuu ¸mß1ÜBåæW°ohŸ¥z‰é¯{Þ>Ѩ÷¼‹ä2½ƒ{Dý(ÛûÔ:kÞ÷ =£QïyÈe{ö‰úQ·÷¨t×½ï@{F£Þò/<Êö íô£oïPé¯{Þ€öG½ä_ y•ìÚ'éFßÞ¡Ó^÷½í{Ⱦ@ó+Ø7´OÒ¿½C¦½ïzÚ5÷‘|æW°ohŸ¥z‡M{Þô´j=ï"ù̯`ÞÑ?J6þõš÷½èhÔ{ÞEò™^Á½¢~”mýê5ï{ÐѨ÷¼‹ä|³aW'غ‰ì…ƒg^«s Ú/NÑ9Quxœ½Ë‡×x‚[©ª„©.æY… ŠªJÐöe—ÖBfÛß1ïrKq‚#xËj6!¶eÊY¼:â->â°þHj#јJb FR‹ÛZ &EKx8Úbnß:Jùcû[‰ ˆ"2Øm’Ââ›2å-¹ž)H-&âÀ-ÍÝ ÕW1”€"R†ÐKYLòˆ’–Úm.8›®ñÑóÃü­ —FÙb!XŸç\¤¸\3ÃÈNz– |K.‚JÊŽ3(ÏÄÀ„¶ºu*Þ²c9âbb¶g S2;Ô)¹u>ëÙw¥Gê䆾hHg¹1iç%_Í*ºu!3¼µîáã"ŽR© å©páã=·} µ¸ftB¸ˆV'ÅeF:œVHw{X”¬W¾%ŸH& eRÚƒQže©x÷‹ªŽÆÔ¥Y1%ãÞ ·}¿Êv‚Ù} ¾ÙîþÄæwâz Ësw@xIUVìäƒô¸siÌkÝÀxSiÌkº'A1iÑSùÓÊ&Ëá‡{}Ë©÷šæ ÷Dû–b^ð€˜²0ˆîˆO®iVГij=Jm*eÅž¥û…­šÛ¼{Ü’Ìý íÌUæŸíÊX½*¸ßÅÑàÿ“ÐëMR¢õçQߨÒíx‹ÎÔ¦;õ1LTá¹DØLO 7ãM{ApÑtrWC0Û§0HÅ0jID¡HiÄ«\…Ú›eÔ/^¯¨}¦!ÏuÊO¥Ê[ÿeÿîÓÑP~\¾·U³?*_[Ìqâj„”=öoƒûRª{pš†¡Š=°œ&îÌ ·¸vkåjë ‚°ÛÇ”$RuáÚ‚JD°FfdA½þS¸>#rò™yÅ7uÃÿu–´ß+6"á•ZÝÐ0˜´˜@7€'Õ0F,³#ºEß“W…äÕÿµ÷‰Ž¿òçõ¼aÚ•?­ä:Z €ö~Öãhß5Äm>¼î)Âᔊ®C]SŸˆ¼S„·nBQO˜ókzöÒÜvgÌC@2á…¢æG‚…×Χ%{.ë¤á’ßÀ×ΉÄÍÆ5\äèàY%×P¥¦7ž½ü< 1Ê¥-1¼õ><<#¸Còõ$ÂŽ|ñrZ·ñ•õ¸_hþa\½8“(ļ—,¯gì’Ûw*†3 /}U…Ä®Y_ƒ8õ+ñª]R¦ª—îZ¬<Ž<†Úº‹Ü^õUAkØ ùíØÌ1BwΧ&wŸ3ãÈdzï*X4ÌÁ}tµM ªI)Å ó8©u‰J[g™Ä|DÇr¸÷ÿáÝÜÇ!ôU÷?§î÷„®½ÒñqÑ+ŽŽ•‰9}!¾™‹=_à\¹GY_tË[³¬ÝÚB®üË7ï«»»Å*îz')Æk ð×DM;øHTÄÓT`¶»Nqc’*þ‚y;CÐÄNÁz²boÙïHz+iZrïD£2˜£ õ¥j–•ºjN‚•Ž%ÇhÓø ¤Î2kåÏ÷Lµ»*‚3\¯0ÍûòâòîíJ•½ ‹9Ñ.!Æ~$èQ»„…®& tèÁmÇ"b?(›2A<­^'‰ã«zÄYEûFXFj0í$!wHa(̦(hÑëšY‡’·P”¦¤2š¡.<Ú˜"ó©fO昹®'³ˆçb^¯Z3¦Œ°™Ñ E«J«²Ö€W¬ä •$“k‰’-7 MÔ$“c©¸‹Lâ8‰˜ÒÚ [‚c|׳î󸫉R ºuÊ| >qJ!ÛP¤F±ä‡¬mMÇj<…:ɬ#¹­¼""*ÊáW…Þ*ÀÞ^]©1 ß+á%‡2Í8Ò:IíV* +)2ßü½YŒÙ%•ÿàÕ„lý­Ã1¢*ðÆ+(…ð5aq*D‹»äËç©`ŠÍð4º! AUW Òe™ê~ÀUeí©*.²¢Oøka%ÜÏÑV3b3Oö1ØÊ¿Œº*ü*¥Ôƒ•Wß—j<€íf%ùv£ÈL[™?£hº‰áˆçe°î.á£,#Mx‚†Ý9€¡"”Á¨KªIV^J¤©2F)OP–Ò¤-2GãANdä¼ái„lú‰ßyÓªÌoÙðÇS˜âYwˆ¶¥Wf¤tU.©£NµD¥)%qä{AD¥­¨åfÚ}VÖ)ý;ó2%ü9zŠ1ùwyz‡e€€€ò”ðœ¥ö_þí=åËëxõ[3ò¥õ¼Ç¦¡¨ICßfø?µ* ‡·•Aðë\Z„XîÏ\ðv_,S™âÎeï‚ J®ÍIô)ª•:Í%¼^œŠ ÌmEN;:´‹Š£èî}±˜L[f½»6ůDßZ%¹º ã ºä2 _#) ó"2’ ÉjÊà+LäŸm»‡4Ëñø^ú\®îñ­e~ åœè/ðÓ­9ÛAõ´H°âds6¥CŒ¥g?tó+Ø7´OÒ¿½NgM{ÞôhÔ{ÞEò™^Á½¢~”mýê5ï{ÐѨ÷¼‹ä8†,‘Ó²;â{Ú'ªªïÞ›HÒÏ3˜KÍ¢RÈ¢R鯙õ§amºj”® Àw\iå*Pä!1ÝÁ¾÷×ߢ”Á{õ<ˆS£õ|ˆѬïpýpmú(`½úžD Õò wF°o½ÃõÁ·è¡‚÷êy0*?WÈÝÁ¾÷×ߢ† ß©ä@À¨ý_"tkûÜ?\~Š/~§‘£õ|ˆѬïpýpmú(`½úžD Õò wF°o½ÃõÁ·è¡‚÷êy0*?WÈÝÁ¾÷×ߢ† ß©ä@À¨ý_"tkûÜ?\~Š/~§‘£õ|ˆѬïpýpmú(`½úžD Õò wF°o½ÃõÁ·è¡‚÷êy0*?WÈÝÁ¾÷×ߢ† ß©ä@À¨ý_"tkûÜ?\~Š/~§‘£õ|ˆѬïpýpmú(`½úžD Õò wF°o½ÃõÁ·è¡‚÷êy0*?WÈÝÁ¾÷×ߢ† ß©ä@À¨ý_"tkûÜ?\~Š/~§‘£õ|ˆѬïpýpmú(`½úžD Õò wF°o½ÃõÁ·è¡‚÷êy0*?WÈÝÁ¾÷×ߢ† ß©ä@À¨ý_"tkûÜ?\~Š/~§‘£õ|ˆѬïpýpmú(`½úžD Õò wF°o½ÃõÁ·è¡‚÷êy0*?WȄͨ²KVåCû)Ù×RÜn`Ïž´´cdÌc«ÞL®ƒ+ÝjׂUÓu¦”£Tž[…7˜eK5ÉåÕ¾e{ö‰úQ·÷©Ìé¯{Þƒ‘í{Ⱦ@ó+Ø7´OÒ¿½C¦½ïzÚ5÷‘|æW°ohŸ¥z‡M{Þô´j=ï"ù̯`ÞÑ?J6þõš÷½èhÔ{ÞEò™^Á½¢~”mýê5ï{ÐѨ÷¼‹ä2½ƒ{Dý(ÛûÔ:kÞ÷ =£QïyÈe{ö‰úQ·÷¨t×½ï@{F£Þò/<Êö íô£oïPé¯{Þ€öG½ä_ y•ìÚ'éFßÞ¡Ó^÷½í{Ⱦ@ó+Ø7´OÒ¿½C¦½ïzÚ5÷‘|æW°ohŸ¥z‡M{Þô´j=ï"ù̯`ÞÑ?J6þõš÷½èhÔ{ÞEòÎT–WYŸ$Øëb9^a—â»érË˶µtxCšR¬Ü%Ç^¤éì÷Öé.ó˜×Ùu<•âÄ|G&ñÐP÷Ù¾íJ¨!íÁÝÉ_‹ûc?Öÿ{ì_Æc¼'{úZ¯ ð7’Í‹ÒïE›”tnãŸ5Õ1°ž×Õæ’æüLJøÔ—9ŒÆ•LuÃûeÉ:ñÅüírr6®ˆçð=³ÙoŸÀ9Ž8@@ñÕ=Pö€@÷f/ O!»Pw»á¼ Õ“*̘ß1­¸Â¯š¥UÙf]Þ”æ)‰ÂQT ÌòÏÐsÝJŠ©³3Ë8.­€ìu·Otï©^{á½d÷~ÂQÑ÷ôšh~ûQ¦£ ð»@·í‚î¶öîcõ+Ìà|7¬’óÃoøJú^ö’A‹ì,MAO‰†X½ ãåùãmn,á÷®i—àö…Žâï(¼R¥S6ùÍÏÞÈG›¢R7jd¢v”(¢tïâ1lç¡´¶¢‰˜ïÖ| ² = µ»bó\>Ìd½çqV+¥R®AE2ŸO†œP¤vÔ!¬ù‰ëm¸íONApÐY$mæ¸}˜À÷ÅX¬JáUÓ¨(¦SàiðÓŠk[¶­(gÈm[Ö8–ãµ>A•òwpÂÑs[½}¦ß:œ”mCÓ%8d·Ä(²s@°LÑ|cSÍÎŽ&’gEZ–™·3Ó=xø@ÌÝr–™³3Ч^>Þ&lZÊãÞä–×f9¢¯8¼ïÅ)õã®ð•Ñà÷º^.:%}¶äå˜[õ â4ìõs XþÌœ,Ћ\OgÎÛ:TgMaØòëÓ”Š7W¥·†¬7i£YLBQª×zo›¨QªÇSiž™ÌñÈ`(΋NµÍŠ”zyÇ.kÂÏy_>¤âCÔ¬H}ÑÒ© )NµfÚd¸Ì t—Öi'ŒÀ ¾MñìA¶ÎŒ6*†0>q֤جLÍáï@„¥XWÄÓá  º´&ÓÜsŸ€\Ú-Wôªsðñý™8Y¡¸žÎ#¶u:¨Îš2ñå×§)n®5Ko XnÓF²˜%ÐòV¸˜3Óx»u 5Xêm3Ó9ž!jš  Ò×&ý¿ä“ ÆðC7¢®úÅ1×ü'ß‚¨›ë”ŠnÕàopd)ÏU^Æ…éé媻 ¡M¹ÙË–B›ÈÕm þ9ó5ÈÚßÁWÖðý£ùurõ!úPœ怀€€€€€€€€€s—à¢dWø§ÎÔ§ceh¾_ÝØÝ—9|GæÒu\ICßfø?µ* ‡·•Aðë\Z„XîÏ\ðv_,S™âÎeï‚ J®ÍIô)ª•:Í%¼^œŠ ÌmEN;:´‹Š£èî}±˜L[f½»6ůDßZ%¹º ã ºä2 _#) ó"2’qÈÔ— þ9óµÉÉÚº#ŸÀqvÏe¾âN8áÇTõCÚ݆/²FnNÑT1Ú¶JõŠð—ìùJì» Òs—x›«o Hè%¦}rLO¦êT”ÉϨ'ä­’Lï,ä‚ÖÀcÎæv¶éò¬Ó/¾ï;û»ËÅ'UÓ¤Ò•sà<%ãMµŠƒDÄ5 ã6mÌH-ú<î™kohß*Êó žó¿¼»»RE]:K9Ñ>Æ^4k ‰˜;8-“s0.6ýjŸélö´ë1zÎá…ÿƒ"•œÚâ,»Åñ‡P¢XcîI· êBiéÿË“N—Ô‹•¥Z¤ÚݦCùöò¿EUÇÀàÔ”þ– ²µ…»âZgV Šm…¡Tf™ËǼ!ªwm ޲g/ñ ×Y$9ÉÚÐlâoÇ=Zòë‡ýÓI3êo̬×%1‰©¹ÉOÄ—$:§Râ´Ï.9 &Þ[Èuzg–YeÇ|ˆnTv©´·lCû Äù~+½iÅa”«£ÂJV¸S>¹„’ÔÌZ„ÞY”ù‹ÒSØÚ1 ¬™ó ¨ÂÐì’6‹­™Þð´•Õä™{Ó)i]^€+9 ($bw©ã0œ‘iÔ%³$É”ïâ2¡‡›KFI“LÉIo X•ó@IADe·;[…Å6e˘²Ì*àZMÅ€këÊÌ i¢c9€#Ò•¸²ZÊ#œÈÔ”¸ë‰qÄÛlï™ãóBío¢4s¬Oû¯²xü ;ž™» Êé¼á»]?Z™z%[.ï˜òºWîù œ`µM ²K[Ûwö"*‰ò|/zÓŠÃ.ßðd•`^4Ϫc4ÔlZ´XYù§Ocá—U3橬m §Õ³?šy;9,…Þ§êd¿ÌQ˜ÖÒ ôTªìÓè›zzö&r§I:nž£*iROÇ®îì Lrõ[BŽ|ÍrR·ðUõ¼Shþ]\½H~”'y€ åùêK‹?ùÚ”ìl­Ëâ;»²ç/ˆüÙN ë‰({ìßö¥Töáv±>èÙÜ=Éþ«ûãà=`÷ž›ðw/{Y$¢g!jiœƒ{”}°Z3ªÆ6Ok1ÐE頻{³¡FÍ\¯V½_8 ‚­¯¬U›tÁwL†b"Ã3ˆ1©J8ƒÈÔ— þ9óµÉÈÚº#ŸÀpöÏe¾âN8áï ?RL'øçÏ&ªßÆWÖá·hþa\½8“(Ä‘ýŒÙ#¦k­ÕvÑ=UQšD”´³ßÌåT«½™Ž%,Š*•Ô#®ãuMªÊ~Îí>9êVkÊCgì’ÌÞöœÓˆÚ|Óü¢œ.qН˜R¨kªd&è\Fz¦w).ZɽїˆÊí î--LeâP¦¿šbæHbÑàm‰z½kÉYó26f7D1×ï)-*®Ë@ïˆU^“¦u²’MͪHµÜ39N’Mí*â-rˆà!û¯G±žöcd{a ¯ô‹ó?RÉŠ–êÎaqä¥`›Á­3 Ý ÉÅAð‰èÍ£ªêíW‘1<\< ¹;2<"xnåÔû®ý׌8Êå¤À^t€Ct””ÚK³^º¬•Nì$ó!GªW¡™oä!ùú’a?Ç>x¹-[øÊúÜ/´0®^„ëÑìA罘ÙØB«ý"üÏÔ²b¥º³˜\@9)X&ðkLÃA::“ŠƒáŒÚ:®®Õp‰ ˜*pÆÐ‹$O 7ãMuÜ4]•ÐsÛ§0HÅ0jH…¡HUªÔeqµ6«¨™J k‰yHl+hšÚ} ÷®²àÎó§ÜV¨Ç]x°å Gwˆi0N‚i1%£_\ÇM48´éq¾Ö|ó+iõ[X§ôïÌȉgð\åêÇåÝåêI”b Þ_ž¤¸³ñ?©NÆÊÑ|¾#»±».røÍ”긒‡¾ÍðjUAnBá~ÄwˆÉX<~’òõ&¿üírrö®ˆçð³ÙoŸÀ9Ž8@@;ÈÔ“ þ9óÅɪ·ñ•õ¸mÚ?˜W/B$Ê1kÅ[Ëm­í¼A`¹¦_õ<ǵ,Jò‹Å7M;äð÷²çh”‹Úd‘bW®GŸÓŠro .Dë‘çÃÂ*?…_ÖÇÉÙ®‰Ø6%êõ¢ýžô˜K¦’œ»Ä”õYGA W×$Î…¥—nNd\†fÜM;×£¬EËp™°¹’:`Œ×4Ëï»òâîòñqÖô*4¥\¸ ø’»Š³\D…Ô=Œá¹"’*þ‚y;CÐÄNÁz²boÙïHz+iZrïD£2˜£ õ¥ê–•ºjN•Ž%ÇhÓø [²¸öpû1Ÿfýô¤Ø\Mw=uL:K®I¡çЬH=b9 /Ô6¼[Oµlr «N…_ÏnQ6_»Ø/NL×0h½ \_3Š÷D@Æ™€Ct]rLí­$ÒÒzœ Í8”²âSˆýÂv?ˆ6S5À0Ç(€u;h¸†öDíØ+Âi»äàc,¬Ë ³QWOT“R§Sz›¸Ï|ÀÚÚúqÕÆ{æ<ƒ*À\Ñí™òItº674Š÷Þqæ*UÞ^6Þf IYëâ<%Å3¾¤:ñœÁþC-B›z Õt$÷Çp99£ØJÉÁ¼‘åa[3+±×«–­>ⱺ*(j#Tæ‚jB×zdÊmÇ1TÏpNyž¶KÐÿ™÷º.ýèÚÌ:­ÿK^ Ý]ñÞ¢¯®M}.þµö÷Dù½7­‰otO˜êÈpÁ0‹$1 0`]L•Ü3ÞœôVsÛÇ0ÌÆ0ê=iÍZÔµ\­G!Çâ¯^¢e((®[p³r‰}ÚóÁv9ê×q—’““.¡˜YÖj¥máeÒ.ì´íMP£hš-¥U(Ù&KMýùȇ¶ŸUµŠNü̉fÎ^¢ì~]Þ^¡Ä™F œåùêLŠÿùÚ”ìl­Ëâ;»²ç/ˆüÚN ë‰({ìßö¥TöàD?aø_±â5,?I9ú“áoÆþv¹9{WDsøFÙì·Ïà‰Ç äêI„ÿùâäÕ[øÊúÜ6íÌ+—¡e‡)ò˜°$…¡KÝðžÎº–Ï0Œ1í-,ެ÷ ¬4_«w¡UCÁ:TõN­YœŸ<÷@ëÒÖ<µfr{‹,ùîCŠ?…_ÐO'f¸b˜0/VJ2¶{ÒŠÚJu»Í"%”ËGxzôêL¨ZVíÏi¿è†&ÜK_Q¦ÿÛ¸LØÞ÷$t÷Núªç±Þ×wàw<Y¥²óÃÐ.£ð»"ÈÔ“ þ9óÅÈÚ߯WÖàý£ù…rô ÉÞ/çL"Öð†!½¢zª¢á׌#=üÎP7:p–E^4Ë­‚IªpC+iJ• 8."É âá{rv‡žÄ7³®¥¸›‡^0íiZçNcLÀck©u#j‰Dé’ŽL>±*KÆK9><„?uèö óÞÌll!Uþ‘~gêY1RÝYÌ. ”¬“x5¦a ‚[£¡98¨>"ý´u]]ªá!¿Ê.ñ3rvy;ÝðÞ9Ô×u˜=1„&]CJWÍT¶ðÓ.ïFS½$Ý#3Ì_f¥&ñž{‹ŽFPÅüö„Y<7³¯Uµßºñ„h¸‘ÌçHSL Si©u&U’IP“’œJR¨AÉq)A@ Íq/) €åmA»O¡^õ¶QüÞ`´ûŠÕ믡¨îñ & ÐM&#$´kë˜é¦‡.7ÚÏžbåm>«kþù™,þ œ½BXü»¼½C‰2Œ@@@@@@@@@@@@9Ë÷Ô›~)óµ)ØÙZ/—Äwv7eÎ_ù´A×P÷Ù¾íJ¨!íÀˆ~Ãð¿b ;ÄjX<~‘òôO…ƒÿ[ùÚäåí]Ïà9g²ß?€r§p€€w©&üsç‹“Uoã+ëpÛ´0®^„I”b Ý£·˜KÐÿsŽè¸o÷£8b`ÇU¿éi Ý]ñÞ¢¯®MV2¾µÖ÷AŸ˜Ûe;k­îƒ?0wÿDžâ;Uý/ÿŒÄøσÓñøé_}QéŸæ1ã—(€û™Ù#¦ÍsL¾û¿..ï/oB£JUˈðŸ‰û¸«5ÄHECØÎ‘–Õo6gdŽ˜#¸.i—ßwæÔ±+¼¼\u½ éJ¹qñ&·É—Vk¾'¸ÆÚ‚§yÃs'¸ÃhãÞä›AÜãÑWµ|áO¯Qé™Qàù΃Å2X‹í».1ð¬oÛº¼cà)ÜŠÑì%dŠ`ˆÞ Èòа­™Š•ØëÕËVŸqXÝ5ªs HAV¤-w æCë”ÛŽb6©žàµàgôm5Äñ?$LsÕ®‹ö¾!+ …!wH`(H¥(hI¡¥ µ.åý£So%´Ø‡²þÐâìÉýrvk³ˆž9Ç=Zè¿å„%t4•qy‚ )JM Õ?eCÉC¸‰N\&êÛØ¨N\'»ˆ ­Å1s#Â'†öÔí®ý׌fnί`/:@3ܘ¥6“®¹u ²i „Æ|£ç q,¡0ƒ¸Ï~e9 ¤Î2«–Æ\,Ü¢_v¼ð]ŽzµÜeä¤ä˨fušé[xYt‹»-;SAÔ(Ú&‹A©UJ6I’Ó~r!í§ÕmbŸÓ¿3"YŸÁs—¨»—w—¨q&Qˆ'9~ú“b¯Å>v¥;+EòøŽîÆì¹Ëâ?6“¨:âJû7Áý©U=¸Ø~ìA gxKÒN@^¤ØWñ¿®N^ÕÑþ‘¶{-óø"qÇ'yú’a?Ç>x¹5Vþ2¾· »Gó åèAÄ™F!Ê|¯b§õ¤rvˆbxa¿2a®.ˆ}¤­¥Q ºp*ÖL:â5r}‰Ò¥BZt’®×§ÎG^´²ñ!}¯L¿c’ýƒîß¶÷¹#Û¹ÕW3ð>¼KÏ ¹àëé{ÚÉ11e剠çSáâ/d·½É=Ó¾ª¹ìwõãÝøÏGGßÖh?e燠*0ñ ²9¯’ãæ=vY$:#,ÛæCf\¤û=ƒ\±jíÃ}_ÌC|Kw9„ø'B¥(5©f]˜žùôÔ«KfâÜR{19ë>‘æ\ž/çO!¸yá C{DõU‰¸uãÏ6å ntà%,Š&6¼i—Zgª$A’Ž øk•U,à¸òÓ_Í1s$1hð6Ľ^µä¬ù™3¢ë÷”–•We wÄ*¯IÈQKe$››T‘k¸%Êt’oiWk”GµäãÇ­¼­­7³Œ¯0Ës>¬Ê.ØÖ\ôCŸ½t%DõMA2˜TÄÆZæ4Ô¡²§Eª˜˜Ë\ü 2­ÎÙœ6SB®øMË©÷‹¿zTqÁ\‚^h„1–Ve….’—S;4êu*4êC5=*ŸJ”dÓ_Í1s$1hð6Ľ^µä¬ù™3¢ë÷”–•We wÄ*¯IÈP[)$ÜÚ¤‹]Àr$›ÚUÄZåÀCÆ‘ú[A0üAgÎÙè£8ÿƒ´÷±ÜWÎá,„}Ê”•p’Žü³B?Ë©IW (ïË1qµ˜ó`2÷»ÝÕèWœÍß—ÿÁ©æ SuâÃ7wˆèŠi¬I"<÷†YÅ”¤úÛ‹ˆ6ók{º³L¿ê…²þï(¼Sz͸ró÷²æÄh”ÍØ†"õNüAƒ â(âtïãá⊠×òØVÑ4´úï\+eÁæ O¸­QŽºñaÊŽïÒ`Òb2KF¾¹ŽšhqiÒã}¬ùæ.VÓê¶±Oéß™‘Ïà¹ËÔ%Ë»ËÔ8“(Ä|¿}I±WâŸ;R•¢ù|Gwcv\åñ›iÔq%}›àþÔª‚܇ì? ö 3¼F¥ƒÇé/ /Rl+øßÎ×'/jèŽÈÛ=–ùü8ㄼ€ýI0ŸãŸ<\š«_[†Ý£ù…rô âL£æ»~ä¯w${w1=s8=zñ/<2Ú<}/{Y'AŠÕÞXŠÈtéö‹˜…Š®¯‡ðQýŒ¸^Üšì†]³®¥´\“´\I¤­Ðçfq6•x¤™ÑP¢wY˜ÌÝR’ö2ó?âÍ€À}Ìì‘Óf¹¦_}ß—w—‹Ž·¡Q¥*åÄxOÄ”}ÜUšâ$.¡ìg ȉÜ¡WôÉÚ†"v Õ“~ÏzCÑ[JÓ—x‚%”Å­/T´­ÓRt ¬q.ò«³Tª—TÓk&Ñ4¤©PgÝÀt)Í’eHZàÕ(0ʵ½mËáø#μÂós+2‹ºNNöYáïdezQ:‡©3µaJ—œnãÌeg ¥Ng¸óÝ…_Öo2CÃ:k®ážô„Ùºc›xâe­x…Ç0ê<Ü»ëZ]MÊízü 1Çòo_k×àP_¸e&q”-\¶2áfåûµç‚ìsÕ®ã/%'&]C0³¬ÔJÛÂˤ]ÙiÚš¡FÑ4Z JªQ²L–›ûó‘m>«kþù™Ìþ œ½EØü»¼½C‰2Œ@@@@@@@@@@@@9Ë÷Ô›~)óµ)ØÙZ/—Äwv7eÎ_ù´A×P÷Ù¾íJ¨!íÀˆ~Ãð¿b ;ÄjX<~’rôN…C³óµÉËÚº#ŸÀr6Ïe¾äN8áï ?RL'øçÏ&ªßÆWÖá·hþa\½8“(Ä8†°·ó¦dwÄü–v‰êª»÷¦Û‘žþg0—š"Á)dQ)tãLúÓ°º”š¥.Axë•iR¥Áp´??òIÿFOèOþ3Ÿôçóý?{©0ÿë˜çûwþãü×?Û-ÆÀv÷¹#§ºwÕW=Žð>¼{¿¹àèèûúÍý—žx‡…٠˲¸ Û,‘ÓiÖœáÏ"§½ö9áŠ\¦úéqÔ«æÔœ„,•ª!wJ”Æb")­÷ÖÂͶÎ†ÚЇ)œ6š8ISê*Yä"ä† û¼¯òö{¢0æ·g¬Þ2¥7jN¼!Uj)œ—j.ªKœ Ém.¨Ö]T–»ã㨠M4ÅÌÅ£ÀÛõz×’³ædlÌnˆc¯ÞRZU]–ߪ½'!Al¤“sj’-wÊt’oiWk”GN€9D?¢˜E‘à¢Ì®^¯ºö]×s«“˜ùÑVg¹)jç%_ͺD¡QvE®Zpñç(R…Eù§pñžá3[¿ÔOsWnv·ïì¥eyá•ÿ/¥OCÏ¥íbDwê(Š>Ö)Ûlwê& M4ÅÌÅ£ÀÛõz×’³ædlÌnˆc¯ÞRZU]–ߪ½'!J­”’nmRE®áG)ÒI½¥\E®Q:Ó¡W §—%—Äîö —«ï5Ì/N7÷,%"½Ñ)dQÝŸ\Ñ­­GN´ž…¡Í8¥R¸ƒÐ¢?pʵ˜ód²÷C¡ÕžEO{Ì¡ÇsŽº¤Ë¹óH®…fïˆU)ÄS;M_&gZ˜ÊË8’¥$µ1 Zkù¦.d†-Ø—«Ö¼•Ÿ3#fctC~ò’Òªì´ø…Ué9 ]l¤“sj’-w9N’Mí*â-rˆà-³8Y¡ÛÂ>S²Xvã>uÔvœ»q~uQ)[xZ ¹:j‘¥!@éÔj"FdzTª57™‡¤Æ¢ã<_ÏhE‘áÃ{:õ[]û¯F‹‰À^t€4Ê6œ*—R)d’T$ä‚JR¨AÉq)A@ Íq/) €åmA»O¡^õ¶QüÞ`´ûŠÕ믡¨îñ & ÐM&#$´kë˜é¦‡.7ÚÏžbåm>«kþù™,þ œ½BXü»¼½C‰2Œ@@@@@@@@@@@@7Ë÷Ô›~)óµ)ØÙZ/—Äwv7eÎ_ù¶A×P÷Ù¾íJ¨!íÀˆ~Ãð¿b ;ÄjX<~‘rŸ™Füoçk“—µtG?€ämžË|þÌœq Þ@~¤˜OñÏž.MU¿Œ¯­ÃnÑü¹zq&Qˆ'vŽÞa/CýÎ;¢á¿ÞŒá‰ƒVÿ¥¤7tUwÇzо¹5XÊú×[Ý~cm”îu®·º üÁÜ#ý{ˆíWô¾þ3ào>OÇâC¥}ö4}D¦˜ÇŽ\ \lîgdŽ˜#5Í2ûîü¸»¼¼\u½ )W.#Â~$Sîâ¬×!c8nDHZÀ -nÇ!K8†,§mNªîùë3.ôæ\n`õ”™a‰©†tOIÉ4,ÚyXŠT6jеÚgº üÄÌiǬ[æ»yAøîó¸RÅ›âä«§U .•Œøº% ŒÒˆur"ÒTwÄ !æÎæâÔª;â=dÓš=ínãx7a¶K…cÌT¶æx¥"¨ûêÄ·7tuU\‚RAJCh4 æyDJm¦ÔÛjºèÝä¹e{?dÛ¸pñT1˜a{ê¬.%rÊüć©X—RêÍ —îZ¬<Žª£È'0{ùŸ Œ×câ¥Gß— Zð³šÞ…BCÔ¬eÇJ§Ä$šÍÔ+q%—pÚo6¼g"äõ{ƒî³'ó4\ÉÚv¥;+EòøŽîÆì¹Ëâ?6Ó¨:âJû7Áý©U=¸Ø~ìA gxKÒ.@¥_ñ¿®N^ÕÑþ‘¶{-óø2qÇ'yú’a?Ç>x¹5Vþ2¾· »Gó åèAÄ™F!Ç]Õ,Ö}[sûÿÃ!|+oœX·¾Yˆ\EõÚ¥›Á¹Ñ´êà<ÏU’ç–|H®PÇU‚ñ<³äz@éK~ÛÞänæ?U\ÎÀúñ/<6烯¥ïk$ç±e剠åÓáâ/d·½É=Ó¾ª¹ìwõãÝøÏGGßÖh?e燠*0ñ ²9¯üÃå7þµ?é¿Nÿ1é>cÒ÷ziÐûïý¿cvŸõOóû^Æí9랢ãË]Ͱ’WADèWwÙ˜ÿw⥤ÜX&:ëŇ0h;¼GI*‘X^³Ï× ŠbÔb8®·†¹Üñ=¡G„O ìëÕmwî¼a.$syÒÓ(Úpª]I‰d’T$ä‡=Ä¥*„—NãK[tÅÍnøbÅ6‰Ôª‹‡¦Ò33ßÌ…sG(˜²0˜ºñ¦}hÔ6ѦT¸?öÚeI•¹ -ykÇ›[É%sÞug«ÞœSòþçtب¤æ²µ…14¦S€‚h¤jÇ¡g[¹ 4,áÔZá‹w û€/ç´"Èð‰á½z­®ý׌#EÄŽ`/:@še›NK©1,’J„œç¸”¥Pƒ’âѤGþ–ÐL?Ydz¶z(Î?àÀí=ì@÷óƒøEG¡r¥%\$£¿,Ƥ#üº”•p’Žü³Y6K/t:YäT÷¼Êw÷8ëªL»Ÿ1DŠèVa>ø…RLEÓWÉ™Á¦Ë8’¥$µ0Y4GĆÛÙÆÇÜ]á|øR׊Uø0 )‘xñ«Nƒ¨BbÅO(Èm†«¹@NrqˆãÖÞVÖ‹›ÙÆW˜e¹¿Ÿ Velk.z!ÏÞÈ:¢z¦º„ ™L*bc-sjPÙS¢ÕLLe®~PqûÅüé„ZÞÄ7´OUT\:ñ„g¿™ÊçNRÈ¢ckÆ™u¦$MP£‚öÒ•*p\E;’ÅÂöäíx¹5Vþ2¾· »Gó åèAÄ™F „€ZÝŽB,–q YNÛ:UÜ?óÖf<]é̸ÜÁê1)2ÃS èž“’mY´ò±¨3Ý:5 ÅZí3Ý~bg¸Gú$÷Ú¯é|üf'ÀÞ|ŸÄ”é_}Q3üÆÜX ùÑ0™šäÆnøKÉEPêT˜5\~9ª}+L¯=Ç91+š=€-n&àˆ7nv· ŠcÌT±e˜U ¨›ë×ו˜tÓD†sJ%Hq…œG9‘D©·[Kn*ÛgtÌ‹£ØJÉ?ó‹3Ô°cª]ï‘] Íð¨í2+¨µû¥û„}ÛŽ{©ýÅ;‘Cš=„¬‘LÁ¹QV³1R»z¹jÓî+»¢¢†¢5Na)#jÔ…®ôÈ}r›qÌFÕ3Ü! ·c‹%œCS¶Î§Uwüõ™zs.70zŒJL°ÄÔÃ:'¤ä—Y´ò±¨3Ý.á³P¬U®Ó=Ðgæ&meÍ÷$wÁx7»6ó7lÌTºz еNáGÜ Á1éI(Ò‘y¬ŽÞÅSx†âUdi”ˆnLöxþ‡"å¯}Ÿw,uYƒ¯6#Ë>ÜX ùÑ0™šäÆnøKÉE/PêT˜5\~9ª}+L¯=Ç9´Ä9à@@jå±— 7(—ݯ<cž­wy)92ê…f zVÞ]"îËNÔÐu 6‰¢ÐjUR’d´ßßœˆ{iõ[X§ôïÌÈ–gð\åê.ÇåÝåêI”b ¾_ #É6* ÂOÿ‹R•¢ù|Gwcv\åñ›iÔq%}›àþÔª‚܇ì? ö 3¼F¥ƒÇé/ /Rl+øßÎ×'/jèŽÈÛ=–ùü8ㄼ€ýI0ŸãŸ<\š«_[†Ý£ù…rô âL£æ»Y±+„²÷C¢ËóÈ©ïy”8ó¶Õ8ëªL»Ÿ1ÄŠèVa>ø…RLE: T¼¹3TjpC¦Í]C’¥.Zœ¹l{f|’v"Ì^¹¤Tïô‹e•w——«7Ä +9ÃxG„ÃY'½{… œfÞ¨Ät¡'òÛÞ䎞éßU\ö;Àúñîü烣£ïë4Sö^xzTaâdqÕ€ù’{’:{§}UsØïá?^=ßÜðtt}ýfWúU燧!ڨ阇…Ùäl–Ìþ²˜FÏöê¦åêûÌsG¥DÉæ«šf!в²¬T]ÙKˆÏTÄtéuJ6t(£ó¥KêYÓèQÿ"ãZkù¦.d†-Ø—«Ö¼•Ÿ3#fctC~ò’Òªì´ø…Ué9 )l¤“sj’-w¹N’Mí*â-rˆà!û¯G±žöcd{a ¯ô‹ó?RÉŠ–êÎaqä¥`›Á­3 Ý ÉÅAð‰èÍ£ªêíW‘M¶›T€»­Ø¥§gÞ…|ýóà »ÖH§ÁÑ_„ÝèøøjŽe…ØãqžAÌS¹†ëQÖÈ2  M4ÅÌÅ£ÀÛõz×’³ædlÌnˆc¯ÞRZU]–ߪ½'!Lëe$››T‘k¸fr$›ÚUÄZåÀüikn˜¹­ß X¦Ñ:•QpôÚFf{ù¢nhåF^4Ï­6ѦT¸?6Ó*L­È>akm6©w[±KNϽ ùûç†w¬‘Oƒ¢¿ »ÑñðÕ42Âìq¸Ï!¥Šw0Ýj:ÙTi¯æ˜¹’´xb^¯ZòV|Ì™Ñ uûÊKJ«²Ð;âW¤ä)l¤“sj’-w ÎS¤“{J¸‹\¢8xÒ#ÿKh&ˆ,ãÙÛ=gð`vžö {ŠùÁü"¥¹R’®Qß–bèGùu)*á%ùf1ü*ᡸb'`Ç:šè¿g½9+ å9wˆ `‘ŠQÐz‘Z«“¨ÊÛŠmW£P¶äêI„ÿùâä}oã+ëpÕ´0®^„Ò#ÿKh&ˆ,ãÙÛ=gð`vžö {ŠùÁü" „}Ê”•p’Žü³þ]JJ¸IG~Yˆoò‹¼_ÌÜžN÷|7Žu5ÝfLa —PÒ UóB-¼4˻єÅ/@I7HÌóÙ©I¼Fgžâ㑇ñ=¡G„O ìëÕmwî¼a.$syÒÓ(Úpª]I•d’T$ä†'”ªr\D=€ÇÓ,‘ÓåY^a}Þw÷—wkŽ«§Ig:'À8ËÆ–}¬%š&`^¡œ ¹˜€ÇÓ,‘ÓåY^a}Þw÷—wkŽ«§Ig:'À8ËÆƒía,Ñ3¨gÃnfÅ9®%å!°­¢h"7iô+Þ¸VÊ?ƒ;ÌŸqZ£uâÔ5Þ!¤Á: ¤Äd–}s4ÐâÓ¥ÆûYóÌ\­§ÕmbŸÓ¿3"%ŸÁs—¨K—w—¨q&Qˆ'¹}ú’bßÄþx¥;+EòøŽîÆì¹Ëâ?6¨:âJû7Áý©U=¸Ø~ìA gxKÒN@^¤ØWñ¿®N^ÕÑþ‘¶{-óø"qÇ'yú’a?Ç>x¹5Vþ2¾· »Gó åèAÄ™F µ³Uüéåj;Á‚åÔûʲö‹Ò ýË1ˆ³tLY@7€'Õ4ÐâÒm!%©HÔë‰S- µ)ŸÜLÛôÝ2ÉÐFk•æ=ùqywv¸‹zs¢\CŒüIFÂY.&éÞÁpœ‰€X ÜÎÉ0Fkše÷Ýùqwyx¸ëzR®\G„üH>î*Íq ‡±œ7"$CrB…_ÐO'hz‰Ø0/VLMû=éEm+N]â”fSt´½RÒ·MIÐ2±Ä¸ñ­´èUüöåeñ;½‚ùÔäÍs‹ÒÅó1H¯tD i˜7@e×$ZI¥¤õ8N%,¸ƒÔâ?pÊLã(B@ -nÇ!K8†,§mNªîùë3.ôæ\n`õ”™a‰©†tOIÉ6¬ÚyXŠTî‰ š…b­v™îƒ?1 ßeqí™÷$؇Þl~qŠï¥,W˜¾‡„9¥*Í®†²˜%Éô;}çmÑß ¹T6ö&!Ûtwè.PÓš=ínãx7a¶K…cÌT¶æx¥"¨ûêÄ·7tuU\‚RD©Hm„Ï(€•)¶›Smªë£tD¬d昹­|Oa}ÔÞ¦¢þ0Úr;sÂ{Ї¥UÙiU§JM}$žªí.>cSu)$õ°¸DÇ?0AöykpL#c/}ŸgOXS;Ìy³2š1GWΉ„£2˜M»W ¦‚ÝijpPG¸o²â#T¢peCNhö?µ¸f7à݆Ù,V1Rۙ┊£ï«ÜÝÐQÔ Ur HE3©Hm„Ï(•Jm¦ÔÛjºèÝÜÔZÛO(˜V'†,§:uB˜»†Œõ™NcŠf! º}åWf¨5U.©¥Ù6‰¥%Jƒ>îôæÉ2¤-pjÇ”qGïó¦kxCÞÑ=UQpëÆžþg(8 K"‰¯eÖ™PI5BŽbm)R¡gÄ-¹9£ØJÉÁ¼‘åa[3+±×«–­>ⱺ*(j#Tæ‚>­HZïAÌUÊmÇ1TÏp†·5¶ÓÊ&‰á‹)ÎP¦.á£=fS˜â™ˆCnŸyUÙª @ÕKªivM¢iIR Ï»€½9²L© \£qåVý÷L²G´šåy…Ï~\^]Ý®"Þ…Eœè—ã?gaÜ%’â`e§{Âr&4ñµ¸¦.dxDðÞÀ:µßºñŒÍÙÕá çHf{“¦Òu×.¤ºÉ¤&wòœ†8–P˜AÜg¿2œ„ì8l¦.k€aŽQ;êvÑq ì‰Û°W„*ÓwÉÀÆYY–f¢2®ž©&¤!N¦õ7qžùµ´)ôâ-«Œ÷Ìy$(Uýòv‡¡ˆƒõdÄß³ÞôVÒ´åÞ ‰Fe1GAëLµKJÝ5'Aбďñ­”™ÆPµrØË…›”Kîמ ±ÏV»Œ¼”œ™u ÂγP=+o .‘we§jh:…DÑh5*©FÉ2ZoïÎD=´ú­¬SúwædK3ø.rõcòîòõ$Ê1÷/¿RL[øŸÏ§ceh¾_ÝØÝ—9|GæÂu\ICßfø?µ* ‡·!ûÂýˆ$ ï©`ñúGÈÑBÌ_Î×'/jèŽÈÛ=–ùü•8ㄼ€ýI0ŸãŸ<\š«_[†Ý£ù…rô âL£ã¯ó ÿ”ßúÔÿ¦ý;üǤùKÜt=ýé§Wï¿öýÚ|sÔv¿Ìí{´ç®zŽ”°½îHéîõUÏc¼¯ïÀîx::>þ³N{ö^xz]F!ávE;©&üsç‹‘µ¿Œ¯­ÁûGó åèAkiÖdŽžQ6_ ;á;—Sï5Ìñí#rÌS«Þ‚bÈÂ#º!>¹¦†ê6–£<ʦ«S.,Ï2ˆÓˆq>ž.„\  ãž­wù 7Œ91t´wÊÐ1IIVføë*KÔ ”‰O(Ö³ËyŒIJªn8yo?LZkù¦.d†-Ø—«Ö¼•Ÿ3#fctC~ò’Òªì´ø…Ué9 e$››T‘k¸S¤“{J¸‹\¢8~ëÑìA罘ÙØB«ý"üÏÔ²b¥º³˜\@9)X&ðkLÃA·GBrqP|"Eú3h꺻UÂ$C”]âþfäìòw»á¼s©®ë0zcLº†•¯š©má¦]ÞŒ¦)zIºFg˜¾ÍJMâ3<÷Œ8 ‹ùí²<"xog^«k¿uãÑq#˜ Φ™@¦Ó…RêL«$’¡'$18”¥Pƒ’â&R‚€@@@@@@@@@@@šâ^RÊÚ&‚#vŸB½ë…l£ø3¼Ái÷ª1×^,9CQÝâL šLFIh××1ÓM-:\oµŸ<ÅÊÚ}VÖ)ý;ó2"Yü9z„±ùwyz‡e€€€€€€€€€€€€{—ß©&-üOçŠS±²´_/ˆîìnËœ¾#óa:ƒ®$¡ï³|Ú•PCÛý‡á~ÄwˆÔ°xý"äêQ…ÿùÚäåí]Ïà9g²ß?€s'p€€w©&üsç‹“Uoã+ëpÛ´0®^„I”bHE­Øä"ÉgÅ”í³©Õ]Ãÿ=fcÅÞœËÌ£“,150Ήé9&Õ›O+Jƒ=Ñ# á³P¬U®Ó=Ðgæ&a«Ùû$†a÷DU‡Š¡ŒVQ`jÂâW ×w±– R±{âit‚B”UUË5dz—‡x¢«/qJQuU^â’Œ¿¡hFxZ:ëç«“’ºé d·ÇZ ùÕ'´_Ä6üèàÕ/UP•¨É½^ÿ” ÖU%j2kCÔøððq´èUüöåeñ;½‚ùÔäÍs‹ÒÅó1H¯tD i˜7@e×$SkI4´ž§-8”²âSˆýÄ?+;+Ûü‚ Èv£gñ…ñXlÎþìž™¬·7t^p©§I¥©_ÔÌNþ…èê0¥3¿XŽá ÉžÉ.˜¹lNð°½€z»e—´m9ۯﰋ7@âRÈ¢¼:ôà—¨}F›Iw÷@½UJ”› ˈõÊ:?ŸÑ´\×Äü‘1ÏVº/Ú6ø„®‚…Ý!€¡"”¡ u#PêP›Rî_ÚÛÉm6!ì¿´8£û2FÜšìâ'ŽqÏVº/ßùa ] %\^`†„ŠR“CuOÄ™PòPî"S—‰º„¶ö*— îâãkqL\Èð‰á½€u;k¿u㛳«Â ÎÌ÷&)M¤ë®]H,šBa'qŸ(ùÈK(L î3ß™GÎC)3Œ @@@@@@@@@@@jå±— 7(—ݯ<cž­wy)92ê…f zVÞ]"îËNÔÐu 6‰¢ÐjUR’d´ßßœˆ{iõ[X§ôïÌÈ–gð\åê.ÇåÝåêI”b î_~¤˜·ñ?ž)NÆÊÑ|¾#»±».røÍ„긒‡¾ÍðjUAnCö…ûHÞ#RÁã¶,^²G¿"XN&µæ çSCEëH\_7ƒº @Æ™XpxµLu«t¬KZœŒUî<œ43©ÏˆŠîkCþ{Úw&…Tzyù¶kšð³ÝWÌ)0œõ,t4ªc  dÆZ²mÉ>;‹ê´íÊál™^Á½¢~”mýêdé¯{Þƒ´j=ï"ù̯`ÞÑ?J6þõš÷½èhÔ{ÞEò™^Á½¢~”mýê5ï{ÐѨ÷¼‹ä2½ƒ{Dý(ÛûÔ:kÞ÷ =£QïyÈSmúĬÌì‘í÷/Í2ûžóÎÛUÞ^."®f”«Ÿá/9Š—Y"èžâ§«¨yÂnøžâ/2½ƒ{Dý(ÛûÔOM{Þô öG½ä_ y•ìÚ'éFßÞ¡Ó^÷½í{Ⱦ@ó+Ø7´OÒ¿½C¦½ïzÚ5÷‘|…6ÀlJÁ­2É1¿rü¯0¾ï<íµeÝÚãªéÖYΉð2ñ£Ÿ©y¥š.˜î ꊺ†\6ï˜î!3òh²GL"Öð†,ƒhžª¨¸uíK=üÎP7:u¢RÈ¢ckÆ™u¥X骸/FëÞR¡k‚ãþÀy3Á0‹\OÂxS%í÷è¬å!wH°L31ŠZª¨Z­IçÈ ÖU8«yò ^æ°?ç½§rhØøUG§Ÿ›f¹¯ =Õ|“ ÏRÁ!7CJ¦:¦Œe«&Ü“á5c¸¾«NÜ®À™ì’É¢æ¸bÎ,/mž®ª3¦}§ic˯HS¨Þ\zVޱܦe0J!÷M78¸#Ó)n¥ãMî¹i™Ï1dÖ%`Ñn`è{Ù~G:.ówvÚ»{Q”óå8ejÊܦr%]©yd©#Ðà‚Þ«¨n•ÊOC‚/2½ƒ{Dý(ÛûÔOM{Þô öG½ä_!M‚ìJÁ¢ [ Žåø}˜À÷ævÚlV%H­èVS)q4øéÁº—’„®ígqn]]BK—ö§qn/2½ƒ{Dý(ÛûÔOM{Þô öG½ä_ y•ìÚ'éFßÞ¡Ó^÷½í{Ⱦ@ó+Ø7´OÒ¿½C¦½ïzÚ5÷‘|æW°ohŸ¥z‡M{Þô´j=ï"ùg×&‹$f‹œŽ÷}cMwùƒÓhI—P@|Э©má¦]ÞŒ¦)r¬tÒfkÏÀ]5ïLÍyî(,ÄÏ™^Á½¢~”mýêS¦½ïz {F£Þò/<Êö íô£oïPé¯{Þ€öG½ä_! åäÑd1síÞð² ©’ã/zmIóÈ"³šµ*»4‹½ÒœÁ.uŽ’HÉyø ª½âI/=å™ó+Ø7´OÒ¿½Jt×½ïAOhÔ{ÞEò™^Á½¢~”mýê5ï{ÐѨ÷¼‹ä2½ƒ{Dý(ÛûÔ:kÞ÷ =£QïyÈe{ö‰úQ·÷¨t×½ï@{F£Þò/<Êö íô£oïPé¯{Þ€öG½ä_ y•ìÚ'éFßÞ¡Ó^÷½í{Ⱦ@ó+Ø7´OÒ¿½C¦½ïzÚ5÷‘|æW°ohŸ¥z‡M{Þô´j=ï"ù̯`ÞÑ?J6þõš÷½èhÔ{ÞEò™^Á½¢~”mýê5ï{ÐѨ÷¼‹ä2½ƒ{Dý(ÛûÔ:kÞ÷ =£QïyÈe{ö‰úQ·÷¨t×½ï@{F£Þò/<Êö íô£oïPé¯{Þ€öG½ä_ y•ìÚ'éFßÞ¡Ó^÷½í{ȾBʆÊà+3ä“lC‡+Ì2üW}.YyvØ®sJU›„¸ëÔ=žúÝ%Þs:û.¡Ç’¼C˜ˆà¤Þ:Jû7Áý©U=¸Ø~ìA gxKŽÄ7ÿÊOþ~ë¦ZÅkŸ ËSøÌÿÝè<¯WÚÜÄ6 Z¶ÔɆ¸pdLÇ¢³ªRn|ó0ÌÆ1õ/\¼iÊ¥&–¢mIÏŒŽ-2≥£>2~‚‚ÛþVÖ¶è{½} ùÏ›¸î?„ûÎ¥<ùLS©»X@>àïpæî(2,óƒá˜¹½…NÚ’]làøfNWs†Â¡ÛÁá``KŒ½×ƒ9òšÎ ³:Õ÷«–·ºiÃ9šŸQ[ÔfR•R¢".¶óãð(!Íqü>þ²˜E®>†9;lÕÛEÄIµÄnÁ^ªÞÇeeXez€Êºº¦-.ªÅ9qèÓmi}Xkvâ=ÑbfÒ»ƒy­­3»wþ‹Ë=;ì2Þú[ù®—½Ö”o=ü8÷Š5Ò::0;çN=à´¯RM¦lú«ó¯d?øÂã<'?銼/ÁÝA¿ÆEݼçöË»@5ù„_ÛÎl»´à.6ý÷3²Gµ²æ¹¥ª;î}\]Þ^.#?¥*2€“9îú#®–¨¦ÅY5ƒÝ箺„S½Œá1ƒÝç®ºŽ”NxæhþpÆÐ‹\1°cMt_³Þœ•Ðrœ»Ä0HÅ(è=It-HUÉÔ]·Ú¯F¡ È£`¬Ï’J›N{ùטU›¼9å——m‹T©æËT¥Xp¡ÆcÚ›jïuì2Î4ý‡B»êŒ$ç~Âgü¢ð«…íÉÙå¼/ž®K¬½¢ôáq|Ò ‹7@@¦™@x]RJP-Dé$´1Mšâ’ñ ´=cW¯ §“´Bð‰á½¢u*Ã_ºñ‡g¿›J /:@F›N4Ë­JJ7H’pa4iRž"AÁñä¶ýG°•’=¢ N´~è°«5Î:ÉÔ°cª\B+ï•"'WBÃfèoQHèaM - Y%´Ú|f|†šu¶ã„–“j¸ÌùTfO昹®'³ˆçb^¯Z3¦Œ°™Ñ E«J«²Ö€W¬ä $“k‰’-7 ÍÔ$“c©¸‹Lâ8Šw#'sù¦.Ž£ç„Iµn¨‹/ËâL³9ªYÞÀ5*»4•ïUMA9ÍVi$¥Pe9W)$”6ES%¬Ox}¦!ÏÖÁíÿ+k[t=Þ¾…|çÍÜwÂ}çRž|¦)Ôݬ pw¸‰Ð7pÙA‘gœ ÇLÞ§mI.¶p|3ñ„*þ{B6ÍaP ó©É’d.kÒÅñÁ©£žZ cLÀsoœeÀ²ÐÈZIM¼½NdüƒâR¦ªÔæOÈÊö߬’6äíÃÄYŽzµá®ð $®†•G6ñÕBE)‡QêB–•Ô:JQd :7›x–²Ë—Չ̀ „´èUÂéåÉeñ;½‚åêûÍs‹ÓýË H¯tDJYD7@'×4ÚÚÔtëIèQê: 8¥R¸ƒÐ¢?pr˜Pá´8¹T0ﲞéOXjyƒ>zwvUˆ"³«ÞJºð¤Ý¦ïYT…9©´Üj´ºfJji7ší#Ó)˜#'‹ùš.Ž „7²Ž¨w/Ëá¼arìA­Yß -¼4–oÓU!)I ²I¥+#“9ÌÉI¥ÉœÉé1ÜJ𫆠ålÄ0Áu2d· ÷§=³,9·Ž"a™ŒaÔzЩZ–Ò­s[Šq–Ö½sõèÂ=¹DÛ4O°_GîL“!h½ \_37Vˆ*4ÔÃ|_[!’5 I4ÚWÙ9ô8”²ÒìœÏï—~ Œ"§õ”Â6Í @-ùCª É2{¢-ÁbÎhÞZ2Ḛ̂ã¾&”÷e¢B]Sj^f©ž@Ci}M-ÌÍS<´ÝÍcØÏ{1äѱñRH¿6ÍK^{«9…Æ¥bro•L5Kã!Y8ä—|v×ÕuÛ“ÂØŠœ¡Å Þ_ž¤˜³ñ?ž)MT_ŒŸ­ÃnÎüÂyúZÛ$*þ²˜F1‰ÜLCª ÁlEéà±g);¦efX!Ï¥=É&†–—T”«3TÝËO¢˜q/©(Vf©»–ŸEÌÈ¡ýh|¢caáe=ÒPÖ /gÏHîʱ Å:Íà¤Ë¯ @ánô•H4im¤¨•iœî™€0ii”¬—iœÎS0bãa–xþ{B1Thö}³°Ü&K æÄh¸‘ε|©0-4×oŽ•R‚)çRJJÛT«yÀECéJ’ãJ•g'¶Zh)ЀÙ%¤EÌ‘<1 à`Jî1í'ÚJÈbtë µ“¸† CœŸb5uN´›T}oOœ‡¹Xó)±gÖå—Àä¿aqå0¡Ãhqr¨aße=Òž°Ôó|ôîì«EgW¼4•uáH#º#MÞ²©Njm7­#ŠSSI¼×i™LÀ9<_ÌÑtu¼!½”uC¹~_ ãÓ—bµjÎù©mᤳxFš© JHU’M)Y™Î`®JM(pŽLæOIŽàûLCžܾýI1oâ¼ö¥ˆ¸\2‘UÓÖº§>— x¢–L© EúNãÞ²§[io³;x™ß–·B-pÄOÉ‹êk¢ýŸmY‰])˼@ŒRŽƒÔ”BZB®K™ø 6†[Uèw?í0GïË[¡¸b'äÅŽu5Ñ~϶¬Ä®ƒ”åÞ ‚F)GAêA i ¹.gàÐËj½çý¦&{£[ÏÞáúàÅôR˜,þ§‘Š`Sþ¯‘ƒº5¼ýî® _E SÈÁOú¾F)¸÷ºßtï2Ÿ¢¯ºt§Ön|CÁîô||uGJ,ÃÅËÀ:[ÃÂÆêÿh-e†=´Ì¿mù)æ™}æÑÒ•ww”×àéœè/ðÓ­ MŽÄ÷“m™Ãz'þ‘3?-n „Y!ˆc“ÔÉ]Ã>Ú³ŠÎc›xà&˜ÆG­(´´µ\§3ðq ¸«ÖîÚb@Ïè&.d‰áŽH˜«%w |CÑY CnœÂQ™L`Ô:Ñ«u+Mªw/íq丛ö_Ú&-e†=´Ì¿mù)æ™}æÑÒ•ww”×àéœè/ðÓ­*Ñ¡©±Øžà¶M¶g èŸúE˺5¼ýî® _E‚ÏêyN?êù;£[ÏÞáúàÅôPÁgõ<Œÿ«äakÀÏèÚ.k‰â~H˜ç«]í|BWA BîÀP‘JPÐ:“BJj]ËûF¦ÞKi±eý¢ã?-n „Y!ˆc“ÔÉ]Ã>Ú³ŠÎc›xà&˜ÆG­´´µ\§3ðq ¸«ÖîÚak“r¶ˆ<è´è7l!Uþžqæ.ÆLT·•óêDJVº:Ó!ÐE4]JœÛ8>9˜Õu:Í*Õqƒ0ãîo?{‡ëƒÑL˜,þ§‘ŒXÿ«äb?~ZÜmµÃ?&,s©®‹ö}µf%t§.ñ 1J:R] i ¹.gà.ÚmW¡Üÿ´Å:QÊaš.d‰íÊvÙêê¯%hÏ]ìyué EûªwVހߦ%1F¬éÍ6¶¨#×#0÷”ÓcK´\Œç€˜µ–öÓ2ý·ä§še÷˜_GJUÝÞS_ƒ¦s ¼gÃN´«F†¦Çb{‚Ù6Ùœ7¢é“0Ƕg˜lG%<¯0»Åz:R²òîª<%R•fá.:õ 顨½ÙŽà¹¢-I&æEܤ2¤’ Ü‹N©Êüµ·L\û‰Ýü˜®^¯»ŒÁ£mY†þä‚E{¢RÈ¢!º>¹ ihÒI72.à) ©$ƒw"Óªb@Ïè&.d‰áŽH˜«%w |CÑY CnœÂQ™L`Ô:Ñ«u+Mªw/íq丛ö_Ú]Ñ­çïpýpbú)ŸŸÔò1—Ÿõ|ŒCGïË[¡¸b'äÅŽu5Ñ~϶¬Ä®ƒ”åÞ ‚F)GAêK¡-!W%ÌüÛC-ªô;Ÿö˜#÷å­ÆÐ‹\1òbÇ:šè¿gÛVbWAÊrïÁ#£ õ „´…\—3ðheµ^‡sþÓÖ²ÃÚf_¶ü”óL¾ó èéJ»»ÊkðtÎtŒøiÖ—hÐÔØìOp»&Û3†ôOý ÀǽÉ;˜ù”ý ýÏÛ¥>½}á:~{¥âᢋñ1s𷉋ÖþÑNî9ÿÜ×ÿÌ?þtoHÿíÿÄ?¥÷ÿâ.6²ÃÚf_¶ü”óL¾ó èéJ»»ÊkðtÎtŒøiÖŠhÐÔØìOpC&Û3†ôOý ²föÌó ˆä§•æx¯GJV^]ÕG„ªR¬Ü%Ç^¤4;»1Ü·£éúE˺5¼ýî® _E‚ÏêyN?êù;£[ÏÞáúàÅôPÁgõ<Œÿ«ä`îo?{‡ëƒÑCŸÔò0`Sþ¯‘Šw*Ž=ˆ9$Ç›ogq—á|øR׊›bºüȼxÕ§NžÏBK±S¦è}–†Ð•áªí7GÁI¼t”=öoƒûRª{p"°ü/Ø‚@Îñ–¡ÜáW mÈn†"v s©¯~ÏzrWCrÓ—x‚ ¥©9ÛIjEŠN¹ü3j¸¦ð–sø o&{pÆÜ†Ö»Ýë²W¬W,ÁéI×W…nX*ù¡8$R‰wiã1œ“5EB‘Q'™ĆZª¥7U'™'Bñ! i^‹y$Úe·zOmò¿::xaY¼6—•ÓW@´ÎZñK·Ôy û³æR.×ÝÔ!vsñ)6É ¿¡nCqЇƒκ–à²ø>ô,›Š+;ìLÑ|cÝî…T‡£KJêžyñˆèaÄ®©1™ç'Ç.£@âäÏgŽ&ZðwÙöĽ^²Ìy±Û(º:ÀWΉ„£2˜M».œ†rLµ©jƒT‘w@ÅTúœT®"Ðâ5ò®…\/hºßbwƒóÕɳÙ{EéÂâøŠÈ³t i”7€eÕ$èS-D–ÒZŽ#ŠJZAhwH™´¯;9[Zd]ü”e~Ž<6Ï^±•_¤¿Ú¯çsÀnç^’J7›(N³9qÏŽèk:t#Yœ¸çÇtkÞ|¿=I1gâq¥b'æÇJ¤mA46¥©äŽK8=7f54§P…)W'88Ù‡ß&{©õ8¨5\E¡Ä¯+8Ž=yÚÛ‚Ì{œg«ßç~p¥NÐÝ)V»ÂJ¶[…WH/%-@dš)P‚A¹twió‘¦ “fíТîÓç>Båk-Qì[dŽ÷CÞÁsÌÞó7qíJ•8¥Å2ž|²¼®>à…2Îh–‰Y™.#C€–I¶Ü5%È7&xªÖí[“²Õïýz­–_]34cdÒ°w J®‚«[Üj¨8%êÓNå™pþEê›e‡²Ì·–|8ùˆnE€ä’¦7ã/B»ØV<»ø3¿ª>ú°1×^,9GPÝàLRõiÄzÄ~¹ ×'£ ´õ¼uÈLÿ“¢*p½¹;;a‡{}óÕÉ{˜3Ý./šW^ð€Ó(îˆË®IJô(5†)´›R^5ž‡§ì@·;Mµ¸s”L+ C69Ô׋¸gÌÙ‰ŸPÌC›xå3\˜ÆGœ’ ²ÒšR”¬ý>r zvVÊ–µg–ãË?9<¿=I1gâåQ ¿ ˜ºÇá‹ `À½Y3¬­žô‡¢²+:Ýæ‘ŒÊe£¼=zu!L´­+SÚe?D Gâ\]F™OÑ’»ÅÃÊ .¶„O ܺŸy-û¯q•ÉyÒ ÒRSi.ÍzÊ’U:PI<ÊAV•R¥²AæS˜¦¹aW §ü˜¸ÞÁrõ}Üf §û— ‘^舔²(ˆn€O®hãZެ’zÈ9N)Uăдý…ÊÙ,ñÃòŒ^û>Ø—«×˜:óc¶QtÜPWΉ„£2˜M».œ†rD´ê—P’5IîÁ,>§*’F«ˆ¦#p¸Ød*áˆáªÊâv ©“ g÷§>CYμ½þA4ߥ]¡¹¹ÑâE<µ%Iq:ñãËthP⤼sëqݦèÐLòõ$ÂŽ|ñrR·ñ•õ¸Shþa\½ ù(®L]`Q;½‚åêûÚÁ¢ôãrE„Wº"%,Š" ëšn©Z.$ô( ·¤ºƒÐ­3ÈÎ]“ÿuöƒÿµ÷Þî ?í]rJVõ®ß_9òÚ=k·Äw[1ûÏer¨…\1·(›†"v s©¯:¿g½9+¡™Y˼AŒRŽƒÔ™é–¤4µ'\†ZGÛ.-åê)Ívxá´>\–‚ï‰ìûhJ²ë÷¦lv|ªl3/4C˯ B—N3ëF“ªn&•Aç»\ÃÉõ5JƒB óÊ5Ì\yLB®‘r¨ž×˜6ŠU:/Nϲó"²ê½lÄ®»Õ=‚(ªuªÛZÉ^¿(ó¥qVØÎJõýò(/Ü p«†ØùDÚ 1hìÓª˲V{Ó©Âb™«_¼¤JcÔedñ4¥¤¦(ÔËISyÌò8ªvP¶²5LòrvdwÅ%|êq×~ôÚFPóI„¼Ñ st—ºO·N®#[cf׸–«•œd¢ï=ÅÀhªÙj4ŸFEßÇÀÆ pÁ3ˈ®BÖ®ÇaO8­Þæäë4±àó²mp¯¢°Q©ˆp‚Ñè}¶¼4é2tûA’¨l®OË|w¤0W&¢ž¥=s˜)=Å'¦Z/åXÅhvlû`~Øžeª¸ÌI´‚®SZ¯Rª)údfº#[£i?x„éÞm;ÈE°µLf{‹>í8ûUå&º#„b(b5°¬K© š³í8ŠÎS©ÞV¨ 30wGÝëK&¶”j$A—ž–£g›[%šæÞÖq®¿0éå{<òŒ Œ^æ÷ØDJÂúêwœTîÊCÒ”ú¦”NÌiQ×¼þb޹³ļ¢È»µ”éã=›”’ë„]p› É]E½Á3í8.úúϽtct–OQëÓ‚]úî¹Äf}âôÕ;h©Jh®2‰í†±Àh9¹U±ÙKµ\ï±,¡Û:¶VÝ^­ñTaŠÁ#)˪IW¨š5ž"sñh¨«RUL‘ïÌ´Ë»€eA| m>-}½Ýýã]8å[RÎK›Ò‰•êu`˜z"2–²NnÑsgìã$ÕuLôí‘Âx†ìú ] Þ5*.O‰—vøà+ý¸?ãh½®Âb~O¸ç³]îm«!+ …j/^cÓß¿rwóÒ9W7s®WÄñì¼/®•b½àÞ,Œ;¢ë˜&š^²ðÏC/´sLuhÉÄvO„™å¡Éq!¿fÊžqóõöø|A;hÚ7‹s"±Ün˜¡¡iLÃJ{5»[ŸvVÔètåLGÍîØï̶îEój3÷ä’ڈͳIF¢+q¶ëRòîWÝç<ˆQ¹žP%–Ä›/m}arõU”÷÷+jY©@²—¤!9é4Ìh6›Q/)ˆÔÔ·´kYv”îKw]º.(-bf7 gÕ·üt/‡—`?ªöòŸÀ¦\Žü^ëü r¿!ÿWFåv'ï=óÜ,–C8öWmñ”Of û“0:«Ù-2²óÄ($`)ô e.´ñh1j66 ¬QßœLuKq{°)A@¶×$ÇtÉ™÷ñŽI^yí#ü;›á½x¢º½Yéïö[‰_q ÉQ¬Ñ›s©cý›g¯­“Ùþ«´îÔk¢ë\gúxóÝ÷‹m ¾]ªAn—ÃṈ8q×]hÙËõE0wá@E«&¼Fîªt’?ìÒÈÜUJºÄ¨ûÍ/‰.ÏôÛ§~£“ö¦™ÊŠ%S2]lº¼3#Ôõ|‚ê'…µ•/e‹!lª'=9{f8Ëq²Z³p‚$WB³7¸Îaªz5´M· (Vîñ¦¯r²´•JíÍQD[–Yžg'ÃAm·¾ûÛ̯ÎÜ_š}“5®‹®—»×£:§ª>§;ã(‰ïù@ål.§FÅë]}»¬‰Ÿî»¿MÂÀ­Ó ùªAéµ¾}}ÆÀ,ö%>tôw¿'m¨év|#¸`:ŠŸbáa}ß½q{ü5×/1Cj‰v^à fæ/>»ÿò¼ôŸ?%œØ€•ee0—{‡Õ3–2ƒ-sõÄÑt½¥R…«îú—'Þê垥žZ‹uˆµ»¸¬Å•©Ó‰m_šá[1.“O¸ Ó^ANdDÙg˜åm¦ÜS•ŠJá%‡%éî1ΉËAŸü¸?çØ)ÒÿÝýpÿãŸ^øÐ€œ®Ç7(Ç ¶Vl©´øŒSг-ËäÌj9ñµ€×§Fr«H$¾Q‘ðá—úê—Ù.šŽäå Òî¶}]ѧ~£BÌ\1+îaÍ ªr©¼ÊüõV͇šÃ^ôD jŒÒáNš U”-H)L–ìà?iUÓSÔ« ü%œ]Õ5NEÅÃŽcæÅPÖÛ¼Ýn8¯Ïžk#|`zÙÌÑ̘ièÌ»þéuH§J/2J³Ü~ ÛU=¾×S;Óqq+s,õÏ/r·cî1‚Ú º^8,,1˜˜o.Ê+ß! HóQ ôA.Ü©³NgOÄ"­N8Ý=b^ê¦érÝ'"êùiÞÉÏÈ_-ýGÙïô—øåM.þ 9úŽú•WýŸí ¼¦óSæ{YçÏÜ|ÏbSá§OG{òqM¶#¤MÙðä<¯H©ö.SÞ¸½þë—˜„œ9݇Â>€vªçÿJá°ó^>0ª©{ÔøÑhȨ«:ïãu]_GÚOýþÛý7OWÊ>#AÌÈó\v’Êç{m3k^YvÙpVlE&ÃH HCÇLúÒ©#tœ$œž]Áï8Ý”ŠyiN&StOyLÌù‚Æ!g› Ž;†_¾jÚL¾ñÓ*«É˜çt£ T§hÈ–…žYlW6ã”Õ,»jzýh˜Ð´?ÛÌ)"w+Î~/s¾°Íª)¼UYMME¥ÐC­0­ƒµZWMRÝKdó')?øÞ4¡âRû7Áý©U=¸'Ø~ìA gxÖq°,y½0ªdä>àþņ¨à¤tõ—Ùƒ©‘Ê©é²T9)¼79¼bñ!´–è§©Ùû›"[Ý®?c–¤Æ‚îµß`!:ËÔlzàšvðÑÀ&ã°=ž0F­³ìn‹ï=ŒJ*=3çHðìLï¼Ã‰”ø†¶ÛŽvüOdK!×÷ÃâÍpÌJ)¼[œÕMF†…8ˆê!Ô‹j®•Õrgâ,¶A\¢È@;áhu¹Æð|2À÷ŒNë¼RÜÍ`]Þ’h#1˜„´ñ¦…IQ õ=9‘(ÈÔZÐÀÁ^Ô?H-Fa§€¥Æ"â»=…b%G3™Ý…i,¹»å†¼áÖc€0ÖlƪuËëÄ1 -ä9nÓá†_@ JÖtKÙ"”GYÛ'‘«§:wM£Ü6¶»ˆ5¬ÊÚα©èJTª_9ý¸éO> =²±ËÍ7wë;ÂVá¤är@,ÌäTª½ž¸åÁ-}Ôô©¦i%C-ç¸oÃŒ3?ÜîxÚº«¥YšÂÕ"‰‡SÔR®¥–‘zò"ñEë;S¨·…ƒ=fWúp¿¼L}6‡¨F‡ ‚‚,í߃NÎÙö3 M÷žÆ%Nž™‚s¤xv&š‡)ØŒ\§Ä-´8äØ4"xZ‡_«Üïˆ Ú¢›ÅYšÃSQ@Á©DC€‡Z1¬“z3#ñ]è;U¨ŠyÂÐ;í¬¤sà‚ÜBãÓ¬øL'0Ê•~§“i¼óïo–|he¥c`ê™VYÎzZ‡í“ÊmŸÑ  äøÚ\œ@ò°{?h‰ž*n/•š©oS 8}°O¢‹  UZãúKSô‹ŒŒt[²\Œ¦e;—¸%5¸•Ä«Yð˜€Hò'®f…¦“i¨È¥ç”†!(f!}©s9à\KkEWj³5…ª’‰‡Sh¸¦“Îjï––îSë)„` žÆ“e´ÁqýþcÖ[ˆI ²0éÞTÙÑÛày‹t1cÛBåPúsÙž%}Wksšj¤ÂQÐÇ @C‚dv¢‘¥špeâ†]Y\’ËѬé݃(D6{‚ÅWsç±U2« a”ª=¨ÊuÓ?8YLj«ˆq¾ÐÑwÂÐãs‘âùeï×x¥¹šÀ»¼5$ÐFc1 hãF«+$ž§¦»… óI™hCIK¾O Ð_¶Ç®~Tf 8 Þb—iÖZäy¹Ö·9Ù¨P2­Ug½â€jcÌf "œª½Ž‡Žä×xr",ˆsQœ+Â*ÈÁdÖý´ƒí*íý©äHA®ã¶`t}•YS™Â¥á1LU*/Îox‡ÒSOSC±ÉKx³áÿ28²1wZê q*¸J²öã×ÿ*v:;|o1;Y»²/ ‡ló†¢ûÏcš§OLÁ>ˆðìLï®™ˆÄÊ|CCŽvD„Mcã¸×>i†bg¦ñnsU5 â#¨€pJ5QHêÉ9>bëeÔÊ,¹ àï_üÕþœ/ï:‹¨·F‡ ©Dð´9¿9ß>µE7г5†¦¢ƒRˆ€è Š%:$‘`ͱfGcu•GŒ¯‡¶TÄ|¾ñ²àËnä´â…Ôf ïÍ9uÊR_hÐR}l´Ü5Ó‘k%B£º¡—^gbÌúò»îðX¢æR§¦;Ó˜ðáO60㫜D[ÎBJØTòè=ôónäå¹ÚšoØ,*ª w"cê1˜‡X‰1¼ÒSXÚȳ9žDÚÌØROBP²N È>•ÊÖÈ20p9ë•Õ¢ŸûŠÓÅmoÌ«—¡ ´½€î³ã˜°CwM\÷œ2zM•ùdóõ1‘ÎÙ‰T芋ï&?õâäþü‰ÏÚ¿•W/Rhÿ¾· žØ\kÚœö…š¶’›¶<¥r«É˜wÌ2 ˆûÒF4óêQÛ‚ã$b«m²)J¤ü 2<â—†gÃÛ 8*¼l¸)ðWæ ÂÈë+XP¹Nz©,(Í+Vî1äP@A… >©yH-ôì\ãrÂnvœÁ‰Évó ÊñWÆ*ÁæŒ%#2ñÊz!LÒ‰Jye¨Ë„e¨Y™ÿQMiÊ´æYª9ÆfÌ~´ó›ú9üé{FJG2¸%iÈ20JCðÖ!°?¯—Ä]¢ ´ôaûÉýx¹?Ÿÿbsö¯åUËÔ†š?Æ/­ÃB'‡àvö§=¡f­¤¦í)\ªòfó ‚@">ô‘<ú”D¶à¸ÉªÛlŠR©?C ‘ Cž,rV'UYz¬´Ëª½0™f¤† QÞ㤤ƒ¤¦”keµÎ4ÓP"V­PE¦C~Ö;Þ…l=øåeÅà_ }K eœÈï+ Ó.÷JS t™ºâÕ’Ž$¸pÏ|ê,öHI™çÄP“ 3«A96Gt´H;9§;jþY\½HY¾Ù%«EÞ÷÷'›Ù?™O?C껡VœË Î30ñö£ù@¸Òé†^–mYÝãî{Ábûé¯Þèì¤xÏÄœrqÔU;†‹»;ãpÚiB™EêwwŠŒ1»"UQ ¹â,ÃÚ¾›Å¹ÒâÕI@¡¡JÆÕ í$‡`‹þ’]Ck;”ŒüEJÓ¡­Ž¡Ün3 wÏÝÑUJÊ~ŒÆRª\z“e+øí‘óxk4%G2µ€r Œ4Žzå_õh§ßþâ´ñ[[ó*åèCm/`*“˜4‰Hoìßö¥TöàDŸaø_±ãMÔÖfõmD-F$äíÚ–#VFe:†Í£Ö‘Ïx¹m énˆ×¼oÁ SÛlêâ«Lu‹wî9ëlÛ8Ü-$kg9@ÅY0§XÚQddq =)uÀÑ ;…½Î0Üýb7KýoNrâñ¦g)·Pç»>a©x’…#Œ JŸ·ü‚š0Ôq ìhp›Žj‡[ œËF9~dµ^"…‚u{ Q¦™€nˆNZ§=úÜtœJâ4Ȳâ4·PÚQa¦g¼P±*~ßò t0Ô3\B5ýºÝ.åkÖÕL¤JLL@8€jg«t©Q{¹²H×ÙÁi‘)¢ˆ‘cÄá©¥½ÛºPìµORþ;¦é”Hè´Ý…¹`¶†ÌÐïVåo5Ø«3˜xYéÖÝ‘´N½wwê| eu¥'¬A¤©µ™h '/§¨Â\IÍqh,Vc©„#†‹ ŒÂÞs‰*©Y‰ÒÊUO‡Rfª¤SízHk/k%ˆ JŸ·ü‚š0Ôq ë¦Ðá=‡tC±œåw×+ó%ª|"Á9·H_p5áÕ4ç®üU8Úíº7è4¦¡» LÇxßÐ›Ó ³°¶Cw]÷-_}9SÓ ÙHxqŸ‰41Nú'Wr" qÆÕØ(¥ï6Íq~@G­ Bn=Èç"ùo‘ʸ‘°Œ äæNz5x”u*x}§Zš¥•šþ3k,šs‘õ`‘Ù!Æ“;šK6u²˜O¥ 8õGˆ¥¶eyR¨ÉzþæMYÈè%/6RÑX B‘=ª¥¦â,†%+<Å’ÌbÕ0„pÃaq˜[Îb±%U+1:RJ©ðêDÕR)ö½$1—‰µ’Ä%OÛþAMj ¸…ºŽÊ\jñd?´LLUeê±gQ…¬Âeš³=CHïÊ8¦7hœ5ÙU¦zå3ÃPô>’+VRE¦á¡Ū_˜V\µÊÃ^ÝX¬ÃW!YÎQ€M½9NA¢1ŠE7*Vj=O …\x•‘dD+«[YUʵ²ŸàŠi&”{‚® «·Ë@dRìZâaÛÙV:…r8—IkÖž[l×¥I:tçÇ»CZeGÖÐ)¬Æ'Y DDo&œfnÍÓ`ý²q)jÂpŠ`ju»ÊO8¢WcÙÚ­­JÚ@Ó™)6î¢dàžê‘ÒªMífCž¹FJX•?où4á¨RâñZ¥éÃÐîë'Äóõˆß^¬ôe»)KˆÏęۤR[žôy©âRŽ 1*~ßò hÃPUÄ'áøµK®ˆaÜ-îq†ç빺X'èËzs——3¹H¥º‡=Ùó KÄ”)`WÎÖÎB‰Œ²@!M$Ò" «ˆUm&<`†Ý±JÚÚ Ài0S©@fNVÒ®*Bƒín/Ø5¶ÍgÜ9˜C‘ú"«‘ƒëgø4ñ’x‚ËA¾Ã¶ÙÌtÕ›G¬1#žñrÚ Òݯxß‚§¶ÙÕÅV˜"ëïÜa[fÙÆái#[9Ê*É€ø…:ÆÒ‹# ›ˆX!øµK®ˆaÜ-îq†ç빺X'èËzs——39H¥º‡=Ùó KÄ”)`@bTý¿äц «ˆ_{¡ÂoNþŒ œùô³ÓÉj‹éh^mYi,Š.œe>"œþ€ú:¬®Ôî(#ó1§¤6¬ÜLŸˆ¨ÄñlBü^ø|6b[WÓx¶ì U%†…Ð8&Æ©‰¤’PD·o;”yŠóú%uº]Ë×­ª™H”˜*˜€qÔ][¥J‹ÝÈ„$}‘Ì™š(‰Ò»)¶ „–bÚX~h··œôqcXZ®°Ýô°˜ZYï Ñž¡—ÒIuXª“BÊgä8ª­«öb+Pä(¦r#™T„xfñC±¹ú½©ÎÔ±›¶;Ó-»‘@|ÚŒÄ|S’s–²3””õ”Êq¶É/*åqˆžD4Ù«.*ÕMtœ¼ïÿ­ÁÆéA‘RÔøT¬«zH¡À.MJÒPFÔà>±¯¿ºßD·Ksˆ:œáƱ’ƒÝ¯Ø‰hó‹Û•7‚Ï„º8”Ú’uÕP §®i¨ªTÚ kÎyD#Î=UP¶)Õ‡‡pJ›Šwér>a×{;2×Ûùc÷hÜî[‰³áEŸ}2tºJè6¼ªz€PKÆW.dŠ;¦DÔUº²m‚FÜœä•m¹ø—í"rr2=ã˜]é+—+÷ç6£qr¬Ká¦5F º¥ÃPF¶â–´åN^ U{ÌS>ÔËÛÖË;†…–þ">Ø\âÎæR½¡Ó²-JêÃ2_â³ ˜ mð* 5×¥Tº‘5j3IÊÓݾC¶UbpÒKÅNó‹mÖ2ß>P##ˆR es¿^ŽÕ7L >Î,©pÎìÀVgÆ~_‚‹u-’T¢Ðôøým ujÜi§T™ÄÓcé<ÄÌ+ @P–ÃÑ”o íÆÕbp¬¸õÌYfh«>ò±ÛÊÊ:i£IÌSʼýMeK”ôÎaáÄœ®¸§~‘Îd{$©¶YK®&ë§|Dœ‹,CelÐ<#l.ö·®nõ†²\½ép*®ñYÍÄ£2šéð˜Jhº]ºûîÒ­¾ª\¾K#ìéœz@—hZi/”šmƒñ¶/C¯¾â¹»+hsÌßœX\]Åw=È:Ÿ\Ñ{Gn×3Òð×aÛ‘e1;³žñzj*w0nOjéÌ÷h#,A²Ï×r‰bžÏ3·¬/…¿iÍ—©Ì1-!wIºª‚Òª—TÑûJ³i&¹¶Y¨µ.NV¤âÒ#߬ò€ªdÒ:Ü[ri真”xÆv›6s<•ÁÛHÚÓ‰]˜aè¥htœ†a¦ŸkãOlÓ‹Sd¢L™÷ÀùåvÐR+hßÃID·jYýwŠœ<¡™kéú±û´N‡5ÄÙð¢Ï¾™z]%t^:z€Q yEræH£ºduj*ÝQ6Á# nNsu¶çàr_´ŒDÎöfÜò½žr¾ï»Û +ðw2/Ju,¬Á>*ºÀtÖDfp•y@)êÝI8Á£mÆsm×gàP_¼ ÚãÖít]µYÎDðmô»vpeÔÐ%«p\ZËŒú’‘  Ñ}á[&©×—)©½)Ô¬f3óv‚êÉfŽ·“¢ËÛ^÷·k³Ë0×KJºa‘ê ‡T§Öé¶M’’˜3ïà-³ß­:Å´ó×%•¤S%ݤy‰›ft¹ æqu¹á ¸WzEí˜dä$2ÎhÂ?l%Þí˜#j!ƒê¦8ü]‰Týi“®½tj›Hµ˜ÏÏ/·Æ¾þë|A7KsˆôýNçßÝoˆ"-Î "GkîS·Ä+Óâ-j8úû¯ýœˆtÇx‰µÑ[_€3¶¿ú¹JµÒÞ Àh®w5·¬"µ—† Ò`·ÄŠnçjK1dšQ¡ 7dçªÓMqL¦2 öþv'Q”ó‡ Ëö?ˆœb·m‡6³ª$Wrcô‹€áÃ[ÄØ[ qš¼¿‘E¸•jBAm“Ä ¨Lª4¼0}n\@Ÿç£•³/ëò/˜]Í–¤+L9 Bç•jëîT‡`p¨Gˆ¦g誛Í'%È€JhòUÆ?'!zËù‚'êÝ-EÉ-ž„ cïî·Ä#¦¹ÄMˆà cïî·ÄšçXŽYàGƒhž7€yUÌ”'/sÜE-õ,îP”¥)9"98õ´~gþ)¹7cp2øÌÿÅ&áÝÃiÚÇ„¯œ®©uJRH3µ®á´('`˜Eù<Èèd¾1§­áZýp‡ÚŠg¨©C • T´nTª/Êù8Z’ÂÈâ˜^)Ÿ÷©Ìöí?Ôü‡CØ®ñúýÇ¡y4Ú°„ÁÁ§þ´ÍûÔR¾ÑÒ$àÏ×䟳õ )/‡Ìf‹Wö¿ý­›÷©âZ>>¿!oðíOÔ|ÅϹ-«ÿ ìW¢¿»¹“7ò|w~s‡ŠjÿQö¿«Ž~‘7ø§ðnûŸr ǵt럖ƒN±GTçRë‰`,ñ‘’¬ ¼ÑBœ5F,Ô‡™êz\%§¢>ÕÑms2-5/€uGØêÓpݦ]ŠWk"95VQݨ§Åî{B³+I`ŒãÇ5òæ‹Ë±Ä( úU±ðB`- rukýiÒÙÛišÇ ÖÎLµÔµ˜Ü9»WìÚ©é:©=] Œ÷üB¥4fU­kÁR ™…&'A$Fg-ýÍ]¿ÜúHÜ:1ƒ¹£ë·ûŸI F1g‡¡ÆµNu.¸•Åž22UWŠ8jŒ&Y©g¨iép–œSB‰6¸RE¦ą́Øî›†í3–)]¬¦cMO(îÔ .˜©ká¹¢ &lÈò»Ìf­V&ì²W¼A™)ì§-P#Q¨Íy‘êì$iM9ؤM§¬N¹ç=ú ×céÝ:Þ,n«·K®÷ê¿ Ý^’GçGxfak9p %Ò³JÉDY…ãÞïÙóvm­}uĪ5ƒË)2ËÄRûš>»¹ô“& Ž×F1=–®…ÜêÖ;¡u_ó×€7·§ð–ì¸qø’ä¡(2Ò|Ç)š#f¡×Œûq—(8×pÔ,ÊÂ¥UëÍÍ^ͼª d÷Çjæè¯½)©ç'GÉ8•;!§Ý5e]²÷£³œåÚï–k–Ú‹RìŸ ×Æ{ô{-l¤dögrÀøxós˜Ã9W·$0«ï“s¡%À+7e>ˆÌ¢ÇÙºªÆÐ¥9÷‰˜\S¯V`ä²óU¡ 8GQZ¦xwë®a›¹#7ªC¯×D/s C˜œªƪ6!P•w|Dæ©`‰÷€eÑ j{잦q¥½...UºÁåÕº ,¼E‘´É%iOU3û^è{³aÛSxª²ššŠ J" ‡Z :—RKAÉ“AÁVEë—‚ÕF‘ƒ®Ie$”Pb¦)öÕg ±3¯¨Q߆keôÃ=èšò£¥Þ9€@S€œ£²qeƵõÓ¼X2<Ç=Ž¬Ô›«©<¢’dpcFG˜ô"šAÀ{"Ú’To÷’Â’@I,Ö? 4ÇVŒî…Xü3eí<>±YŽdåeNÒ¨&™ë,ôд.ø-{2ÛM”ä’Ü,ଫ %by_¯7E]Í5{ã§ £Š—NÊœGDØiž9žE&Q–n¢ ŒÈÒÆ´úçæ‚pºcÜ}¬p5§×?4:cÜ}€ŽÝر¥±¸ŒøŠ*žõ2M:;)WÕ&šûnœàB3îàúPÒ q0<1­>¹ù œþ˜÷@ìps…ÉCK\± >!œò¨µœ³‘€ÁÐ%´ßG´ÖÑÞJ…øŸ(Üf"HÇæ%±ÂK [Gx­ +XÇu3Huª)ú„~Ûµ>«ETUL¥âßóã«iÊå4G1ò ÞL𫉂Ê_V¬û`ÎÜ—Ž›ÓªÄß.X 9ÒŒËHˆ¢3”´œÓ¤‚„Èm:R”b‘S¶á=#iF±þé ŒPß_4å¸ûwýÇû¤‹ŒF:ø†/'û”m®EK#Ü­’X÷–VÀ|-DX*ù±)LzŒ¬K»Âs±˜kkqg¨¨ÇvëÊ6 Šš¡¸’)Á=(¾gÀ°Šˆ.ñ‰Fe1GAëH“S®$àÌDy§-ÇÛ¿èÖ?Ý$\b¸ëâ0<¦í¼Û¦f_ÿ cýÒMÂSRáÐå1 ¸›ì¥ËjÎF ÷vé½:Ü5Êåj0ÌÕ º!)ËYM”¦Eê•#‚.`Xô~(aT2:ʤ>áDbE3X®’&$a"œ‡U05år9Ý»f$ê4§\ÍW×LBB#Öžô²(-MFz‹/fÌBâPøs¸ñ,Kê»[‰RZ©0”t1€CPà™\­e¥¬ù†¢Å•É,†„oDІh˜é@jx*–°4LÀq”d4×dÒ†@8B}IÃÆGZ;¡9#Ù«² $ê7Jâz˜@— òùQ§Lá™ò6`b*Œ™…i* ù–|w š¶Qÿ™O?Cp¦ tr£•a倧»ÏxHú@Hè[#Š,’q•š'Ä6¯–)³Ò[úLa&à€d–œxŠyÊÊzʕɣ"Ф‡E—h¢}Ak‘E’GnB34ÄøfŶ`šMs3O¸i%¯ …=e2¤‘$z”q—J ýG='£Ñ= ÊÒ°çWx %Yg)è2ññE¸E|”Àã¥l‹Û…S9*0ð €uxÓÀ)•ºá’ F„¨ˆ…à–%hÇTu¥p̤•CŠQ¤þmö;ÇŸËæ+Š)Ï×cs‰ìµØóSt½Tª-@2˜ƒP Ϩ§S 4+RJ‰E$5FsD¤U`K Ÿ"¯TÌ5ø×ÍV§íú{œ¿ÜC¯°¿<Ž~†?FYT­h^U*KQÍÀ&Ÿ)¥¥v­Òe’•…ç¼zå­(MÊÐmâY˜ôc%k‹Ñj˜„çÇttá0NÏO¥ êÑ&磒e®½C’ÐÍ>aKw7÷>c`Í­,n6:Ê*¼žè äotµj¨6]/F]·_9è®ò>!$Âyw”Äzµ U6¯w®i-gh¼½ʪxpáé4SÒ5´]¤z¨®S·ÝºmÉ:DDn‰Þ*µ©¤¸”dIˆæ͹¡ê©JåõÓ˜RƒâC`múúºöÙyÉIÎP\ ÷*©ZCF¤–b<9ŽúR U€#Á BŠH~tò×0›”ÜLc ǽ~j©>½ö{ý=¾î1ã¶âI5«"îô!}°eê–r'µ4Ö*Êk “n8‚z$ŸPemDl™}jÉP‘/;ÜoX©•‚$ˆv}Ö²»ç–ëîdAód1¦`)táTú’#<Çè—'žÊž°ªÈnʯ]niVÏtÒ7ÇXpÞ^cLÀ°xŒ¼Z#J7‹jA” .¹d¾,:)¾ƒ#8¿%‰ÝTášòöÅØ+Û¥†ÜVE•«)CQNz$* )å6}Ud8m1Ý»5O"+1eÒ+³Y])7RÊ> r̉’/­B6Ê~¯˜?œÿ ÈÝŸù„óôQ¨èÐàžÜg Æ—L2ô°Øh¢Ì†ïsÞ ßM~÷@we ãÆ¯r‰ÇRæ.Ó|nM(SH¹Q¯¨¨Ã§djªv¢bbªímg¿­P”t0K!8õ éñ¦·UC&…•¦|÷„!dÓ—'2!? CÎÆ↫6´<Ö'%X&<¤Ê¯&Qï®JÄã¯dƒY"yJI•Cpç3éž¡¨AËJ•x AÿQ¶yý%þ9Rì~eßû}ü$sõƒéæÜâw9Úšo׸UT.ï Qõ˜ÌBzˆø“Z[JTk"Ìõäk3"IèB¦`œÛ¤/¸ˆðêša]+˜ŠqµÄÆéÐ=/"ÂJ“1Þ#Þƒ±…øî|@æÌ6²^Ô·f›Ê‹O¥HáÃZ¼@ŒM2”“C긺=MÒ#%6P¸ßÛ¸e×ßÐ| ¾•úY㙬_s= ͬ-&™DÅ×…S⾊âú®®äðˆó!ld'4&ÄhBñƒ±K‰Cž,‡6‰‰Š¬½V0ÌøZÌ&Y© 3Ô4ŽðŒ©ÓŠ1Úum*Ó=r™à*‡J-YIƒB8‰³Ì+ Zåa¯î¼¼ÃW!YÎQ€M½9NA¢]–påJ9Qê|xd*ã—dY ËcAT*Jrâ3")QŠND9ª.mŒBÐØ'¬VS¬¥9ö'ƒ«pœtÖ_Y¨ÈÏ!™ÅGÐðXplrpu¥Çð\¦W&ìá ×ÙÚ ë6%7PÜVý<ÆuÌ‘h˜DFcÅ=‚!„!­IÚÒù—Ü.çÙ)¹WHoT°µj"Zsë©ñº$² ƒ‚˜œï8½•†!ˆ6}ÚzïÞxC¯¹‘KÍ“SLÀÓ…SêOŸT:ë(5²›”[¦'™å ÔÒµ8¨.:‹õ¹7ÀNX”­–?â“­Ý\\ 8¾fYY…a¿‡bWbmm¨†ìª(Qoêœë¸‹(Ó¼2½ªrUÔêˆy~â¢Xú*/Iÿ0¯è§pöÍ^õyÈa$‘Œ,¢£K™è?Ä«ú(µíj•ê¯"ù ’cA1 ¾]‘ögS| Ÿ>VÕ6ŒÌÊ/e3t@¥‘@Ç.Ñ@ªÔü6´Ü~08õé}«ª¢ÄInñÔF©$;ÄŒ nH"/9z8µ‹¯7f)JTßE.¯$’˜×pÛJÅCrO»|é‘~ÚÈèV¥lÊ– ¦5wj Ñ$ÄeÛ¨ëÆiî[A$ ƒ¦sO3ɉÈï{µ3]±‚¤A:‚þ0 ¯ØT·yš¥ÞÙ¨TaåÇêFwö2UG~ŒÂÑêÂÒîm;#Zº’S,Àx€WºœE$ÒpcÎ)&“µZr”ÆJ©ˆ ‹,±ÆÇëï1ºa Ô Z˜½G Rz*=‹$K{öþHÄ+ Ì‹ù6ÂÐÛ;ǫ󱪹*Ã,54ˆu•hϤ ÎØ•›7l>ûtÉ”7l*UÖ¸Žr82ƒ(ß:utk¥B檜¸Gx#nM´0Ò¨õ*×Nåffü€*ÐŒ¥PqCìÝfÍÛŒˆM«Oi2£‰3Œò#’)ËM ôk¤]§™‡Çƒî-ûdþƻ駣ö='_˜Ãyƒ¸´í“û驪±é8züÁyƒ¸¼í“û驪±é8züÁyŠm¨XÓs€ïgrËö!”´Ó©KÖqÔG©9µ{Ò5³û&béÌ*NQ)©0HSΙ@‘„>¸‚PÃS }Ø‚ÂΔfb^T“Ztö»Ë£}jaJ Ú²8õå>ÎÔ̯ľX¦9”·ô”ÀMñ(‰d'žœx l¬£MJ`ò2ÐÅÙxÚ9-ï•‹éÛ¹!7»¡§Ä¿v¶ƒ©YGCjÔ˜6CJiN!ež_¢­d²I§¼$ž^’?½ò§la0¶äß mCC÷üÒíîÿO`pu^xÂòº}ê#±³˜Ä%}Ýñߨ³[}Ÿdv^ôzyžvRæëÏ­Åa¦´…ð5 uNŸSêNvÌÚµ)GK¾g«dNG¿Ìi¬¥±“V ½÷NþŸ@d)ë pÓ¨ õ©@ÀͰÖ;?ˆ¨q?œò{kt»¿¾ºf "’’€£ªo¤K.uœùæ<ÆÜwhRýý:ú›Ê–…¿3“ý‡›+lÝQܦváØ”ÞT×|´Ø™ªûE𒑍<|S¡³ ¥V¤š,³ô1ÐÙíÕ¥««*=ÐYs-g/ã ëÆð×tÚ¾ÌØ“¢‡–ùóÏ_/§Ò|øœ»§ ”õžêq׳±ª”㜹åã” i©±¢Ju q÷S°1…)F€;ÁÚË)MìýðV)åvÿm<þñX§Ÿ°YZÛ˜ùe5JóIÿdc]¢ c¶Bùl"#h¯wþS]_â˜âý?ÿÙxÿ¸Åc^Ù¦aÙƒ!áªɘÌ2¡û2êáz­¸x.¦ïv¬4Œ3èšG¨%î'E]N¶¾ƒÅÖ}©¶ ° PZîºK¼¤ ÿp¾{»ÛoŒ-Ê®šʲT)€jpL A íPõÔõ-Ô¶N´r“ Páe±á´Gp¼ÿ ɦ“ñHq>Ð峜"îÿq 5¬«-àr Ê7ræÊ™íí?Û0À°¦æ'*vÖuU·´J£T!M'8uÌ`)ÛÙÚÙ¨÷ÿ#ÑìFÉ ©Íçð˃áµK\Jñpí`ª££±—*™ÄŠ÷ƒÃ^h;¡»N¼Sµ*k^­M#nàLÚv’ñ ˆÏ/è³¼úÓ–ƒ³3™æ7¹Fµ»Ú¬XÈÔé͝Áá[/Ì\-*•‰÷CÔkÈ&?±ì¼­™Jâ„÷&î•g©Aç– ^¦-±p‡w¿#ú´ï<‹ÿpŽ—7à§Óø:§ƒý“¥~W¯‹ÿöêiÖí{¼ò>ÑÆ¢ Ù­¸‡‚Ó?†»çi|'­†Àîôhð Y§R“¦ô*bþWN?yÚÏYíÚ âzÂ~î—ÝÂî‰ÿƒô¿¬ ~ àq÷ºÓ•_ì_cUû#þ‹»^ö]®zsW\R*Vô¡ÜÊæ†›ag¾"]ŠËðæ.F -ß>ùê=C½Ã€hž‡ì›Ï›õ¬nÚ„Ûz¤Žé#·"ê”& -wæ Î È)mɱ‰õ©mi<™êÞ×z£:¤º è¶›w7qnþm¶Klœáñ€´X<â¦VÝ•ÏQbr¨•¼IVŸÀó )1Öð(ÄMñƒ$$ªOÞaT¯MÁê}: n>òz½©KMWL¦k [8x‘–™ë¦[ˆp”×këˆg[lAC.§A™ò6–ÌEó5j—J zB =;|Ió³ßaé1ßnµ8ˆ+lTšfHîÈ•:ÁgÃ!߯گ¦ú¦s%‘ønvÇ Zcö·3šó³KŸ¶~ùè˜40‰I€CŽ¨Ï±¿gé¶lVÖŸßn,ú½¢<ÈÌ•qnËÄFÕªuÿºhº¼³Ð÷æPa;AQ4_ŠÙÇf3 E÷<¬”U:zf Î‘áØŸLz¥¶câGžm¥¹Ù GTMáv‰Û‚ÅWsÏ+=tÊ®†R¨8ö ÍKoÎÌÆ–ßh†ü1fÌDãPøs¸ñ,Kê»[‰RZ©0”t1€CPà”rµ–”hZ³æ,ŠwW$²vV‘RC*1kRyV®rª\5⦲ Å0*vEML*z è—²þÔð•¨J4§Oà=E"(’RUD.“ÜÜž_ºhu 7éð雳ö§©Øu&i6ÏBøÈ¡èièÅ€‘^´§¹PñÖ˜g9nvï®CÚˆ}òi­ä0‚Þ.WlTÌß83çbº¯Ø£¨¾™ Î*,Œ%6œi—Z|Òµ:ƒK*µ\b|ŒjaIBˆÖR\4Ëlv@¯Ø ,vúØü+ϸØêÈAm @Êè0,..=ˆ­³¶¡µ}aÉžî®Zï#ÎrðkWNµ[LYüóýÅO`" ]Ÿ¯é'|¶ERŠI>eóéƒk X©QævÈ¡×|¯é [¬ÿ§Ì¾bØ„7ÝÍ0Ó‘Ü©ÿcÛÉ;ÆœÕa/&3 ÒÌ@ òPéM¢‡ŸˆæTSÖ8á©§íO Hã˜Òy¿œgy1µÃPÖH±Ewƒ:ëÙ„ƒ¦K{ÝŸ‰+Jòé) ŽaôÌT4GÒ¿†DQûœ(ñPórªiP;¦ŸoÛu‡‰=ÚˆWƒDFBI,ƒ ‚iU*Òç{Jxç,j÷¤4©eõ¥êñ'†ÚNšß2Ü_"“äÀ ! ¯ZÍ3®RzZ¤2–è‚Y"É3#’ »_ÿXï/æ¿Â*m«üS³Ÿéèçêb²3–‰˜vÎc!²èx6:Þ ›Ø]4+ )”À@tà"–JÍru ~º–§JR|ƒšÝqsÕ¤øL58•r1®ª0”ºw§.®NÃu(R.< |Ú³aT1PL ®»CȦ O~QÞQÌL׼йi.™Õøy€ÝÌ­éŒÄ³Õ9o¼À_w‚Å2_»ÓéÌxp—n8º–ñn»çp±% ivªtõöí@íÖ¨õj|ZRÚ{›Æ<¥rÛ¹* ùFC0䔡yä²’Cr\d‹xµB7 Ô¨?9_nÈõÇi/‡ÃNα6åw‹h2ûŠ % LHÀ%W‰¶ªu2„ÆWw+'IjVDp*/w„3 ÀÏxví&ys|¿ ±Ÿr°]Ó€ÞWP†‚§®i©q×㉶Ùß3! RƒJNg–ƒ~'[GÏÕñcâ6ÙÖÖÚoyj拊 Ã- iÜUK©(Ù=N’i¸‹|‘y ¯ Ó½Jƒ=Ð*¡´Ûpݶ?Ã\Þ'ÁúÙið{½x|©ª› °{?\B¾ó¿QÊ–­õ|ßüßøeO´?0®^‹ÔW“¨ÉBc!H1%¨”„_+Ü/ÕO!UÝÓY”C¬µ4ÑÕ2î-7‹HèMüÄÿv±ŒóœÂC¦¢`‰îiªRòII9# R`n<›T±3ŠÕ£ w·ÿÑ%œîÖ†øj‰`­eD/ƒ,ƒ°³Ô@>Õ<ÎÒ«Sî“ Ÿñ¡‹dA…gv^îp‚¶Ø„·­ê§S4Ìj‘ !À@Qô;0›>±gǘç EÕJãªb#£R “¤’á1˜ëÇŠwPÙ$ …O=GÄÁ.L‹|¸Ï6[†•ùFíêUh'2V€,´ ›C‚W9ÆùFùˆèèö˜{SËmM•„ŒTó§xjU:«0ŠŽå^UKôV³»eWPö¡²¶¢”;ÿ:÷2œˆ9YŸL YÅh®¤ ÒÝ6šû‰éñ&¦¢ƒi±ò³ª;¢@­u:"¾è'žÚ\ˆ‰,ægåû–r$*Z—qæ! Øža9 [<’€€«áPÖE 2Ï_y$Ž‘Àn734GÍ‹®%W­+%‹b¨ ¤›æ¤PG@Ó€¦õH;Û×ypV*Ù •-IÁeYõ§3Ȧ"c=Gsø»îOö…_I#¢;ÃÐ3üE³ÿSÉ_ w>‹¾ähUôèŽðôþ"Ùÿ©ä¯Ïsø»©Ñý¡WÒC¢;ÃÐGø‹gþ§’¾CÏ¢ï¹Ú}$:#¼þ"Ùÿ©ä¯;ŸÅßr´*úHtGxzüE³ÿSÉ_!ìÄÊѵ«?U]´«žŠ L“% pC^’DtÇzõÜ\B*ªÚí-)ɪÒÝå‘ÄÌFZZó4´qúF”ÿ©0Èî™È·YãéZ…`0HÁ9~H{4’uö}JH°Ìuöei6xJúÔu´lÎXngyCñ…š««>ÂÔÔaóÀÄL+µþBh]9¬àËŸñä:ÆÎ!™sþ<„}ªG°£àmO.z_g¹N]Ì, ûšo8”)”‡¥)õM.Ó+M’ZHcM)6Ii"Çl<- rˆxDÂW}ï|°s»öb“¥!#=É >_ˆQL¶¥´IÜ~Am6¥´IœËç!I¿]o \lWî¼~1M «ÕÀbj!!˜ô—\“bdâ”{àjB œR| ËÚ>…yA¾â¦^-—tSp°ùm àE½ê%ço5W¼³¨ÊÉ¢I—.<ÂI¥D“.\y‰;S¶W;æÅ¢X-º!ΛɅÁ=ð†SšMyV,æ@€ nÀºŽô¦RÓš\%Ä ¢4,œˆ/AÈÖŠûVШÌ% ˜e?Àèf³LûB¥&Xd9N´œ<$ýh*î6“2=4µ g¤û@A9´înÈràäu¬«Sfï÷!qξ+¦æåiѧz|8„¼ií”Ö*Ðö‘>yºÄ©`nÃÑ6YÄPî ÷8Ãs÷’¹ºX'èËzs——%ÆoqOf|ÅRå¨Rx‚Óâm°Ž¢,wÌ^×E*ÊN”‚s¦|:Цg²nf똋5‰r¸!‡pW¹ÆŸ¼•ÍÒÁ?FCTç.!/3{ˆr{3æ¹jž"ábû·ËÏ¿£>},ôËÇ3X¢úZ›VZK"K§gÄSEqVWjxDù˜ÑŒ…f´ÉøŠ¢E£Á¥þûl¾k]Mâë²…R4(H4 ©K  " “qR­G-¿LÖôZÐbÒ&–“ìðµŽÌ\ÎNF¢$@ÉuƒZ€Ó(I#QrË! âoicZd_p³¶¸öðâeõ²w Qe¼J¼o¦à¶7ÞÝ"Ý'ÙÀ<@šÚOº“J#ðù ‘Æ‚ÉÉèªÏmN2­YvQÄLÒœ¹ƒõ#ö>oçõ‘Š˜v¿Åp¼Ö þžØžÜ”JÌAD>¡–§kíCSÝÕš±«Æ;ó*¼™D|º„„@}é%J”“$EÒdG&R:N³K$ˆŠ^î‡&!}Wkq-%ªFކ0jÔžaÚúÆ”hZ Ë¸‡Q 2¢¸‹.amÊ ‚Í¡‘YCÎ>t¾_Šhï>˺y”õžêtörêžûÇÕð,õý e©KHꤳ dì ‚:'R©k¡h­5 Þé¨"Ü›u™ŽxP¬†d&Qê÷ÓæËÉ@‘ò°¬Ê@áH(•¸M©y—bà‰$BÅòšL 3‘”‘@@Z†_qŒRËCŒX×›Uw*/Jé œÛÇ(H¥Ôz‘5-R´oÌu×¥FºIe¼&Sº9¡ˆö²7ë-‚9­]Þ»ìj¿Ç’’K@(W¨ž¥•š}îË^Ôä·µÚUrèU’Š#¿)=ÙGŽcjèÑ“PY‘ëÝœs‘Mw¿™ °²byk Ò^òwZ©q©´õn±ÔÁê76©¿þiò#½ ÷@ÿi9õÿÚ¦ÿù§È‡´ãèi9õÿÚ¦ÿù§È‡´ãèi9õÿÚ¦ÿù§È‡´ãèi9õÿŲ#ohg:“@iuI¸”r±Õ¦ÕAk¯uddg¨ˆ0‰†cÅ2Œ$P0: $0ã†÷¼ø1¦ÈâWEæfÕŒ*ì]ì–*Ý ˆJHynˆÎzÈA#eígÔFû.ÜÚ»%iD‘æe''ÇMÃEJ0á¥&Zç39b´Øœ’ÕXÒ¬'ù©ÜNÜz!yþß!Ò6û¬?þ×ò“è%ý¸¿wÏø î°ÿû_ÊO ‡·îùÿ´`maÿ-_ö>‚G·îùÿ´}»£xÎ#yªuºwÛWNèœÐp ‡SGжjÕk#?MCÍÓ¶nºpD>Öˆÿz<]KošÙ.ñD½PTY€ À:‡ÝLîÔUÔJŸUíŠFÛKŠ_USq®áBå˜mYå‰mOs¿DØM²Ì¿ØªÁa*ü0¼®ŸÁ”úÓ…W¶º>?Rp­ß­Ü²Žc¤ÆÏÅÂëEó»H VFüuÂÑÛ|F»+yÂ9}ó¶’-¾ÅEçq)dQ)´ªs–ˆòÚ͸ã)g4¹vzE½Æ_ £¡ZPṑ¢2ñÝÊ`‡eVj›')ôã›#\Õ†žñ9åG¥bCh:U!ÔíJ—ºôŒÞÙ諈§ŽFRPrAÅFË}Wܵ[Ê ã™e «;aÂNÇÛò/Êó Û¥9yÖx3Ò:”}ÁÔŠzTÓ¢ÂZ•Ü<³ÛMþ¶fûc;ˆµ)ÞCÚƒ+ÎB'{d…t\_–âûÂΞ¿“Â|z¤‚i{X‡úŠÔmyÃ訾ùŒã³®¤= *™øˆ¡¸†ø\×7-I^ßL†Ý?F[Á¨ üIvMLi]˜ÝÇÄ0«\'iÖà×vùˆõé„b‡trçTØf‹‡áçzÅA†r0€oÈ Ð,ô÷8§¬¢Ú(©#=‡Ñ‰ Ȧ°€€ÈS¦ DìÄ–'gžXÁ0m:.Lª{¢c=t2>îMGGx‰™]vaBÍlËÿnžo .^XV†,žƒ€››8‰WÞ”L]eEëDS9Zû¤§‘†”î’UÓÞZGœ†<švÐdÚ¯3ßQóŸ É$} Ô”^Ó‰GýǸ[ëXONÓGCžè~S‘ìÚžì«~ïõ$¸ÝÙ™×-{Ç@ªš7zlõ½ÞQ¯žÂ+“«k¾…–7°[¶Ç<ÞrÇ»v`Ít]œà¯œ”fS ·eÒðGív\ªvÕRâ%:öëU ’Ê$ž´ÏR¶DE†ÄУ‹•#®2ɶNS{Þ¸…Xi²_JBsÔqŸ *ì~Ó£¨{fªžëÜ8Χ¬GàPAto6вv-Oï¸DØ»ÙÞÏ DÖ´eÈŸ |ü Ëpciy‚K+4‰¡‹L笤š6;Šuº¶Jå7=]&è-OH×¼*‘i$-—2%F|#=7ÈaYü} B–¡gnC=±PÄ™z$¸Z\f-QéjDêèXk¾&ŸK@NM^Í©¨¦¨vØqÛz²YZ~ôÁÉg»€ÜÍSLºÒ'ª‰ÏŒ— uÈS98ZAáûR‚6Ñó‡†aÜ~½êÃb,«Á”NzŽ%ã9x7í™L÷GL¸»g=`ˉÁA ”–<Þ)õS>d‰ÞÑÐðï(=…ä³A°kG¢nùĵÑüßb°»‹‰Þ+1ƒAÝãÅ<“ßgºfÒr¢ ¾ï(/{«ŽJ÷´mL D´×k>Yøg#ŸˆÊ¼æ”“ñ‚zÉB)y{g¬þpyP’°Á—¶zÏç• X`ËÛ=góƒÊ„,0eíž³ùÁåBH—„Ünfã4•ÿd¢®›®ô:ëÙÎ}ÒRh‡œÄY®OgÒtJt±3žšœ‡mZdâî1š¾ðû9žf½ì¸ØlEw=uL:3—\“Çí ›RïK±3}–æYÆ»òŽñê)kFÇÙºuß ¬A–„¼ü—# 6}¾&#‚ÈX0áì¡\Ñξàï›Ä^ÄÝQ³¿ü‹Um'Þ¸çþ˜,§Ð¼Ffªæ‘l,øAs“ú1qÏaHZË6[º¶ßC,ßîfD±‡RÚý9!:º÷Ž´SÀSF¨¨©ÇÀÂYÿ]ĨÊ;:–\äkÄm¦pñ/ILDçÇÏÈ-T±C¯»;‡Ý8—*kwbkWƒX¶w‹* BAÀ·Š{r6–ÚR¥A”îH­§«yÖ™¸—oõhBf‹•µ½¢‡›CÃfšžXL:ˬE`%6€‡lº^$kuI3ZŒí3ŽñŠ«bº†Øi(Ä$]9Û®›þ CÂìpë#¦(‡"Z[°˜w† ã]'76„‡wQÔJ ¢JÛ5dqœ µ(­[ŒT¥œÓt¦âß‘gæ)ÏÆ%N·òÕ.¦ü{9%CMÐ’¹”wM¨HDCÞD¥x+–Õ#°ÊÜ[d§Qj¸LÇ1eqÚ›õ‰H+^’Ü/oaÖ&t#læ˜Ãºÿëüˆïo«ÜóþÁ5ö¾Ü¸½äæ¸0q6 ò“ÝH=¾¯wÏøP*¯¸†%|aÖ¬æÖJe’½e.¹bsÚ¬òT/±&s µ•½d«W9pÔ©Í‚"2ЇÀ»Ûì?œd#=Ãs_¬þpyRÒ+aŒ¨…Tƒù@„ƒIñX¬ÊåPJ~4”¥dœ ^"€’)8 HqK<6À µžõ­g]bHGݘ5¤‰²ï1¥%…â7¶Ê$û¥ñ*þŠRóKW…‘„Dr Nð˜UÊ¿"˜1ÄyíK÷ÙßO"¨N*øƒj¾Îø¢y½@Å_ PýöwÅÈ“yˆ7WÄkÄJY¢G6¢é±_á×1p@T²ˆœ.òe‹`Ò+–è¡_H}Ðuψ#A,ÃnìÏAzY62š—8à•u—CÕÿh=ßëG­É<ƒ Ån;gýÒø•E)yƒCÍdVþ9ÄÆo˜ñDò!y‰ÅW©~{;â‰äBõ\Aµ/Ïg|Q<ˆ^ b«ˆôf‰Hõ b¡à] /û!îR]Aæ Uo˜ÙÎWsX-P53¬è¶@â3â(‡H0§·2<„"² Î/E…‘IÀbÃjCŒ" ïZÖuÖ!D„}Ѐ¦´‘6]æ4¤°¼FöØÄ¼3ýJ¿¢”¼ÄŠâ0x¾"XZLð˜UÒ¿"˜1ÄyŒNþöïŠ'‘ Ô'\AµÙO§ýQ<ˆ^ b¯ˆ6ü!£wÅÈ“y€Ý_¯¨fˆÝò"‹¦Å|7„k˜‡¸ ²ˆœ.ò‹Ä.VHq)¸‚dŒ à|  n8KSÙPN\~AK¶p Æc§ù4ÃÈÚÁmf†Ø16¼žåžô„ª†…‡6ñÄ )L:R;Y#ZEÜ%˜lÆ9³ŽJ¶«¶n<³”a»åJËÊ÷¼)V^2â‘Y‹X¤6©.ëiÑÍZ£ÒÍìÝù’ë¬Jë«ÕD\~qqNsMbÃŽ¦NA  ã"·…Z½êéìã»Ã«d38aƒgüåÌ+¼®FðÓ1ÂK_á. 9‹.Ë,„¹ qVI°Œ‹Q‹X²7#‚ŠØRó0˜÷•'ïrоlN%g¹(‰wj¯ˆÉ -²">áRåU 9 ûzCã ØË‡¹QxsÑS:³›xâ&˜Â:ZAê(êI+2!pµÛ qÃФZÀÀº—¤ƒÇ¼©?Ÿ˜ã”Uóbq+=ÉDK»U|F”“!u¶DG†mbqÁÔY °@yËÒÁããlÐêiʧWÞBa(î˜Un‰¸V2šN€q’2"˜Þ9üZ^ËBsáò%Õ Fs˜…ÍC˜¥”럽# 1'Õd«pßH ^N–:þµˆ”YX–`]LþyȇÂÔSоlNS£+îðœÅ$ŠClÜ8!м¯l)öõ…à¨rÊa{×c›ZŒiâøêŽËÖ3Áâ2ñh–2à4<Ì‘K@Žó2[´¯ÒLŸ½JÚa8 à"£KµxNi¿á\#¹š›åøæcÓQ€ºU‚#3@ë@ÈÈUM)%&Ar^ cJ(5ncR¢^üÌ *>¬©[„„µ=•åÇä[g #ŒÇOXý²Ë€âH·'yDù†nºì‹q8fŠî­)*ÆàsÖrz”p6%f”$Ó¼Jrhöë•Lõz»=wþjú¾þïE…SÌ” EWjÊÝ î#ªTŽLKj¹Â3,ÅK¯ª¢üoæ‹’¨†;d%yFDü¢ÝP²¨nÕ›®™ÒÏtÂ7×'!Çy@ ‹# ±âñê’s¼©ÂÉ[ÃϹŒoÝ[¹ÆIþc=‰SëWÞ¬W¦÷º^.†‰hݸh±W[ý"£gamþe{9î5ÿ¤óJ{,×^˜þs£ïõ$ÆB‰¾Â°)ùN¬»;ˆÑHNÓCµ„ès>Ÿð·’7„¼pRzïðþ-/e¡9ðùáʆC9Ìi¥=˜‚–²-?‘•—ÅN7w'ËH‡[Ûn^¬³Ïvq¾¹h1ÖoRY@w„'Õ4zNJCÚZI“ÔzY¼NãuX¥ÃMí·O7ÖW€g»8ß\´ë7€¥‘DxB}S@!r2±D{ź;_e–·µZIiûóyÑ|âÉZZð·dEçÉIOQU”ú%Tº¦“‘æ.«wÀÄ[kÎ8ʵööõ9;Î)ɰÊŽ¶¬1Às€@(n” ½O䄈RÉD©ß¥fÑ;Õ`6• ·¶Ý<ßY^EÙÆúå ÇY¼%,Š ;ÂêšAh*•%D–êÍbj¯XÏ»†Y¹ïMšlYwB¢+éîÎtO€q’IÁ†.Ūnò›Bbq¹âVÆ(n Úbª.^XC¨¿™J&æÏ3F^4Ï­*gŒÎvHÂí½h.k:Ðà2ù!BbhT %Ñâ?Ö)džp$<ÃvÒ"wÖÀlÖ`n¾y¹³Lz‹£…ÍóAN¯x@ i”wDe×$iè4šÈÐ’!o„íyÇÂÖ@ÞÀ§8yÂÙÎ=ÛQÕS‰8‚¾pH%Ó ·já!”Òf‰ÂI$ËtŒ@‹ì®Èâ¶KB†í?lžnÊî\Y+K&*ð‚¨Üùê))*ÃRŒé—\Ðȳ“Bâ9*ë+Œ¹?ÀpÔIiû0ó‡ó å+KMwí—x’(H¥(è#Òê’‚$ &z ‹;´øµK9qgX¨b Ìýa—‹TczZ‘:º*´Å’´¥D[ˆT;ŸØ‡ßú¦Ùô’ ¸ŠØ{È"â–€B BB?ø )G¸eV¢…h)l"Ñàù¢¡åZKŽ5„ZZ"H/µÓ}f'%Tœ½êB‚ æŠUzvUÅG%#AºK,Ë1qµ¾RoÈö‹a¶÷=Ó­óƒÀ3â9eÉÊu›À¨¦]xbïSÕ4±ªCTù¨Œ¸…Ü_g¶YA¹fg1½÷}V'´t) )”¸Œøè‘!f©IõžR/¨òŠáÖç5˱ñƒÀ(ÄrÛ£”ë7Pmሼ!OTÒMR·ÍDd"-ÆÕ ›DÍËrØ™ºëÏœñr˺(/ ¤”õqŸƒ9ã‰Vq˜‹ŽíyùBL ”Ý=4m+Ê¢qrp^n€*‹¢–žnUñ4БSp̽DœWn9Õ“ÄŽ7´1‰‰â<.mciÄá×”÷±U J°{¢é ÅTˆ[Äi4ž¦9Ù½h.k:Ðà2ù0˜…šU‰txõŠY'œ #Ï15=4F‘Èaòw¶ý“ÄÂØÂ¯ë_é×lÈLM%8œĤËÚq”…$Žs ät+Ûs};¡ˆ*$²¸žåÚøÇV¿A¾º:¢êõuFÀ'ãÑ,£à4ºé‘ Â8yK[l´?G2~é"ãÍ÷8ˆ¸ÆÝmR+†Ú\ø£ïi¦õF˜µR`8oXoAêH3œ„)Õ¨¡Ax@Yœx¥ P¨—K€ÿP¢ÔyÀQžyv ¥¬‹G€OäJˆ > ˆöÊ!¸>2‹6/e±Xf¬æÌǸVuXê¢j«ê’<ŽâP¤©$•@š²8šË`„W°6ß;¸Ì|WvÒó9_zˆÊnÌqW»:ºC$’2#I¡+#-À²5ÖYfý DŒŸ»ã1í+JŒ$ÙÌE{£QQŽ!ºS¯ Ä¢Ä(ŽEF:ƒl±Õ 57ÃvôEt\»vy¥EôÎnpæ–E^4Ë­€£mÒ~‹Ý6ó~wHν {? »î}σ¦¿ §GÇÃT'9ÄN-Û…I¾ÓÅeVVcëÃy¶'½ªÃbîøB‰R±7 ËÄ)+‰ LjR)Ö°²iTÄÿƒƒ-êñ0×<³*¢’¾VxkÍåšS:RpRAL²ý‚•½h.k:Ðà2ù!CÅ çcÅc).ø—«ÅùHã@™ Uµ•[¢=Zù÷‰%™f¡í›3vü¾D.Šž Í™»~_"ïþ ®©QŸhC®Xe«EaÆb)@ùš®Ç‘ÙIwĽ^/È’GôÈJª~³ŸtzÃ_"Zñ)QïÙ³7oËäI¸N*xƒ6fíù|ˆ\ TñÍ™»~_"ÔUnˆõkäKÞ$–eš‡¶lÍÛòù¸N*xƒ6fíù|ˆ\ TñlÍÛòù¸©â5×?T–T¯|B_‘ –*¥«p‹x¼Vµнšy¦s¨œ‹A¤ `8Š ¾Cªh_ñ¿š.NÚoô×9¸‡Kd~mý †=Tпã4\‡Úoô×9¸²?6Ž~†-¬;ÙÉfÔß°o¸ü§ óË2ªé/|¬ðײ2Í))]%;J™ªŒâøVEt§Ý-#NýF’Á:G–ÖSnYåŸó¯pç„õ£ˆ.–C íbñËó\ºïΫ۬UåAáfS*ºç)&ªfq%Q1»1ÅÚûC¢ØÝÖÝ=h˜ˆÝ¾tîÔ6Ø}Þ1çyÓ¥f¼0ÇSšJcá52›³ ÿ RëA CwÉe–“ò€>ÕENì±e9Éœ´UÅ—p…´6ÜÆ0llÎó«Ê;ÿ s{"<ÖÊRñÊ}h§•rÌæ{ôv{XTéE–Då3ñó ^N±ã’…–00G}Íe–=å•ãïœUóbQ+=ÉDK»Ó¼˜ôSÊíz^vå5ŒÅu–é9ÿUÞQÞ= JDðÏyÅÓò1,ôÛ~å¶ëÝê›Î gõÝϹУ‡¿¬ÑèÝ&‹¡þÞF¼3×=d5XØ5ý®¬éǸ6½Qæ9ËÞÎ÷SàÇhhËZÍ,3æƒ,ÀȦ«™YX :ôg4ú:Ò•g‘ñáÈ|ÿjS¸óp’¹;Ó¥ÚG[tkß `Bí±ÆØ!vÇ‹ë9tŸ—7ሦöJDîðHÀ½ÆS)µµ-O ÔrYÁé»1çêš§kg¾†ÑbÊÛŠLã­–ziž\Ä3Fϯ±ø=ÜýïLF6éë¾l+¦<Ñ|%z^š(ì6P•÷çÃ>jzBv…CŒgÊr+¥ˆîÊAÇŒüHT! yWª4Ý;²Ÿ¨kgµ€ÕótæEcâ4¡f—zÛŠ™™— jp˜–«ã6¤4ÓŠU³IÓ¬ˆ³ËÔ:©ÔaJT¤î‚:¹ç¾|…©’%}ÙEƒÀñÛ”<¢l~n¾ì‹qXfŠî­”•aÃp 9ë=ƪ™½£Zó5Er[¶ÝÑqIé1¼{byt”í¸ÉÁªg¾-D«§bÔ#\'±±,/•el¸ü^]‰æÖïD‹oaà55i!Bžé}nb!Ëî8¶ës.òƒá¬’01JmRmŒæ'_öŠðr´CujQ³ƒi^OÜË:&(ìøëƒBUî« ´ô S¬æ"¤mÂr¢†™v%Û”Äæzë=ç–à§ÔƒCU/&ãUÓœLdZiÂ^ÛbÈÚ'³žEk;y ³Ýgžp©bÁÔ´˜~ÏYÊ=oh(›IMORœV0œ9·¬jœŽ{Š ƒ+yÖŽÇoNüˆ£<¾ˆU¢—ƒ%¢­³‡[·1‡É+·%ñU×5`¸yão„3ôº¥ÃD÷‹5˜ )O=GÎiÐÚé i:«]÷âwÛÙÓL´ïÊ^Ï2Ρç¤4Ñ‚k{bq«()ï®–R¯C€d7FSž³EÔËiSyÌòºú·Z©+‰Ûº$³Ò8o=Ÿƒm}èîc󚋬×}vjf~hgy]B]z3˜pKªÆ^4–\Xˆù k¤Wìô8¾¼Ì§"»­–yDD它J'‰bÛøyuöó€)g"–ó™$Ó—{Ý ¯–¢ÄWWqÇÀ:€›§m¦f(¹7~ÝcËLòð,Òï[aS;;²á­NÕ|cbfÐ"]ÑД†šqA³IÓ¬ˆ³ËÔHp¶£ R¥'tiÕÏ=óä¼ -27~ò[€3WÞ#hó×½”—‡j%ÏD¡E2Œ§×4ðÛ+fS3´Ÿ±1e¶æyJNwç=ãÝÖÖ<ºFî>ÔΛ Ú 3ÂÔ;œd¿æ;Ø8•>µ}Ó«é­z^.މÁö7Fé—›ãÆ4‹{=Þc¥ÐÞÆÀ¸á— ñ×ê•»b9-ÙcŠ2ó·›a¢NyfUCUFïe~öEW¨…3©;Éé)ÚU.ÓçJr+¥>ñé÷è9§‚tŒ¡Ü¦ìóË>çNá)jOgƒ.Çû­¢†Fì>%]Ê bê!0öI;bÖ¢¡i%¡Ýê¡å¾ÝÓ¶²qÕY1í³³] Š6’)c僧Ÿ ƒiÜ-5TC6Q C«MSÐ1{·8]¬£ëMitz<UäÉÝ%™éYë¯Ags:^ v½"z"ìv`²²å „ªô Ð ‡F^=SBP¢u _hæG1ê†×GRÕ9ýÒl·™ç®zñ†}Ÿ_dƒÅÅÞ¸Œë«|Ø:WH9ÓxJõ6œ'$ÎV+R;²áŸÓWHNЧmüâèVEt—Ò4ïÔfÃv}Ýlw1ùõy<×}MÔ”œOÍJsëÂS(RX—­,ø›¸nt‡vy¸¾¤jœŽzÅùåà(ð+ÁÆëŠ™[âH{?v+®ùÛ‹:‹é@¼áLYJm8Ó.´äU6ëY]ªãŒz¦T„¬ÄÉp˜—cV›¿{‹æ¯¼FÑ癯{).']ÏD¡E2Œ§×4ùæÑÙ”ÌôËaÛ™åtNüç¼zšZÇ—qö®7h8Ò:‰Ÿ‘ŒTÕD¸×›UËîˆJé »¤(H¥(hIô:ZV©Z&Y(IÎñåžyo,ÜpäÌD¦€° ¹º›ßou.·Z‹öµÕP®²–r0êaà–B gju ¨¨n³uÓ‚ äbYµº•³Å•ÁL7x‡>hQXîóÃÎ Öïi>Î Ó#lÈá]BÝu=eV‡jkïÕ0«‹v¹v{9yêéÊØK@±3òŠ™bHm·óe®å}ÑEDtà%”Æ C­3ÕRµTѲñJOþw2òÙY8ÙÁi9­Öbè…×¼¢ÎþqÞàZ° ÜÅñEZÍÐ(¦Þ—T“+gh’ÊÚJ!*‰ÌóƒËxÚšê‡T—¼Êc"ߨŽq²»P›âbŽ(v¾nqêrà ýÉÄê÷†f,Œ";¢ëšor…§CÊí&c\§# mv ÐJÉZò+!D"Xš¡ìÁ-ò£ðˈ¥ˆâ<öNöÁý‘g• "÷„á·Ä' {`þȳʆ{ÀÃoˆÜpº\î7ª§£¦*Ã6)ÚÜ LÀJ:DAK¶F…\•gàSGOPÑ´îi?jN—±Þüx¶cV´ô×Ý”•R(n€é¤ƒ‡R%Fw¨æBÛ£n‘²m¬’Bšˆ ›8¶›W†aæ8Z‰ðnæjîYðLÇ¢£æÞ9Ff1‡QëNMN¢«tÝu£ï?#sF¡¤“Mª À¾CqÊê^à†^ðÓTQ–»ßW8æL,Ä\˜N¯|D´ˆÏtBsÍ:¯löÔê_iÓ¨¢LÛA¢ì•®\Öx¿º—tnè~‰½Ÿ”‡­\ø9QÐÓ£ããªeöE/Fèq÷|3ã:ÌëÞÒw[Œw@ˆ…’;H8#,04Sz9pšªg.”å*‡‚uRš›‡*¯eÒVF9Li®ÿïm°Ú°óÛÙ9xý¥GN\«ñ.ÏÀË£èý:œ3ã:Ìê4›.fÇ; ­¢(­‘†ó ¯p»¬ÕPŒÇ¶iS#4’MYpz(éÐâOiQ:îÐaÿRû^óþbܶ›ÁÂÝÎE‡Xõv%ͳuRg&+ODË “LdE»=þ!xÜ̱• T­ <‰˜ÈËQ‘À²Ù¥F¶yŽØ÷Ö[Ž»Ä÷²•—”UO„)¥*ÍÂ\SŸ[³)«mé ˜Ó3-| ¸ 4õSÎÄø ûgˆ1¨©ÂñË[X§tÕrE”VSwM0€ˆjÅ6½@ÝcJm┟ϸE*–…ˆ81qVù\š†kDª&ö~PµsàåGCw£ããªgöE/Gè‘ÔáŸÖg^ñ ªU‹w[Œrµ'ÒûB+ÅÖš x`Ê]ÓWƒÎtŒø!E²)h§£”Nºžž&|DÔT*¢1U1Ü"d˲/µþtû/·¯¥ÒékÅ:w*Ì;²ð¯eÒtŽ•~9ð&4" °Æ##‹ð¸Šo|ïULåÒœºCõ”¦¦Åy¯eÒVF9Li©kàc¦#NCàÅ¢›ÑËÄõS9t§.ðíIiJk°¯!».ެ‹¦4׊å©:^Çx ñâÙZÓÓ_vRUH¡º§PpêJ<•Þ£™nºFɶ²I j XN5?bü<å…š›/Î{ü=ÙæôÕ¬Þ4ÌÞ—T‘ R¶‡Vê ¬¨žøÈƒTêÖ”´g‘LsÔ3Èñˆ™-T-ó`â‘à×–«<ù«žB èõÏŽ© شɧèf]NñfuïñÜ'‰óW[ú<4¯vg[ÒsÃѵë±Í}€Q–˜.oNY¼Æ™€xF]RF7BÓn­äö•®q‘©w!-™äSÆËñà/;C[6Æ÷ïÕ’©·-¦rV ƒp7zÃÇÅ/EHÝ ºs‚-7ëâ\ËUÄ¢©9wiá; ¥ÌÆçnu³Å27]âUàŽ7”¢ê#0öI4$ÒJÈû‚×GN·ê»I˜×~£uÙ†wex8Âï+½ÁùÞ#u{ÓãÆs3—T’ÉR“­4ˈC».Ûï)¾'\ãMþƒEß]OK…ÿ|ÎÛw‰gÂʺ¢ofŽ‚4Ù™­C\¢eÇ鿤Ìk”êÌËZJБƒÈ™ÌŒµy€•–D1ò¶w C¹ÿ‚S b2£áTŸ ‰í7êôª”ô’e^Ƨ¨' ÄöâìÏ8Ó~QÜ6±PéXiT[1‘oÔG+ƒá UT=¸¿I7a—’B#P,„! ‰bj‡³·Ê†qb8=“…½°dYåC½á8mñÉÂÞØ?²,ò¡„^ð0Ûâ6Ün‡;‘è©æêŠ°ÍŠgv·cS0ކÐDèI¡W%YøTÒ0ûfÛ¹‘ø[_•¹‰¡òó̪®ä÷*ÕÓ1(BøÀ8ö%ß7Dj9XÙŒPɰQ:ëñ3â()”hîÕ@¹´ŠÍÀgò%’Rp,Eí½pRVe*îÕg>:ñG­[ƒÔ«†§J ‹u„Áhöªêƒ3<³{ßw7—t*:Î…Eœè—ã4’)ÒoU¦ ‚;£Ú«ª ÌòÌ}÷}ÜÞ]Шë:s¢\CŒÐ"‘-¢õ@©@ Ânæ‰ì‹Ix¥dª,åÃ^>ê]¸ÅÒ«E䨶Yx¾DBЍ²ÀwlÌK.ê[¥#>Ž¢ê•Á­®Ò§0˜õf"•0€¶0ÅÅePtg™â6“Þ—4á°ëA_N¡®©Ï€K†©0.i„’¸ŒÆ08¸l® Œó62+m1)]­FŸKR€{š%œëÂ\]Ä+.Õ`¹´Š„dœÿ©’“€¤½·®-%fTKµDàYÏŽ¨õ«pz•pÕJ ­ßsëûáTÛ>’Lëïy »AÎ-Qëf™žë¾î.ï+TE )W.#Âh@¢Ñj­} Pn;Ú$C²-%â•’¨³— xñâ—B· !vŠÉP)m:²ð |ˆ…«Qe€îÙ˜–6]Ô·JF}DÝG7Õ+ƒ[]¤7Na1ÄÆˆ¥D m²¸~~ã¶ÎÐöJæï çJæ¬Lê«ÁˆQL‹Ç^$’JR}£n·['ìã5uwVÌâv Ÿ9r%Êï+ Þ³$¬õñâ” ¸ÚQ¿0¤H  bš¢è(jGÂFÆEm¦%+µ¨ÓéjPsD³b¸K‹¸…eÚ¨6‘Y¸ þDJJN“¨½·® JÌ©]Ú¢p,çÇTzÕ¸=J¸j¥€²äM ²·©]tô|׳NÚH9ÅÉĹÊÀª.ŠZ¹ÉWÀ³I€Ä¶f^t6ÝíVvE¤¼R²Urá¯u.…nJí7’ RÚueàù (8V£Á**6ÜF¡ê¨ÃÕ?RHàäØ^Š4àÐ0üŒ¢–XnaƼÚë¸g½!*¤‚so@¡"”èõ$´š² ôˆÞýÓ6Ž ƒ"üê'zá±-y}ÎØÝIawHÃ…VC‚Òž¢):wÉçëòνZ¥Fr‘”0nŠ*½MújÞ«Lrùg'!bn4ÝŠËö³ùE“ʧQ$’|¼ýµU6nõïˆb$«6`èâpê–®SÎG%+tÁ>0Ñ%<™ÍVž†QÜNüŒ¢¦¨’%nƽè¾_tBWI…Ý BE)C@êH RG&"P@Hމ'bÂý´¾PHQå*ÔB8ÍCÕI‡ª ¢Èàä@¶¢0Äh†Pmù‰þÓ¿ý7ýõ-x… ›þW hfMxúT(dPÁ¸ *½MújÞ«Lrùg'!bn4ÝŠËö³ùE“ʧQ$’1Å!¹Ë³ÕSéìOš)K+PÇûf’J… ºÐ#¢cIذ¿m/”y@JµŽ#PõTaêŸÈ(²89-„è£L1  ,%àGƒÕ2·ÄöÐ:Õ×|íÅEôÈ ^p€&,Œ%6œi—ZRdG˜#¸ùEMQ$HÝz5Ñ|ÑtBWI…Ý BE)C@ê@ Q¨äĽ©Æûw€z½]ž‰ùÌÙõ}ü%Ñ*žd¥*»V@&èoqRLäYJ»3ÔTRÑ@…W ©¿M[Õiƒ®_ "Œää,j$d†˜ Q‚W;ÁZÖ`Ýñ=câK¤È‹12d$f¢\0”B^‰ŸtTËCm¸'›%w-D=HmÓ€”fS5´’£IɉŸtTËCm¸'›%w-D=HmÓ€”fS5´•NHD  `D:Ðj"¯wŠ¥J¥ß0ýn¡ÙâJ)De(ryŠÙÌ&0˜Ã1 ¨Þr6áW€&^ÞÎ)%¬‰)Ü,ªWdé4åâF‘‘è,Kâ=TˆäK@±3ò Š™bHm·óe®å}ÑEDtà%”Æ C­d¨ÒrB% g6…êÕg4€|IdZЧ"·Ûn)xEííà‹=dTçxÑ!„§d Y\ïkY€tKÄ8õ‰.“",ÄÉ‘˜‰pÂQ  $6¼ÓvßíÛôkî’n0Üuñ ¸ê&~F1STI6ã^mt_4]•Ò@!wHP‘JPÐ:’Ô£QɈ‰€ *j"¯wŠ¥J¥ß0ýn¡ÙâJ)De(ryŠÙÌ&0˜Ã1 ¨Þr6áW€&^ÞÎ)%¬‰)Ü,ªWdé4åâF‘‘è,Kâ=µr9ÑÔLüŒb¦¨’$mƼÚè¾hº!+¤€Bî¡"”¡ u %J5˜‰5@Aœ&…ÊÕæ{‰dZЧ"·Ûn)xEííà‹=dTçxÑ!„¦d Y\ïkY€tKÄ8õ‰.“",ÄÉ‘K‹’ˆÆP@TÔD#^ïJ” K¾aúÝC³Ä”RˆÊTäó³˜La1†b)AQ„-ų8à¶[Ý ž†}Ÿ‰Së·>ªú{½ S´éºOC»ï8Aðb4ïÓg:¼yÇŽ¢²¥µ¡T€§Ð:¤ ¿¼fˆ,‡®fÓöß<‰7UÄ›OÛ~@ò!p%\A™´ý·ä"UÄx-j^²Užrá $ÒG¨Ý`v¨;)ZžMØ%Kgrk¡=ä†FÐIiǵ4¶ÂM7º«HôÊdmn*Mï*Ò=2™ã Òoe^ÄÖvf•t-$ª,Àe0ŸWº‰qµ6«U¨ÎëJiF…”UŠÄÏË%°8ž$RÛ“¼âŒ.Í´]‘n+ Ðr5nÈÅ%%Y.p 9îÎIå¶•+[J¹¶L®Ks~踈ÓÂf7OxéR<ºJu¸G¨·¾?£ %+–*f‡ ÓE¥26Hòi)@ó÷ƒÈ’Gën1œÍ§í¿ y¸® ÌÚ~Ûò‘ *â>VPö²æl…Ie6N£²N³Ôsãê9†‹Éz®… ³ë·§Ù O3²6C‰w§Wº~Z–ヒÙx޵ur ›$žýù”J…¨åTÀÒÉQ$Ìg/lõŸÎ*Bl0eíž³ùÁåBH2öÏYüàò¡$ `ì-E(˜Ê¤ø@„ˆ4™ ŒÅÔªw²5°cW)¼¨·¦%ÜÍ0ÔC0ù O²L¡*MÆS¼Ê3"©`˜B›Œ§y”f4bö¥ ±CK2ÊÕšM! È ~â&±Ä¸ñ©:={©uõ-$q蟞ðGrÈþ Œ¢íšÏrì3^sG€Zu†ÜVÉ D:SÖIæ6³5=%ŠŠvï²é)"Ôˆ·‡Ñ-œuVÝŒô0«#*ó˜ RLGÆ Ý‘Í"‘÷—¶zÏç• !k {g¬þpyP’† ½³Ö8<¨IÃ^Ùë?œT$aøOÎø‘¡³›VJª7L¢ÃÝM4n%·Ij<¿ª…IJúV³‚)ôñ3ÁCK+XðÍVýmЪÃêÒ[Õ~I#ê^JÓ«Â#ç!õ• Z`×yî8ˆùÏÖ]î7¤TÊÁD9±ewÏ,!×ÜÈ‚%æÈ cLÀRé©õ'"©Ç[hÔÊ.W ‰æc)B–D⠸ċ*˜‰ÍÛëþ$†[1ÎÆ¬=ËEÙÉU,êÈmÓ€$b˜5¤Á°©œ¥¡C/(§ÔÏpÓ´^CÕ q³’8ô!B# QÊ*©€þ'ZHc$™Œåíž³ùÁåBHM† ½³Ö8<¨IÃ^Ùë?œT$aŒ…¨¥T€?‘“!&¨ÌmކVƒ^ ]»ÞÔ3„¤ìÓjVÛ­¥ U¶ó™¶ži-¸«mÓ3é%ä±sY–2³a• ©UXš;GŠfqIR¥%2:¤©Fh(.†”\ö‚œ—a^×aâhwç6q±8† 7†”*ëŸ <õ;5,í'W‡-®Þ´–PžœžCs«etˆMÝdÎP{ψV•yÎ)&#ãîÈæ‘HûËÛ=góƒÊ„µ† ½³Ö8<¨IÃ^Ùë?œT$aƒ/lõŸÎ*@°Æô+Þ††¾mY*¨Üe2ˆu5Q¸–Ý%¨òþªËéZΧÐe¡s ­¥‰‰³‹¦£Ý‰.©†ƒÆsrIu)¶›R«®å.µ´ËJmµ]tnˆY ïq½"¦V’!È‹+¾ya¾æD/6Af—NO©9uN:ÛF¦Qr¸LO3J²'Æ$\9TÄnhÖß_ñ$2ÙŽv5aîWÝœ•Rά†Ý8‚F)ƒPêL ™ÊZ2ñBŠ}L÷ ;Eä=P§9#B0µ bª˜áu¤†2I˜Î^Ùë?œT$„Ø`ËÛ=góƒÊ„,0eíž³ùÁåBHÁØZŠQ1•Hð i2§;ÙK42ÂÈWþZ¹]åáp¢²©˜D5–š|©Öf¥)i)'-2Ó¼v©êÒ–‚vÓ)œ§xª<•3¨m:¦F¬J•+hÕ¦º tNk‰JU 9!Èu)JŒr\t @° ô¬‚sKÄPE'‰)g‡D3Þµ¬ë¬B‰û 3&´‘6]æ4¤°¼FöÙDŸt§üÊ¿¢”¼ÄÕ¼ÆDG(”Ï ‡ýJ¿"˜1ÄyíC÷ÙßO"¨N*øƒj¾Îø¢y½@Å_ PýöÅÈ“y€Ý_¯)f‰üÚ‹¦Å„#\Ä=À RÊ"p»ÈX³Ä.–Hq)¸‚dŒ àMAŽ|Á¤W-ÑB¾û 2ëŸF6‚Y†6ÝÙž‚ô²(le=qÁ*ë.‡«þÐ{¿Ö[’yŠÜ1¶Q'݉WôR—˜1<Ï¿ŽzŒß1â‰äBóˆ®#çj¾Îø¢y½@Å_mC÷ÙßO"¨«â=â6…§=ƒ¨xBKþÈ{ŸÔ—Cyƒ[Å&6s•ÜÖ T Lë:íøŒøŠ!Ä )Æ­Ì!¨‚sCˆðE…¤¤1!Å,ðã‚Æ{ÖµuˆQ!t`dÖ’&˼Ɣ–ˆÞÊ$–¯‰WôR—˜ŒEq Œm³ m»³=äñCc)èsŽ WYt<ÿí»ýhå¹'a¸­ÀÛ(“îÄ«ú)[ÌŠGŠßÇ5Fo˜ñDò!y‰ÄW©~NXïŠ'‘&õÆTăj¾Îø¢y/PœUñŒñB㉡‹T< ¡%ÿd=ÏêK¥È<Áˆ­â“¹ÁÜØ T Lë:íøŒøŠ!Ä )ÆíÌ! ¬¢sˆ¢ÂȤà1!Å,ðã‚Æ{ÖµuˆQ!t`dÖ’&˼Ɣ–ˆÞÊ$–¯‰WôR—˜ŒEqȾ"9¦xÌø•~D/0b(yí;úSÇ|Q<ˆ^¡8ªâ0KôÛ¾(žD›Ô žQïÅßg|Q<ˆ^`7WÄkÄJY¢G6¢é±_á×1p@T²ˆœ.òe‹¤aêG%#å H¶ÙlA¸±Ûeg»[}w†óÙs.UUàÀkªeãŸI  Ò]¢‘mîƒaÿ{çëcgÑBK€½è÷|Âî:x8Þ±SS|7dµ”\»qg_s"œ83¯ ¥Ô£#<ŠB£éQîΦrêšIj!G*/ð¥ì´¼x|€‹påAFs˜ž…ÍC˜¥ã\ýéQ‰>¬ %[†ú@`aج2ãh…b{A‰³‡d/…¾q^V?sª/>A©]¤úÕJZNi%Ä1 (5áRŽ¢wäe5D‘#n5æÕEòû²ºH.é )JR@ª”j91€¨úÐÑŠMS˜Á)Q/~f•VÔ­ÂÀ=Ô‡? ¢Û8P©f-ëxq<¥>¤aêG%#á HÊÛ-ö[êz»3¨aëwš¹o®q·UOR‹m–Y”ohØýræX ¼O|©Ww]TøCs Ü'Á$ˆÌY5öGDŒ'mþe~ã]É?¥sæOeâ<þKÇâKAÄ 6®Ë sµ©Y”og8 ²re¸ûÌ7|©YyE5x3R¬¼eÅ*e:›R;B¤(2¨÷kòœº’Hóg"¤þ-/e¡9ðùáÊ‚Œç1¦”ö`Z ZÈ´xþD-Ì犀Ҕú‘¤rR.“-¢H¸¶Ùe§G6qØÇÞY»Ä÷²•—”UO„)¥*ÍÂ\RHà].)‘nóN[·ѬºBãÇ_»Žâwìe5D‘#v9æÕEóEÑ U$t€ ¥ © -J5˜ˆ@Ty4íQ)ˆu g"ŠTä*-«oÚŒ¶Rª_"$PLÂÍ*DºþjIʺ–w… hE@HóhYv¬Æ”åÔg"Š= ڶý¨Ëe)ËäE $/qô ÙUFNL¸­÷˜nùR²º)«Á˜Ò•eã.)†‡jSVÝÑ•1®FZ驦¦‘Úr,TÄ÷‡PûPyUº#Õ¯‘:WŒä³,Ô=³fnß—È…ÂqSij7oËäBàb§ˆ3fnß—È…ÀÅO®¹ú¤² µ{âü‰±U-[„[Å⵨”…ìÓÈ•3DäZ $éJÃ*Z 2@. ¬Ï§\0爞Œ.ÇÍö¢ôƒ{rjn—x$aÞŸTÑMV6ã‹e'*LIpœÈ]M8„¥fY+NCU[ݘÄŸËäM7ÄIdf3›3vü¾D.*xƒ6fíù|ˆ\ Tñ _,Ä–¼}ß"¨!di4¿Lb…ÒºGÝÿÁ ÕÀTŒÏ´",2Õ¢°ã1  | c³Gcú&‰Y¡˜q‹ðjªåEá U%1ͼqè”GQêDÔÕ·JÙ¼éÂKS׸1¶–ò‰¶ÊL[-‹¬ü6ÉÉ– }æ1*–WE5x3R¬¼eÅEµi«ŒÊSäe¯‰ç鞦ƒ|¢|>³›3vü¾DßpÏŠž Í™»~_"â`­ÚtÔ6ô•D鑞ž|FšjGj' 3-•ø<ñd×>‘:D³Þ2‘™Cq[ݘÄŸËäI¸_%‘˜ÎlÍÛòù¸©â Ù›·åò!p1SÄ|-|³¯åò j€^G Òj~åæÉHû¿ø$¸ ‘™ö„JÓ™jÑXq˜ŠPo;+IwĽ^/È’GôÈJ¨}¨<ªÝê×È—¼I,Ë5lÙ›·åò!pœTñlÍÛòù¸©â Ù›·åò!p1SÄk®~©,¨-^ø„¿"A,UKVáñx­j%¡{4ò%LçQ9ƒÅäÆÐÀÚvF¥wk‰*‹0L'Õ⳩µZ­EÝiM(вƒ!à” Û ‚έM׋³2Þô¾»¼­QÕôé4¥\ø & §EÓ©•OtLg®†GÝÀi£¨èï±1òÈ…í@Ö[ÁЄY¶Cá± xÌ™vh,.âÀÛÊŒ i¢zÍ02ÍM]Ku ááÌ’®¸£v‘ÎdiZÙa•4Ò®º7Dœ…2w‡4Y`EØwCÙv7MÏ?w]:Öõχ¾*ZÚÎèÓ=G_f®ÆœUÖéœOÂ6'x´76µr¥^ mÈsž’ñ~DÍRòœT®"¡Nª whq13 ³Ë”¼©b€éóE)Áû3þšß?÷émͯ—¡2w‡4LÃ]îçy=îµ²Ý\¬ûJŒ%6œaÚ›)º­­ÒÔ¢9ôFœy=¤ÄsÈǼjf…Ìl KÙ‚¥·—f¸tÈ@N½~D½a©IJwÎè Ú¥% 5ÜG1” ñ“æƒÙ8"µãƲm¼‰™ÿéLùs2¥X1!(!©ékDøŒ“ÉôºšŠohcá6{­%Fvë©Éç¦ñÛÀe§z.ê-òe9N‚Ê"&r½"uPìÛ{¹ç’(»8\Þ”‡_¼°/M5 aß—T‚IÕÙÎ6Ù½R_z®×|I™iØÃ\ò¼6O¨Zs×\õâ‰×€€€Õž}X1ü?î6P~:yú û/óIçècu[3½ž|`xÚ®kæLJ7ôãÆzÿR8ÚXrÅN›£xÐM´ŠWp×v›£x¬'4r¿’:÷ëªbG}¥ìKµÝǯɈÙ}xu¤Wº31daÝzðO5·ÒÓŽ²ÊÙÄR®Žµ±gõÜ:Û0Ö„8â\°Š')â éG$Xá×£s<(ñº_Nîçt7j8Ï«_}:TÕ%…ÁéÌÇ^’©ÔR¹iöb9žb¸œÑÈÐ+½ÆôŠ™X"H‡ v,®ùå„:û™D¼Ù i˜ ]8U>¤ÏTã­´je+„Äó0ÆR…,‰ÅAq‰ 8F̆Ûí£9q;‚ÆÃ˜šq˜¹”ð¨ÃwED>€iôFZ§&£iôŒ&¨Õ·B£KuÈË9Ì·qš£Â½o”Ù\g¼¿qò<¥-«Û§èæOÝ$ÿ†¶oéù«ækÕûþEò „îŽhÞowaœÌ ÷Õbï7)•š\g¬ÑËjÖÒ¹Ö|†‡±¤9=©ò¶õfÙð?¸Tuã«— ~ÔüÒ¹z„Lc²ÁКçË:Öƒ¬¹RILò”ÄC„ì¨hÔFa·~bq\¨ª¡íÀ­úIeÄ\ˆÔ !D"Xš¡ìÁ-ò¡†\DØŽ#ÏdáolÙyPÂ/xN|A²p·¶ì‹<¨a¼ 6øŒ,„ázQ#Û„YåIÂ." Æ¢:*‡›œ³CEã#T¯€ ©— E.¢[h2#ÈþQ©¤)$y¿TLã8—€âWì²ÄPÓn èË]Êû²Šˆ$6éÀJ3)Œ‡Z"¦•ª¦—ŠRó¸1§Ô‰Ä’X#;kµSÞ2xàÔ¬,·"z¤&(ï+Y¦ QáÖ›ÛfJT۪Ö/d`P0T=·­_MM£€f {ŒYÜïŽjúi6#€Œ¸ÅýÎøæ¯¦…ˆà ¸ÅýÎøæ¯¦…ˆà XŽÁáÕ”5Àï| Á\éS‡Xz§ V,iPûþâM‡z ƒœ5Û82ï™ú©é—¿Íß ÿY"nÔˆé)3ñ $ˆ·‰—œàÙ›ñÇæ™}ÕꜼê¼!é Lottà€›J$ŒSP!„¦d ’GíÊÀ…4b¡¤C[Ufí‘€&wˆŠ e{B0©D 㱬ô. ÆFE[ªI]%ì™ÌÄ&™H܇ÝMï·º—[­EûZéЮ¢–r0êaà,E"jÓ^¬ orºÜ ë‡Øg€WI‚ŠÀ¦Y©‚±™çÒŸ‹D¨ø Ê LPgœùS4©_³QêUPHt™¢=g´" Ô@Î;ÎÚT´ÂÌæRzƒ{¨CëÌ›õâu H²Ù3{]¢»™Ýo,¹¬×”5\•eVaÓh3 ‡¾€²uXäá{EÌŽøbÙתÚî˜Ã´\H†sG)¦P1uáTú’’dgZ¤…_*V• ?8n뾬RŽöB\>©ŽuLƒè®KM*F ~p¼K!Ó}`¦¶»#c}’ D¸p¿¿ÖB1“ÝtHôŠòF¶¹VïÀ­]uHœ,€Ó¸i9u$ œ+9Vÿþ·ßÌÿ‚D’¾Ð¦ * ­¥C4.ÐeǤ7z‡íÊ“ ¬õ‡&Ïn#PõTaêŸÈ)$prl/EaˆÐ2  $Î DÄ ?#8©–†˜q¯6ºîYïHJé œÛÇ(H¥0ê=H@²HÔpAã½ÂÓ#‚àÈ¿:‰Þ¸lK^_s¶7RX]Å€R0áUÁ …ô§¨Š_]”¢\ ?_”wJ ¢ ¯AS~š·ªÓ\¾@EÉÈXÔHÉ %0£!,®w‚µ¬Àº%âzÇÄ—I‘bdÈH€€¥ÅÉDc( ×vßôXî5³?Ò¸ßø¼G‚£àô¼~$™Êqz–@R¤ € *j"¯wŠ¥J¥ß0ýn¡ÙâJ)De*ryŠÙÌ&0˜Ã1 ¨õw5,cl#J‘‘É9{á/Ú’G"Rpr::Ìm9Úöv‚¶ÓÜ//ÈÆë7a@8&¦Õ;ÆÄ*üÈ0˜ÛYZˆP¶²]"*\4òÔX,ýÿ³Qk#ðqXzùšéª¢¼d2éO‡RR¨ÌCŠšÕÊ•–£šAî ŒAV‹£Ç#‘bÓ4Ô`”‹AÂz‡àjBŽÒÌUdEšŒsT}¯‰_gn\ZeIf-Ò‡Ú¦E(ÏQ‘Ç/9iP°ë± LPÎÌGKÔh¦t¬Ôg©Ì:¾çZhm|LjC„¬Päu¾íêêg__nჷ´CoDZÒ…#3Tåà4ž ÙÔ¶[+N%PJ•´ jÓ°x"\JR¨IÉ î¥)Q’KŽ‚ÏaOtkSuÁ¹ž[½ï»›ËºgB¢ÎtKˆqšsvwA¦UE³–š™Ú:~ñ51? [œÜæÔÞng™`.»îæîòµDYШҕrâ<&†Ë®é´É©¶ÙœµÐÌ»¸²Ÿ£ºmLÇÈFº¢ÇÓîZ´ª ãñxÓ¤N(‚Ðò’,,–±©é-®|wU„ÿ1/Œ{ʼnó!èÑk‘"ÂR¤:ôWôÆ0æ!ñÔ@ð_5êiO›'‹ð|IòŒA¾£(!çfXû+f\ÑA×Nk(œ¤Qv$°Ö3„‰‰¦c¤:MÌHDŒà@­iÖàúÙóœÒó+j­JœeÚ¢¬[ºeƒwEB–“šp¨¶ý5E2ªvÛÚ,Î$à·g=Ã¥Q²Þiâi9ΚÁg¼H´Ù›Êµû…ª-ÂÃ0æ4ˆp6ª¥]î𥆣tFS¨d vvé¹NÛ¨D­sjgX8<â <üމL¼¤¡)‰8âYeä7×¶µ8bg1Ûcª wµþ)Ëon‹Îw¨Mid´A^ô§Ò ‚jok¼ãJ$·.¦%YNh3òД¸“RºŠÑQû]r—Ó™¡E»:,±ßh¸·›Uö9fPÀRÎ Õè#JÊË>‰·e¯baoíª¢]r™„”G[\à÷ej¤IT&˜—&s9i”óªq¼¢8¢Ë¢è¼ïÌ8C˜92a•›ˆZ*úr i¦||4N­FÓSU-SÄßv| §†r9í–ËŽ‘űæb‚ÀÄó‰Yš—ßÞ¯f¢…T”+¨d:è *tÙ§SéQ§RZzUÔ¥JN¥q‘®¡ÈÐhi{åa®Ô’›° äÍHõé!í RL£dÞ==s £Q°ožDZwç-3 a†ø²7Û=‚9íUv5ØÕ}%$&–€P¯Q=K+4ú%Ý–½©Éok´ªåЫ%G~R{²ÆÕP¬©ÓRY‘Ì÷gä]\¼Ÿ"gLYCÏ—öHôŠq÷ê0ª×`0Ä—x««+(€è%¦}rLGö™³iç™MÉnØÎ&ì·–QÎF´ì¥¥m¡g©ïˆçœø1Öüµz ‚­w;¶'ÕNéP¬&êÉ^W#‚–³škwmÕÓÓ9QPŶÄÄs'‘eC(uÔ4Û“3œDo–YZÔOj ÐkÙFN.«¼Õ®¦e¸;ÕFX§p¢•Òº#)Ìe$+~ÓSÓÓ&¡k»%™L주Zžç^6”Qèq%M<-B%j!Š-¸î+ú ÝÆVáÌÇ9‘Z|?O:­¢²šS âJ)f­B”µ+Q ¾hS¨v,_J•õ]´RÔ–¡ÝžšéªmU’ñ6g‘ïä:*ÙŠKäÉžG¡øé"ëgÖ-´ýÏ}ávÃ2ÿc«„«ðÂòºSëO'W¶º>?Rp­ß­Ü²ŽbÙø¸]h¾wi*³·+D.ËGÑŽÈ;^Uå òãµãîÎ$]º¨Õ+ ÔøUiÀQõ[EĸmR·ˆ¤ö³¶'2Ô³ží™¤A œyv‘é”Ï4+XÈ”bñ´8—cv_Œï<_¦gG‚?ò8UÒÖRCûoðº"11.Œíìë©xðÐ1½7ô…[lNS¯ŠÝ¤CM 0<Ý/\æyÞeo‹€SŒ»¤«y“œ”,0—zS”ÃAMôU½ Í M®'´btÏC’Ï!𢛉H9Iè|xä=bÇK–Ì!Ã3¿ÚgzÜp÷ A_JcUSŸ—%ŠüZ—ií‹-ÏŒ”ò€;N¤2‡níNî-–weM1Iìô»M„Û Ëýˆ ƒÂUøay]?ƒ)õ¦ ½¹Ññú“…nýnå”sX S¸]x¾wi-ªÍâG\-7Dkò·œ%€¾vÒ­eö(ò/8CRY@ÚU9ËDzvÃn:ÊYë%˳Ò-î2ù©C†áÁ¢2Ëx߉¬}{žÔbÞ)¹†a¼6ià@pØ…@e]îS‰ÏQÄ º#.È3;o™·[D¸¹µ3­§ŸZ  ³ÏÀ5ÝšIyHZº©‰8ÒK,§[;Ýlçc#[Ñá€TºwºÞÈdm :HeÇŒÓÓ¶ÂM7º«HôÊd)ºt©$·•i™LñÐh¼XÚÈÖ®íq%Qf)„ÃPñ %ÆÔÚ­V£;­)¥Pd<`@Zw¸Þ‘S+IäÅ•ß<°‡_s"—› 3K§ §Ô™êœu¶L¢åp˜žfÊP¥‘8¨.1!çiÌV'`]N‹nÉ¡‡UæTæÙ¦µØ+ÚL»ž4޲µ…ïNSH<Õö•=ËršçÚUé)2Р²ËQר*Ga)zZ¦q:æ9øŒ-G(ª¦ø@ž²HqI&c9{g¬þpyP’aƒ/lõŸÎ*@°Á—¶zÏç• Xcaj)DÆU Â$A¤ÈL‹ÙS48î`XLB®wÍ1-[Ó&ô´×]=ôèJRÒÔ³’ç–c¤U‰KkRÎKMùgòlê[­•§¨%JÚµiØ<‰JU 9!Ô¥*2AÉqÐYì3b;©ºû£ýLó¸Ï ëG£ÀïøJ8{úM9»O¤ôet?ÄÊ4âS®ZHm1cöwëøoZ£ž}Û Í’ÉY¯áñºÁµ…û Ef«ÄÓœ}í$“²“TtÉ鉜éÄãL´5IiOSöw~Ýà%ZIŠ,90øÆ¦2eg¸' |{ŒZWµ¿íŒÿM ð¸¸Å¥{[þØÏôÐÀ_a+€;ŒZWµ¿íŒÿM ð¸ %0Óî ˆÙZâV,®f¼!þ¶\#ÖbÿZ:”ɧIkÈ¿ª‰DÃé[™~‚º÷fw³Ýà^XÚ§W2bQÂ\xÏ_êE:†Ó*y@Kí´ˆÃ]Ü i"FpÚå h‹";VŒÔÁ/ŒL;`q‡§‡RJ|!@ä¤å7 OÆNÇÙ˜TÌô„Ⱥ3ÒLøh:UÕx9„}UG‘w‡£ù[Ê"µ—šøgjOüŸïÆ‹6>à Uœào+ ÁVôª¦A9§:Ÿaín•(ê)ÉõN'L§9ò'j5¼j+‰VÁfS(vù½b{/€p|“ey†!Í™vñi ^ya‚òºLm')ËI'[eìºÊz—×Pw]l+"˜#ÜG”h0Ö­²ÚZLDå¬Iñ̉ëæðô5ìêËì ž„ëééÑñðÕ0û³Ø½ο /~u˜Ó¼iÆG´qç«ÇþØ-MËز£ÈB¦1€6[­3"²Û,Ø×Þ&‡3lO{U†Ä-Ýð…¢ ¸N^!N vf5MOHL¶»#=`»ŽJ t޲ÆYÂ>²nó0Øäôbƒ%‹µOš‡³ÌÐÞÇ¿‚¯åUø3—\“%~È«¥á¢q,·2ÎÝwåãm#èA0j>ÍÓÏA#@¯7*HvÑž±¾Ö_bsVü´¬¸i2Š•<ÙL5Õ0 ÒéLÇŒÒÏlÚǶk”h§²"Ò¼ŽzÒyÎQÞ`BŠ´¾§.ÖN#t©rlrÚSŠÔ ²fÃÃ0æ; ¾Îl6!Rʼ‰ÏQļg/&ý±±Võ3Ýâíœõƒ.'3P<¤<Þ)õS>dÝÆ-+ÚßöƦÜðÜ%pM–EhlªEjøz‚^-@ü‡H6VZ0—Àyø­†ÑV‹UÛ êoF‰ÎJôêŸêN‰U¥5&¢>©ü‡]5ÉEa¬•Ô=rà_¾¢Éf6•‘Ù{v!õq÷{ÞÕa± MàQ!ª ýšrúÉ xÚÝ›‹R˜L¡‰ž°]MòP~ï1šž²ÆNO¬žÏ3ë}!,Ëh–^Ïa4;A»`òvãï”f- ˜Ɗ˼BÒ²²Èt¦Ÿ![:µU¯<˘iU»‰SÏ(ó *ºr§m·q”ï2Œüä["‹kt;â{Zˆ X–éæ÷ÉòUø3 õÑ‹÷V’È¢`ߟTôL l7n•š”uS}Ùé9–‡éÌjsh¡+yÆU™Ûp×Rõ8®:lXHBÑœOIÚG~g÷âR£›1n|Ãp¾1ÞÕ:¬lâûÚGS÷[Jyžswk‰ød19Tgcè?¼ÎOÈ»´à&™,ò/°˜ˆíf^N,}òŒ¡{Ewëë.ñ$P‘JQÐG¥Õ$΢­¦­yæY½+·úˆ´(ÞIaêvÛqËM3¸ÏS5B®%–8/G¥ÀC¹Öh7 ‡ÄWuÑ(ÕTã9uÉ´vuCÝ.ÄÍö[™g;ýCij[oãìÝ<ôHB;ló.Ftýzû "`¸e æò—Üóx‹Ø›ª6i{IªÆ“ï\sÿL')ô/™ª“è‹ag œŸÑ‹]ºG°¦Ú{ÑÈÿzÊ ¬Š$¸[ç74C4w±JS¯½X@W¾;"è˜vfÍ©ÙôÉu¤ýæw&K­™ÛÖ“"‚9Ë] i¬ªj¥ÓBÏ«¸øežZœžYè NÂÜæd`y6eø:è=ج¾¬Ó£)»4÷)[n¶”-VÛÎdaBÚy¤¶â­¶wLϤøáš¾W7ÜÜÞS¹Tå"€qv"jÅp×!OãºnDHÒDŒà@éYç—ˆ $ŠNRÏ0ˆ,g½kY×X…÷@fMi"l»ÌiIaxý±‰%ü%?æUý¥æ œWòx¾"9D¦xLø¥~D/0b+ˆóڇﳾ(žD/PœUqÔ?}ñDò!zŠ® ¡ûìïŠ'‘&ón¯ˆ×ˆ”³DŽþmEÓb¿Â®bà€©e8]ä$Ëx…Ò %7Lƒ1” ÈqܱìùRïT2:Ú¥ïG´;ÉMÇ$šŽv|ÊøU;!ÂÜgZɈ׼& 9J¡M‰ê”è#ªP‘#½=•ù…ò &A½=•ù…ò vôöWæÈ€$ÛÓÙ_˜_"‘•¯UͬÂÄõK!ºJô,õ˜jPŸ±ãqè9ÝáVHV2;;»ÒK%tõ‚s·§²¿0¾DH3·§²¿0¾D ÎÞžÊüÂùµ1Ô“ LÊïD:ã#ÍçysôÎ3‡‡$øIÔеdH÷S|*å‡WQ‚s¼!µ(ûœA44cKޱòº zžA‰‘C€P]?"<ÎF£Qž£ã;z{+ó äH ÎÞžÊüÂùƒ;z{+ó ä@>•¿žÄ8­Rþ,¾DÉ…ç(¸iÝB‡yU/u¡eFߨä(é0(H¥ÿ‘Hq7„¼ŒB落†!ô¬‚sKÄPE'‰)g‡D3Þµ¬ë¬B‰û 3&´‘6]æ4¤°¼FðFQ' ÊÌ«ú)KŒTœV’‘|Dr Lñ˜ñ*üˆ^bq<¶¡ûìïŠ'‘ Ô'\Aµßg|Q<ˆ^ b«ˆ(~û;â‰äI¼Ä«â5â%,Ñ#¿›Qtدð„k˜‡¸ *YDNy 2Åž!t°‚C‰MÄ Ìeå@qÂZžÊ‚rãò ]³…Ž3凼8žRŸR0õ #’‘ò$w-ºùª{ª½{›ýLs8/àßZ%~ÂWÇÞÒHÃÃs˜·utÎIñCò2å¨àˆâFìkѯ|¾è„®–„.é )JRTµÚ]Δê-ÑÜOË …Z¢H‘»ëd¢ù¢éÖz*8»¤0ÌÆ(hi=`Å)䔟ÀrúPeJvp<§.¤’ÔAœŠ‹ø´½–„çÃä[‡* 3œÄ­”ý_09þ’Zík²x¯  ¬Æ´h2,&lýôÑs#“…ÄWÏQU4Æá0ŸF\P’“eµV–»:ƒÚnܹ”ØÚoŒ²‰,(ñµŒÇßHV„()"€@ž9W}S1ü?î«D¿¸e{²¨Lã8ìxêeŸáxSyŽõ—H/Ö êoZ÷j‰Š1­Nš(wÔRb/@äpÃ"Ò7œ¥¢A‹ ·‚Ó¶šÈè+²/_C#tä®–q®)¸« „†žÄ£VñAI TŸP‡÷¿ÄV”s°a.vUÈs‚dÇGò[ú„'¿þ"ÄÖß`†Æû)æépà äÙHúó¾`ÿÖž—ª{û¬œÒÁº*1téq¤€ÛTZ<@õx>ÞëžF‹öµÔÖ²‚–r(hPà’g#M":ú™hø?Þ’ýD8á0pÜp–§² œ¸ü‚—lá@#ŒÅ¹aï'”§ÔŒ=CHä¤|¤ Û+³âÑñÛäÌðxžùR®îº©ð†,çA¸O‚I˜²kì‹w™ŽÜ}¤~’cý꘾øÜw ? Ø©ª‰pOFJ/™ïHz* »Ä(̦(è=ijI¤àÄBUíerœº’Hóg#Ä–w>Ê7S£È»Á­Ä*-RÝ ` )~Œëd–CS¶hØpÛup¢î?¬Ä.—ƒð¹Ôõg¸kSMâºÊjfP0jQà ™Ö…!V«Q¶ž¡º†ÉÖŽRcI*=˜‚–²-?‘ s:À: 4¥>¤i”‹¤ËAè’.:"Ý™¬BÑíQë÷pË1÷=é³M‹.èTE}=ÙΉð2Ksw¨ØSÚ³ŽUN§¶×æpÃ÷Ÿ9zåw•²¾F8Iaéà<'Á2# D%Â9ÈÏìCïƒýSlúI\DØ{È)R‡›BÊÒœº’ à¤QFZ ‹zÐ\Öu¡Àeò"…ôÙ€‰Yšï.è«zS”Ê!ÃßK áR.ÙˆÇ^¹[U60qV=i—X¦²2VƒlÚpcu$XY`XÈèz»n<Õ•ãsZ¼I•JìDÁ©@Gˆ‡gˆàY­äá_dæÂâ18>ü9°t®-|C~¯¤eZAh’>,DFRëCLŭÙyE=Hò‹À„_zU]TÊS!<^$Ìê®Ð!üŒˆ/‘C8êë|+yBjz`ª{’úóx¼I±+#ÈoŸê„Á,,G"˳7½]W­åC[uÍÛ’Ž68iºÜB® –y •®¦ø6ÎâdH£ÖöÃ`•ÔSÞÝ,©f¤È ^2œôš@˜´ŽE$P`Æ’¦¨ žTuft«w£SÎjèã!VŠ“Q€~[#”†Ã ì¥!ß ðí"A­%¡Šâ$ŠLÂÞ2µÇÃЋY™¹µf”¸3à<؉SÜ•Qî…ÁÌc˜La˜Š$f@n ‰ÞPÓn!„òâY]:À~ØRéY¤]4 hRÛJb[ÍU&éW=„÷äé)}'®BæîµHm €&h GˆP°eù‰{Òz ’ŠbFñí)j3Tƒù >ŠBÒB%ékpó1Bíefë %Ãð½òNÓdy”Ï3 Ôë @@@@bïwCÅæ§u©–êågÚÔ"SiÀf©²›ªÚÝ-J#˜ßIÔiÇ“ÚLG<Œgû>/øW{ù(á»Ñì÷ЫÝoûN®þœOÄÎï‡vœ:ckýyÿþÍÿõ'÷²áÔ*þsù\x?éþöz©W(ùx—ç¿ýŸîô"‚.aJáÍvsõfÇðÿ¸dÙAøéçè7ì¿Í'Ÿ¡è~`æ\»œÜSßW8ZŒÑúú¥/¼hê…b6guñ¿HùÏÑT¼VW_â-žíóä*ÉÍ€ÙµïRÝM|è©ÁÙÿêUö´tª¿(ÇýÞ¡ßi¯#®)·öøŽÏÝŠövùÛ‹:‹é ^p“1daiÆ™u§›¢mסK+µ_yœLr1רRº“q2]L¦fN÷#®)°r ÏÝŠöŠåå„:‹éÂnló1daëÆ™õ¡Zã®5\§‘j¾ï)˜æ@§JºbmR]|âó“ý¦Fî.KqþTûÃìæ]•w²“a± G¾ékªcÒœº¤m«³)žÚL^™¾ë³<á%òŽá†Š±äR9iöb4ÞyˆžN±ã’…V0°G}Íe–=å•ãïœUóbQ+=ÉDK»Ó¼˜ôQû^Ç%)¬dî+¬·IÏú®òŽðª”6ˆ%ážó‹§åayn[oÝIéÝꛚÆxZ% s¡GY§[ftnŒž‡øyƼNuÏY«1±µ¿NÃÑÚóh\ÄFxyå…\3¹u\©ÖfçNé3kî'¤må)6°¨=ɉþã¤ÕB”’M2à÷&'ÿ#ýü…=9Cˆ<–!§$ao.(v"bÆ»±Ê/JégXrï@Á#AêNNÜ©r–‰o2p¢R-ãnÎeT%· HçÐÄ´CÆÖŸeñ Ò1víG†Ã>o”³ä÷Ë@¦æU”·÷´ºÎŠg¤Ñ QSlú–ÑN«/™Ngt˜‰žðÕÔ=TÊ”é]lg‘DŸ óä: ‚|Þ9æßú%ö¹•.ö>˜ þƒÅ<ŸH©ö&Ýû׿Ã]ró¼&}£}ýn~ï0¾²xjÔv ÄV Ãtó|c6¢õœo®š FmÖ‘¤²(­l]=­_SDåk¬í#ê¦-×))Wg–¼†*fjN‡(Ë3›´ÜykÏAk†Ø–iÛC 8ÿØwc¿#¹xáNÙ„¼ ‰¹³ÔcÔc‰uœ«ŸRayÇkÚ£SÈÄR±2›f;Ê"#Èim(¦[äÚ¬"·8˜ .SÞxdqGðÎièÇÀç·wdôŸû5Ì®¸r«Y§¤Ø½KØìÛMl™>×õ]¯vƒ‘´:Ö¹¬Ï[K£»tiߨT'tsDÛ÷ê5ÅøÇ÷Á6=ø óõê?*ÏýÞ¡™ƒüMl¿ð·x\t,’ÁÛ]ªžñ“Ç¥dée¹Õ!1GyZÍ5´ÐÛ2R¡­¶ U† ,^ÈÀ `¨{oZ¾š0›GÌ ÷²¹ßÕôÒlG(q‹!ûñÍ_M À(q‹!ûñÍ_M À(±ƒÃ«@pCßðW:TáÖ©ÈU‹$T>ÿ¸‚aÞƒƒ Ä' D¶Î ‡8D¬¯WcI\¯BÝ’tª™FŠ€ ļg0ëLËR ­bS«4“jþŸˆE…†uˆÙln¨Ï&æÌ½ÖIs÷`²©Ö^ˆ Å÷ÑÍ´jÔ9¦¯+AÐ@QdNÕE+óg«UÍt®U]%p†„ŠR†Õ4­- =+dË)„–™ŸŽñµâÆY­y™ˆÎãC÷;ãš¾ši±pPãC÷;ãš¾š#€0PãC÷;ãš¾š#€0P<lRϪ¾p7e ¥ðk®—­”øècË„Ãßñ%›Mª¹kI&•z ‡=Úl þ³÷“K‘´ófi§œ‘9Ú@¦àa,„áתf3Sdh#ÈÆ5)m·¹^p)èÖä²ñ´ÆGók¾ÏYQnñ«°ÌëgAV 4ZË %Ç^¤ÇW²iö§¤&cL̵ð2à6QԼљ2q:éñè2Ëár zÂëžøÖ7ÅÎb¯´—×GªÖ±ÈMõ¢–³Nƒ” -Ô:²•"c\§#AXƒl#×–‚É9!‡ÎåMX}œÄå[‹ †ÄNû¤#]S”åÕ$KÛ&ìKÑ7ÅÙžq¦ü£¸1­Ú}™Žzˆ‡=ŸYë®|CŒºv>nqê&¼o®N'W¼&FÑ õÍå;Ž¡å'¬™ŒÏ)ÈÂÒV¡M–‡È[`f¶H:e‡!Ǿ ØË]ÊŒ8žŠŽ'6ñæa™Œ#¨õ¦ Ÿ³û:©Óyæ¥GÞ¯ Æ4³Vó(&ÛTw\4X“.% ”a„~ÉSI¥ïVl4ሙ@Ur€"x]Ü+ÈøÍ\«ºKpêÕJB@áP›¤oÉØ—¨yå$Ò¥Ir«ª}HµJ”Ÿqê`à Ð?£Ë]gfhØÅ.ê°ç©%Ýà€E`YÌU—Œø&]Ÿ±éé GN›f'3?S\¨v® ÕLi‘ Åo¥áiÁh†´J¢oº@zÕσ• ÞŽ¨{"—£t8û¾ñfuï*•bãÝÖã„Sí™Øò…ódg~îsß`òãæôàu›Á©¦`Þ—T‘íд۫y=¥D÷ÆD(¥^„¶£È¦9‰…þÚüÚÒ:¿Ú,6kç`‡•ÏDŠdO®h†¶E+8vY6ë”ë¿9ï ]B—uÊíDåÃA÷PÂô…Üðët[zìsß``.oNY¼Æ™€xF]RG·BÓn-äö•®q‘)D¤%³VE1—²…èDTng•4a£Cq¨Õ|:žð‹>!ØÙ̯éì»Ôˆh"=frTí9Kg¨bv–M¥kÜ4ìÆ5xAƒ4³ý‘t± ³)o¤Sw„¢%šzqEÓÔ)•Ih8Oe·^ݪÉE¡ðÒr’à.|¤ãGŠ×ËLÎK†E4â 2›2«X^%™iÁÕ5×T(Ômƒöof6M¦±Y¨ôîÔ~sáS'4zÁîíT ›H¬Ü"Y%'ÉÔ4¡H}õÅ p”,îÄ·/®á–ø…®’ Ão@@S¢šs‘ f³‚ ²ˆûçUœZ¶ÖÄë½&åÈ—2âe¼~yqÀ„¥XúŽ´È5JGl4ŸdäÁa6OZ>Têî­–Dí÷ÞräK–]ÑY¼5e ÍY+âeÅ)J÷æ"pãzÅnhnÊ#]ºz¡Ó¥‰˜œôÔäB¢†Ñ’J`1FBY\ïkY€tKÄ8õ‰.“",ÄÉjÇVëjq”*Õ Ä‘N5Ø×Eó>˜•Òp9wˆ¬ 1J:R0ÌÆƒ}JÈÌT X™ùÅL±$6Û‚y²×rÑtCÑQ†Ý8 Fe1ƒPëHJ'$"P‘ÕºZ¤e µCq$Sv5Q|Ïf%tœ]â+ŒRŽƒÔ“&§V¢ƒ1PâwÔ²ÄPãv æË]Êû¢Šˆ$6éÀJ3)„5´,œ´ä…]îñR©@”»æ­Ô;ïG€ê˜(kº]Î6Ÿ»þ•{ÜrÔ òÏQ¦¢Ÿ£ëo.3ß"5Õ>˜'rÕ õPO‹Æ"qD‡”‘adµˆ•OIms㺬'ù‰|cÞ,O™F‹\‰5!×¢¿ †1€ß1÷Ž¢€ù¯SJ|Ù<_ƒâH7”b õA—³2̽‘æ¹}áÚë™i•4ˆßIq«P—'Yòq›[C“ÚŸ!ðÚÁ‡t17^ÕŠ¼Ü§£HË\Ð[V¶•γ䱤9=©òh‘œ[mJ Ùl ÕÔóΡ—­æTú¹¹ÆÝRUÜÉŒ'WBà 7¥9L&˜(kºEÈZmq=¤ë¦z–yh4ÔSáB’r“Ðô˜×!è~<´ƒ+E,ä{{CÆ"Y‘ÈBV¤è,®ûP‰YHRƒE@^Šþ‚[[ÃqÎdn×â1,Š2Þoè$ãž|[ÊÑ¢6À;L€8 þ‰#B¸êŒ„9ŠÔ÷t¶¼Zšæ,wr%ØoV2â—²[5¶§ ô1t4n6·Lû1æ>NãhRÆòXÖk•Ì7U* UŽš€é¦½ic¦RR³VF˜ó:5%+5äiŒ¼DZfó—#L.ÍÇñžÇ;Uå òãµãîÎ$]º¨Õ+ ÔøUiÀS“U´\K†Í+xŠOk;bs-K9îÐmf‘‚qåÚG¦S‡º©nÙ=fîâ/˜’aÕ¡³Ff¹ËÀJFÑ| ê…›¡ÛbÚ¢º.]Û<µEôÎnpà%,Š"mxÓ.´šm¥\㤗©íOÈã‘—º:PfÛ’| È,¡µÅŠ@Üwýêã+pÃŽs"´ø~<žu[Ee4¦;;Ä”RÍZ…)jV¢9**6-gNHƉ¢8Ž3Ù‡cƒ |Ñ—¦»óœ…Ý!€Á#@—T““´v‹”®6Ë-Þ¥ÎøÒy ´”ˆy qÅÚIÓ¨—ƒ¬TcsFfñ>Ò ‹ƒï,>c}:ü1Âêî“ñTé)‚"£môL.–‹/ºs›cM 9ËÀ1½Ò/ÀUÖÄe>'” tìb… XŠ"²‡\M˜^¯ËL·‡=ºCT²³€Zg×$yí' ךe»”Ý»ânÏyeaEH”¡µ©v’§tÄzȸ¾,aØÍoN{+`´Œkͪû|œÄÀRÎ Õè'¥eeŸDÛ²×±17öÕQ.¹LÂJ#­®p{² Æ•ìØ¨M9;&zå¦SÇ98æ v³BÍQŸÆÛbìvQ›¯ËLÉ€¼8NêÓT²³V€4Ó¯MÔÛMÕ8LÕ·†¥vsºc3вŽýFg©a¶\¸‹\¢8k¬‰k@²v˜`mÑF+c²ßö .3OáÝ~åÔˆ¤Û#©·oÒÞYÏ ÇèÖ'_±µ ZÔ½d«<åÃ@Nàçê-ƒfÑ Gz;ÕâÞÌÿÂ,3!puj«|MJÊË1Ýá) jè‹<‹3Þ\89íÆ ®á²yõ£\¢J,õÜ+13½‘î¹ÖóÌ™ *®L®ò`;¦Ô$3y3¬’J„œéӭŶJu6«„ϘÓJ‡ e†ÆÝέI×e™–÷½o®ï+Tu}*M)W>Á0m:.Lª{¢c=t2>îMGGx‰·¿^P\e±Å›iµlKVk[†Z º°öò£‚Zhëš`iªšº–ê*ÃØ)%]qFí#œÈÒµ²Ã*i¥]tn2ˆ?9Ü¯ãæ«Hµ¦t=³8a†YW0 è­R«î‘JqšÂJ|4ѳû4¨i‹0áö³ ãy–‡¸NÓª:—z§)-?bžýFyaÇ–‹jK²§®e °S•s®îµJ¯ºE)Æg ô§ÃM>ÏìÒ¡¦+Ók9ÐÎ7™h{„íJ“¨{ªr’Óö) l½³Ö8<©Þ’Û {g¬þpyP’†0v¢”LeRü BDL‡ŠÅg$« M$@ù@Z‰ŸtTËCm¸'›-w+îˆz* Û§(̦0jižª•ª¦—ŠRó¸1—–ÊÉÆÎ …–2sÃ1;kÊΙ°‹ž˜ˆbµ‡Ê®À½ò´@^N³IS:{4 ª+š¨ëFŠÈ®œû%¤iߨséip¦rÜ9ž³¯p cV’b‹Lþ1Ÿé§L™Yî Â_žã•íoûc?ÓC|„®î1i^Öÿ¶3ý40ÀJàã•íoûc?ÓC|„®Eù ¾ÜljÝÑc PNá¢ð‡¸ÔÛ¤ªb% xM“#N¹ãáÇ-ò5 ÈÐM?‘n>r-gÈW^Íø»µ*•\2©ÊŠª¢r«{ˆÌuÕë·ÁA„ûø””$´.sh‘œ1¢è…Ò熚,æÎš±Ì ”æïº Lòƒå<ÊÐg¹97 ¿)P'&–•×Ý*ª¢…e>îãÌ»WkžšÜë¨B †Hõ?{ydzG˜Ðc²+CjR TCÕzñjå:v‰•ž„2á/€õî1i^Öÿ¶3ý4œð¸¸Å¥{[þØÏôÐÀ_a+€;ŒZWµ¿íŒÿM ð¸¶h-‡DáºpÎ…ÒÄóê9t:t„¼=ôÑNV*×{'¯Àk¤ê*×{¯-4ÏQ[|=ñ.et4TØ×<~䫤ÁwÕ }¯¾íEÍ”gÚå§Ñú«Ú(>²»\´ú.b1ŒÞËhÖZÏ`,9Á›bóvfÊ3–LãEeÞ!iYYd:ÓO<Ò¶ur«žy—0Ò«w¦ 7žQæ:ÅWNTí¶â.2æQŸœ†¡˜±Ë%²µBÃUä™Iºœ8”tåE4›§)ËI¢önÈ«o¢^ŽÆ%Ù–S1¿9îj_C„ù ûVÇ-G£Â±}¬ÂÖlÁ=ðO6\Ï;yaÕ QÊ*9µbRž¢«)w8NcÖš¨öMFÍv¡TÌÊNÛJâÏŽfg;ù>çKCDò Êé8Ó†ŸrŠ…bø‚VÀÞ÷î–ó4ð,:§vI¾AYÍ€Z/Š]î…Üä†ÈÙ5 »rYÁNò¸—v±œõmóžàW9ˆˆ5bã‹cç>A!ÜbÒ½­ÿlgúié0Àrp•ÀK9,¦2ep=^îÌ .©Y|¨ýŽ…?¹ýi²²&Ö‡&;ô D' ÆÜ8˜ïÐV\ÌÎ'ý[RØ‚ðêg5xC„æQ:ö¤°L2á/c¸Åé“MNé9‹1Üb¦œÑÈîHqÓ–†£7{lu±ÏGžòË×EÙ–ŠÎl %”À]ét¦ÍíížíS¬© b%7I]n±ýh:Û2¥ ¡ÂRí3ˆ8ž#FŠÈmBqD9ê—¾U”¶á§t¸N»pÓtˆoˆNS Í:IÙ[F±új³fÒMóÖIÄ”üç¸(œe¦^i*™¶22˜<Ç¥¿Ä¢ÙdV¼Ê&`Ìs^lŠîëZKžˆƒ2:3ᮨ͕öbªŠ¥û†ÎÛs#ÐŽw™ê{Á[YÒnã•Ïï¶gî7¯tl_¡ŸgÝ›î}σ•}=:>>¦ðÆÓö'DÂûΟ~u˜Ó¼iéŒûCz¼s÷`U"(‚ ´[.ˆ»§µæQ+fy²+»­hb¼ƒ2ž|7ušngìÅU K} ¨AÍù‘è]]LÏS=9ŒË¬é +¤¨¢ßß=>""ÑT¬zX%›ÃŒ%½y¹³ó뿦H­Žÿê»^íF iwµ½×4:Ý™k!¥C-ñ–]ÈxÚŒÆcï¦%šMR’‚Jt8†É.ªåqˆòiPà ô¬‚sKÄPE'‰)g‡D3Þµ¬ë¬B‰û 3&´‘6]æ4¤°¼FðFQ$¿„¾%_ÑJ^b jâ0²0ˆNA)ž3þ$ŸE ÌN"‡žÔ¿=ñDò!zˆ¾ Ú—ç³¾(žD/P1Ä¿eéÿŠ'‘&ó¸¾#^"RÍ;ùµMŠÿF¹ˆ{€¥”Dáw ±gˆ], âSqÈ3AÀ܇ËÏ•.õC#­ª^ñD{C±,”ÜpI¨à‡gÁ ¬0k…S²-Èu¬˜{Â`Ðó”ªØž©A‚:¥ 9ÛÓÙ_˜_"dnCë¢7ÛÝK­ÖköµÓ¡\•–r0êi”˜Ý‹X#(gž*Ââ*ºÞTj©”ú3—H8ö $ÈËQ ½=•ù…ò +#+^«›Y…‰ê8–Ct•èYë0Ô¡> b=Æ&ãÐr5»Â¬¬dvww¤–Jè5ê!xˆÆâm÷°òÐRQbƒ«¹:CNèNVò"ªžëçRʹIΤģ2›þE66’@ÚÊl(ÞKÏcœLf©ˆÿ_"X:L|çoOe~a|ˆgoOe~a|ˆA½=•ù…ò jb©&™”x…×ò$‘À’Q–ƒŸ¹XB.–eĉ nEdñ¨Ã)]º˜}ÞˆuÆG›ÎòæéœgIð“©¡jÈ‘î¦øUË®£çxCjQ÷8‚hi(Æ–cä:t@õ<ƒ"‡ º~DyœF£=FÌ>º#}½ÔºÝf¿k]:ÉYg ¦pHI<íéì¯Ì/‘7"Ñ‘î¹Öô5ÃZ™V®JÍ)€5,À‚NHj«=ˆp1Z¤!üY|‰:L/9EÃNè²;Ìê©{¨• *6ýG!GIBE/üŠUÄÞò1 ¼r’bƒG“¬$Ä÷l\ö{*›=3Þê€åúÑ @:“ÐìZBTº²ðó!fœÃÏh².ux]jæü¦wúÓÒÜ{‚1õµÿgüQ<‰7¨DkþÏø¢y½@€mcÿÙÿO"¨ ¬û?â‰äBõµÿgüQ<ˆ^ @†œîxÍÌvEÌW/•ÚÛà {À#¤À@Y"e"Å‹¥P9eä̱‘´ìëIAË)–s”ÂiàÝlÛY¡Z†Dj<`n©ì¨³íù.Ù€G‹rÕ—‡ÊSêF¡©Ì¤|$ މ·[NŽ,nÕ–ofï¼–u]`˜0ÊW]^ª"ãó‹Šcšku0Êr %Œã"ZÔ…Zµé@î.îðfg²PŸﻕÍXió „ç©`ËŽ•O€$Ƣ攕šdpÌ0üƒlÛa¸‘‡óeȯ™ïHz*h—x‚%”Å­#q…’M)QpF‚T$}©=ÙÀòœº’KQEf*OâÒöZŸn¨(Îs¶Sõ|ÁüçøfIk´A¬vÈuâ¾€&³Ñ Ê@°¹A_êŽ6üCüa@X»&+ýQÆßˆŒ(»&)¨ xå]õLÇðÿº­þá•îÊB¡3Œã±à_©–…ýáMæ:?Ôb] HxÛŸÂ.K:x½n›†µ7T,Ä-4¦°¥ a)ÊIrHHXr¤ú„?½þ"´£ƒ s²®Cœ Æ:?’ßÔ!=ÿñ&¶û67ÙO0ÏK‡ {èÂé²7&\79åþc×r¸.¸Î™Lz2Ÿ\Ð<’1ܺ<û…ý©OÓBAb†\¦µ‘¾ó¾Èî2î«‹åÃ{ÂUNAÒœº¤€ 4Š‚¢":ú™hø?Þ’ýD8á0p{Ø?Ô 7Âÿéëö?åËëyˆsB!iˬÖŽ[¡Þæ¸Ü-ß?œ´º•”ýe*¥Ç© b©}²s'¸ƒÝÂmf›|Ä Aÿ˜øz0u»}“š5_ Õn˜Þèn‡ºn§üÊÙQðÚL-M}ÒVEâ§|4ãàx‰¹Á˜ã±øå¥Šñ,¡^ðNšfº9j-Çq´ª"#-8€Ò„¡ 2™‘=.³W\D]ÍosŒO1œ´ÍÒÀ'Kë§9ð xÑ •JÜ[x˜Ü[ÃU„”­×¼h)UCÖW ¾^tÚõÅÞ-ÌW)¦ém!¡f ‡Ppëš0Íç^Z¸"Äz¡hm*Rfgx õPCsŠ1‹ ºØØ,+³1\w†gçCQ˜…Z€öÉSmó9“‚ÝÜfJY§"âÑœ®Õ.7,VçfËØŸW÷nÊ̳ rb«tÃ3Ô37”åª>Å”ÒÎM1Ÿî uDKN†9Õ‡Ñóóá•<–Ðü¹z /Q]˜&!Q”=˜‚–²-?‘ s9Áb 4¥>¤i”‹¤ËA÷$É(íu•ÚÜRÕh1%§ìkÑçEó%ikÂÝŸ%%=EVSèP•Rêš[#Ì9F…Æp¶×\q”+kÍíêrw¤Q“`µmxc€,ç€P‘JÞ§Œ‚rBun’‰S¾Di¿è¯Ù»õ÷ì,…ƒ ÿ+š9—Üóx‹Ø‘9@ª\êL)$>v¬Æ”åÔg!j= ڶý¨Ëe)ËäE ø1³³5Þ]ÑVô§)”C‡¾–A¤]³…޽r¶ªl`"â,¬zÓ.±Mdd­Ù´àÆêH°²À¯VN‡¬6ó_‚d{\Þ<(1ð÷B'l¡3T2/”çªÄ{†ëɵÃÂ/7óžæ÷W«°çS…º=A¡§]SÐBRëšÈŠSP –„”R‡2òŠz‘å¾ôªº©”¦Bx¼I™Õ] ÎþFDÈ¡œuuŽ>¼¡5ˆ½0U=É}y¼^$Ø•‘ä7Ïõ € Â`–# $`Æ’¦¨ žTuft«w£SÎjèã!V¿?øÐm¨CËQ¥:r7ÓéåYU›>í8fÕ¥ÚÚ jjZ  RnCiuç²Ë«è¥šB“Þ gkv·YTÔçtåLGÌ.Øï̶îKH¾mFb>ü£J’󤳓Ë=7ó#m’‚ÌhZú޳ßé/ñÊ—có.ÿÛè(ïá#Ÿ¨¾B}Ò»‡BÏ?ãqž—õñ£Âü>ÿRaw£t—:GtkøiF.pûýD Ÿm-žÀÖ…ÿG>˜rß[YEk ü¢ŒÊÔ{øu.5½'p[W4…î2m¾}å–‡é}¡½ï–â…==*ªS脸kÅE÷sOîïã9…?Ö‡8üÚjåkã†åªQ w!—ñeO-´?0®^€^¢1  çcÅc).ø—«ÅùHã@™ Uµ•[¢=Zù÷‰%™f¡í›3vü¾D.Šž Í™»~_"Š“Q€~[#”†Ã ì¥!ß ðí"A­%¡Šâ$ŠLÂÞ2µÇÃЋY™¹µf”¸3à<؉SÜ•Qî…ÁÌc˜La˜Š$f@n ‰ÞPÓn!„òâY]:À~ØRéY¤]4 hRÛJb[ÍU&éW=„÷äé)}'®BæîµHm €&h GˆP°eù‰{Òz ’ŠbFñí)j3Tƒù >ŠBÒB%ékpó1Bíefë %Ãð½­VªUšSá¢I$Ï@Æ&w;ëª[RÂÊe¤Új/%÷’ÂMJ8t'9==7/3CQ×Õ ¥¬¼ROµ\©33ÌÇŠP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@é—Óeÿž¤²5b]Ïü$¯ßù7Rþ) ž‚u;€@@@Mûü·ÞùA3V~ ýob³Òæ÷¾Tã/@ÒaÁ,2€ÿÙtiemu-3.03-nogdb+dfsg/skins/ipaq_92.skn000066400000000000000000004171751220314353500177150ustar00rootroot00000000000000TiEmu v2.00¾ºíþ­8TI92+ BY "Jaime Fernando Meza Meza" jaimeza@hotmail.com-Jaime Fernando Meza Meza jaimeza@hotmail.com´ÿ´TI-92+(PÕ"'_ e› ¡× Û Q U‹ Ç Ë ,5L9*iLo*L£*ÑNÕ*L *;L?*oLq*¡L¥*ÕLÙ, LVExIVyxV­z³TßzçTxVIzMVxƒV±xµVåx=„o¤q„£¤¥€Õ¤Ù€ ¦ €?¦C‚q¦w‚¥¦«‚Ù¦€<¥ ±>ÍCª}Ò¬½ÑÁ®ùÒÿ®ŽÒ‘®ÍÒÑ® Òà{ ¥ I@O.‰R JGl tGš ¢GÆO¢‹ÆÓ¢È{`—”Ç^唜MÄmœ…Å© ÔIöOÒ‹ô“ÒÏö×Òö þI Oþ‹ “üÑ"×ü"(GLQ(‡L“(ËL×(LTGzQT‡x‘TËx×Vz‚G¤S‚‡¤“€Ë¤×‚¦¬GÐQ®‡Ð“¬ËÐѨÐÿØÿàJFIF@ÿþ4Created using the Colosseum Builders JPEG libraryÿÀÔÿÛ„       ÿÄõ  !1"A#2Q$3aqÑ48B±´Ò %RSTX„‘–¡¢£Áð&56UVbrƒ“¤ÓáCcdh‚…†¥¦§â'7DFg’²³ÂÄäñ(EWestv”9Gfu—µI•ÃÔ !1AQa¡"2q±4RS‘¢ÁÑáð#3Bb‚crñd²$CET%5D£ÂÒâÿÚ ?ùþ„B.Ró¡!ÿó2}½0?ÛÿhB.ÜÚ ÜŽ¢½á÷O¸w=ÇH¢¬ Wôvúìì¾(uc‹ÄLÊú±ºª4¤ž.9§8Ýì4×®¼«Í|þŠu=æïa¦½uå[뺆Y$Wj¶”WˆÁaoLÖ/ýÏÙ•]^WG•ÎwgÒr–z‚tMŽ’âGWÞºgí põÅŠ¯¿ôIÒ«Uð;áCçÂýJ~Øø?fú½Ç“•ç”áìùôÍŸ'…Ãõ½ê>P—‹ÀázÝ/Ç¢ƒ|ðïO³œþ3/ôi¯ªó ~>+ê~ðGÏôû9Çÿã2ÿFŽ<ÿUæŠúŸ¼óý>ÎqÿøÌ¿Ñ£?Õy„ãâ¾§ï8²+LµH€1 nž·-Ö.èË3³}Y ãKHSIÖd;ªFUg>2FSd/žþKžl\¬¦JÜ—ÎómÝä®±·D–=á@b€è–C¼°K>­qäîï<§eóéšqññ™ÄW¯‚à8œw€N¾ÎáÛ;i™åi9û+¿ú÷WÔ$ùóöšÿÚOù•ßý>~Ó_ûIÿ2»ÿ B)ÕÛ†ÛžG‰ x£z¾èÇéUwyUQYjÒzz)'Žæ\øŒLPW×ÚŸ\V‰·³Ú/~ÃçÍëÙÄ 7‹>Ê[‹òV«ˆJ=Er#.yä”v.´9ÇC²ÍøèÁ#¡÷õ¯ŠªM¶vÓ a´™/ ®ÿè¡vFé>|ý¦¿ö“þewÿ@…ùóöšÿÚOù•ßý>~Ó_ûIÿ2»ÿ B,˶fҲⴜÄ?iÿÐ"¶S¢úáÂ5xQ¤¡ þØàVå×Üy:/<¦]Ÿ>‰àqñ|^ úÝ({þ åÆ#Äàß­Ò‡¿~ýÔ$¬{Jņé…_دø¯¸ï <Êá¼®›Í8o)÷)±í!•›¿kîÛ’ßå~©Y¿»kð®[(U¯Ev©fBîçký×¼o0¿î~̺òîšü˜™V]{ý)¼8Ù%Ö6_ŠèÃöŒ¸€Lq_ùÉ1¾­Z4uAî(¡¿m §CðÜÓàåQ±¡oLJL @Ô2Í4‰\âÑ£}|V¬ÆbóbÔoëNŠÓè–Òã™v£r„;òüdãù[û<ÿEÂ;röÏôGD¶˜û)?ÐwÊGÊßÙçú'Ë¿íùþ‰É´¤&aˆÕ<$arè°¸˜øúø=•Õ^N\Wtû KÑz¾Íóß_³Ÿ’°ía/©ìwï^àž_[@±5B7Ÿ¬écÞ#ÄtyÙÄ˼°çjëV«ª»-fë)ª‰b )A. 9ÂWPmY¡¥òïY‰ñλ(mY jüÏKLýÚc–Ô™ôC¿å$žÖ¯èóýÏnQ®Ÿè±èŽÒú|ôS0䨖•ëû©aÚ»z›÷þŠGmÝTzžÿÑVªÆ±´`Ç Âûh sÙ´O‡fðt¥]à†9¸Ö ) 9ˆi-S¢LT±´¸Çµs ª\f"&—º-P粚Ùé-Ö7„âˆckàém¬YÚ†cW]2³pž“ŽCaË$ÎNÐ1¿#™çú,eíWDü’G¯¿ôO m3/m'úïùIÊßÙçú,~]ÿoÏôGD¶˜û)?ÐwÊGÊßÙçú'Ë¿íùþ‰:#´·gç —Ÿ¡NñŸ½?ZXv·,¾¢|¹Ë‡^?§4òãÚš~¶Úú(÷‡pàÿuHZ·~ ô³õª•ˆ-¼%êÀÔÕ#H@R†\Qp»0;h9o¢£ñÇ8Ÿ˜;mµ¿º¼Ó1Y6•‹KÒÚǃ‚µi n{ÃO²¦•Óy§ å>å,{O‡êû]ûyW-–§¶8~¯·ßµøW-»÷KÑ-¦>ÊOôßò’>VþÏ?ÑWåßöüÿED¶—0‰Cj Óöïø*ý>âHík#Ôß¿ôSòÙ­#óý_gö«ÆÑƒ,- í{¶îY‚Δ’ò’a¸ŽB”$R˜süù'SñSFÜÏOx]²ã17;¢ÓþCšÊÎíZ4âÖXjÛCõk¼voJ•ÞPC,7ÂBE!‡1 ÊZˆ"\TÑ´½ñh;Ò\^"&qƒ¿ôV€B{K˜&QåÿÐîÿ”œŸ+gŸè¸On·çú#¢[L}”Ÿè;¿å#åoìóýåßöüÿDtKi²“ýwü¤|­ýž¢|»þߟè±]¥a1ßÃj¾Å—þ+î7{¿W²¦7TUy§Ý>é$vŸÕ¬½þ\ú)¯Åõ+'~þUZíæžŸ›@24Â.FøoK^ÑþàuÈYw–à =bÕ` nËYºÊj¦E˜ˆ @—×–Èês§†û*6|`s„¯ Ýô¯o·É3tKiqµ%äwåøÈù[û<ÿEo—/^Ÿè—¢[L}”Ÿè;¿å#åoìóýåßöüÿDtKi²“ýwü¤|­ýž¢|»þߟ莉m1öR îÿ”•¿³ÏôO—ÛóýYh–¯Àñ‹d/m ,†J/ÙÆÎ”žŠÈS—ˆ„ŒÊbŽB:ò‚uljšFgdz{Âî‡<­dZî òÖâ«U³";úq¶êÞ´CÁó2Êîè¯É©•eÖZù†T‹$·Ãnõœùq#Šë}E7è–Ó¶¤Ëÿ¢ÿ)9ÏkgŸè¹On·çú#¢[L}”Ÿè;¿å#åoìóýåßöüÿDtKi²“ýwü¤|­ýž¢|»þߟ莉m1öR îÿ”•¿³ÏôO—ÛóýÑ-¦>ÊOôßò‘ò·öyþ‰òïû~¢Äc;S±ÿ££ e -ö{ûu32nxUõ ëo–-!8C«¢¡ÈFSé²N*9ho®¼¨+|£&+Ô‡Õw!½ø¨}©êÐm 5ˆbÖ»9³gÞêÇ@>â …'èýD*õ.¸ V«ò”äêÌ7s˜Ë Hf*V7‹)Ðì:ø¬âÆÎÆq¦uƒ°ÓÖñJLÁ í.!õ>n„;þR>V<Ùçú+|»þߟèƒB;Kê;QÎ_þ‰wçøÈù[û<ÿE?-ÿgŸèžlòÑcHf1d³kK|ãžÍ—›Ž!Ã)&ÿËš<]ID¬·ŒÁy*€uHv*W7‰¡Ìi§MúªËŽì3Dêo1@åéïµÈÿ4Û{}§Ÿ‰©OEÛÒ윓!¾ï€TÂUb„"ˆB!„"ˆB!„"ˆB!€ ¡É‰!H!H!H!H!H!H!H!H!D¨D!„BD!&„H„J]ЍNÅî.ùŸ¶3áZÛÙÅû ïˆ-ÛVûñÛ›«Õ ðý“•a¦µXv')qH VÕc6“e·Â7ºå{ƒñÖu×·TWäŽjexMe9å9 Wc)ä„WÿÌÉöôÀÿoüA¡­ÿÿ³éûtž/ÿpýýóßýÏ÷ôWDÚ ºuìØØÁo7HÜê¨Þ<ÆlDÚŠe=S(‰‹I…Ix5¦cŠpÆç:kÊ<‡‡zóbs݈ (òò×u ù›‘[ë³[®`xß½Üw»Éšå`aïÚš*⚢€Œ¹ÈSn҉̘¼ìvûèíhžÜAy¼Ski±xz6ƒã6ÊöŠð;ÅæXº¼!Èe]P¬)BE —†f3L Å:74Cn‡½sáñ¯‰ì'PÛ¡ï\‡µFÍ$„BÐ#—;&â…·t1×޾ºT¿ŒËEbªGŒª¤š{Lw$nÕÆí{˜.Ðâä‰Ú¸Ý÷tä¹âС8Šáh¥ß‚{2Q~ÏzE”VB¬/Å”å„uïNö=²7;6^¤R²V°Ø+éMµûq¬+üñ"'ÍAóy|>+ä0ß5›ü~+ˆ¾hw·"0ûKâJÛìÿ›·ÇâWÐöWÍ[ãñ*‘6¾úv/Eb„BtŽÉ/Hyϳ]³<âxg¤Ž•[“éÆ,gÄM¥`­V“-iä)ÅŠ3Å”Öþ~+ÍÆœD9 uð×íL»#YG„‘Dô¨aü,¡lVzâ/IìªËsuEæƒ]4å4Ó? + ¬Ü÷òçø+ã±\Œ&³^»ÕjtòîOŽkj¶ ÚAúÝhJ½îÖ,âþuÖʯC(ƒ7Z¤†*ºJ´†à”ô6sJ; &&äÛ—w_5™Ááñµ±hǦºïºzÛƒi^ŸßÀð+`) M€_×_"´œ U‚ÅKp˜‹]EüGû_—föwqdztßíµÊ‡òƒéOOÞ½…ŠB!®ÿ™ÓíɃ¾Ýø’ôâí›»ÃâŸÚŸ6w‡Ä/©¥äŸ.ÆÎÛX;_ïm¥ìaÝ Dc½Öïˇ¨±+i¸“*±7T°i5E.zNa˜'¥„p˘^Þ:þ ØÀ¹ÃÊ^/k:)¦Ô6Áz·{ÂÑ:ö{Ov½Eб¶›£ª2Þ¤ bŒÊ`/‡na1®Jòæ¶Àï¯ß^õτúg—f}k¸~~JýÙò´=›P»Ê>{:Á~ífÞ ÷MãPhÔ JU×… 7™vSVã¥ÁÙ†×ù.†ãÎ~lß+ÓÝ¢cØkf¿¢7ŽÀbÙYX„ß­~YQøÕ-kïUƒ˜péªiŽÆñ?‡£ãÿK~Òí1áE·Çm;«Íu0h§î^ £¬CÛ•n‡þ$tíŸæÑxüW¡ˆù¬åñWŠq/= d\çó5ñ6ͧ‹Â&Ç:h;]˜%dÝ”54Þ´£Rëà \r¦R “Ôí74Ê@n£Ÿ…¯_µžÃ=UVæûºy(Tf”í#bP»Î;é¥Výݬû©[>l¢uœ@cŠÚ̲|C•9j ›ºfÍ ŽËDÕóØèº‰n" Ÿ’«zÝë^I’×ö,Ûcwt³uBo Ì_U{¹îÔ–*¾ñ¢õ`³*'Ì&Ô¨ÏÚv}ÚPûUà횈™E¸yÙ÷i§ÚºöÏ!H~„áxYß»Ý,@pgf½X²ŠÎe†â9„Ã3œÃ˜óÉ<·Èç»;÷^,³:Wg“tü]0\õZ*NÜ}¸öþP|H‰ÝÍåð^†æ³Å]jûœ+ÏY!>ìP…s¿ÌÔvÄ,Û8;›êj»µÕƒV¯wPÒ¼õ¡Ä¶ðÒ7©”=.ÒsLį¿}¾Åëv«˜qê77¾ƒÀRdØqõ»ŠÏÀѰZ<(ËV)·wnþŽÕ|´œ Bñ®ý`˜2®ï<Œ ®9™†wŒ®åÎüyVþ+^ÒfoâJÜŽ;kwùWšê2 É==é'¼O Y!„BR6#íÇ·OñÄŽ³|Þ/òø…èb>kù|B»IØâ^zT"ˆB.v³'{ý§oKUowD¸KèÞNÁbV³yVï0*ëL5*»0UÂSäžœhÂÆ³­wj¯1o¡F× MÑéë\íR[GÚ]‰Ä¼ô!!óE½¦ñÚ_P½›ó–øü ô;+çLñøÎ?4'Û‡}¥ñ5 ïIíî⿘U,”X!„"ˆB!„"ˆB!„"ˆB%.ˆD¨D!„BD!„BD!„BD!„BD!#ª)tB*¡;¸¯ï™›íå‚~ßøƒBP(DHe4"¿þfO·¦ûâ EÙß3ËÚq}»ñÕéó£ó‡x|øÞÔùÓ¼>]éļô!ìÅ¿­÷i%¶ŽÞðÝ.ˆ6[¶¹VºXÆeŠøÀ³v”øŠmi L}¼TmÂ×n}Ç¢÷±‘3 ‡àeÛŸq½µê» IžScÖDZY¼1da½^Õáâµ6à®È+âçõX«˜ˆSUA:@I4 29ù€îü{•¦3áXfsóÊ€ç[÷y¦M†œÖy[4 AþÞÂaem’ö|)R¹iø^WIC34Ì5KãžöEÄcª»»Öý¢ù#‰¨íõTy3œÇ»ôüÉØBíßuuüé»Bið1ÓõÕ‡_E÷™8ý?cÖ×ÜWÊXk¬Úûä¡–CdÖ…i€ñè4>W¨;ÅX5µ¨UwyUPåªtIéèM¥ž8½³K¢|LPWÕö©®ÏVN>#šËíEÁ?-wâÿ¸Ž½_Z¤òúCp›Ì<Á1ÄOü,G÷tW>+ÿÅtОŸ*k$´±¿ ;ˆ ÷†-FA}q䫼ò™v|úfšñãâp¯UÒq1q87ªÊ²{BôX·4„Q‹Üþ4  ×…ÿháEÝ3å4³æ¹³gt“3gv«Ý3Z4@ñ£d/0 ÙŽŒC8.V°ÖB¬/±1Fe1G!d9Í4ŽF< ­"•’´=‡C~[©¥¡l÷lPL ÛDðX],t CHÅ‹ÂTºé_‚uTAá.Uç §'4™"7ä¸ý¾^úr÷î‹ µk?´Ðxˆ7 ;îÁ¤p«Õ]^UG”!jӻБ.H4RŒFX+ˆ*Ô&7~GðþØP#œc0h„¢Œxn-Ü ¸l3MåÀ/RÁ¯P—g0É:ØÝ—V×>õÓb~ï-¢ÚÖ÷ÕZÃðTÙE øS½¦èë(¬åV^ˆÌÆÈ9çÍ9cÒW0¾W4j™¬†Õ` LˆÀñõÝ×`Ô8Uꮯ*£ÊµNƒiÝèKK†’æ Zb0’áÿšÚT“î< 2¶ ¢£Ñ½ßÑ¡ÁâAUíâ›®Õ&”«Ÿdtä4ídg‹ åuwßæš!—Ü[ /Ç1ŸNF-Åá÷j†=×…R+ª«ëÊÊ\Ä´Ñ•U i ŽHÝ$C._Õk#"š7Éråñ»5¿*¥|G¾ íh˜Ûto@wôl0Wà®òµ¯¶4¥\ô2ïM¸\íbdÂÊKrä'ž§Ëù%Û…óÂV:º5‚#]ź$ L‚íP¿z¹J¢q­]ÑQ‡"Ug)£Èä“…#nûëeœÈŸ/ FÝí­mjì#j<‚sÓôîNÈu^uذ« ?ÚÈ#h¹’…âò·½šë3;6¨—”«2ÃqX"Øç)ÄA:¤ÁÍ Û'gâ"a‘í žmzÖ,úÌ÷y㘄]{Âó ʽmíÝù"R¼.²×.iH0òMü±ðTƒ ,à˜…×xJ¯gÞ<(t†PŸížÕ®<˜¿)ÃÙóéšA‚N'{J¾‹/ƒ–û)FÕ Úÿ‚þEeÏváWýBÿÊQwäø»^mPpòøµ¢z$¼>=zªnQ,Àfœë”ª¯lˆ¶"öq‰bxY»õc[†«•g»­¥Q ÂpŒÊsa”ý˜8Û$ÍköÿµßÙñ2YÚÇíÄP>ÎQ,O 7½êŅôܫ=ÝM*ˆn€%”æ Ã/¸(ÁÆ×ÌÖ?oûSÙñ2\@cƇþÑh›CXä 6BÑT^g{ÝŽ‹öa`k=§/‰Fe1G!{Ò#ÁM#Cš4÷ÍV>ÏÄJÜìn‡¼~jkgqd= ‘L*ð÷Kexv›£’ºefá8‚F)ƒ0åܘK£qc÷\ÓD蟑û…Y|ÎïiÄöïÇW§Ohüåß¾K¯µ~tÿ€Wbq/=EH|Ñoi¼cö—ÇT'ofüå¾?½ÊùÓ<~sÍ öáÆi|MB{Ò{E{¸¯æK%B!„"ˆB!„"ˆB!„"‰K¢*D!„BD!„BD!„BD!„BEˆê„J]ЍNÅî!®M¡­J$´Ø xÅö¢Hô§‰snElÛžk”½r²­ÅVS娦ZŠS‚<ƒD"¿¾fO·¦ûâ EÖ{BŽÓ`ÈnŠø÷C^+Í|±]t<¬/¦ …„4îOœÆHèñEìßô_)•ñc\ö"¾ ®²M‹0vÀðá´¯hM‚è:«­ñx õù%÷Œ÷+šÎ¹eŠuMÚ—áèãåå­®Éû^â!N>^ZÚê= `? V:ù‚7¨»7€(ñÜ=íÕÚõk{s»–¡)Ï”“ÌÃÍÁIWKÇÂOèò‰jé|îÙ"Á mDˆG¥‚ãFþ}}{ý°”ÊëÏ:¹K?‹ôjÒí}F?è™}[»æ®¿œþVÌ_ø„âù[û<ÿEæü»þߟèœþVÌ_ø„|­ýž¢|»þߟè§=ìàÎØ1Ï„-ê, ¼0[¦êöñBÅ]»ãJW“Ðg)sšcˆí4f<µ}ÿ¢ÇÚœxŒY*ûÿE T|Ø „´ÿwæ›×ÿ·÷ÿÙt}™Üÿd˱¶ÐvÅm' ÃL_Žt¶‹N!˜U×C*Õ…ã" 0HÅÈygÍ5Æa!d.ptø­qØ#„½­×N½T'ælBo÷¶ÑÚÀ+].0]¼Zoˆ[‹öeêÕpˆQÀC„\òM»J@!,'S·ÛªÛµ¦cpåŽ:š¯´Z…Ùû{ûg½¤˜ÞD5|÷p‚ÌC«¬³¾e0­V/eqM”þ—!M¤cqP‡ŸŠé™­ÆaÈa yûŠº¶7‚ìyÑ´œ8ð…­Ç¤e@Ô*}jgÄM•iM֜¤¢cç­2æ ÉŽ–cƒ™CßßÑyøé§t.ІœÁæ‹e‡­fø&wY'„ç´5ŽÞLÛùc»t‹KIΨ*0”«¯JIðˆÓwœ„ÉYóE3ž_”:¹]ÐS>x1&j­.èW‡âžl¾"£l+.³³n‚ôG{íßXße1•ÿ ´nܲ‚g,üwÊ_›5k¶€¬%`YgÏŸ6]j´3ÙÜ%lfÒL–ñoLw:˜ëÞ¯›ÖCÓ[)™Tõ,¢&#©' 2Ôe!ÖWÃ,G ²vûlî·–L<°œ6êvûl?ÜûÙT.ïo—æ÷ÞLÂ¥Xâ.:®#E¤Â#Â!=a’m qR<î+Ì-à®ÆÉ!·-}šªÆ~t¸°´Æ…qBN|P²¶nëña½Z~@ V°¤ ÄiœÂ@ ÒöpóImƼ¾>ÕÚøøaãøwû—jlïeý¶W3ãç^èUÅ÷ÑÞ›c0•)XO!P×\èóWW$ñ±XŒÌpÞÚUs_?‹ÅgŒŽ5í¦Zæ¹sæxˆØP€Ž’m˜Ëû|ÿLµOO´~n+ÖíCXW^Ú|Bê=ž­RϬ>Ç]jýùÁp7»p«×] Õë«ëêÍ5kHlŒ:ÈsòñXi1:X…ƒ·‡äW“‹ÂKŠ•ÒÂ-¦¿/#ö©­¯Ç¶„ê±çsåðèðr- ·|?q ®!Tx¹J8«ù8<åC¢eQ™o¬y ¯Ç’ç‚) õÏ!¶oT©[.za¶–ÿ»o„|(½øº5»ð±ÌµÓþ ßï“®X²a¤õ2mÎù¯BhDxY=L»s»ÕMv˜µ‹>‡öɳ-óaz/½wÏŠ¯6Ä®ã²A®©‡b©s’c‡ÃÈè”oUàW6 ,˜Y2j«¾à¦ÛKG­ŽÍmEîl4) oA|<‹ ‰P­Bލ&sÖ´@¼j2 Šc†õ£|cÚ5^×6׆HZ}gUq²žìöÙáûCÝöf§¤n…"p}=*XͺæCGT¹YL¾ðä98;Ìu£ðŽ„\šCª‰pN§‹êžC¯*T•­Â‘uí/ BÌ8÷«oEÁžø„¼ …9¸Ž`/d†Ç”µÉ;¡‘±¶?a›ô]ÐLÈ™‡‘çO[ãù§½¡mZ¶ë|Y}–Ä;ú,{‚œ »¹EýÊõkÖu‹ˆEe’¥K ™ƒ³ Ì@<>L;IJгM–xL,¸YDÓ h»çÝÉMö•7GíŠÍ-Iîl4) ƒÐ^ïâÂbT+R£ª œõ­/FZŒ‚b™aŽxßM¸Õx\ø?Z!iõT=ÆÊ…mcŒ{±í >® JNíÎýÿ®¾:¬«ü\Å*ÅK$ã>Ðe$× ‡Æ“¯1ÓOÅuà°þŠ®Ü]Žš~;ÒyÛ.‡à‚âHZwî÷K3Õ‹(­½RÃqÂa™ÌaÌyå’S#Ÿ‰kß¾¿gÊé1|›þŠm‹â:ÚN2Š6¶[2tDØÞÓ¸¼w¶”„[ÂP1”Ýòâªó)SXe…­ Ì[|êµ[áÃ&ö>|·zÕYóü §Ã•ìyj6¡á+§cn¢@åÀû´ª<œÿÁì—±<ç4ÖÖ%‘eÊ[}û‹ZE)ô¨áÉ”·7;ÜZégE‰Yk²Ëvxï…T0òiƧ~5£­Z¬@Õ‰ë Õ*È Ãçùž•!xFËÈ8ù\ñ1:¿~*+nSùñì.c1ú?ñ"&"_ŠÚ›MÛÿ²«ö4ÙòÇ£šá˜¢*ƒÅàök«öŒ{Q+¡¥q ÂE€P‘JPÈNc4ëÆã&ŽW1‡M:t]¸ì|ñbÆ;AʇE6Ú‡£}¤,fŠÛÅÐÚ/Ëök儼¥™RÂñJlŒBŽCŸŸ4à #£†W³}8)_½‡]<ʺŸP«ï8¢§‹.{8ïÅÚÓzp¸¾ o L5E r’q¶G5¥ Ðu_†«ÍlÏc ÐÕøJÙó5°XÜ&Çgµ’ nétÖ ñ¿ÙX±W‡2ãxºÊŒ®ƒ-130Ήä²gwÏÊO*=ËДÁ‰q™ïÊO*=ÃuXlÃÂ]—C÷W‡ú~™tböŸŸ³ø.Ì`Ò+_gðSW46gl;9ÁõÞ›¿¤Þ9‡º¼¼R+{™W-GOy2tÜhæ}W³å¢æ|üx§’«ÙòÑ&Òö±gðöØVi¾"7E÷ ¾¼ØLK»ŽÉº¦Š¥<ä•Âá¤~ô=ª¯˜<$¯ÂÉ”{U^Úší)' °Y½¦½Í……apzéãÚÂbT«P£ª,ÎzÖ€¦–¦Ã#òïÈõPcŠL,\Wåö¹­…"hÎ,´h¡Þ.G´V,`¾¾"ýÙ…!Ô—Æ4­¼(”ý’ÓT†c1N|D!±³PÛ×ߪãÄHÂÖBÍCoZ­õÙ4|Ï–Ç0‡Û¿^“ùü>Oj|éÞ®Äâ^zŠù¢ÞÓxÇí/ލNÞÍùË|~z•ó¦xü ç/šíÂŒ2úËâjÞ“Ú+ÝÅ0ªu‘{Há]TÈM˜zÓÊÖ{ER8Ÿ'²®ëxsgÏøeõ¥=&>Ekèstø#u<>·ürúÑé1õOC›§Á©áõ¿ã—ÖIªƒƒ›§Á©áõ¿ã—ÖIª‘ƒ›§Á©áõ 3í•“TôIF¤-AË)I7ßUÌwX¡„BD!„@ ‹$"ˆB!„"ˆB!„"ˆB!„"ˆB!„"C!!—D"ª±{ŠMf‘¤GGL|"óÀ>˜o0Í7 Ö]Ö¬ÊÍÀ°¦(̧0f¬õB+ól8Ò#vX°¨¾/ycßMÝ!Ä5\+WyCZ¥eàVR”$R2Òz¡.Œ§’_ÿ3'ÛÓý¿ñ„"éŸÚöƒ³ksA;à¼ðþ:1[ «ÛÅëö8¥+Éj3”ùÉ>0óHdâU÷ó±…ÄJeâÕÿiSo C}Œ£÷æÃòSë|Šäôl/×}Ò˜íùl‘œÙ E+ã] tbºpÈ®ºU…â Á#£†É¤l†7gdºÿÄ­¢d<=“ÑÚT&ÏàŠŒâ˜_c| Õ–»†ŸjÖQY CpœÆ(̧0f¯zo$Í‘¹6Ÿñ]2ÎÉXXüEƒýªÒð‘´7ØÊ?~l?%98­ò+ƒÑ°¿]÷J<$m ö2ß›ÉGõ¾E= õßt£ÂFÐßc(ýù°ü”p0ÿ[äSѰ¿]÷Jàí±ç®ÒqÂ(†Â|-\C§­¢âLÊ€½i jŠ6ZU!ÐSÝÂ5­„ê¾£Ö7ÐÃc]vêªUžPfÍ:WRŶUH$2”¿OÒh´ø+Nж…¶8Þm†"ˆ¼­Î–Ú1 àïdW]'…ã" 0HÅÈCLù¦ ÂÂÇfh¢¹cÀÁ³µ´|UJo(>”ÝuŠD!„BX;;Gå³_sFû¤^Å`à,W÷W·Š*•tšR¼žƒ§)åŽ".,NeÕ¬qpzD.Œš¿ÁtïÏóÝd³ÿáÓÌ=‘GÛòýWŠ{_æy~¨ùþä›üûÿ‡Hù'ûü¿U!¹åú£çùÿ’oóïþ$ÿ—êŸ!¹åú£çùÿ’oóïþ$ÿ—êŸ!¹åú£çùÿ’oóïþ$ÿ—êŸ!¹åú£çùÿ’oóïþ$ÿ—êŸ!¹åú¨\µÐ8-~9ŽÏ¤ÑNl[Öœ.I•vîFºªž)sMäìÜñ¶<Û_.§Þºeì¬ñ2,õ–ùuñSOŸëþIÏßøtÄöO÷ù~«˜ö'ûž_ªœYÓ–…i¤xš°mé»îÁ¨zR¡UÕåTyEEªtIéèLeÀGó^ û2(+‹%‰üÔØ-#hi¶e¿6’˜p0ÿ[äW7£a~»î”¾6†ûGï͇䣇úß"£Ñ°¿]÷J<$m ö2ß›ÉGõ¾E= õßt£ÂFÐßc(ýù°ü”p0ÿ[äSѰ¿]÷J<$m ö2ß›ÉGõ¾E= õßt¨LpÕ´AkÐ4n;=™”ÐÆð“JØM‹Ä©*®ÞTS)èiÎYj›0aÛ¢â{UÈò]1· È_Ú¯é<”Ô-h` |ì£÷æÃòS#ÿ›äW9ÃaI¾7Ý)|$m ö2ß›ÉHàaþ·È¨ôl/×}Ò C}Œ£÷æÃòQÀÃýo‘OFÂýwÝ*®´8"ŽcȦ*Øß÷k¢ý£Â²WA BðÀP‘JPÈNc4ëd­™6Ÿñ]ðÎÈšÌFƒ–UhÑö…È»2ˆ‡LØ~Jr˜pçÿ«äW ÃaI¾7Ý)|$m ö2ß›ÉHàaþ·È¨ôl/×}Ò C}Œ£÷æÃòQÀÃýo‘OFÂýwÝ(ð‘´7ØÊ?~l?% ?Öùôl/×}Ò C}Œ£÷æÃòQÀÃýo‘OFÂýwÝ*¶mâµèæ6ùß Ð1>ïñ>•°— †Re]¼ëª©èÓ9Í6aßYÄö{Šêa_ "âû7ý'™µ4-£í  Ù˜D;úfÃòSë|Šæ8l/×}Ò—ÂFÐßc(ýù°ü”p0ÿ[äTz6ë¾éG„¡¾ÆQûóaù(àaþ·È§£a~»î”xHÚìe¿6’Žë|Šz6ë¾éG„¡¾ÆQûóaù(àaþ·È§£a~»î”xHÚìe¿6’Žë|Šz6ë¾éG„¡¾ÆQûóaù(àaþ·È§£a~»î”xHÚìe¿6’Žë|Šz6ë¾éG„¡¾ÆQûóaù(àaþ·È§£a~»î”xHÚìe¿6’Žë|Šz6ë¾éLnWå²:¢çäNÁ²½ËÕùq¼š:pÈkû‚ p˜¥¤¦áœæ3Õ.æBæ:]Þ©[¹9­iŸFÿiOjíhB,ùÙÄsœºfÅòA+ÁÃýo‘YŒ>Çñ~éP½žÛ6„³KsÁ!³Ùž ï¾ñΕ°ª¼¼\u½Ž*e\µ9h›bg—ñ+Àû–ø¶áq™8µuý'¥5ð‘´7ØÊ?~l?%0àaþ·È®_FÂýwÝ(ð‘´7ØÊ?~l?% ?Öùôl/×}Ò¡B4miö>ù³èºAà |s¥l+nî×+[Øáœè—h5ôÏ£ 0ðÈĺî]˜1…ÃÊ%âÝ_ôŸw☶„³‡•¥má¹X—‹2°ÁÞ¯Ô}!Æ¢Îtd?tv†-˜F—O!×ËEî3q‘t? NYÍ–ÁP£¶;¦ù§0:ìJÀ®Ba Œq €ÂŸœv#0†Yî÷þc¹},`BËoªßµKZ,¬€PjvÒ&˜o‡?¸"œØ¶bð9}":Ͷ­å¾ÞõxälºÆí»– ¡Ý/ÖñãLžXİcÍu‡Ì¯È%¸wþ×ò¦G¥3èy«g›éù ÈÂugZWw ¹T7ÔôNˆ‹¤Ó2?U•fö½ÅÓÊ_©î^egvÊE`Ìrò¢˜úS4mx«ºI®Ë×?íŸaŽ×û™²5‡UÐö-Ø-WPŽ T«#¬¤´”£ g§r}Ÿbö§ ¡Ù°=4÷kexX¼/¤fwÿS‚áq pŽŸÕø~ê}© NÛ¯˜Ð y)oƒˆÜl¸m rþ¦‡þˆUõkŸ&'¯·ÃÙå9I8háÆ'Ðó\+ºúVˤàæáqëÕðM/hmôì…ÜÑsÓµî+° ¤ë£2˜H˜ç0˜&Ñ⢒WB×zÍ«ÐébÇ—E›¡{Z׸hë¯ Ó´Cfѳ”" z90ýÃoORl6"W=“ UL;3”ó’cia¥áäw·yt:åß—Åhü$¬Í™¾Í^£žÉÚ7±KO„¡†¨‚"…ðNÆJEjüs9è¨àBð‘`˜xŒsÍ0ÂöÞ #`†Kqºõ]â´—³ñ3‰#tUàëÝæîOPwl¸’ˆB%(É€"T"ˆB!„"ˆB!„"ˆB!„"‰ „H„J]ЍNÅî)5šAq{0B‹³ún¼Ã3_«WyB³,7á"؆’Õ­Ý©•Øu•Yý @Ü»ãß½™Ú7òõkÀ¤Fêî¢fª˜JBEϦÈPŠþù™>Þ˜íÿˆ4!ÓÔøµùêˆB!„"ˆB/–4;Û‘}¥ñ% õŸóvøüJûÊù«|~%R&×ßNÅè®ùšo8yŸh×[µá ãÞí—»¹ëXMÝC2ñ[ÕR¶ð²/ðÊa˜§i5ÇH:i§]W™ÚÍq€tÒÇ]|—:åœô—$ôµðÕzªïÛç{ªð-Zw§³ÿµ]{+øÞÇ¿É80¾‘Nã÷tüô¿_Ò<6ñL–weðóLÉÚLvC¥íX9AÖvÝãtq#G “T¦ì×aÆUyLE6’b’1š·Ö¾+Yq.Élõª½·ê™BŠØzeïpŒoý‚ÛqƒšTÞ¬"óÉ`q'DÃPK‰rÇžQ”óÿÝ­1lYåz릪màzÏâfsÙ}¯„c®Í…Æ0úö0i§‰gŒ/8”ª*Ãæ!U2Ô@‰‘ž´ŒÊ9ë~í–+)Ó3+=÷W¶ÝS×ÌÕ‹¢NÒ.ÈUÞÞ ]OÁ[¼®U›p̼긄*-& è3 “ÒcxÇ•|V¯]‡/#VÕ}ºª³gˆ¶lNx^ÂëÞ »Ç./nîÔ¬[ب³Üµ S«7£Æ_[~k·?£Äd«¯Í<À%´Ûct@â÷X<Ž\^ÝÝ©X·±Qg;¹kÍ™¸™+oÍ1Sð"2Vßš~³»/‡š ÆX¢Òc¾ƒº^Õƒ‘¤gmÞG4p©=JnÍv`W”ÀR3ƒ²Æ3Vâëâ©.%áù!m‘¾µW¶é–×à.‰ ¹ðè{ö|^‹÷qq޹¤«ºƒV+¡aÄœ`S0˜ L2ç¶»G ÇNŸj¾~%´Œ®czéïÑM6…ÿr]ñaÐðûHžÿ·†¦^¤õá®oYøõ7re‡&r'p­ètä}÷ä±Âòrâ\=ç-ùß’¢Î8‡:—hX¡„BD!p|ÇÏ'h~‡gýé<^×þÁ|ÿnÿGà»p4O|êˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB$Ì)dä«81aɶe°G!ܳ q p­@þùþ+õ>Çh.žÿµZŒ—ËJfU9ßpåÅ,Ã1OŒÀŒTÁØ<0¼ài¦¹}a©éW¡z2äh8Õ/s¬gP±K2üH.”Æ-2†\õü éO6 ‡“†“‹Ä«Ð·.RÞîõé[ê±c^÷‡9¹@¿5îñ3½‘´ê0 eÖ_f9§j;³pX—B0¹²Ö¹Ü7÷Žê³à³„M#³èoJ½»Ö+U²­j2Ó^•šš‹Ù®¯?$çdCƒ–wJs¶¶=›Í¶¶j®ùßr¿Ò¦kòY‘b…®–ÑRÍr*ÄB¡³îédØi{3 ‡‡Y/Rëõ»úuTË •…î½ùRlÃèOŽ:êW¦4¬¥…i¥9KáKƹžù02œ¹ÂaêOÝ\¿8:Ö·íD¹ }Þ™Bί#¿n™pí}iýsÄn´¡]2/!Oƒ¾fz#ÕËíò[­ºjô®æ¾ˆüóÒ£~Èë¥yU^ºk¢®Ù!·Ý¨Ø, @,;áé ƒ~øg¼*¬>!¢µÃÖâƒn}å¸0~:ζöé¼kòG52¼&²œòœ…¸üý¤"¿¾fO·¦ûâ Eôõ>-~z„"ˆB!„"‹åŸÍöäFi|IB}Ggüݾ?¾Ç²¾j߉T‰µ÷Ó±z*õØmóg°•¯(Žc¨Ø[¤ …cÝ«×㯔.T~5`kº*(æURÊBœ˜æHø‹#}ûkø¯?´™,ðâmßx¯ù*ÂÑû¦2kvÂÑ DŽ’ CØ–3ßÔB‰‚èó1da1sœé˜d)Õ$ âEÝsš ÅÊïš³¶»·À¶îŽþ¤ÅźqB#¿¿½ºÏÉ’šn¼úù³äÂá=5ºî—è٩ך“ÞÌ1$=A«ݤB{=d/WCÖ6ÝÝ,X ºÓŠ3)êáíÈDD¸¶:GQ0ët©Žd’º¸9«cš·CòÚ!èwi7  ;YÆ9{:…£yDÕ‹Þ2‚¥^,*Ĭ·0«á(ÞQPÈFia„sá1»Õa½sߨ"ø $ån”7­o~wä²€ØýŽÅì6“ ÚÐF¯gXâS2ô‚¤Þ0p9IIV É TR¨(öMˆiÌÊ}×ý¤ÃŠi…ìÊ;øß’dØ}óg°•±(Ž£˜ßqnš•v¯_¾P¹QøÕ®è¨£˜ UK) iŽdˆ²1wß·ý«ö›%’#M»ïkæ¡Bü 3¶õeѨ=wxÍý»n¯bšV Âú¥+ÓŠs¦a)‚o—‹HÚ¾^íµ]Y8ñÔ­«å};ù©©ãË?ƒ hæË;¦,xdÀÄ+×­è•RÎ5åm¸¥fXy;Cô;?ïIâö¿ôxþ çûwú<Û¢x«çP„BD!„BD!„BD!„BD!„BD!„BD!„BD!„B þaK'%WÂf(mkÅHÂiµñ'úÐáxÿþ+õNÅöçÿÅ[¬-*Ô³¯Ru¤Z˜WL¤Ÿ'Ù½¡a–,í}XÍ—c{Òï–÷5ÀÕw!©{ÅF*– £ˆ„zaçÝÍ-ŠÅ`eŒ²>WuÎã^®Š¬ŽVÑsïÁ`Þ¿ر¢îŠ©Ês”¼þòsvŸh n%øÚ¹ôwo^ Hbá06ö¿5îµà ­:š•-¦µuJrÈ3ô§¡7mqq2Ë#?†ü¹››|£Õõ€±G]C • ê6X¬lfÁ.fRÉv ePÞ ´óô¤ÍÚ˜Q†“ ‡ƒ&z³˜üT²™Žu×u-9ió«±»-HyY]KWŸBÊtó¦Øqr‚Örò”ùßüÿù'îCeù¡ÝZvfª_¤3ê"hº•ʦ«éÖĂ,Œ9§»Ù›Ä"Y¶åßݺ̹\‹`ÒÉYáÌD³¼Æ-,ýîIõ 2•3Ž ×¢?ç©Þ‰e(+÷#þpZŠoD²Œû‘ÿ8-E7¢YJVH,¦%!xõÞ´Sy²¡6ÁfNÇ»¡kê]6å4ß2HÃy1)CŒæHÃM<~ÑìæÌÞ$CÖøë¶õÕX\þr˜†¤Ý Õ>K^kDˆD!„BD!„BD!„BD!„BD!N‹ÜWÎî«|Àñ›²Ô¢®‹¾—`7çØÕ†’ņiêTõ“¬Ò©—0"Åë4³» ‹`?¼ tÓ û­¡‡tàׂâuk@×÷µœ21h»˜Î "çãR>”"¿~fO·¦ûâ Eôõ>-~z„"ˆB!„"а¿n-»“ÿ:wb>oÅzŸšEþ_xû¡ô§ à;ª¦ÐìZ´Xɵái+ºFéV$ÜŽÊNϺfB•£­R°¦_xbÜ}Šd˜ŠvE‰t@6= Üï}½|X×ÂÀØ´'s½ø›&=ûCÞ’LÝ —[Žòž1ìš¼·ø)|^µÄöõÍøwmûµ|wôñ?™®oûoݬ¶?ùá?T'9³n¯`ÿm¾ö7ñ]¿{šN/Ñí¼þ¿Šc½Ôô~ûßñP¯mZÏÂØaû/ŒbOƺbîEùu —°õªÉyåi7Ro1æÛ‡“„e`§OÛGö|V /ÌÆúßÒtëGöUÛdP@àçs=ƒ¢sU¹œ@ÏúÕÚ2þ¼Æ2Å׫cñö4.IÇ,Üj$zÝ{P^tø=9ÂÝÌõéî ¡köƒùµ+6Q›sÿ¤ ð <*ú…‹*ZedÈšª€E6ôhŸ¤OÌNÚVÞõ¿¡Äð[ ó<í¥]{ú'«D´øž0k…ìÒéÛÙÕ@>Ù·©÷p­!V3ñ.-+¯ x<4Ñœ„@Œ€9¹ä9om/ೋ Ç3<ΠvÒî½ÝàDv…àtb³OÕdçÑ]ò£>ºñ©]ù>³@ú]S"Èø…¡þ¯Zîéä³áÅÆÉŸÕë[éÓÞ«™®ð4lÒêw¼aÌ¡’ô]ï\jµ˜úÚZoTR«³µ9†@}¤Æ‰‰ôÑvv»X'&úX颚Z%§D*#È^Í >œ½Tí—zvŠÒc?âRºð·hÎB ƒ k›žC–öÒö÷.h°­s3Îêm.Èßn‰–'·‘pXìS¾aPf‹!|&ù…qõaq+ÀŠFµ®õ]zþœ–ÌÀ—ÊÖµþ«¶5¿]/¯æ–øa™’€O§Xÿâýƒwìž§OßöR=ýB‰ôkñPp²ÿ‰ôkÇÚÛmz§›{‹ì‘”#fð³ÄÎW¼YÃÄ7D]»°¤"Óx¹ËJÛÀ¨¢Ó:‚c’VšédÔ7—¿Aî¥L4LÊéäÔ6´÷šð£ö©ÅžÂ®&c…áw~ït°Ö ì׫Eg2ÃqÂa™ÎaÌyå’c$Ž‘æGî¹æ™ò¿<›§âè ‚çªÑ*D!bÜ«sþ?ñ#§lÿ6‹Çâ½ GÍ`ÿ/мS‰yèB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!0¥“’â ±âVøOn¸•úí53áhÝ0* êÈÃÉ>‡‡†]±ü(þ íÙ‰8\W»ËÝÞ®[=Ú>x±˜¯^¡a%O”5sªz*Ë$ü×þžž2^žšûL6' ‹htn£î*SáÞäßù%ÿѧŸòDߺü×P‰ŸKÉ ?¯ÿ&¿ú4|‘7î¿5<&}/$xx€þ¿üšÿèÑòDߺüÓ„Ï¥äöóL­ÓêF’&ý׿œ}/%¬ÙoðB¥" ×#åÀ»ú/:kaNó¶œöüÕØ™©w‘\Õ´uº´Æ¬fvº•aØ„8¸€Õy3hb‡š}ŸcöÑ$Û¯žíNØ…Ñð°ÚƒÏÇܨÑáõ§Ó•òƒ•®§t­\.fu P+ª”µOЙ²ÍþÒ°lµ‚*)¿ÜBöݸK… Ô±W”9ˆ:úeÖu+ Ã=ªyNiye—Ô‹Ùq¾†«óPÆ3Y w-(™¦z¹´ºC6²Jí’ýkNð¨Àã6JîÀ}T¹&‘ £w®sÝY|9Ú£Œeº üTQBÓ¨\ UG Ò2õúS¯M–7Ú¨±ëxÕ]çüYSâ»OçNðøÐwQäàP„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"©Ó±{ŠãÙÎ2†`("4‹ÙžEwZs`ö¡R±eÝk+ná™@ÍAå×ëÁÄ„SöøÎ#¶ý•-:,µ7žþ}Á»«p5\«QÆ5Ý´ð¨) ²²*V`šxd"3"åñ¤C-PŠþù™YmÍý¿ñ„"úxŸ¿=BD!„BEGØ_·Ý¿Éÿ‰;±7Çâ½ OÍ"ÿ/м}ÐúS…p×:mFÏlq\b®vYÄ–z®­äÍ¿™Y÷ìȬ긆K™îWG„xéä2OO acsÓùhtüízØ#lÏħòКּl}ŠÏ±øŽÐ_ÛÄc›3è`)X_£Jñ3ª¼Õ‡2.º×æNyc¤pÝv}Ë’xáepŸc^UT¡{ Ø!lH±t°_»ÜYu`¸¸º½Ëʪ¯|ÚsžZbñ~“”Õn·Çc†')ËYm=Z”$ÿ{í'eK½„:\@÷ÞM7ÊÃ~ÊUj¸D@ǨÀ!Â-F@•‰íHû«â©ØÌ<±Þ¦«Àê¦Ö†ïˆЛ[-tuî¶îáë‚Vц‘ÊcuK zŠ\ôªa˜&¸5öᾫž±¯Ã0ýÖ¾~KŠ-ÀßÏhE­Û ì¢ËÙen«hÃÈåuKMQ@K˜„ªž¡$öbÅ´85÷U^‹ß‡Àë|öã-n4] ¹-¶¦7 ®t¸Ì€ÔǼ”1n¼*V@­`õíf€´ÑîªóØø¦¬y¬½×wªòØè§…±Hì¹oZ&ìÝwWššÙÚ i^ t;¤î…–¥BÝÏwQOãjò_{"¬Ìît‡1L¥,¯^{r¥† Å£#Ö¯^¼öå^j°³ÈRØ`x1’Æ!gvÔÄÃÚ]ã!îê9šMô9`‰†f1™ó>S¼Ò@2K ‡ŽíþŽ¿ûy®¹¦ÃÊã‰y³ôu÷{^~Iî)rZ l1TkÁ]:éi™©‹y©bÝxU ¬ZÁûÚÌ9i£:ª«]¬lo5–ûîÕ觉°Êì¹o©»;wWš„Z}“Çñ}ZŒA¸0Qdp‘[ øâ“ÙU‚µ•«(-ДΞ!Ö,DqÈÆ“ê¶õë}Ü—D8¸™4l¿U·­o}ܵÑu1{!0—›¹<’¼5¶Ñh;Ÿg®á‹ ç~aïðÔ•Pc^+(“Œ™ÔN˜fÈ(‹iÜ~¾k³ˆá ®Ó¸óßÍ>YóÊ!zÂ,O¦èÛÝhZXÕm8a˜ Ö’E4È6ZU!Ñ+#Z×Sag3ZÇÓa?”¼É‚çBD!bÜ«sþ?ñ#§lÿ6‹Çâ½ GÍ`ÿ/мS‰yèB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!0¥“’àOš0Û.þãøš„ú‡ûE}n'ù§÷ÉRâ3)«ŠD!„B)tB ÚP¤‰èƒpº†hTÔçR½AëVj¤nù@'è¸9¶í+£gn’t*3èŒ÷ψá¥wôë*òœ=еøSÍí.>6ÚüV>Wp÷Ӣѵ§=­6¸Õ½£fq;¼•¢vP»¼1K¢¼ÆbïM0raìn}úïÕVvÎFg“ä6Ëk,n%,ÖxõÞÑjÁ¶\2«¼™„OÀ¸Dá#Ö]Ùe$ç{°®uâE?ÇÃnî‹HÛ3@l'Õü‚®Ž<Bp'Z/\ºYzÀ¾ºëq-ìÊF!2hs°G4û6ómàªguŠ Wœ2å^Ñìl=;½’EYŒ‘€jÌ ®€¼³šuÅ‹lÏË£™è9,_ `·è¢YæÈS¬š¹`7 ›í5¡KTpܽAëVk¹¾JÊøSâ{AÁ؇Ýð ¡Û¦âUBD!„BD!„BD!„BD!„BT騽Åql“`ñ-·G ]®Õâïr0Ò/G¸‘ZÌjÖ™ORe„2Ę̂KÃ:g1ËR)þÖ¶]nL02—›ÊËúf0µ[©Ï¾ØÛ7f)b¢®ëŠ{õ׫än*©®A"‚s@@PŠþù™¾Þx#íÿˆ4!ÓÄøµùêˆB!„"ˆB*>Âý¸¶íþOüHé݈ù¼~?èb~iù|Uãî‡Òœ+€î¨í¢l>ˆ·Ìp6WÓ8±x©bß‹Øñ`Zà+%*Ë=3¦ZŠz|d€³åoºü¹ôµéaq²¶¢âeo¸Þºw#aÈÏá+PùÞ ÿÞõ Sô¯QŽK–”ž.´ÃuEF&@J¡˜#4’HCÅË¥vSÚ3Ë$¹d\ºX×d»üðŸªsœÙwW°¶ß{ø®ß½Í#èþ¯¿¯â£èž§£øïáºz´[NˆYãÈ^Í`>=ÝTí›y‘w Òc?âÒºð·hÎB œxv–gå½´½½Ë(°­s3Îêm.ÈßnˆqÚ„B÷ƒŸŠÐ%ý¡90ûÆ Þ„-ÍúÁºñÚj@VðÌTŒ’\ÀÖ½§7ªn麗aY¶ÿQÛ¾ïù¡ómPûd ãxÙúŽ–=b2´t}ÕRÆMã‡8O\µ]*®Ê7YMTȳ˜$7 渇è¿wçjYƒ~b$4¿:¿÷l™"›_´ÚüS@¶?Ò¾ )·¤*}¤“a?„\„{Ê`–f>^÷Õ÷tW²I%]ò'e6²ðÑX79Þî qE®›­ðâ‹ì è˜Ê<`¥K+VP?é#! &2ÄYNÁØþö¥†"iÌÇo.ï5 _´{èÍ©XðA°¢ŒÛŸÝ P×…áWÔ( ¬YRÓ+&@4ÕPä)¿¢ÄÿV7æ<´­½ëC‰à¶æqÛJº÷ôIÛÐ±Û Se®xS{ElMÐÀ ÷[âñH/_ÖŠºî•\få ˆ%™‚¸Û34ÝšÛóF`3DÙœïTÝšº£¦œÓÛ–ÚaöHEøßhJ:"÷†ðý uÍcVìÄ,fëT«¥máh7V¦©B™)ÎÖ³Pv?uwïÉQø'™"Ô:èíïÓ»¿~J”Û"Ób­›¢HZÒ ƒ½ÞÂÊFmê­³xÝ4ªXÑÆ¤´©»-Æ!UæS§n Ñ+_Ìß.Z.ì¢v¾'æ »Ò«M=êë·Ø² eŒá7…ÛÅÈø‹1¸x‚ä‹·n„\o9i[x3™Õ˜äœPÆÜŽ–OX7—¿OßUÁ†…¹]4‚ÃkOy¯ *og°«‚ „Xáx]ß»Ý,5ƒ;5êÃÑY̰ÜG0˜fs˜syd˜É#¤y‘û¬&™ò¿<›§âè ‚çªÑ*D!bÜ«sþ?ñ#§lÿ6‹Çâ½ GÍ`ÿ/мS‰yèB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!0¥“’àoš ?Ÿ/¤3ñ?‰©ó§Ô¼zÅ}f$ÿþù(K¢ T¹Ö­µêñÁ(4䲿¹HD4)§¨ÝKˆMY(#ÒÉ[Ý„?tòó`–åæí%xcª¶FuX.…!0’#¯í5™~pÇÒR#ªÀaX^²æ‹=hᤜ8ú£¢°Çî€ûEž´p‡ÒN}V&„ Ì YÕ-6…œ'ß÷Í„ºƒ€¨ÔVåhs<ŽÎ¸¹A§0ä#Þ”|yJÅÍÊi4ŒÄð¥9PEiY„~ÌÂÎ O…×jÊ!@Ò#9Ô#Ù'œé;;µclf)ÍW½fýU¨ïmPÖ ‹uÀŸDEêÝ• ÙJ¨BEŠÅ„ …f”þ|’Á¥Û)¥-ÜÄʱum)’ N‘ÔK-y§›‹í( ­w­úû”(Üб­¨ËÖŒÎiOîI>1ï/95¶¥x›–I@¤€& 蓪‹£*¥­+AR‚TažSå>céKÆÇHì­Q¾Ê@ÅÅmŠÄìîªå˜õêÃþÒv|‰ú>cóQT½üÆ_´ùkì…_)'b~˜üÑ4=Ü/‡iÄ­Ì—B!*Ê?Šg&hżWا*l6F¤2r“Õ2‘!H°™JiD!%BˆB!„"ˆB!„"©Ó±{ŠÃ±k´«W—ƒøk{îÛ¬g޳ªº½®*rÕ;³é9K9LŠÞÛ‡f¨¢Ï㸮/„ `³,&«y+YwZµ*ͱi—Œ×œÁ˜¿J„\À:ŽˆE|ÌÌöç‚>ßøƒB}è})¸ê©´W±C‹cƆFÐ]/׋eaÜwd(­8 š/Žc9Qw ˜:˜ØdhÎrž´M÷wWšî‰¸y•ç)蛿…y¤°XR"eŒbÛGŠX7#Ú,ýp-û»·EÂ…j»u†"öSÐ(»–u'FQµ™²×uÝ®Œ7,M‹>L·Êó_ÃñSk$ƒFÌlmçÀÖ+ºâDžе¡ÞÞÝ®1 ãkLee’¥‡Y´Ž`œòËÅ5òh9×à>Å͈›&IdõG<µË û<ÒhP(ôÞ{tÎ-hý‘1áÔ1ôžž©›ŒÆ2¶<2³ÝXu´HÙŠ8ÑÉü7 ­åý½}÷ä¬gŠk‰þ¨åÏ/3Þl¨[ ;hý°- –˜mȹ¨7:†¼]L\¬0QD¦µù7/F$eïι­Üø™…ˆËߙ՞ⳉÓ?]ñíÅ¡¿0ûÎ3ÝJÆþàâ ‡'%¥@Š®NuŒÅ9½!¥Ã0õÊú÷ûõ\oÅ5γÔoôßw]÷\Áh6ÿ{BMŽØ[e†Ë(¸zôí[FG(›ªX° jŠ\Ä%Tõ '§,[¦¾ê¥ìÅŽc_rO`n2ÖãEÔ6] ?ÜûHÚ¬Rña.‡æèÝ­ÊÍpÌb-á“ ¸€'9„Ã4ó%s mo+ó+ÇšXÝL½®þÝ"3±X†7Œm¹â»r:bÑq½éBµõáHS- 8$b€q u˜T𳨙n¥·cßßçKhñ…‘«›šÇ¿¿¿zL›B¯ÚÓ¬uñ|ﻫx\ɳ¥ŒK.®×«Z<5NŠu gªi‡n óÝw¶a`•²‰.¯‘ ì¶bÐw>¯}ùïAÎýÃßào©*þ Æ,¼TQ' 3¨$ œqM“B-§qµô÷u¥çáçàŒ®Õ§qט×Í>YóÊ!zÂ,O¦èÛÝhZXÕm8a˜ Ö’E4È6ZU!Ñ)#Z×Sag3ZÇÓa?”¼É‚çBD!bÜ«sþ?ñ#§lÿ6‹Çâ½ GÍ`ÿ/мS‰yèB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!0¥“’áí´”ª[¶¬^eĬ¤ÁpÎS› Õ>¹£×%}Œ†¦'÷²ÆÉlÅÿjäNñ‡ÖßmAµfØËs€-$>< Ð*æ©U ñŠyw¤R-ÌS¸Ù„äúh¶£ÑX‘O³Û‰sVy«ë•Hzˆ$>ZU!‚)Hˆs:¤„lrCøD‰:ÑbÆxž3Ù3£ÈŸøš»SI&º£bÞÓTygÎE0ËTCƺݔ á£v“xr‘@R´Õ,¼5}€-4¦‘J234ì¥Ñ½‘Yt#5C‘¹‹Í–‹åh=5§/%”Ňð‚()11¾©w’ª-9‘Ä­µ±Òäo÷k5Ø3=pÇQ{PÆêŽ"bÈf\õ¦|ÒÇÖªç(U^¡Ÿrs.Tˆ¨EîÌØÐ¡`Qé0sz’Ìya¶•9/}ðñúçñ êNMŸ™ø(ʾ^_\þ!}HôÙºü(Fùy}sø…õ#ÓfëðL¡y5<rê€4áÆYŸ-f䦅-c˜NaÌE3&Í häD3‹W¥€{Ã4n¯‘M¬® ^üjÅ6+¥ˆº Ã#vD$%ö;?³LÔùvýz«ˆ+¡Òãv00l×@NÈVa—Ýæ)õ¬­Ð,“‘„L3Äsšl‰D`(Ñ4H¼¥\KµÅ¬£.ˆsó%rŽJ…œéB­&ËÝ-ãCÖêÛUdïâÌÅ/”9å ÉóÝ¥ÙFO^/k¢Ñ¯’¢Nsâ 5O—shþ q®«"¦ÐRˆ²B$0M$B%Õ„BD!„BT騽Ä!‹´Ý£ÕíµóhåÝòÃø†&úêéBµ>R’Õ;¹öBS–ršWb<ƒD"¿¾fO·¦ûâ Eôõ>-~z„"ˆB!„"а¿n-»“ÿ:wb>oÅzŸšEþ_xû¡ô§ à;ªªÐâȆ"Œ[,âÍ[ð/V*7ä@ ÕŸp ÈUÌã‡\V«ò”äêÍÕΣg NÈãcÆ—nu¯ ~ÕßL‚iEŽCéuוÅó;éùÎ ùvëÿίKöŸóß}ß=«ó·ø|[ |ðuD>õ›6ê–ûmﱿŠíûÜÒq~màwõüU±þ‰mô~ûßÃ}Õ¢F¶ÆéŒZØ![ ‘Юîáê1+#>"d(›ªXQ1i0˜¹ŽtÏA’R(asAt”O*+8`ÍIhÆR™,~Þ…ÿcÏQŽ!N‡BJ.°¯v3Rã(?V­X,%+…̹×=iip²pâ9»ow%¦#’Ng1ç¥U‹ßÝâ öƒ›|Z• (ösÿ¤ ð <*ú…‹*ZedÈšª€E'Ñcu¶7æ<´­·ÝIÁÄûl2fyÛJº÷ôIÛÐ±Û Se®xS{ElMÐÀ ÷[âñH/_ÖŠºî•\få ˆ%™‚¸Û34ÝšÛóPÌh›3꛳WTtÓš{rÛL>É¿í GD^ðÞ¤¹¬jݘ…‚ Ýj•t­¼-êÀÔÕ#H@S#…9ÚÖjÇãî®ýù*?ó#DZ‡]½úwwïÉ2¯Ú s™Û+–Ö`Wllå+3AðíŠg…l‘q3MÂ4À’Ï/¸ áàñ¯Ã?7Ú?_5Û4-{irÄtãj†âæ÷#Y«XÌ´J $xQ̦Ê¢‰M-By§×áçlñ‰[Íy/fC•kCÍ&e{©\MB„?:jA$,ȵÏûL(RÏloU,æ©Ynd>• Å>'µïûèÑsPB¨Z ReéO9°½Â¹x沚Åb· 3¬‘¹žÒ²È´iAº‡l‘.²B”!„BD!N‹ÜBd€gªH†Z¡ýó2²Ûšûâ Eôñ>-~z„"ˆB!„"а¿n-»“ÿ:wb>oÅzŸšEþ_xû¡ô§ à;ª¦Ñ6z±Øâ2lŠ"˜D^/fÊ¡£Ö®ºUaÂE…(H¥(d½)Ù6hÚÇiîïÕwÃÚÄÐÆ»Opë¯$˰Փ…™Xòón¸­à&ß>5y{v¹u·2°’³—±)Ï9ˆ%±Øž,„´ÛFÞúÕ_´q~‘1#V¹n5óFÈV"zX/á{ .¬7W¹yCÕUï›O>S‹ÅúFZV˜þЬ¦ª¯Í1íDÏlqL^ªvÙI,õXLÛù•Ÿ~̊Ϋˆd¹žåqDxGŽ™C$¾ÂÖf/§òÐéùÚ×À‰™¸”þZZ×±=Å8þÚìv)‚c¸#ÁÆ/,­€òPð¾¥p-?±%4Ý36w“÷"l‘áälŒ9ªùm«6IFËÌéUËÍUöy`°ûÚ2daжOèÛ¥måûÐc¥8yD½QÍQ€¥ÈBULr &ÏÅ–6Û5÷e¥×>9ìa,žëa–½êì²èMþèÚJÕ¢§“ Tº_¢èÝÍÊÍrÌb- J"bRa—ç0˜fœ“H×Cæ3y•Á4Œ0FËÚïíOC@~l}ñ çuÆä³{wv¹ZÞÅEœè—h5ç)%0ÒðVéä²ÃOèò6R.¹y_wâªûBg¶b„[¬â)²A/Z|A¿Ù[0wKq|\‚A=fV æÕPΑéŒÃ‡p”?1ʯ–ý˺#âf¿1¨Žíû¼Ö[QCQk©w¼6oéË¡Õ0w=º^­Š»ÕjÅoTQ)‚F ˆG±0 0Ïlm±.SÓ-ªàäd-ÍÇÊNþ­ì¦›.B‘)-Pò`èÓ âU´nI`¬ñÀ0™¢øÆ½âòuR¦‰÷Ždnv¾šr­–¹[#Á»#wmzi§*Û½-žBq›FlP¬.ÁŽ³ÖºîoU«èÝ2ÃqL¹¯¼æÇ«—vI/‘³73ôÇòüTI+gngi'þß•µZ…•!-$œKƒNIPˆB!„"ŠŽ±nU¹ÿ ø‘Ó¶›Eãñ^†#æ°—Å^)ļô!„BD!„BD!„BD!„BD!„BD!„BD!„BD!„H?˜RÉÉpVß‹…FØñyÀ*™{üIJ}DžÒúÜOóOï’‹C‘sÕŠ{¸X^N×ÅÎ9EÑúèâu|B c„ùÍ.¢ {†…lº"7Ûº|ÃÌM—NǽÀ7³Ýo®Ž'WÄ!Qi0ˆðˆOAÊIuv¿p¶¶ËQ„¡–W;àÝŒµÜ¨Á3šŠŽ'¨êÄÃ3G1Êy#1Wl®­4Y}¤Föè{ëw eÞ'ÅÕ,®Š©ò…4¥Y´Õ"ÈPÙÓ`¥´ûIíXB0}oæÅTª»ÓW“)g:K¬å,µYGHçnT­nÒ¶ÖRñFùiúÜÉý ¸TŒS†€ª‚Õã7¼_4¾ßØ×›MíWD%T”„/ R„ŠP ƒ’dãfÖ9ÎÕÊæ •THmP‰ˆB!„"Åa„¥˜d# þž”©ïZ0ZµlVËV½©÷— æâ§Š«îÙG°z‹#ysOo²û;Šx’mÓ¯š¤¯#@­…P}›ª"¶EK¢u,Ä/ó7~IôC³â"‡â²ÛUKÚ¼ Òîzs3N$§¦›ì‹VSeçOšÇàƒ\x~?ÅnÍS¥™G*Ì¢á¼ÔÓÚËøCȾ„ö»?´Ä‘Ô§Qùª¹ŠÓT°«(Ì=¢hÒ¢ÎHDI”¥˜Ê€?:4¡Z‘\Híƒ[bÛÆÅ]¦i'1íh`O;ŽúÕûÙdî©øUÞÝiV€µ½¹£d¯OAy+†AOÒKßO6T¦mÇOß¹\h)_Žvõ.V%,®–L*¥5R[Á7hD}ÐxóOªŽ6·ŠËSºh´UÑhj0¬ñ'‰D×M\Gœä#ÂPìßó'31€7y °¹öï^éy‰ &rK<¹€”ûûÓâd‰Ñ;#…ÒãkU*²BD!„BES§b÷„F¢„J 3"¿þff{sÁoüA¡¾ž'ůÏP„BD!„BQöíÅ·oòâGNìGÍãñø¯CóH¿Ëâ¯t>”á\uÇÖácÑãi8Ò(xØ0Z ¡æ ;¹£¥*Ø0÷lÄV·„§¨Õ%Ä*2˜ {bZ k™N¼¯š÷°øÈÙ‡kx¹*ïսʴvErYô;Ò'<= ¨n‘¸÷Šö¼W¦fëÌ"¬õ+1Ոʩ0Nla‘Ôç;3u£ñÛñ\˜÷Ìò ݘkGox¡ø£cÿžõCáÒs›6êööÛïcÛ÷¹¤âýÛÀïëø¨Æú'«èý÷¿â¦¶»Ú€ŽñìÓ¦B¾÷ôiC&šhò€5×3i¥pL"dnþc«ÂÖxãxþ+òŸq*[ÀCÖ9Ä/˜PbØ`7Ä, õa1+€ŠUwG©YgS d3Nƒ‘ ÇâºÖÛkÕ=Ú-¦¿Ù£¸VÍ`N=Ý4í›zw Òc?âÒºð·ƒÀ#MÈD(Ì3ræÕè4½½Ë8ð¬s3Ìêm.ë~ýãµ…ï?; KûBra÷Œ½[›õƒuㆠ)4Ô€­á˜©$±­{NoTÝÓtv™Ûoõ±ëá¾ÿš6Õ¶B7Ÿ¨écÖ#+GGÝU,dÞ8s€4õËUÒªì cu”ÕL‹9‚Cp®kˆ~»÷~v¥˜7æ"CA»ó«øßvËz‹Ì‘”!fð³Ä\h³‡ˆQîÜ)´Þ.rÒºð*&f-3«1ÉÆÀÇK&¡¼½ú³ÍFdtÏÔ6´÷šð¯58³ØUÁÂ,p¼.ïÝî–Ášõaè¬æXn#˜L39Ì9<²Ld‘Ò<ÈýÖLù_žMÓñtÁsÕh•„"ŠŽ±nU¹ÿ ø‘Ó¶›Eãñ^†#æ°—Å^)ļô!„BD!„BD!„BD!„BD!„BD!„BD!„BD!„H?˜RÉÉp'Í mƒý§ñ5 õöŠúÜOóOï’¥ÈsxFCèªç-m«x4}lýàõ $žE.òiïüêIÌ¢ÝÕŧ¿àõ#2[º¤Xñi1%T‡È=H»Kr×Z½iÌ&9¦#ª@ÑÚóœù!JPÉÈDˆD!„B>ÀnS¿"L$Ê©ñKNx}*wv~O.Wmÿ’—;(].Ö¼‡eRÆÎ®í‘ž R®©ÓPÌÙŽcœÇ4û¦3 Ê©vµùÏ\Òȼ¢ üà3¤ìø…Òê8åOÜÂyšqâpüFíûÑKMo²å÷€¨×j®ÌÓPŽ¡Þ)ð²´Å!­Ô] Ù^ñ5œÚ=›ÙƒTôQZ€¬¬³†ïëAZž09…måsái—f­b—ì3Äý- <´¥ÛŠì©bˆJïîŠ ¢ÖÚÁX×UCÌoÃ?ÄO§ÿõ:äó¿Áy™O=×§…µÁ«£ùÇû Wöø#FùþŠC0¶˜­Œ ,Mñ'FÔ€–Áb/óŸ"ðÒ š¼É‰í~(!Þ¯Nk—,ñeàEŸ®µJ0C«X—¼Yc­êÞ‰Y÷YÕW˜ñÈ$Y½çO.rÙ52YTƒ‹|€KVžy¯É\VJéZမԙe+*½S.Í'4³çþdúüFÁ½JíCº~ý4OEU)D@À 2{ó¢­*Õ]´[¬­VýÖ®òÆÏ9²›NäùÞÛà ‚FòF¨!T²|¾Ú+!ÈDd„J„BES§b÷„K"¿¾fO·¦ûâ Eôõ>-~z„"ˆB!„"а¿n-»“ÿ:wb>oÅzŸšEþ_xû¡ô§ à;ª¦Ñ^6Å F-ZAt¼hw^-•‡qÝ n´à&h¾9ŒlåEÜ‚`dêca‘£9ÊzÑ7ÝÝ^kº&áäfWœ¤s¢nþæ’ÁaH‰–1‹m)`Üh°ñõêµû· Cª/Œi[xJVdRÓU#1Í/ˆe´èÞuÔÞÜ•q2·#aŒØmë[Þ»r­“6ÈV [ŠQ`¿·¸²ŽlW¹yCÕUï›NsÊØ¼_¤e¦ÕZÛŽœ§-e´ÇµœÄ,b©àñ³µG@Ìα{«vî­YVõ `3Uù‹W“ºdd¶vµ´“Âó~_Š×ˆdmËŸ‡ÔÖlÝ4å[wªV3³¨‚ÙªÛ›ž6uÐgK×q ¹Ó½ÈÛEËPÞ´ cfc¸¥ÛL;£™²ÍÌFkÒ—|x†Ë¥“į¯P²ñ]+J¬ù4ŽB)À11³Ö™O-o}÷^YÆDËt Êá¶·Wïê¡,í ¿¶Á¶0m0 ËrPne xº˜¸< …HÚk_˜bøÙbFÙ×s]ñ3 ™·æG4õm-5ìÛ»ØtºÐb\<ž Ul›ËÒC*ê„÷*®ÔL¼2ª‰ŒÄS81Mã0¸e`¿ ?³Ãã'i#+÷Õ´êº(£0œçšy«É&õT|Rä´ ×â˜Þ‚úwÒã2S&òPźðÊAYµ‚7×µ˜rÓGº¨Ðc£–6²CY{®ïUéF觉±Jì¹oZ&ìÝwWšXËh.Žmd` h‹"}Þ!o%à 4Ô{7É¥c{Ù,»ŽitoÉmzÖ÷®Êe’'–CŸFÿUozíË¢´8zq½ºg4~ÈXðÊúOOTÍÆc[YŒn¬:Ú$lÅhäþ½QË»¯¾Ôqâ”êŽ\òõï7ö6µø Ñ`;Þîg¶áŠÜ÷ ç~\b0Ô•Pc^*(“ŽtΠÌS(¦áèE´î?_>õ„އ iÜy|ÓåŸ<¢¬"ÄðŠaνÖÅ¡ÕVÓ†9€½i$SL€Se¥R’5­u1Ös5¬}1ÖðhK̘.t!„BQÖ!íÊ·?áCÿ:vÏóh¼~+ÐÄ|Öòø«Å8—ž„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"‰ó Y9.ù¡>Ü(¿/¬¾&¥>¡þÑ_[‰þiýòTÉ­8”“Ÿœº,°06Jw:þø=i²nöϨþ0zÑa2nöϨþ0zÑa2nöϨþ0zÑa2ŠÆ&’JµRîÌTKÈJb & С"!‰ˆB!„ VŽÍìÄXñx´˜sSu/|{Ý…eÎïI6VܼÉõ‡™Tè­w­—tvÅïèWÑ€¹¹SW±:ê ÄS OQL†Iã7´8¸–ÆÏg_‚ëv$EåUŠeKÀ20e¢{OPw\§{U­Æ¡ÙÝa t®ö¡Üøì."LÂo-0¦™Wç¦\Óó_õ3ÌG™2m­fú<¹ÞË·Òù+&~ë«V炜ýªÏ÷wçþþIð¿)Þžÿö¿{ïܽ£„#_Fûÿ½—)k/B}Æú¯šîD¸E(¶7JMfL°’ס–ů<;*©Y®V04øˆ3%#Hè3û©Óˆ›˜Ð^Oi?زádó±¦ÜŽ÷¯¹I­}®~ï—3ÞOl¯Tá×x×d€0UÒPó§V%ÐHs´Ññ^ocÅÚ_àNÏW‘±¦¤·»ð庵Ý`a!KÙ È=ñý?òO¸™UôÙµvì¬æw?œ‘S­êψb]ƒ¼UY‹:L°Á™DR‡4ñ{bWDèÞݺý‹»Àðæ•µÈ㾕²´ƺxfÉ·Ò)DÜc igªz8-~z„"ˆB!„"а¿n-»“ÿ:wb>oÅzŸšEþ_xû¡ô§ à;®ZÚÖ,ùál/›0µð8á7H©Ç»…‘rþ‘^¨V½_Z €±“° †ò© ‚iëapò61,CSzé¥i±Þ×¹„ÂH!lÐ qºÛJßC½ì®­¼xsx,ýˆõø/õcÞyn³Ê^v½ì¤œŽ&sÆö¿Nåæb¸¼SÆö¼:wi²…lóÂþ¨|:N©³n¯`ÿm¾ö7ñ]¿{štbýÕô~þ¿ŠéÇz'©èþ;þ)êÑm:!gŒ!{5€út÷uP¶mæF=Ü+HUŒüK‹JëÂÞvi£9€&qáÚYžC–öÒö÷,¢ÂµÌÏ;¨´»#}º'ÂG‚à²íMÐmϳ™1Ì5Kî•ñ¨(ÕUDŠ2®C ¥LAÒdˆØävÿªU0‡ËÈæèv¾º~íAÂØ-0>mJÇ …{=ýÒ ˜Yð«êN²¥¦VL€eUZŠoè±»ÕcóZVÛî·8(ßm…ùŸî«­÷è–'·®ÛQ½áL<' ‹&øŠñõaqJ@ê,fVa9‡Ö*G˜ç §Õo®«ëçfyHý죬ÌÆFgR»µÄœÚ5œÆ}“L4ÜÑ”)²ÝË¥Ñ'íäIòR™Š¯ÝR,Š¢’­¾rÏÉÔŒîV»ªÀbWèjÛù"z‘ÉÅwT Jýž;òDõ#;“Šþ«"Dos1 ï•{¥t*îÌ) HÓŠþi†°/,î©¥Èóµó0Ä/ýÆíYåž8C¯¹’õdÌÕ¹i9òOÿQI,r¹Ð³;´¡uz¾¬sªCCÅ<ŒbÂ?ïóþ‹5eøÙûÉòžÚÿé´ÿ›z.ó‡Â¤×þ%U ïju;¯-Û Ú™(µR{0†˜"—ɋߛ½¬Òê™eôŠc0È ÌsŸ™7‚Êhš+ÌíLt˜(Ä­0ç­W$÷hö|úÊÒÓâ{“!{!-\E1€$žiÕ&°îýWföÃñï-Ž*hÜæÛÞÊáuÈÊçÏßûßzöwÔl®Ý•Ÿ.ç ’*z=Z0ìJpw‹i0Ê£,(dPÔÁÉ<.؉Һ67RoO±w`Þâ ö¹¶onK,\ÍsDLÔ6õ­ï]¹VÉŸd+-‰„E(°_ÛÜYG6 ‹‹«Ü¼¡êª÷ͧ9å|^/Ò2Ój­kŽÇ NS–²ÚÆ'rZ kÑDmA};´Y©“x¨bÝxU ¬œkoïk0䦎uøæ¬Ö^ë»Õ–Ã#²å½h›³·uy¥‰ KAµ»ŠËÛ¢½ Âa\Xu [Žáxþ0¤ÄÄß]”ùÊîªBrK6há‘¥ƒ5sÚïàÄE‡•®`Í\ö»îåIŽÐYíŠØ öë9Ь— î— Z" þÈÙƒº8./‹H'¬ÊÁ\ÀBšªÎ‘» 8w Có|ªùy-¢0a^'kóʈîðüSã¶ÉºClvÆ˃ EåÂøÕ8¼2¯É•€Miœ²˜M3v ¶8øgÖñü–'Ê.½fæó?Š…[Ý“Çñ‡­ÌáÄSÑàs)Aqxj/ûG )öéŸ)¦øyãoP­taq1F!Ìh6ïCÏdóhLöÅlPƒ}œÅVMÐwKÖ_oöVÌÒÀ\_ ”OY•‚¹‚šªÒ)”f;„¡ùˆ¾U~=ʱ˜0¯µùˆåDwoÝæ™v†°Ü}±>#p²Ÿ úà0{÷vî‹… Õvë ûÙO@¢îYÔ›a±tƳ6Z¾Wv­„ÆÔM‰“-ëWšþŠX¦Ã¿ô=Šð5•Œ+D È-N=÷Šö;hzÕ—~LN|„;RˆVyD/XE‰áÃ{­‹C«­§ szÒH¦™¦ËJ¤:%dkZêc¬*LÖ±ôÇXOÁ e/2`¹ÕbÜ«sþ?ñ#§lÿ6‹Çâ½ GÍ`ÿ/мS‰yèB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!0¥“’â´Æ±ãeš‰p9K_TŸ\ 8¯®Ä‘í)źÚTqe6ªô€lùù¹¡ÇeÎ ‹¥mÕê¢.?Òã3¬9³ª–A’KŽ«wÈXâÐS<6ÜäyX¶·CÎ ÂíY¸®]¸³¯¹’ñu‡1¦`1³ÒrÐË6›côèž64é¿‚ëL;ý“MÕƒò9u««ò¼Šû^ör@ZC›+²nˆl±µ mKÙݺ¼‹[T®ŠÙEpuŒ´Ît*7ht—|Ú”Δ§kX†íAç`\CmŒWÏ'F !öZÌ7­#@ÒÌ4ŒÊ ¼  ½Èi&ù©-vC›ÁXVàPxRzx;ýu8?Öï©¿-Çå+íz’uZ?‹~®Ü—&Û¡ Ÿ Ouvx©£œõ¿R%ç•ãò•ëïe$¨4¸¥pM•8œçu‚AîB$ˆB!„ SË z©wÄæT¼Ò*ðœ¤>ä‡ï:{=‹3Y)sùgxH O±Y­ö³ÉÈðu2´Ý±·Ýâ•RQ¼»5DÌBa!B ›¢kžÙ+Vì¬@!6´,JL²S”ƒú¤šœ¿íRôTSTb÷pÚˆE0Ó~â£È´ÝÔÔªƒpœ¢Â"€ù“à?ÔE™ÌX5¦£`9réÃÊø]†ˆü毛N´Ú²ö¹×´÷Þ7›­—¢j•c.–•Zî3h¢b<@S ž©ù¾ †Ÿè„Ë—sÄ'-‹w÷/¢ÄbeŠ>+%²võ{è®VgŸe>ø¶¬ —ÌY»@”@%OáJd+LÀ§ˆAÜànÄïÈ“sQM׉uôç>È„¥–ºÏÌšÇ;š+‹ˆž,¼³Þú_÷ª{•ÃÍ Úú @ßU—}Né:›ÙR^Ôä(wg$Ùá…Ùóê¸{=ø˜²Â0ù9æ¿%iY«Ô8|‹H2”æ¯é8æó'ÝA;eh<שUîR4Ý# B*»h'¢ÑR¡ØUsViš~r>s·10F9þ ÀòU4æŸ0ˆB$2"D!—D"ª±{ˆ O4"È)žHD 3ͯ/Ÿ¢—÷Ä‹éâ|ZüõD!„BD!a~Ü[vÿ'þ$tîÄ|Þ?Šô1?4‹ü¾*ñ÷CéNÀwTnÐÖO³ío›Pµ'zŒ{ÄZÛ²ì(WÕ¨?ð ‘|ãÍ=$ó[aŒõÒ‡¼¯S ‹ÄÛaˆéÈP÷{÷K²”…Ÿ„DÿèÿEEþ ÿ©l^'uáïKìªÆúö»ÍŠ©ÎB‘Äñ@mÞ[×­òðUÆâ¸ÔÂl¶ýn½tå[%ÙvƒD#n|Å›uËý¶÷Ø¿ÅvýîhÆú=·ß×ñL¢ßGï½ü7Ñ$Qkö‚¿ÀÐ5t¬aácÅ6ô…C/²‚Òp,'ð‹byL…ŒÆ×Èú¾äf. e–J&ù±K[ÏGìr)ˆ 3E¾|¸ú°¸•ÀE4Ub¬õ+0,àK²i Cp™äkC½W^¿§½Kp%òµ­wªí}º_]<Òß #Ó"Âs²P ôëü_°nïý“ÔéûþÊO¢_¨Oñ>~*v_ñ>xû[m¯T÷h¶šÿfŒZá[5:t÷tжmèF=Ü+HUŒüK‹JëÂÞ4g!£0ÍËšCW Òö÷,ã±ÌÏ3¨´»­ûôL±E¼tzÇbx…ó ƒ<[ &ø…¾¬.%pG]ÙëV`YÀ”è ÓQ„‘¡¦Ã¶+Q€âHÖµÖ³ª®»»’¯Ú :;æÔlt ÈQG³Ÿ½ PÙ…áWÔ( ¬YRÓ+&@2ª¡ÈR='z±?1å§Nò àâ}¶æqÛJº÷ôT¨üïŸ>%©øtþ´î¡ñ߬‹{ìoâ»~÷4ì‹Òœþ{ס¥z,~ß{uÓuh9V?c»6?mzÇ¡Œ{¡°ÄÄæ¥xº…˜3h¬Ä Ë{€ªRîÇ,؉› Ç_‚äs1¬@Ãâ­¯M4ó¿$øøkÁŒB²PÿXÿâýwìž§OßöSD¿S7¯ôkì×¼kK/Aа;×ú5ãím¶ªmk± CäwôÍ:d+¯q_FT1á)¦(Q®¹›M(ó‚aqŸæ>¼-aq>ø¯ËàJcq[L>Ë¿„ÏÑ'´7‡é®¥[»°JÍÖ©WJÛÂÐn¬ MR4„48W´3Pv;{ýÕßà®ìËÚ"õØí}tü÷Kg¥°½ãGtWaýu­®ýéÒvVŒ<ˆcª!@MQ€ –•O¡ñB’Y÷R™ ­¶ËgÜBÆÞ¢Ø–2„lâx ‘ïf º"íÛ…!ÅÎZVÞDí™Õ˜äˆcnGM&¡µ§¿O óQ…‰¥ŽžMCkOy¯ ?jœYì*à‚a8^wî÷K `ÎÍz°ôVs,7Ì&œæÇžY&RHéd~ë ¦|¯Ï&éøº`¹ê´T}ˆ{r­ÏøPÿÄŽ³üÚ/Šô15ƒü¾*ñN%ç¡„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"Aü–NK…vç^ vÉŒKÌø ~²TŸRãO_]ˆÖR?{)llÑeö¥5G1¥tAæñ W¸÷+CVì…Tq))ê*°<€¹U,éMt:«‡2O^÷EÄv^ñ…í*x6ôÙ¯¦é¥¾æàÆ:Á¨£LÀÄ!+Ég$XRÂÊwzK<_fØfÒ VëL¹v=÷`°¾·+@ß]ËVu1,Œ4qö‚z RŸP[sy"É,ºÍíòˆ˜-(_îÅ`Û_¹ZTa&Îb«á5F=f8‡e)ŽC4(‰¬cÔR΢7+®À­&mkOG¾ëÀ(»0ß\´ë8€),Š!Úž1@*¬srÕK-nÕœÍ6ù71)–~`ñÎÑ1Ù±÷ å}a‹zª…³7 ª¦C2ŠE«>P\\6Tݧ*q¹ßíLóû;ÑrñÂEôÊQ7V~"ÈÂ!ž²Ÿ4£Í \Ï"ôM#túÓp–óÝøËß¹¼»¡QÖv&Ô5óH|ÎÓÆœø.«K­Ít[àðþ“0ŠêÿSø)XÀö/˜x{–¿ñY¯ÓôÉÄq¥uè¿}¿’é|&ŸÆû¥[pä²ì9eÐëÎ0xo}çŠÃ¾.ž*q—K„¦ê•˜h¢¢–bÊsÍ>~lomψ‘˜q6­¶ÃV>}mvÅgÅ])»çN®éâ†öB‹b–H~aƼڪ¹g¼z+ª’ ÍÄq ¢9/8&8¬Oúƒ Ã,Æš*Ï©îü–ÑCÙ²¿‡×ü»×Yy“ô!¨µóGt!@[n¦µ®÷‚¦µ9,W1—˜@Ši‡œÀþ/OÕ\…Ñгé‰ôî–CTƒ<¸„9€w'ÞáælõvTN`2/Â)Òª ¶¯á¦cc ­8U>Ì„£ÝçïO?´1"Yÿ­Ua¦¶«Ø{Åm ”·j‰ pŽ nUó(éš|¼8GNû~ì«Ø¥pC°<,ãiX±[&-nBE÷‹ FC<ªÌ )y“é°¸ãöEž~‰ßÌL€9T#$ïŽ0Í”Y; ´^œÇÖ—·QIŽ%„]ob˜’‘ÌJ<\<Ç 2a<1È=ah4U$u69×,X¬kV‘²Ï óùÓæ»C²ÞÛ|¿5«J[/‰:BU«d©f¡H ä¥ó¤öF=Ì~GšBÅy;T¶¨ª‡!ô÷Š}VaÉgKV)|²9X¡ Ùû’çž`€{Á9±8†ÂÜÎ4:þÂÕBÆ•gšÖ¥Å¥bÉL;¤PäÉñÌC±ÍT9 ‰9”¢sH I´†IP‘„"‰K¢U ؽÄ!—!B$B+ÿædûz`·þ Є_OSâ×ç¨B!„"ˆB!¨û öâÛ·ù?ñ#§v#æñøüW¡‰ù¤_åñWºJp®ºª­V½ö”²˜¥ÜÀ .-:o•†ý”ªÕpˆÔjŒ 2Ôd§lNh‚FÝ_ßÚÜ<¬'WU}º«DC‹¼&'-êOJ\69wy*Od-ˆ–"Å‚ýÞÂË« ÅÍÕî^PõU{æÓÏ—n/étªµécñÔÕU¨K9h/ý°-ˆ°5¦„*7 5æP׋©‹ƒÊQL¦µù5âFÜ<|FÞüëšÜº(ð± ›~dsOVÑbÑ^ͱ›½gK­%ÀƒÉêVɼ°í$2®¨OrªíDËÃ*¨˜ÌE))¼f ¬á§âVx|cDí$e`¾ú±öWEf3œóO5y$ÞªŠ\–ƒZüSÀÐ_Nú\f@jdÞJ·^H+ V°Fúö³@Zh÷Uz trÆÖHk/uÝê½(Ýñ6)]—-ëDÝ›®êóU~Ò›ý›fË]´ˆ©Ý¹^ñh9¯áûÕk·v©Z’øÂ±¥máD§È¥¦tæ "8Yé≦Ão^¶/nK·+˜ë ø4 ¥æL:£¬CÛ•n‡þ$tíŸæÑxüW¡ˆù¬åñWŠq/=D!„BD!„BD!„BD!„BD!„BD!„BD!„BD!æ²r\ óAòÛ/þJ_ýš„ú‡ûE}n'ù§÷ÉUŒsª!J°µS—§ð$RçÔjœ=™•SóçêKæVVåg½»þR3)â·‘Fôfïø}HÌœVõHw«1H#==>¤fR$iÙj4>‰#Y'ÜiÿRAr¦gE4·µ,j[RÎù‚Q4ä¬ý‰&OCþ7Ïû•jx_êOÿ’»¿öjô{'çlñø+¹ÍgÖbïØáð½’1¹v=…@7E;½ oî›ø¨š¢ÈÂ*¦YO´3 'Î?´1¯íxã·2鹇6ëë£]vÙz£0D‡èwuGM9tOV:ã‚Y¼ Õo1cÞêú¹^ö®»îÐõ7S÷B5K)'.>|K†,:*‡›Ö(iÎû¶WÃExÛ5hu½ýÕæ¢pìA[zîÈ=çõÖ%Ïr·èoÐñ1zå‚7·•Ù‰ß6;Œì7ɈnºQú^¿ÑP\ñaâ‡ÆÆ|?ÇÏö%ÊY'Ýïªùä¨E™FSšT…v”í>žfã40¬¤ã)–EâÈC˜x§F&0aß÷ÑK­Mí!豘 »³Ôkâñf÷'¶{trëûîX…zµ¯i‹Öšgg JA,½Bž<˜‡âdB¤•ÔoÆw++;¡‘›©žºIXšU C˜ˆóO¼Š6†Š»T«Õ5tåÞš9Z²¹¡›v¿Üª^î˜ÞýuWk7a‚t˜J9óÈ@C4ñeíwDâdzQßú.ÖàÃ…‡y%‰¬IÚàr.{=£Œ;ŠonÃU2)Äu0iù‘kºW†2;>õ. Î:*è©™CÍ¡KV-˜‹LUM4 oH 5#˜L$2ó—$öIEw.#W¢ny±ªmgºZY‡õ‚XÑE…j¨(±SHÚÆ¥YnøsúPôøÓˆE9kt|œÄê‡cåöÀ¨¤fyPRÌ.H2œç¯¾ˆ»JxÀ (çYMï§“CJà3JëÕÙñÒ)Ë»-$˜I3åvgïà5O4ÏE)f’‰J„A‰ˆB!”º!P‹ÜBD!ÿó2}½0?ÛÿhB/§©ñkóÔ!„BD!„T}…ûqmÛüŸø‘Ó»óxü~+ÐÄüÒ/òø«ÇÝ¥8WÝrÆÑ>¼0¾~yoØ”Ôt#Ë}A^?Ø}g”¸òÿàeRzø^&Fú/µ­íá¿wOía8¼ú'µý[xo¦×¶½T×d/'t6~ dÍÐÏÊã¼§Œ{&¯-þ râùgöõ½¼;¶è¹±Û7‰üÍs{ùwmûµ–Çÿ<'êƒÃ¤ç6mÕìí·ÞÆþ+·ïsKâýÛÀïëø©Çz'©èý÷¿â’*·¬°Å6Zé…7¤XÁ„Ýì}Öø¼R ×õ¢ª†{¥b&ã0×)„@Yþf&›ÌÖßšG€¸›3ÍvjêNhŠcÛ@‹lv*t@®½ÃkNŒ&-Ä+”/ÀÞ®¯XPg[[9|„i## qÈÓ!õ>¿ŽÿºR Š9éM±×¯PÛ¡ý4U…B› Æñƒ1 »¹ê×x*¯Ÿ ë ‚sq@¡"”؆ù&ÒKŽ™äØ{¹®©eí˜dè=ÜýÊë´kNˆY£ÈZÍ >œ½ÝB@}³oB1îÑZB¬gâ\JW^ó°#MÈD9‡¹¤9om/orá ×7<î vÒìöèžl‚>°wà‘kœUo— ýþôLeyJ ÖV¬ ~ Êr4„³BC‡¬ÓÏÝùœðÈsNfŽ××ݪ¬6Q„áèi;f…¡v°:XŠã ÷‹Q[2ņâ8‰†f1‡1ç’tb¥t°Æ÷›:üW^6WK‡‰ï6uø…hAè¿­Š;·UÀÂÛ¿Ç1b±*L·±HQM2Ôg9䜒A’6¾÷¿#KŠX8q6K¼×äS#u´8ñ•¢»â†}ÊéƒEØ :Žºÿ@õDV&-"%.BiÎy&ÞŠâÖj]Ëã¯~ô¶7¹±˜÷}éî=}ÚÒd-¯Ú ?'Õ©X÷C!E6çïHµá@xUõ H+T´ÊÉ 5T9Š_Ñbw«óZVÞõsƒŠKlÌã°ª¿·¢y·¸µþÍBq Û‚v²â®ak£ŸsTr ¼hà_z`2Ìû€É=ÏÃI ²›n9}m³iôG³”i|÷\Ø©™#“A¯«ô|yÞ÷ß\•{Üž¨ÐRâ@vP‰²(E’E`ì·¹a+wqD1 fÚˈËîÎzjgXBðFf0@:ûéävæ\VHaãT.¶ ®îÍ•â[$†€¾½+ñRÇC²Ì°ËÞbÚéØ÷¹Ç(è“@ß]µ|B"!!ìˆOAšqK62I[3°–[ts/}·ñ[¶<;ctm›C¸Êy5W}žY¡Ÿv]go[=´ë ‡Ååƒ|îZ±7ëDÔ­8SLŒLçTç–Ióx¾Óàâ§f.æe±›l ¨ß—EêG„Eðòû9¨×]ù¥°ÝšV@¤ê‹zg¼A†÷Å7mÝuª:¾Õé¥Ûžƒ¤²šW´¿Ô¾›†v‡—5k›¡¾ÊøNÉi„¹®¯Ì.!2~”6_(Eh‘ DìŠUÊìH#Ök/y-J¤­•-‹ ‘ ïîJRP[d9bÙå4³‘Ù€ÛõT6ºZ‰ ÃÃgºy2äÒÏ\ò9OŠ^É'”õO¹Ác#Ä“u[Y¦}OIYJìš9yA/³43ľX¦JŠ[êJ`/”D²O ó qã0ŒÄ²¡äzu涆c°–Õã§”lû"ö•xV5²±ÔQ¸¨¤q€šbPÃ)Ë’0x6á…næz¨šgJmDÆsÃçì®Edš¢—Ó#•ƒÐ:fP瘡9j“—‰d-.v€oðRªäÖf†£¶´ƒ@lç wr|"gLüî7j)X›5 ö †¬xG˵â«O}>ýDßÿm“®Ÿûéö@¬[O¿àTæËc—ÌY¶4&ÄÛô¹ØîÆ`;°Œ—€v# ά 18§ØË´)åc°Qáû&W²,…Ùl^mœ+_Ý.ì>%óc˜×¿0­W$ÖÉж˜mAõíÆî¬L;×,Ýt5 8…’¾½â>AÃ:S¡þ’ÞÑÃEˆÖ³Ó´×Õè6­»÷X´Äp“>3W–ƦµÓ^wº-ÚÑcWÎËÐ =7âÿÞÔ0ÊK‰¸k%ÏdE2ħÎy$vgfá£í)²7ØË—ºÚoíVÆâæ~;>Õß­Km|÷jH bÎ”ß ¯÷8Àaq2TU¿®Rà¦WúçMß9'‡Ù±p°íÅ–dÿvcŸÑÛM×~)ù¥t!Ù¶õ*¯@}®íÕQbц ÌQní«ÁïŠßKyï§WÛ§©»œô=_½Ow´pY±.ÃßÎ+ZörvÒïnUßkÏÂO–!%*ôëšþÊüU°CQëO«ßUâ~ÿeK¡&ñQ 4ÝØ·S8”¾8%ÆTqÃêƒ}&²Ï$ë‰ôÃMÓŸ+éߺñ±pæÄ74µ!¼šm§­ÜluÛqªÓŽš nwSA»º5öëe¾—|E½âí ÏŸ~II‹œÐ@¦òçï[à$‘¥Ù¤Ó1ªÿvÝ=çU.‰‚ôÕP‹ÜBD!ÿó2}½0?ÛÿhB/§©ñkóÔ!„BD!„T}…ûqmÛüŸø‘Ó»óxü~+ÐÄüÒ/òø«ÇÝ¥8WÝQ±K’Ð`+_Šcx éßKŒÈ L›ÉCëÃ)d Öß^ÖaÈ Mê OAŽŽXÚÉ eW¥¢ž&Å+²å½h›³uÝ^iêÀ¡H…ž1‹­")`Üh°±õêµû» Cª/Œ+VÞ•™´ÕHÌsLñŒ­§Fóëföä²ÅÌ×4DÍCoZÞõÛ•l™öB°RؘDR‹ý½Å”s`¸¸º½Ëʪ¯|ÚsžWÅâý#-6ªÖ¸ìpÄå9k-§»-„ŸÎ}£­V)y0‚—Cótnö€\¬Ø‹†S+[ÂQ¨´˜eÄ9Ì& Y^Óm‹ó*“I‚&_³wö蘙¶ƒ Û °Çh(_¢÷&çcÞJcî” ¥üfº¢¡7RL4ñÇUw¢Ð¾)"Š'¾ªïBjÍù¦;Ag¶+aƒÛ¬æ+²^ƒ:^€A_oæVÌÑÁq|\‚A=fV æ j¨gH¤ÇÁÃ8H˜‹Òªùy-b0a^'kóʈîð¯4ù9-µø¦6`¾ô´Y©“y(bÝxU ¬ZÁëÚÌ2-4{ª*ÇG+É e¾WwªÅŽŠx[¯¬·­voÃñO– ¿Ù¢è¶Ñ↠Ê÷‹AŠþ½V»wáHu%ñ…cJÛ‰VdRÓ:sLç‘¥¬‰¾°®×füqR±Íd,6ÑÚìÙÓ’…X2‹bfÚJ-Šb«$ÜŽ˜°ïÚwó"íÝ…f9 ¬f¶ðÒ €´Õ<ä)¾ ÃÁh²Û徫|IûÖ2K-¾D]Ÿ/ÅLíˆ!ÈɲѬكöm ýé Ò! ¥ŸÆ•–ࢱgBòTŽrÆ9ÛÂ×CÓìëä¹£•’7ƒ9¡ÈôævÔß’e‰l¤9ÃEMñ‹8¬2ðX§Åа’•`U|Yö†b—n/,s[MCß¾¿¾‹FãòJ×µ´ÖÝ7¥u÷ëäªû:°WÖ0caжOmÒ¶òùæ1ÒÆŒ<ˆ"^©ZÊÍQ€ åTÇ ’t¿ZÜÍšûª—dØç±„¶{­†Z÷®‡¶(Ñnîçzî±ÑzwæÿwßRUý@˜²ñYDœ`4Π€ pE>M,Çëæ¼È'àÛ\-§q·êŸ,ùå½a'„Stmî´-¬j¶œ0ÌëI"šd›-*蔑­k©Ž°³™­c鎰Ÿƒ@Ê^dÁs¡„"ŠŽ±nU¹ÿ ø‘Ó¶›Eãñ^†#æ°—Å^)ļô!„BD!„BD!„BD!„BD!„BD!„BD!„BD!„H?˜RÉÉp/Íl¸¥ÌG/þÍJ}Dš:È¿úýÖÎàÙI÷|Ó±¡»]¶…^)d¸càÝf6J¤#1VMfœ¸ÈÃàÅÂ(»}IÛÞJÚyå Ìïe1tN—ì–i-õ§g }%–F -b²… *"*¾ÓYëG }%"8ú¬†?tÍzÑÂI8qõHÄ0ñƒù¢ÏZ8Cé'>©p´,*¦7ýKM9 pŸ¾&ôýijbÕ§ „Ð*39ZÏ3®.A åÌy÷¥R°sršM€#¯<’Šªoe–vöŒÂíQ&³„e‘¹ Š#ØO_Ù‡-Æ€ýõB­#XÜQ¡¥ó‡ZÄL2ãKßËD÷ÙXZßæ³ÎQàrŸì‹ùšï–“òV§ÇóLå'Ø ÷GüÍwËGÉXNŸÍ3”x€¿tÌ×|´|•„éñüÓ9J;‡üd÷°k³ütŸ’°>?šg)¦+± ø¸a»­_k«×1Ùý)ˈìhœ?‚hü|Ô‡Z¤ÞL‹™L¡ydp×ôù‰£to-rºÖå À™¢ru>]믙WR³‘©—¼ 9ê–ŠGFìÍW вœ²±idþ&!qƒ‰£IëîJIi ÷“é°Ý²Â*A_oä²-7º‘+´˜8Ê€ËWFÌ—+FYÿ¹:‡káëSñü”å¤.´x8ªÄÄzVnE¹ZüDŸ•ðÜÇòLª5Úš°^t³Ö@#U)é.ÑS‹Û ÔöþJr‹PŠ#o|/*æÓÖ°½‘‘Bœ€9wx8ÌT˜‡zÛrÓSJÃÖq9†b<Ó Sê§»8|Ä0ü`Èú…šðFjîWЬÔTCÜ+J<&0gð¡øã›Àx°|6×xd|o‹uÓ.’Ú+kñÏƱ}ÛÁØ+÷rýޣůH·…\€õ¢Œµ æžÆ ýÙ°Dø^ÏUÕz+^«gö†!ÏYZ}©¡ÑCŽØUï±Æ7NǵÆ=FïX7÷F­_še‘„{"ç0É=y?Óø $dŽo¬Û­N–5Òën¡r·ö±ÌiÐïàmhyB®x}¶1½v:/ð*7rÀ¹½5k8€Ó4Æ]¡h ’bÿOö|rºF·ÖuY·riu·r;÷1¬qÐmâm:î6_ >:wú§ú÷uÔ®¼œîû=Ÿ>¹§?ÿ¦;/Ñ}'ðúY뛯UM—ÆþªòÙ5:à(mÛ > QÛ­ísŽQ»– ýÑ«WÄ&¨²øD'Ï@—Cû³Ÿ#e{l·cgwû–mÄ=¬tm:ü?í5 ÀZ IÌgâK³×½g­7ù+wÍg˜BÉñgV{±²~_+tÞᇠ@¢ôdo(lõ6³LæìÆ ²þù®Gà0óço·W¾µ¶Úî¨hÅ¥ìØþ^Øú[zܲ›Å””'"€EË@ù|K^Ù“Ó‡ÃLJŒE¦ŽZþ:¦²èœëeT'b÷„BEüÌŸoLöÿÄ‹éê|ZüõD!„BD!a~Ü[vÿ'þ$tîÄ|Þ?Šô1?4‹ü¾*ñ÷CéNÀw\±´Oƒï /Ÿž[ö%5òßPWöYå.<¿øTž¾‰‘¾‹ík{xoÝÓÅ{XN/¾‰íVÞéµí¯T÷±4Y=âØò³ç€-³·&îÜ ×'.qÚx—.=K€ãÖÊ\2 &xèÜÇIí¿-º,ññ=­ó\Þm¹mݲ|Øÿ焈‚Ý'9³n¯`ÿm¾ö7ñ]¿{šg‹ôWß×ñYã½Ôôÿ ù¡–Ogãc‘§Œ<w–-ÕÔ(òUÝù>ÏŸ1Í6ìüDœFÄ«¯ÛVº»'/°zºôégÍMbW-ŸìÍcñDoAö&-y/ñ޼h¬¢›óAžƒ=C¾Ld篇ý®VÉ.:FÆóú|7¤½àÆ%„çdÁ¤uþ/Ø7xdõ:~ÿ²‘èzäõÇô×Ù¯xÖà*ãõþxï¶ÚõFÜQGìx¾,б¤$º|}Áái\¦ã²°õ,0v*sÈÉl w&Ž¢6Ó}5Vìöf’ÃòžZ]鮪ϴHª‚ æØž)x ©’h^*Nz*9U—€… Ìrè¯p'+"t‡†ÍÏá¹\QÂù]ÃŒjy{¿ ©KB·a‚ Öè¢*Ùãéd_´ô½•eœ—„ŠÌcLÆÈY1Næaa•á­“S|—¡3ò²]Oq÷®ŒNrçÞžY^:ˆB!„"ˆB/3ç9æÓÞIåÝú«{ì¹wa­¥FÐ…Dµ€EÒ6¶Ÿ×O,´ü •µJˆ@ÌxµÕ=|v ‡üHöøÚ÷;K³ø?Åo†Ú÷ߒ𨇷*Ý$Îø‘Ó’›Å]ÿňù¬åñWŠq/9D!„BD!„BD!„BD!„BD!„BD!„BD!„BD!æ²r\;¶¢•K6֋ޏ•”˜.Êc‚TŸ\Ñë’¾ÆCSûÙWM‹Ì½p¬8þ’’C•™6mIì> éõ©:áå»ñ—¾5syE ޳±Qg:%¨k>RiK˜ÒˆÏ1ëïþÉÔV¥Ñl¹lº‹·¥ÿH·Å.e†Ã­}º†º§>ÉeçI;Z³›McÁ›–Ë è»yb:C -Í8|:Ò«íT5ÕTô,¼è!Ú¨gœù†}é ¦—«ÌàØâ32âÌUÈiöf`ŸÀ—'3i[?«J ^ÌüÉÌtÝsó]_dÐûkK©‚‡ÙoZÞðV{!1õ<¥ ¨u»$û¦9˜hšñ*……ÏÊð ˜mäÃÆ»ñò³ØîíØ±Mô³7X°ÀRÈ•K,Å18©¬Ñåo3}vÑhaa­užˆtApØA.‡üCn€y_]3îÕ‹²V²‘â(ÿtÏÌ)gb¤9‘ÇywÔs D,ËÄy«îCžÏç:¬O‹×;ØW ÞâW×JÄË:‘0´˜(ÌBz‚PãK#q#Öo+ëÞƒ™ímèRt.y›Æ»ñî³ØÎýÜu7ÒÌÝbÃK"œ»2 Í$ã$`Ï+2·K7{¨àµÀ†;Ö?‚ц!Gj×"‡´Qô}²¡`[„2üU¬È†™)C‹Yå ¦²âYs¿*éÜoUVÄÌã]4ߪԋ‹aõÌ7[~9ÒÙ^ãt ñgVi˜”˜D¼Zê¦Ì%¶¸Qêöך«ãÊ-¦Ç^«6ŠcfS«ngWv UL³•$VÓç»mƒŒw×à€ÑWSÃD!„BD!„BXû81³­ŠV¶¯Wx,´ÒZ„'QN^CèïOs±Ó)qÈ¡öI].ã³èî%uª;œØ¶eó¡~!Ij¤D£Âc†e{“Þ~:žZ÷kãч‘âÚkâ‰]{ßíºÝ78Þ¹XÜÞÊïAâœùN^d¼x˜Ý–Ž÷[¨0¸]–‹¹Ìòkr¼¬¬×ŒNû¬RÚÊuš’j3p ’"2u>õF°\Ѳ•ø´ýMéýØÏðVœß)aÁ¼ß·¢KÑi0Y¬nØûx:Yܵ¶0]ƒR¬J»¬µ14†a=tKl-hs¡ÛuVÁ!$²ìÖ7c}»Ý-Zï•V%HÞPZ˜A –¢ casKšíû£ ÝiE¬S42/};ð++&¾TyÒÈ‚iJ û©¬8˜ç7º÷ªË ãÑËö‹cfU+mP®ìZgQ&#*J@ïôòùÎÛ`‚7*ÀSB®K¢xˆª„ì^âˆB!¯ÿ™“íéþßøƒB}=O‹_ž¡„"ˆB!„"£ì/Û‹nßäÿÄŽØ›Çãñ^†'æ‘—Å^>è})¸êl1 Ãû¼`k4ÎöôZ‡|(dÂÓMPº¦`ÊR£Î Õ q»ùޝ ÿ®–º°ñÄÿæ>«¸Ÿú®¨²¢ ñ|>»ö,| ­ðþûšŠ§ÅÊaV®…fpU)ŒÄRf˜ÉM4l;ùýªgŸˆ¦‹¡æ}öT/d -ˆ–!‹ þÞÂË«ÅÅÕî^PõU{æÓœòÓŒôœ¾­n·Çc†+)ËUiïlhJ Ž6lˆáh]ˆžÍX[–q^­X†•G7Á)BE Žbwä•À½±Î×»•ù…NÏ‘Î×<è.þͶ<)G;7Dp´, Ïf¼-Ã8®V¬CJ£›‰`BE Žbw䌛ÍqØ_Á;>VE;^ó »û4V™t '¡²óʤ6ärÚ[cË h ßÛÜÅÅ6o 07K”­'Á-åt˜¹SLó˜'¡tl>CUݽÁz½œø£”I+ª»‰½<©MHåðc[šÔ`‘u ÇÙî-å{wBú•õêD 3»Vn'Hè ˜g1<÷û÷ÓÊ×6~™¡u×:®Tt\hQCk0ƒd í [B{=)¸†º­‡tp\oX*º ¬Vf/îÝ•fäÅ õ†ž±™³(KNIx$q‘мÞ^{_‡-JÆŒ¯fÅsŽÒ®nüçåyÏ‘ÄíÏæÁQ¢˜¬Qô§„¥D!„BD!„V†Í~Ïyð=îÃöÝáø©þ’ºÝ¥Û ¼,FßñFä£uâ ßMv}ŽÌ¤]uŸ™=$ÄI‘™¶çTµ-i…¹oñMö@Òíd²Èá¥êìÞŒdÀ ÖKó+½šÓ€q–byéê—Æºhò:÷Öžj 1ö,iãºqQnk›šñî†Á`'…ÝÞ"…òYÕˆÔZN"\À')†©Ÿ>"6Ÿh]Žž®ší²°,N7`Ö¾)Šÿyûü]ÿ^dèŸç1—Ágòáø­ûevµÙlnÎözîÆ#îûÆ»ƒ-»’ãp1˜€¿4Ïç6xË{¹uVÀcp&¶üRX“3¹—hgK+¡ë¼Ø‰}v×peW“f8¦!! õ—œŽs„%í£Òïúº¦0­{ÒDÌîèNË×(t=·ëOH«l¸2›Œ2àà4ÄÓ }Ì¥ÎyV'»5¼e,ï»»ü‘ã…÷›ð\­´ˆÍ½Û—Õ?è«O7·=¶þù˜Ыèž …T'b÷„BEüÌŸoLöÿÄ‹éê|ZüõD!„BD!a~Ü[vÿ'þ$tîÄ|Þ?Šô1?4‹ü¾*ñ÷CéNÀw\}mÑm޽ö“a}¡s©ÇèË=ËXav®&@£‘ëe)Y‚{0²a]†ÜÝíËm×»‡ŠváÚü0õÞÜŽ›÷Z›lQC¯xº=…lù¼YÛwî{“— ˆ¸íaëºïn[wlžö?ùáb ·IÎlÛ«Ø?Ûo½üWoÞæ™âýÕàwõüVXïDõ=ÇÅ26Bn dÚJÑakJwo§D$.ÍÊÏ|u8<[-mR‘!Y•«14©H@t» ¬×†ëVÍ&âÐºïžÆ¹©£‘ßXDûoxÄ¢Ág¬˜}Üì#ŸsÖq½iDë—ß.\âNA"é‘s±On–ãv}ÞB¼×9s±ohÞw=kÈPL¡köƒùµèl(£6ç÷H5á@xUõ ŠÅ•-2²dMU@"–ôhßêÆüÇ–•¶û«úO°?3¹iW^þˆ‰íë£öÇCïxS Ââɾ"¼}X\R:*±XzÖð ¥ÚKpyãkÁõt+¦úù£pâkÚmκß×ݯ%”Qo±Èž | ÍÃɾ!`o« ‰\QãEWvzÕˆ,àJt †h0dkZëcñR09äkZëÙÕW]Ý˵ûA‡G|ÚŽ„ (ös÷¤ 0 <*ú…‹*ZedÈUT9ŠG¢ÄïV'æ<´éÞTO¶ÀüÎ;iW^þ‰“æ”°û×fפRÞï+CÙÇu»šïVù¥œ‹x@i5E jÒÝ›+„áƒg_ÁiÙ39¸::ïìÑ]v‰ÃðD ÛE/au2P- ÅQÖQQʬ¼$(˜f'.€:÷qÇ¥9#Üòø•çÅævFjãËÝú*¿Âý Ã¦ß6¥cÝ …{=ýÒ%-˜P}B’ Å•-2²d*ª€E:Ž),Dû'm:w•ÚpqImùœvWâz)±£Ð`µð‚"NëÞúœm¿¾ß7joZ¸ _¹˜X`®s.‚™ps0HÞ[÷_Çð\ü ‹ŠÇm¿v¾wÝâ’È#Ñ´âùsº@a1ºÝìOë§h‹ºƒ«ݬ “Œ8õ ’²Â"П[˜è9(ŸÀõIõ¹ë§¿E:(H  ̹ T"ó>sž`!!ý=äž]ߪ°¾Ë—vÚTmTAQËX]#a›iýtòËOÀ©P+Qt¨„ Ç‹]S×Ç`¸Äo‡ý¯s´»?ƒüXöøm¯}ù)­ˆ{r­ÒA,áÿ‰9'ù¼Ußñ\XšÁþ_x§ó„BD!„BD!„BD!„BD!„BD!„BD!„BD!„B þaK'%Á;~¯cÅǨ”½Ý 8fÕ5]-»)©(”BFȼrÄÙcxÓKüaå§8CÁôóms;ÝM WŒNñX,Ѝ(]Þ£æŽrÕ%±5¯/nå÷”¤†ï7 éCÕÐÓ†nQ;µ´ÔÌ¢Qá0 {"<¹¤KdaãNh×nëE4;ª“z§Ø.0‰!LHÃï,&&‹î¥Yꦪ{`2•FÒZ¦a£˜Ž º÷­#•ñû6E§›éò¹îõj¾k]Mòë²–tJ\Š € Ò›24múª¹ÅæÊç;_yƒÊ)8—227|ÈTù>טÉ1oJø©<”DuO+}T!„"ˆB!„"Šy`ï<H±@›%ú—é©!Çó§³ØÒµ’–»Ÿê¦¬k«]1¤7ЧK‚ ‚·¶í÷+÷šÅ>Q`œr!}˜Žžt÷]…Êé#’®¹_%-™™\Û¥¢Ñ»•9"wS¦ÝìOŒ%Ú¬Y…¹0s1fz†|ÂSKz;³1î}–ߪñ@k€çÞ´\‘î æõÃu÷’¹ºX'ìÈjœå¨J~t¼°æ‘’]e¿5Q&Fõ¤9"-ß?Ü+Íë†ëï%st°OÙÕ9ËP”üè–Ò2K¬·æ‚LŒ-ëK~Ï¢·kÆùt½¡ÝðÄó¸бFUMÙŒ`Ì¥Ä9†‰\FÒ¹®k²‘|·µx¥ ¤]­çLm ¹ãg;þ‚·~úùNòX³Z±!xŽE3ÈsLŸ…–X»îR٘ǂÑ^)…Çîø%üàÁ^ï\7]y+›£Õ¥#9ÎZ†¾|ºe‹<­“6×ðý%5Í­×7Û«Ï+P’‰ð÷L„ÌŸ7Û2µò†·—è¬4 PBèž2… |ÂÑ ¦qDï §Cîÿv´ÞoîN Öð€‰‹I„ˆ|¦ Ó*)%|,>³*ÇKÔ~Â÷Ìn ;ód¶UZP.×›\“—åL/¢únoáõ£Ö¶«ß¹_€üü:Õ\Ÿ3ªˆ]{XÙlLÞï»t>÷°;ZoH7÷ kÈ·„LZL @å0NŠŠI_ O¬Ê±Òõ°¨cphqد£Éò ó¤!„BD!„T}…ûqmÛüŸø‘Ó»óxü~+ÐÄüÒ/òø«ÇÝ¥8WÝUV] ?ÜûHÚ´Tòa.‡àº7sEò³_Ü3‹xJ"bRa—ç0˜f²¹¦Ú7æW|Ò±ÐDËÚïíÑ_ Ä.¤-V)y0ÝÐg{@.V8‹†co L&-&qO–A4Hæ˜c`Ô‹øÚ‰åc°ñ²ì‹¿¶Ó&ÈV[éXgîö]X..n¯rò‡ª«ß6ž|­‹ÆzNSUº×Ž¢ÒEU¬bw% À6½FÐ4Ó±‹E™7І-×…R ÉÆ°Fþö³@ZhçP!ŽhÚÉ eT3…,-†GeËzÑ7gnêóK@–ƒkv5:#—·EzA„¸°ê·Âð1üaI‰‰¾»)ó•ÝT„ä–lÑÃ#KjçµßÁˆ‹+\Áš¹íwÝÊ“ ³Û±AíÖsY/AÝ/@ ´Dý‘³tp\_ OY•‚¹€…5U" vpî‡æ"ùUòò[D`¼N׿#•Ýáø§Çm“t†ØíŒ#—&ŠË…ñªqxe_’8,%+šÓ9e0šfìAlqðϬ/ãù,N/‡\'zÍÍæXmw ?0vÐñKņåÐüèØ;ZAr±¿¹:¢-á ‹#õ †iÓ…‘¥Ñ›#5ø®Ìs c7nkåWú+<,‚ÐbnkQ¶.šB‹òmqt}K&(‰_^¤à±]+J¬ùUM#ˆ')ÄÅ&6Q½ûŠã8È™n™\67{ûú£n7-¡E–<º`û½Ä¸¦Íä¡Fér•¤àX%¼®“! ižs¶ѲPùDwo¢·g>(åâHê®âyyRz´N!¶=›Úáx¡ßÐw³ÖŒK5ê¶ÜÛQN^%bRž¢+(ä!Mr(åys´ØößòóXÅ+p³găãzä©k<°H}é±°E;'„6è[y|óícND/T­`Õ \„%TÇ ’w?XÒ[5÷U/F~Ð{X\Éî¶k}ÕÓh°¤Ci1£l/»°|ËEó5ñt–²axˆb­cÃ/!G!ëg-IÂÙDMÎÓëŸ/Îü—Ÿ¬™Ú}²¹{ý©êÈFÐX…áÇE‚èb‘ ·ÅåG?Š+òS"¼Äk¦¬¦)IŒg×Nîž<ïz䳜DiÑé|ºW;S²æ5UçïNeÆuJ„X ûÂ`–ŸJV¿ÃÉU»/X´=ciÝ®¥¸ç«];Åí%Šñ¢E‹ ¯ª2Ã]Z%áÖSÓ«‰v ë°]ØìkñNìLv!íË·?áCÿ:Lÿ7‹Çâ§óhkû¾*ñN%ç!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"Aü–NK>hO·/Ëë?‰¨O¨´WÖâš|•0C‰,»òJ®r[$x4@Óûž¤›@Ø¥Þ-ÿ©’ÝÕÉ 9ü¤fKwUŠÇ‹I‚@y{À‹µ6y¯®X´Õf"€  ¯1ÈtAR‰„Òn¹Þ®òœ–QTƒ@þðó§F$×Ùù"‘±Ú$J¨âs4V3ËXKñE=vÎ"½c¿r¦U¼[R€fóð|„×å§ý?Ñ2£Â›ûé >B>ZÑóý*_ oï¥ÿ¡ò>ZxþŸ?Ñ2/‹Mˆ”I\ƒ˜IXÏñRmIÈWÙù&DÎÙ?ÚÀ ÒÙXYŸ˜¾dåjâ_£Žž ÀRÂcT#1ïïO8›6¥"B!„"ˆB!„"‹aÜÖ¹‰ ¨4ŒΚE+¢p{JiXŽÛSigV$^É Þeß¡3O omí¶üEBÛ6ÕZüf }é¾BtžØ‡öEL½^]¿µß–7ÈHùjÝþI”£ÂË·ö»òÆùùjÝþI”£ÂË·ö»òÆùùjÝþI”¬VÚë# &ä7¦ù #¶!ýÿÒe)¡çjM ÀŠî5ëÓîÔ™'3»laµã‚»AÕvñk\ÚÐeëÍQ‡ž_™>~Y]+‹ÜUɵà]5 Ïn²˜öÒv?²„87˜0oœW¨UwxÛÁåNYÎìúNRÏ’|û{K ‚íy±G+dË”ïyE®ªÆõܨ#tñ5±êEߊšÆ‘T?jq¶C0 Ã{½£-ŸY®Ž«ƒ ,iâZ*º ¬ãÖ j— ÄA8pøIpa&Å ­‹>c½fÐmwwÊûÖ¯‘³:F³Rê¯ Òläîˆ!¤¬–‰¢{ç³|_ÃX2å¿fX¸¾2A´_ÅY‘†ŽÎC’Wµ¤Š|' =Wä§_µD ³—nýÒæJÆ8ê/Nž<íK6^ñÝ ì üçú 7ô‹tÂþWt]³,"ÿ7XÑz°g¤2O_²½LLðÉëHܹ¶k½]… 4ßuψՌpСÓÅv‚y+ó$!„BD!„T}…ûqmÛüŸø‘Ó»óxü~+ÐÄüÒ/òø«ÇÝ¥8WÝq©üïŸ>-ªxtÿÝ;«Ù¿YûØßÅvýîiíÅé£÷ôëÞ¾†JôXý¾öë¦êêÙ ÉÄ] ÿzY3t3ÓÖã¼§Œ{&¯-þ qbùgöõ¿Ã»oÝ® }éÅþf¹½ü»¶éñYlóÂ~¨<:NsfÝ^ÁþÛ}ìoâ»~÷4¶/Ñí¼þ¿Šc½Ôô~ûßñT•©|ï¿>-©øuÿÝ;«Ù¿YûØßÅvýîiפz<~ßÓ¯zïƒÒ½>}í×½]v<ä³èNÇ^1ÆÎFÿ+âèU±ï%ê1×KŒªUµˆÝÑRñÐ*”³É9%sß uW¶Ûß’àÄ:ieácUζ$m¦éñóm0û\"ãxYúž–½¢ hܺ–2ï,1äÓ×-WJ«²ÖSU2,æ A…s\Cô ß»ó¿%Vàž[! ÝùÕ÷wùsUvÓ  ±mf{–ÌEë»÷¦æú4¡Vù¼bWÚ¹˜öç\²”Ó£ gð]WW¥Õ=ë«N¾ßWW¦Ôt÷Ú»6†<Xóâ7Vö}Èàïî¯/+UÛ¤Ò•sÐg)'<‚>«ÏÂÁé2ƒ¨ž~å {ÑŒK Ud¡¤wþ/Ø7wþÉêtýÿg4×Ñ,äÍëýû5ïÒè8 دôkÇÚÛmz©µ®ÄV‘ßÐk4鮽Å}PÇ„¦š<¡Fºæm4£Î ŒQƘúðµ„Äûâ¿/)Åm0û,üxZ?DžÐÞ¤º–5nìBÁ+7Z¥]+o Aº°55HÒÐá\^ÐÍAØíï÷W‚»°O/h‹ÖcµõÓóÝ-œF–Â÷ŒÑ]‡ôiÖ¶»÷§IÙZ0ò!Œ^¨…5F&ZU>B‡ÅIgÝJd‚¶Û-Ÿq ®Ú^"´=±lÈ\Öb/]ß½77Ñ¥ ·Õã»þÐx½ÌÇ·:唓§ nÿ3·«Ój>vºðqÆì+ó>®¯MµóµÔÁ¢yKÄBEæ|ç<ÀBCú{É<»¿U`/}—.ì5´¨Ú¨‚£–°ºFÃ6Óúéå–ŸR V¢éQº§¯ŽÁpÿ‰ßû^çivø±íðÛ^ûòS[öå[¤‚YÃÿ:rOóx«¿â¸±5ƒü¾*ñN%ç!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"Cö}ä²r\5¶{c•ß·4JÙ¸·ë´˜P\îÅEôØz‰daeÝ-Sèq‘Ë#K`vWu«­¹mµüy/±{˜ÌFic§‡_?¸E‘¤OeïMÉk:†™ÁVü Â¥‹RÒaû`YQÊ=(Ï#'Ìvn ‡Å3‹‡áÈo/®]zî+}¡Ššib9%ÎÝ/@+§جNns;b›{mˆœ[õÚ¯£÷ÎüQÔ_p” Öˆ²0¹ÎRò°QÊøp-…ùüJ4‘îû.×Tîc]9‘¶],þ7Uý­8àDåéì¡ ßAÒÔ»ê¤?±ç_oƒñ´O[³çÄúV*Añ=OW0éôŽ›k丱1EÁ…¡þ¯­­‡•¥Ù¡.}¨T¹]Ò›Ñ×uÌ×dZu¾.nÕSqiMEHíÓˆ—³x¯9+ÚoµzŒ¾·.¾)ÙÂâòXòvÕ¦ô¹èBY'ÕB—Te (”Þ™¡îÔ´‚u Ê—JFï§u»4Øl:àßpI)¹„ñDS}5jÅ­ -[™ó•: “ã°ÑÇ& vœÏË)þºº×/³¶Ô4÷¯ ïn$àã£éµé{ûïìQ6h‰õf6D+fêyDxýì¾è«q8eô)áZRSŸ²9Ìf í8hñøÙ¢ÅzÍeeåV,íWt7¾à¹D¯ÂaãtZ]÷ÑÓyÛTäÿ.Ìö™ˆÎßÔ½Îq\Õ¹æËRß0}X“‹±UA¢c¤cû:9]ëmº Þµ[úrÑ:jjŠÑæ,.-Ío«µëAËc{k²nµÕ*†Ú#ËJÅÁmX½ÕnbªJ[ïU%%¥"¾.ꃆi¿g6<4r7 J*Ù˜øzÇMµÓm–X¢éžÎ4–ÍhÐÓ®ƒ]4 ïd.„9¶£RäuJAu[ª"ë™pÒeZuÇ7j©‰8´¦`œý¾qRöwç%{Mö¯Q^·.¾*ý›Áf(5ž·CÓCf—=JA¤¼Éõ`P^0BJ”g¯w>ïy ‹¶+ ìÑ£gÌØ:ßX~ƒ¿uxº¡ÃbÏz31xªœæj¥<„>Sµ»;/iBdf¯Í˜k­7O‚ö°x¹™…—)Õµ^$ß’w²xrÔ¶ Ä(Åtó{b÷êëÆa¿KÌF~¤²YäÀ?}4ÉÁ¿$ íYt:X·{=õ¾½9­°ðâ’aF®¼Ûr:oã·ŠuzºàÈ Ã‹°a]ã ±îÜøõÊï+‘¼´Äá#ž¾}ÙaØœ`ÁHÙ2¼ñ=jní¶ÓºÕÞȰæp[mõtÔoßÜ¢¶´â‚üY —§Ò†ƒ}~¨·RìºÒžxy×ÛêÿDïìùñ>•ŠEüOSÕÌ:}#¦Úù.lLPð!fP^´Nžï$l‡Ð·>Ô*\Ž¿ÕMõ[®!ë™pÀ ‹N·ÅÍڜĜZSQR;xâeìÞ+ÎJö›í^£/­Ë¯ŠŽÏ³•¾µû.º­´ª{{ÿ8ÓŸÑæìçý¼éîöUú'ûGÁyø±–wƒÔüJ‰'zçB@D 2AïEÓ6sj¯¶[´vØ!WFŽ-Ù¹Ó#FùyX°³YY„Æã¦©@ŸŽì¸Î6âÎw?>c¶j®ƒji¿5ïAŽ{pÒ˜FPÜ´7«:ëÍDöôˆßo+xo‡Û›o]Ž‹¼=ÑæõB“¬â4Ìâ—$ô?ÓhãÁ Z=g]ž´M.~Ø™ïÄ ÛÄH§Ò/%D!„B(Oš*3Ù¾'nÍñ@г³#‡#„„¾úzxhŽ"QM/K>@CwWšýž¡VQµ©¹X>楃/|'°{ò—ê¸N6@iyø‚ûÿë¤Gȇéù~ª=:E®ý°—æçc IOöC–S05ž”Î^Å{XKg¥~ªÍÆHî寰$4¾Û¾fh_zsï ð€JNõãÈGé“ÂÙz1Kœ‘[/£©ñ«àЄBD!„BQöíÅ·oòâGNìGÍãñø¯CóH¿Ëâ¯t>”á\uÎm¬–Ãm+h‘L+d}-tÄbì¸iß̬´aÙ¨7æa™Ì`̳0˜ z@Ã$,kÝE·È¯Y§66Hú-¾DîTÖÁaH‰–2‹m(`Üx¬Á¢½V¿váHuEñ‚ +o JÌŠZj¤f9¦X‰QNçï7·•®lT­,l1êzõ½vå[&m¬¶&¢ÁoqeØ...¯rò‡ª«ß6œç•±x¿HËMªµ®;19NZËi±’Ø`¥-(…l¥®˜v\4ïöVZ0ì·fá<Ì39Œ€vfKƒ°±¯uß"´o£Ë‡Ž7¾‹o‘;•6qF¶ÄÓ?Þ{²á÷s«¤¬§ÞU,­ëJZTÝ–FâSHS'E{@~†õ£ËãkœÃ‡ÎÖñ4;œ§–Úy&NÚú¸‡ÞÝ2‹Zd,xu }'§ªfã1Œ­ ¬Æ7Vm6b“ÆŽOá»Õ»ºûíiÇŠaê9s®g¼ÙOVó ¿ÚcFÒag~úzÂxÑg‡¯H§ybHE&ñƒŒ•]–g̦®šBY VÖº7h=êµÙS 3]´­wª7·?ÁB­¦¶+DÙ¶5fx0áÞϰbtẽº®Zˆ+|t R®¼!o4vb ¼2CÍ£ »=li§*Ùtáä‚ Ù”è.κØÓNUçºè°Ì')y“Ì^96¹×jK9ˆ"XÍ[Åãg!jŽ“Ô×`½Õ»wV¬«zÐ0ªüÅ«‹ÉÝH22z8YÚÆÐvO Íù/W‰cYø}Mf¿U·z„Ù~Ïq Ö µh]á…˜ºbmÏ»™AàGŽso-£ø„%y ˜:Ÿ‹htniÌEß-û»—TØö±ÑșͻþÇà>Õh$Ú-pšx7œºU¾X›÷}<~Å^×MÖ¼7•f%N.¾¶lÝÔGýWšã1áb¹³×*#~þï4õo0œ@ÑÂ6‘ ;÷ÛÖÆŠˆzôŠw–$„To8ÉUÙf|Êj©§‡$¬2·+˜NŽçÒµÛ½g†•k¡vÕ¯J7·;òOVB„Ögƒú8úŽºXW¨[¹îê!üm_²/dU™€QU9ÈR“Ç©Û×Õl²Ÿ„ÚdZ×>¾«nõ;.@M>näæ\‡D¨E€€Ï¼& `yô¥kü<•[²õ‹CÖ9Úê[ŽzµÓ¼^ÒX¯$X°Êú£,1UÐU¢^e1Í:±˜—b»ÝŽÆ¿à~ÄÇbÜ»sþ?ñ#¤Ïóx¼~*q6†¿»â¯â^rˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB!„"ˆB$Ì)dä¸km‰÷ íÑ¿áÆÜÍ— r¾ì‡¢¦D7 ÀJ3)„3ú,f,SL3 ißÃUöLø'2ÆhŽáÑG£W¤ahŽ×km¡E7ª™/pÇÀª +0²T&˜šéæLð=‡ÀŒÐ7);êMÖœÏÁ_4³·øÏÛm:î·ââ÷ÐD"ôñ ÃoO¡ ›‰]veM2̧,敇²ðÐðøÑu¾™·çñZ?÷;ګӦəøÎïxÃgTaˆvºoð*7q‚æôàu™„„Õx„|É´x(c{ånî«=Ãe“ˆtmŒŸTl™º- a ¿ùUž´é1‹¼Êœ8ζ…áÝÿö‹=i!ô“‡UˆÂNç*¦WýKM9 pŸ¾&ôýÄ–Â58É Tj+s49Þ&g\\ƒ ¹€!ô££ÊV.nSI«=Dyw%°B®›•`B±\xø€KfêŸ2††~#‡T?Ùpq‰@ý°×ð'+;+&,b²zýu÷l .¶â¦tGtÑÝû*UfG…Ÿ q!øïu®l»Åu•eTUFg»˜K\ó’N7²pøÊôš®·çW±î Xg~¸FýNú%³GÊØÑ(ÿw eÞ'è@,®Š©É` ¥Y´–¾`F7²°ØÚôš¹Yî½ò pø‡aópW¾‰–5g`Š¢†§ôAãM4_/À˜µÒ@ p–@)@4 'ªo†ÁE‡ŒE¦ÎÏš¤Î<É#¬ÓPBðÀ Æ Óû‘g­7ᤲáÇÕ Âð¸Oÿæ‹uû¨á¨cªÕzÁÊÈëXÜìnÆ(,¸®¨ÈF\ǽ,`Ò¡ˆUµCÌ(ÈÚ¦+œÑ íß ½áÖ˧sÞã¢ìƒ}tzÕñ–F óš`ü¨Ù2ô^œËÿ5X?:Lbý¥žHζ‚Âð¸›8‚j,õ¤p‡ÒN}PKµ°âWSÛ°5Wp%—¾cw¥Û ªðZo*…·3-eh2¥¡Ä Î ‰in‹¡¥®Š[g1÷CÚv6\»÷8õ7Dë¡1Õñ&YcÂ!>i‘Á²y™!³nKÝmÈèÚhµ*Œ˜Ùâh¥­ùƇÃMƒà'I@¥ÉX{ d’ø|XXÄ0èÑË_Ä­¦Bù©îMƒ Âÿ¿™-õ¦Ü1Õg‘‡šñè¬-ÉÿüÕg­1ÕHQÑXc÷@?ý¢ÏZ8Cé'>¨è´.ŒAüÑg­!Õ qÖëQí+#¥cs±¿¨²™®éÔ@4yÒÜVnˆaCÎSHBCï&+$ˆErlb¡•’ÏærõÿØÖLz¾µqG-`ŸeÙXvˆøœÏêµÆ8‰ ³–œË Î30ê)í.$†0L¡4)”ë ;Ÿmru)©gðˆ‡é‡Ò•sÚÑë+5¤~t1:>idÊÊÍp_¢3-boýXaæ#Þ)òý«aÁñóü)zx0à\¾ŠÎð‘´7ØÊ?~l?%>‡úß"¾oѰ¿]÷J<$m ö2ß›ÉGõ¾E= õßt£ÂFÐßc(ýù°ü”p0ÿ[äSѰ¿]÷J<$m ö2ß›ÉGõ¾E= õßt£ÂFÐßc(ýù°ü”p0ÿ[äSѰ¿]÷J<$m ö2ß›ÉGõ¾E= õßt£ÂFÐßc(ýù°ü”p0ÿ[äSѰ¿]÷J«mˆcˆÁ®'Š67Ç=Zèí>•«®’YxHb”$R”2Ó>i×ÍŒedÚÅwÅ;#`˜ŠûS¬LDDGb\ÇþRÛIô¯÷þê·¦ä}Äž¿¼“ýdÿ¶Jÿä}ÄxþòOõ“þÚ=+ýÿºž™ÿ‘÷àKûÉ?ÖOûhô¯÷þêzgþGÜG/ï$ÿY?í£Ò¿ßû©éŸùq¿¼“ýdÿ¶Jÿä}ÄxþòOõ“þÚ=+ýÿºž™ÿ‘÷àKûÉ?ÖOûhô¯÷þêzgþGÜG/ï$ÿY?í£Ò¿ßû©éŸùq¿¼“ýdÿ¶Jÿä}ÄxþòOõ“þÚ=+ýÿºž™ÿ‘÷àKûÉ?ÖOûhô¯÷þêzgþGÜG/ï$ÿY?í£Ò¿ßû©éŸùq¿¼“ýdÿ¶Jÿä}ÄxþòOõ“þÚ=+ýÿºž™ÿ‘÷àKûÉ?ÖOûhô¯÷þêzgþGÜG/ï$ÿY?í£Ò¿ßû©éŸùq¿¼“ýdÿ¶Jÿä}ÄxþòOõ“þÚ=+ýÿºž™ÿ‘÷âÈ]Ö…f@ñ$ ²>ê…еOT-½»ª(&¦U›IkèL¥1ÍüÉoüV3¾)ë‹=×ö•7 GÚ2 ™F_ýfÃòSë|Šåôl/×}Ò C}Œ£÷æÃòQÀÃýo‘QèØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºQá#ho±”~üØ~J8­ò)èØ_®û¥6†ûGï͇䣇úß"ž…úïºP[FÚÆâÙ›—dc&ÿôû©aë<•ۇƒüïºU¶r•+6Ò‹Œ´—…& †rªl*¹§Ð4zֽ纤>^¶.:õ°Ã.ì‡,¤‚l¬ÉÌ­A²ø!É7M¢Z—E"E>ÌsîUÍXYñ®Ta!ê ùNUJ`%H¥¨Œs:¨ˆA»’ÔF´G—E®}šÕp 8i©½WÀ¨Fº¦@á•SJ™=` xÚ&Ïœ–o«‡Xc-þóWrAöåÑEÞgÇ™—b®@CO³3þ±9›IŸÕ¥Ͻ)I9¹Òææ§NÓ‘ÈE K!<ëY>Ô„Gó§H4)tçõi:ÀÐÛî-ŠY¡èyójªåžð„®’ãÄq˜sŸ,Ò»¨ '@¬#YŒûúgV¡Ò¸™vLnmƵ—,Ï×-8”«›=iLDi\ÆÞN²š`k>q®…™bú2胭ãX9Ú7qÚñ÷g.àTj•Ð @㪹†‚‘H#×¢GÅ”¿¢—; ·¤®Çà.#ÆDgÞ_Õ­=J¨5eë%U3 A†3~ªw-˜A UZ—J¢UÙ±9·æ\MtÏ-J®SŵBgÖ¤ó„ÈôÞ8 ©5Ü]ÞV¨‹;R¬C\å>hº(öäu(4z$kc#a•Ò¸gQ§Úì€eËD™5«#óšsî²SÇQˆÆä"…$‘:Í=d#,¹j)Õy[K|Þ­,;TBKl¾é&=æôynˆiÙFö{Üß`ï**ž¤¦¬­`8@eTÆ@ ev36û&¨ê}ÂQST?1àÞl´ß(¼!訅8qDe0¼ûæ•U ƒën™Ð¡{04¬ehªÇ0å0Í,ÓEY¦ŠFêU*{T¨”Þç<¤R‚RQÍRSe3&K%ol’¬ël±„ ˜kµ>ç²~n?|ÊÓÒéH½WÙe—‘ê­[kØ´2Œøg:»AîN€%1½¢X aß÷Ô+ƺ$'·Ó4 é\.ÆoVou×zœûûù¦°ŒSØ]Zø$®‰®¶iJ_ºÄƒ×•Ü׊½¦‘»1t9§¨ú~âx˜Éd37ïNå»ÜÑßŠä¸ ­ù¨0AZ‚K|~­?jÜŽÓ =¿éW(¸{‘´ÜZÿµ=¤•lÐÀñèÛ©l÷‹}ʶŒl™U¶ªêÄ etX—…gS‚”ù4l‚I:ž_m/30ØL"Ï.U­~ôE»l÷A1|%ìÑî÷»0šw‚µ”VB+WÂØ°Å”ëÄ\ó¥#Œls1GM?z&ÉXæc`×/ËÁ]–ƒ´@ñƒT-ÅâÀød£ͻږQY °¼DVbŒÊrŽB:÷§$x9¤nv <}Ÿˆ•ìmƒÞ÷…‹>ðÇ໤!ÒÏÚì*ÿ¨_ùJ.üŸkÍ®I£ÉÃâת°ôIx\zõzù$µ»V³û5À o•×½O^¶öîŠü‘ )^YNyh)0áäšøbéLIqÂH²KV³ûJÇŒ•逺¿^ªêòº<© 9ÝŸIÊYê›$5Äi>\=qEZ_ }áÁwHC¥ŸµØUÿP¿ò”]ù>.×›\’=N½U‰/ ^¯_$Çg›@Ùo2Bð¼_Ž{6V ìÛ¹©]tÇ?ÕBE!‡1åÞš¿4c3…´Ÿ+t?¯zõ >€3E£þÞ}è²)YÍ%yYl ªy]ƒ[»ÊÞPì2òu‹jXZs›#g9i’$þ6K'µúÒN=#³ÄÒjzÿ mköQh6¶ ¿§.zY3¾÷ ãJ]ŠÖ"T=QÊÐi´º÷e˜Èd0z†¤ý{û—<8¨àžªCù÷¨M‘‰,Ëæ’¼¬º Õ ct‹×w\ø/º½¼^­T«¤Ò•äô9O/7 P˭ׄ€b&ldîžcï Ö:çŽJëY^ »Äñ·T/X«·Ig;¹öBS–z¤b`à¸ÅîUÅÀ0ò˜ïjóS Nsºæ"Š. ù¬0£ÕC1;µÞ ^ïÑjÞ-7§6"á[2µ\a)dQáŸ9Š{ý“#œ×1ÚT¾£±&{˜æ;P*¿~õÔw´Ç{$- ÆÞ÷l®á›w´«¼ ‚°ÃYÕBE(ŽcË.Iæ¿4mÌáAxò`1·3ÛCÁ>xW³ÿ f!‹LYîÜ*ï¨ßùJ.üŸkÍ®I—£ÈcãV‹!„”ÅÇDZÝ«Ùõš ´#—ø:wˆ¬@UËoné¯ÉÒ•áu”ç”Ñó^A L>L@%ƒ@§çNzå6¨B„Áhq[‚ ƒ›bˆ¡¿êb W´ÝeœªËÀ@˜À<ù¦ÑÆéV‹+x¢|® `²¹zÏÚ,†6ÛÑ’Ò!›\Þv±Y‡‡ÂÔ®°#¼Ê ã‘H'Ì¡9H5ORFM„æiÖû×µ+1à¸fluèº×­bϬËhê!X¼fpËÖÞÝÑ_’)¥+Âk-ræž|8y'þPø/& 4¸€]ºï +"µ[?´Ò·ŒÿÞ Áw‹"åWw•QåYÎìúL2Ï’DðI²$øY`¡#jÕW¶=£ØëÖˆì†*´a‡ëp؃‹¥­¢âGTÐ\ˆZM2t>Ug˜'V šá3[cÞn ;dn!±¯0§[;á÷VÍpÛ¾‰ºHèT-Xw®ìø‰µ-uG1da1sÖ™è)Ïs3‹…Ñrvƒœgqx£¦ž%¢í c4d× ÅQyïvJ1 Âïj=« ÄEbQ™LQÈy÷¡˜)žÜì{Çæ‘à'•¡ìñù¢Ï¶‚²â.c†¡XÀ­ïVªÅ˜X•ÞPCÜGV †Ä')b 2`æ¥ïnLŸˆ‰†G·@ž­zÖ,úÌ÷y㘄]{Âó ʽmíÝù"R¼.²×.iH0òMü±ðUƒ ,à˜…×xKdV«göšVñßûÔ.ñc„\ªîòª<¡ 9ÝŸI†YòDðI²(Ÿ ,$mZœf@Ì}ÿëNr¹y¥HPª»EÚÇ hɮТó;Þì”b…ÞÔz+!VˆŠÄ£2˜£óïN¶`¦{s°iïší<­`Ð÷Í}´Gs5 ÆozµV,ìÂÀÔ®ò‚æâ:°(H¤0æ!9H3I“4m/{t dìüDL2=ºõkÖ±gÖg»ÏÄ"ëÞ˜AUëonè¯ÉÒ•áu–¹sJA‡’o催YgÄ.»Â["µ[?´Ò·ŒÿÞ Áw‹"åWw•QåYÎìúL2Ï’'‚Hu‘DøY`¡#jÓ¡mcD^Ù ÅQ˜Ì”b° k(¬…9xˆ¬Å”ÅyÈd3»0S=¹˜4÷Í^<"Vç`°{Çæ–϶‚²â.c†¡XÀ­ïVªÅ˜X•ÞPCÜGV †Ä')b“4m/{t 'gâ"a‘íÐ'«^µ‹>³=Þxæ!^ð¼Â2¯[{wE~H†”¯ ¬µËšR <“,|`ÂË8&!uÞÙªÙý¦•¼`wþõ ¼Xá*»¼ª(BÎwgÒa–|‘<C¬Š'ÂË V§3úÓœ®^iR!„"ˆB!„"‰ó Y9.ÛtÒÛ4/~âJ“êÉõŠúÜGóOïU¨÷g?Ó—éÜ)!@W„m¸Ý‘KS³YþŽQ¼Þ;üê/¦BŠ®­œQd¨U—„s”Ç1µ…»ˆÐ8jUynhYý¨=ayoa>5sw]jˆ³³1”«–¼½ä‚onSJ]·'¶ž)˜åâž÷Š)åúhŽjó0ø+j˜Èü·wü¶àŒ—¡÷vsî:™Õ­]Ô+( EñŠBqˆÑ9‡4“º¼ŽÄ;¹W›qË禊>Ôø¢”‡,çöʨך…bd‚h.g¨XZcÞª¦Œæ¨•&ÀÚ³7VöÃ~ÚH_í¿Š.I ªæ^@ðÛò.Š™¡Øq‡ôj®ážô„ª’ ÍÄq ¦Ç—x‚BÍ­.põaÚçµbÇ{¾Kÿº*IZ;ùmR×gM¼XHYßìšQ±SõQ¯Êðv+×ÞÎI<•†l¬ÊD Ïeö¥²Àpí™tAæñ\¿7ÓK^ì†\n¤ô”õ‚NÖUÏ”†7ÑU¹]¦UG€)±:h˜"ÃLêIôµ~d£ŠÅ,(i,\^ú:kDOéu¨VÝ’{V-‹üKñ£¥–Ìþ[“¶ÍÍî7mƒZ³\Gïçb½Ï|îÅEôÚzÒq“-e.hJÌ 5×ÜŸ°KãeÛSètÑktƒHoeÍ8™µðy@ )¤ÝjÏ@IElÍ-u ý„×ÄŽgáœÐ4xÚ,NÖ7§t>îŽ}Ê&w³®]Ô*‹ã Æn Ì2H½UKÑÝàš6ÝmGNa„×ÿ”R•;¨Ÿù„*R'4k ß/ú@•yÒ—!ÝFMÍ3ºP¦¬Æ¬µ&ÃQjÌ^ˆZ%/0 E+š–ZtgÒ1avºÛšv‰÷Sžúû{I—uÂsÖ°üB2ªA’I6¬÷^‰1ÅÙwDŸNÍã m7×{®µ·%/]{)uƒÃ©u…9í´åOÎ…D™òB‹M5Š ÝWæJ<ëKšŠWEüͦg{^àgy’¶3b/ 3åˆì笓ëasÛ€%›þ«©ä N¿½bGCKCÈ®¸QF)¸gIªQ| Hf}ÄÏ ‚cyÍ~û”;d­*ŸØ_,Í¥XùQCJÙÒ5g ,û9i$÷°Ò±ÍþÁ`#~c›NäïaMêã’™V“¨*/ÔÏ-}ô˵_à©ߘQ†.ãî•~öZ ¾l .°9âÿþŒ ò02&4w¯Fr<û” × àÓæ’;mJ7ú _…(³­ßÝÑúéØ**â«St¬€NãíiHûK…mk}^BöòXAÚ|kYêò·]k[E­ÚÕ ¿¶Â`°È!ú}À­Å¾°ŠñU1¨JÒÒbd|ë˜è”‡0æyní¹Ò˜0Ñ3 q2ŒÝÛs¥VÀ.çó§æ«1»âˆ“¤uUâ˜%lø‰ºLbõD)i(”¹kLõë{šì °Péâ»%sÙ¤°Pé¿õ'ŸšíÿåßøÏþê™vWõø~+Âÿêx~)ŸmˆªÚ/€¡kxô•î¯xÞ2Ý,g¦¢)8q4Ys*•ƒ¨öe¨„öÀBì;eÒë÷¢ß³¢~v#A¥sëÓÞžþkȈžÎŒäòûìÒø}äϱÿª»–=„k=o§â™~iÜ+Á}˜Âð³¿w¹ØEê ì׫QYÙÖˆæ ÎccÏ$¿fJé Þíô[vDΕï{÷Ñw°h à/—H„\Eó`û6yéyÝSÚìëð_EØ_×ຘmZςؼô„:Z!úÛ…]õ+ÿ)Eß“âíyµÉ<Á‡“‡Å­‘èrð¸Õ¢ƒüÑi¼aö—ÇT&½Ÿó†øü ײþrßKó;}¦ÐwÛ¿^“Ú?9wï’žÖùÛÿ|“ÎÔ0•޽á%q=°»¯.9‰¯Zƒ Ö+ ð³G¨À¨4kLQ…’`ìîk§/ÑF\@vL9ÕÕÓ•þ žþeÍ”U´ÚŒDásÑÇŽ/Od¨jêÕŸÐ^°¾r÷§iâðš}þKÔíŒPBÓïòV~ÓöÓ³F ¬†ÇÔ‹}¡µÔ8™Y7u Õ´†M ÅJëÅ7žì)—1'. 2ñ¦öGŸ#·zãÁ`šYédyòå¨Õ&Ëî˱ØÅeŽ»¢<}¡6S¼N MDÆÐ­cB¼„L¥]*VdÁT¦€ÿú2z?ÿAûê½þ×ûê­£#«B[µd04YÑ]äíhniz`4×´HK¥¡•8cæ Þæᇆ1¦“Z=ã÷ºæÂÁ£? º5Ì~÷T•»â_ÍSaaŠ¢N‘=ÕÞb˜23ßÍÒa/TL‹"‰Kç¦c˜ŠvHæ»KE—ÕÕvÎæ»³‰cht»þ¥Ð4+Úuý¥ñÕ çöÎãð+Êì¿3ÇàVÇÌîöAÿnüuzW´>pÕùÓü>QË¿üc‡ôÿÔ©ßÿÛÿ}W¡ÿÚÿIRVáí7°ŸñÿÇH|âOñø/FÍþ?kZ3º!züÕVæb%èóÙ`ôÁ‘£'HÝQäSL bç¥S Á9¢-n 6þ¥É šÞη‹gõ)žÁû«nÆ6ø¢ÜB#´5Uߺ†;>"l)zÒT–JD –´Ë´)Œ“9Øb7þWÍsË3݃"8©œ½kçù®À H²ñO¯î²B…Ä+¿üc‡ôÿÔ©íÿöÿßUôý¯÷ô•%nÓ{ ÿüt‰ÙÎ$ÿ‚ô`ùÜßãðVµ£;¢¯ÍUn`†"^=–0ïL0òtÕE4Ê.zU0Ìš"ÖàAp±Óoê\¹­ìëx±öR™Ù캶ìcoŠ-Ä";CU]û¨a“³â&Àb—­!…Id¤@ÙkL»B˜É3†!‘Óå|×<³=Ø2#Š™ËÖ¾š›Ú¥Ãð^ÒM½›@½,´ŽöÌS²S‡fŠ8×U ÔœýÏÌ9c’Òº˜6ñóV1a,Ò¿+Ç}ü÷YYå™ÃÐnѬ‘E¤G},´нÈÕº–2]áÙŒFŽ&C5 q€Jœ¦c L˜‡K DÚhßÇP¢lKæÃ–D̬nþ&ÇzbµÛWŸÛ`»ìBˆ 7˜§Æ¯SZ‰Ô­ QLŽLs$—‹pÆyníEj´ƒ pÇ+swj9×ãÑUÖzÁ;~j« Stî®ðW½pdg¿›¤Â^¨‚%,Š%.C3ÄS¢RÓ‚%¢‡¾ÿ©uL濳‹˜(t»þ¥ÞŠ<€'‚WÍšD!„BD!„H?˜RÉÉpNß«ÅFØñqÀ*™{üIJ}DžÒúÜOóOï’¯ÙÕ/!D¦@<¿OÐàÞ‹ O5fÀ¶Ýj”,ÍC±N ØÉUÊŒ9îê9Ž÷Ž ðYƒ ©]Øžšƒ«!g: ¯w$›VtŽvü“C­å ¨Y‘²ËT³H u„öE„9@À3Bi¡ÕX<ÖhWBD€sE($¬ÚØ©@ C˜rJ—RIÙE[— õõÊAÈ;´LÕ’t§Ìçmf]eï(z¹7¶ÝaUÈzÚ´ùÊA ïù'Õ`OðÚóì¶ìû×TšÌYÌþK¦ŸŒQ½Òïp»Xêno¼™o݈Ýd`KŽtÒ:šÚäyè¬cy ku&Ó ÉÏ=¬LKY¯Y//UÖ¬.ëÎ`0SN¸ç†7—@íºåž7¹­®õªó{¹¡Ø_wºZ/×û,ô)¤à$ÈÀ 3žúI…óN%~Ão³Ugz!¥Qv.Ô-Ÿ4Ži˜ŸxþaÃó'ÛB§ýô |³f>åcÚòÙ#8=²Š6WƺèÄ3tá‘]t« Ä@)‚F!G! ;“á#d1»;%×þ%x‘2žÉèí*¬ð%ýäŸë'ý´èô¯÷þêëôÏü¸Ÿmˆ£xÁ²)Š67Ç=Z¨¿ið†­]t¤/ R„ŠB†@w¤G3cnFM§üUb‘01˜ŠûTÚÏß–ÉAìp´/²¾ ÐÉ^›§ ‹(¬æXn#Œ31Ì9ˆëܘHÈdvw˯üJæ•Jò÷ÏdÿiL¶¶ì´J#¼#}‘Á逢Éú½PªêòŠü–s»&³”²ÔRк8o‡5_ö­ |X{áOWý©ÍDˆ9÷ ;ö9—æx³xCV8‹“ŠÅ\Ba1i0ˆðˆOœÁ638<ͨÛÕZ:v9áç¨ÛÕê¡{OYÎÔ6Á*x7ÙÖït1Owº·Ã¹f²+*Þ´ C,¬Ê€ÜS”äk¦|.´¯3Età±,+(>ÉÜÑWMžÆÛR: æ7lSa}#{ª¬&v³â*8‰z¢JYJ\µ¦c¨§$‘a\‡%”W°`œÿáÉC¥¡v‡Äq´bÙE;cÞ­”b|!«W]) ÂC¡"”¡“æ)¬s2&†¶mÿOU¼3²2zëÕêž­uÝhv™»lmÜ+EF=Pªêòšü–s».ºK)&pº8l2mÿµSøpà†O¡þÕ7HÚ~ÖQûóaù)Î_"¹ N³}Ò C}Œ£÷æÃòQÀÃýo‘QèØ_®û¥1ÚîØãX9¶Š6Xƺ›h†n›²«®ƒ•axÈ!#!åéMcŽÎfËGþ+x™NdôâS-‘»íÌÅäXd}Ô±jž¨[{wUPML«6þ„´®ŽæKâ´ÄI"¸³ßø”ÇhCEí‘Pªêòšü5N‚ëÝéLâ1Á¤rÐÿŠËèð⢞¿Å>YóòØàˆAŽ…öWÀºX«vn›³,¢³™a¸–˜fssy%Èdwòëÿ©+0ò¿‰$ÚÿĨE¢@Q s¶E^Ç;Áî×EúÿjÕ×A ¬¼$1J)J§4Ú9DmÈÙ´ÿŠÚ)Û8lÄh?±wÄ0D^ÇÂÛ`ÌuÜ4øB!謆V` æ”€ëèI’vÈ2™¬ÅZLCeik±?â­ ´}¡C Ù”F_þ³aù)ÉÀÃýo‘^£a~»î”xHÚìe¿6’Žë|Šz6ë¾éG„¡¾ÆQûóaù(àaþ·È§£a~»î”xHÚìe¿6’Žë|Šz6ë¾éP‘vÚÛZ‡Î“8®s—O”eÔÜT=_“áìùóÓ|ÑðÄ\oWþ>+¨¸<?«ÿûø¦;;€b("0bŠamŽ0f*î|!‘eÊÍÀs Êa ß¡4|Íe3XÿŠÞL@•¹]ˆ±ÿùkqØåŽî‚Ù A¢¢ó7Ë©¯:hò S#i­YÊIœ1àã²÷^܈¥Ž<,=ù¶äFÉ—fvØlv XîvlÙŽz¶Ky=z`ȯ$:Ã*£ Ê®‚­ðë)Ži¦-ðâüÝqZc$ÃâœN^©V‡„¡¹lÊ?~l?%98­ò+„á°¼¦û¥6†ûGï͇䣇úß"£Ñ°¿]÷J¤íz Úýl.ëR¬S¡±j«Ü[Ǥl-x¹©*‚õkL ÉJ 9r.uLsî†l;cà¾LÃÜGÁzxy°±ÅÁ–LÍ÷Îù"È ­ Ü¾ð´èæÄÆ2Œ]+ˤl,xJTAúµB*ÏZ¡!s.TOQšLÓáß 7åoJ)4ØWÄ0ñI”tÊJšZã²Ðm7wtãdmë»ï—õz¡UÝå5ù*g: ¬ôËša £ƒùS}Õ͇tP"ž¯ûS3šÏâ'L"ü…û\:—ñfðˆ¬×÷ªâ‰‹I„G„B|æ%Œ­/3j.½^«gbç5çe·^¯] ÂÐà†9‹Ú☫c}à÷l£ÓáY+ …!xH`(H¥(d³ÍÊØšÉ´ÿЬs²&†GˆÓþ ÒΠŠ‹™"X[cpw½™`3´øCV²î²†á9„£2œÁ˜ §0Ì"I›#K=ƒý©&!²°ÆüEƒý©çuÚm{ˆlŽ~ÙtõFRQsäçwäø{>}sJ‡GÃá ½_øªf‡†!Óãâ™ Böƒ\P»~Æà½ÒãÄnÖod =ùÁbÞ 0Ó0ñÊYI4¸¸M©ßÕW±Ž2 EoêïIî×Ý–…i§wôçdmë»…`²þ¯”*»®šü•3Özd™Âøá³Ûÿj¤,=ˆç«þÔ¶HÁhvbÀÛ#î°o»°éó:Û˺¨ò¢iJðÚKTMÛI%û¥F!ÑOFLE×ö•5 FÚ¡/”~ý¾JaÁÃýo‘\Ç …úïºRøHÚìe¿6’Žë|ŠFÂýwÝ*.ÛBð¾6¤;$E£«ÈcåIEϓߓáìùõÍ7fNÕÿŠë‹„!ãú¿ññLoÈ!{A®(]¿cp^éqâ7k7„2üà±o i˜x„e,¤š ƒ\\&Ôï꫉ØÇ"‹·õw¤÷kîËB´Ó»ús²6õݰYWÊ]×M~J™Î‚k=2Lá|pÙŽmÿµRÄsÕÿj[$`´;1‰`m‘÷X7݃XtùmåÝTyQ4¥xm%ª&áͤ’ýң解&"ëûJa´[?ˆcxÁ®(ж6Þfº/Ú|!‘]t¤/ ¥ ¥ ƒ”Ç9Š^9›r¶m?â´ŠvÄÜŒž‡ü¥@12D°¶Æàï{2Àgið†­eÝd1 Âs Fe9ƒ0Na˜D“6F–:{ûRLCeaø‹ûSÅ®:íÓÜÆÈÛ×w^ /êõB«ªè¯ÉS9ÐMg¦\Ò°¾8•7ÝTú(OWý©™Ígñ¦~BÎýŽ.Ë€x³xDVkûƒ‰Õq ÄŤÂ#Â!>s ’æV—‡™µ^¯U«± sšóˆ²Û¯W®…Z´}¡@2Ù”Gü³aù)ËÀÃþ¯‘\ …?ýoºRøHÚìe¿6’Žë|ŠFÂýwÝ(ð‘´7ØÊ?~l?% ?Öùôl/×}Ò C}Œ£÷æÃòQÀÃýo‘OFÂýwÝ(ð‘´7ØÊ?~l?% ?Öùôl/×}Ò C}Œ£÷æÃòQÀÃýo‘OFÂýwÝ(ð‘´7ØÊ?~l?% ?Öùôl/×}Ò C}Œ£÷æÃòQÀÃýo‘OFÂýwÝ(ð‘´7ØÊ?~l?% ?Öùôl/×}Ò‚Ú6І?̳ýèÆL9þ/é÷R ?Öy+·…ùßt¨E¡}ù¡±= =⇰€õo•X|C¸ª”õeã=GšSÎ@ Ÿúø¸s„ŒÜöG\¤¾‚…¯ªÂz˜®;½†ïÝcOØ\³įȮ*kˆ¢ìcÍ®‹ö‹²º/ %(dÊ|ÓÔÂábÂD „SGŽæÿåM#§y|†ÊÒ#Á¤¥Oîz“¦Õ#b—x´?ƒÔŒÉnê࿘ü¤fKwU‰ÛÚL)é÷jló^ V¬X5ÓH(kÊaÜ…+ (w|9£]hZBÿ|•ßlÑòÔ¬ˆ—¶ïwœ6 c4]VÐR3p€YIýŽ©Jf’|Ïgá£ìüt°´SdËÃwM%Úòßú¼©Œ•øœ0q6Yíx,F•êÄÔžS× O¦:›µåUj¶ñh©'2[º£x/æ?©’ÝÕñ^þR--ÝW’æµëJcd<¤ ±ªð9„Fb‚¥¢]Û6į¸FÁíV ‡[pOFmÑpÑtCÑSB„à 3)Œ‡?0'ÌöÎ,N7 âÚséà¿p­€™ñaæ|{Œ¿IÄ£Ãzé¶4¼zl‘àÐOîz’mHlRïŽÿƒÔŒÉnêäÐþR3%»ªÅkŤÀž^ðz’.Ô‚y¯‹Ž°ó8ÌGÌ@(ÚÀ@ Íd¨%9 §’UÀ l7WnÒ1#î,°{*ˆ¢&Ücͯ{Šå÷D%T´+!xHP‘JPÈ9'ÎöF,6;"š2Wˆ'ñ^¶>W͇‰òns|U.¥©z©Ðy¡>‘xù@Ù{ï&Ÿ¦üêIÍJmÝQ¼š~›ð©’ÝÕÅ£é¿z‘™=n«É{cJÉ€¬È|ÁêHPEî¼a6¿¹RD"Šs²DZív231béiUUánÌ4ÌVˆ{‘˜ }gdã"¼nïÂÊÓ¸™ëEÓ°Ôd÷t?×<À÷­+i¬Ò(NE‡¹Ð{“Ø~fEÎÉhæ:­·í ¾ž,…f(ܫΠà³s–‰0áÙžªd”¿uz6€*;cj鲨ÔéÈ2y6{ëR²î ¿ÙaüÆùù¡3,¬Êw€Ÿ! TíY-@;“ä{KÌL¥ñ?@½l N¦Õ›´“ÙüA¶5šo˜{Òé¾õåú;}z³Ùùâñ¾Ônê£)'ŸŒÖŸ½óëáʶï^f?ÖË&÷~·_U·z£öžìmMþIÿþ´ìÃoù.üÿÓŸâ­]¨¡H}lh®(¶&’Yâ¡5 7«ú+2+V<,ã|Û‰]vuRîL°’87,:;ã¯S¶‹“+Ã2@iÿûkµQª…7YÔ=h›yZ¾(³‰ weûÛ|¬gÝSw̽R³Ëï @.]Šg ¥Ù;¢ÂÆC·½*ï^«¤NøpqðßDÝ »×]{·]=h/×67ÂÐÇIʨ¼i±9Jn´ü%‘DÆÌ3¦AÉ<øšàךïýõ^<-kÞóC¯‡®zØj"´‹½ìÓH›|Ç{åAqxkåj<@ SH)à϶5j¸æFÁ‘®ªªmuïïÝz¤Èš25õ–©µø÷ïä™_q­°Ã›H¸^ ¸ÞÑmþñuô™•wH0ŒÀ ºÑ(•–à¢&á¦ò© Ä&š¶8]Ìû ØÖÚþýÊì‡$>[ ØÑlôçe=m-ÚfضfW=§ ¨÷¦æú ¡næ»bWÚ¾öåDòœ“3ãnù›uW®úù,ðrÆÜ+ó2ê¯]ìù%Ú^Ö,úÛ"Ì·ÄA…è¾õß>(¼ØLK»ŽÉº¦Š¥ÎHÃaävùFõ^U<¯ÂÉ”{U]ôЖ„ñˆp“c|- ô‘쪀PëÆ‘›3”¦ëOÂYDÙ†tÈ9'Mkœã”u^l,kÞóC¯‡ù*¿aÈöÐmÇß1Ë D¡e~‹J¢zâ¨VRÜÝÐBfz÷§F6â}F|:Úìí"†JˆøtÓÎÓ5•ÂŽ¶Þ¶¯¼]×ïW¹ÅÚÕz°¸k÷yÈ·„ jŠ`2Ô$9¥ä‘ÍÂÆÆìëò+Iesp‘FŽ»ûtP™¯gûDë´`^¬€·vÄÛáa÷ghT·Å€Ô©»(¾"ñN Ï4×´çsK˜§JÛnk£µ±1g±ÌUVÜû÷\ôhö?plr4BêÄÂq@þ§Á¡Ap ÌÛzÕÀBŠÃÔ°J`–Z–a0ODűØ}fïöiä½C‡ŠL_‡Önýö(.¡Ú^Ê,ú!Û"Ì·Ä=‰éFõß6¼¸¼3»ŽÉŠdŠgÎiåá±2å;Ux•âàñ’³ ü¦²ÕwYLÍöuÚ&ÞvˆïŠ,ä"GB­Û~öß+÷LÝó/T¬Å2ûà ”è¦c¦­œÇ…ak·½*ï^«fÎøpqä}t*ï]~ÍÓ©} Û Ôcp‹Ÿtþ¯%Ñ»Ö"«öx¬Dî{#wUyI- /Ã1§[½>•¼«Íi­…Š3­æõv½~—*ÝZ« Ãî½½l¦'v»ÁKÝù½÷‹MêÃb.]äV«„Â%,Š2áœæ3æŽW+ÚNÕæz÷®(d{ð2²öË^'ÎÓ.ζ¡Ò;csºjš_ß}èVJ•‡öE!E¯ÏE>é/‰ÃäÇ…[kwÍk‹ÃFH†¶×5óU~Èp³Óìí»À¥îûé <šo–"ä‹H«„Â%-%p€NyÌS§+œÙšv|×n6iÙ™~ÎZñO;(SØåŸY„r;ªyÈY]¾W¥ ­rÕçëUR±‹ °„̳e4¦'øR¾Xý¡Zý:s°²ÆÿWÍ®¯ÑÒ¶çcEÐûcÅ‘³|IBÍÀÀ÷cÂÜ4Ü«=5*!‚•€bŒÊq Àuï § &É+Xác_ÏÉyX™.!¬{t;ý†µ\»¼ŸÌÛ6[uŸ¼!®Šº¡ÍÅ»¡¡m#Ví†\·Æ@*[xa¼â¦ªBROI¡†x¥i²ìÚõ¡øìFÆâ;19µëB¶åCDûfQí ?¶Æ²èÔ8X¶ÞØöÀhPlV%ˆËUð((+%*ʬ8DgÎC4ÊhbfI">««ÈÒ¤ðÅY >©ªð4RlRnˆ’ÅKXúq¿:G¡ñø+Ü/nwtT>Nš§ÅR_K̹·mWâ£âþ1?Ñ–»¯óVŽÖ¬?í+bð¼N¯~_²ß,W] ªÎ^2$bråžIÉ„”Ç ¯o*ó+“+¡‚gÆvªûRÛMœ¸mk¥LUœô‘Ô®bïMtÍsx—ªVb™uéˆRä<Ïš!™ñ@ršq'J»ÙL8‡Ã†ÌÇѳ¥]íÏ•,6…!å±z˜¢Øý"³ÕU ¯V3ôR¢+ ð³ëf%uØiÕS>ÈŠ0²¸´¶Oøï×jTÁLü¼<9Êó÷·ë ®íÐß Cöô…¢C”îßN¨Ov ‘šùbœ)šñ£‰@Ë+2¥cÆ&•2,‚`“Æv¾- ¿#¦êD¯ÂÁá4]wÎëow‚-B‡Ý;xYLNÀÁr÷}‹Ü-7Çû‡yH¯„MIi(ˆp€Ï9É&9\p²1Û ¡â¦ \챓 ªûz¦mží4_ÖÀær|óÝ1*ûï } Âbä¥a¼½ $¦šõΊs˜‚10eÎáW}÷­1˜PÈœã^ûºðçiçcXZŽ ØrÝâ§~ð´&¼Uûæùa/(:ÖRõ*Ä” ‘ržf˜¤c$sèìô÷Ñ÷¬ûBGÆçaÙ£4ÓßG}üÕa²”y¼­z|¾\àÅÓâ/wíúƒt¡iTu apòpQy¨Ô8¸ãlovíÊ®¹ó½×^>(› €,ªþÛ"õç~[*TÑå Cû„:q¤M”8Ù~ ¸L3mëO +RÁ(u† {™€§w 7b8Œ>³wû)z_Šâ3G7ºå¾‡í‹i D†-)ß¾Ý0žìÜl÷«a1LÕ´q)õ™R±ãJ™Y§‘Äv¾#Dß7ü‰Å~Ý ¢ë³¡ºÛö)²Î6…·u¢;â‹9‘Ò¨]…hz‹ác>꛾eꕜ¦_zb¹3È6º3 t«½Vãèpq–>ŽºUÞ½yVêѰÙüø¶æ#ÿ¸IÀΜ“ÃÄåñ ‡óhOü¾!]äìp¯9*D!„BD!„BD!„BD!æ²r\k‘3’ù§†"mÁ;nÅrû£žŠe!xH9˜Å €{ôô» .+$0‹qªr óÛE÷XyY3<›㦋›cWS¡ß51CÍüìWEËË eÓ º³ñFÏLÃ!ìÃI#â•™­‹ºÔÖ¾ê+‚V°<ˆÍŽE7ƒ `‘ü`õ¦ö2`>£øÁëE„ÈQ€lúã­!F³ê?Œ´XL…b±¤3«—v`’ Š^!ŠjL¡B,Ä&?¦HëHvý÷+jÞžpQ¬¶ƒà诤¢åÞ@ÒÓ€\¢wËH°¼+? Œ=™ù“Áì¨q>“>#Rü´,‡P½k¢áG N²ÛÖ«¡Ub¶F“ˆÐI‰yÔ îØ:® $ÚËÙõÆZ,&RŒgÔ=h°™ 0 ŸQü`õ¢Âd(À6KÈþ0"Ó!^+T- ˜²—%UyˆB„V½‚=`Ÿ1Ü'EÖïõ`4y§XnaüÌCµ0ÐSÁíXq'# |™¬X€þ%zX)!áIάÕZªªÊ¥aŠRÌ?Nô÷IÕyëÔ[<ã­!F³ê?Œ´XL…Ϩþ0zÑa2`>£øÁëE„ÈV+ÚI*ÕË»0õ¤¨ …ä°¢SHuô¡BÉX†sý?OÓDƒªiZ«^ÝÞbË2€ øB,é¹7Ž!¯¹žwËH°¼ øAfyM<>ˇé3â1äÏ–…ƒ°#’ô±¯‹…QºòÝèG5V*diY:ÎZñZ{«Î•ž³ê?Œ´‹ r`>£øÁëE„ÈQ€lúã­!F³šœ½!ëE¦R¼N¥iDÅÓÐ’ª°ô"гuµ´05­™eÚÂN“HS Cæì E{nhp¢­g=½DL,€Ì ÷ŠËØ Õ…9ˆö<õNÆö†(_ü—ÉíæV×Ï~ׇòÊÿ¢Kü¥‰ú^CòO“Ùûÿ´ÉÛFÿa3)Õܹ«59€¸ öS9ñsNÜ’:Ç‚´x&±À‚´¶c´p²‹mrÚæÞû·â››ÛÖuŠ|¥&¦W“ìŒå,§4ä]˧µì9ÆnhœÛòiéœïî*ÕpŠ¡)i(ˆp€OœÅ,îÅsšY Û_Õ Ì #A¶üÔ&Ðc(6Œ["x£dlsÙª‹ö‘—«®‚YxHR”$R2Ó½7³fcr1º{Çæº"’˜Ã@{ÔÖÐv‰]Á­¼M³.5ÐÛF!Ÿ¦wuÐr¬/Á#£†É„}ŠèÝŒ×ßú®x¡ÁÄðö #Þ¡NHÊtÁÈYÛ²5á÷‡ÞLÝ>^8‹ƒŠÅ\BQ1i0ˆðˆOœÁ:ÙÓ–ê6Ô~k¥Ò@燓¨Û~iÜÛ]8!(Ñõ›gŒ#áÿq¼:Zsâpä¡_ È”””Òáœó˜§™&:¹»wõY7 …™€Xo¿š®íßl.4‹Z∟f,sѬI~¿¦­„ª‚²ð«VR—„¥ ƒÏ®ºEcfV lP6ä`ÑOíÎl¶`´æ}—/"éæ‹û©òww~L;>}sKE„³„ÁcÞ¸ïÃà¼V…¡Æp,o6ENÈÂð{5Ñ~ÓÓåÊë …!xHP(H¥(d¤Ç9ŠuÇÙrÄÐÆ·AÞ9ø­!–X#aÐ]n­žÚ&û¿ÓЧ/ÈcóýW¡à:|S“h…®˜Åù;öeº{¿0ûÅ£¦`7÷$* L¨JZJ2áœæ3ÓäWÖ–h/Ÿêµ0á ZÊövÝ#h…Ž˜Åù;¶e»{?0ûÁ£¦`8‹’ p™P”´”eÂ9Ìf9£äWÖ–hÞÿÕO ZÖ£vÝxE;J*m‹œQSßfšÞÎ@hÝ]2¢ùX+[ÂUTš¢È8€e¨HsL_Ù\9®mßÓÅQ°à˜ÇFޫߖÊ?í• µGÎWóëgêŸn ýÞ»¥KCˆVYÂUžd Àe¨f™3 ikFŽ÷®†`påŽk£ªõ*FæÛ°C¬}„_ ¾×êž]ýìáÜ) a¬ ¾ea'gàÙí7̧õ]Äk•‚Å[:TQô¹_ô)ØÞÂk…ˆüÿUŸ¢à:|T/ÂëÃ'„ÿ\F,Èw€ÇúÇ’»»ò|=Ÿ>cštŽÉ“‡ÂÉêûüz®ŠÃpxÑãÖþ)–Ïc8 ‹˜¢hcd\ÙŽ°PÓÓÕË(Hn…ŒÊs`:÷¥¤ì¹¤ianõÌrñZÍ,´±çz½üÈZë,Áέú“…ßÓƒýZÿÊÑyå&n×› É(;%üC(g­ïåö¬¿ø¼^?õxô¯‚z~í±ë8¢w†Ì—¯g4 ¹§¦@{âð‚ )¦Pâ–¡!Í*;Á¥¹4wOƒÖ9€hj÷å²­-^Ö,¢$ŠÛâØße\Kɦ蚺rÒYÒB+' ¢r)H4˜çšcÃl†9Úìñ0GÊúûÊôŠ6¨²¨ƒ¥[ãfüHÅMóú°h./ +ŽÊ¢™b™óšf0ÌŽ€Í×â¬ÌL ¡ìí¾—ù÷ø)¹B͖̜ϲåä[!xtÑ``>LUÝù0—gÏ®ixpm™œ õÎ}GÀ;x« 絉¾ÇifÒå ÏŸÍ/Jiòû{wþ«œap¨j=ê°€#8 Œâx_dlÙŽ°giéêå” È$7‰Fe8†`:÷¦òv\Ò4°·zæ9x®Ée‚V–8é§^['€µ× Xÿ‚ÿ[õ&9 ¿§úµÿ•¢óÊLݯ6A’TvKø†PÏ[ßËíYñx¼êñé_õh{D, æÈ^(Ù“ék¢ý›¦€Jè8¼JÕ‚F BKL’ŒìWFàö³kç×ÅR(pq8=ƒk­üT~5¶˜mïÒˆvY¾§ ¾‡¦Ë ‹Ã n2"¾ d^Å3ç4‡vc  .mVÚýªìfåþ·Ò÷ûV›ïmH1í8â—…€_=ÜxÜÓÒµ¥Ãß­áSTP™€eÉ8ư° ZÕ˜ÂÆ·CW¿‚Ó°}¤lú+жm³V*A°:f¼õÑ]YPË´~̵ô%ñG-‹ûS 8|ùkÈáµ%NÅѦËÔ¬°XÄcƒ*»®?“!g;²ë9K)'\–æbf‡¿õYaýx|ýë^Öm*´˜‰÷l£¼ž ìÀÆ­N–*¡QLciTB—!9†rž~`Ö>Ìž1MgŸê´‰ð@gãÍmø_qøaNùÕU‚®=7?Ôn<~O‡³çÕ*{&S·Oê¨}‡ÀþŸ–½k®+K+´#•Aë»ïp¿«“ª»¼¢¿$BÎtYéÊb‘dI ˆ™Wßú¤‹‡¾—ïä—Âû‹ÃÚpì¬+ý±éÑþ£qäè :¹³çÕ'ä‰ 8y=_ꦰÂ.ôôÕ?=vÚhu3se€Ý+W*‡¥@2˜€Š˜‚yìì;]”·_y\íÁ`]£[æ5X›jk-_PùÜ%þ³é{NCsrX)»ò|=Ÿ>¹¦ã ‡ËöWpÂÂcàêþÊ‘Aá :Ï „;²ð©g¹ÿVËG ‰þgV5Õ1íÕ.RIÜNnÞ¯^ž+žA…~lßÕW¿-–ñ-qÇàx,¿çT‰Ž[·§'úµÿ”»¯Êqv¼ÚdG²$âqrzÞÿÕ+ Å3W­ãîIl¾ä´ýÜ1ÖÊ õÀ^‹/êäê®ï(¯É³Öze)¢.É’+á³}õýTÁè¸{áé{ïÉ2Ú,eFñƒdQlŒ ïvÁ%û@GËÉ]…Y@¡"”¡óM#ìÙ£nV7OxüÖ‘IMÈàåª- 2#x½®'Š6GƒÙ²‹öŽŸ/ ž’ ÂB€vJPÈ3”ó;6f7+[§¼~iDܬ:tמªÉlÛúÆ@û;ÐÌ¥ÄþCΜv;#žß?È®/EÀsxíðÆÀØvV« »\IT^“Êa=AŸÎœÃ³ðÇP<Ïæµofá35º{Ïæ¶Ûvë^Á¯®åPt¢RœûÙøR ùŸÍCû?ÁnoÅ?(Úò#\¨+ÙÎ¢ŽƒÒåaÿúSµ½„,3ÏõYú&ø¬þ{h›ìrÿLÿB“òû~ªz§Å=´Mö9¦ ÿ¡GÈíùþ©èxŸ|öÑ7Øåþ˜+þ… ·çú§¡à:|RÖñ(f;9{ý.Wý >@æcóýSÑ0>)¥ñ¶ãK±BÅíÖtBJ¡éP ¦ ¢æ œìì;•Í×ÞU™‚Á8Ó[æ4Î4 × ØvŸþ¦7ÿóú>NÃý2µù3 ;góR6²_ ‡¡›g»Áä=,(Oî¨M!츦Ò&ßê°8LЊÜùí¢`ËçrÿKÕÿB ·çú§¢`:|QóÛDßc—ú`¯ú|þߟꞇ€éñGÏm}Ž_é‚¿èQòû~ªz§Å=´Mö9¦ ÿ¡GÈíùþ©èxŸàÙ¶õ” v¨_ªÒ0îSçÊ^ÆdMÍ#({Ïæ£Ñ0>*<ñÛÕ‘‰¨Yš¬6íq$&“ŽYL4g–‚ ƒpsD¸ìÜ!šßŠ¥­:8YmºñÕ97@½.É·WJJ«¶%%SB=”åÉ5«vUÇšRÞ_¢|fyÊÈFgQ.—’shÖsöM0ÐDrCFP§1nzt¾$ý±ü‰>JS1QÄzÁlWN𜿵ÔŒîR$U‡I_¿_Oø¢z‘ÉÅTtûõ÷ä‰êFw'ýVD‰^âpÄ4Þª÷Jè(UݘR‘!§üÓxífkRg³»²h±\ÄiС˜Ë˜ D­±™UÑØÌ¡™æ2ç\ãu2ê••ìܦô¹Ò®¡ ûEä<²艡¾±] (̤]+~*0«dj¹RÀ®‚^ø—ž¾úIyµ&GuGKâ9þ¸þHž¤ŒåH{º¯ ‰_£ÿü‘=HÎä⻪A‰Ÿ¿_~Hž¤grq]Õ&~è-¾õÑ=I9Êq_Õd±¹SáŒÌORÔ´òñ‰é!Ÿd¡æ°va”©Ì_£•týaZïn;2Є€B~i÷§3…\îfR±r0¬x[^#æ6lê­Äïp!H¡¢èyPQŸÝúÌM©\7Z£ùÈ¡êêcı/ªímã1j¤ÂQÈ€†‰Å/hA‹ê#¸­Ù†‘ã3F‰¾1g´(_ ¿ÕáqUÜæ õS*»”ª {Òø|lX‹á›¥I!|~ØZ-ÏÅ‘Æïz´®»bn¼Â­¥PÞ]š“ä„„e˜™4lís‹ÔoâªX@;¤ª(~` Û+/2Ý'ø[UL1«Ýº–´-- ¥•y˜o3` *rb0pÏüÁñZ‰H ™lÎw7Ú›ÅØÎ[¬%ÕÇheZ£ µ7Ÿ!‡ÃqÞØœhÕwÍ3„c1ýÚëBÆHd…ftñU«sãÏ,9H})ö‘BÈ…4/=Òé <#ëíCÒ»ؾwJ©TZ„ &ÆA¡Gî$Í3afwš ¬ay¦…-èM²þÕJ|ïÙAßÚÏÞN1Ú¸SD;ÈþKs„” ¤Å³ÚWŠèú¼^›Þ%¢©ÓÚŸd~âoˆÆEqWïYÇ äØ-™áCïÅì3bŠoIQ¤0q4Ma²³‰°©#ÃNZ ß‹ åc|xÃ9²XyÌ;2Ðd—{Zᔄc‹v\çµ¼ívºÎóUÖ\®–q¢¨!7Ÿš|Çjá™ šY¥Ýù.ü$®2t§Ö9Ý0ø7´q³‡aGO‰`ÄC1štöV™8¯6O•_Å`ù‰4U hìUe+;MÐéI>ƒÁrÝ©T4àµ7ó•CÕÐʼnc_UÒÛÆbÌJ"Q ÓÔ8åí"~I¯¸þKva¤x°„hÍh0¡™·ù0xšÅHÍAª¦š†e¨UY% ÇC=ä;*I ã¬ÃRœ"X~Ôá÷÷»Ý‹ Ä¢›Å·¬Æ¤@¡ަº™ÇÚPJì­v¾*ïÃHÁn (®(}•gXÙQ@$%» Oð'u¬nævÄÎ¥­ IKhH·0jYrNIðqM«Æ£ßÑjÙKF뙬Öw6Ú£ÁÜ .Á”U\ˆi­IŒaÌÞniò8x!â+ yøl»¦ˆqÓŸàºÁα–VVgNk5«sãÏ,9HSìâ…‘hи_#ºõ¡üc§.WdÏðeï¦ÄÕÞÁd,š z%³Kõª~{öO”žʸ_¥ä%Óè“_‰ž‹ø½Ð÷]†mQMê©*4€À ÊÐA:♲³‰Ë ærž{‘Üöh]tÆÜ+•m*ºÊ >YˆHD0}f9—ìÕþæ–·:Ð^üXðg+ãÆÍ’ÀȳÎaÙ–ƒ$¼^µÅ§EÎ{[Áî×k¬ï5]aÕÊégj*€ryù§Ìv®¹¥š]ß’îÂJã!×÷J}`PCÓƒ{G8vqø–ñLD3§Oe`“ŠódùUüV˜“EZ‰ÞÅVR³´Ý”gøè<-Ú|ƒm (Åt|˜Àf¢ø:‚STätÎt~‰Ï>.,9SWÜV±Âù}€·¢h~ÕN5ïG³&‰D¯^³UEMÈ9÷&Qö„»#¯¸òÕYØi38'm˜B{§òÌŸ)({S ô¼ä­èstø(¤Bð‹aøs©ô{–µ2¼Q%C*Š Ë0„9§d6f³b°{©Û¨ŒnçwD®Å­+KChJ¾×Y1(0’aˆÂE=ñº+‰H æ{8‚]Ͷ¨ôw³…Ð2]\ʵ&jo71ù( 8‰uwïµ®ùepˆWW9NË )+;§3ÿd]ŸcNF˜{¡ ‡’}”0²!M Ï’Bõî;ø 0oÈ?µÑÌ?I¦Ä×rÌoJx-³0tþ]“å'ò¶ÿW‘ü—HÁÍÓà¢Q+Â0p>—ºžË°ÍŠ)¼UJ£SQ@C2Ì£‘€uæ‘NÉXáX¹…ŽÊíÖôh¢Ð¡afù0XšîFj U2˜ð‰¥*ƒî¦x|lx‹áºéKâtbÞ˜—>Ö¼+Ü1* Û,€³Ì‡=@4îN‡´ALÖ‡WGÉj/ƒ¨%5N]¹NtŠa>.(š¾â¯/“Ø z&‡íQÄã^ô{2a˜”Jñuë1¥P@dQÔ܃ŸrehA+²1úû-U݆‘ƒ3‚pÙ„'º,Éò’‡µ0¿KÈþJÞ‡7O‚ŠD/¶ˆ:ŸG¹kS+ÅT2¨ `̳ÈCšvA3f`{6+±ÑººˆÆîwtJìZÒ´´6„«íu“€s y&Œ$Sßk¢¸”@®g³ˆ%ÜÛjG{8]%ÕÀñ «Ra6¦ósO’‚ˆ‘±W~ûZï–W%us”ì°Ò’³ºs?öEÙñf4äi‡ºÈy'ÙC "мù$/N°Û|^ü|³º /ÛÕt®•Eª’‰‡3H #ŸrLÓ²  ­ay¦…-$l¢'^_üvO•úI8ÇkaH¼þEnpsVÉŠ QhQIš71€ÍEöj Es—hB}“iܛό†â»½fÈ]'°6MÑ Æ0p¾W: °íÊ%xª•CLÊ ÊÐ@}ôÚ9Û3s´Ø*Žii¢´škLÀÊ÷ C9»a‘gÌ„'¨YÁ®å,qiµÎ[]Áî×c ïxurº4ŒŠ¢ŽUyû“æ;[ iŒUÚîÁÈ\úýóP›0ÂE’3ÿ¤tðÁ§“º¤*eÌÞ”ª¢Š[aÐg„ RuB;Ëw p­ eÈ,»¡IÖvj,çDµÊsó }ãncI->2“íu;w<4ë¼Ý.kÛìí&ZÆ(ek &‘Äiœ€$ %ë4¢yrøGó¤*$C4"C›ÅήžÜ’Í4ªçR„ËàL9ÚÍNUJ®]‰¦äØZ4ÚMf•VB;A1#òŠYb(u·óe®å¢ì‡¢¢†á8 s)Œ„½ù 6ÕK\Aµ-¶xiÆÏ Ã1Ü:ź]q.*áÉxu¸9Ȩz󚥕˜Dùiœ³I*ïj¼žzÏŸzBªA çï!ALq©¯ª[)UV^ð$Jl‰6±ƒMBõÇ”é—çDGR©ô{^úJÕDõ¡²­­¨,kÁ(¸ƒ¤›çyb2ÁÜÝ]Š¿í†œï<Ò’Iµ–<”ª]Gð~‚³(B…Šáñs«—kšY¦•\êPÁ?šiγ¾jl¨ÝAU˳ÏÒ6´k­*UY;ÀÐãî-Š™aèyòjªåEáI]$›ˆâ ¦Ç’H쥠¸Ð ¦öc„í®Ê7Ø…”ïç‡Ï~²*º»¼ýñç;Ïz^|¬ ª&½–+uHÇ–+iðœ*ÓD¾ØÈËñŒÇ¢£”ÂC‰†f1C)ÊiRX:'˜ªðÁ,å)¤,Ò!hkÆ…Ktªy{ÅHÝ,‹­1¦JN‹ÜBD!„]ßg§*Ø!€êÆ`7’ðÌŸ_Ù_6oįx·”òžŠª¶–;!·ŠÁ;þ(Ü—xû‘À,_}5ü]ᔃ]gæOI+1rðÙ›Ùç\—nV:guo˽V‘##±‘ø½™ÔõÞLD¦í²àʯ&Pà6a!ziêBç9 ¼QéºäxÓM…<µ·»ÉûeÐ;ÕêÓ‰m_¼/ÐRÕJÒ2(@¢yø[ ò±‚€Ëð]8‡—ÆÇ;}UhžªäY©ò í•]²¡,%¡JÛw}ZÊ`(ä<™ÎŸÙdCHïøèâ’ßß0¯‘ }‘\Jw³XÊÚ܃¯—û— ?L½ çö¯ÍF§Oˆ]8:ãz-•Dz8×4¹ãýæÚZA[&ê\ªôD@ŒFA {Γ ؇¶’«£`ä’fyÄŽE ÏW® q‰¯[.J|.à(ÖV° _uN¹Zg2ÿ [ÝÊêüv t‚œh7ñKho—jç+–t/DZ9ïÁSƃzb¬¨ÀJFeÔg.Z$acs\ùä]Ë¥i¿z™^ÚkÊüÔKßšw‘Kœ ÑT›a-V[9V¨Æ‘ÖN€ç%ª¦Ÿ9Û„0{ÿÙ€þaýòVž‹`†+Š7’ÿždô;/æÍñø®g‹zyOIQ[ ÝÛÂÅ`“DNä»ûÀ¬]|¿‹²<2}ß2xÂIYŠ—„ÌÛs’î-k¡nc[òïPanè¬mŒ„_¸Ì0x»Ç Eu+‘º³Î]£0å0’z8ñe•µ{‹½¶Õspßš3·ãºœÙ»ºtF¬O(J)é;áH¬w@0¬fÄ̆)ºå‚%-$=i–¢žv2Idˆ²fdfšÝû¶Þü—D±¯‡7vÜ¿S§¶W7©Y),î˜Í(㥨w?CX[B•¶òùf¨ €.ZÉœéñý™ëb}ÿ½ _ò½å”õó§Ù."(¡ §oßUt[ƒŽ kµ'£Kâ>Ým‡W¬›©rÛ¹) FC0~C¢x8 §n­dv5£`s×Nåéb#ŒÊK¯»¹D¬Zé&òxÛ½·uÔÝ7×XËÊÃÊÔQMZg)sNÜv/•·Y¿«z­vòî\øXsŒÀY•)e»º#fë/‡^Ñ#(µƒ¼–V¤.者 ÈÓáóÉ8{2\8ìŒèê¯mo‰cÝ\þûü0žþëÏך©6ÂZ¬¶r­Q#¬!ÎKUM>w·`÷þ ³üÃûä¬+<9Á V5o%ÿ<Éèv_Í›ãñ\Ïôòž’¢²¬u™ØÙeñË3Ýë»XÏ€½l¸2Û¹-8‡Fc1 ´œù'•sÛ<%ƒ1õ»¹Õ‡±áƆœ”R8vÃŽñf+†)ß—•ïX¦æR–G)Ì}ùÓ² %“IY—nv²{ZÒfü)J¢Hò ~>W½Þöo‰m_H¬[¾—ºJ Š@.€§¾œ1à±FÉ4é”s[:xÞìÎeŸà¢v“ôZ5mpâñxZú!MÙ˜ÊUK^\´Nü$犻øÒÂXøo-LŠK€{¼É¹ÛU‰T=†´)YnÏ£ÓÜ|òg8 |wfgewü ô1Éj½„•€Š}\5¥¬ýÀ 'OÁ\öÜâ‚›-EæÐö·[aîcê\²îJˆÆQ¤f~\“ÁÀM;pík#Ì:Øø/CfB\ízRa°–gr—$C¯{î†ÇfY^—[…½ýTäz‚Eâ”æ’tcÜòèã Ì ØººµåK<0hÌâj«ZÛ–ÉŽ&„ÝŠÜ­8^ ßÌLTãÖá £ Q€ªò8ˆž¡¨8@eLÇ!è‹üá“7);s¾«D2æaºî¥4À¯4î÷,UE¶Õd³ÕjLn5“ $<–*š|ïm÷þ ³üÃà¬K=1ÁL Ì£y/å ž‡eüÙ¾?¹^=ržÒUVU޳;,¾9f{½7kð­w[w%§à(Ìf –“Ÿ$ò±î{g„°Yõ´Û]xp hiÉE#‡\6ï;08"÷y]ðàV(¹”¥ÛÖsD¼é×’¾ø­Ëãk Æÿ-Ö·á—C±ØäQŠ؆%õn÷mf.ò‘„‹:Š›±›ˆ8´¬Ò¾G˜aÐó=:hw¾í·WcFwpëãÊ“L÷y?_‹Þ¯fœKjêoÐRÕ"C"€dÉ:!…‘41‚‚Éï/9ŠÒP2\ÝæKµY•CØkB•–ìú1 0=ÀÏ&s€§ÇvavWÀ¯Cü–«ÑXIX§ÙÃZZŸl× ¶‡(‡,GýBÏÓÿ4ó»Wæ¯ðøõ]?æ‚oˆÜPS‘sC¦=Þm¤¦ít®UyÄyKšZ9§sÀtT:ßà¡ìˆ kõ÷'å î·­˜CLÑ;×£ŒL¸¬eÁš1àe³YÀ¬f®‡çTÃ$ÁÎtsÈèFbjùWMN÷ÝÑh|mnÿÊ“}©€³Áp»±ˆ¸§;.,^³§&XS©5t‡‹µ®‚šaãÈçú¯ÒÆõãî×Å1ÓEßz‚ò ÓÒæ¸Û²¨öÃZ¬–p­Q#¬¤%¬–*OœíÂ-ƒÞ»0Ì>Š©ì­ 8ÙÊ!:«z dù—šr׈|”ðiu@P…)Þ‰pŒRÉC¸'£-w îˆzj!ˆlŽ2˜Á˜ §0ÍJÍvSa:ÚwBÅõý Ç^baî¹fꢒ—ÆVykÉùv'/:IRì»…Ó.ì¹~d…D¡“ݤÙj¦~ÿœ=iW)fJ‰›óOî&jªZçh*öj´—?}4i±JÍ -±×D²ÒÒ¡*“´ïq<â¦F(ÿ¸]‹+ï,!—ÜH‚!Õ—3T`)|ÓŸ$+6¿«dïiñ™¢L ±ÖìÜðÓ®ðNkëìí&[× u•¬4Œ"9@ %KÝz(‚ZËÎ?!Q!¤4*—VŠ//¾jÊTz2&ÊÍ$<¼´‰e:³— ÑSjO0Õh¡J;Á WÍXvÍ9Zahb‡›·»¶«—åÑÕcñ"Óu « À$í©O ’¯#*óžžÐ ! ¢Ò{´K=FÓúÁ*ãAfãj/æ÷§øS5U*s´‚öj€2ïïÌSFžJÍ n·RËD‚:¡Aî­­˜Å@_kÁ—‹îïfl¼ö?ñ}¯{šXW5¼Y5ΪƒÓ gÍ ¬eŠB”†#½UÆ”b h¾iÓ*=@™j„ÚoHPªtì^âˆB!„"»lN×ãT,oõÒg OOo¶:‚!!OO8sóðßíµæÏ‚¿å«ÍŠ9p´)€Ñ"ŽƒAóüTúVc0Îhs_~yšôRG媸^0KÁMÖêÄõó8ß^¬öhᔥ¨ÏÌœñ¾Jù3ûUÈòZ:Bæ5•µ¦™¸~ºù‡ù)ÕéP}/"³×¢žÆvÍgïx-™ÄÅ nàb¯¿½fµ€uœ"¬*ªBB2žIæ@ÖÇ)‘Ó]ïêïÑtÉ;\Ì•]êxÑÄ+MCÝAþJzƒ‡æÿ"¹µè«‹b¶{ç[°õ¶›Õr0NbCf$´ÐSÆíÐËü8½zmȅه—ӎʇ‡b·›¦ ˜,½1‡¬-% äQ(‚òO¹¢p|zEzNñÍËK¦ k]p¾ØÀ‡i©¬™¬à?xËÜh õ8.ІJœ§¥çKÇšBvV-™Ú£Š˜_ÀL^¿™ÉUDk@ÊUOO¸šbŸð˜³Õ÷ª±Hcp}m~iƒ¦n!ÏþþJuzTKȬõè§Ž›f³á‚ü'½·h.+ñËÕyC‰ÍÂU~Žc§$óÞÖñ,SU×ôô ¥³Œ­k™ußÕ0ÆÖ‹gÏfÜ ÉwP® bõ×â2§´^Htïó&øy˜ÏæM›Â–Os\VWЉ¿­u;Ö¶´.š…t€š•šˆÈ=ÀŽ¢šÍŒ‘—kÒŠ¬lsÎP5[~Õ<Ö«&ÌÎEãÈ¿½ Säñ3¿&sà:wø¯g†ÓÉK,F×U8Õ‹ùt™ò™©íöÆR)R4êÀcNåw³ðß®yðt.5y1GN&… ´dQÔ?ÅO¥n3 æØ‘^a°vRGýª¸ž0;ºP4õó8ß^ž¾ÍJR”Æ~dÂ7ÀÉŸ.{Í\%©–µµµù¦ønÒXÜOÅ/wSÓ Ø¦«µ·"jDÀ%ŒAÈD=ùêšI&fpäv‡•_‘YÆ÷0Ý)g†k?v“ B{ð¨&Îñǯ_qÈÁt°”šd?¦ž œ 6JlófißÕ«ñèº àU´}÷ä gŒœE/ LÄ9P’ž“q8~oò+˜’u!W6Çkì ŒkŽ£VÖZEb©sˆfbh":§‘ÚXú9 >=‡b5¿%Û‡Â9þ±ÙQäTòu?Ìõ*ÀX°Âp”+‘D¡îFROŸitnŒÑä~?jôŽ„Ž_Šéx×\/¶ !ÚfÖLÖp¼eî4úœhÃ% SÒ‰ó¥ãM¡ä¥8iÉ«ÍØ?«—¿$í˜4õùt<Ö"ôÓdýiV¨áŠ£vçõ8á¦ëuO_3õéëìÑ”¥)LgæNhŸ&|™ï5r<–¦BZÖÖ׿¢OëD‡L [ZVÍBº@ÃIò„Ôy&²ã deÁÚô¢©ó”ÍVŵE5…*ɳ³‘xò/ï@BBTùK‰~%ùݠ䳇Ãè¸)eˆZò§¼ým,üÏGo´:¢!™:p×@xnöO=«ÊÊ短±^,1Ë…{8,ÄÈ£ Ð’ŸLÌní°ÿ"¼ÍF”¤Ž Up»`Çû†›Ýë†ëæpººX'ìÐ5N}á)sNy$Ó2\þÍò<ÖµŽeoIˆc7 ý”óòS b`³y™»Ù>?mMÂð‚¡÷®÷V'®™Æúôà~ÍL¥Þ:§SN+=èÍßðú‘™8­äQ½»þR3'½RêÌRÏOO©”‰vZ¢HÅVI÷Ô\©™ÄÑM-íK—T³¾`”M9/ HE°ïk;*Ú‰œùN_‡ßü #ß_¿ÕH¥_ïìVÌ[f• B­Oè–Á;™(ÍÕ•gi!„Ý£dÓÌÂöî +a‰ö]|œ?Öü&&q$m7ÁA÷›71ø}Iëf\¼VõFôfïø}HÌœVõFôfï×ÓêFdâµx¯|³”˜‡)ëø3Ò‡?KjÐn|-[2«-mC$‚ë@ljšÍ˜M*¡!g<µä‹DêÄöX¨…*ÒT O_6‰f¾·ÙA$j’¼^,0Ë¡þÚËvízß`Z/o®ŽY‰daÐc*7½Ð·Úfþ+g5ѰI&Å6ï6nù}ßRt“©¥N+yoFnÿ‡Ô‘™8­ê±Xõe)g?‡Ô‘š“ˆÒµZE«WïÏÖΫ˜”ÒÞÒ±¥``é¦_Ô”*JòB…îïj;*Úɘ €œ¶O Ï•B^°$=ó×ð%ó£\v:-­èÍßðú’mH‘½Q½»þR3)â·ª7£7ÃêFdâ·šò^øg XDW!Ôw'e¶JÈè³×ûÎ ‡®”áðk1biMe'ȇÐC_y51½‘¹ÏéKˆ¨N#Xi,×§v›‚Ýðoô« ;褥¿q+¾’ûÈUOgƒµçó%¨gàsëç²ÇåŒg£ü¡ŸÔú:åöª÷×n妪Ìa—ž8»™¨5â(e­`ãhY!âЮ‚)úR¡™£iiõø­nb!ÅÊÙOðÛ—]=[*ÍŸ±<:,ÆÏ= ævvmæÊßÄ5V½V"ìKÂ'™i²”äš¶6À ƒkŽnÜí!Î9KrPÐÕï­kj!hÐÔ2Èô+±ž ÜmLóÄ+ÞK×PÅÌFA îúo2sNú9ChŽû^Ïgb±Šé¸€íê†ív£r}fÊÖœüG/KҤꎎ9>³åëGÉéRuGGŸY‡ò‡õ£ˆäô©:§èMÁ/Ä0¾˜ð˜Šnž·‹ƒ¦b=QG¬¯"ç¤æšÅ 6×ý½</ŒmIºÝº ×Þv­ûöOfÎvÔÈ9q±cVX|I•îÚ8çUt-­^yˆS.ô×#‡¨w>_ö¸¾Yÿòså„s¯k­´tÔj™"ë4h†LÎÇ&UØb@ÕS*»&¦ S),~ÚìÁöÌx»0>ò÷~aoY >- Üìz»1 «h¬W|°*’³˜3)€u’ØcšPÓûÑcÚý£ˆÃ`ß,N§ ä:€y'k;²øa­í ´=ñl¯|X¬f­a(º)€¢žc1¥¤³M`fbË7v¸ûK¶± Ø:<ºènκVž~ z³˜%¿¡Øå¼–?•Áyw:4>R—¹–œÒЀãó»ïéö,±ý±Œ‹Ò²>²e­>[k}ûrZKl¾e³˜øFmâÊ\6ëyV±]s[Bî¬O0k:†\[Ô±-5,4î2ðW È2–¼Ó63;cÖ®ü—\Ý·ˆÃɉsŽf³% ´:×jš"H2e³¸]äÎì¡©¸ZÁ¥mòÁ¼¡`r¨@$!—¾™HrÄ×{×f´1bç…Îõ[–´Á'’{‚àa[̽¦…­õ~,ì¸å¬øk“ˆ #Ôé•9f)¼möt²î[mÍqc{[ùÖË «9C¯6ÚVšè·,æÊ]3ˆØŸpVôz»°·LÄÊü¤çÖôé!Ϻ@–…‡×ÎÛ#—[ïóXö—o¼pd‚l¬vk9AÛNc®‰•ÍÁ*·Ûè~Žºœ÷T×(ÆÙ—Z„Êè0€è3§”Ó 2—¼œÁ¾ÿK¶~ÓÆùo~mtvZ×jÖÓÜ3f°KÖ0…Û·é÷ŠúˆZ7ùZÀÆ™‚©å-$Ñ{]~©åîü×&+¶qÁ4y­ñåõ¨k˜ÝUPÓNg܇mšÁ íyÔçlr&&÷ãÄ.6 •"buà~²¼”©#¢K[üpÒ+¨é¢‡öÎ1¸L×ÝU:€Íf«ZVÚï¸LÖ‹f®xf†Á­É…{4ⱞ0sUIËGdÂPá0iï¦31ÑÆËߟ»’ììÞÚ“<®cíªÐsù^ýtè¢ðû¢d|©iy8w‹)gxËŠX®°€qÌ3ù“ž9}a˜Zôñ3bÂÈäÊtÖéÈõòVceŸYÑíɆf„îT‚ÌA·‚ñÄM@,.¦%#çϘ'¡êºvÄ¿ìÑ|Ë;W´e»émƫկ­Ga®vä£ ›¹ü-1ÃQ;’AÇ~Ì úˆœ¼D7ðG\´çõÜ`É<~Í©í™=ؼ3ýƇZæ>+vÍ,þy9̹D'Ò–¡öC6ðXÏ€ÌÀ^!0ÚÀ'pÓçK@Ò[˜ =.¨uñXv—kb`xcäátr‡fÒö­2ý†Ó3$ ?Þí¯Fgfá‡ÙÅ^!`®Z¿ QD¥Ê`sÔp—š}ɘþ#‰+~Úü×l£‰ÂDØœî$¦ëašŽ§j>ÞKqËck›÷ã(;[ÕÝq6 àËÜûuÒ.|ûµIlR¼:ùRÇþ£d\9½GÞ½+º¬¨_G\¼ØÃùCúÓœÈë^ÉÅI{« †ìée=^o8$šÝwU¬Þ-ÄÞ¬†@2%! Èrä°=†2ç7Qß¾«çñؾÐn-‘Å>V¾ôÊÓT>ûZN¨R pÂN×Ûê߀õ·Jq«”á®HæQª¨9J”ɯ°=Ã5ùr[MÆO;á†^J³@ÞaÒ´¯z’ÃA 3>"‡Zøw¤mnì&˜ÅŒõÞLlë |û>tèdYKÚFl¾ ÍŨqd2‰8aù¯@ê˧Oݯ%m­µ'#©ã J×k«x-[2•Y„‹oJy„ÌÏ+¹i!¬©š×6·ÓàUÝÛ¶àeš9sÕ;(‘c-rùÝ ”RÈ ¸aõhçcÉÛˆe\ kWˆXZ¤¨â”f€sósN|)Ï(cµß÷kÕí~ÑÄað–'Q­d_-tXÚT7 2½ˆëg‚w[0Ž!^òXºò (—10€HG!÷I\Cèåh¢öf.wÇÅtÜF½PÕèã–Aâ`?ÆÖ˜ñ½/J”nQÑÇ'Öaü¡ýhâ9=*N¨èã“ë0þPþ´qž•'TtqÉõ˜(Z8ŽOJ“ª:8äúÌ?”?­G'¥IÕr}fÊÖŽ#“Ò¤êž`›<4Y²ÃðûŸñi®åF"šé œÙ˜À"”G1Î\òL18æab3Li£s¿Ã^ak“ÌðÆjO/vúû–1ö zE-mÐô*'jÚ.]Ån\ºæD7Xq¨Ó0 ³ÒräŒ9‘†ÌüîëUåݲKŒsžK‰££ŽO¬ÃùCúÓ~#–^•'TtqÉõ˜(Z8ŽOJ“ª:8äúÌ?”?­G'¥IÕr}fÊÖŽ#“Ҥꎎ9>³åëGÉéRuGGŸY‡ò‡õ£ˆäô©:££ŽO¬ÃùCúÑÄrzTQÑÇ'Öaü¡ýhâ9=*N¨èã“ë0þPþ´qž•'TtqÉõ˜(Z8ŽOJ“ª:8äúÌ?”?­G'¥IÕr}fÊÖŽ#“Ҥꎎ9>³åëGÉéRuGGŸY‡ò‡õ£ˆäô©:££ŽO¬ÃùCúÑÄrzTQÑÇ'Öaü¡ýhâ9=*N©K¹²“?ªÖŽ#“Ò¤ÞÓƒ†vVb3³…Eì„ÄuÏŸ¥*I$ZÉÎ.²U½k@²Õÿ½|h©óøÿ’Åÿ‡þ¥wâþgù|UMÈß^yÜ¡ „BD!# ý?Oy7¥kCΈ* ²øz.‹á>—„J 8v\zÖM݆Z*ÍÆ¬Föò¢Ž`ZiÐg4𦗋ÄɆÃÉÃáå½¼Âö=;·½v^ŒLŠ4¬Í›¼v÷|ú' žXN$ ¸:$òxÏ¥N QÚ©»:µŒyæQÈDýX‡n“vA9û)’âäô™Ý£ØuVà‡h5ä»Õ…®5͆1 mÊãí ¿v½ýÊ‘çª})꼞ô!„BD!©a>5fQÓ™çô:lÝûÎ ò›®…§2¯/ëÀ‚TΡÉ<.ÔõqÊÍ^3eoÒ°/S ¡¯}/O¬R1Ú4Õžšé§;òFÐï±k´ÈÄ"ØwÄm˜?ÑKÍ×J¥uy>פ§º™å9 OdB" sF3^•šÉ­ÍŠê7QŽ™ŸÄe8×;ª¯ˆðIn¶†Ý™@¢ó|o‹xÐ0àJ+ZK¬ŠBfBHƒË<æ‘Ùèx‰²¶˜ìµágžª1¸¿H‚;>°ÍñUgÃÍ=ßzóΦЅB!„"RsEÖè­x~ÇE÷iðó•×âa¨‹˜‹Å\*.ñq=d¤àe|B”Âa’x3vÏ $²ÇO޳6ö³CÖ |Šô£À敌k­®º=h^ÞK–é¹]¶~¿£Ú¬Ù*i¸q­ZA9ª9Žlç*¥ >BÃMëã}wóv¢ëm¡ ­…Ò”¦g«‡9[Èh|ÕD¸²(jÄ-Ø×“M7ËîÊJé!H$(H¥(d“×ÃaãÃF!ˆSG]WÓ:g™¹÷&”Ýf„"ˆB!„"C ŠE BÍ/vu¿¤’™éj"L9‚jÈ‹+HãϪ—@ޏr‹*Åaëêp+ UD1u˜Ëµ=Xj'‡ÚäÇàŒÃºõu­t6±v»!öQòç$M¼.:ìÂêìâm'Å9ËP’Mc™{Ò™»=²â#Ÿ=d½+{qN/×móú©ý»ÃŸø>C±äø4óêšñ[íW_Óm—ÈíþOø?B¼}«½õòÙ4<Ýn—”0äq³?¦µ†þ“áM×^ ˆS)wŒÓ7S˜Ö^Ö»`ìöLj’l÷ž´­¨R×;ñªo‡šwû›Å~¿¾ ò¦š¼óó%¸¦ÐG³~kÍÆvWÌ3×/-²øë~ 2ûis=𔏡½ÖbÕyã‡[{Kµ)JC¦³ó'<Žkë#kÅuààÄFHšL÷¶€WØž†afáyÄx%ƒÙ& O?|¦ô}Ô³¡Êh•éš7(è„9ûµÿ6¬ùI^êœ6õ^]rþ꿘å#†ÞªxMú^I:$âýÖ0?ÊG ½S„ߥä¤q‹½í´Æ'eÞŽãÑzÁx*§Õ‚°ãÔ3 ´å$é’žã)Û¢òðÝœøpÃC.£c—©èOz‚Æ/'i™÷$5¹…]B´1§[{9SÚìÊC÷|ÉÍ#˜tciF,Dbæ—?M÷ì½áHY¥î̱x¯Ã©W!SV³ &¨w!‘O*^œLÍ­Ðû{¶VDJ¾zMô~ç|‹(K °n.e誩O—¾2JŸû¿ãa;¸q¯|,ܾ‘÷é^}Ëy¢sôf‡Þ#sb¿àÇ-ýôÿæÓ?<üÉ,”7/u«b{²ñÿ‰íåå¶_~]é‘Îîq0Â/·/HëÞW„8]]œM9Lg9Ë—¾™·(c™ÕvOkçž²f彊ëËϹIŸe½ö±ðåñ8òºn’ÃÑ ˜(8Q™K˜f›ºF¸æ`§~ ÍÃöcY³Eôrï­î ï­*å¼í0»û42_ãðà ï@.îÍ^9Ωj ÊI®Œ×n+_‰Šrïg7-ìW]?¥½Å‘³SÕSÍ"I)¼SIºˆ´ÏD¤Ï2¼¼w*ö~Ñ0íÇ]_™µ`Cη ¥C®9]PÍVM'&£T°jT34ÆÌF\“¨Ñ–OX »”â{9æN.^¾™®´+»ßºE¢ëksÄ ‘†-©ï†¼iÝæ%Fä3å§4§Úoš¨ì¨øŒN¦²ô«¼Þóè¾!bT÷ˆ^NȃØõÃP·&Ã]‘ÈBG¨&¥=E68Š.,5›ð\¿þŸ‰ÑÅÏÌzQfù?ªb6%ψyìõcZÝX‘:Ì(“zQÈ¡IiLüÈ8‹-.Ö¯ÆÐÿ§` –(_”>¹mZõ×Ê»ÔRtŒ,ýgŠ]Ë÷º¦A0Šºnª¨¢¬30ˆä&žœ¹&1âƒu~kÐíÏÌ+¢ö«—C~j"û~ l ãq‹лquäï/V’ÊZj)‹¥ÌÖ²¶¿5œN"YîóÖ(Uø­ˆVi|³¬\+ðêI SV³å9êÉXâ.i=)z137¬My÷+'ÖúiÒ ‡<&ùu7}¿º9›=S³ŠÑ?ëÿT¼vö+}`¸ž5±öµƒ[ߺž /ÊNÛܯ q¹¼$Ö¦ag9NA Hl€8BèwÑýŒÙ0ïÒzï«v_¢tÒút£ÖÓ|<ê³VGB–g›.ðk,ëj¼hW\Í0á.A zzŠU†XY믇طÄ`±/’âÄå–Pt÷“{ëÝÉoBV†(ÉsÐñfòZÚ%ij`V"‚ IÅîiýèg)g9¥£•Í~l×û¥Ž/°°³À k²×²u5­.Љ>ZÔÑ3{䓲ïéÅNò‚€—­‘Ž9„Ùzh™¹Ü7–׫ø©›.F?ø­ºv^ý}]Žškï Ä¥jö‚©T^.Zwx‚r€I ½ì…f9ÜlNxEøâ{>0«wY‡]ÝO¡FFÈC˜kÍ:²äÌ?ÕKû=¯ÄE9}d½*îÅoÜž]¯enˆEØärÆød¾«·eåýG¨20pÊbi ÍŒ1§OÕqKØXYç|Ӝ٪·Bºë×Él/zBoˆ…¡ä·ÊøÃVÉJÂÝŠ¢È8ÂB3 ò”’sËÅæü_!–G#Ÿ)eë—©½‰ZNåГ®-v<ÍX6 Zr»èZzÖ¬ ǬÁ=™pò˜¥[#Y sv§½m/d:hÓ[Zå­ UëÏíè¼nœ.wÛ¾&„ÜrTÇyzLIüb²‰ ™çL¦aÐjçÈP XD±g¿®Š&ìÉçÃ:)fÎTrU¯^z*â/op¶@9aÍÐ ê½ñÓ®½4ö´”‡î§$®k´´¶ÁÅ<`™äÏþ |Ì+ 4¾-_ˆÃªW)š€f”óÌ? mmz1ǘYN݇HÏüܳå#†:«pÛÕb²pTEõÿ‹Ïò‘ÃS„ߥä°è“‹÷YüÀÿ)6õSÂoÒòJHAÒµ`*g‰ïd˜ýñ4»þâO ¼Šp›µ¨üRæis7™£Š^êaÌy÷¥_a¥“Û‘M,=úé†áø•ôÊكم—£f=äjáCÕû e<¤9§ÂËŠ–8ªâ7œiʈïß§Áva%daÎøšeü{¶ëà›Æ`e‘‘ãÙ& OéÐÝÒOuІèJæá´ottBççÝ»Ïò’œ1ÕO ½WÂN.Q_óü¤pÛÕ8Mú^I:$â—ì«ùýi<1Õ lÕ伞P`«v±ÜñÇ*$³¹£Q—1Ÿ$}RB…XQ1™MH„»“…© ) ´¾Ö/Ä\*W)š€f”ûÃð¦±Å›[ZÆÌâÊvè|8:FæåŸ)1Õ[†Þ«“€²¢/¯ü^”Žêœ&ý/%‡Dœ_ºÏæùHá·ªž~—’RB•«S_m/ûLïgãP†UvB€òGöJ¬rI×…ÀC…ˆEi£¾ûùÚìx3;‰!²{©m…Y$¿[¿*ÕòÓ§#:,¸ Gë#ý®ü³WËFFtSÁb<Yíwåš¾Z23¢pX±YcÖL%á`¤{ïZ‡þÚ l( b¯ínÃYØ«^Ðs~-RªjeºÊbB‡Ï1Ρ÷“7ÃZ…I`[Ur˜£#'6«,P¥K,ùª#\è{BÎÆÛ—[Þç¦ìƒ{t&X¯ˆd%‘¦9OAšP`£žvJG¬Û£ÒÆ¿¶ŠGåtm:´èH>T"­º#º\¥X5ƒO¾žRMø@ µ<6–ÖA ºoæK}hᎪr0ó^]…´ßòûUg­1ÕHQÑh[÷AüÑg­!ô“‡TtZýÐ{øEž´p‡T,Œ Ö›Þ V­Ò±¹ØÝŒTYq]Ó)ˆ‚o:[‚j¡ˆU…9D£!ÈSŠD"öwªͤVmY¢Í+7u9n\•Q.ÕBÎz曽ܖîve­•)EEmÃŽˆ"²Èr/‹á.—t“†eÞ ˜÷vh«7±ÛÊŠ9i¢YÍ'e° kA"í3Û4äg…a¨òaÝ.Èrå½:ÜäTn¼ãRÚÍQó)iœ³”Ðzª½¢ƒ‡5]$,׫ÌàÔâ3:òLUʃϳ3ŽAèM=¡Jáþ­ß‚¶f%wu-R3ìæ >”¬~¨Ì«ò…¼afˆ¥T+†Üo´x…±ŠõæéÝx‹Ã…ÍóAˆ³„ i”8€eÊI#e£Z IUÚBÍX[SCnHNÞßðô>Ãv2áîYïNz*gVsqDÃ3ØóI;­ehkÈ îiZÌÒE¤9w¤µÔ³¦(‰‘A¢²PE“áÏ)Ûp6¡î·¤-Ë€@¬Ê‰v¨’Îzæ—s¹+¹ù–´çšf¨¯F{.…lˆb;2éÍ÷¼/—練j.…È“˜ºvsœÒÚÐ2´‘ÕW–¢ü‚8‡À"°C{.iÄÕM>PŠdm5«ÌV$´ì)CÀtû ª½ž‡·³¯$̨@HiÊ™šz{É}ÛJùýZMð +fb;Xkr¤Ó•9ˆhÁ”*Æì¢–ñ¦cLØä•P¬-•¡·$[oŽv"bÆ;Å )½9+¥aÈ‚"—AórHZÂp¾õ-™¬ºÔb–H³.ˆ<ÞU‚—Ø>Zð·d£Ôž=E!‰˜å\ÃD –†»Ô•9æ•X¯wsBÆV¢­V9€éßÉ,ÓJA£iŠ"dPh€ ¬”døsÊE‡6Ü ¨{­À© rà+2¢]ª'd³ž¹¥ÜîJî~e­:ˆ#TÃ]?OÓM5MŽ«¡ìA}‰Gö¤ë„| nÜu÷t­e*:ÉS”çDµç?2XQ] ,qö|ÕyÅV\ò…Z˜¡Û!ÜO5‚@Pòé Bû‰¢#vp4Ê.zU0Ñ Ò¡s@ )WÃî‚BÉ{= n!g^I™P€Ó•34ô÷’û¶•óú´›à@VÌÄv°$ÖåI§*sÑ!ƒ(UÙE-ãLÆ™‡1É*¡X{;Ãn8â)Y70ݼÞòÝáÇvÜ”ëVÀë” ™‚C<’F«HÚKNé¦Ã Ï¤ê„7žïÇ^ͪæòŠgfa9Ñ-C_4‘JÛvR´m-ë =ŸÊšá(G¢ìdg*³±ï5¬Eek3 €”)Ð)Ÿ4‚¢™Í+Aj­ByKÞG4–ºŠ€êÕ1ÄLŠ ª‰AO†¡ÊEh{-Ûîª÷Yµ m\B³ª%Ò²èŸ.÷rV{³-ieæLÕU…hPÛ‘Ù`Öq±±]<žûϾðãtÐR+á–’ˆ‡¹æ’vZ9 5¥-£C.GeƒÙÄ@ÆÇCÉí¼ñËïN7÷M"¾)i(ˆp€k1ÍÐ ®Í0>¹‡4…šôy­®S3´¡W*ô³0O.|’þÓi[?«I¾»fb;]®R5J] …"=¨c¨-ÑLE ê  |ÁŸÓ~“HSïW…±3Ùz‹†bvÍwKÊ%«…ûí¥nïôƒÂq¥ee È´Ïœ’Ü–ÏÉ8G,•Y¼ÒJ‚öw5,diªõ åßÝùÒÍu-5ªcˆ™"!U‚,Ÿ C”ŠÐö[·ÝCÝfÔµp Ψ—JË N~t»ÝÉYî̵¥—™3UVÔ:è‚`Û-‡bØÂé‡IqXflzæM݇Z*ÏÄ®«Ûʈ9i¢YÍ,(j¶ZÐãªh¶xiÈÏ Ã1Ô:ź]‘&*åËzu¸9ȨÝyÍRÊÌ"|À)œ³”ÄG5Y ­WC06C)y¥ø9%VkÕäb¶¹LÎÐJ…\¨?ÒÌÁ<¹òKûM¥lþ­&ø홈ítV¸eHÕ)v€~ˆô¡Ž ·DDM1ƒª‚ƒÌ 2ë¬ÿOÓó@R5:®„¶µÖ%ZƒÒ Þ Ãu&ž‘µ«®µDYÙâ•ä²0ùõ[E©Èªkpƒ:joH@[Àn|jæîºÔ‘gfc)W-y{É*=¹\£.ö“²´•qMtîüé-vSj­uQÈÍJ¥oZÕ‚š\3ÒÖ”QD‡1 «¬û¨ƒ䤕ÒNéœÃðÍ:iu4RxP¬· X^êYÞOÞÊj«j¹2˼„C„£1Ì=ù¡Hêdáƒ!'ËÝK±Ùßµ.˜^éXZ©(ˆ„Ì 0îB¶V•œùÏÎ…J¤dPŠ°Ú«Æ ’,[Äu»öfusJH=U”ƒÕ%sŽ£Ýœ½ ȸFË£vUê £­SÂeÀƒßIÖKáNÈýWlBš –["S"—Œ*á`(²D±^éz˱`ºêy—ŒƒI¦Q(åôÒhVÊqþëns=–»^J.•Jñ]e53Ì2ÐA ¥¦… žÐƒµ±­ ”žŠ‹ß#”CàEZƒ©qÊp×T­m”ȯi.KUSA¾–dY4Þv·„hâº$Æ£j)½Úëæ“ÑÉ JJà†Ø éR󈟀æejž fWbi)ò €–‘ë­^aBд¢·ë¸lfj÷K]XFê)¿¦@p¢bbÈÂ!ž²šŠLá¦Z!B/V*ÍY©B‚hZäNR­ž6lT¤´(€Tå—Ú\R·+©GÀd™÷,ÔéÖ$bq‘B’HO:Ï1Ï1–\µN«ÊÚ]9½ZXg®i@VD%0€3N]è*[dÒvŽa·ä)¶Cñ äÉMû=éMD—ˆ‚bŒÊ`‡žz ”¥Í ×4FðãêŠZ¡è‰‹óe¢ùEáMD—ˆ‚%”ŇšJ#}ÓJB/f•¬­%Z¬sS ÒÍ4T´ÑQ¸ÙJ¥OJ”’‚›ÜÌr‘J¥%Õeu”Ê™,–ÓœÔ=UyOàhÚ)YtMJÑ›%¬­»Wö®XÿøëãeI;³ý†ø¤µjÍåûuñ² ìþÃ|UF±X¯0]\Zª?U£nÅeúYü"Ó¥*·t䤭U·eÕË`ÿülÉ#b¶g°ï-·7eÏXCy×àÆçÆîe½7‚Ò,ìUÔÝNZž½xRHV‘´Ü£—â¢oûi⟵>(¥!ÛªÏí•RY¤,Nɱⴠød˳_À•sµXÒs'e,´fË$+.‡k@î}—,·¦0J…nöo¢«YpÔµ…^Lº¦]t§Î–Ò—H- m‹ÝQ±»s‘åµ¶C°þáv, »±g_s" ‡â5CQ³Ò©%W1u욋Ư?©"è,Þ´aƒMÔ¬;€~CM…tåî‡4•ª¶¶mK Ž^7ñEßwôîIjÖlx©e—¿`—Æ8lšÏº-iJn†ú,µ«:±>\I)P <¦µpæ“îVz£^_ŠçBU`PÉvM WÃ&]šþ«ªÆ“™;)e£6Y!Y[{{háo¶þ*µ$- ö‡Š¨ùh±Hæ„X®0•yýIAfõ£ n¥aÜðŠl(§/t9¤­QÈCQû¿§¿¦hNválÑ#ñ¦Áa¨‰{moçÒ6‹²øþ  ¤eá¦JîÊäè«ÝLRÇe¼Ž9/¯à¨ÔªÁ) !Ù6<_ ™vkü W;ZX։к%ŠÑ»%B²¶mkÚ»cÿã¯$ì¶°Ô¶»í^±ÿñׯˆƒ²?Øoïš© ÚÍ!b¼×˜ ¬L‘t³zÒ†Í7r°îŸÂ) 7¢†ûA9¹ŠJÕElÚ×µrDzýºøÙÇe«ý†ª”ý±J¬’¦€‡dØðZ|2eÙ¯ð€%\íicZ'Bè–+Fì• ÊÙµ¯jíÿ޾4D“²ÙþÃRÚïµzÇÿÇ_"Èÿa¿¾j¤7k4…Šó^`*±0rEÒÍëJ4ÝÊú¤4ÞŠíäæ)+T¦òrïó‡éù¾ê‘ÞºcjX®Ë]¶òþcˆlƒ<•‹8.yt¥EüÙÕ z¢„‹"ˆ\å=E,JÝÏhä¹î9ˆßqlV×ÄM¸×›UÍD%t¤/ )JiÞ•X¹ÖšBHµTØb’ý(˜'!ó%uXŽkª¬ñ¥KL,Îe'˜HßôĬl½ê)÷T¥×ßAJä¥ñUPô$¢'‹<Ú*Ó6Fª“ÔqfP|Ï4…c ¥ôê…T!UµJž†‹=çXlЧV”ú« =‡.væ=ß rÉÕtVËÍ*F ¸õ…œË/틲/d.¶{!ZœÅ.V蜀G»4„ È[œN¸©±‚%‡:BôU@/yãÏ2—« RIJ\µ¦b…sWªÚÚ†ö[Bx(y;‡Ý·õâ;$Ûʃ·:iá”ÒA¥´råÜ]$´èÒŒl¹…ÔêvtG£w›¥Ï|¹³ybV”˺ã.®èñ ª®A) ›RçµÍ¡¥*aÈB „rH:n¹óŽI•öÞC)Ì~›»O2fã{*y­W;nxÂeïîÕ oh/’’©\CΓN^dÔvVê¦6#ôÔ]q~ìÇà¯|RúîòµGWÛ¤Ò•sÐt’H4¶cò»2,N3è ¨ºã Ù¼0W¾)}wyZ£«íÒiJ¹è:IÒFìŽÌ¡ã Õ!f][­f¦ÅJ "cfNiW²©$ì£--'\Ñz^àîÊI•*)à­s0UÃN¡ï¦p+Brš]\Ù[På¦Áe°ì!YoHÅËŠf­øµŸË-†áVOà†b2—)¥¬-„ƒ-¨¨?`‡Ñ˜:ôTÞbC{.iÄÕM>PIL¦µg¢AU{Ô På‹UuˆÈ ­ÖEý3õàC”*ÌCQîÑ3qµC|Ö£‘³ ¼ã2ºú]R£tÉIT®"ÀáÉ6öV<ÔÆÃ£?ö¤ë‹wnðÀÞø­õÝuª:¹×I¥*ç é/:H4µcòœÉ¦‰”PÉí¸'›(å}ÑOED„à%”‡<¤ €P:¬c§ƒå56C°þáv,—n,í2!@Ýa³5CQ³Ò©$x%GšÛ³Î£q,óJ—¢Ì’vQ–¦“®h¼/w›)&D*)à­s0UÃN¡ï¦p+Brš]\ÙKl:3詺âíÛ¼0W¾+}w]jŽ®uÒiJ¹è:KÎ’ -ì¥D¦’HT&õX,9J„d‚kuRþ‰™úð!Ê •f!¨÷h™¸Ú¡¾kQÈÙ†^q™GÝ}.©Qº 䤪W`pŒä›{+kÑ ê[F{êÊàøGv\ô{ãWÕb1 Ad©§‚™KQœç–‰$«¹ÖÐ@ÒHT$¬ÖÖ¥DÄæ‡˜sÓÌ\Š„—l£ M&ZÑx<À'èLiQHíê×3–`!/:h×)Mœ€jôºÐ:Õ‰ZD*ËGÐgKÝŽÚ÷BàvLáÄ븕¥µšŽÐ4e¨‚M­CÛTíS=¨Æ]%'k©Û¹á·mæësß_`¯¦]×ë+9j㜧 È"íCžN€PPõÇ)JcåèAÓu‘ze~<`J³ý÷v‰›¨ì¨mj9›p«‚¼Ã¿»!õ¤ªÜ¤ªVà4rMo2¸qدP”¤þŸ¦ˆWÓš¶-:Óà˜ŠËØ!e—n€v^n¦­ø¹n ­*ÅÁIŠ•Ò!Æ#)å $Þ”µt€Œ *晦:÷÷¤,‰k5µ©Q19¤!æôó$¢¡%Û(ÃSI–´^0 úTR;zµÌÀÂ%˜KΚ5À Sd' ƒ½.´µb@Ö€ãQ ²ÃÑôÒ÷c¶½Ð£x“xq:î%E©mf£´#Mj “kPöÕ;TÏj1—IE‰ÚêvîxmÛyºÜ÷ר+À)—uÆ:ÊÎZ¸ç)È2H»Pç“ =qÊR˜Â9ztÝd^™_R¬ÿ}Ý¢fê;*ZŽfÜ*à¯0ïîÈ}iê w)*•¤8 œ“[Ì®v+×RÓß–žëý9••Û|eÓûPzFìÝØë¯¿¼»¡Qöé,çDô eçB—QH1Õ ¥À-vƵ*&&6œ»ó2UÄl«eÛ(Ãbá^¼O*CPÓ$Ïš¢¹ìNљٙJêz YÒyå3˜r)= Ñù.¦?6Šäv>ÕÔξ±Ï܈sM–ú…¾QÓ,¤„šy_}"‹Zß\=ýMuSI ]dÓ=T+iç)@Dܼ…RS;î$t»ƒÆ¤!¨PaæÀ=à‹¤-½Jç›fÆ%móLÄçôÓOR‡0å‘Ö¹$€ü)•,TúÆ£‘†šÅ ¾,³Ý},€ã=™“V<Žkxåþ’4]ä‰]/ †™ˆÏ* ËÞó'RêõNêÌS„Š3Ë—è!3 S.•¸ž¸–ÞïEž]»u7²È¼ K"C/¥˜óB¾aÍF¢³kÝìµäòh¾k]+Å·e-RÈ2Ð ¥Ãšdz½ìJ„ZWќÄߘ½$Zа©»l´fuÌÇtºÆ 0q0”¨0vŠtÂG¬ nŠ•NuÊŸ (…¢~±Ak ÄÄÈ'Â` Äé»’ÍvSºÒ7ä+¥a(åÊöa"µRah8è#ÎIÖÓau³]B•+\¨ù«4Ãôïôj’¬h);…ï ²¹”³¼ ÝàÔPÚ·ŠÕw“ááH=é¡\8&wûÕ½ðö\òy¯¾j[+Å”³A–€Us¹¦¶ÆÖVbT½m%蓮5 »´ËIvº´1,¿hÀ$`–eï(‡1Läu,^C7\èñjXØÖeë{F”ôä¼À ÌMó\Ž9¯… êo(¨Y‘¹zY¤:B{V°¦(£0M4:«ƒºÍ èB!Ã$R‚@Ýk6µ©Q:‡0åÞ•. ¤“²‹¶¯ëk”ƒw&j‹ÅA‚ÔQ˜j…ZÙgnhTJ@ÙrÈAJ#ÙYï&¯¦üêFd·uI¼Z~›ð©’ÝÕk¬Zµa„Ç4Ä|À•­¬$…(’f©jÕBCHCL 2‹µ³¼š{þRNd·uFòjúoÀ¤fKwUæ½µ¡i)1²ô MNëÀfaÌsHS²I!Y€Ì¹!Aî¶T6´*- i—Ð ÒQ˜¼š‡Ý~õ#2[º¤Þ #•_€=Hµ6î«]bÕ«"a˜ŽI¢¹¬$…(¤P‹ÑRÕª„ƒ)g !F^alo&žÿƒÔ“™-ÝQ¼~›ð©’ÝÕy´64--l½‹C®ë\Â&Å!J$„Af2ä…ºÙPÚШ´¦_@$ƒIDlVbòjuøÔŒÉnê“x4ŽU~õ"ÔÛº­u‹V¬8‰†b9$ZŠæ°’¢‘B/EKVª ¥ž€…y…±¼š{þRNd·uFðiúoÀ¤fKwUƒCcBÒÐcpóÈ-5;­qQBI¥)²B{­–vÖ…E¤—tƒÔ€£Q£J—štûtÊŸ³¯ÔýVë±:ûyd}3N#ÚXs‰ôLÞ¿J=/§EÓ踃½_rKJ‚ãÈXB,tnñm¯ã ^P¯É˜Ò•e×½'Úx|voFu׿Ÿ½'Âχ¡.ÅC­ZsLæ˜4ì¾asV« !JI z*ZµPˆ9†™-Vµµol×fM6¦¯Õ6èÝ×ð [{yyûòÓ+¿<çÊIáöÏlüœrfÍ|ëjî;ß’ôû?ì^o_-W+ÝUBðiêüêOtšÑy¶î«í KAÃÏ HÌšÖ¸‰¨¡¤€R‚ˆ”Ù!½ÖÒ†¶•J¤˜,½_§¾’Ӯ߯è£)Ð4ׇ¹Z±õ™´Ãפ¸®ŠnàöŠ—ïÆŠg矙<<'mñýÙ+‹›¾²ümzS`]æö2òêªÃ<³âלƒÔžåéKÍÕºÖZ¹bà Žiˆ¤ZW5„¥$…½-Z¨@ÄÃL«ZÚÙÞM?MøÔ“™M»ª1í#î¿z‘™-ÝW›CcBÂÒcåèŒÈlV¸ˆŽ¨R€(z|É#zýþôAÕ^k"³l(爛íÂáÚ÷¿À.èÓ@ß\ž…œ y–FÔs˜e4ùˆ»_,ŠœF8ÈŠÛÏ›^”3*EŸåÍYk—_úYÂŽ§Í™E±X=.w p· lEúÁWÚ˜SNºzdŒF8Lj‹ yï]ªµÛ[ücÏ…ò_³ZPÖÉV ÖÃ"7m»: v×ÕÓ±í| ¼:±¾ºg½YÔÊ‹# F ÎaÌÉgú’)0/ű¶æÕ¶ú’7­z®çv\ÃØ\ýƆ´-D gÞ‚Ü-;ÍãcÅK¶…jî°§…áI¦P1³§If" ÚîÖŽ9fd›[;Þní÷¡ÿK›Ð^øã-ÔºôÛnÿÞÊ19ÝñKS‚ ß®ÕT\¼°¦S2€›«7HÂbç­3ÒI߆’I"•™]Ì]×ᨥÏ+Çec¬ÞÉ¡7Y¡„"‰ 2B,•眼èEìF&£” USýð$XRJ\gÔaNBŒ _Ôa2ŠÆV…r­\§çZ‚Ýxœ¦¤Á!IP’hEìFeç0ªæ#ç‹@-g€lúã,+d(ÀµýGñ!@±5}K Ï´°™Jò:µ… ‰d”•Uç4"ÉY~ÉgšŒJЧ!ýð$XVÊRàþ£øÀ‹ £×õÆXL…b±™¡_m\½ðE¨"·^&)©0f’¡ È2ÌP‹ÔŒëÖE$Ä|à‘j@½—¦³ê?Œ°§!F¯ê?Œ°™ ‰«êY} E„ÊW‘Õ¬(LK ô¤ª¯9¡JÈsöK?}½ˆÄÔbTU9ï"¶R—×õÆXL…¿¨þ0"Âd+ŒÍ ûjåï‚-Aºñ0 MIƒ4• FA–b„^¤g^°Ò)&#ç‹Rì½0 ŸQü`E…9 0-Qü`E„ÈQkÒæAü E¡a Åbµ„(‰‰)yÒUV5L´éçžžú£wúx~ªA®ÿØWú»AƒÍiCm¥{þ©>†áÖ„º¡föe4[ؤÌBiòŸ'b=ä̾¦ŸÄ±×7³Ütß½{—›ÓszÃúuå¦þ}û(Óí¢„lÆ …a›¦ˆÁœµ`—2`0ë@äàY;ËÁ1ƒ! ižswE#ˆf'Îùƒy¶¯5ƒÌpÂøâvlÜêªNvªåŒ-uŒ”óú`OpW5ÀXm&¯ê?Œ°£!X-ehW™ÕKßZ‚Ú^G)©0f’¡u?Ìׄh2ÏÄï ðÿëáÿ/Á}úÿ©áø®]+2óœ UsŸœí_85Ùg€lúãM…l…¿¨þ0"Âd(Àµés þ"а…â±ZÂDÄ”¼é*« ÎE˜ ¾:AÛ¨ýøóK#m­õh³ìbx>1ýÃoA¸T\MÇ’ŠS Ì‚ç<ÓŽ.ÍÃDèÃEd¼½Ù·]ÅÊðë::¯À(áXšŽP1Tåü NÀE,IÕ.³ê?Œ°§!F¯ê?Œ°™ Ák+B¼Îª^ø"ÔÒò8 MIƒ4•B!„"‰@|Ã4‘¾¿¿Þˆ5Ó÷ú.Šed±…vjl?lÛµcwëÛGGÖo[µ×Š8O’›©˜8*«‰>@Ò~'Ò%Ãf¯dgo«¦ºó;»V‹Ù ÂÇ5fö½S¯Mö®å¶+'lj´§šÛ4‡ê†:¬—êD¯Ë¾ÝzûÙI>²áÆ3N,zúÞÝtÛM©qââoðG«ËìïQÖû›þxÏòÓÐà?¢æá;¢<ZGîsùã?ËGý„îˆð=i¡¿çŒÿ-ôNº&è‚ΣW#!š^n\:¢æ&Ä©70FðH19»¡‰ÃR¢’—$ÍfŽa—éèH"Á5Ø+Y²Ñ·—ÙxB«ˆ•Á½q†«~·‡¶Z QÚN^™'ˆÞÎãb±YgÕuxÕxè™ö¦€¢è¶Þ_Ñ <鯻°÷+ïÕªYÕÜ'0$b˜3Ñ6ìNÏŸ d36œ.õ¾dòµŸh6!Ò3Pkàx{ ´b„ÆóŒÿ-=S Ç%Ä!qä¢Oç;ÅÌÙ„y3\.sYG/H%#pªæ–š*e³ôFævÅ'‡ã&˨)ï }3Ý××D9Ôq+ZY-„ùå4ò{W $‘‰pÃø­öOK"÷ÓkßÁuàæc_’_`ïà wyjŽ6¸^Ñ-5_I/ÍØ$wÔf|}ÉÌÖ(-*è-Ù¹N™g1N _eÊÙ0ãr5™µÑÙlt'[×ܺ Ç0¶Sˆõ‹«M®½ÚmJU Ú™¨Š,©Þ§£Ž×&øÇ;ªhhÀßA_X%šÊÍ1Êt×!äž|Ý—tx¦¼çsòQõEÖú^”º#ÆáÃásFPÜÖ55jýŽZíÍ"Ïmã°áº;Ô]ÝkCäJ„òÜ9ŠzÑvpÁâX0m¦Îo¦­ß]ÉÙq?鿎ëp¬ºuß»`7N¶}0Å0Å¡±ZlaºžQí¥á»Œ¶¼9Ì>IHŠUeå¬ó¦¬¸wÀü yƒ3iuíW_·ÁmÍ™’·ü¥Õß·pî¤Üʺ‡lÎÓaGLM¾AåºÔÕ‚X§v¶ño €n蘇„é˸6tS͉ÃO#2Ÿ6·W çΖ`²8f®»ËGQßø« Õkn÷nØïˆ†!»‚÷8åøAû¦:Uð‰/ %³ €'¨äO)ý$’ØÞÏã6è^ÖáÐÖÝWsqín9Ïk½C¿€¯~ê*Ïh¬ A‹Ù·ëµ^iïáŸ+ã™™ÌoU¦ã{÷{×—3XÇ–Æìïé¾é™7Y¡„"‰HA9À¥ÔP¤ 4¬(}R‡ ‚Æ{Æ¥œë¢B>€§[@Œ{×KG Þ·ú]KõÆÄ«ù)Lå@‘ÝS¬¾;‹â†H}Âlcͪ»†y)%TNn#È¡"”G1ä’åf½äÐLƒ¿97~Hž¤ŒîQÅwT¤‰Âp–‹å^é] ûà !å8¯½ÓrïgkP/Fwe÷jæ#N… Äsœ‡’D­× ®0ÌD êÆ´™rÜ”+í¤\ç¨&q°<ªGmNÊrx‘±˜ô:‡«™r<ÿç§î¦Ï’΋C#¹$étEûb_äUü”®rœG)ôqg6Ý BQDå7[(’ùv%÷u"DfcdÒIp[(Ut1+ö^Îü‘=HÎå—ýVFx*{±èJÖžRh˜„„3ì–A I,2”Ì_¡UëÙÞ¹‰æfC„È2îïNg7+²¬]i«SˆuR‡ c=ëRÀËŠTHGÒ0N–Ó¢Ø7†ÿK¢/ÛâUü”¦r£ˆîªWfŽU´2¶ôEy`.Å£]ÝuSÛÎtNäçrWa{½”ÍŒoÅ-0ôD8'›(’ùDÔžŠˆS—ˆ“˜£óFw!|ДЮ${ À/U{¥t'ïÊz HAÕWŠîiŽ:w3¶)£ª îÕÔ#,ÊP ˆç9ä‘(øŠ¯foX&ˆ5Ô í¹o‘$ª÷Ì)ÏPLã`vêTäÑ+k1¨sŽ Pæ%ó‚zÏî¦Îy;- Ü6NÐ;T}Å °ô:³ój®åD”’ºHcÀ$R˜säâ¤9äÓTülOhÖÊyøë~l–zôI·-rËZþ ¢é+ö^Îü‘=Iܳ⿪ÈÏOv3±½ ZÓÊM†}’È4 %ƒƒ†R£1~…W¯gzæ'™™7 ˸½9œÜ®Ê±te¦­N!ÕJ &Œ÷­K.)Q!H ÀA:[Ln‹`Þ[ý.ˆ¿l@‰WòR™ÊŽ#º©]š8mVÐÊÛÑ=倻Ž6uwuÕOlK9Ðm;’CÉ]…îöS,t1¼%µCÑàžl‚KåTz*!N^"L£01G!æŒîBù¡)¥\Hö€4´^ª÷Jé Oß”õî@ƒª¯ÜÓtîglR/FTÝ«¨FY” ÎrÉ"Pñ^ÌÞ°Mk¨Úrß"IT3ï˜Sž ™ÆÀí:*2;Ô©É¢VÖcPç¡ÌK 4ÿçõŸÝMœòvZ¸l †˜þ,Š!ø}f5ä×P(Q%$®’ãÄz@8JmG9e4®g)kœv^0A㘶(dpCÞ<òk®åGRJ©!ŽlÏ"‡ M¨ç,»’s¹H{É¢™Â&~ˆO®~Hž¤g)Äxæ²3r§»!™e­qå&‰ÊRöJÜ–8Èy¦lä*õîÀ¹äfS–FY},ûәŽUƒ£ åµ8†Õ3ÃìB T^´žYÔ!D„} 3ü ÐÐ# P8C½o„[KyùîUü”®b™Ü°[¿ÖÎß§;¢eø=ÈrqÉ9ÇŽ!8¡ªˆ¼IæËMó<”žŠŠ"L;&×)ÈsšI{•#¢SI"G±–W´^ªÑ()gï€O»î <Ôq\˜ã·r†Å"öbWwôêê£B†f÷Ò&h>º«ãÎ3š¡H6´™jß LŒ>™€h!Î]éœl*±Ç›U84JÚÊj#ƒV:–@z»»Aß4ÝÏè®^@Ñ;A 1ì[2Ãðéñ¯&ºÁB‰)%TÇ7äPá)µå–y%39Y®qÙ1ŒLü¬[¤êIÎäâ?déš7„↨~!Í–‹æy)=D˜h`rœ‡9£9R罦­5™¹SÝÌ2Ö¸ò“Då) û%îKœd<ÔfÎ@r¯^ì ˜ÞFe9d`å—ÒϽ9œ(åX:2[SˆmS<>Ä µEëIåBHGÒ0À 0µ„;ÖøE±·žå_ÉJæ)ÉÍô¾:a†Ïöã]»ž×øýHß]³„¹–“v€5˜d“™Û«¼ Lÿ,oä‰êHÎåWuA"G±–W´^ªÑ()gï€O»î$‡‘ºq\˜ã·r†Å"öbWwôêê£B†f÷Ò&h>º«ãÎ3¡éιЄBD!*×Vìí»áxI[ÅZªžëæ&YPðHÇÊbQ™MȲ6åÕvÄÜŠÂXüz˜â"×1ï»/©.VĤßoO®¿¾¤…öôúëñ êBZ7ÛÓë¯Ä/© k5שf™€ê?~Y$ƒJCˆÙsöÕ«©™r¸…Ò¦äVyrTa”YK™.ñáÂV^«’hÇ´  ÃÒ ÎW8W~ÊP«©rÅ‘ ÕMð«Ã’£„æ nÈùƒPä3[]²Žbº sùêqÄÈ¥P_RnM®»µç¾ÞŸ]~!}I -íéõ×âÔ„´o·§×_ˆ_RÒ‘öõ!€åj‘ƒA»._$S˜ª÷hˆqÝÂÇx]/uE³7G SöKÌ’72Æf7ä¹I8ס S{†"XÈŠ>ÂW;àÏ9òÐ@u(hšFÐâ´™—\)z­cf+°ØfB诵)æ9šb9ˆ¾—B‚ï³To§§×Rÿ¾¤ª‹¤o·§×_ˆ_RѾޟ]~!}HKFûzx¯Ä/© i®:ea‹Ü ±oŠ2¡faOr,§Ù {ïXR‰=q•Û.5‰]Çu¾V°,í«”ýò€ùûÓÂ/<´·Gn´?i[P¦0+½C²½[ÔÞ'B¹ˆU™‹¨wL:#h1[±™}b¤C¾Õ W*C²®‚žüijÖi%Öl)2»t½.ˆåúãù"z’39ÝÕxôûõ÷ä‰êFw ‘ÝQÒwï×ß’'©ܧŠî¨é+÷ëïÉÔŒîæœWVë%OvC1½KRÓˆI§0¦BÙ w&€æJf/ЪéøÀµÞÜfe¡#YwdçïNG7)¥ƒÙÒÓHTBE¶æ-Oe!9kð ^3N@kU,XzÎ'”§É4;­A°’y$)VÜ)ú›Ùn/ß^/Ó â÷XÜ#Xâ;3»¢ íÓ9ðÍ'’ØhÃ|ÒmyôjÔ—Z«Æ!˜†ÔßÙÄáÕ*R»«4ŽJV‡Bz„Ã4;ªM«³ ЍÒiN>.er•RϺIfšY¹ÙVŒ2j] N¹ûÒ0¤4ú´ª×r[à9¤-‰²ÔHä„íéÁD Ø'k&"ù¢è碦u„/ L31Š4‘ºÒ'¼¼[m’-rnpuçŽÄ±®¹½êev<ê¼—duŸ$Q Ü'°YU¤…Þ©K¨e4ªS{Û­~2J«ËÐPAv¡d^œÖžðâm&‡-mc?:B•mYµ^ØÿÄ¿2YlÏå¹$'8›e¸Ã~,! ¸}ÎÔ8ŽÌ¯+¤3=Tû™$ ”´ú¤ž_Š©? B«D¦:¹v„3û‰fšUs©hÃ&¥ÌP”ëÏߨ6ÅV»’ßžz¡h­ˆ„j\Òœ±~÷Š®ý9j–jÖÎïMQ½‰ÚŒ# 5ÄQ-u²Ð —ã™ÏEG))"Á0ÌÆ(dÐAapUr>tª¢RêM$*”Þöë_Œ‡Òªòô]¨Y§5§¼8›I¡ËF›XÏÎ¥[6µí[²îßRóxÙ3ý$–+Wû ÿŠh¶xnÔ!(b‡£ÆµÎÏxÎz*9»5F Ìbú2šA¾hðæèUv²Jañs«—hC?¸–i¥W:–Œ2j\Å N°ýñJƒlUk¹-ùçªŠÜØ‹ÛA ú/>àÂ.Ij×üÁ]êÀÙVÅ­B·h~!ˆ¡lµ”Z/—ãY@™a„‡vŒ§49­"…Íp>ÿ‚愆IUΗPÊ~ú&÷·Xûd?fuûÒ*XºˆYg´ä°õœM§)$;u£M‹I9‚B”¿ØÑÍHVÆÜ^ÚH§íOŠ©IvëIýµRsÑ!d”ã5&W.ܳî’X ®u-dÒr”%:Ã^é¤êÒ«]ÉoÏ1ÏδVÞÄ9m; ÚxÞj®K5m‡þ`®ÿ‚uxÃË…\±s Än÷¿À.¼ î;£p€[Eò¥À@|¦i éª’Þoª£Ž’«$PÊ~úS{Û¬}²³:ýé,]D,³ÚrXzÎ&Ó”’ºÑ¦Å¤œÁ!J¶­gÚ·cÿ㯑$ì¶°ÕR¬æ±XóÑ”ã5&W.ܳî’X ®u(P À9ÊÍD!„@j”sEØÐ'ì]ŸÐoúBü‚ô¨§„…(”ôøO:+QòíaqYìbàPÎ"ÔÇ¿n¨Á‰­`½Xˆ)S¨Í Z UV:è…ˆÙR« ¨¿`Çý=Ú´¤žÂÆ_aËœ’ã;•Ñû.þÁIïÿÖ,Nèý€»ì…g¤­“ÄäéXÊçÅáoëë®ê¢’ÚL':D5B³E•dG/ËWa·È3n—Yu[2Û­ ¬„Æ™‡»)Ë’@WqpTøú$’²B3Ç?±¥ÿàÿÓ*YGõÇ)Àw^rµöUý’¶ÿEbo5ѲåÐé²ê@h9ËžŸÔ„VD ¿”Bl‘$6ïÇ£Uw-¤&î æ!²9©[Yj ô—¡ @ÓÉFí)é5=Šì‹Í,S’°*°¢²”Óš½f¡U×z¨Øh…U‚þÂ$öJä{Výž·ÿVTå—Û+›ü£‰šÅMÕ©*¹vy÷§C­ëJ•VNð<8û‹b†X~bÆ<šD×,÷¤%tÇ7Ä )L9$j· Ã.Í–Ü%Ô\ÿÆLÒ¤Ñ+Sú(¨Ù´qgؘ97n6ó ã*V^QM^LÆ”«.²Õ"ˆTs w "…T‚¤"Á¦DËαÊÁ‰R½ ÒŠƒ.ЄçHè—1>Am/;Ú8|)hÕ{hOÁC)Î_…9m5K¥¤e"„^¬KAKYŽ?¥¬ç¼TÐG’j ‹Wi/AÑ%]tE¦Z\qcx"„_x~^b^¸e&Þ8ŠZ Õ,)î®ïL\Œ5k–bkEÐé¨ÞIž8‰–µ`MqBÛ'œEòû²}Å´ Â@!TÝ•QC 5_½FáCœdmžJJ¬£Ñ¤2Ô!ýY‚Uæ´Y—^ËJhT %ÙÔ~è¥Zu¥ëªz(óM Ú–ØB<)ºü!~ƺÜo–ú‘èò<~R=ü¦’;ÕãË›ÖÙ[V!gµ’Z›ªÐ­˺!ÇUð¶¶âT®¹½TuD µ'9Æ¥‹už€)5[­ãÌ ¹s°Ož©UËwªJ¤9÷#½Cˆ&›a7ª³ˆy9Ïßȸ“k+OÌÇ­IFR˜¦¾Öªí!z!]^5ÃO¸²Á-^‡˜q¯6½Ïr¦ô„®†…‡Î "”ØòÉ,ÑkxÁ,porhˆƒÁu–Dvxöëbh„Yw«›—´)ã ˆÑ|E€<& 4ŽIMÃ¥Tr’BÅk=šC-bŸ?|*ãZ,Ülè´auà*ÁD§,§éšU†´K×Tô0šh´VÞþÚxWí¿Š-I h=°ª1…‰Õ"%Rû‘Þ¡Ä Ͱ›ÕYÄ<œçï‚d\Iµ•§æcÖ¤£)LS_kUv½®¯HmùjvðõxÃ[ÀÊ/ « ‰h©âZ$)ê)ØJR‚Z¯eÐ{ZÞš-üw%–À6xöñxžÞ;Ù‡\5úÒ-SÆ!ê!€Ü&O9IQÞËXUF:ˆ¤,‚Ö{4†ZÄ'>~øUÆ´Y¸ÙÑhÂëÀU‚‰NYOÓ4« h—®©èa4Ñh­Í‡}´p·Û_\’=¥¬ØñXì8úPBÃÿÍ|Urí)‡Û?QD…Š'!B«ˆ …äÚPz«8„®„fË1&ÖwÉ>³,­IM)y“@lZ»Hª^¹r×ôô$«ûʶ¼FïÕ{ÖÎÙúU ®öæµ,¸‰d~¥jÀ9)X.y 3 „CmoÂv…»&mªâG,YoèŠlÆ;Zð÷+®ŽJ©gVCpœÁ#C0 wYËEä…]¤*“Íj=šAK5bt=iGšY8­8e ·`¦Sÿ´ÓE@$nžB ÓB´õVîÞÚ(cí¯Š®Inëh=±ãðLÖ19¡8–ˆ›·;²%Âß>†1Ö‡PPšÊÍI2”眆RÒ¡®Xy¨Œu ¿!8©ªˆØp/FZ/ÙïHz* 8ˆ"Qá0B•ªUsKMÏ9 n &“iAê¬âº˜z@,Ä›Yß$ú̲µ%4¥æM±jí"©z$«®…j³ˆÞÐ6_²ðƒÜ»Ã½±>2¥]Ým\Påœè>Éj4ºCö6‚©­NÍãhìE‹œ›¼[¯œ1*V^P¯É˜Ò•d×½ ¬g´¢& C¹*N‹QìÒ Y«˜sû¡ëJ¼ÒÍÅE’ЍB!„"%?Óú’BWWXóá[ÊP`h½0U1¦^ìÀmuŠ]ÀÐKË %•îÓÌûz,d| .&⾪ºj™ºÈeÚîB–ºŠžCxMmžDëÙàÛ–UXLC6òX7õ,/¥¤sË]® ª¬uBÌlÆëéûˆUs¨*gj¹Ô­ÜFŒÍ9«£µ#+äÊG‚(,¥>ª¢4Ë\»µNb¹7 øÙ}쬮•Žó´fLÀ”é1X:É:cxª]qhW0iøU°6ž &ÑwÅŒ€÷Ý"Jü{{u2v=ÔôóNhVnêcÃ/è:-dˆâV±–»ö‹ÂŠÈ$˜fciÏ’À ÙU´ÄBbó!fRdYÉMj¢ÂöVî…øÅÙ† ÏŒ¾o:UÎg{•Ê2'\*ÁÙåæW|^$:û°]ûÉÎDYæó¦±85tA¹ ¦•,!ʜӠ]Ë<¾ïŸôó¤«)â—[Â.³ç®QjvbqŠ«\Þ¬¨™œ@`Si=9L&WÊH¥§hsa…!èq°nÞŽÐiųýJðàrqvFe†;e˜J`(Tä´­„eb2Ó¬ YÊ|Á ¸7u[Ìir4jÖ ñC`,¼¼§Š™NEÒ^dåy³k’Wfu¦îïJ,Ô­ÎÒUìÕeßߘ¦<•š@Ýn¥–ˆB B`„"Â$@(!FFê®5¢Ú²…àºØ•ßõKáMÌ<~x}¿ó <>!@•Û¯Yb’¬„"C!ë±â±”—z——›ð$ƒ[!ÛDîÌùP°“0R=Ùú’ù”‰+Ú^›Ñ›¿áõ#2ž+z¬w«?ÃêFdâ7ªÔh|—2«$û?êHΫdš)©¹©cQÀËM›©5Éy)XeKAaBPÓ+ä'Ö–@<ç§àK‡žj è·w£7ÃêI̯ÅoT‚ófïø}HÌœFõ^Me$Êéˆ~dfP^²›Ûž«WL¤ C0ËÔ•&ÓÞ›3çªUBÞu¼2–qð~iA=we{(XY˜)0{œýI|ÊCëÚ^›Ñ›¿áõ#2·½V&z3LF©“ˆÞEj4¾‹#„ô ÿ© »¢­’š›Ú–5 °g$¢“\—š•†T¸PÎhPž!•ée>sÓð%ƒº¨ÌFÛ-íæËßðú’Ù•ø­ê^lÝÿ©“ˆÞ«É¡ì „™BcÝ1ÌŒÊ ÁöS{sÕjé”@fz’¤Ú{Óf|õJ¨[η‚ÆRÑî>À’ (' Nì¯e 3&sŸ©/™H}{KÓz3wü>¤fVâ·ªÄÏFiˆÏáõ#2qÈ­F—ÑdbžŸõ$tU²SS{RÆ£– ä”Rk’óR°Ê—ÂêÍ Ã#ä2½,§Îz~°wUˆÛe½¼Ù{þR[2¿½R Õ›¿áõ#2qÕy4=Ô³(T<‹žÔôMí¯e‹@ÅVZ|óøA*]j½Óg9¥Qo;ÎÊZ5/§OÀ’ (wpNì¯u'R=Ùú’ù•„€jâ½7£7ÃêFe¤fN(;-ØA‘õDìÐü4îÆ¼Zk¸UzBWIæâ8€€¦Ä4ô'>+%4ѹß}9_Ux£’gðØ.ýÉÒ$±ÛUgŠ\î„1vó{_nõæa¾º gN Y@sŸ)§›lउò6KkjÍ/m*õÙt¿³çkÄe”MÖÚÖé–³hÕòHxη. "iÝC‰R\Fb»´`¢™n™òšo/ha£ Y+6‡LÛrYG…•ù2‹Íu¨åâžö)j.è­Îàn…î^oq]gÆ3õÑë3’,Š Î*–Þ~äá-;È^ЫœojÛ#jîj©yÔ^J]¢gÍ3tÝnÄ쪱ðÞÒñn;[Që9‡1˜4LI:®RI6V¢B…´èoiw7©”ô,.ƒ BzH$!Ŧի Û+j™•ä®e˘qkÜDÜJ른€t!O–«5Þ, Ü‚“Yÿ4j×8ÞÓ±m1@Åk™€³ä¤ØVÌ“ÂÓ¡ÆrÅ_QƒBг<Ã÷ˆÌÑÍT¸uPÈ®ÙÈRŽÅu˜%.)ONòzS7Jʆvª¨ŒâG”FÝ|Ü}2)$\†@€>•1sË—<’¦YÌgÞ”Y¥ ‰L—žZ~™ oijǃmYðìV©™ +VYñÌ-Gé'Ü›¶^«¡³ˆVC–×\d. nªž|c-{ˆš‡µmÄnŸÙí ZJŠÓ/5 >JN`UÃ^m¶ (&¯HÐ|¿ÕW8ºŒD–ÄîP"F.#fi˜&w“Ò•t †f´uU\s¾"5 ¥xÝ* IÂ3Ì£ÜɃ¤'e‹æ.?”»²LÖ(B/w{QÙVÖLÀuå²xf|ªõ!ïž¿/ã±ÑmoFnÿ‡Ô“jDêèÍßðú‘™O½Q½»þR3'¼×’÷Ã9iâå?êHΠ¾Çª›ÛÞ뀂²ÒÊiRë@EYÝJvxu·¶Z+3ÍBŠÙëĬ¨¡wZ³”¹c1ž‰×‚Œ™«OЯýE‰˜7Dã«¶Ó¡ "þu·9ÞËÏE j©­]@iL `Ì£!ÈCDä‘¥ŽÊñªõa–Kx¬v‡¹ËA!t¡„"JAŠAŠAŠA¬˜áÇ$Un®'ý‹íjÄ_(¼9*¥aËÄAŒP‡’y=µ‰“ ‚|Кp¯ˆ×ogBɱ ŽA`ßÀ§h‚1mÌ¢¤XíéæÃaÞ÷Ê™÷=òÐ)º•e-ýí.s¢™å4Â,‰˜wdÏvÝNjMÕ]÷­_ˆ› (Í–µÐUžœïÉtƒˆÓÂg@w7ûŠ}cˆSõ+îÝXŸegÚóvrO”ùG èÞ—›ÿ—ÖZÚ²û=ÞkÛô9¸¼ þM:_¿Ý(¥ŸÅ}ÙŽÿu^„â7—þ¢Æã)j7˜nè«ß¯Ìؼ'¤v”ÿÀâÖ_êË^¯þ š øXH¿‹’ï•Þª©³x wÚ{sÑÖíèF"ïu¾/—6îZU«z“Æ/¦%âìW0Ñ=Ün ü3X÷qkÚnÏ®šÿN]ôÞ—›‡ÄBÙ‹š2^ÇS—Mtç~I6˜zF’¸Þ¯È§¥Úì@¹øLØ€-Ø4uE9dpñëLÃTŽÆ‡xâ#ÅfmÝoZ ŽuÕF=ó<´½Ù™ý&«ß§½U"Pž³ó§½v¼à•„"JAŠAŠAŠA–@„B"JAŠAŠAŠA•„"JAŠAŠAŠA–@„B"JAŠAŠAŠA”2"‰EŠAŠAŠA@‹ •¿c0Ø\}ýN‘ôUõý^Ç•}¾ |Ÿ(pøo–ø¼_â}§èý-»×´%—äü™=^¶>—E@.âX&iõAxÅcH$¨E „E „E „]©÷a}Ìês÷C½U}W±¥_oƒ_ß'Ê>å®/øŸG)ú?Knõíqeù?&OW­¥ÑP+;c”¼ÉõAx¥` )(ŠAŠAŠA¬M—"7$%nNô@Ûƒv²â/—]ôÔδ…á ‡ˆÅÐÏ’y·†—‚|0‹&´ºØ‹ò]¸ Y!¯yÓ^úЫ. ~¬»RÃQ»U¨ô´íæÛ¸Ö2áéeJ¸8ªœ¸@%DÇTà=ŒÄö{ðPáòí”g½s;]+Muð]±â"f-¸ƒ&mïM´Óö½?bòËà"½Z÷ŒLżêdWwZÒ\ö@¤‘f!,ä)ìv_ús‚ÄÎc+\¦Ç oóçÕsbñž‘EÇÖ~$VÊY¿Ý·—„0lœ3˜ƒÂƒþ¯¹ìHOÛ˳çÑ8úg´›ØƒØ¿‰ÒÚ?®÷ºÙtú\C´8äú£ž½N-~¿ÝÁ>,ù¯sîÜh1C—j×n+ÁŸÆV‡ŒßÌçÌŠ© H¿ þœÅ*pºuÞk$9VÕÏuö}±‰xyˆ>Ç1[möß’6æŸ*bVø9Ž5Å»ZnñÎÚB`i"¥Šúñ ¬¬Ó>CÃ*G)#ý3ŒÆÜK£§ §^þÕŠ÷W¿tíœCÃŒ!öâ¿ý×6ˆÍ>Å|úˆB!„"µl"nk3Ž­×ÔDŽ ßºÛµÃß­:¥¼™ Qž 4§0æžj6& #õcófh5ß}t«^– ãŠIÙí2¨ûô:m¯’–Yó¨-2ÓlùçhP¦ ûË÷ÇS½î¤êUSquA ”ªÔg1N \ß'áçnJÉ–…^[:ê}¬×ÏPº!Ò¥ˆÊÛ¼Ön³W»jÓßÍ;Z¬?i¯+ŠßöÒÁ|óu`÷ûÖp¸½h!Z8YÆF™AXq€þ÷šc€ÄàâÇEgUÙ³o­[ímZì¶ÅňvòbF¢²í×]¿Óo6‹>vbw›æÿï çâÊ‹‰¸j%Ïd¡E2̧ÎiÑÙ}›†‹´§ epòå×lÍ7¹ÖûüXì\ÏÂF/Ú»ð?½•°yøR踿ÜOë RŸ©^ùJ±ÊÏ_7g$ð~RÜ8ÅçÿåzŽuÿcOÕz~‹'_Áý/þ[®|µ|öc²!ó¾9×EÉ>¯ýÇGöëªðñWèp‘ýßêÉ>¬ÊÂ`ˆ‚lÝO8Œ÷ºû¢-Åa×Ч…`¤¤«Ù€Ï9È%‹°ÑcñÓEŠ™\»ŠYÔUÙBOpZñ]…ÃÆøMg»ï£ ×NgmTª*‡\¶sÚÄA±nÇ”-¹Áʾðëp¸¢ð¬•”æ0O)jœb%ÇÅ…‡m²q3 å>®ÛUréªè’&a4°ŠsrÑézÿj)µsCéå ÁÏöËH雵»_¹ŠÇsAÕgqf ÆB3Nþ¶IbpÜ*ÆbíìŽåÍÚEÎc_¦ëJÚ­b˾lÎà ˜‚kÝOˆ[÷²û².ÅaÚ(S’À0’œÝ€-SÎr ,~6XqbÛZåY…[W¨R}Ê[3ð¸xä„Ñ}Ù­èé¾›êóv šÌ­±Ø0·FNâúÄáæ¶¯-1ª©Õ®UK’a¼\F ùóÿ3Z¯.í»÷Zøpâ—ÙÒïŸ^w¿’kˆÛÜÎû ±Ö×û‹}»Uï»çv(ê/¦¼½a3,#eÝ-Sxc’Ln-±;+½J5u§M¶üù,¤s…Ò70õ´ñëçà-¢+ŒâK4yîkSé¼8Ïu¾þªbÂT´˜~ÐÏQÊ9“J8²L;7 †ƒÎ,7ŸgÖ.½ ÷ ï[c&šXŽIs´{C(®žûîInv‰¾vgw›æüàß¼ü]Qq $ºì)”ƒ±)óš;/³pÐö”Îck&ZÔš¶›÷õ£~åÜdÒa"$ûYº £§ì-Ë+x6½í±ÇŠÛè±ÔÊÒÐ褵‡`+a†ô„׈Ÿ¶K‘xS<|mŠ ;B1ü`çS»³ìtötÚÕ°¯/•˜7{G¼5¬Ôh5«f{3sÅa»ñ›Ó u«7m 5ÅÕ]yÂLdžs $—o¤ŽÒÄÉ…Ö²zº Úu>Ío¦ê?‚p¶m/6ºúºôçz&}¢œ¯ ³¸}ǹ]§Þ·.üQ—\Éz°°Ùšfa”åÉ:;!’3‰l¯ÌïSZ®Gþ¼8÷5ØxKCÖç|úªi_9 ¹Ïú“è®·^PÜ|JFm¯—mºµØt>àßpBª.a7oÀŽÓÙfæú¿êÊ=Q¦Ô<ù/zRöâ=6Û4õn¹fß—_ØÔãƒÛ1YEñßEnw®èRæ¬@‹XUäÄ)¦E×Z¼É»q˜{KÀ‰y/PÚõ|ÿE›£…Ø8¸ŽË½iw¯’°"hmôò·[Yˆ ¶ØÝÓ¹÷*ûÒ…Åë8 Á»4ÕUÛ–¡!O* Dqà°±bOðŸ7}FÂÆ½*ùè»d…ÎÄLø=¶å£ïï¢Xb}:íÖÉßÑ£Ìj÷ßú_xQ¿ºg(áV7e’¡/`|æ(›˜,T8cü&ä˦ÖuÔë¿Ri#…íÄBù½³šÎœ¶ÛM¯-ÁíÓ 2y=:Wá#u]}ÀîýÃz´…ò9b¯é§ÝÜýÒz½™¢âÎ5ú·›=ÏúrÝ×;î\x¹8ð—fâW=²íËùWzçñ K)M>³¾×‡ÉAÛ÷Õú#y·²Øt2ìP¾†VÜV!]è^.b!!îïNǼ¶´loâ¾ ní9¥x²Üµâ?EвïøSÚ¿=ۚ狳gÔs¨u»™/×.ª•w„,äC˜s1‹ÈƒÍ>yŒÍ¯%ûL0—î®/Ð?h?¨þ™4á5tú(GÎh´ÎÔLŽSÑB>t{@ý þv£údpšžŠó£ÚíóµÓ#„ÔôPÐ?h?¨þ™&§¢„ÉlËC°›SáµÍp¡E¨eQÊ]hަI!°Pì'ªHTÁ•k"ñT´²ó§9¡\$h«%öÿŽíA™¢0bÔ°Õ‡>I.ïÙ+Îb¬ºÏDåìþÉÃᎹn¯R~%vIˆ—FW]m OŠßMiaÐ*‰>¿Ý!õ+Ÿ'*;=Ÿ>¹£äœ/£z¦½o{½ûÕÆ%Ü^>o[­x&‡Â‡s|.çp5ÅØ‡kªû£w˜·§¬â#LÁ>!r’o(ä|ÍöW¾µ TsƒØØÜíÞ)ÊÍßíÐ.;¢q¾wˆú /(ªŸ(”«6’Õ0Æö^—ÒÖÛýÄtZáñÃß Õ}É¢7cWEM·¬Y{5o`h®’”Â(H¥YÉ:0˜°ìC£Fß²²™Üw’÷Y÷($Væhs¼ŒÌ¼>àñïM^Âêä{rS{ …MV¨3ùw*&‚¨ÔÐS•pC©ŒÅ+Ý÷‚?ÒaŒNe7 SS s[ðÀܯA„áǤÙ÷`–úÒ¼1ÕNFu^# Bÿºæ‹=hᤧ‡T†$?ª ûð‹=iUOPü)£".V¬fadÒ{W B@Pª(¨{ðK}hᎪáŒê…¬(P$G_Ÿ°?:8cé+pÙÕy„1 €Kÿ4YëG}$áÇÕb0“¡aU2?ªZm …6}ù‰»¦’؆À¨1³`Tj*s49Þ&f_œ¥ÝÜÞ=éW°°ÑX½¹ &ö š ­Pf9òî:TMQ© §*à‡SŠW»ï¤ÃþœÊo@¦¦æ·á¹^ƒ Â9I³îÁ-õ¥xcªœŒê¼F…ÿtÍzÑÂIO>©:/ HT÷ázÒxCé(1ÇÕj½`ÒÔ±¹ØÝ‹TYq]ÓÌÝzˆ¥¸-…WF*Áµ0€„‡¹0X¢’Bºç»2Öƒ¬¹RIqÓ9N|ªž¡øSFD\,­XÌÂɤö®„€¡TQP÷à–úÑÃUÃÕ !XP HŽ¿> `~tpÇÒVᳪób–ÿþh³ÖŽúIêA„Ü+ÎUlê–Ž„Ÿ‹îš\…,؆À¨1³‘Q˜±È½Ìð;2àÈ_x(øË ,^Ü‹AkC@*T0ú=>d h*Jœ u2˜îúÁ¬áÌyûàl½Êlè2îVæ&·r½:' s‰óîÁ-õ¥xcªœŒê¼ Bóý4YëG}%<8ú¬z/ þè=ü"ÏZOuL‘õZH4…v,mu·c\TS)Œ¹ŒõŸ$žªHTtB¬(ˆ…#M2C÷?2bnªõýøˆ#r4øø«9üÒ¾;TÈÆîcÜP›¦½Øè¼¿ÁÞˆ Þ¸Ò9êXQ7åTƒ„Ÿ³û4ÅšG:äqí¯¦Â‡…®É$ã€Ð)ƒaû×tÞª„®Â¸ž£sÜÿ vpÅ,ƒXy¡l+ BˆŽ¯6g­!ô•¸qõ^}…Ã-ÿüÑg­!ô“‡Tƒ ¸WœªÙÕ- …?Ý4¹ Y± Pcg"£1c‘{™àveÁ¾ð Qñ–X½¹ë {¯³³Å/‰Ã¦ñ:žKo»r¯·ÅÚO;äü?¤zXoñ:Ùé[]-Æ.c£ß«áï[…‚]l§|>ð‹BaÌyûå6^å=WA”Ñ*¦6I^„¹Äù÷`–úÒœ1ÕNFu^F…¡yþÈ?š,õ£„>’ž}V=…ÿtþg­'„:¦Hú­G¤B»6ºÛ±Š‹.*)”Æ\ÆzÏ’OÕ$*:!Va‘böÒ3«WQŒ"Ï\§æä FdxhÿÚÇuÔ°K¥Ï 9HÈ©Šõ¸GeéÂŽ!ÊbQÈß>ë `këO!¿ƒFü¿øDõ'Fw,é/J_ÿ_‡òDõ#;’‘Ò—ÿ×áü‘=HÎ䤂ÿhjà{«Ç©ìs~„õû‰ÄêT´4,ÄêmRõt«ñ&‰Œæ< P!}Ðç1ù¾ØÂ5µ3¿_pÖÍ6§Ce¬ÚÜ&ØÅE÷pÚê/¾‡³öG0—ÉÐp‘Õ—A9ün °°PJ%‰”G;=(èO½z~™ˆÄÇ–Gz§¸~ù+¦,ÁݳL??·£½¦‹âaLªºN.dâ(h>å:0½‡ÙøYDÐÇë ½g|.—DعfnI¢‚x²I~·~Y«å§¨¢àà1¬ö»òÍ_-'#:)à±cöH»¿*ÕòÑÃgE<-݈Y»s!Õ;Z·rü„«(hYÌ'‘–KIýß2G §dà0ì¹êÕ w¬ÿ3¹àBJÖðõIDx@D}Ø';Ù”®7·)¤ÛÄo¸N(fˆ!öÜŘrÑvCSQD†á8ha Àdœ˜œ4x˜Ì2‹qg¯qê¯ Ï…üFn=Ê}eÖ‘Û`F×Å |£Ï Î4uVPH3!ºyõLÛÙxwáý7Ôéã~ýÖñâe|ülÞ·2®ø:Ìáô†—½qÌ`U¼UÜ--õÑÄêó®a!7¹ù§ ü•’ÈÛs/ž×¾Çâ·ŒpØX‡Áo= =yC‡ i/]Î«ì š—…ÍéÀë8€À&™€5—™àðñÈéZÏYÛêuóø( 9ŒuãºtܰZwO±ªO¯nÖ}Jç±U+˳Ês˜ŠaòfÑŽ'ðúYêO[ÞÖœGqx×ë~•ðNÐRæRe‡áç®ÚËUÊ‹ƒšŒ'7ÀDfcæ9rL1=‡Ùø™ ²Çë³g–ƒ-bÅK8lv‰–Ï!èn#q ×–çÛ°h[r±utUNK 2íIkæßÙxO±äòÓϬÓ/’ð~Œpy=CßÞN÷|ÖœW‰xßÔ–Ò\P´wécNñÀÞaø’Šé«°!9Ð]{²æ“ƒì¼“2Ý^§–ÛûÊœD¯Äe7[&§¬g¯aÐàlUzìtß`TMx\‚ÓÖqõfÄeÈA6r:F2œê³g–ƒBkšÅÍŒFãê¼S™œ¸Ù—@H×(wë*ö[îÜï;yëæÓ$ÄöfÒ}//ñ:Ùé[]l¶â8Eè÷êþʪ­ÂÌ^'ÝÌã÷ès^`ÝØR|r úÜ jQ¸§)H%0¸ÀÇŽš1ë:¯]ëA¾ÚT¹çsý;~ê‡|?ŸMÐÓ¥ÀÚÙxîu_`T].oLYÄi˜´#$æf(ät¬çUøh¹3ÞÀÒtSLÄ}y,Æú«ŠãÇÍŸ–Í”¾S†`á”}PWvÄ·žPÝ®ræ)ÉeaÝŠ°ß_®½+ܺي™Ñú8>¯ìþ ÙæÆÎÙ :aÇÜaâN‹ì.ï¾5k8Ë™ªb2Ð$'Lx£•òNuY×ÓË¢—¼–9ÖÞ4S¼@ú\ø‹yÚø¿ðÛ×èHq+®ÈÈ;ϜӞÉÃEÃÈ=‹Ë¾—¾ýöµ“ççÌ}ª¿ —”>þlsŒ<ÈÞàÐþ'u} aïç{‘€jªcÛª\¤‰»' /8¼õ›}ko³ÁLs¹…™]ìÝ ëºjt©`wÂï‡[vì{\ã”`oîZ¾!â,Ÿ„ùèÝø]+ev¥›y×貨Ìm~‡}:_æš CˆÄO<"Ï”›ðº•žH÷µ¤øƒGYÛÝø¥%•CuN¢Ìߤ’Üi ª:--¥<سôÏZ Ó.5Ô×;¢^.)­hö£T`a)'FLÿÁp°WÊö΃ÿî¯nú]ÙŸ@JÕZ¬ZØö\ÒímÝ̧»e»T²Œ€ˆÄ˜Ìf9÷¤;)>¡Ñk…ÿNá·1æmÃÈ:•ÓjÇ,3³„"Ç› Ëãw±%V' ÒQS™æ$¤LnÅ3žsJ?Eö3?#[ÍQÉšãBu¥™l¥Œ²öà‹Ú…Ù6]ẻÍ×BÓUä×PºõXYQ>ô¸jënÕõ·\ÃøR(j‡â#Í’‹æ{ÒŠˆ/J3)Š94¢åsKMÒ… Ú‰pœNÌÿp·`ÞLµ\¯º!騂Cpœe0†aÍ$hätg5©†Üp³Ánës±áYCB^ߨ›Sަ|Òdm¶ÅPx¥n\•Q.ÕBÎzæ’÷rY9Ù–¶T¥‰Åv\î…™Xâ ߯Eußž|ÓÉ;Úî'qÕ!J9ç§éýHE%cƒÛÏg­‘cI®Y °P)±Yvmd÷†hW ±j5)æ…DdPŠ°Ú«Æ ’,[Äu»öfusJH=U”ƒÕ%sŽ£Ýœ½ ȸFË£vUê £­SÂeÀƒßIÖKáNÈýWlBš –["C¨O$"˜*áa(²D±`:^Šü»0uÔó/“L¢QËé¤9Í ùG2£oç[{™ìµÚóQpÔªU«¬¦¦`†Z *–š3Úb Ö¶5¡R“ÑQ{ärˆ|«Pu .9Nºóª•­²™#í%Éjªh7ÒÌ‹&›À.ÖðWD˜ÂcTmE7»]|Ò!‘à °™Ð¥å?ÌÊÕ<Ì0®ÄÒ"SäA-#N¹^aBÜ­8±ÇºÁ±•«ék« ÝE7ôȉ‹#†zÊz!¤Îe¢"õb¬Õš‘(&…®A´å*ÙãfÅJKI‰øNY}¥Å+rº”|IŸrÍNbF')$„ó¬óóeËTê¼­¥Ó›Õ¥?ΙڢŠYaðhÇö¤ëƒÁå»±×¾7sywB£¬ìTYΉk”çÉuf71Ê¢†AÝU"{04­ei*Õc˜r˜f–i¢¥¦ŠÜ³Å*•[c¨ÊIAM}Ã1ÊLæ ShGñš}ÿâÿ¨ÝxSÒ¿Um~ýt¿,¹ÖñZ׈Н·ªË³T®TU9HVà?„œ=¡â‰ìªhö}ú_Ú¥ÏeŸk𳯕 0³9”¬¨8óý9“Ì&ö]ÔSêB”HPËšO]6÷ÅGO'›EóZíßx¶’–©,†EÈ2îBÐ@ͨ¡d6H…*ªÚ‰¥OCEžó¬6E Ó«JH}U„žÃ—;sï…9 äêº+eæ•#ÜúÂÎe—öʼnÙ²[=­Nb—+tJzéÍ!‘‘¾-z·?Ï –U@L{Êè£u2‰õe”æ%ð€ËT+oªÓaE­ofÃb(ꫪšHRë Ö™éÍ ´Î… ŠÑT³Bí\zBEä?LPE¨þ ¸üÚ§ ÝyÊÑÙy¡Jˆ¡¨‹IE9bXÖðê×Ñ€3Ú—Z‹qÂÐÀÌöT½äîöRÌ3_]äÀ@8‹˜g!÷‚”’ÐÀÂpóÁ”EÔщÂ;G‹ IÊë{G¬À&Ï"è!YÛ(~¹÷þš¡Uy5œŠÕÔq‘C\’B«—#ZrÕkãfŪQFŽ)kÀTã“Ú\“{J>”ÛU’™³² “a¨µf/T-2€'Í Bé½–¢»-y[Û‰Š²ÄôYˆ¸xô¥}Ä™Ö º³–“L %ÏIÌ4KŠ]¹™À˪ª#ئËÞP£S;d‰ä²›—HWÝHÅug-&™@ÅÏIÏ’TÕ¬³2«.ª»Ðü=é 4gÜ„;/W L$x48ñíjæ,ëq&Wq0› L ÏIyÓFLØÉ$Y^?i`dŰFÉ2Žz]ì biŽDü?֜ٻפ׊fË¢^« ì©‘Éã„qÛô;8<[XaûR®ºG±T¥Å$Õº¶—w4 ·—æªÔ.t!fl³mö] Ø+†ˆblÍ“|§Òz*hXrñX”fSripE.È¥cX+ŒÇ$¢â&…)Þ †Ÿq\PÌàp1âÞMUܨ¼!*¤‚sq@„¢9$Ù¤9Z½öÆ‹\Q†Ñ/ØŠnÆ;Z0÷+îŽJ©fTCpœ !ÄSaÉ2yÚ¦!ÍsÉi°¡®†õkY€„K¨kÌ|É- VVBqK­enC¶Ÿx-‡!¾ËzE¹18f½ø¹ŸË­†àVOà†b=™å4›[ ”5ÂéD-9ý¾0€:-sy‰ú,¹«:iò€S#i­^dW9§Ù¡Ë¤¨F@Mn².號¯¥T«1 G»DÍÆÕ óZŽFÌ2ðŒÊ>ëéuJÐ_%%R¸‹„g$ØÙX8óS 0Œ† 盩Ùú¥Wºßß­½ ]Ô˜¢E·ŠÏG©Ô3Iµ³_CDÕį¸J)dˆ¡ÆÜÍ”pÑtSÓQ†á8 Êa ÞR@*¨ÚÆ:x8ÞQSSd;îbÁ )vâÎÑs" Ö3T5=*’AP÷‚Ty­±K<ê7rÏ4©p,É'eji:æ‹Âð÷y²’dB¢9Þ ×3\4êúh×¢°$' ¥ÕÁ½•‰Z‘L*ËÇÐoKŽú÷:âfLáÌuÙª-K+0”xÄi£)ŠMõ[5ô)ÂÓ=¨F&3±ÔìÜÐÓ²ót¹o¯°w´™w\ YYÊ&â¦t€ª®x;(qÎB+¨F@ MÖEý3õàC”*ÌCQîÑ3qµC|Ö£‘³ ¼ã2ºú]R£tÉIT®"ÀáÉ6öV<Öc:eÎZwù¿Iè…py…bÇV°ûˆá†¶5ênÞOŠ:Fò¨£½îŽQeê診)@:± ç3f“kC%Š*¸ f²$ Ö³[b–yÔirÏ4©p*z…ji:æ‹Âð÷y²’dBª9Þ ×3\4êúh×¢°$' ¥ÕÁ½•‰c„ã„áhšˆàÞ’;¸A\£xš‹ƒœá™ &˜Å¥ÙÎs’H5¢Ù’eE¬c‹Ar.…Ú¡ø 英ãF÷gÞ'kÇÝ£‰i@U]š±áyÎ@’O%~”Õ\®9JQ1†AèJ7X—²e~<`J³ý÷v‰›¨ì¨mj9›p«‚¼Ã¿»!õ¤ªÜ¤ªVà4rMo2¸qØ©‡Æží9×nÍã½ñ[ë«ÊÕ_n“JUÏN\§4›[1ÙNdí³Å«?,²(XÚÀ«íj–=ÝQâ©"ÀWÖ bRcÕÃ)ÊC4Jc°žõ\ŽZ„¿2BÌ7ZímjTLNiy‡=<ÉÀh¨IvÊ0ÔÒe­ÃÌ~„Æ•ÎÞ­s0ð‰fó¦p”Ù È ïK­­K"ÈË|Ù„îËŽã|jö¬MúàYؤ)¦RÔÓóh“zRÑÎÌÐÞˆ‹£-ùf|%».:=ñ«êñ7ëAgfže-Fzå  ÒºÀoEZ° Q1†A÷ AÓuŽtÊüxÀ •gûîí7QÙTÚÔs6áWy‡vCëHU¹IT­!Àh4äšÞepã±OpÃ|oµÍXiðŸ©ZQ!¦¬N\Ã*¦€$ÚÓ;FÁT†œå/2BÈž«Y­­J‰‰Í!0ç§™ ¸  .ÙGŠÚpoå)œ¹ò_™(×d9½ÿ[#eÐ|Fîx;T‰VÈæ¨i¤sÌ{ƒÌŸyÂf‡]•›ÛFÆÉùJÕk'A§$è-¥M—¢U„ZÍ ÌŠŠÕËi!r0È}$´Ò­S¶Û(x¶+feY2 ¤x¦Ô»½>c¶±Õvß¢Ø UbvŽÎÎÊW[ÐhΓæ3 œG"—ÑÍ<¦I© ª93h®Gcá½]Lëëýȇ4Õo¨[À :h„ÓÓ™÷„_nl-æñ¸ë«•ÕÙÄÚK9ϼ®”™Vœ¥à*]&gÜHéwŒ5HCP ÃÌ;€{ÁH[z•Ï6ÍŒJÛ‡f,™‰Ï馞¥`)Ë#­rI :øS*X©õG# 5‹;A|YgºúYÆz3&¬yÖñËý$hºÉº^ 3žT—½æN¥ÔêÈr˜‘Ÿ ÏôîK&at§íq”&Ôébw.€ªeb¯ ¯z- ºÄ aìÌf!<Ò«LãjP×ûS½¡ìµ{µß»ÙMMÛ5ñ–QOˆÙŒÆcï¡P¸Èõ{;Ø•´¯£9‡ ¿0zHµaSvÙhÌ뙎éu@`â>a)P`í<é„X>@Ý*œë•>@Q D:ü#b‚Ö‰‰O„ÀˆÓw%šì§u¤oÈWJÂQË•ìÂE…j¤Â4ÐqÐG “­¦Âëfº…*V¹Qó!¦ši*ÄÒ”Cñ  ]±‹}2²O¯*pÕ™fd š¡×0§Î(Wê´â×à<ÁC#+.ÔÉV†ºî*Ÿ´i˜sÈ'$(s´Qæ¶¶feu4-¤¡”éôw ¢•wi–’íu;hbY~Ð9€HÁ,ËÞQb™ÈêX¼†n¹ÑâÔ±±¬ËÖö)éÈ9y€˜›æ¹s^ Ô:ÞPP³#rô³H u„öE„9@À3Bi¡ÕX<ÖhWNÐDDû„â–H†lÁ¼Ùk+îÈzj Ü'(̦Ì9¡K\Fɦb 9È%>ô!ÔÚC ¹¢•Iu¬ÚØ¥DêÃ’T¸*“{(»jñ^¶¹H9rf¨¼PŠia-‘Û=¨º¼›õHØ0’Ÿ©¿-Áد_{9&ŒTXHÌóhÿ®K|;e|±û\¿e_qµµÚë<,Õ@¶Ð1[±ÙF÷_ÑÖVL áÀŠxV«©ef¬8i§=A8ðÝ¥+¥âãá¹ÞΡ×Z†•ߺ홮 2C&`7Ò«¦ûÚx¶«^´(^Ž¿žxĬ_Aú&¡]åtËPbˆz¹é-SÌí|V/+ø¿[0;_*qJø¸ÆÛÅ·Y[U¯Z/G_ϼbV ¯ ýP®òº å¨1D=\ô–¨ìÎ×Åbò¿Q›õ³µò w˜¸ÆÛÅ·YS|õ–óû¶ÿ61Bžï¯;Òeêž²ÞvßæÆ/èQÄ)é2õL±öж·ÂPäEâÝT_(À²’ªNS—ˆŠÀÁÄRŽCÉ!ϱHéäp-'EV,1–£ ÄR‹m!fQ˜hPE­†væ…D¤ —,$¢=•žòjúoÀ¤fKwT›Å§é¿z‘™-ÝVºÅËŽafrHJÖÖB’ŠE½-Z¨@H2–zeæÆòiïø=I9’ÝÕÁ§é¿z‘™-ÝW›CcBÒÐ&Ëд:îµÌ"aÌR¢HD`3.HP@;­• ­ ‹HeôH4”FÅzo‘˜ÏÞz¿À“vv´%Õ¿ì•wG6<ìvÅMpL=hÛò7W@)pns(¾™J°Füë.‚J„O®r—hA>k Û²ËÄËXOõfÛZ­^þzó`2HaŽKÑ®ëßÜ¡P\ èj†¢K@Œú"ízUºWîã5ãîÌb.ÉQ¦ª &pâªeÑ;q]¥+^è°qqÚ±uDê5pÖú½ë–,y8Ó;(;išÆÇmºYX5ÙKñÙ G ± ÝÚò…ß|î «oñG‘zœ@²)¤NrKÔóBÈ}fÉšŽÞÈ×Jç·/'ö2C!¢ÊÓÞzªòIé…ÅT³Tµj¡!¥,ô•y…µ¼Z~›ð©'2[º¤ƒOÓ~õ#2[º¯5í I@šAèZwZæ0æ) Q$" 0—$( ÖʆօE¤ 2ú$J#b³“Pû¯À¤fKwT‚ÞÕ!Ïð©Ö¦ÝÕk­\±a„Ç4ÄR-EsXI RHP‹ÑRÕª„ AÌ4Èjµ­­äÓô߀=I9”Ûº£Ò>ëð©’ÝÕ`½±¡ih1¸yä “Sº×1µ  PQ›$!ºÙPØÒ¨’eèRŠ#F•žñjïüêIÌ–îªYfpóTfVçk±éú£½Ö鸢=£-ëŒ EWd Ÿ‹]4áÆc½žöúšÛ·ËÈi¹¾í·+ª=µ®õ´¡[ïzì+½B—.X°â&=Sç-S¶ëEË––B”’"ôTµj¡s 2Z­kkgy4ý7àRNe6î¨Ç´ºüêFd·uX454-UIÂ:… ?™"ó¿_ÑH·huý…sµlðþiŠ£‡>øÞÏ8pX.TaÈ«ˆ-cÄu€Ut 3©ÊC’|ëÔðà–a•²fïªÐrÖϺ—­ò[ˤdg1mxؽùR‰2Ù;éé @Íêíèóб÷ÙUÖò°çÌ chYS,æ Ø{R6I3fѱå³w¿pÐw®a‚{ãÌ6_|ºoïµ”i Y“®jk‡-~¼UÑpîèûB‹ð€Xq‘dQg¬¥Í' Ç=á’áò´îs_Š™°øf´–Igþ$(2·“j’µM(iÂ_R{¬ÅÊÑ”<hOP §ŒE²9·–_[rSSI m&ì÷óMáÄÍ#à ªû—?è°€ºåö~kuþÄen…Ï(r$ß,ŒÒƬÂ\áê ™ª» 2—%؉2ækìsÐ, Å¸È#ž<„û"Áº»;i]OUíh0ë™ÀÒØÎ¶3Ä=”Ð&dÝÆ-S¤@j˜”$AŸ©)ˆnRmÞ¶šVö°ÀcæÄ†¼CL<óבÕ0Z ŒaèÁ­Ìf¬P³ÑÖÝÑTÈSi1Èe¨§<ìá8´«U݀ŌTUwäHü§Cp¶\{ñç»ñã7 %Íæö¡uÛ@VS ÅÔÀzÀ ´ ÌôÛÅ 3l¾Ùº®cNwݨ^¯£Ô\Gš½‡^¾êê˜ÝO§‹¼ VFŠP £Ï¼½=½ÀYX5îj’°Z\JÌR”*Ð(VöN3–¼r·k–E!š¿Ž*ž9Mo+CˆšÀíR( ë'x~÷Ìfr¯Ô£/æ¶Ãš–Þ&!¾àfI;¬‰'Rµý$(GéúwþébÂÓ^J[ÐÜ]–ô¹ÄóÞ8ïÖK›½ÕZëµb=uîcÕ€Ñ)©Åé¹qCñWìóVþêïЮŸG¸¸±›­ûº(Ók[ „Ì«h1‚]™òðó§{_CM—;IiÑIݶ‡2ÐÕ0L(WòE4;’ØÎêÕ9’Ö"0 †f2¿“Æ*xç¢Óo´¸•¤†(´RSHG„óúTqœ£ŽFª4ø}<ž`kh¨ !Ð^^€ä̼ÖeîvéºRÈ= UD!²Ì ЉµæõyîhmÛFô|ÜÞàï**®¤ YYÊá3˜È‡Œà²6æ‘ÞËvºßZ¡¦ºø.œ>‹eÆš7;ïݹµ1…l‰kÎÖ¡ÇSž%¼‡_øÕàeˆ D˼XÇ“‰Å)êóäížI^Ê{+3o`Nž°¶º{¹.˜ðæcZïU×N 6é¸×MVÛ‚:‡!hݱøðÝ8LXsºéJËìQä^°‚%,€Å6Uk!Í;[ÛMt¶ [&mzeçDsûSƒ+#É»2éïSv‡c€›¦ÑmO¢ñ*™ãÛˆÍ8Z¸‰Öª™Q‡áÒ©‰ˆíœL£> ñŽ`Ûë¡£¡[p£ŒÎú1Dùû•D×jQ2ÞÊêe§ ±ÿ²žïBó9³J>úŠßO‚v†©Îb<üÀÉWHâ¨é\äÇ=}:¦k4!®Ä ðmAÙ Ïwc/|jæòŠgf¢ÎtKPÕ8{Oèxgb2æªÒës];×N136"jÿ"¥®2ƒ"[R‡¡(>Ô7ÆòÄâZ÷"å8;µB°¼+•Ò`ÈBšy§Ý¥‰ƒ $øˆ2媻5Èi^íWLx8¥™‘Ç%Þú(iïü‚Ë2ˆ\ÐÄrÛ5nÇœ-»Á{²’,¾ÄšEëq)dQÊ©ÎY&ÿ*Ç$¶!™²f£·²:W]9uXzâŽBí +Nâzß'ËL€á8vËØ¢çe©oåx.¦]ƵV2íqU­ã1†Š*㜲œæ˜àûS6$áä‡._hæ¬9Y½´ÚÖøŒ#"ˆHÙ®öõwÖ=?éÙ µß5A0í¢ïØÝ]¡Á¹Ì¢þd¦ñƒU–J„ÇÌs¦ZŒ“Ÿ Û’IžhrCÍ×u¸Ø :éÝjÒövWð£’ßÒ¼wóM6eí1/ƒÐé>¥»Ë<…Ÿïºéýì§Í:1}µÀôþ]/|Ô<+§5œ8K§Ö{åµ_ÅTÍ-M Àe“ÎRüÉíæ½WžEuï¯ßDøâ„^OWR¦‚¬¥­¶ u²È£ Â xêW@øµœƒ4énÎ{íø÷/2~ÑŽ–nÖûGèÞÚV¶tî÷-(±Ç¸pìEx±Œ4{A'”õ@rÓšRXøtÿ¾k|&/Òmì§#×®œª¼}É™2]ŠYbq—@íA×îÍႽñ[ë»ÊÕ_j“JUÏAÑ8;KéxgaóUÖ»ìAîèºpxG˜KW_’—¿^Pl%f%Å}.éÕ€ZÇ»°ËAaxVÞÞT`ÈKMæœE‰ÅâcÄb#áðî…‡fÌ+–Õãvº^ø`…ÑDìÙ«‘GÎ×¶ÖQÛTi«Lè{oiŠ[«¨tV©U÷h¥8Íaµ=2É…Ùà †FÔ‡ÚÖö&¹‘±ä§´qG/ªm£o°_~év·Ž#ËO]ºž»Âc§uu®îµJ¯»E)Æg ö§¦Y$vg &gmH}­obk™J{Oqz¦Ú6ûª›ÙõÆZ{Ö›£ÙõÆZ,&Bì-E(˜Ê¤ûàE¨-!x¬VrJ°”ÒT,P‹2*XbŠY€ùЋÛ×õ/Æ‹ Ù 0 Rü`E„ÈQ€kú—ã,&B“ÕõÆXL…b±™¡_m\½ðE¨"·^&)©6©*„[,ì k”‚Å*j(Œ€jZdéØÓD­Ù‡‘âÚ{­»êŽ_ZWÒcê­èstø$Ýÿ[þ9}hô˜ú§¡ÍÓàÔðúßñËëG¤ÇÕ=nŸ»±¿êŽ_Z=&>©èstø,)«TÈÚ€~³gcªü4Œ൤2æ?wô÷ôÉ5ð¿Ù`N–v ¦ãKisEööÓ¿âlu’µQ|£bWC8¼DV &’”rYðÍ>/Ø’a0\x™X‘¶½úèN_g¯Å{óö‹eÄHïá{»´ÛÖßôÑA!†¨F6²Øv‹"ž‡ôo ÍX{Ç´V€€[«º ˜ÕWÊIëM# ‰’xÄâU‹ ¬¢€³½ùu\Qº)¢lR».[äMÙò¯Õ<ÙãÖÎÞµ£Ã틺íîÁag’öû›ƒë8€Æ™€b !^Z'>7ŽŽH&kx®fkÙ»è>ÁðZÂø\Écw¨U¹ç¯½TÑÉÞìŠZ˜¡çÖþvª¤T¼°âÏ}2”MÕ˜fZF¢ç­3æžþYÀù[•ÚØö¨r7Þ¼éb }Fë  X>£øÁëM…RÏ!@°5ýK)O´°™JòX¥a "bJ^t•Uæ„Y+!ÏÙ ¡©šLZŠ«!ýð$XVÊVX¿©~0"Âd(À5ýKñ!F¯ê_Œ°™ 0 Rü`E„ÈR Tüã,&B”åä¿a2`þ¥øÀ‹ £×õ/ÆXL… °5OÈþ0"Âd(À5}Gñ!J rò_Œ°™ 0 Rü`E„ÈR Tüã,&BŒWÔa2ŠÆUêó:¹{à‹P[KÄü›PIPŠ„@B`)n£÷ãÍ=ÊÇŒŸ.¸öjÄ 8hÝž\¾ìÇßõ $TÏr¨Èo'1ÎiåÁ‡“' !qpÉÌ÷œÇì]ÒÊÌC3¼úã~þ‡ڠF`k©ùê ÿ z–B“ÙõÆZ,&BŒgÔ=h°™ 0 ŸQü`õ¢Âd+És:åS¼$¥çIU"––A˜÷w¤yŸß‡4&†º.„µëFƒ§¶2ºŸX€ˆw&êñeÅă=7¹˜¼4ËÝJ|¦ òØÎÄÄpÍö8™µ^Üút^Ö'øùOµ–¼”;-R³–HÎ7Â<ÙEç¿;´ÆÂÖrŠŽ­YJSÔ Ê^ Êsfšá0R`$žL4VL¢÷ë½Öüü4U›ÜS"»Qwίd›BÅ.ø‚VÆÝøDyx–í3å⠬ꀠV‹Ò–ž.ÅÜô‘Ùx)!ys#à·˜¼ù´?e·nJq“‡°î#¹ªüïnêT‘ØÂ7?Œ ôÄŽkÈÈT’ÈÖÍhn÷“Ì× Šo+Y!53Vb†E˜Žb…6ÃHÖHMWró{[ .#èbMiî ­Ç’·cŠy¹œ¯=ôK¡Z¶äÊp·GFULÚJœõM â…7~KàÄâgló³&K­A¼ÂŽÛmÎ÷NvØòsDXÞËbpò7fï9iª?X2œåTǺAÞ7Ľ’ Ù®¹Vˇ±°ØŒ'¨aË{»0ï¯VÍVÚ&û][ >žÏÕ_´­»»`À--Rzà ²žžlÒ1<'—9®é\¶¥·e ^ÃIzØï#Mû´è¶£ë¢ÐáÖ—Óñ¯ )¦õu7H*0¹¥TËp¤  溄Óçp¸i0“6(Fh-=N{]˜“î_[,¬Ä7ˆóO{ðm&æ;'´µ@µž¬¢-@y¹žií6'‘t¹xORöð=iýÿë æàö¦ì—ŽÓ‡4õ³›þÐ¥øi¢ål®ôI qéCÆÏÅK† yÃv`0ÈF;†™Ç(?v‡RëÏeÔ'WAÆ÷^*)ÐSƒäülØž0Ãð¤úyƒª…V[­Fž=Ë ¹‘ÄcÏŸF«ÏßöÒçŸö?ñsùã?ËO¬à?j^9‰ÜÂCÙ£&0äƒÿœgùiŽJ.<”Iüçx¹›0&k…Áîk(òåé¡n\ÒÓEh¤*«e¨Ë ÛÊ ˆ[°NÖl@.]vsSS:Â"€ˆñºŸ”ÓÉí¼<¸Œâ€[VÝG3·Ú»{>VE;_! 9øiA¯}NÓî@]i½.ž ^íûì˜o2•<Û«NåLÇY§ìœv+³eÂaðÙ*¨gíÖu'Ƭ®Ø±3ÉÌ™Ž·¡©G¡Gëü6`‹¬ùö×—‰‰†ìŸ]ŠåýaCø#Æo0w'«ˆÿMb‡iEŠŽ/¥˜Øú44¿‡Šæ‹= ð8ô¯¶Ïàš­R׃YÔ>Â[ד§yã™ô¹½h)Õñ €Ó(ðˆÊRh›a;Ìv"gÇê»%j5¡¯=Ø[·›×v`TNwâ©xgL¥‘DˆB|´öñ}‹Ž“ѲÚÜרæ+™î^t1¸yXãDד•~hYý,˜t˜Nõ_ç2zß&âw ø~kŠïtòŸØ],ê"œ;S±«³›v]Òd¶ð$…3šKð†6„óéöuÙyx‰1œBèÛ£yXõï¿úrïß²d‹7œ; “ưõ^¼øËŒªBQ¼9—-e4ä—†=Vkß×ùoƒãºäŸKÙºµßÎ÷îLÉ’íY+ œàRê(RšV$>¥Ä ±žõ­g:Ä(¤`dëhŽòºZ8^õ¼|I/×/È«ù)Lå@{º¤YÄ' ”Ï€ÿi'ÉFr§ˆåçÒwç׿’'©Ü£ˆþ¨é;óëßÉÔŒîN#ú bg콟ù"z’s•&GõZïõ,ÏçV¢é±_ï„k˜‡ @T³€w„#‹}SšÂ«ß﵌å2¬rÊe0‡0úTƸ® ¹%–,;4æšÝüt䬕‘d>é6ïw¹±ÌÊ» ƒ’¹æ<"!!y;L±³Õ× giMüA/ ÿ§+]_åÎ÷îºXôñÛû˜þ|o’‘Çèyªú7iÿù_q¨õÚûþ|o’Ž<CÍO£vŸÿ•÷“§®ßÜÇóã|”qãúièݧÿå}Æ¥ùÚ?ñ_ùñ¾J8ñý4ônÓÿò¾ãP1ã·œ/üôß%xþ‡šGí.x¯¸Õ¡¹]ñ‹˜ïgJ›–ÅR†Z„næ`)xŒ 0(Œå’VHÄ­ÎÍ?ч™âFá1GÖ>˶ÍZ¡¦»îžv=±š…üøh¹s³gE¿^”3*À1db§Dù.ØíFᑇÖ>[wkø/‚kÀšM¹»ý”~ÕÛ´;p°ó’íJ°áñ£Œ¦">èÞqO‡Ó;D»Ñ›˜6¯VöÞº/¢2p´×‚qZÀÀ̸U-wP°² ã'2YpÏv¬7ÔsÔl¶‰Äúñ»É (wKõ¼•2rS/Øó]9æú~A-ÿö¼•2G¥3èy¦y¾ŸBÆ6)"Ó»¤E“¤o‡9j["lÏÕ}Ö»Ö…fÙå.-Û¹"†GbÅ…)˜è,æ&½6¿ù÷ #ÄÄ^ÆŸnߪÍÒNiÖv¸‹mKd(ˆ!µrt®ªsñznŠœæ1ª1Ì:H4Ñ?Cì~Óv%¼9†½zïÝ¥/šÇàšÖqâØoâªx Ú¡…z·)¼$ø P„õ(æ—çO©‰µëæ²,‚ÎêD[ñ_3]ÂÑ]ÙFžüijÕä›SÄr/‰3xúz•%#9N#—I_¿_~Hž¤grž+ú£¤ï߯¿$OR3¹8¯ê‰_²öwä‰êIÎä⿪lïGyÙ!QÍÿÌ%!ì–AÈ,c)P\_£•z÷w®bx™áƲæ=éÌáF–&:4 ›Cª”8L ïZŽqJ‰ú@f ÒÚct[†ðÂßétEûbüJ¿’”ÎTqÕ!âȈáIžþÔOR3•¾ü‘=HÎä⻪ôWD$ ¯í*þJ3•G!dTÿY*Þ—ö¢z‘œ©â»ªÀbgäý›ù"z‘ÉÅT'~}}ù"z‘ÉÅwT¤‰ÆXhh½T=¢PRÏߟwÜI#tâ¹1Gnå ŠEìÄ®ïéÕÔ#F… Íï¤LÐ}uWÇœf6AÎnh«C¨'h}3ÐCœ»Ó8ØUc6ªrx•±˜Ô:¬u,€õwvƒ¾i»Ÿ®Šåæ¨$é|Eûcù%)œ§ÝWšÈ¡þs‰ŒÝ1íDõ#;”‰_ÕcÒwï×ß’'©ÜœWuGIß¿_~Hž¤grq_Õz3D- MKÐ1jÇBäIÍ ùsä–lœŠq]tå ŒÝ%`lŒãR…ƒwÊæ3æ˜È̺…”‘e6‰Ú`PȤ¯FåWÅ÷ ê«´QÌe)¦‘4Är»ë!éSñW+]Êì« †—~bYŽi%æÔ™MÚ:_Ž[Ë!þÒO’‘œ§ËˤïÙæÝù"z‘Êx®êŽ“¿>½ü‘=HÎä⻪:LüžmÞõÑ=I9Êq]Õ*ÆõO†31½Bµ§—ŒOI û%0%ƒ³ ¥Nbý«§ã ÇsyÙÖŒJaÌ{þæshÒç{2èºgˆyß Âdx+USÝ|ÄË*7ް!(̦ä Õr꺡nAjÁXüz˜â"×1ï»/©.VĤÓÓ\LÿÀ/©!FêJÿ‡c÷3¥sÉäÇpʪX¶ñHÊ¡è=D­•Ê4/§§×2Ÿï êB­¬Ô?^¥˜bf¨P\ýùd’ )#eÏÛVB®¦eÊâJ›‘YåÉQ†Re.f4»Ç„ Yz®I£ÐT€d3H'9\á]û)B®¥ËD/U7¬JŽ˜,!»#æ C’tDÍmtBÊ9Šè%Ïç©Ä"”FAA}I¹6ºîמûz}uø…õ$(´o·§×_ˆ_RѾޟ]~!}HKJGÛÔ†•ªF ì¹~iNb«Ý¢!ÇtS àut½ÔÌÜU€9L Ù/0JHܢ^4ß’å$ã\F†Mì"d‰c"(xû \ïƒ<æCËAÔ¡¢iCŠÒ6f6v]p¥êµ˜¬NÃa™ ¢¾Ô§˜æiˆæ">úv] ¾ÍPI¾^r™šeÈx êJ¨Õn?—Ä.g²×kÌ× jiª’³S0e˜B—zBWDl®†'›I¨em¼¸Y%cy@Òl€&4&«Lo<„¾¤)MqÓ+ ^àX툋|Q• 3 x€Ã‘e>Èk܇z•$õÆWl¸Ö%wÖùZÀ³¶®S÷ÊçïN7 4¼òÒݺv²·ÄQR¦&AFžœæÒÉ;û7 Ç–ŽÁFÚ®—aj`r3ƒ4>Ëqwýžðƪc>É€e)4ûA ¦EÖ¶)‡ü³±Pœõ,k•SÐkurÖŒÃa¢®¡èq÷ XµCñ ä˸¯™ïHz*h—ˆ‚%”ŇšG"³ -kîTrUb³R{³å9rIª8ÖªK`F2¸åਠÂk¹å¯Vtê—÷Ñxݶo³f?ñÿØ(°féȽ¨@—»$›P[Ñ=Á0Ûd@ó2•&¹gWå—Èî`4ðÌf%–I¬M —ŸÚ}¥ <ÎÕÇa×kÖU«N"ƒ-ðò§[)0¸iá–L繨À&᫊¬Ã>ü“Ò“ Ç7+9/„ÁvÖ& O¤<æÍ¸Ðl(l4TËÝÞÖìx¬aoUr½T„娣)„ÃO0‚y/ii¢¿GÃb"ÄÇňÛOá¢ðÏ=R«}y©Å•-¹‡"’ªXq—øFëƒùoðø¯#ÿòx_óø.šØaaÇf(t‚t…(B"y!®hD!:!ÈEšD!D" ÙB%B!Ú!%ô!G©2¹våŸt’ÀÐUs©iÓ”¥”ï^éRõiU®ä·õ¤-:e¯ééB{Õ²͉€g`?éSgÉI±Ñm<ÓLqYkÆjc‡¬‹q<ÖQrñéJû‰ÝYÊ4À¹é9òG%W9§fÒ¯œäó$,ÒD"щSœÁ¥÷æ`Is©«7;Z[êÍÔWÒL'魯Y®ÌÁ0—*­k¢¶F°Fª+ŒÙG£r;%SÞ>T†âV°ªìå æZY­æº!‹?¬í“†Ô¶!jQu¼¿¢(vÆ»Z°÷-ærWK:²„ëÁ#C0ä’Aµ2Äâòàó¶[gî+üäÇý*W)TàIÑE-:Ìã¨[¢÷î#]b qJVUE5VsJU—Pæ‘T¨æn¢e)y¿2 dŒÍ[B•’•UeïD¦édM®ªbìáæ7ý!N•èQOR¦VþûnŸã¿êN…fn‹ÿ}·Oñßõ'B3ÚPÑÕ ¼Ð„U†Ô_°cþžíZROac/°åÎ ÇÉqÊèý—`¤÷ÿë't~À]ŒöB³ÒVÈ”ýä"»¬†…_6zïy<ÝWíK¯kY~´*’ÃrhÉ ­˜ÐE•HÎ|¤’±(B&xçö4¿üúeK(þ ¸å8ëÎV¾Ê¿²VÏð?è¬Màæº"ö\º6]J_g•0B‘HÆ7OWnÓ­ÕáÌCðŒÊ3.Y€Ë’Úh´œP4Zøtªy:ÝW싪»YˆTYÈD£‘0ÐA 4ž,ÙØñf´#AOÅ2¶ˆc™*®…fZ¯Œ£0ˆF)hÖŠ‹Æ,ê¢÷³*»µ W)VIˆÈ¥8€f#1îϹ „QMKûT“Ù+‘í[özÝü_ýYS–_l®lGó •ìß›ÅäÖì?b{]ˆ-î»ñXŸdþù®¨gU¸ìº{¾ ÝòØóÅÞ-ÞK•Sv¶È¢ 3A§=[žYÞÖ?(ÈKZŒkœÛ»æˆJvÆÎHÁª†píª0[¹“c\Ì B³ˆæâŸpf”–waÝ•ö ÞÚíJdk‹Bc…îÖË.‹žíLÕ¶°`°««0]Ö¸Jq”ä3ù§L²9³FË nþÍq°Ü\6R·ìå¾ ¿ÆÎn·N¨ß {zq'k*e®ƒ=‘þ‘Œ‰í_!¦ßjÙ‚'0¸³nõ¡ ª‚šœqtLÓÖÄÁ‚Wnñ\u˜UŸ­ Ì@ ˜‰yLÍtpµú›³C»’«nkž[ ®~ô°:˜&.µ¥– Ýlk£«x®[ˆ’¡13 d$'4´æh sÜû:Vƒª˜ÄrÊКo{°CqöÃî.î{›Õ¥Ëå€BñTSHŽ@3Ÿ›;µòE#cæÍ|ª«þÕ öÖÕ.fÚC'ƒ·?ªÑVž?n{mýò £Ù ±Ÿ<^Ì AKYŽ?¥Ì犀Ҕù& Øµv‘²ÎI+KW”pÑeÖŸµGq ¦tEèð¢ù˹ZZð·dEëÉIOQU”ù%T¹M-¡ÕlâÇœÄÒH¾ÕÜqd/kMŠ7SÎ%ÜØ}G[^à :À $R¸©ÖA9"÷Re¾tšaKJÿÑj/³×Óïë-ÆÁ†þëÍaKè3y‹Ü‘zR«dõ J© HY¬v¬Æ”åÉ š²qäœl mý¨([)N¯ú£¦øæß%âv!÷ìx‚IŠ÷@¡H0sB‡ [.ǃc¹æ­½mÓB¹Ðz@e0†a ŠY,9›ºÏ‡ŠQm?ö¬†ÑÌxyVëWpð[:ø€ØY%©dz‹<ÃDî“™´ÝÈà¿Ó$bks5»r»ìlQë½*Ð'4óî÷_fÚä²B•$†‡ý΢Ÿµ?ëª/å?Ã⼞ÿ€_§ö_Ì£ñÿØ«½Kk> J††;ÐUT†ösаö¦áãÃb0ùò]å»›:ŽùÜö:¯»¢E-ŒÊ[T´3°ÝÑTËx#0—=aí\&+PÛ¿X›±CR4ýì¥ð=í,{®û—“¹£Ö­¦Š¨žS”ç’yý•Ž8K1·W¥×*òóZÍ…—½,Ô5+ ÷Å$Á_X%¦cžšç$èÃv„B&ÁŠ‹ˆÖÞ_X¶¬ÙÔZÍzh©$FøŒuuÒÒ75+hR¥R¥EUUåmim RXÛ ÿݬÑ$æ+n;ú¦˜âÛ­F-†œSvµQ|£ÌJé8¼D $%ÈCDfµWJóº¯ "#˜Í!f±0É ¤Ë4بëÎ}ÒÍν æ·Üí ½˜ø{óK0ÞˆÜù‚YiK¢vE·ÓÁÀ¦ŒZg Xvªe»¼©Í­XmáÌPÌxy%šîK¦rú®[ûR[]§B–ôþ‡áÈŸìfÃܨÀ³šŠ™Õœs:±0ñG1æ‡8Ú™fxqªðÛFÛ_îÓüÜÉý3—Nª/iV•GŠ™ ¾÷‰Y+¸ *’SU5y2s¤º$‚mUïsý¥È&3üé Ž-(Ô@Ð šŠ@ 2û²ó&Week§luð­á 3ˆ4^˜*Ó/vdëk»  ——@K+ݧ˜ ÷ÑØµ‘ó…Äáëêï)Dö¤:UÜ=ÜÐ¥¦Š‘¸BP›áT@ì‰÷»[4îØp+ÞÔQ'”,€Â:r–SB°-¨&\‚HTHa Æ^òJ™Ú}ìAt«w£ˆÓšºu‘•޲L¤}ŠXË£U¦ZåݪsɸWÆËïeet¬w£2f§IŠÁÖIÓÅRëˆÛB¹ƒOÀš­´!JˆB$0ȳ’šÕD-…ì­Ý /ñ‹³ Ÿ|Þt«œÎ÷+”e N2¸Uƒ³ËÌ®ø¼Hu÷`»÷“œˆ³ÍçMbpjèƒrM)XC” 9§@6º”– z0+u=¡÷›F ‘æ*Díô‰ð÷F‡V3T9r–¹É%hÓȦWóµ½Î÷Zîy(ºjUMjêJ `#<„!æ…Z¥$€g ‹$fßνÞÉõöªÖqwtTÄ= ÍÓUˆ[·£ù¹éwt-M Šº§MF”圧)ù’mTS#õ°Œ¬FZu”K9O˜$î©y.FZÁ¾#hl——”ñS)È KÌœ6mrJìε5ÙÍr²=›ÕÒ9îéùÉü)íö¶ïÅSúJíxSÂ7(H`XÜgú¹¨ò¿áéï§TžéôŽêß§réo„Þ}ýª&èt<Ü]hާ³6µFìŠê)©šêƒ2ˆ†‚ÿ u,ð¾3¡ÍðX†¹‘HÒuÓ¢pfˆ:CbQ³skÑ‘Àcž7žÌë䯫’’” SƒÂÄD}]htÓ¯z¿>7š×DżŒ}þ.ÿ¯2o?Îbÿ/‚Ê?å?ÃâSîÏA „%úð8gòT=]¾ÅZ§7hˆÌ±‰½š­0¥Á®É¿êVô êXö‡p½cVa#[Ç%µ©ë(fè¨DAG ×Ì)I¤øGǰ+¯^õxÙ ®~çܘbgËÆ?²Õχ³M-°Ý"±uñÌBà(dYº¤ê×.{CÃLÁ£üªÿ5›Éš=§ñ\§´ZÕf{0©)¦uw€b˳2«O7·=¶þù˜öB­SÁP„"ÞvUpˆòÏԗΤ<\½·£7ÃêFePÇÿøß|$èÜ7û±ÿÇ,õ£‡Óò*>Píÿïµ(CÔó‹ÿÍË=háÃôüŠŸ”1ÿþ7ß 3¾Ù]Ì ÓujN1®‘ \„§'€h DÁæ™K(hÈͺõîð[aá’i[‰Ä pö[ôoC¨ß0×]¶[{9ZkužDk+-LRć:J²œÀ¦N:'Ïö¿gz\}íý;ÇEôÝ•Ú Á’ìš¿29ZëxkhX1¹Ö­¡±uÂѬ”­5" ‚¼ÿ2~ˆìD')ö~kí™Á—XßäS Û¼,ä×ÿF˜|‘7î¿5§ ŸKÉ'‡ˆëÿɯþ#䉿uù§ ŸKÉ ?¯ÿ&¿ú4|‘7î¿4á3éy,V[Ì –Ê¿À]ý>H›÷_špYô¼“DW´TÀí:å oÎIM\—@&wRæxoôþ!äP÷mãÍsË&3Lí=ÇOû\n¶’òߥ^¼(f$ÄŠæQÔ¤žt€ê@O¾ì¾Ën ºî¾KµûOÒÜÁ óÛ»’ƒ»šÖ2­¨ƒê ëƒKÄäÙŸ*IJXZD9çêKgPVÈ=¥¯ÃêI̯ÅoT»Ñ›¿áõ#2q[ÕÑ›¿áõ#2q[Õx¯|3˜‡)©#:‚ûÕ«A½ìµh U–‚ˆHC/RTºÒïRšŒ¡nºÞ KG¸ôéøA¥ô Ù™ì¤áĺ.~¤¾d¯izïV~ÿ‡ÔŒÊüVõHg¢™ðþR3*ºQÈ¥Þ¬ýÿ©•¸­êz(—þ~¤fN+z¤ÞŠ?Iú‘™8­ê±š©ä©#?r©”uYæ§Ý~RNdl£™K¼ÙÿIú‘™[ŠÞ©ä£ôŸ©“ŠÞ©ä¦YÃêFeVõJGšÈߟԌÈÙG2—y³þ“õ#2ž+z¤’Ò~¤fN+z¬V=YŠ0ü>¤‚T‰Ùk4>BFjçÜiÿR3è©fû“S{JÖ¥€eœ¹% µ%`¡aÕ,„²¨O  Ñie>}ß.–AÑnêÌb€Ïáõ$æWâ¹YoFnÿ‡ÔŒÉÅoToFnÿ‡ÔŒÉÅoU‚×»13×ÓêHΙÁÙi5¾ŒbõD§ßþ¤Ú¨$îšW¬2Õ¢°ã3¹%“kÕÜÔvEµ—AÔ;ÿˆ»;åU=`H{óõ%ó¨i<ÖÈ<™¥¯ÃêIÌ­ÅoTonÿ‡ÔŒÉÅoT É›¿áõ#2qZ¼—½ÙÈ È&9þŒôœN`-çÂų*¢ÐQÊ_ù¤Z‹t×=DRªÜ¼¡ÆÛö#Êa™d^,„=Ð µ»_•^9 «Z¶b‰ ­æª‘û©Ë^â&âPWKgk·*fî´øm …©}3™hY–ÁKæo%|ÁoÐaÂ’¡jËø >J3+XM/KV‡ÙÀRÛÁÏÜœ%§y Úsí@b›dm]ÂíU":‹Ã)K´Lù¦n›¢ÍØ€=•V>Ú^-Çkj=g0æ2󉃉'UÊI&ÊÔHP¶ í.æâµ2ž……ÐdÈCAïI‚¤8´Úµa[emS2¼•̹s-{ˆ›‰AÝt·„)ã²Õaæ Å”Rq«?à&íZçÚv- Ã†(­s/ð|”› Ù‚ÒxZt8ÎC«ê0hZg˜~ñš9ª—ªÛ9 C‘Ø®³¥Å)éÞOJfé@ÙPÎÑ ÕUœHòˆÛ¯›¦E$‹ÈÒ¦.yrç’BôË9ŒûÒ‹4¤)€À2óËOÓ4 í-Xðm«>ŠÕ34jË>9%¨ý$û“vËÕt6s± ÈrÚó‘©Xbê©çÆ4ëÜDÔ=«n #u ShâÒ‰¦CÝv³ä¤æ\8äÛhðÒ€âjôËñmUs€¨ÄIlNå$bâ6`™‚a—y=)WHШfkGUUÇ1ûâ#R WÒ Ôœ#<Ê=Áܘ:BvX¾báACùK»$ÍbŸ¬ñìWL@­¥aéWA-xL;û>q ¡ÇoЩ’¿†ÒÊWNR˜HÙ'ÛIjÅÍ¢·•§%E€ùmBÉ!„Bb´åVA1†AèI‹Eä÷`c!L¹t§9Ÿé4Ar–¶Ê m ìW¼@±¥Yæ¯*BZp”?2|OhN&”¸mú±<“ p(BD!„BD!„B{äÖάª9JPÐ)›*l¯}àÛõqÿš¤f)˜£x6ý\懩Šf(Þ ¿Wù¡êFb™Š7ƒoÕÇþhz‘˜¦b”Û'åDz>ä=HÌS1Z#ªB„!„BD!„BD!„BD!„BD!„BD!„BD!„BD!„BD!„B!€&„E „J]ˆB!ÀB"B"B"B"B"B"B"B"B º!¡„BD!„BD!„BD!„BD!„BD!„BDƒÈP‰LÖ¸ å¨%ŒŽD[¢õo˜xǹr¤ên2\»ªåÞÏ®¾¤¿¤ËÕ2„og×?ˆ_R=&^©”#{<~¹üBú‘é2õL¡z·Ð>1ø¡êJ\½S(Zª×¬ À&äœm‘Ä#VÍ ÈB ÿÙtiemu-3.03-nogdb+dfsg/skins/ipaq_v200plt.skn000066400000000000000000003721341220314353500206650ustar00rootroot00000000000000TiEmu v2.00¾ºíþ :CalcTI-Voyage200 Keys89 Zoom1-2x by:JaiMezaCalcs@yahoo.comwww.geocities.com/jaimezacalcsÒÿÒV200PLTâPHP†r: >v"z²"¶î"ò*".f"j¢"¦Þ"¶"ÒF¶HÒl´pÒ”´–Òº¶¾Òâ´äÒ¶ Ò0´2ÒV´XÒ|\6zXˆ$¦JŠL¦pˆt¨˜ˆš¦¾ˆÂ¦æˆè¦ ˆ¦2ˆ4¦XˆZ¨~\(|N\P|t\x|œ\ž|Â\Äzè\êz\|4\\z€H&‚DfD€NBr&BF<BXœDºÄDâžRºdT€@’@’Œ$ÈDLtˆŽŒtÈD0ŒPÊr ^ ^ØDöx*DFxø2*Pøl*ˆJœ†¸œʸÒœ¸ìBJĈâÄÊàÒÄâÄRàNì„êÆÒììR N„0’Æ0Ò 0R0P:„X<ÈXÒ<X<PXNb„~dÆ~Òd~þÿÿÿþÿÿÿþÿÿÿþÿÿÿÿØÿàJFIF@ÿþ4Created using the Colosseum Builders JPEG libraryÿÀ„äÿÛ„       ÿÄë   !"1#2A$QVaÓ%38„¤´47BRSWbqƒ…¡¥¦ÑÒ&5Th‘£±³Áâ'6CUcr‚¢²ð (DEFd’áIXeugst“ÂGf”ÃH†ã!1AQ"2¡aq#3R‘±ÁðBSbcÑá$4Cñr‚¢²5Ddƒ’£%TâÿÚ ?èŽXú« Ïr½[v;¬Üiªr¸RK„ªÌnÑÀ;Ó²ËÅ,aX¥2™c½‚ª½–8Ùöƒý)dõ)_î{*øÿ™ìeŽ6} ÿJY=J_î{#ÇüÏd{,q³íúRÉêPâÿsÙ?æ{#ÙcŸh?Ò–OR‡ûžÈñÿ3ÙËlûAþ”²z”8¿ÜöGùžÈöXãgÚô¥“Ô¡Åþç²<ÌöN—Iщ¡öwÛ‘‹4ÀÑU¥×)ª“ GC* J!¨"<Í4Oà¨LàÑw°I~Ì,A{{aa>ñ8Vý ôÛªïËCõK‹#‹¯:f#x=ô~JÿJ4t”~HöXãgÚô¥“Ô¡Åþç²<ÌöG²Ç>Ð¥,ž¥/÷=‘ãþg²=–8Ùöƒý)dõ(q¹ìó=‘ì±ÆÏ´éK'©C‹ýÏdxÿ™ìeŽ6} ÿJY=J_î{#ÇüÏd{,q³íúRÉêPâÿsÙ?æ{#ÙcŸh?Ò–OR‡ûžÈñÿ3ÙËlûAþ”²z”8¿ÜöGùžÈöXãgÚô¥“Ô¡Åþç²<ÌöLPJ—´A›w¼!–þwÑ´yÒ¬ÊܨUõ ¨ zˆnÊrRšVê`ü\f‡éò :-ém(ˆl¼Íìí%;US6N²•j±LPT<"2§^ifË%[Ý^ŠG­Ï¯@£½–8Ùöƒý)dõ)<_î{)ñÿ3ÙËlûAþ”²z”8¿ÜöGùžÈöXãgÚô¥“Ô¡Åþç²<ÌöG²Ç>Ð¥,ž¥/÷=‘ãþg²=–8Ùöƒý)dõ(q¹ìó=“¤%Òtbh}öäbÍ04UiuÊj¤ÂQÐÊ€CRˆj§O3Mø*84]ì_³ ^ÞØAO¼N¿B½6ê†{òÐýRÅ bÈàbëΙ†‚Þ#Æ}’¿Ò%’=–8Ùöƒý)dõ(q¹ìó=‘ì±ÆÏ´éK'©C‹ýÏdxÿ™ìeŽ6} ÿJY=J_î{#ÇüÏd{,q³íúRÉêPâÿsÙ?æ{#ÙcŸh?Ò–OR‡ûžÈñÿ3ÙËlûAþ”²z”8¿ÜöGùžÉŠéRöˆ3n÷„3²ßÎú6ƒ¯:U™[• ¾´OQ Ã9NCªQóJÝC¬‚«ŒÃPý>AGE½-¢ÅC’ €7™½‚¤§jªfÉÖP2­V)‘ê ‡„FTëÍ,Ùd«{«ÑHâÕ¹õèw²Ç>Ð¥,ž¥'‹ýÏe>?æ{#ÙcŸh?Ò–OR‡ûžÈñÿ3ÙËlûAþ”²z”8¿ÜöGùžÈöXãgÚô¥“Ô¡Åþç²<ÌöG²Ç>Ð¥,ž¥/÷=‘ãþg²=–8Ùöƒý)dõ(q¹ìó=‘ì±ÆÏ´éK'©C‹ýÏdxÿ™ìeŽ6} ÿJY=J_î{#ÇüÏdé tšg}¹³L Z]rš©0”t2 Ô¢‚)ÓÌÓDþ „Î {—ìÂÄ·¶Fï…oЯMº¡žü´?T±H²8ºó¦a ‚7ˆñ£ßGä¯ô£GIGäeŽ6} ÿJY=J_î{#ÇüÏd{,q³íúRÉêPâÿsÙ?æ{#ÙcŸh?Ò–OR‡ûžÈñÿ3ÙËlûAþ”²z”8¿ÜöGùžÈöXãgÚô¥“Ô¡Åþç²<ÌöG²Ç>Ð¥,ž¥/÷=‘ãþg²=–8Ùöƒý)dõ(q¹ìó=‘ì±ÆÏ´éK'©C‹ýÏdxÿ™ìeŽ6} ÿJY=J_î{#ÇüÏd{,q³íúRÉêPâÿsÙ?æ{#Ù…ˆ.Ÿl#|'Ý× ¯¢ž›uCE‰èN©Z‘1¦q)tåTÇ@8:1ö~HúS£d³òN‘oIцaö‡Ûí‹*ÀÏMÕ×*¦£CBªL "›<Î4ਠäÐw°I~ËlûAþ”²z”oûžÊþ?æ{#ÙcŸh?Ò–OR‡ûžÈñÿ3ÙHÂ]-¢Åñ;’2€7e½¾­š§jªiÎPQ2ÝU©‘) GˆBuiÉ!ÒÉVÇ_¢ƒÅ«kïÐ.™Â˜tS°?W©²±¦äÉP ©Xbó­ò&¸].Zá.,•Ÿáû éÙˆ_Æ7cgl©ÊæX {³*êvê—t“63÷=ýçÓnjèu:—Ãìq[\#•og¯&úϘÙÊŒµYúàÔ5æ \\†òƒè¢g«LxÆõwã"2>ß;a¼›6ëv\ª®ÍIÄ8  HNrŸz.b @­Õd ´R]0ý|@ìkdweXîço/6r¢Èœb²d¤uÓŸ!@bßD J…‰pj+tî˾Íçóï5í]JÂÅ™ºÖ%4È5wK–¢›[ˆi³È'‰A³È*é4&«êpº¡ž‹Ìø¤äeÊÅŒõZxÖcSSP¨¬Â*Ç«0—Rúyꘜâé¸goô³’Kò•‹Š.Rü`p¹²ÔÁæ6âšÍã™U%3>³™)x³ú©¦xÜrÓoT¶”žŠ×LÉ(AA ¹éeïü_ç Ñø_­ ùÂŽv àûÍ®+„we¾ÖÕaϯi¦…ÒSÆALQá—jCÉ,d{žMôV.qv†ÔŒ ÅlX~Öïw·î}ú6{®Ò¶½‘%†h_vbn.ÅRIW½¥ÖuöµW8gU]@ 5Óeìú6ƒFM‰fVâ³_WT€8De=SCÄ n`.þi®`.‹L 2BB®zL{S‡ëcwRþrKg¶s±ybµK8e4È"@2æQø}]ìS"Ôå;ë 8]PÌ>Îär2åXê´¦³šŒ&L"#©„uSœ\lªI²’ºY{ßßÿù´nëB¼>pˆ ¡Oín÷„°ö½A×´Ö.÷%†}hï†\ä3’™Ù¬:éÝ‚£°¹êx}ý 9;¦ÞÅ—´åË•«aÖc,¸Ú4^ ŸQ*—rZB,8‹øõÿ¬ò,ªK€= " @k†&ËÙômŒ›Ì­Åf:¾®©pˆÊz£ž kswóWpŒ tZ`Y•QŠ.Rü`p¹²ÔÁæ6âšÍã™U%3>³™)x³ú©¦˜ÜrÓoT攞Š×LÉ(A …h„QJ¹‘÷í†dî·gÌ«!6Y‡DebP ;2ŸzmâBÒ oø­‹X(£[1ˆ#Ø­Èæ¶ÀóÙöŸY…–¶R«¤ÓÔ'j.hD kIÚôC\*K¤ÃÇ¡+±<1{C¥ö|›7ˆû™ Äp,¬æ0è?y+‡?Â᪈ƒ¡§LcÄùÚñ óšoh•,9uÉÒc€ñªÐõèååELYuKymøS¢%QW=&=©Ãõ±»¿©9%³Û9ؼ±Z¥œ2šd s ¨ü>®Èv)‘jrŠu„œ.¨fgr9r¬ õZSYMF¦ÔÂ:Š)Î.6U $ÙR)UA …h„QJ¹‘÷í†dî·gÌ«!6Y‡DebP ;2ŸzmâBÒ oø­‹X(£áRŒ`ˆâ¼B„sP›FZ—Ö|ÅÉÒ¤ªÇ©T7RÊ ËN|¦„r±z!®9@iÕ_I‰gBBBUF(¸]KñÂäZËS_˜ÛŠk7ŽeT”ÌúÎd¤uàÏꦚcqÈOM½S˜NRz+]3$¡!!*_¥»kbïݽ⻴=«ÎeïÉZ±÷Y…2•^šeÞšðÆšãu²|F7HÆGvïîvCÞÔp¼3·ÜËy«t®/^q“‰¡‚r—-ˆæÍ#Z¡†íÄê‡.õ½º?¹øCûµ~‡VÑ~mQë×Ê™IaùkT»”JDºüPh<‡êŽŒïV‹mDñëX²8Uß>Z=¸‡ <Ê`”‹<Ê]ÜH¯Áÿ½•í—Õý“1ô%Uvú¾×ÝrÑÅnn-ëÓÛu|âóó蘱+߆>nT\TÿEFùèq[ÛÛ#·‰Â·èW¦ÖVÏ~ZªXP1dp1uçLÃA8M=Ô~HÈŽ4Sõml?Þx!ƒx®ý Ïw/~K(?À e#¡­:s¦JvWè«–;Da4U¾Ø~ï‰òÝÏ»],1;R ΙòïBVdqjܦ””ZáuDÐûC‘öËš`h¦êšÌZ©05(€†¥ÐR­qi°  „E®TM´9l¹¦Šn©¬Åª“ƒRˆjP¸´Ø@$ 6!H'7»¬Žn‹ýzÃ×ETöÌ2•FååK>W?ÌT¹åÛ£ ¢­öÃ÷|OÈæîx½Úè¡a‰ÚNtÏ—z³#‹Pöå4˜Ñj¨AA ¹éeïü_ç Ñø_­ ùÂ’‹cgªˆ¡ÉÂûÌÞÁNÒS+6N²•j°²=APðˆÊy¤61VóJ[!ÚØêÄh}ç Enl«{=­ªåÌÙzqO\J@Õ ~Ó Aˆ‡4üŠ,6ZáuDÐûC‘öËš`h¦êšÌZ©05(€†¥ÐQmqi°ª ÂJß>pý“v Üó…’»þØÑ”­aiíŒzްܹKÈcxÎñUÚ8‡Sª±‘ hA ¹Ä¯|þ4ù¹QñýSýäw¢Þ' ß¡^›Y[=ùh~©a@Å‘ÀÅ×3 á4h÷Qù# 8ÑRQn$:ø>шNE{a€”Ú,̪ìסÔŘHDy—YzfØI è 0—e)Úáu;â›í‘–Û{ÎÖquf¶ËI4HZO½\HòU$‘Irlubæ³µ¾ÜÖØu]aÌemp€q–‘æ¬IyŽÐ;+cv‰Ñ¨„„«ž–^÷÷ÿÅþp­…úЙœ!õˆq_„Ü1 aöÜÙ/´mej}ÕX¼'/úÁ .é "nPç:¯à€Á@’˜à«x3n÷ƒË;èÚ»·2·*}hõÜ3”ä:¥̺AUskQ²cEª¨çk…Ôïˆo¶F[mï;YÅÕ˜nÛ-$ÐFA h>ô±q ÉI$ŠQ»‰ x@ß}•í÷ðËë>Çk±U=9zyê–â».KÑNsYy&4ZªKÆÈÙëÃä}²Bûa€“Î.ΕVZf!I ”Dõ å i-y£¡ŒHhšWcZ‘Þ­“‡ûϰní¯¢™îæ,MeâVTæQÐ4«^B•ÉnÊÍTe³MÕ.xCŠÝ>ØFø}»®_E=6²¶‹ÐR²‰3‰K§*¦:¥øM:1Ö~JÙѦÊ1+߆>nT#ú§ú!¾Gz#ÂVööÂÃíâp­ú鵕³ß–‡ê– Y ]yÓ0ÐAFu’2£ǽ[[÷ž`Þ+¿B³ÝËß’Êİ™HèkNœÁ)’•ú*å£NÑMo¶»â|†G7sÅî×E NÔ‚s¦|»Ð•™Z‡·)¤Æ‹UQÏ' ©á;ml·Ý—rk«0Z¸ZO  †`Ô]É`âšH£cø²›ÎêÏe+±×¬%ÓW`Á9Ò^~D³%s<¥K^[²’„œ.¨fgr9r¬ õZSYMF¦ÔÂ:ŠUÎ.6TI²¤Rª‚æE[í‡îøŸ!‘ÍÜñ{µÑBõ œéŸ.ôd¬ÈâÕg·)¤a4U¾Ø~ï‰òÝÏ»],1;R ΙòïBVdqjܦ“-UW8kï€ÄÏÅ72>Oªgªc¼õV2!-!!]?ô\{Äàoüý¡;ˤ¨¼K÷öc7âO˜0c¿…fÄr\ÿ¼z@Cø€É ;âM©´+Ùí6%y«jÊuœ"E3✴A‚71_44FE¯¨Iêï‡ÙÙo°ÞJ®·eʪìÌ"Ð$§9O½18‚l YÉè¸ÿü+{ ?þ{ø·ðÿeî_ó4ê} úVÏO‚±¿ëWÿ;5ÿ ú´¿¡ýZ?ëWÿ;5øoÕ£èVúÕÿÎÍCþõhúÕ«½ðgøÓæåLñýSý›äw¢Kèó bÃÝ nLLØì½i‡c([jKŽÆa˜Ì@G^S—r:w°<‚ÛõL‘Í6§Dß{ûƒã8X‰Å}iK›ÎQÑ7ÞþàøÇÎ!ŠúÒ‰¼åW_à§ÿãwø÷ÿyýø/¡º¯rµÙøušhú_ú>_×Tßý=”t:Øõ_ƒøo 29¶óãi繂¨ÎZ\+ פ¤xôœ¤3šYÀg{‰ª­T38§L&‡"¸û#7=¾æ×öá[^jJÍg´"bRqÇ:µÐ2½®i·Yå¥*=ÀM•Ñç ÝQ~ºã%›a€—¶k Œ«!5Ǽj̲±)G‹³)4´ó<†h¦G–¸åQÌ®6ðHðÞL‹ù¯l{i“Vz(Óܤ´ü3æ–!¬Î+MÐnaZh­xK ÝP„@Î׬Øì«i0ÈËsò(‚®5†W@˜ÃÃÚœ‡’ftÅ⟪Iypñ*æ-tº£È¢+r`þö06Óiõ¼eÌÐPV=I„”‰š€N™÷£ÚãÊ__ M´Qu"-=bnƒÍ·ÛVi½¢›«¨)j¥¸ B€h5¡¸Š­ÐN˜kï€ÄÏÅ72&Oªgª[¼õLo¨îtí½ õ³±,m¡`ؽ+|Š5NaÙœ»ä”8Õ ÕC ªæ¨hµÒõ€áöˆ­Éƒû¦ÞÅM§Öð«-YXõ&Ôj*§Ü›Zá!Ê_ Z4]jÖéeïü_ç Ó.ëBL>p¤ºC?ž°Î½ßnF¬«{=›K¨)©©q :Cj 49à€\Q»‰…8gû·Ù[/gÿÛ/´¬·sªìTiιrsô¤ñe—Áwjs½þbW¾ ÿ|ܨGõOôC|ŽôGDß{ûƒã8X†+ëJ&ó•T¼œ.§‡Açcí­–ã{²îMuf W©>€2€KPw& â1á8%¥|¹wR ØC¿Äswö{XzèšÕœc9J¡!ïyÌûyYͺÜUQÑç ÝQ~ºã%›a€—¶k Œ«!5Ǽj̲±)G‹³)4Ó<Å!š'Hòת9®*ŠâÜ?Ã÷{Áƒz7ƒhí]ÕlÙë &¯­ tRá•TÈg4°cXç¥Rœ¡¤‘¥&<&‡"¸û#7=¾æ×öá[^jJÍg´"bRqÇ:µÐr½®i·Yå¥*½ÀM•Ñç ÝQ~ºã%›a€—¶k Œ«!5Ǽj̲±)G‹³)4´ó<†h¦G–¸åL}!˜Þ®þ‹ÏvGÛçl7’ÍÖì¹U]›Q8  HNrŸz. À_öUŒ‚ñJ9‘ͽº@bìF[»kg_ö¹[Eù³ðöÄ)”Ë^„±sDMÌ/u6‹F9»¿Ñþ*x<ö£ùá”ÚKVóVÚ ú )) xe9LuBæ• h#u¼²bðWÿˆ6ïîïÎ|¯ûCWkܺ¾_uÍÇþðôÿjœN\’î,î§„‡†OÞ¯v½ÓìeÍ}ÅÛ·îŸìé4dY²Žüÿ-ÕÙuàßš®[÷SÁþ-îGï´ù_tû'ºqvêçði$Ð3ff}õLÖÛ›}S¦#¸^°?¾ÝL»=‚Ën’êʳ-˜1JÙ¡„Dõ Ä:ÐO†H˜Ü$ {þJ!ÄÏtéÒËÞþÿø¿Î¢p¿Záó„t²÷¿¿þ/ó…ha~´"8GK/{ûÿâÿ8V†ëB!ó„bW¾ ÿ|ܨGõOôC|ŽôGDß{ûƒã8X†+ëJ&ó”ë ?Q4>Îûr5f˜*´ºƒªL% !©D5SšZhªA¢’º&ûßÜùÂÄn+ëJ¼Þrª˜IÒõ!öx­÷ƒûØÞÛU×Öð—3A…Xu%Rh:gÞšœáÊ_ N$4Ðu+äØõ_ƒîÈSœÛz,|]¥Ë˜*Œå¥×®UÕ’•t˜NRÔDS89tf€æ–ÍmÙ.a§¬!Œã‘’ܦÖg8§j³?eIŒMFb®4ôª½g$d”ö]uð¥gSšMÚ:<Ừ/Á÷C\d³l0öÍa‘•d&¸à·Y€VV%(ñve æ„ó<†h‰Zã•XÝ_ÏX›Ý·ÛVi½¢õÕÔµR¸å ¡@4Dí y*@ˆ Ѩ«ž‰¾÷÷Æ>p±ŠúÒ™7œª]ƒu<á&ûþðûqš÷O²p{Ÿnž_“M‡6gäßDýmÙwÑXØMºžþÿxzÍå÷O±›+ôGnç¹ÿµ¤“<¹²ž.ü¿=’ßuãß’bÃ_|&~+ù¹‘r}S=Uäoª±‘ hAA éÿ¢ãÞ'|çí Þ]%Í"£¸R éÙ‹{ÎõÈæö=Ž¡aë¡€•v 2•EçåL˜¨œúÊ&auR‡ðï…>u|…§Õ¦>ë/DŽ ú#þùÕòŸV‡u—¢8/è©|Ô)á}ü={}ü3u–}Ž×c³ØÓ—§ž©²—&M>iúÖ\º|ÕÑáß |êù O«L}Ö^‰ôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁD—âμ1‚}²?î0;3ùÅÙUájâ)4Lf!-eÞŽd p#zLln "“%‹8) ÃìîG#ÿ*ÀÏU¥9V³SQ„éˆ":˜GQEº œlÁTÆòl…¿}üîFÕö‡ø†ß²]íÓWo^~ŽZ%¸SæÏZú)É%ææˆ;èÿæ÷aë‘ÍѨm=tUOl£)Tn^TïóÁdŽÝFŸ¤êxD nLuØì¦Óìm©xÌIŒÄuå9w%›‹/ÕHŒ«}Ô–ýôð¹WÚàv~Éw·M]½yú9h•áO›=kè£$—›š ï£ü›Ý‡®G7Eþ¡´õÑU=²Œ¥Q¹yP|S¿Ì?9’;t¹ÿUOùÚHÏøŸÕ+}7ê“£ËpQá;moûî˹5ÙV°µp´Ÿ@$†`Ô]È‘Àÿ%AÀªR>ð§Î¯´ú´¯u—¢¯ý\ZþèÓD ·ÛVi½¢›«¨xªJ ¡@4s[ˆh¡ù&(v,ÇxSìxAC×ìyV; ? ´ük þ°ê>€î´QKÅxRÆ?>g&8þ;èÿe7ëžÊWc¨m%ÓW`¡9Ò^~D["žQø*µ’7e# bÎ C0û;‘Èÿʰ3ÕiNU¬ÔÔa0êbަÔR®‚g#ðPcy6BKÿª§üí$wüOê•þ›õIŽ?Žú?ÆÙMçz粕ØêIEtÕØ(Nt—Ÿ‘ȧg”~ ­dÙHÂX³‚Ì>Îär?ò¬ õZS•k55L:˜‚#©„u« ™ÆÈüÞM—!'÷F˜f g}¹²­ìõZ]CÀÔÔQ(è` !¨#ÜC…ÉX‰H¢ˆßpýáŒ3í‘ÿqÙŸÎ.ʯ WI ’c1 h.ôÃÞØÜE"-ti‰¢‡Ûí«4ÞÑMÕÔ< U%†…Р n!¢‡ä€%‚tðï…>u|…§Õ¢{¬½ø/è—`ï£ü›Ý‡®G7Eþ¡´õÑU=²Œ¥Q¹yQŠwù‡à®æHíÔŒ%‹8) ÃìîG#ÿ*ÀÏU¥9V³SQ„éˆ":˜GQJº œlÁAäÙ ;~ú?ø?Ü«íð; ¿d»Û¦®Þ¼ý´Kp§ÍžµôS’KÍÍwÑþ ÍîÃ×#›¢ÿPÚz語ÙFR¨Ü¼¨>)ßæ‚ɺ‘„±g!˜}ÈäåXê´§*Öjj0˜u1GSê)WA3‘ø(1¼›!.t†Åœ?‰°}îär?óMím)ʯ-T®!‡S4(Ž¢Œ‚µà­n„ÆíÅœwÄ7Û#þÛ{ÎÖqvU¬nÛ-$ÐI ´Ÿz,Á1·ÉTÆò*‘âÎ DÐûC‘öÿÍ04SuNU¬µR`0jR†¥ÐPl4Ø‚oÀR>ð§Î¯´ú´¯u—¢¯ýì‹Ð£Û)»¹»¶«¿íÆ‹ó¦žÙ™HܹÕèF3áæmú«¶"7£]±~ /‡Þl‘\]·›ß¶«vA­FrѦ§€"R‡ §)Œæ–1Í`´Um²’×Þ1Ÿ³‚‘4>Ðä}¿óL ÝS•k-T˜ ”€!©@t[`™¦ÀüDoÀQÑüwÑþ6Êo;×=”®ÇPÚJ+¦®ÁBs¤¼ü‰fE;<£ðRÖHÝ”Œ%‹8) ÃìîG#ÿ*ÀÏU¥9V³SQ„éˆ":˜GQJº œlÁAäÙ rti†bwÛ‘«*ÞÏU¥Ô< MEކЂ1ÍÄ8Qü•ˆ”Š(ñgÞÁ>Ù÷™üâìªðµqHš &3–€2ïA<1Àé Á¤R"×÷F˜š h}¾Ú³MíÝ]CÀµRP(hP   Öâ(~HP(&8·pR&‡Ú·þi¢›ªr­eª“ƒR5(‚‹l4Ø‚¨àØ :Žú?Á9½Øzäst_êO]SÛ(ÊU—•,ø§˜~ \ɺ‹_Ýbh¡öûjÍ7´SuuÕI@¡¡@4(€–kq ?% JÇâÎ DÐûC‘öÿÍ04SuNU¬µR`0jR†¥ÐQm‚f›ðU¼.BOî0Ì@Îûr5e[Ùê´º‡©¨¢QÐÀ :CPF9¸‡ ?’±‘E1ÂX³‚Ì>Îär?ò¬ õZS•k55L:˜‚#©„u[ ™ÆÈüLo&ÈD%‹8) ÃìîG#ÿ*ÀÏU¥9V³SQ„éˆ":˜GQAÐLãd~1¼›!HøwŸ:¾BÓêÒ½Ö^мôIqkû£LM4>ßmY¦öŠn®¡àZ©(4(…ÐÍn!¢‡ä˜ PRQ.&áKÛ!˜Ÿ~,ìL×‹ìÆ‘¿yXµHS)OÏЕl2†–åÝ@à[¦/øSçWÈZ}Z/ºËÑS‚þ‰.Åœ?wãrûkÛ`yä2k²«Æíµ"Sè˜HFZ€O¹øXÐÖ˜èÜZ'OøSçWÈZ}Z'ºËÑ/‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/躿þ‹xœ ñÿŸ´']nJ%~o¯ÀP­9¯­+ Þr‘Q hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA «º5}%¿‡þ½bu°¿TØ|Q}%~o¯ÀP­0b¾´¬ÓyÊED%¡!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.®èÕô”rþúõ‰ÖÂýP[aòEô•úu¾¿ýB´ÁŠúÒ³Mç)–„„„„„„„„£¢×óª‡Úo¶¬«=7WPcSQ€¡¡@Du0€–kK h$¯øSçWÈZ}Z7ºËÑ_‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú+–„„„„„„„„„„º»£WÒQËøëÖ'[ õAm‡ÈÒWéÖúüõ Ó+ëJÍ7œ¤TBZBBBBBBB\â­ßÊ;ÝìQüð¯gºîÛÍ[¤Vu¢RRAqJrjŒc3jtY­½NÊ:ÃwS¾ gŠßk6ÄXJ®¾¤eWfQVIMl$¬@š²Ÿ1K:bFQ è¤¼‘Cdè‰TBBBBBBBBBBBBBBQÑkùÕ Ãí·ÛVUž›«¨1©¨ÀPР":˜@K5¥Æ‚ 4Sëâ¸ßqÎûr5f˜*´ºƒªL% !©D5SšZhªA¢¤Rª‚‚‚‚‚‚‚‚WtjúJ9ýzÄëa~¨-°ù¢úJý:ß_€þ¡Z`Å}iY¦ó”ŠˆKBBBBBBBUÌ5û émÝŒ®Èúœ®eœove]RÝRî’=Þ…sßÑ0èÁ\ÕŒˆKBBBBBBBBBBBBBBBQÑkcÕß´5¹Ûa¼”ÚaÌUÙ˜xÍ HG^r—zY DÒ:ª¡õEm=ßpû½Õ‘ÍØÙðÅõgÙÔ4ÖxÈ›­¹ªÎ!á šD­‡ëþ“ƒÆpJb†Ñ\¼Îø~Ï8Y2»¼ëÎ+%uÌZzÓ˜$s ºÏ$‹¢-ů¢ã¯?ÉPê$ê’ݰ† /è¼óÃÖ¸G*ÞÏk&lúƒg*jº}dJCÊm{¼ˆã#8Â@T˜\Üù­XÐC…êïÆåöÖËmçÉ®¬£vÚ‘)ô˜HFZ€O¹÷ÆÊÒœAh Ѩ„„„„„„„„„„„„„„„„„„«œö§#!ßÔ¸\™-žÇÎÅåfZ³ŒfcLâ#Ä#.A Ñ.­kÎæÓ¨;•c"Ђ‚‚‚‚‚‚‚WtjúJ9ýzÄëa~¨-°ù¢úJý:ß_€þ¡Z`Å}iY¦ó”ŠˆKBBBBBBB\éC›ÁÒ5ÿác#ÿ|e2³gHWT¾ })½Ë|U¿+ZZê`Ö‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½‘àçø¸þ˜y7÷=‘Ÿú½“EÇvÉÄñß»{»kgûWœÌXšµƒî³§:½K¹‰6Ö›½Õe6»WBdHBBBBBBBB]]Ñ«é(åü?õë­…ú ¶Ãä ‹é+ôë}~ú…iƒõ¥f›ÎR*!-!!!!!!!W8kï€ÄÏÅ72>Oªgªc¼õV2!-.GñÜ)å7ë‘Í×c¨Xz覮ÁFR¨¼ü¨ÆDçùB³X]²7îð¾ûWÚá–}’×bš»zrôòÕ³d­QÞ^j:Åœ?‰¢w#‘ÿšohªÒœªòÕIDéˆGQK:´Y LnÈNˆ•E¿PÌ>Ðû}µeX麺ƒšŒ #©€4³Z\h)“AFÀÜ)f÷aëžÊQ¨XJ+ªžÙBs¤Ü¼‰gÄæy‚—0·tÆ‹UBBBBBBQÏ'ó©ß;mVÛÞwrjh0ݶZ¨‚@3ÔB}É`ÒA#’ ¤Rª\[‹8 Ä GÛÿ*ÞÏMÕ9U榢ƒR@t0‚Žlp°Än"ÀR1üw A9MçzäsuØêº)«°Q”ª/?*U‘9þP¡¬.ÙIBOçTM³¾ÜY¦Š­. Åª“ GCjQ A*æ–š* ÑR)UAA 9Úþu<"›‘‘ªã{²ÖqM W Q5Ìz˽,Z@óRAÔŠUBB®|;áO_!iõhþë/DÎ ú'XIüꉡöwÛ‘«4ÀÑU¥ÔµRa(è` J!¨"œÒÓEP‚ "•P„„„£žOçS¾ v9Ú­·¼îäÔÐa»lµP €g¨„û’Á¤‚G% -H¥T(çkùÔðˆnFF«îËYÅ4-\-DÔBC0 è#.ô±iÍI K‘n,áü349oü«{=7TåWššŠ JAÐÀ: 1°=ÂÀV¸‹:"U‚‚‚‚s†¾ø LüWós#äú¦z¦;ÈßUc"Ђ‚‚‚‚‚‚‚WtjúJ9ýzÄëa~¨-°ù¢úJý:ß_€þ¡Z`Å}iY¦ó”ŠˆKBBBBBBBUÎûà13ñ_ÍÌ“ê™ê˜ï#}UŒˆKUÎ%{à0Ïñ§ÍÊêŸè˜ß#½v;8]Q60aÛ‘öËš`hÚWTÖbÕJ’5(€†¥ÐRиµŽ#à­!¤…Αn,âM´9oüÓE7TåTªL J@Ô : ol i°‘A°q'`BUÏDß{ûƒã8XÅ}iL›ÎR^Eø€ù‡áÆF¸º¦ø¿3“nÈ(ö«*c ø]–´ÓÌ&Ž’64’Þö˜æ´¦ÉÓ~÷ƒ£þûí]Ï¿ÿl±›ÊÉ¢×b®©K–•OºhžYrUû%ä§åÝ.á6&æqß oÆûm[ž1³2{:Ò³³O[s—0¦Žù£%†š]–«Õ]ñéuJ6-Īˆ¡Sï·¼)»ìB¶äøB^0RÈõ§*éîK6!Z6þ7JCh-1âŽ$=\Pû…‘ö¯r›ßY‹­Ó+f̲bˆp¢ n€i*kž²EÇq$k^–ªÆMj£°›s8€ï†7ã}¶­ÏÙ™=iYÙ§­¹Ë˜SG|ÒÒÃM.ËUê¥ñéuJèL‰ ¹Ä¯|þ4ù¹QñýSýäw¢±‘ j¹è›ïp|cç ø¯­)“yÊŽ~¸]PÎ0ac‘ÈË•`gÚÖ”ÖcSR0êaL#¨¥šâæ<Ÿ‚°$µÄüŒKûŸé ìÞ|Ö×ú¬ÖYœ,ö§E3Å3ïšU¾(òÛÕTjÃ|”t$·1gŒœ‘îì°7ÕiÓ²Ô4åè0«´Ô‰ª µ•RîK;$G!mú«¬9H´é‹/“‡ï†òní«~Údó&°¡îR§:}O¹·V–ÁfªÕu„Ø›™Ä|1¿íµnxÆÌÉìëJÌ~Í=mÎ\š;æ–ivZ¯T×Ç¥Õ&,5÷Àbgâ¿›™'Õ3ÕQÞFú©,Q=TD5ÈÕ³[ßù‹Oj ³'`¥X=Q‚G¨&]D%9ê‘EžJJFsEnœÞóÆ[Åv‹×+g±*ªìÕ9—Ÿ*})W¹§Ê)Cˆ; QÑkùêùˆ Ø5«*ÞÏNÒ{PSlªŠ uKuЄxyŠY­ ßÿu 39FÄ¿¹-ÙÃ#Ú=¯šÊ¼=Û#jKÕ¬Êê1u0S9„ä’ßÈýiHñ[܇+Æ+„±É Dñ&ôoû 5lÙ Äæá Êê(j!M=ó@†½¥ÍH 8RŽ„–â#Cìñ“’=Ý–ú­:vZ†œ½cÖš‘5BA6 ª]Égdˆä-¿Uc•‡)£šã¸®6ð»]ÔÞ-£¨VÓF_³Û(Nt›”»]òKšÌÙ…Õ)Èw­)8㫿 ‡ÚÕÔÁærl3/µYR˜Æ]tBzÓO šVHCA—½¨sàˆÝÂêwô¡ŸlŒ¶ÛÞyüâêÌ7m²I Œ‚@2Ð}è1ÄÂàyW→XBtŘ«rpýáä3ÙK~/vŠëXRv¤2•SåÜŠ‰™Ü–Ææ4£°MÂõwÃç}Ål¶âÇœ¶ªêÊ7m˜åS¡ØIX”8@'ߪZgi» ”¼‚hl£vÎé~â0Æ Û›#èæ=£g#w­WƸåuxDi”†SIËŸÇ!«SY¼O(ráäWáû’†1eìû÷Ú6Jµ™«‹åá9†Šf`ÐFs@Ê×8¹Í»ø ¼IÂhª+Ä=Ÿä7uªç‹ÝVѵgQ;R)”Û9'ËŠ¯ !+·sø!í Ór¬dBZBB®p×߉ŸŠþnd|ŸTÏTÇyê¬dBZBBBBBBBBêî_IG/áÿ¯Xl/Õ¶ T_I_§[ëðÔ+L¯­+4Þr‘Q hAAAAAAA ¹Ã_|&~+ù¹‘ò}S=Säoª±‘ i/`—¬M8_nH£`·¹ó—dо«¥)GC4(† <û¤ŽŽ@ÐAjìx‚æ6A.§†‘n!EÝ“¦"É-\\Iøº£HfBw˵åKÃ!ú1¿%v<‡xBŽ€xLͻޭ¾m^ÂÊ\B¯­ L9Ü?[!ÐRÏ<-ChüíK¼E] ‘!GE¬oW„>ÐÈä|ìvóÓi».U¶¤`à6ƒ0 yN}Éf ‘jAê—0N zÀpùÜqFØ`$²jrEU–™Žcê=Byê:KNhɤ•žðãtŒ8ÃwT3ÃŒk6“{ƒ3“n‘•Ó|Æð„CKYò˜I &.$ŽhsÉ'â£\¸W²pýÈèw¿l¿œ—ö{ó+;– –uq)¦Aq˘HRLöâHÐòRd²Iءˇ‘_„$OâÜÙì3ì•j}ÕXÜD7ú£¨.é enRÖ¶¯â‚ñD£žJ±/ˆ‹Zà-Óob»“ˆ¶¢†¬…eãñp,¬ F³¦ªƒ’Xd`4ëøR°Êѽ©~xÂŽ’ð{Ä›ºþU{d=2k,N€]Õ¦™ ÇÊ©† •€8ØÇ5XÁ:aïÖÿûábÏýÏ”Êο@WT¾ }(N̵á¯[D®T¬dBZ®qùÍûÓï–ëîýïÙÙŸw¡Wb!íOIM·e]¦F†®Ô”% b¾ gk}âfØ`%WXv2…WfQã(Ì$"§9K½!Ïa^ª šFFø<ŠÝ>×Áƒ»®_BºöJ¶‹Ôýjà 3‰¯*¤$ñZu{lüÔçW (‰p¯üY܇îëîþk+⹟w•~èõ¹Ïµ¤¤6}ó‹´ 7Í­©,.cu;âó"×ÎØ‹ —ÛÙs*»2˜Yø=Ì$¬eÁÎS6¢‘!$T9(y$ЍßHQÓí|{ºáUô+¯vÖ4Xž§ëVLiœLmyU Ð4ðÜu{,üÓ²«›gæ­w–º”CîÆHQfÁosÝÙMÒ2üÓMwÍ#Ôå9„¤™„ÆÉv·ºHy½ToƒÈ­§Û¾ çŸÌŸ½M’¬›:½uE5+nEãìÊaªO£@Ý9ê§8Ø ”[½WÄ ¸6(Ý–öúv’ì‘Zs” «E†‘) ƒ„ukÉ!² §‹P*œ-¢ÆêxDEO1°Û²æ[jE(´p{˜ÍXK”æ]AÉš±Í $Ñ”õQ3¾ã(£y›Ø*Ù«²EfÉÖQ*ÝšG¨) S§4 ª`¤ЦŠK–b3³¹˜µ•`gªÒ‚ ÔÔa0êcަÔR6[î®di6B‘ÜÛ'Ù"ž2²þrWb'ÙÓ±yaHo ‰M2 Uê.Ö‚•c­ÙZ4<¿Ú«MšB¤¡(%ê¢ g}ÆQFó7°U³WdŠÍ“¬¢Uº+4PR@2§NiU0R‚ñTÑJ¨ßHQÓí|{ºáUô+¯vÖ4Xž§ëVLiœLmyU Ð4ðÜu{,üÓ²«›gæ¬X–… Ù‰óûà f¼^ÒÅÕæ¤NÔÄÁ#š|ϸ3µî}·r$ âëʎÆ—‡i|?E%‚n«¾;î+e·<åµWVQ»lÇ*6ÂJÄ¡Â>ýR&p&›°ÙCÈ&†Ê¹èóâ¿Ý ŽL3Û ½i»l¨UvkŽ#À`˜HDC^rŸz>v0¼’êôM‘­.6S;Ö‡á&r>m·¼ó–ŸÙrŽZÙ¯Piê‰50KŸ¡bBéHÚ´U°â^T‹•ãÂX€ä†"x“z7‚ý†Œš¶l…bspåu5¦žù¥HkÚ\ÑTª@p$ ¥ -Ä F‡Ùã'${», õZtìµ 9z *Ç­5"j„‚m@%T»’ÎÉÈ[~ªÇ+R-ìþuC8Á‡o·ÛVUŸi]]AMJHPР":˜@B—1À|%¤#„ÑTWˆ{>'Ènë…UϺ­£j΢v¤S)¶rO—^@JÊÆÇmÜþ ¯hf›•]x^Þmü.n}ÿû`fò²á÷zº¥_-*—rhîùtˤÞiV¤q±üõ:/2djØìžqÓAVædÔEdëDIH’­YÈy%ahŽl‡_û(` ~UtÂLoW|>ÎÈû|í†òUu».UWfaà.  9Ê}é‘Ä`RA -Ñæ%Ä~º˜g¶ zÓvÙPªì×G€Á0ˆ†¼å>ô×;^Iuz'ÈÖ—*I‚Üœ@ÂHc?žÊmµEu«¯³1”ª—>ä©~v½ß%³’µÞNS v>ÚÙn7».ä×V`µp´Ÿ@ À%¨ »“0qÍ$$¬J÷ÀaŸãO›•Õ?Ñ]¾Gz&8ÿu9HÞ'êv%v:Á±z•Fà$êœÊ€ËžœÒŒÌ| æªÛ>Í.9]Ñ\[ˆHž'†÷_wïØgÎ+iÏ_V$7-ÑIGPªî’\–±¥­7jĆ‚»T¾,Çp¤‡ï»Ýëí÷W²v{YÖ«ºò”¥]p„ñ‡ Õ6E£piÌõOc M •®ý:¢l`ÂÇÛ‘«4Àѵ­. Åª• QÐÀ”CPL­ikÁ(à~ G½ðgøÓæåJÇõOôUo‘Þ‰uôñÜ]· C&Ëp»ì_hÉÜÝ«’9xNf¼ÁÌ`ÐFÜüˆÀ8”ç 'ßüR¸¨‘¯â­xIÂê†aöw#‘—*ÀÏU¥5˜ÔÔa0êaL#¨¦g8¸ÙI$“eH¥T*ç }ð™ø¯ææGÉõLõLw‘¾ªÆD%¡!!!!!!!.®èÕô”rþúõ‰ÖÂýP[aòEô•úu¾¿ýB´ÁŠúÒ³Mç)–„„„„„„„«œ5÷Àbgâ¿›™'Õ3Õ1ÞFú«–„«œ~xÂŽ’ð{Ä›ºþU{d=2k,N€]Õ¦™ ÇÊ©† €8ØÇ4ÈÁ:a.á4G D€ïÚø¾å6G´ë2³VkÝž¢vùS¦¢Œ•ŽkM6‡=m]í h((صìê€âˆQÉŒ¦ÀÅM§.-YA`õÆÔ'ê#*¥Ü–kLƒ1eümHÂËm:D°¬)îÌOŸØ®S5âö–.¯5"v¦& Óän}À–½Ï¶îOä–]c™RP–,áüM3¹üÓ{EV”åW–ªJ&L@Т:ŠC {E Æà,„¸í†žª"œ)‡¸™°Xöªrìb¯ÉÝ-Àë–ŒÏPÖ~c)ËI\¼Pt»çjå­Á:Gð®ðeöý–þw׳ޖ®enR :¡)ê x§)Ì5E1ùt:‚–×V‡d@h­Ó›ÞxËx®ÑcÚålö%U]§2óåO¥¹§Ê) ì)M îN»áŒþ{)sÆ-Q]k ~ÌÆRª\û•ùÜ\‡»1´¹á^ïîW·¹ØÏÙiÍfg÷cE3û©úïŸ6m7¯egIwñN¯'ó©ß;mVÛÞwrjh0ݶZ¨‚@3ÔB}È ÒA#’ ‹I^"·OµðF îë…WЮ½’­¢Äõ?Z°ÂcLâckÊ©€Þ+N¯mŸš¾pup²£¢Ö²æ6^£[]Ôž5@Cˆ4æ ˜‰k‡Ì(°ÑQ°›3ˆ {Ïo[ú¢ÇµÙm˜Vj»JÛ„§œé§¸E%î¦øE¥ÇM’â׳ªˆ!G&0n›6œ»¾f¬µeƒ×OPœO¨Œª—r9­2 Å—ñ´À …–Út‚áXQí¹Q<ßeÂäÏeYí,÷¦Cñ,1dp0ê>é‘/{†f¿sInq¹L{«–Ä çt7äs¾ìö«Ú4+¡O‡ª·¨ðõJg¶å>й´¢’âØiëÃí nLLÝ8MŠ›L;­YjÌ.Ý<¾&Š‹6a“t¶]øwIx&µÕÄ}µÇ»êÞå–MvË3BñNSè•e¨ 4i)£f¶ «øÚcí¢ª‘ Eø„pû>¾âëîÊ®› ¼'p´4(9,FìAѾcÄtºC˜#¼aHƒÙ1ßl½Ÿ^ÏäÖ,ÊÜXU+:®© 8Š2œÃÊ•`s]Ã"ï’«A) J‚^ª"wÜeo3{[5vH¬Ù:Ê%[¢³Hõ!Ä*tæéS(/M¤cøWx2{~Ë;ëÙïKW2·)Pˆõ¼S”æ¥XüºAP×V‡eŠ0KÖ&ˆ/·$Q°[Üù‹K²E_UÒ”£¡ŒCP}ÒKG h ‹µ,x‚ CX€ïˆÚßx™¶ UÖŒ¡UÙ”@8Ê3 €éÎRïAÏa^¨.i#‹0®ûaûÂÏäsvübÕtP°§ìÌ':eϽ+ò89C”ÚŽÅ%ëDÛ’(Ø-î|Å¥Ù"¯ªéJQÐÆ !¨>é%£4EÚ–<A„ —ªˆ÷EÌÞÁVÍ]’+6N²‰Vè¬Ò=AHqÊ9 éS ¼U4Rc„œ.¨fgr9r¬ õZSYMF¦ÔÂ:Š-Î.6UI$ÙI[÷…8gûˆÚ»/gÿØì4¬·s­íÒiιórô#xRË㫵|‰XÈ„µ\᯾?üÜÈù>©ž©Žò7ÕXÈ„´ „ „ „ „ „ „ „ …Õݾ’Ž_Ãÿ^±:Ø_ª l>@¨¾’¿N·×à?¨V˜1_ZVi¼å"¢Ђ‚‚‚‚‚‚s†¾ø LüWós#äú¦z¦;ÈßUc"Ђ‚s~å±­ÑõÏçÝœ¶Õ•f1º‚L¬öHb“Q ùê(÷øÛmØréþm1Þ!c`³º_¸Œ1ƒvæÈú9hÙÈÝëUñ®¹]Ge!”ÀËŸÇ!«Efñ<¥ÖWrq !Œþ{)¶1ó…ˆb¾´¢o9N°“…Õ ÃìîG#.Už«Jk1©¨ÂaÔÂ":˜GQE9ÅÆÊ¡$›)+¢o½ýÁñœ,Fâ¾´«Íç)/â\@_ž+dÃ=¼Þø–qõ¶T(ÎZ1Õ“©‘) ')ŒæŽ™Œ¼¥Õ\©1ímÕ¦äf!¯,Ü·V”8´:&ûßÜùÂÄN+ëJ\Þr’ðáÔ£¢ô9µ¾v {Ÿ3“}eÌ¿'u¨ÊÏÔ†‡¨85”æ’:BxÅ ]òôLq9ÈNî§Þñ?RþrQaÇÏbÞVb›¯$ŠÑx…)õ£–‚‰´Ý>¿â’Ýá6*—Řîðýà÷{½}¾êöCŽÂÏk:•w^R”«®€~0áä¦È¢tn 9ž©ìai¡²µãwó©û@Ñ”(Õ¶ÉŸÙNš «iÌ ­wZpUlÆâ)H9¦V4´9ŽÓkø%4 JÛ¯Ü`„Zã'6é·±g6k`­[Nµ2[Æ®@ªØGŠuU ä…±Á†öôEÓ—U#Ñ7ÞþàøÇÎ%q_ZUfó”tM÷¿¸>1ó…ˆb¾´¢o9GDß{ûƒã8X†+ëJ&ó• -Ä F‡Ùã'${», õZtìµ 9z *Ç­5"j„‚m@%T»’ÎÉÈ[~ªÇ+R-G5â¤Vöð~÷†W¶ÞѾãÍ+ öxKלL¤cè>Z¥„ ƒŽÕªž$é 1⊠gd}¾w±¶«­Ùu »2‚ˆ‡f+n€i*iŸz)ÅŽ~id´4Nˆ•D—?ž¯ `Ž\mW™ šš ®)P ŒÄ'¨Œ»‘Ïh ií]À‚’ñ:;ŠÝ>6{ÖÎÄÙ[?¨V6/Ss™F©Ì{S—t‘±ÄÓ’Æö˜Æ–ùÚ‘‹_Ø Ãí’ûjʰ3Óv ¡A©¨À¤©ž©Žò7ÕXÈ„´ „ „ „ „ „ „ „ …Õݾ’Ž_Ãÿ^±:Ø_ª l>@¨¾’¿N·×à?¨V˜1_ZVi¼å"¢Ђ‚‚‚‚‚‚s†¾ø LüWós#äú¦z¦;ÈßUc"Õsáß |êù O«G÷Yz&p_Ñ1Çð®ðeöý–þw׳ޖ®enR :¡)ê x§)Ì5J1ùt:‚ª×V‡e A/U;î2Š7™½‚­š»$Vle­ÑY¤z‚â•:sK:ATÁJKÅSE%ÈK 1‡ÙÜŽLZʰ3ÕiNÁPjj0˜u1„GSê)wLÇ-÷W24›!Hĸy½·eááËùÉšöÓd«÷¤åP² Sß>z U²´XË¡øª‡b´)wxáHK?Âv#íÇó£èiÖ)ÈÝWÖ{ˆ VVCµ:e¤„E‘ÏoѶø«å.¢±wW3ˆÎ÷oÏe?zíQ³«WBî"[sAãhˆÏMÊ=R³iAü+¼Gƒ½¿e¿õì÷¥«™[”‚ΨD zˆ^)Ês Pcòèu uhvIp”4õ‹áöx­V&m†òU°ß[ª²0«hêf²°-aÃ)—š5Ï 9r×Qi…Á¦©1ôycu;ð}ÐÈä|í†^´Ý—2«³\qjל§Þ”œ’òH¥I .6—0â u<0~[ EÝ™•dŒ®.5ï9¤318§.Ð%䇜Ã}»žC…"åÃȯÂ’'‰ñnl‹ööJµ>ê¬Hn"ýQÔ—tÒ¦Vå-kjþ*¥âˆXÈ„´¹»[!˜Ÿ?gbf¼^ÔïÞVíL)”§ÈgèF5ôÒÞªÁÔê˜Ñjª…‹^Ψ h…˜Áºl TÚrîùš²Õ”\`=Bq>¢2ª]ɵ­2 Å—ñµ áe¶®˜IÂê†aöw#‘—*ÀÏU¥5˜ÔÔa0êaL#¨¦G8¸ÙH$“eFÀ®éfÝîöÿhx6{®×Ð=¡YÖˆ‰–Vs ¸»<ƒD³ßŸSº—;6§t–톞ª"œ)‡¸™°Xöªrìb¯ÉÝ-Àë–ŒÏPÖ~c)ËI4¼Pt»çi…­ÁXГ…Õ ÃìîG#.Už«Jk1©¨ÂaÔÂ":˜GQD9ÅÆÊQ$›*6…vN DÑ>~öÛÊø½©X²¬IÚ˜Õ9ÏKÒ–sí¡½—X¢K„°Ã!˜}ÈäŬ«=V”즣 ‡SDu0Ž¢tÌq²ßtÃ#I²£–…;gº¬ìKû?¯X6/Nç3 S˜ö§.é"Œ®7gt²ònù©'“…Ôðˆ¶¶[î˹5Õ˜-\-'ÐC0 j.ä¨qÍ@$ Q¸³ ï¶¼!ŒþG7oÆ-WE ~ÌÂs¦\ûÒÑ?#ƒ”±ÙM¢?…wƒ(ðw·ì·ó¾½žôµs+rYÕOQKÅ9Naª ~] ¡®­Ê:‚^ª"wÜeo3{[5vH¬Ù:Ê%[¢³Hõ!Ä*tæ–t‚©‚”—ЦŠK–b3³¹˜µ•`gªÒ‚ ÔÔa0êcަÔR6[î®di6BtÝ]“‡û±7îí¯¡Z-f,MegáX#Tæ`Ôt«N@ŠÏnÌýRóY·j¤¡' ª‡ÙÜŽF\«=V”ÖcSQ„é„Du0Ž¢•s‹•’l¤¯‘[§Úø#wu«èW^ÉVÑbzŸ­Xa1¦q1µåTƒ@o§W¶ÏÍ_8:¸YRLønêwÄ‹[‘fÏ`‡3–˜de—sñ˜Ó ˆë9ÎZ$q‰(ÎH7Í:"U‚\[½WÄ ¸6(Ý–öúv’ì‘Zs” «E†‘) ƒ„ukÉÙSÅ«‡Š§ Iq¦ lœ?]ðB›Ûo#•uÕ+VŸ­Xqªs1µ”¹ôF³ni+Ll¶Aw$é a6Ã1;íÈàÊ·³Õiviy©¨¢QÐÇ !¨";Ü(”³#ˆ¢Tn,áäWm„‹…®ßµ{%Y袑÷Z€Ã3–¯†\’b•¬£—_š–<7ZÕXÈ„µ\᯾?üÜÈù>©ž©Žò7ÕXÈ„´ „ „ „ „ „ „ „ …Õݾ’Ž_Ãÿ^±:Ø_ª l>@¨¾’¿N·×à?¨V˜1_ZVi¼å"¢Ђ‚‚‚‚‚‚s†¾ø LüWós#äú¦z¦;ÈßUc"Õ Ñæ%Ä~º˜g¶ zÓvÙPªì×G€Á0ˆ†¼å>ôÛ;^Iuz-5¥ÆÊ’‚Þ;“‡ðSÁÑg FLö×zd讵‚ z£­ -0—ƒÉ1Ñ*ñÎx´¥‰j#wóÕߌ3‘‘ªÛÏ?œSAFíµ bj!0ŒôŸz)Ž'•%´ÒTŽÆŠü m}òö‡üdz•ýŽŸw]¾>^ŽI\ÍËU¯U*«U$ò:ñ±ÈÖÕm½çw&¦ƒ Ûe¨ú€H$=D'Ü• $9(‘i+½ðgøÓæåFÇõOôWo‘Þ‰wcM“ˆ†½ÝµoÚ½ÛÌXš²ºÒ5Nuz*—r2(í ä¿Uv2Åå¿Té ?ž¸ƒìï·#Vì··ÕiuiËиJ: ¨!¨ªô"œÑèê–@c¨êŽ/ç¬Mƒî‡Ûí«4ÞÑzêê Z©\r†…Р´5äHqUml?…l:¯8_y½èëå~ÊÃå9˜ Y?ÉÊU0M3KNvº¿4éDõ" Ž÷K£üèÚ»kç½¼±{#i MîÊ꣘S9ë$y\jê´C™™ä¦<&ÄÜÎ ;áøßm«sÆ6fOgZVcöiënræÑß4\°ÓK²Õzª¾=.©úŒV‡òŽ÷~+mGó½žëØLÊóVéh̤¤‚&â”å Õ©mñCrHÑ:E«^°Î´-}ǹVöznÄ[,¦¦¥Á/,Àt0Oõ‘M§?FúZX¢íKÂlMÌâ¾ßöÚ·ÎÈû|í†òUu».UWfaà.  9Ê}é‘Ä`RA ŠUBBBBBBBBBBBBBBBB®p×߉ŸŠþnd|ŸTÏTÇyê¬dBZBBBBBBBBêî_IG/áÿ¯Xl/Õ¶ T_I_§[ëðÔ+L¯­+4Þr‘Q hAAAAAAA ¹Ã_|&~+ù¹‘ò}S=Säoª±‘ j—Âh:+ð~ïÜŒeö‡¬ÊþçUýÕû¡ªíÕÏàÒI®Y˜çf¿4÷¸_‰ºüÓ~ùð;‡ì›±çœ,•ßöÆŒ¥k Ol cÔu†åÊ^D[Æwˆê¨ÑÄ:T– ừaó²2,Í7´K8Ý#1IŽ$à HZsæ)Le6T=åå×¼1æûde¹;-gV¼-\SI4¶3VÐ]ú \ðÀŸ6¹)þÞ £ÁÞß²ßÎúö{ÒÕÌ­ÊAgT"=D/å9†©V?.‡PT5Õ¡ÙGBPKÕD@ÎûŒ¢æo`«f®É›'YD«tVi ¤8€eNœÒÎU0R’ñTÑJ7ÁäVéö¾ÄÝpªúײU´Xž§ëVLiœLmyU Ð'ŠÓ«Ûgæ§8:¸YRNØ%êâ‡ÞnHR(Øìµ²”䊷fHÕ.Ôæ[pDÃÄ<3Ó’A8‚á}~* Á6BÀ6émh#|¶æÈ³â{:ÎFík{s•Õ>cL¥¤ä“;³Óê­L‡7Š””$ÆêÂ<gd}¾n0;*ºÝ—0Nâáà-CÍ`“ò¤8™Ÿ`n “#´Q®\+Ù8~ät;ß¶_ÎKû=ù•‹ËË:8”Ó ‰8„eÌ$)&{q$hy)2Y$ìSæŠÝ9½çŒ·Ší=®VÏbUUتs/>TúRsO”R«ˆ; InÜ0Ä|@ó}²bÕ¶÷¬âí‚ nÛ-$ÐM ´Ÿz4ÌÂ-Ûâ˜diIå½^û±k\Qr,v]ÉÄY"…«†ãñp5±š°£YË´¥€CCÉP<¶Š7ÁäVÓíƒßsÏæOÞ‡¦ÉVM^‹º¢š•· "ñöe0Õ'ŠÑ nœõSœlˆðyº}¯‚1w\*¾…uì•m'©úÕ†g^UH4CŠÓ«ÛgæŒàêáeI<°ÝÔ¢v2B‹6 {žîÊn‘—äîšk¸i ¨8§)Ì%$1²]­î <Þª7ÁäVÓíƒßsÏæOÞ‡¦ÉVM^‹º¢š•· "ñöe0Õ'ŠÑ nœõSœlŠJ-‚^«â‡ÜnË{};IvH­9Ê U¢ÃH”…AÂ:µäÙSŨN¤cøWx2{~Ë;ëÙïKW2·)Pˆõ¼S”æ¥XüºAP×V‡e A/U;î2Š7™½‚­š»$Vle­ÑY¤z‚â•:sK:ATÁJKÅSE(ÝÎÅo·/èë7í$ñ"ûês3ìû§XIÂê†aöw#‘—*ÀÏU¥5˜ÔÔa0êaL#¨¢œâãeP’M”BOçTM³¾ÜY¦Š­. Åª“ GCjQ A4´ÑA(v¿Oæädj¸Þ최SA‚ÕÂÔMD$3ž‚2ï@´€ 悤Rªt$þuDÐû;íÈÕš`hªÒê Z©0”t0†¥ÔÎii¢¤‚ "•P„„„„„„„„£¢×óª‡Úo¶¬«=7WPcSQ€¡¡@Du0€–kK h)ª„ …\᯾?üÜÈù>©ž©Žò7ÕXÈ„´ „ „ „ „ „ „ „ …Õݾ’Ž_Ãÿ^±:Ø_ª l>@¨¾’¿N·×à?¨V˜1_ZVi¼å"¢Ђ‚‚‚‚‚‚s†¾ø LüWós#äú¦z¦;ÈßUc"Õ Ñå¸>èdr>wMŠõ¦ìº†­§ZãˆðBªØ€†³ª©÷&ÙËòH¿Éh´8Þ¨ÆÇóÖ<è¼HÉ‘«c°yÇM[™“Q“­%"J´ g!ä„-Íëÿd0¿*ºa&7«¾gd}¾vÃy*ºÝ—*«³0ˆp@œå>ôÈâ °) NЍÁ·4VÍÒ1Ú–{)’Ú×+&Ñ­œÖùUoNÏjZ¦™\ÓhuNyÅŒ‘TWâï†6¦ÐÎßuÝV¯5mYD½iÀh¦f6’œ¤‹‰s\]¥R£$¡ÊñŠá,@rC”«ÜÓå¡Ä…$¸In b4>Ï9#ÝÙ`oªÓ§e¨iËÐaV=i©T$j*¥ÜvHŽBÛõL9Xr‘j9®;Šãoû°õÝMâÚ7ú…m4eû=²„çI¹Kµß$°‰¬Í˜]Rœ·zÒ‘ÃŒHz¾bq­­]L~g&Ã2ûU•)€ü`P×D'­4ò ¥d„49{Ú‡0~‹[±æ04aê×5ÈMÙNÜ6`¡™¸¤³é¢ÂR°ŸPaŸÕi¢ 6q/S² nnj×LÉ(A ¹Ã_|&~+ù¹‘ò}S=Säoª±‘ hAAAAAAAA «º5}%¿‡þ½bu°¿TØ|Q}%~o¯ÀP­0b¾´¬ÓyÊED%¡!!!!!!*ç }ð™ø¯ææGÉõLõLw‘¾ªÆD%¥Ì&…w'ÝðÆ=”¹ã¨®µ†?fc)U.}ÈÉ_ÅÊÏvcj:ÃwS¿Ùðõö³l0«¦‘•]šáZÓ ‡#k/L’Θ—ñŠKÉv`£`6g÷ž2Þ·ô;Ek²Û;0¬Õv•· O9ÓOpŠKÝMðŠKŽš IE°KÕ|@ÐûƒbÙoo§i.ɧ9A@ª´Xi¨8@'V¼’ ªxµâ©ÂÒäo„Χ„A9!7f8§4`µp bj'¸3XÐF]ú%Ù9ÄM+¶B7ªcÁ7»áó¾ðõ–ÛÎU.­xݶc”4Z3 œ9ÿ‘)3žMIÉQåÄÓ”ŽâBž7ße{}ü2úϱÚìUOcN^žz¥x®Ë’ôQœÖ^H‰a]­ˆÌOŸ³±3^/jwï+v¦ÊSä3ô ×ÓKz :S-U.a4+¹8~ï†3ùì¥ÏµEu¬1û3J©sîFJüî.V{³D ïQàïoÙoç}{=éjæVå ³ªž¢—ŠrœÃTüºAC]Z”t%†î§@ÎÖ©eÆe[ †F ™p¢ u­¸#>9ÓÈ©gL\+®ÿ%ä…à¯%þ/¿v^Ïÿ¼VæÈ¹ôOhý}ÙºN‰ð¤ñïÌ.÷øôSÄ½Ô“Ë ÝJ!÷c$(³`·¹îì¦é~N馻€æ‘ê ƒŠrœÂRH%ÚÞêÍêˆK ÝN(­RËŒʶ Œ2áD8ê[pF|s§‘PtźïñAy!.;`—SÃ¥ Î2dŠ.7»-g9#«Œ¶ÉÖ‰¤3«@r¹ˆCßü«—Ì´#÷ÌVéÊnļWk¿íж{¦žØ S™¹r§ÒŠcZ|Æ’ÚÜÒŽÁ7 ÕÅS[.Ç`<²píe[³$c×ã"+nׯft‡$´Î:kñê¥ä£|EnŸkàŒAÝ× ¯¡]{%[E‰ê~µa„Æ™ÄÆ×•R x­:½¶~jsƒ«…”Ç»Á”x;Ûö[ùß^ÏzZ¹•¹H,ê„@§¨€%✧0Õ(ÇåÐê «]Z”t%½TD ï¸Ê(Þfö ¶jì‘Y²u”J·Ef‘ê CˆTéÍ,éS)/M£|EnŸkàŒAÝ× ¯¡]{%[E‰ê~µa„Æ™ÄÆ×•R x­:½¶~jsƒ«…”Ǻ»'÷boÝÛ_B´ZÌXšÊϰF©ÌÁ¨éVœ)žÝ™úªæ³nÕG`œõ€áó¹â°ÀIdÔ䊫-3ÇÔ "z„óÔt–œÒÓH$6){ÃÒ"Ø%ê¾ h}Á±Fì··Ó´—dŠÓœ  UZ,4‰HT «^H6ATñhN¤wWdáþìA û»kèV‹Y‹YYøVÕ9˜5*Ó%sÛ³?U¬ÛµQØ'½`8|îF¸£l0Y59"ªËLÇ1õž¡<õ%§4´Ò J^ðãt£|EnŸkàŒAÝ× ¯¡]{%[E‰ê~µa„Æ™ÄÆ×•R x­:½¶~jsƒ«…”ǹ¢·¶Sv#-ݵ]ÿk•´_4öÄ)”Ë^„£ÑæªÒâÔt%½TD ï¸Ê(Þfö ¶jì‘Y²u”J·Ef‘ê CˆTéÍ,éS)/M£|ÿÖÂvÝü_•ÿËÙ÷JÿÚìú=)<¢áÒž'ƒ"cá]àÊ<íû-üï¯g½-\ÊܤuB SÔ@ñNS˜j”còèuU®­Ê:‚^ª"wÜeo3{[5vH¬Ù:Ê%[¢³Hõ!Ä*tæ–t‚©‚”—ЦŠQ¾"·OµðF îë…WЮ½’­¢Äõ?Z°ÂcLâckÊ©€ ©ž©Žò7ÕXÈ„´ „ „ „ „ „ „ „ …Õݾ’Ž_Ãÿ^±:Ø_ª l>@¨¾’¿N·×à?¨V˜1_ZVi¼å"¢Ђ‚‚‚‚‚‚s†¾ø LüWós#äú¦z¦;ÈßUc"Ђ‚sƒo¯Âc Dñ&ÜÙ+ 5j}ÕYŽnú¡¨.é£å Ê×4UÚcÀ @K¸³lœ@x;ü5îí«~ÕîÞbÄÕ”}Ö‘ªs«ÑT»‘‘Gm%ú«±–/-ú§HIüõÄlg}¹·e½¾«K¨+N^…ÂQÐÀP5@A @%W¡戟GT²GTty=blt>ßmY¦ö‹×WPRÕJã”4(…С¯ "@ˆ ¹Ãˆ¿0ü8È×TßærmÙÕeLa?ë Öšy„ÑòFÆ’@ÛÞÓ\Ö‚tÙID¸Ë™Ãøeá{u7‹5í¥9—XîTu·;=ÔÕ=d•nœFô E©Ò0›s8€ï†7ã}¶­ÏÙ™=iYÙ§­¹Ë˜SG|ЖivZ¯T>=.©úŒV‡òŽ÷~+mGó½žëØLÊóVéh̤¤‚&â”å Õ©mñCrHÑ:E«^°Î´-}ǹVöznÄ[,¦¦¥Á/,Àt0Oõ‘M§?FúZX¢íKÂlMÌâ¾ßöÚ·TúR¯sO”R‡vªˆ·ª"…O¼RÜVð¦ì;± Û“á xÁK#Ô>œ«§¹4¶!Z6þ7IÁ‚´®˜Iêï‡ÙÙo°ÞJ®·eʪìÌ"Ð$§9O½28‚l H$¢‘J¨BBBBBBBBBBBBBBBBBBUÎûà13ñ_ÍÌ“ê™ê˜ï#}UŒˆKBBBBBBBB]]Ñ«é(åü?õë­…ú ¶Ãä ‹é+ôë}~ú…iƒõ¥f›ÎR*!-!!!!!!!W?â—Há›ïþÆG&ÏðÜ®¯¹¦]èÿ<_ù4Ï3>JÆD%¡%ÈÿzÙ²xcDz•ßqõdÚ5ÒRõç÷+|GÐ8¥$c2÷«6¶*; œ/Uú2}²ìÖ÷þ^릲¬ÉØ)•‡ZQ‘ê @ NZ¥¤p ÁÉKÈ ÑÉFø<ŠÝ>×Áƒ»®_BºöJ¶‹Ôýjà 3‰¯*¤$ñZu{lüÔçW *IÛ½\PûÍÉ E€ö¶Rœ‘VìÉ¥ÚœÂ+n˜x‡†zrH2\/¯ÅAx&ÈF Á/X;‘®(Û –MNHª²Ó1Ì}@Â'¨O=GIiÍ ¤÷‡¤aƺ¡˜~dkY´›Üœ›tŒ®›æ0Ÿ€ :ZÏ”ÂHI1q$sCžI?当‡îGC½ûeü俳ߙYؼ°L³¨‰M2“ˆF\ÂB’g·F‡’“%’NÅ1Àh­Ó›ÞxËx®ÑcÚålö%U]§2óåO¥(÷4ùE*¸ƒ°¤–íà @wÄ7Û&-[oyÚÎ.Ø*í²ÒMÒ Ë@ ÷£LÌ ݾ)†F‘T˜ÞPKÕỵÅ"ÇeÜœE’(Z¸n?[« 5œ»AªPH44<•À;h£|Em>Ø=ñ<þdýèzl•dÙÕ軪)©[p’/fS Rx­éÏU9ÆÀh‘[§Úø#wu«èW^ÉVÑbzŸ­Xa1¦q1µåTƒ@8­:½¶~hήT“Ë ÝJ!÷c$(³`·¹îì¦é~N馻€æ‘ê ƒŠrœÂRH%ÚÞêÍê£|Em>Ø=ñ<þdýèzl•dÙÕ軪)©[p’/fS Rx­éÏU9ÆÀh¤¢Ø%ê¾ h}Á±Fì··Ó´—dŠÓœ  UZ,4‰HT «^I UϺu„œ.¨fgr9r¬ õZSYMF¦ÔÂ:Š)Î.6U $ÙR)UAAAAAAAAAAAAAAAAAA ¹ÀÝÖÄï¡÷žÏµý¬®Zµ>é¥uJ®ÉeË^hùü5OÍ2M<ŒˆKBBBBBBBB]]Ñ«é(åü?õë­…ú ¶Ãä ‹é+ôë}~ú…iƒõ¥f›ÎR*!-!!!!!!!GE®TM´9l¹¦Šn©¬Åª“ƒRˆjP,×› A ØI[ÕÁ=DnÁžp²}]VJëÔž(¬Á#˜ª´òT:M‘¯òoÓý«åòïÑð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGýáß |êù O«CºËÑôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGýáß |êù O«CºËÑôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGýáß |êù O«CºËÑôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGýáß |êù O«CºËÑôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGýáß |êù O«CºËÑôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGýáß |êù O«CºËÑôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGýáß |êù O«CºËÑôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGýáß |êù O«CºËÑôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGýáß |êù O«CºËÑôG‡|)ó«ä->­ë/Dp_Ñð§Î¯´ú´;¬½ÁDxwŸ:¾BÓêÐî²ôGý³¢¼Cö¾7†÷u«è§^q[FÕž¤ëU‰L¦ÙÈSiÚªC  Øõa³ø"Ã5i²¬dBZBBBBBBBBBêî_IG/áÿ¯Xl/Õ¶ T_I_§[ëðÔ+L¯­+4Þr‘Q hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA «º5}%¿‡þ½bu°¿TØ|Q}%~o¯ÀP­0b¾´¬ÓyÊED%¡!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.®èÕô”rþúõ‰ÖÂýP[aòÊý0qgáž‘q‘öÿÊ·³å®©Ê¯553*0jR†ÐS4ð=Ï$©#qq *ÏþùÕòŸV‰î²ôKà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/èøSçWÈZ}ZÖ^ˆà¿¢<;áO_!iõhwYz#‚þˆðï…>u|…§Õ¡ÝeèŽ ú#þùÕòŸV‡u—¢8/è¶]Xц&õlLQ-Õë'I2m9ˆê$— ;¬½ÁE3¿ÐŸùÛù…¿²‡u—¢8/èþ„ÿÎßÌ-ý”;¬½ÁDoô'þvþaoì¡ÝeèŽ ú#¡?ó·ó eë/Dp_Ñý ÿ¿˜[û(wYz#‚þŠ9ý‹X|åµ´â gGŠ/4å)ò ùAë/Dp_Ñv—Cçóª&èé¾ÜY¦ŒÍ¥ÔµRÒ´£¡€5(† ZÀ ×! Ä_ôŸÅøô‹lkrEÖØtZaÈ(µ¶fp3‰êˆë)rJpÙ#ÜÚ•2µÎ6D[ c[¾hkrbfØo%6˜v3"«³0ñ˜dל¥Þ˜ÚøI¢Úõ)!Ì'P­tÌ’„„„ªŒlćªˆ€˜{‡ªóQcDê4Ê\%"ÐÑimž¥uýVŸ~@ša„WM“˜ÁY²\Å¿0Ž pµ¾âíì`mÌ]aÈ(e(@ÃÍ`’ì˽l˜+1­¯¤Ä³¡*£¤2Ü@†a÷¼där¬ öm:vZƒSQˆ¬zÓLGS µBiƒ#ˆaoºtyI !1ôy=blt>ßmY¦ö‹×WPRÕJã”4(…Г´5äI 'DJ¢B¥ñÍãŠÐþõDîø“e¸]ùMžÏ“fYš¹Aq ‰IÄGˆsÓD׉ÙZE’Ÿa F¨ÀÇŽ+D«¼"M¨áxföƒ>M™^VÝdWÄ=G K]˜DÜ͈D‚À¦.“®Ãõ±<1l½Ÿ+ìù5k3W+!xŽE30è9¢ðá®vW µH€&ˆGFwŒWaú¨ž'‰6¦Ð†|šµy[kÜD®©u”ĵÙZ*‘(Ð ÆD%¡*_~â¿fäm_hØWüïnš»zóôrÑ5ð›ÀÏZÿ´üƒ‡›š:^Çq\»Û°õÈæó7ú…g®‹TöÊ2•FååC _y‚!`uÚº"BBBBBBBBBB¥ãøî+{t€dÃaë»¶«¾ð°­¢üÙʸ½YÊÊF.†Ö©÷I5²&ˆ¸ŽžÖÌçT@ÜVéé׆1;×x®Ñaáa[=‰3™qº²jœÊ]M¥3ï’‰¦.#E!̙ƈ㸭íÒ“ a‡®îÚ®û¶‹óg*âõg(S)ºZ§Ý$D\G CX3Tn(Åø„q…­÷ocnbëAC,è)@8Êkt—f]éhãdÀ€)KÙ¡JJ?Žâ··HL1†»»j»ï Ú/Íœ«‹Õœ¡L¤bèmjŸt’¬‰¢.#…¨kfsªÅ¿0Ž pµ¾âíì`mÌ]aÈ(e(@ÃÍ`’ì˽-l˜)c[ 4)_I‰gBT/J¨¿ 8…­É[`yÜ´ÃP9keVÆ`=Bqe.I· $²Ñ Zá¨RXýÅ~0F½}¾ë³ÌvýŒ‹Uñ®-=ŠÇ„}¬+MÊ_ ÑDl™û+¡2$!!!!!*_Þ8­ïTNï‰6[…ß”Ùìù6e™«”g€˜”œDx€g=4Mpˆ•¤Y)ñ†jŒ xâ´Aº±;Â$ÚŽ†oh3äÙ•åmÖE|@cÔpá”µÑ „MÌÐ(„H,ªbé0ñŠáü?[Ã&ËÙò¾Ï“V³5qb²ˆà4S3€3š/çep»Tˆh„tgxÅqª‰âx“jm ØgÉ«W•¶±a Ä@ ê‘GP I @k]•¢©€ ¬dBZB¥ãøî+{t€dÃaë»¶«¾ð°­¢üÙʸ½YÊÊF.†Ö©÷I5²&ˆ¸ŽžÖÌçT@ÜVéé׆1;×x®Ñaáa[=‰3™qº²jœÊ]M¥3ï’‰¦.#E!̙ƈ㸭íÒ“ a‡®îÚ®û¶‹óg*âõg(S)ºZ§Ý$D\G CX3QGq[§¤^Äï]â»E‡……lö$ÎeÆêÈQªs)u6”ϾH>&˜¸‡0g#¢wÆÛüï\öS-c¨VJ+»W`¡9Ò^~D1Q5•”"fÕ+¡2$.®èÕô”rþúõ‰ÖÂýP[aòÀôÈý:Ý¿…þ¡•þµþˆoÞ‹ <ˆ 1‚}¾âæ``Î]]’PÍ“­M!¡M3Ô2 eO¥1q‘À Ù#;r*ê-pº¢nœ-GÛ.i¢›ªk1j¥„ ”@CR€è)¡®-ÃØýj˜ XIM¸œ?ÃøÞñó^ѾÙÛ®…–‹Ày”$C4ùóÕaHƒ0FæïƒùEïÚ+2³VE½¹OQ|ô¦\ÆHøæ´¾è}鱂k ’ðM±ë ô¡<(ÈæÝ–ùg¹‚´ÓC)Ö®ˆêjôíHy#¦Ðæ&þ>ªï²÷V·K/{ûÿâÿ8V™p¿Zaó„tM÷¿¸>1ó…ˆb¾´¢o9UÔû¶é‚ÉDþ<ád®ÃbŠØÊ´Üd‘†g)GQî—-C<gnÿí5¾ó Õ‹a^äâ[Þ~ä\-t_qåk®…f)zóœL9Œ}¾\“;çÎÚpתS¤Ì(^÷÷ÿÅþp­ /Ö„Cçè›ïp|cç Å}iDÞrŽ–^÷÷ÿÅþp­ /Ö„Cçè›ïp|cç Å}iDÞr¤¢ØkC[“6;é´Ã±”-µ"€†c1yN]É {¢ÛõPÐ5 7s±[íËú:ÍûIêºÇïðgÒӉ߾›B÷µþçnÛ9û§ç]]å/Jhƒéb1íI±øÙ‘ýþ:@:pÇ÷¯gÞöÃÝ.\g"ïsᔨ§´<çèB¢ˆÉ½¢?3¢?ýÛtÁd‚"p²Wa±EleZn2HÃ3”£¨÷K–ˆ3ÁvïþÐß y†è€?q=0ZàˆcÄ\-t_cí×C–—Œó0Hæ0è=òå¢ñÁÛÿ´;Åcº#ÿÜOLHÞ'ñ ]v;uÐÆUFà$Ì9Ї|ùjƒ@ˆ†) ”Æ”¹‚xnõQ± fj,h•%‘K“¤§T:ª5³Ô®©ÓïÌRóL+‡Êïx¬­Ù%ÿñÿŸóz;ÿ¶ýuWÿ£ú꣺g±½]ðüÈû|í†òg®·eʪį̀C€º€@4ç)÷¥°„âl¦ 4¤ø€ÿÏù½+ÿÛ~º¨ÿ£ú꣺g±½]ðüÈû|í†òg®·eʪį̀C€º€@4ç)÷¥°„âl¦ 4ºq9Ë*BçNŸŸøOãŸÿe7à‰iÃóDíOL·DOû¢-¢Ãóè{c1Ôe4È%&£¥3æ(?X-ºž¨v±ØÐ(ìllzÄÝ(I 5¹·™‚y7.`¬ÕVÊE‡ë‚B–½D{2ih@l9¯ª–{&,„1Ƶ²B;³ ·Ë8ßPÓM NãƒÖzKµ!ÐsHÇ2‰²ª÷4·{*:?ýÄôÁdâpµ×a³·] eTnLÁ#˜¡¨wÏ–©fxàÈÝÿÚ–ø£Ê7QÝ$ά\ˆ!g&µm†òfêSA•JeV`Õh9+8óîô‚[Ó&MÄ `—'L~"¸ƒ/}•¾½£¾­“+5d/»Ô=G ùiL¹ & ZÖ‘tzî©À±F¹¡Og¾Æ^Ðõ9çÎYö3•_^¸jíÖ~ô’Bw;( z¢Bjž5L],½ïïÿ‹üáZ/ õ¡R8GDß{ûƒã8X†+ëJ&ó”t²÷¿¿þ/ó…ha~´"8GDß{ûƒã8X†+ëJ&ó•%ÃX€ðˆܘ™±ØM¦Œ¡m©xÌ3ˆëÊrîHkØߪ€æ¨Q»Šßn_ÑÖoÚIâEö=ÔægÙ÷UN68]QçJA¬Œ»¼óÎ=«2ÜÌ™H°Pˆ)S ë9$Õ Œpç:ÿÝ9„µ™‘‚mU(NɈNlÔXÑ*[³.N–Sˆð*êÏRºÑϜИ Ætÿhx<;+Z?½­ˆ ‘¼0ýÝ×òªï¶es欪‹ÀsK"ƒ@Ö©ó ¦VOMÈáa%²PÊu ©èªÆõ1»Ÿo›îËwK—(fn)X¨5,€”‘F•5bH‚07N˜†·(R=ÿñgÄÿþòWü*1—E¦™uwF¯¤£—ðÿ׬N¶ê‚Û.ÿ¤µD)t«»â|VÙ{?/a×°–,ÊÜdP&ëI*ê‘M¬å9 KšâZÛ¿Š ‚H ´‹b‡TM´9}!3L ÝSºf-T˜ ”CR€è(¦°´ØÝP4ƒa¾êGxð§Ùá;Â?âýŽÓüϺKý®Ï£Ò•É/ ‡—ÝFWäÉIr%Q…/l?†a Öv&kÆ6Hß¼°ÙÒ™J\Æ~„cL¡ÅÙwø« à“[¦8þ#—¶ 2FðÆ#îëùUwÛ6;KEù«*¢ð¥‘Á kTù„Ñld¡¹Û5Vµàe"ÂŽy=°ý|@ìŠÙ1ƒ+3ÝÎ>·}y³•Ù:‘ d¥_¯1Õ,ú-,Ó¥©ÕYtLXÙà¦#Cädk‹²­ìóÉ·dÍ—¨Äð PZòæ¸cš#`~ ¬kØvK¯'¶Äѱ¯±ƒy˜.ÒûëÙª¬²5@”ƒßÙ—x£^ÐDl¯U`…´¤cø ^Ø€Éû¯åUßlØí-欪‹Àp–D­SæJ±’†äsl|Ô5¯)sµí‡ê"œV׌¨±¢ÖMõ»ëË“¤¶ÏÔ€[=Jø5 9†©b×Ðhf-IªË¢‘ŘÒ¶ƒ¿Ã^EÂ×oÚ½ÛXz(¤}Ö0Ìå«á—$¬Q¹”rkóPÆë—_š0š4… žïðמp²\ö¯vÖºêu¤L9ªø%É csìä׿‡°»\ºüÑÄxRöÄHÞÄ}Ý*®ûfÇih¿5eT^€² 4 jŸ0š d¡¹Û45¯)DxRéĸÞ'Ä}â-¢ÃfÇig±%fTn”Ó ”5 )Ÿ1šd¥¹Ú49¯#(Ž6bÇùŒ˜¥±Ø<∽nfF!‰¨””‰' ë=y%a‰ñ›-¿U cšn‘‚x‡ð>w#^)m†K&§b/U–™Žcê=Byê:KNhMä6^¨{ãtŒlÄ ?!ò91Kc°yÅ;zÜÌŒCQ( )OAÖzòBŸ²ÛõC曤`ž aüÈ׊[a€’ɩ؋Õe¦c˜úDOPžzŽ’ÓšDù †×ªÇ8Ý'OøSçWÈZ}Z'ºËÑ/‚þˆðï…>u|…§Õ¡ÝeèŽ ú%ÜYÄÜ)°ýá oÆG7oÆ6cIè¡aOÙ¤':eϽ2±ÁÙUÙÚn’æÄxS†{[ü#íM¡gþçiWnÝ~ƒNuú9#'d²×†«â­#^þHâ<){b$o b>î¿•W}³c´´_š²ª/À Y µO˜M2PÜŽmš×”‹€"<)tâ\oâ>ñ?–Ña³c´³Ø’³*7JiJ†”ϘͲRÜmšב” Ž?é :r›°Í¼Wk¿Æ±žÄ©§¶¨jœÍË•>”[0n>m[;è’ðN/Ãõñ ¢ìÔXÑ*K^\%:¡ÕP[=Jèú>üÅ4o®cEwµÕ•£E#ÄxRöÄHÞÄ}Ý*®ûfÇih¿5eT^€² 4 jŸ0šUŒ”7#›cæ¡­xH°£¯l?Q<â¶¼`ÍE²o­ß^\%¶~¤ÙêWÁ¨iÌ5K¾ƒC4éjHuV]ŒŽû'ðÄU¼Nµßqärö$¬¥/^ubcLâcèS.B•fÛNz¨l6(Š)rŽáG·H¼N‰Þ»»j‹û /ÍœÊMÖ¡L¤Sj]j—tщÂ.E«9„3 Õ1Çñ½±’7†1w_Ê«¾Ù±ÚZ/ÍYU€à,ˆ Z§Ì&‹c% ÈæØùªµ¯)DxRéĸÞ'Ä}â-¢ÃfÇig±%fTn”Ó ”5 )Ÿ1šd¥¹Ú49¯#(tZöÃ÷†04b“6;yé´]ß^¶Ô”‚¡ÔÁ!˜ó.“ôM,Ö¼3†Y~ª@pnRÔBOl?wã>!>ñƒl7’«¥Ýõê®ÍHª J ‡"ë/LÐs^Yà ¯TâÜ¡ªF?ˆð¥íˆ ‘¼1ˆûºþU]öÍŽÒÑ~jʨ¼)d@0hÕ>a4«(nG6ÇÍCZð2‘aG<žØDƼBÆ æ``»Kï¯fª²ÈxÕjRf]â– {A²½T€à<-¥#ÄxRöÄHÞÄ}Ý*®ûfÇih¿5eT^€² 4 jŸ0šUŒ”7#›cæ¡­xH°£žOl?‰¢c^!có00]¥‡w׳UYdu|…§Õ¡ÝeèŽ ú*§ØˆÑÚñƒ*ÀÏ<›ï¯6^¢ÆQ5BIëË&¨Zø…{§09ƒÊ¤qú#œLÙ?áeìûß÷;JË—(ôR£ÓÍ+%Šü7µìäˆþ#—¶ 2FðÆ#îëùUwÛ6;KEù«*¢ð¥‘Á kTù„Ðc% ÈæØù¡­xH°ˆ#—N 5Æñ>#ïùm6;K=‰+2£p¦™¡¨iLùŒÐ{%-ÈÖÐù¡Íy@ ˜ãþ‘ð£§)» ÛÅv»ükìJš{j†©ÌܹSéE³ãæÑU°¾‰/âü?Q± .ÍE¤¹åÉÒSªU³Ô®©ÓïÌQÓFúáÆ4W{]YZ4R1üG…/l@dáŒGÝ×òªï¶lv–‹óVUEà8K"ƒ@Ö©ó ¥XÉCr9¶>j×”‹€"<)tâ\oâ>ñ?–Ña³c´³Ø’³*7JiJ†”ϘͲRÜmšב” G1ãÈ|ŽFLRØìžqNÄ^·3#ÄÔJJD“Ðuž¼’°ÄøÍ–ߪ†1Í7HÁ<@Ãø;‘¯¶Ã%“S±ªËLÇ1õˆž¡<õ%§4&‰ò ¯T=ŽqºF6bÇùŒ˜¥±Ø<∽nfF!‰¨””‰' ë=y! OŒÙmú¡ŒsMÒ0O0þ‡ÎäkÅ-°ÀIdÔìEê²Ó1Ì}@¢'¨O=GIiÍ ¢|†ÃkÕcœn“§‡|)ó«ä->­Ýeè—ÁDxwŸ:¾BÓêÐî²ôGýuÄxRöÄHÞÄ}Ý*®ûfÇih¿5eT^€² 4 jŸ0šhc% ÈæØù¦µ¯)DxRéĸÞ'Ä}â-¢ÃfÇig±%fTn”Ó ”5 )Ÿ1šd¥¹Ú49¯#(Ž6bÇùŒ˜¥±Ø<∽nfF!‰¨””‰' ë=y%a‰ñ›-¿U cšn”–bnÁ8~ï†7ã=”¹ã1¤•Ö°ÇìÒ2•RçÜ•–^âìªÜn•sÑ ;… áÞw®G7–±Ô,=t]«°Q”ª/?*hÅDçÖP™3 ª•Ñáß |êù O«L}Ö^‰ô]ÇÐùüꉺ:C¯·#Vi£3iu-T´­(è` J!¨'F–°µÆhr¿O˜ª+‡úUºðÃÔÚ¯ºî«Wš¶È¤KÖœŠfci)ÊIšF5Îyv•I/h%ÄüfωWî0B,ŽEvá7žrÓtÊ;NÚ™Š [XÊ®|‘<Ö8Åz*d¦÷QØMŒ»Óˆ÷}ëÛnçµtËbÙVa÷Z1zš»¨åªZ\>F“ÓßüR—Å”_D¸×Œ±\?‡ø¼mM¡´vƒ=*Õæ­¬¡_h¦`< –¨Á‡kœæ*•¸@’±pn;ßl@Œv{×<ádÉlþ¢Š+VkœÊœ£Úòi¢g–,muJ{2{«–„„„„„„„„„„„„©~ŒñÜWÚÚ]â»=¡Ô+gز¹o‘C1zìö)ךkÄDÖl+óÿŸ+vÑMŒ»Óˆ÷}ëÛnçµtËbÙVa÷Z1zš»¨åªáò4žžÿâø²‹èŒ Žâ¶ÕÞw®Ú޼ݎ¡Z•®®ÁzÛœ<é¦]óBhš3e_š$`Ö¹+b­ÉÃ÷„OÏe-ø½Ú+­aIÚÊUO—r"&gpjS˜Òª1eê¿âå®GþÒopdíDYR«Î_]¯‹˜’%!2k9Ê­OgmïDîÌ,n1\Aˆ ;âM—³övÏhÉ«Y•¸®µœ"]Râ”ôDÖµ®"îÒè -Û⎋Ï6{ÖÎÄÙ[?¨V6/Ss™F©Ì{S—tŽ&œ–7´1€å¾vˆ/wÛ §{¡vG7žÚîºk¢…b*zÓ':DÜY Ãäk‰øRPILXLñŠãmŸo&EÂ×s÷7“Vz(©WÑ2 Î[œ»éåª.PÖ[+^¿éQà7ÃZ«–ªŒ8㫿 ‡ÚÕÔÁærl3/µYR˜Æ]tBzÓO ši’Ð@åïiÎ`üÉüõxc±Éµ\`v]Þ54-\SS6§ ŒÄz±}RP4î{~j€Û>Š6xÅlX€× <"Mð±FÐhÉ«dÙVc«áëîÌ„x)ךKÃKs^ö¥À`RŽÃŒHz¾bq­­]L~g&Ã2ûU•)€ü`P×D'­4ò ¥¤„49{Ú³˜?k¦d” „ „ „ „ „ „ „ „ „ „ „ …Õݾ’Ž_Ãÿ^±:Ø_ª l>@¹£¥Ó´ô«cD™±^.ï:ö3Bêï²*(u¥Ð$Y@rÒH©c— ,Ó9áη‹—Ø ÄþlìL׋îûPß¼¬ ÚÒ™J|†~„K`”4·.ÿ”(dßâ— ¸O!ýÊÿ ùØÏᦢæ³3ôÏî§èF=’»7‡zæ9+:IMø7ø¢ „ðrܯðߘ݌÷þj.k3?HÑLþê~„É]›Ã½sé%7àß⤰ºÀx 5¹1ZÛÏ/i‡a6ZÙLÆa=Bqe.IY#š@|”>I\·Ü'MèÁ϶—æF¯Ô‰î²ôüþ—ìû£z0sí¥ù‘«õ!Ýeéø#é~Ϻ7£>Ú_™¿RÖ^Ÿ‚>—ìû£z0sí¥ù‘«õ!Ýeéø#é~Ϻ7£>Ú_™¿RÖ^Ÿ‚>—ìû£z0sí¥ù‘«õ!Ýeéø#é~Ϻ7£>Ú_™¿RÖ^Ÿ‚>—ìû£z0sí¥ù‘«õ!Ýeéø#é~Ϻ7£>Ú_™¿RÖ^Ÿ‚>—ìû£z0sí¥ù‘«õ!Ýeéø#é~Ϻ7£>Ú_™¿RÖ^Ÿ‚>—ìû£z0sí¥ù‘«õ!Ýeéø#é~Ϻ7£>Ú_™¿RÖ^Ÿ‚>—ìûªæ „ðrܯðߘ݌÷þj.k3?HÑLþê~„ÐöJìÞë˜äšé%7àßâˆ.ÁÈr¿Ã~cv3ßøi¨¹¬Ìý#E3û©ú{%voõÌrC¤”߃Š0šÁÈKgí|oÛ›"æÈýÍ5)Èݪ÷dFåuntËIM Y+î›W¾¡’WlÏtÇ‹%ÁÈÛÞdžŽnߌnûQè¡aOÙÒs¦\ûÑqA+—Ü*±Ò´ÞOt¹Bx9o¯øoËï>Gÿ 5+–—¤+ª_s/J1Œ•¹|;_1ÍY²J+Á·ÅIasC1ùöûÇ­¼ÞøËÝ]ºÍ )´S4,Àt0€»æ•’ ªø¨{ä Ïuºx9ìðcá¿ñ†í5½îsÿgµéô%²KÅâe÷ x’çÏ“ÝIasC1ùöûÇ­¼ÞøËÝ]ºÍ )´S4,Àt0€»æ•’ ªø¨{ä Ïté½9öÒüÈÕú‘=Ö^Ÿ‚_ÒýŸtoF}´¿25~¤;¬½?}/Ù÷Fô`çÛKó#WêCºËÓðGÒýŸtoF}´¿25~¤;¬½?}/Ù÷Fô`çÛKó#WêCºËÓðGÒýŸtoF}´¿25~¤;¬½?}/Ù÷Fô`çÛKó#WêCºËÓðGÒýŸtoF}´¿25~¤;¬½?}/Ù÷Fô`çÛKó#WêCºËÓðGÒýŸtoF}´¿25~¤;¬½?}/Ù÷Fô`çÛKó#WêCºËÓðGÒýŸt¹‹%ÁÈÛÞdžŽnߌnûQè¡aOÙÒs¦\ûÑ‘A+—Ü+±Ò´ÞOtbÉpr6Ã÷„1á‡#›·ã¾Ôz(XSötœé—>ô"‚V8;/¸C+Mä÷Im>Ú_™¿R'ºËÓðKú_³î’á(ÜQ;Z¬V¸Àì«a°ì&ÀÙ— ÑÇ1·gÇ:yèæpªß}µL2JG—Ü)&.A8~ï†<0ç²—F óCó‚Ôw ½sd`¯4?8-C†ÞˆÌQ‘‚¼Ðüàµz#1FF óCó‚Ô8mèŒÅFE8} Ä$1Ü®ü«Qe%wVäåÞc€1b»:9õØþ¾)±I”ß5F?ÜÍN×±˜h¬ÿS¨ôÿJylL.ÃÈb:ÒÚÉImÒ´ðÓ ÝŠ*Þñ3-b3’ªÌ51yÚK„yjÌdT“yºج²<JuZï‚ °@eî6}pM;\6tYóç#y¡ùÁj6ôFbŒŒæ‡ç¨pÛÑŠ20Wšœ¡ÃoDf(Xè™Î©t/hRñÕÃ=~úC¡c…§7UWâ¶+q*Ï;8ÙÍÙ?*û!ÈL"óxîÊv£;röÞÖ¨å£á o!Ø¡ò­AëgÖ®0 ð˜C¼™Sì[òÿÜþ ³IG)Wkªœl†e;›>¸%5¹…Ä«QSHò'«ƒ-Êа¹Úè³ä`¯4?8-GpÛÑW1FF óCó‚Ô8mèŒÅ+ÍÎ Pá·¢3d`¯4?8-C†ÞˆÌT\W‡°¬D¨æs;²­%—Wya®rï1€@˜q™'}?_4Æ8s ¹š¯c0ÑYþ§P è=þ”òø˜]‡Äu¥¹’’Û¥iᦻ:U½âfZÄg%U˜.jbó!´—òÕ;˜È ©&ótÿ±Ydx:”êµß`!:ËÜlúàšv¸lè³æ+ÎF óCó‚Ô8mèŒÅ+ÍÎ Pá·¢3d`¯4?8-C†ÞˆÌP±Ñ53Rè^Ð ¥ã«†zýô‡BÇ !Nnª°Å|9#@6;xÙ‡²nUö@t„„E<æ?²ø™c:_îÖ¶MTKXq¶Å•jÏ[>µq€O„Âà<ʘ°˜'bß—øFçðLšJ9J»]P¤ ãd3)ÜÙõÁ)­Ì.%Zˆò˜Ê@?‘=\8ánV……Î×EŸ#y¡ùÁj;†ÞйŠ20Wšœ¡ÃoDf(ÈÁ^h~pZ‡ ½˜£#y¡ùÁj6ôFb¢â¼=…b%G3™Ý•i,º»Ë s—yŒÃŒìȱ;éúù¦1ØTkýÌÔí{†ŠÏõ:€O@ïô§—ÄÂì<†#­-Ì”–Ý+O 0ÍØ¡Ò­ï2Ö#9*¬ÁsS™ ¤¸G–©ÜÀö@eI7›§ýŠË#ÁÔ§U®ø « Ö^ãg×ÓµÃgEŸ1^r0Wšœ¡ÃoDf(ÈÁ^h~pZ‡ ½˜£#y¡ùÁj6ôFb…Žˆ©œê—Bö€e/\3×ï¤:8Q suU~+a·¬ó³œÝ“ò¯²„Â!!O7Žì¡‡aš3·/míjŽZ>–ðâmŠ*Ôž¶}j㟠„;Ày•1á0NÅ¿/ðÏà›4”r•vº¡HÆÈfS¹³ë‚S[˜\Jµå1”€"z¸0qÂÜ­ ®‹>F óCó‚Ôw ½sd`¯4?8-C†ÞˆÌQ‘‚¼Ðüàµz#1FF óCó‚Ô8mèŒÅEÅx{ ÄJŽg3»*ÒYuw–ç.ó$)‡Ù‘bwÓõóLc‡0¨×û™©Úö3 Ÿêuž€#ßéO/‰…Øy GZ[™)-ºVža›±C¥[Þ&e¬FrUY‚æ¦/2Ip-S¹ì€Ê’o7Oû–Gƒ©N«]ðAV¬½ÆÏ® §k†Î‹>b¼ä`¯4?8-C†ÞˆÌQ‘‚¼Ðüàµz#1FF óCó‚Ô8mèŒÅ #S9Õ.…íÊ^:¸g¯ßHt,p¢æêªüVÃ…n%Yçg9»'å_d9 „BB"žoÙCÃ4gn^ÛÚÕ´|!v÷@OzT'ñÏž.NA]VyU)g2¾”ÉÈ20d$?"w»wú~k“ŽúĬž…dVçG æÜx×sÿ~¼G/îdYWºpöjçý)Çí>.7—[öè¶á3ä}~/>±y…ÆGéѫÑ9r^øWÊ›4hm¶V™³5„U7ÑTiØX”V œÆ‚#ÂZ$N°©Îí_ùgz~!Z?8K]Îen¦Ód`¢Cð9ý‡»ý?4ì_œ'¤ô+:}èÇôñr~ú…‰Ïí_ùWz~!iÁýpýrMÑ;ë¤<ã^ø|4嘔Sqm &¦£CB€ˆê “Qvt® `²ó'½ø¦ ÎÛÑ(áŒi‰~#Áï/²eÙl³ýÒÃq,/úè¦ÌV ¬Ó™×åÉ"¦Ò8ÏàŒo7Ÿf:ö–ÙÙw}¸³g9rƒ{!nŠi¤ÐÀáx9ŸYsV›Õ|yÞèÄMž…ÝsHŠŽekä9 teTbŸÓ çü‘SÇv—ü˽?¶aþ©[M'1„#Â^AäO`Ý–ì±$«.™Äï;ðݹÿ¼½^_è?±–¯tâíUÏúËá{‡q¼Ü÷ü—ZnñœðöôU–>žq ñôøVÓ™Äö62Ú Z©)Š¿I êB\a÷µN¦&&ÄÖ°Šˆ]þ_ú,‘<¼—/Ïá²ÄíæÜvï ¿]^ïûŸÙ ™÷Í¿tÿgY¢ð¼.(î~_âü·õÛÕZlù~_žÊ£NÂÄ¢±æ4ØAÑ òu…NwjÿË;Óñ ÑùÂꞀžô¨OãŸ<\žD®û<«—úYE&†úcÆ7‚¶Eù+ÊT±+—p3&îÏÆŒ+Î}>‹Ÿ‹„¹ÅÖ½)y°´ –ŠÀy ü‰ì˜Ç=¹€Ñs\íuNptFæa¨ÉÎÔÙmµã’ʪ¶q¹mh˜ú€H$=D= –l4Žž7 »õ ÑÊÑšN¦’ŽeO×þAMœ7$f ÌÆØN>œïˆãg¶¾ì\U³,ÊÙZc¥Ðõ‡˜J}éËÄʼn3µìŽÃo˜ÖÂÙ¢–¹ÔOâ¬ó*~¿ò u8nXóþ‰]n—rƵëj¦R%& ¦ ÀÊ™ñrŒ+3Ë Vh/òªB"yµ>Uæ¡rêg  ¤P/pp'‰žC4Ž”Š'ò]@ZÒÐU·Æ¬Ï¦´Ö›ʰSK‘@@õ]Ÿ¡@x‡/ö±IŒ×$ÊF¶s” U“ô uLN“˜&üuˆÜÑ*½_vÌËû6ÖÛ9j¥Q :CP䘰i"¬x¢/ñOÄÊ×È\Ó¢ßÁÄ&ëÚmÏH‹`¾•ÚÙo¢ÕögX-êÊše/)Ì5^: ß•¬nfëbÀùkþ°òFÛ$Ñä´"w<Âã^ÔçÄ]ªÚJm±ì…Ê®LÀÆaHGà’2'â\à¶ «Û×Ùù$å­¬ªåZÙOîE6ˆœy$f ¸Æ¹Kc"Ø}Üj•šW–Èu”åÐCïòó¯kÁÃ7×á±;Z¡Îñl 0Ö)46ò[x+d_+ÊT¥Ü#ÌÉ‹Wœû}±—Ö®E/6RÑX! B‘=‹ç·0,vº§8:#s0áTdçjl¶ÚñÉeU[8ܶ´L}@$ž¢„Ë6GOÀÐ]ú„èåhÍ'SIG2§ëÿ ¦Î’3û’Âç綛ߺ·¿î}žÐÓ–—»iUR«ÑT»“Ÿÿƒ&~žËOл\Õð¢T'Eªbøáº"ÊäóVúŠÄôÒ¬¤íH':g˽4apŽ‚!ô—4ÂG—¤çôJët»–5¯[U2‘)0U1æ>T1rŒ+3Ë Th/òªB"yµ>Uæ¡rêg  ¤P/pp'‰žC4Ž”Š'ò]@ZÒÐU·Æ¬Ï¦´Ö›ʰSK‘@@õ]Ÿ¡@x‡/ö±IŒ×$ÊF¶s” U“ô uLN“˜&øÆ#s7aTçel¸ÚîÎæ•[8[¸´ MD$3ž‚>”ÅFÏ#ÈÐÕzù%i­QjˆÛaçâ‡Ã³,Ú¢«km©¨¢QÐÀ :‡$Ñ.JÒÇ‹-’ä9šuVl?Ž/ýLjv¤Qí׋l¿'Ùïe]=™v¾ S—'c³ŠÌŒðëzýÜÿ­¸×du»])T [YUʵ²ŸÜŠvDN<–ÁWÃ)ld[»R³JòÙ²œº}þBžcµñ­x8fúü6#çkT09Þ-”Å&†ÞKol‹åp9J4»„y™1`1£ óŸcÏ¢v"ãšÕÈ¥æÂÐ *Z+ä4Oò'±cöæEÎ×TçQšÅWSáðÙ–bQzâÛg55*9CB€ˆê “.? $°9ŒM~)ØiZÉœtJ9•?_ù6pÜ‘˜&è`°寡•ðù݆ÖJ®6e×4í Œ"* rc•¸˜ÜK˜V›öOa‰ÂœhýöŒGˆÜËœnXMÎÙ´œ—í¼í^jñаz£ÉH̼Æržˆa°Ò:gŠ.­:V›¢YZ@cMÏæ«÷ôJët»–5¯[U2‘)0U1æ>Tf.Q…fyt MþUHDO6§Ãñ¡ê¼Ô.]Lô”Šîîñ3Èf‘Ò‘DþK¢È ZZ ¶àÕ™ôÀb6šÓb¹Vªbir(hž«³ñ£(åþÖ)#1šä™HÖÎrв`>N©‰ÃBsßÄnfì*ƒ\ì­—]ÙÜÒ«g w‰¨„†`ÐGÒ˜¡ÃHÙäy¯@Ÿ$­1µ ê-haŒZ¦Žb,®s+s¨¬IUJÌNÔ†Rª|»‘˜¬#§ˆÇµªÃ0áé¶m€ '∱ÏokVÝ›1r‹õ”UZj€²‰¹ é—zc–,N)¦Ç”vÇdö:(ŽvºÈåT«­¬ªåZÙOîE:¢'K`«Œa‹”¶2-‡ÝÆ©Y¥yl‡Y N]>ÿ!O1ÚøÖ¼3}~óµªïÊ b“Co%·‚¶Eò¸¥H]Â<̘°Ñ…yϱçÑ; qÍjäRóah-€ò'ùرŽ{s¢ÀçkªsÀ¨Íb«©ðølË1(½qm³šš•¡¡@DuI—†’XÆ &¿ì4­dÎ:%ÊŸ¯ü‚›8nHÌt¹˜pª2sµ6[mx䲪­œn[Z&>  ÏQBc› #§àh.ýB|r´Fæ“©¤£™SõÿSg É‚D®·K¹cZõµS)“S`åLø¹F™åÐ+4ùU!<ÚŸƇªóP¹u3ÐR(¸¸ÄÏ!šGJEù.‹ -ih*Û€cVgÓˆÚkMŠåXHF©‰¥È  z®ÏÆŒP ì\yÛ:Ì­“`uE ž¡‘y„§=PÄá¤.lÌ[zu½7DR´ÇŸÉo½ßœ1½áØv"Þ=¹fòü¢Ö|•€rðœåuh!*{æ‹dÍ+d‘¹rß0nÿ Vt‘±…Œ7~›*ýkk*¹V¶Sû‘Nˆ‰Ç’͘*ãbå-Œ‹a÷qªVi^[!ÖBS—A¿ÈSÌv¾5¯ ß_†Ä|íj†;Ųî>€žô¨OãŸ<\œ2»,ò®;é÷﵋>'ó5)!)þeW¹­ËŽ|°RcKM8¹ùE2¿´™‡òŸ×ÜšÞÌ2Ûˆý}é±ß‡“Q„J¢Dî5Jµø*DÚó?¯¹Xv9vÃõ÷­’a6!iÈGuB§®QÅþþ‰?ø_r‘Ø®&ƒ}ÿÚʧñÃ#»è%Õÿï¤âõý}Ê߸¤û>ÿíeð/‰'0ÛtÃÝyœ?¤èâõý}Êb÷פçwÚöG¿ŠÏàgê§cëÿêÿm îû^ÈàA×ñ_à'æ!aù‰e0ͳéüâ#„ß´ŸàûJ<Âè cXÓ;rjÕÊ¡¼¨ò˜€}AÇëƒùR mäPrõIÊIŒeCHšSÓœ’Œ‘̼©…Ž6BËœiû'ägx“ªŽïE58ß±A ÂY©Ô¶dáÐe ˆêQ׆=·]"BÓ€àôq>s,ÔþÚoýÛ?Úöå/<_e£¯±¼§öÐýÛ?Úöåâû+ì–Êâ‰Ë—ŸÛJ?²e™ÞÃü«²v3ÊQð_÷Õ~ÚS÷+úþ¾õ~ö:/¾âã”Ab‰úʵþq ö#Ï?×ÞªìK\(„­8ßáJg‡ çØròýp"qPÏscÑKD'—â·pÚi‰s¯7›×dC®Ê6›ÞÀ-Ê\¨ªº 9ê9@¼3”æ:pqý¯&,qŒÒ:ò·k­õª5×u¶ r[£Fç¢hpáSKëœWdM~ˆ32 És –ø¸œZNN! ö‚`œù¿i¤‡ $²6¤Ž³2öÌhxªtù'3²ã|kO…×Gåð´¯ CM/¬5‹"Ý«cwò~-` ˜¾´Uö¦Ó)òú¡‰íy!ÅC†«âfצQ}5´˜ð1¾7IökÝ>º°mÞÑŽl2mÄL›ÅšÎHû ÇÏT W,Ð%t]£qOO"qäýªÄ·Ì{"¶›¿ÓZµ¿€ÑjodÂf0—kËC®—ÕTñ£ ™Û´±CïݸîWM—†TêoL #Õ›RÈÂ%ל§Þ¬,’É|ÌÈîbî½GÞ³ÈÖµÄ0Øê¢ÓB¢ô¡aÔ˜ÆT4‰¥=9É.ÉËÊ”èXãd-÷*§«Ùä­Þï-敳 “(N@":Œƒ Yø·°fqU0F9)HùÄõ…ÞEP½}æe¾àÑIB䀢nšZóEÃ|¢ÁPØc<”[éj¶g’Å÷žy˜²¡¢Íè<#¨Hf1˜™H·i÷)3¢ÚƒÚ_ñ+3§;—¿W[l LŠ&å§“Ê•—$m.´#éf3™œÎ×#ÁèùË3äÐLƒRVEE½ªikX$<Àyh ò,ÑX›.Ó0=Ÿ@b*LFo1Vc£g•cA=I½áÇ»¾u?[˜í»^ײK®oZ0ú̲0€j>é¦hñQK+ài·2¬k¥ê?AZHN@\4?’Ò3kAK1[ ÿTyÅ< %f0ƤX˜ÛÌÊ-Mm6J=•tg¬‡PJ DÞbtôIàŠÌE|²àL¥YWÝKû.NE(Ç®ËQqÛUƳ&’á«q’ƒâ:z+1¬Æ®;ÍPÄC¿TmWl;–ºæ¨Ê³¹ƒPuÅ« Ò6€5JZsNgiv¦$Ket—N k-ˆÖöÜV륅ÂÀö:b,6´×[Ñnâ;®oÃf8±Û îEúöc6ukfÚ¥iU­âñ{2â:ôä˜pb£Å; $œZ¬Æƒricÿ6o†Ô¶LÈÝ‘­ËÓ[¿ñ^ë¶:{Ò¡?Ž|ñrzÏ*å.™Ä3¢–"Žƒ”™>»Ä•9„¹&|™#»Zp‘q%ÙtvÁÎx9Ȭ¤QJãN¾#kÄi}P÷>|ücåwŒÚõψFÚ`¤ØÂÖÖÚð7k5Kv°ÖA1ç÷…2áÙ&&QbvrL“ 1%5[ó^ ¯F6³1µÊõr˜L£)€vœ…#àÅ+hж Ì1ÖÁ`3é¶©”ôÞÔ‹3ìû§~ïoUðï†ÑO Ë¸?RCÜ€R–`YºØx¶<ž&doWJÅ}¥s(Êa0Ô>ø#§dØW˜äáòJ‹Ññ!6ëšPÆɉnC)^Ëiä®Yeõœh™‹W¥”’Õ7`;FQ(þ¾åÎÅvqÎ߯Šà¸„îç¢Æcše-}?ÚŸCÂÎ%eÞ«Èâ"1º•˜ðŸ ЧdºûyOg…Á vÚ ¡g×fUŸTPôkªlªYñU³Ó¤>/µ·i¢ùªÒ…{=—‡Mu·ª¥ØZ£8®cÇŠæ%œ‡"Íßø4•šðš0Ç|H‰Êìp¿®¬?lùV0¦E1ƒCgØ›R*2=q®.u?_¶’š*ÈjæR˜{% "ÑE.øiÄÍ?t¼¹x›?ì$Ú­¦Œ.é9JHþzmGÆ[ UÏ„Òâ*±7h@tòy´®Õyée2Àx¾ÞÀì ‹-å•ê4IJ±6¢a0ÌÇiLj®]Œ ¤aT2:ÉÈ~ðOûÑÇÄpeÒ‰E´…}îg[°Ž—"ËL¤F”îLjä` z{  ¹¥ÆÔÜ)…1ôJàg}9\9¦Š­.Í)-T˜J:à!©D5É&6ÜX÷kê˜Ì<š4ZÄÁë :²Fk®À_Vzè•]ƒ ¥Psò¥áÄÇ5ðÍÒ‡Âöy‚ߊðª>†œ+ßO·U…E7攚šŒ qÔÀR•®É‰›ÜÐôKDðú«®çNzÌQÃdÝ-ㆠŠë¦[¨ =–îÆ—øy‰ùnOµZùðåòüwZÆ)¬sÍ…øzzó½ÔSùéÁxjÿ„¡(§{·—/˜iÈ­eÙùu °¼'»]F )§¾i¢qXÜTxœL|>аìÙ…rÚ½nÕøâÑÆìÙ«•U&Ÿ°o³ÂØýÎÿ Ë­þk±M}½;>žZ§?÷V+÷rËô,}»ÞëoŠwy¾qoÃþ©PÉìW-!!!95¾ØÛ£vH™Cëd´´W|2·'Jº Ì$²°àÒi”F[Œ‹üÕ+JD|ûcW–&†_WšVó °…‰+)>¬$i…]Ú! g‡Ã!£J*-®3‰Z^Lï*šY+°{*Š‚FÐ !˜yQƒ n§(Roi¦7dw¯]T(É]‚R°(©\ͨÁšÏ/ô"Ã$—1ý|¶QF¾+ièæbĦ¦)Ú•Ü̯È]¹* œ ÎrÐ;µJ¹ŽtEµêŠ5T‡ DævÄ®,å×s§1í…³…ë¥÷9L²0Óß>z øœæ¸Ö¦´ù ‚AP1{ÅcµÜâw®Í³;nÐÛH–ýÁ„Ë!˜sÊhè˜l½ÜÔÍXÐfì•™í¶s*ê²ÔÕ2‰yÔ>_"a—Äim*Ø¥V8µtµ½_S³ìí¢Å—TlÝK$¯Œ½Št|…:dÊ2lœß)¥µñ‹þqæXóŒÏX¨´ÌÁG!ì‡w˜á–(Üê:h”&bpcVáuð: jS@Ô­&':ó2‹SZÛ%ʺ@g¬‡P Íæ;$[ë1Óà…Œj‚e/Ýì•.è”d}­EÌËÆ™4’U¯ ø¶VdIJz)¸öÎ$ªÙ±ÎìDJ§³=¬Ìæ&©eÞb-$ís«MA8¿´˜žñ!âF|Þ,µ¨¯‰³Ñv0ç“Âì®å¥¯8Šæ+f2’Ž·Â…ëÌûY”Ù™•…§¶5®¸p7*©§¸ (7ቇ…$•^,Ù²†‚‡ÊíVV‡2£~`ß…Uþ6“áç;:Ç8¾›QCÜÔÈu⎠?xuî¶œ3•Ë»©^›V4,1Œ:Z%\ëTqͺ×:²¢SÀR§UL¡F¼•‚ƒet“¼²@;)’)aÇEи æ|/Á%ŒLX%¼Nçܳ¯ ä#>vÊ󊾬Fjè4ˤª¦c9§ŽíœDMLJ¿‘ÌØdº°/^w¾»/M…cŒ4"°w7WEV±,–>,‚ŽñÏ‘’Sj³Eu3‚ÎÍC)U.}Éé{3ßà—.kÒïbGâåbààÏÃ޿‚{·,x·©hR&–žM?±79ÅÆÊÁwª´|@î/j±#wJ'Sôk—a®jËOˆr“‰R±!ô*ê‘]Sxm8ÑUÔy ¿ 襪‰rOFZ/(ºCÑQåâ ‰Fe1GAïCd§°ƒECCðËñøÒÔWS&dª(¨n²¨]¡ £pñ¹ÖÉc—µ ÁPĺÛB~{ãðüJxÙí<ÛÂÌ6k}XV¢ÿH Ë!‘9kLûÓ/f`߇Â5†._†óV§Ÿ;ßÕi½‚ÆbxpËÇúHº»ƒ '½*øçÏ&²ºÌò®yÇ!éçk§ŠÌ<¾ Dóý¾ì¬n½%ÚìQôôüÕì­eE¤FcåOžÓtW·È4*AÍ´Zn:]üY¹V«„+¦f G”µïMXNñ-á`þ=ÆšÖ»•ŸÁޱ=t½9)R*f|6»a¶Fª”³Ý¥²ë* Ç€e)KŸ¥:a‘ãd‹³âw…¹¼U½ø¶å[oñX ß…d˜Ù««Ã{V›ûì´Ž&–F¬Í{<³j¤/Pðk9 ×N]é‹ÙrCuø›æfüºÞ·ðÛšÓ=’¼4hå=k}9WÇ~KcwìYÏn?Íöþt=ž/ÉÍû£þަûëæºÛ_mÒÿyÕËô_jÿ*½ô÷_1üun×ìðÚÿ'§àØ£þ ž¿‰P¤"¬)¤%ô'%Ž-Ø®“˜ºâŽ“ÊÕªÅÇŠµ¡@Z ³œº•sÔuæŸHì7¿­Jùçk —õÐ'LU$ºÀÇå<ÿÃãÅNòâ¿eÎi)Ké@d&¤<²AwOý‘d*ðs¶C°ì7³Wª£0ÕœX²ô̸åá8H²ÐušX'µ%Ò¸_­ƒT5íÃg¦pü•BÃõ@ZFeáÔGÊ¢Ðâ䤲BBéŸV8„È¥^”W2ù&­OzC–†ª{ÿÆæOöÿà27 õ¡ÙZ)ë%\NxU뀰òÆ;½ohYö½bûÓhâìS)Ÿ:½ ËHÌDœ6æÛr[2±Ñ73«t› ¿x{‹jNV­äaaªÒÚ Ï~µ"QÐÀa-"q @gO¥5I±–3fáµ»øs]Ð¯Š—Å•¶—¼³ž-²¶×´nv)à.™w9¦™ú¹´OÅsÿgÛ³0øœñ³vä­ï™×}Wtô÷¥BùâäÊW³g•rÿJW¢·WN˜‰rÃH-ÝÿWè*q{j ø…þ¶]^É2G_Ãó]¤«@{7ו$vž©k¥”nãÄ YlˆÜ#6eô}Ô©VOª)G™¹6«…U=‡0›Ò3Š™\.•u´4WN¥É aí"z CIVßMç£~3µ³0žµ,ôRyN¥ G„ù€¥\œÀªg+h»žJÛôÛž²Ÿ0þÔ¼2ÞQ!¦ÙVë:ÕkÔr“T¬Ó‘¥)÷'¯arÜÒ c9±Ü'45Àod߲ѵV)÷U‚sp¿ê†¢<»¦˜Ÿ…“ˆé#}]r½“Û32¹·_òL÷kê†wU¹ŽíKs¦i»Yiä´² œ9kW íùÍ,™ÙøWàªe‡F+ÝHŽ Bί‚  Þ~*úçµV/³= Õ¬(”Ó ˜ºòª|ÀÖGøe~fôªü¸Ì±´~j:J*±„1¼¬,5lÕYÓ3å+0™nªË3Ô4Œ©Óš^L;‹‹âvRwÒ%ex¾Š:<Š6öQ‡f8Ø+ÙîË·2ÕÈVu‚cÔpqNSh—†¹ÆÜw=Ud“6ƒ@âõªT3zõ”’˜ÈG˜Ë¹HÊ«[j |6‹Åä±°OUÉk)rìO!4‚G—ÓŒÛl-dRºBöÌ¥bõÅT¨µÜ‚i Zì-‘‰XŠâÔaæiö¹útæŒá›‚[±*B-%ÇQØÙ¸Zóž =èì3Ž‘9PMÐÔ6ìs1”ŠÕÈu¨Ó7”eÞ>TõQÄ"K”â]¢œ!€ L»ÒLC5·’«€<”¼0éy?›‰…žµçæ”% ï@)žiÛÑ \OÖëÔJë{Ã­ÂÆóSBÂòŠ=À=Â>PKaÜɆ`UžÂÁd(kœÂSò£ ³×_û¨Çó™ÖøP*š”èn|FÓ—CÈ”¯¥Ý¬Xœ«œ12Ç5U1¬•pȵxˆê>Tâv„ ˆÓVÌ9/Ò–ÄFåVöV‡Œ#ù9wL',·MJØÖ´è”-f^e+‹IËÌ&éEªA¢± ¡9@8‚Ù;Lï^Éžf/¸àÖ¦jˆ÷ò’e› $9¥G6ÒjjWOªÌbch˜£!P‹ªç jhµ‘[xþ 6^3?¿ÒìWùç¶ÎÑÖ–«®¸ËÇȾT‘¦©±øLÅ}`}Ò€›Jhä3O7ÙÝ,ÄÇŸ 9¨ý¼÷z_‡.ÚÝü^|S^×»êÇJüoÙ#6ÿ‰nOÃÿÆž…¾@¸ïò…p`£ÁÇàN߈0öÕuÅÙ]ŽíÍVÓÊ´uŠ€ÆSlÇ!¸éªR ê– U˜CZK¹©ˆ> ã¬+Œpß ð÷v¢wöK$Áµ—4m+ EqúÅÀUmYN:˜*ªA17Ð)®ikE¹Á´@ÆiC²ÌH 54­ªk×LhÃ^…šù8 ‹wª„øÀBõ+T.2¥Å åæE‘K6¼×CÄO|Å=ãŒã8¿v¢wö[,ɳÛ65‰+7°)ÝV¬£¨KQ¶…h%·8Ñ)C¦HíÌT]‰¯†"JvSg3—T©Jî¬Ò9)X^"„ù„ÃTê“sò*¶ÃÂ>MFVÔv¬ë%òª»¡…_ñŒ:s”……uа¸¥6,¯šL•ÔMm›A¦Úkè¥#G[åÛ 4ä¡m†îYN{LjºôŒùŒË#öyÏ^I¢F¹­Ñ´{3†Äb[ÅŸ‹ ¼¾ÚÐßÀØëÓEÝ==éPŸÇ>x¹2•ìÙå\oÿH±?KH°Hz:M)ËÅ÷%‘¹\«œ±ù‚Â|cˆ¡‚e[s KÈ÷U–}¡äóyLOìés­Ÿ¯uê°ý½Ný{+yƒ¤SŒ‰×ª‘ÇüGþVœ‡~ËbZëgåþWA¿´C¹üÂÌ~‘®8RJŠ= ™ôþmü9·òÿ*Û¸A«_éGü/>È× Ï53 ) §—üš@ýœÇ OåþRÏoá?Çü/‹ºH¹ÁYL­DÍÞZê‘‘þÏãîŸåé§ùR; ŸÏü-î‘Ìecfc©hóëM}*Ñgö_šÀü?Ê—þÑáÎߟøU–)cãü«IËѱ±ÖXþ,éö¨4œçÍo¥9ØÛ‡Â(Eÿ»ÿùZŸû8’½?ڎż8|@˜tñŠÇ9ÅL–ªQ³ JêXRe*ç˹:ÝŸûlü^!°º< Þ·|‰Û*ÁŽì#†Ógºå_ê«æõ±+­Ú±¹äÏB‚J£V¬i˜È4 ˆê žÈãr‹q^FЃ Š'Y?ù­´HÖìx,bm KÕÊ¢h2˜† ä •wh5¦‰[0÷ˆŒK ¬‹^OÃ8EøA¡ßö^úªyJ|ý '2æ½»Ä|~ë~>ž—òÙjº^ÑsåJíŒlШ¦¥rTYU>óy{Aä´bñ,Á×ÕíÏðP‘2¨™¨í óe ¬–ó|jÆš¥G/ƒ—˜q8™f8iÏdÜ6*) 6u¾µºŒi`kgw²·.UJ†ªìž â¤dm9„‡Ê™ HºlÄFùO‰µ~»-d„ä …"ÀÒØ¥¤¬ŽF<ÃHÎâË€^醆ӔÓl83.½Ÿ.CWEIÑ»DËØ.“ÉuHGßMRöc˜s4þ¾õNò‡jS.‡û;h‘¯‘ÕÏËß0òz<àJ“|2•ZëÖ«:¢´(7PyÒyy4^iés—SX2j±«XZ€L^å¯$™âÔÕ+f Æ7<(À N¸N‘ÐçÍ®¢?TAúáNCû=ò»;Ž‹[1!ƒA©^ã,ktDî cyÂw‡v|Á-@{ˆZ ö\‘à_z™1AcUP-^PX"RÐPìë9yS² Ò–]ÐífRZb•Yæ=ú$°iw²*¹$ì@hR²%¡NŠÙyŸ_ª){““;€f«\ bcSÅüò^$r°Í˜9/ºN?öL %pý˜ç6ÏëÝK±¦í@EA³+)ߌw«ÿ´\VÎ_R^}À—›³H‡ëÝS¼Ðñ(â P1F`)È ƒEia}HR„šL ñ¸«L2!g1üUÀæC/A¯RµBã*\Z^a0I²kÍt>)3`|S‘u:±Çbë›%Ë»-‹²Wi2î¸Ò:ÊÖOÄ#)È$–4´;!Ð;O’£#Ʀ*ja†âàu«¢ËË(u¦@ug™‹# ‹¯:gÞ•Hu¡LX*¸Ðw;:øû³öcg1eaÖ­ã´xŒäƒÚgƒ‹ƒý#6cÓ0i¹³Ð-ýšã$rB<Æ«ÒÉLÑÞçĘmnߌðžÏݯu.S4´3]¹õ¦÷J¥õ2ɃïXlV¼i$¹ø›k”xvÐPéWÍt%áÉòy[Uð½ÿEUÐáÙÞ0²§Y㌓´IµL:òäéëXnS¸\ Ûµ¨[oÈ‘üñ†ðÃɲãµË{ Ïlfñ€ë8€*4Ìÿ"T°ªduìµÖ6ÓWOÕ$¸ï¢8%Ûè˜0ÑÔl…và+£þÝfÌêôñN_½)®ÅPmú®_lâ»¶JŸ…wü9¯oº¿5;ˆ.ö¢ÁJÕ´@Û9C¾yv¦ ,\9jᙪ5œ¦•ž[Uñ\žÉš'c³·ÏÜd« k^U '½*øçÏ&B½Û<«Žú}ûíbωüÍJHJ™Rí Lê‘RÕ”˜ó¤$:É$ Ð%æüx1‡5ßîêKpÜ‚àz°ù÷MúỢ¯½WÑy°‡5ü¾äRO Ý™”Í„F@¿ýÑýI7#ˆÞ«Ñ[ÙL2¿îŠ7)ÌVUêšr“TCr| Ee‘+åÛ¹¾ pWÂø»íæoÝ~ËÁî\}º9|:M |¸I'‚#n³^µÍ^ñc¡ÔÛÒ‘¢(fÁÚÖžšc­á0NL O D}y}Ú+´ûK <dfÉ®½GÁ? ‚–×M÷ÓÝ.Bnç«|>£7m†U”ñªµ3 |†c1þRÓš)qn¢Âìv†/!Ü9¸o5›Â]zið:uÕÖÉw¸"YûpÀL¯×*»3ÂøeéA™C]ÌhŒoxŸ†ÿ¦óŸ£«O¸ØüV´pµ™|-cdÊ©Í*n ©ã ê:޳…+!­¯Šwd²Fc1 •ÙàÖ«‘ä•Q+Ð,Œ÷@DìáRàì“M|º¡‡ˆÈêK‘Á­²­IÈ¥ÊíVΨ³>µžcŨˆi1ò§«† ¹Ò¾ÎõJt@×E˜0Ÿ4´n+t‰Iã¤WæÂY—ü¡gÚäPÔGNb˜1øV¿Æ´C(g„h¤!¨‰©Õ#»¸”Ÿ´§N)O¼@G˜ˆ§2,g€V—´]JÁ:ö1sºÞÏ;5CÊîLj—-š“òÔ$2æÏDêá»V¤tq[W¿=· áž×8hn¾4²©`^¸ŠÊÌK€LúS ×ºígtW­!cè^&…tëæQü€)bK“¢¡`qBÓmiu² 3öÌiéhÃýd~%‘èwW—wýÔÚ/XÓC;ä”uý]\„9„ÃYÿ*r¦íEµ÷| 9'•BÇËá[µY¦Ì¼2û™—È<ù+ÙØq3¸Žú*v[ ÑJ•L¬¥V¤’V^C1×Tôlp`ÑfvÕt¾´3‘©”ÊŽ^s ó¥ =P mlªÓ±ëJª [€{ÇËÞžs´0¡Ž/nËt ´“–´¡& FZµLtرIè8Q#Jrêʃ¯’‡‹Ð-g‹üÏ•4±õßT¾çkɦ$£­ÇQê’æ’j– âº'ßäJ–L޽–ºÆÃ` éò¤€×ôG»}Ü=☚‡Øóo𬍏RÕIDæâ0€…Ô{’˜œL88LÓhùÍr×u¶(#ƒ5R˜‡‘„“ÞÇ>ÏÎ×—ñ…K+¢š»4¥YyËš#Ú¸\~nììÙjô#˜&ÃI qZUZ*Öcr,å?…6¼Š¥Šb+)jD®öÖ`’ÒÚ§˜L_• hÚ¥G–Â×oR¶ƒÝ`"-õ½%çel°£ÁX[X]êÁ§;Ê$zák9uâ鳎s‡ WJ+ÕøžF™@Tèa—leÉ<<¿,q3´_'…÷QÖõá>:ÿÕ¨ø.ËpMsŒºÝï··ºçuDXµqT©%k :K9NIíÉ­ëˆ÷åSfr(uÈÞ[ºL&!Oò€è •- 6íÒ(®¥aX¬ƒ0)i/’iBm(·[Z‹Ø€¦1Õóä«m¦Â–¸ÆW–'“s;©©ZËjè¾®@5P3.²˜H|‰¥’Ý9¦p#™ìíñ6ëáz厌O˜?bM¥û´ëËfšr¤W~Jˆ°œ!:iªZ²Õ1v_i»´0­Ä‘Y¯Mö$tŸØØlŒƒêï.úfߟãkºú{Ò¡?Ž|ñrl+{<«‘:q0åÓ"'eZÑ—Tl¥k(ª^$¤COs,xÌTxf—¼ëÉ,³·Á0É”ÎKÍaî¦Ì®Hi¨r7ri0°^c¾bg«èÆ”æW¾4·öQ|,?ÚüS;×kýv¯'Œác+ìyOÿ0³öPáÁÉÞÅSÚÇv{µ|ŒÈ½Õ’Vng¾´óÖ|€CÉùSt‘E(È᧪ÌîU=ˆÊÈMúF=ÆeÓ²iJR)DÝâ<ÍÞž…w€ÝŠÕšåPkmPžS—ra&“žì­µqaÞ9ݬ*žÏãÝmЮGóu)¥ÈC¹=&³âˆ?W,N9¦‘c„ÇSC.ujmú?³î—Gªù’„¼×ùjÔŸ£û>è£Õ(KÍ–­CèþϺ(õFJó_å«Pú?³îŠ=Q’„‡ÿ üµjGÑýŸtQê•q \Íì ùí6–U«‘Ǽ¥ LirLXžÏŠ`^ݘӗP«¼?‡â–Á"‘²ÎOv_ Û˜ž€ŒÄ²Ñ<üQ™;KµãÀÂ$p·‡Z"õ£Ujz*‡Ý {×–d£!”Ëu†uÊ®c¬çß4kãhÍ\©sp£ˆ—ºçuçÏz kn_‚öW+>*620*´ÈÉGWPmTùˆÏœÓ­Ù°#«áù­]Œ~#ÉfwˆÞµñ=‘+V`¤ƒÌ|‰ÚchæZr¶†‰¦z3B*â&²R̾vÂeã¤ô!˜H} •¸†9ô´Ól%·ƒ.q˜ê–Â^‰ÈöGÈs´* 4ºP8(ȱ²;fsìMà0WívfÅî¬æ÷O©”ªç­2ïOÚÎ0±ä¿-Vµu·/eÓÁ0Hàܹ¾^ë¥âG¤vþr®t½°{0ƺ›Š·…Ij‘€Á©@˜zxx"ÂÀñ$xš#ú ô’ºiZXø¬ê •f4ˆw4÷÷á-äW˜s·YE©x€z-)”+4åÐ&=S+ԠʽÓx îÍ7Ä%9‰xB^IhŠ6žKÌvö7ƒ¹=^ÍÊÕzûëòPѪò3u$vdV)÷B^®©ÈC^ïýÒ¯§Â.ŸgI,‘ß7Ž\µVëà·0áJä+Àä©sGº}ªL`Èž—Î9Žÿí]Î@§¼>†Ú"¨©‘ÂÌjV´W!kI nñ­ò¤â§ÊÀâ¡ »oû(Ç« çcÅk a)\®Ua¬À5@£ xšžUžÒÓI ±ÊòV®£¨äiÊs1JŠÆ34%@â©ÿK+º7S2É^7™ë (<‡IKºIæYN[çk“íD]ë#«&JÐi{òüPÃíŒ;azº‰í‡Yq\ý߬¤51€ Hýô9˜ÝÑ/ow^Ñ~|Qéá¾BÍŸ¹Câ9-Ô©%k E%œ§%eLÎ5 Ýzy•x3‘C¨FòÜmÒa1 DA¡hi·n³Ð]J±Y`RÒ_$Ò„ÚQn¶µ±Lc«æ=ÉVÛM…-qŒ««¡;ÐÂX–wÄÛ»¾²»5£%˜÷«ðˆQؘqv´˜‚y_Ú¨ó±RGž6fÌ.· 5ß~‹¿Ù2ækšW:«žÖ¥1AKž Á(ÀÛ‡[ˆñ~årJ6¹Ûv……å:Î ˜* ¦ÔBªôœ‘=œéq¸ø¦düfÇšÎ\™sKºåµ|Sç †0³)5ZÝÑö¥N8Ù𒇢Å^4ÙU“Ô?Pq)´åÈ{ÓÚ1Ã.c¹^x:€uêVÔ ¿£Xµ–‡X³ÏVºì¨¸BWIæâ8BE(Ž£Ü•Ô• W°Æ8ÜŽù¹6f~æ[ÆT¬¹E5{™)V^ræ¥Ñ¹žd‚ùV È LKß?¼ ]Ž`³ß æWH'ùé#ods»²Yk´æ&ÌJ»Ó"óçW¡<¿bbqPö\Ú%æ¿mx]íz\\q¿þ#²íÊù$ç´N¯zB)ZíȲSd½]43;r,ûåß$îöf¸A6l·­Väµê¹Ø©¸Óqj¿ì¦º,CÎxç¤#‰Á2gÝ홋ên•ÐΰåÔ‚1J:rn•’!™à9W TµbbL0ãuàÄl 6žo©Ÿhºq½e ¤WÂ"%,Š" ïšO$Ç´dª©ZT‚¦µ‚-<š%¢J®¤JeÆW¦ÙÄ—“Ëz7ží¯m²YlÄ•¾å ¦™Sé¦}铲¡àá[‡Wá¼Õ©çÎ÷]KóÈ]›7Æ©wÿ@OzT'ñÏž.Må ò®Pér‡MH˜‚:›+ ø’¤Ñ‡Úòµ®_­Â¢›–¬ZÒc- Éð%q·º,+0ц5aD-keÈÀÖ÷z‘ÚîUy¤ó¥]@Ž£ ä—lnq,Óã!ñϔÐm^üöVDI…v¡¥;%na⢫œ4æ¦`—hò%%ŸßMò`ižÿäpµy±¼ aÛžZfÏܪÐ0 „ :‡4çRö¡à’Ѹ_R”Ô µfÙV¬ºÓ˜ù8E6a_m!y¯Ú<+†3ó™G¼ZÖ77¬jZ{†<¦iJr røR4+Ò`¦3FU›ƒäPИš îߦF4“³ÙÎ&:ýsDû«o0ùç?NÊʳ,Ä¢Y¦ÉÖ*)„œb‰¦$–œ¹Š?‰l ³º¬QŠô†”Ã)þúƒËºÎuÙ{Ö4æ$q)¼]dÌZL&&¡­Urå¼HùÉ|N×M«×ÝmnV´¹š©*3ÄØÛ–ÝüKÛ—*½í2µ6e)v‹Å9.Rô¦èpQºø‘åõ´—Îáåuú(/ 8‹çÉ~Â;÷vìûŸò—Þ$êžpâ0ßàcv¼ž;>0b¯f=ìÜ®ºŒ·ª•XIY¼Sç0Õ1b0ýÚÜÑl;Ã]÷OŽN&‡Ì°b”\C+cÉÚîÙÑ“ IÓzåuÒ ºÑ1U„•MÃ>rR Ÿ»Ó\m‡cøé¾ê$‰¨Ýr–3ªpÒ°jæ<¥Q‰4i#¯×$ˆ7Uô©Zø™™RÒÔAªa?¹äa‰—ìºnu°5:_1kéŸh²¹ì]wVey«¢eaÖfJFFÐr–‰ÞžGflmлŸJø,±´^íin½!È’ zÄûw¶-›ª3+æïF•Ò#  êî’Q®’'†<æÍéT¤µ¯isERœÄ•Øq FmÿƒœÞZŽ¿k¯-U§ìë.Ô¹÷"`ÊÀþ&ÿ¯' ŽË—Ý °|7 ï¦ð;·aälõËê½Ï²a”ªsì÷M<’ðò¹¯ã²8mflÂê”Õ‚‰ ·¬A¸÷{bÙº£4±~nñÀÄiQM":ήé#šé#1ç6oJ¥BÖ½¥ÍKz$W@ï•Ð³Ú ÛÍŒtÜymÊ/VP8ue˜@`/=iŸzR34íâ5ô*ÝK²Fr‘i RÂí~­Rå{m6Ur´Ù`UÜ™B|Ô$"!¯’i®78‹p¢’àЪ-úÔÐäÖµ:ÖXZ¦T@iL€ÚŸ”SÎÎò%.æŸ6ýºpÚwˆ­j¾ DÅSl§p˜jæ2äÑL­ 9Rèbk~®ªs«øl:êf¸F®¶r%!ů9I†h$…ÈÆÏ.2札;¿|½<<ïo†ëb$es¯†”½™{åYeWλ;#O¨ûâžœ‘î -Ì+àåijpï¼Æƒricÿ6o†Ô²¼Tá$»9˜[ä ¨ï(V7GÏop¯0ÝÕã0!1˜Ìÿ )¥Ï” |?ÚçápÇMg2êôûÿãî»Ç '½*øçÏ&b½c<«’úf˜¦ìBQæ9iý ¤Ó†;¯'ûZ?áÿ]B¢x¾¨$>DTþrº¸y8‘‡"“”ô¶Bï3/P[Ìë}Ýž`$ñ„„ÓÓš> ÌFÂåö¯eGÚåvŽ›^–.é[q,vævÃJ^ìË3™š²ª¤r^¤ÀSê%á”ûÃYhI1Lk3mx `â'Ä;Æ\¾c¡«9ëH>ž-gš×ƒÁu敲¬ô€N@rN3Þ^s;uôÌ6<4b(…4ßšÕJ§©("a3rªcäáÕ…i¯=ûBàÌg_òCðZ½qf—åJÎl®×f»Á—ÿjÚÂ%ÊÏ’šgWÚ r™$ëöp<;ýsNŸuÖ8c픇p“oZç{m,ë7+Ö–b¾ â,Œ<"ï˜"fð>Y[ænZõÑ:=ZÖ¬ÿã÷îþ?ö¾bú‹Ý+¯ª?ªV–ƒ©GœƒIŠOü·ÐA«Îçßž›+}gÒIåPpcÇÙ˜}‰Å»…´ä—æ—´×)gÒP‘H!Ä?U¦ ™ØŒ5Hçfo=‚£rx@¢ª¤é¬ªÆÂ˜ÚµÈxÚ6Y—†ÔJ’ÈÆÍLÆWþLÕ’“ÓݯޚsñX§paó~ùé²ÑB³¿e4Á‰ðR×Ó|lÕ åâEò¥Ï­6je¶~E ”“Ê÷j‰v`чžƒN=Մ̲úÕrÖ3´©AÈÕd¨Ðu’inÒÖÉPy’µZˆ™™jÓR@ªc/¹äa2—ìºÓO cw»¡§.Ø£!mm53ZbކB=ÉØÄÆÙ%®j‘‹Xâ> A–1ˆ¢ÌþñÎe²6º•d¦¥úöJì‡?"Páã†vdwø+ øÝ›à·±»£W&¼—Ö]E«j²ÊMJˆaÔÅæ#Þ”Â`â’ ç }TÍ3ÚòPx<ùyCøc½Ý 9vÅ kh)©šÓt0rîGb£l’Æ×m¯à©‹Xâ> R3Œ"8³-¼ÞZ«]J²ST§Ù(O²ü‰¦,1ˆÃû|¹»©Ra÷M)”ªôÓ.ôò=¹8¯p~J­jën\ïeÑÀDdpino†×ê®}Áÿðô«ûÉäxÿùŸÿ_ú]îëýýʸO/äO]K‡h¸O/äB‘ißÖ½AYÏqÞyÛ[YBÜ„ÓÓ˜ÌQñfô^ö™˜'Hç5Õ(ÜQ×j×aCïKبwºözÛÙòÊÇÜÖSS©jÔ9÷sJ¼›·.Ï`Ńd.fÙݦcD^¦´?’—…WƒL:ÆÒUš¹iÊFOE…w ÕÓ-"ì+ £ûɕՋ–Æ•´)W{Ž‘MIÃ÷ŠظŒU£¼çãFˆÒ1XÚ#C"¹Z&ƒLÈ@i‰{ÑXH@r™u*»Ä”AmëDÔ˜–øeå9{Ñø¹KY¢\mipU(ãÁ-ðèè⊡Uº¾ÍWÑþ2$/ÎWA aÐ8¾ú|ºNÖîø×Ã7—OM/³ezf`8¸vÉ›_]R0—fŠYP`½ø²Âö1 §›çjîÓË(AÝ«'8µus¥¯0^²Vù–ipµF 7Ûà¹(²­èAÜÆñ}‹ÔçšK+º„™¾«­‘)«^r’hôƒ´12A´åo7ï—§‡íðÝKFŽ”4ÒÓ¸;.Š|ojÜ·3v'¬ç/†i¢FSo-z¬›Ú\KYÞóÝørUèyû¨¶³ÐSŒJ3ÌÆœöùôN#+}S¦ C8ʉáµ,9Øé«+»L÷NJé9ÎÕÅ0TTYõƒÝêHCçÉ75CÌ$ÀòÄ&ŽóŠ6~ÇgºE¹¬³Ek¸• ŠJJ°ƒÆ%œôœ…'aª¾RÆîj…y,*¶SÜ‚_Ò”;,ÎvUc4BL„u1´+ÃË+k¾Íµ„,Hd^)ÈÓ täA€ä׿¼t]³+žæ¿@U—}t­+Ý#¸1:±›$Ýžd%R_hI\ÕÔŒÄ$"!ð&'€$½¤Èö±Ó7)ÖÅ߸^Þì ÍÇeZ5 eÅå˜ÿj-Í-4TZ&Luü#b£Ò3Ù›3?kÅ/\·B¢+íÒYΉòrH&Õävwf_1Þ9ðŠHÏflÜý¯½rÝ ˆ¯·Ig:'È9É©U–K9’Ü8÷dUE - ¨\۔ʫ¤Fº"}@$,½ü;†G_:\Éps;‡£ÂÜ×¶–(/¸¬óa|GÍï'jûÌËmв‘ ÉY@tæ™ÁÏ$'ö\.Ì)Âÿy/Ð^€žô¨OãŸ<\‰+¼Ï*ãΞK×±ôƉ[™øŽ§+"iÅ6%!ÌysFÂðÓªãvξG—õÉVëݬ¯“ƒk¡¢éMÛ =Úò i‘¡åy¬?h¿á”iúø/;¦ö´³¨÷T_Ö‰îÅlÿÄxÕÿ„}Ĭ³ï¬Ÿ­†ríõá}<$÷ˆ•LǸ*.¿•'º¹öú¿ð¾ $ù( lÒ­+Ýœ£ÿáÿWþxQèJʤ9Eýinî¬hðõ üÂúf‡D¥[qä~ʪD'!×]C²i£ÃƒF«œnÔ~W Ÿë¢]adVÍYƒ‰aåYþº\´LNvckÙáá°0&œ3~ÖùZ¡¬ÒVºVÆ^B˜G•:›.W–8ïþÒ¦}Pô{Æ%î7«©ÔõÙ…U^¬™Pf0jR Æk;ÿ"nÅ`Û+KØßSå¤4ƒ{ËÛpÁ‚i«lwÜË<¶kP[¸¶³õ`€S¨”-8–Ìe Ðî,tê˜LE¤ì´|"a„'ga(;9–úá´ UD‘º³”eÚ1uòMÝçš<²¾¯•XØë`CÙù†2{Dø‡~ l¨Ê41ödCq)ìÈu¨òŠKˆ¦²6ähø‚‚èõsŸ¹'c$·Çr4¬ Šg–eá5‰@üT€š¡,õåÜÃaÛ‡m ù”™¦2HMÏ•jÙŒuëä¬%1§ÓèÐl R­U8”û#Ñô©C!¦©Dîiå)D9€y‡ÚRæx`;¥¢oOT¼s­!jR28räœÛ#PŸ%åðî®8J$w¼˜P¶G4äZM®£èô'¨†Q#C»XMrÙMªXE“ Ó—¡tÝBö‚‚‚…‹H®UšSô$ ;!AEÑ#½ÚÀ¶¥³9e2ÒnñG¥4¢&—T¤W=•<¬ËN@2ñšÁçËûËÙ:•º;ËâÝ<Æš÷xãCF#¸UlW‚Êm¢®µ%¤u1di€2é?DÓžÆa†Oû¹ÚÛ&)ΘÌÍú¥0Ý0Æ6¨­{ÍPÓEJ.Ü¢•6È 3Ï—zu»>çb&òß½•Ÿ/Bð*ÓÂJë&4ŒŽ]éëËóë\ªçKÁ¤¦€‘M j¼½ÛHés¯x,ÿ'MòÌÀ®¾T^)ùXlR–µÎp¥Oµµƒ+5'<åÌeéO4çg}Ö« Û)Ê=ÇØî4ae!xÁshµõ!žë u\ÂÝË„x¹ŠbÀ~ͲÌÌ!ÓJ<õ¿ŽÉ¸Ž×t±pœ~œ’B¸z8i”róäI¿µ=ìíþ½×<ÎFæ—ÃBÑúµu‹UÁúÚö¥ÏfÞ߯t¡cNW;UÐX½ÜQ3{EF¸¨'ð߯ìÁ ž1Mst:­§3é•âkR¡`ò&£>}òô&gDöjBÑmx¥bá}lKœÓ Ê©´¯œ¦&0ëúÅ;›3výsX¤„Jg(Òb€žBîäP ¨:ƒKÅS%±ïä• $è«%(WjG[+ÆF5wƒëu(—þA9}¥6Q“õÉi…€Ù<ÔSÓ^ëð]ׇ j²Žök¹ÓÔSgj_xš f®Ÿ#k=|‰äÙì—b©5_ (üíuŠq„B6çñÖÔdQíŒ:…¡]Ÿg`æüfìïßXìÈ)¦Ræ3ô#bÃpæ’kóW¥ T’lñ¶:òߺÝy®#.2 RÁáWÌ>ú™&’Ûp+;‡ˆ;¢Ë žŽ-Šaýáv¨ªó»6eæ¬ië 3F1M§:eÞŠsrš+0¦uZñÔNüŒ¢¦¨’$nμڨ¼Ñh„®’ Â@„ŠR†Ü•Pç*WcùÈ=^®ÏÝ?YµŸW¿|»%SÔ” EVÕ” Â\ÇTÑ$—©Ý'Clއ“CRÇ»÷e´YñS-¹Î®Ï)H9ùQ˜pnq¥ŽYqP}DYïú€¯½Oà ’~·;Ÿ]©—/IòëX©d‡A ŸÞ—¥4åfWQ²)aoicކ cლŇ] é¥{¨ˆ}ðÈ¥ÄwKÄ-© P¿Q§ˆL< ë æ™E5¹Jï•´ã XArƒ›ª[YGÒ!4¥^£d£¢ò½¡J ÖS/@¥Iu‚Ðx«ÌœÊý)~UÙùÓ¼7¹—µ.Täcß:iº7É•ÐeÚ:µåÊJmcZ]M½©y¼ojâZ@ÝßÐ>þá¥{ßÁ+ÆÌ`É52 «fhñ;÷-Ì =¾ùóødŠ•¢È"—{³¤áZã'ïÅYoSË•lµÅæð2²©XÓR’öUÐ];ùÊ|Ñtzè¶ÏEó:z%N¾Y¤*pMî°zã̲eé‰>º©âÕHA°ëâ+‰œ<ÛŦ«J.•RQ8ñ@„¢:r/Š‹ šcMŸnKLqºG0jžºGa烌åØÿgýÐf?}½ÌßCÔk6«£Ÿi8Ý…Ú¿¼³Ë›§‚¼»5 Ùªþ-xÌ7›^½}9R펀žô¨OãŸ<\ž€¤3ʸï§ß¾Ö,øŸÌÔ¤„§ù•*.µ-mà%QqyûªªA÷åÉ ÈæÐjÇ<,y· Sì˜vþjR AÍÀ=‘Ì_÷ãKÑ(`bæÏu—Á“ösØÿ('í$q¥è§¸Åö=ÊÆ8xø–Ëþ|Ÿ´–ãKÓðGp‹ì{•óÁÓÞsÙ_Ï—ö’8²ôSÜ"ûëèáãàKHºôÿóÉûHq¥èŽáØ÷Z-Γ‘ž†¦º¢¥)¥1ôùR¥îÝÁ=§†(Š U.œ¼®VEªÅZÀ™G˜$¢ €E™Üîimlagº¸¼øÀ%§¤|€)å®¶ RÖ¹Ú )™DŸ½ôx]T?þò4c'~H³î½ŒHQ1˜¤þ‘WëIï¸Õ)à³î±îÄYüýõ_­'¾â?TŽû>ëÁáH¤ý¦9þ_ëJœ^ òüÀgÝj4@å†2Ã;+8Ê}qï"ç½ÙœÕɾê)­ÞÒì1YÚ™ìÎ’Ö>ñå÷ÒA#B)]‡/„ŠX’é«+SÄæPÈÏxBU`ïïûÉBIÐ JyÍáÓ $*RR‘ÛD§ÃyPËýäc130SGà©Ávû­ƒÂ±™ &3$€?Ò*ýhÎýˆýRžû>ëíÅÿÁ¿ßUúÐ︟Õ#€>Ϻø0Ô\!!fÿ}WëC¾â?TŽû>ë]²‰×©1V0\”ËuXOýä[çšA•ÃOE>Ϻmv/w4lÖV é Àg¦¼‡ÒŠE)cZ×j(¯Äô …éXNbÔI¥šì¦ÔjÜ„"F'ó¶V•ÖÛ‹=i»¨p@ zl&-²06X¤Ãõæ¦[”(vªÍíyeAÌÖÄß>ø&§¹›òTtyMÖê¯Äx¨ÏEªì’†%S¶œçLû§Ì‰‹ÄºS•©ÍŒªÒ† Õï@§×°ìªÓ^a̦ônÁ`Ã)ä,Ó;Z´öícPȨŠT+¡^² ˆú{ÓªÖÙ ¥×¹[% ŒÀÝÿ\•24 KÔ,†ÕONô •ƒšq.Í®”¼œH¸²6 d¸¢4QÛ%(Âw½È+ª´Ô<–TaŸ.ê€9Uð±á@’†‰E‰­ö≕‘¬ÓhQ:ÈšÔ]t ‡!’y×°áœ-­>ÁÕ\°Ëíß©¬«­µ“Ýé0Ó9ˈ@fšw0ø¦½ ÒSã7M ;Ýµß ”«ÞUgC=ëyñr•@>”¬˜–Æ §J¨bwÂ÷ÓÙsÁxIjêk5 "yœDÜGXÙnch(Ôή„§q8Ñ«pL:¿ø ƒ€:<¡Q¢óxYT¬i©I{*è.üå>iZ=tK,'ž‹ætôJ|³H,Tà›Ýa:õǘdÊ=Ò }uR!ŪsÂלФG¿Ø¶³ºË]rÜ:¬ö`æTqFjè4  R–œÓ“Ú¸ÉY$xHNWItíë-Ž÷·*Ýn‰­ tÏZu½7DXñøŽjmrC»’ñ`¢Ë¿6½³kV`u†6Šmg]rîCÎЂPÉÝÄk¹Ó[–¾Í›o…!ÏŠF’ŽWwþ)#ÃP…¨æäYóNÃKß—AºÞ;±­Tó íˆs €Ëù 5ª«å˸XT,TA1B°(éä©Þ~ 0E… E„îÞ» •gòÐþbż¯´5>ß>Å>ž}ÈãZo¹^>,k»‡žJ»Í£NZÛç ’äX©Ðx¥{<.J˜MN\³6¼&Ôúó«š*L­5ïviÄG…`Å}f··SÓM–ÒÇ2§YSÀ.¶v¡Gò †` ”pËæÝk'ÃDÙZëf-%òMM¤ëkQ{Æ:¾cÜ•m´ØR×ʵº,·ºZ!˜ºopïÉ÷“É8sFQ²e‹׆Šè,¨„éNiç¿h/ [‘¬Ín«Ëtœïm›®çfÈׯæ9¶]Z^õ|Ô®2´n<¡?ÛŸ¼Ö¼gx3uå–‘ggŠR®\ËÚï’#²™ßñMÄ÷®/ ôÉ—Ìøtøì‰<Ì|<¹¾7²ë€žô¨OãŸ<\žÀ¬Lò®;é÷﵋>'ó5)!)þe]C3 €Ø¨ki?%¼©”Ö¡ÈR—ß50Ôó)èpÕøùqAÏ'2ý¦ôг¶Øi"»YcRô©Tpè£ï ¡=a,犡¸…þþ‹wyÜäË^]:ú¯Ä˜8Š kºI &1À’j‘@NuãKú‹w©Þî§j®È›%pÀE:,4ÖVjƒ„šuæ‡0U´ÚS`z.gd3ÂÝe7iTÀ'¬ùÊ|ÒÍy•Zì©q¹ÚŒ¨§™4¤%ËD»E&C@PÙ`7ʨPsΑ”ù$•w»(W6á³ö1‚âP„—{`éÊÒÅI3˜]S|ùh”Í”e ‘²Ûàä´\ØZöhÀ§Æ(7¯ÈºÙlä IOŸ©x¨Y¨¥t]¢ñOO*,ªˆHiqä¥Uá”çY³1·Yþ«è·VÅZÓb|DëUHjˆ$6œªê“Jxm8Ñ^ ¼!*õ1jØî#Ý2C9<Øäó_DNr?ú¼ªík) E)áP%Ú(ØÖs3Ã-1 ok¹ÝNÕ]³ÎË‘¸`"ž¦šÊÍPp€ÓN¼Á&¯e\ƒ‘Mq¶aœ%´¸ø×•x³SuFí´šŠ"œ@xL ÷¥3Q¢›.Œ9\í~JºÄ2ºNöiq»_»ÂíUNUé•2Šæ1ú¡Ô$i—Qú™‡4nlÃ)J~][¸HvV{•î?¯§û”i31ÉjÒÂ\ÏkÅz÷®Â†Ý–¶³æÅü½Á0)ê@k5G xg)Ìt¨4 Œ´Ðš6Ã×+<0ÓÀ1†÷»]´íuû<칇)áZj–VjÀšuæ²ÀÓj/ Ï˜ óƒö–ÑÈÚñ«6îV¨‹;5R®\Ç’R‡·#²«8Áü0ƒâv¨v"Æü›Í–‹Ê7i ôÔ@9xˆq(ð˜AïI ˜è˜ÓEÞÉRÃ×+D.ÍGÑŽè;^Uì…û<íYëg.áTj•ÐjŒª´ä)ÕQ¬n4¥¡,ž÷øD‰7;uòYÏÍý:=Èÿêr«µ¬¤) )ÝçÒ–¾"Á.†è!¥åÆèívS´Úöy˜öuÅ…*®†©mÆtÑ1旼Š—5¥§˜û•1A•ðõˆ}T¥4°La±hIVBYAA—}Ä{\þ^”³]”Ú«˜¡_°•ÞÒ @÷˧þèÜî:ª9•¡Y]¤íjÙÏ©M=<² £ð@â–ñ¡!ZË@À¦ºiëÚX 2ñ08R!1aåI')Q²º07!¥dT茘&A-—V}Ù‡YÕ~”âã0òµÙ˜WB ˜sV1ÆØy »Œ­ÖÁ›m7%WW–R÷˜¢Œ?È™0ñ>Câ)’JÍH\Âþz4½^‹ÚÆ£­”ùk îò'¢€2õ\÷»9Z‚aÐL?JXî¥ÒQÅE Òİ呆åA1ò9}¤ZáCû-P7:¥c•Zõ'TÒN—?äN %É@-B"ÒO²Â¥S;9ŒÊ­y…B?Ò‹|…“(˜î½"Ô¡!)üG"űãZ•$­a¨¤³”䬩5 ÝVGå^ äPꑼ·t˜LBŸäÐA(ZmÛ¬ô×R°¬VA˜´—É4¡6”[­­Eì@SêùrU¶ÓaK\c*o†sâ3µæh›uÅUßmrYœ¼Õœ¾å!ª©Óèª}É›´ãïG3‡ÄºðÞ[Ôså[û.–_}åøî¥qç_Ÿ+mmU”w3O$輻ËTRΰQ=F ^S"{±¢ì¸‹mÇs×zÒÍU։جS±³· ¢œ ìÎøICÑb¯lªÉê¨8”Úrä=éÓc†\Çr¹Ô¯R˜pà #¬J;y ÷.ÓyŸR®ÝuSî†,çA¹O’WWj†±ÏÙyÅ,1Ž0ç#¾nM™Ÿ¹–ñ•+.QM^æcJU—œ¹ E!ѹžd€úUE- ¢sôÎ@‘ts,×ÃpwExx<ƒü$øØÿº/<³ ~Å™úª;Woî¹èž[÷®+ºþ÷ÍôË¡×/ž¯ßé»´|Në^/µï·²©ðÁ™[LxÀU¡2u“/—«2z×yÚ¹ W†…Ë®«QÍÌe$Y6³kÍt6:´à~â£Ò ð´ò¼oy›Ü­Qv8¥*åÌyM,h-dc²å÷TlvÞâzÅMMÐÜ=°k(²íÍ}™ÝaäcLÀckÊ©w%RDèŒ;rs[ÄBÛ [Zg¬ÙÐÞž)Ëà—¥4áYdøoÕpûKpŤâ8WÚê¾êüÖÆ Äí­N»”F;m™¢wɳÁM‰DºˆLf>O'¥,„ŠÍ~ŠÝ‘ÙQG/Øn›·5݃Ïõk¼º{Ò¡?Ž|ñrf+Ö3ʸï§ß¾Ö,øŸÌÔ¤„§ù•^ï^Uʪ˜÷¦`ë œÅÑê":މdÿlÙNè‹=uólËrYv»¡Ô”&²³HºS9ëÉÊ–ÜÆy¥œ%‡Ÿ¬I8T±å1I›-°Ü!©¨¦;GÅ@ø¹§Ö@TcKIÅÉI±ºçá' °¾Àˆ_;3fÙÛþã×­ñ;?ƒµHLBH|×™€Q4ž¡ø…ñD˜ºþÂ6¼ÛŧclõÖÈZ©(•g ð¬ îÓ¹'­&|62o€a»ËÃøÃÕn·¹}”¹¿¡¸;½×ýfvÕ.LÙ~“~J!÷Ä)´¸_ìy7ƒ57TÜ)騠`â(ˆ €tô­RCšZh¥vµ×‰@fKÆl•l?5Œ‹-äå$´†›i²ù ¹ðŒAgF|V0Dö¢cñ£"ÅipƒÃ%66Æ ã¼4ÆÈ¸®Íœ-Û L—®QBÛ}¹çDù9%³ J`!Íq;è•zfÊúJD„9iÊé?ü²¤‡]¢¤þr¬Ür9J|V<";»Iô$fÓ‹¬Iè«|!V'èÙ‹WT¶>³åã&Ii R£ò;Ñ=ôžŠðÑÛïÆöí§’»^;y¡MÙ¨V!Õ”$Y@ºs”ûÒŽhiñ&É$v|>뛚ڹ˜RvÝc~Ê+1Ö_ø"[7ÑÚfœ/×UtáÊ~‹Ø¶ 3Øÿ:2@6 ˜¾©Þ‰Ñ ¾žpÃÞ"abºísÙÏ/¸@³tâE|"5fwÉ!P4‘jÁé¹ïŸ‰þ+óUI.Ý29M}7_ÐW…™Ç¸?ºOýÑmU¿bTo¡åGcƒŸÝsIr¼å¹ˆ­PÚÿ‚œ}0¿| ê½µrþÚ­fËÉ«‹ÜÀjªeçÊŸJ‘m na{«›ÜޏŸÛ¢'Þv«ÝëÎìÑÔ^™ ë ÄY@Ús”»ÒO4Ç ïàª^‘O= ‘ œ‰gSÇ4u»k.ruk€V³ÙZ'/usž M$L@m0hUu—L'œÒñ›m«Åä â]1!!gRÔr”ŠÏƬ³àåùRÍqnÊl¬ÆaT¸·T“Aå¨ÿj9‚Æ– V3Ž u7³[ÙfYpN¦©Õê?RPH;¸l{j‰XL¤….©Ô­¨óv4ç|œOÿPýÿäMÍ™Žv›ªº26_O>Y™’Aÿæõ¦Ž#I¥RÒ5B˜}ð´xæÃpšþT8«µZ^—8ZŽPz,ʔӑäü…H%!‰¢2M¢Úô…Ø­´×µ’RSmb¹ÏÓ)rü ’\p ¶•n.i.z¬y?64–Ìål“< ¨¼“ÏK‰2rÜcË *qˆcuJí9s—™ ‰Ý\›^!!!'å*•¯ÆáT´µÜÂèoóµC¼Á.4.X½p­\jŽnc)"ɵ“^ja^EMX{a~ù<Ý”^~í¶–LÕÂÒõ¨¤¤« M 3¦}òKh4OvF¤Z©#·s×µ0Cqð:ÕÑeå”:‹Ó º³ˆ˜²0˜ºó¦}éT—t5Z0K[¥ü¹bÕÙ…”ØyÒ'ÊH£WW¨ uå9£ðÄ4ž_ËÆá%š3”fo6m›§‹•oñÙg‰b=± (Úí›Qâz­õvò0O² +(ú²GºLÍñj|f÷\IîíÈÁ¾·ŸO‰¶å?zÊð=P;„’ìæ5ü"ao.£¼¡XØ=ïWÆ?Ä¿;2HØ«3ÈïDAߺžŠñ–Ýñ½ÌÉl©ÉfÚÇ1Ù•ÊéÝR— ä jÃ|•>Ø,æšTì’@*SÂaàÛpvÇîwø]WÙnö鯷¯?G-º°½ë¾åúN¶zV×[|S¼ÉÃá_‡ôV¶ÿŽŒíÿÀdØï;}Voâ Ñk*ê•ñ†º±ùþÁ`æð<Õåï<·…¥E鳫õd(”²(”ºs¦}érE­R¹æÂæ¢Ê²:X\­Ë×í‡þÊ¢›~*u·'9öyJAü¨øÓy,ØŒF&îñg½ü@Wß½¦8Ú Îà ,¾v­txžÉµrFíËIJ“T¶Ökô\ŽÌìî%¯î™*üYî´<¯[Ùw?@OzT'ñÏž.L¥{6yWôû÷ÚÅŸùš””ÿ2§Ô¯:¥¥’¢k^H§´Ýµeš,Ú…¼©¬‚QÁäJ”’ß2˘Uõß‘"Õ“6Æêààly;Xt\5íwèÐ-ê„¢E•Â^.Ï0Õ$WkòêYÌ«úïÈ‘j‹ÂÖÕ Š"cÈž‚……G?*Ò\ó2¬átBZòþCS²–5Ò $ЂڂT©¸v/9á·Ä8ÄÕiØö±œSAõ£ ɨ€˜²0ˆè!>ù¢ KO„,ÎcÛa›ºè‹^Žèií°·Zv½ìçTZ(Þ´a:¾! –F ÷Í é¢¦g7ÂS<˜‰ C¬î(z&ɰ3ÕiNIAé¨ÂaÔäL#¨÷¡˜Õ&6W—’ŽÃ|N‹ lI÷³Á²‹þ,©etUOl¦”«7/*†Hæ5ó±2,ˆ"·ÖÐÉ\Ëø²¥tWM]‚„çAyÏ’A×uW=ÎÝ1´ô›ÅÅuˆÆ´ŠÉLvk.²ü[‰|Ô?ý‰U´u?#X•{ýúÓœmj¦óM%T”^”$Ð;kK·)kó™ê!µ)¼>‹ßÐdP¡ÿµdÞ •eÚ(!騆!¸L¡„5ôIiið…˜Ææ:ãLX—ŠQ~!äw½÷´rW2Þ,©]ÓW¹³ç>I:ÑPùãORñÆ:âTa µC±SœvµQyFEœ•Rp9xˆ¬$b€è=ÉÄ«™œE¥‡¤Ö2þ5üÚËê’sù‚KAvãDØÚâ(ìT:=iBBBB^•ÊÖÈ20r¶Ù^k•U_ùr ~D›½Ôæp ÊG¹ˆ´VLŒ=õìŒ8j'RVbÄ-EäY|!ú’Ýáê -y3õx„„š}ðýI=åýTÑê°/yïtQWû_û%]3œl¨kr챬x.®¥]X÷òìEb•›¢ÖZs,X'8ÌÃÌR¯(!!!!!= €1¶‘G—ÿ°J;ÎÕ>0—fŠY¹Ó§ßQüSæŠR]ºlþr«¸ê~A±ST70äžl´^gºCÑQåâ ‰Fe1GAïHKsKM­<˜Ýï£zì‹I¥aéHŸ)Â5u@=@4ëÊsMwOâ¹ý¡†’xé£3y³lÝ<\«ŽËr?}±·»J¡{ïxšFv2ÂϓԢn ,¬Zò§Ò‘àígìœ É™±p[Ì^lÛֿ×ÞÖ«YŠh)Æ%€æ?ãL òÛq[ꮌÃò2ÀY†á¶ëÍ«cÙgºBWKBۈ⠦G¹,6W‰¥Ìp‚|+ˆðÝëã[Ãñjÿ‹-m÷ßä¥cX¸WÃM.ˆwƒ9O[”±• ÀnRã«ïéO¥4I/‡-ݤögcäÄ·Áád½3fÍ`ŽºW½®éè ïJ„þ9óÅÉ”¯fÏ*㾟~ûX³â3R’ŸæTê ¨AAAAAAA ã¡çLAK[&ÚxY(ná”íI”õøÈ›e šö¥HsNGlb¥ÃÅm9ÍûåÚ¼<ïo†ëN6½Ôu=:úò¤æí„ ȃ¤KŠ{á†îYÌm-´µ¢üÙ®«ã(…2ëT‡”“>+fIf#‰¶S”6¼TtçŸÝá—ØŸUÞ¤òQ*°­ÊûÁHA¶-1‹Ó;eÝ3ûii|Öà­Mµ@&ÖUrÔQÎíi0ØÙÙ(¸Y—_³c¥Y³÷|–WvTŽc|fô×]~t(/X‡8dîÆ˜•ÄÛ‡+“S’hj»Z‚˜ú¦Y€ê#:´ä“€ÇãeÀÅ;bâ¹Ù¬ØmQ¡úø+MÙøVJæ” ­Ï/š ¸VôQ˜X\9Fö}ŸoÍùÚšÌ$àÐ 9Îb“‹†FvÆÎ}´ç¡[Su×û+E ]ÒFô½Nºèªb¤!)§§ –&±­ÙzIWBBVÄläØEúÕ†ñ.M¹–‹Ñ­kÏMEÁâD˜hnúý æ0ؼv&!Ú1iÿ§§\¾ýÛ|ù[$Âýþ-~{{{¨÷+²„pñÇÅÖõobÃ6qk6FÂÁ!¸ˆ#rºŠ:€SO|ÓL³bq˜™0Øy8|:³AÙ³ çµzݪµ±Å^öæÍéT¤]xléscÎlY½ ì²nY›kV¤V®)´^¢5Ó æ™äíygÀ³ߣk®ÝæÉF†•âÍ·Âí]¸V²cñËkÓ¯*Qø€í„‡áwŒ7àÜkÚ-9ůÒ²WÞÿ)¯e›݉ŽN=ùElhþOŠ¤Íˆ[“¯4ÍÑx!GH•Ngî”Ïg?ºÖ{fXe½@Ϊ¦$â)˜sL´]ænÌ2¿èëÌÝ~!^.U¾Ÿ$ì ¸Œ£^‡n] ž¹s‚‚•ÑqÝ D8”¢Ša]®WVZóËUdíªX°Ü¹\ŠˆJSïO?ûG6+ †ïi2åÜP7d¾Ô¶`šÇÊ#{nþ;/°»²| Sˆ{±fpå?sÕ£~üÔý09i8\ìŒû:©8‰±Pðpzoî™ l>„bE)ø6pó¨ÒŽÜõÑ'=xc EŽ¥ìO.þ·h0ØhaµÁ%|b"#10*$<ÓdnÆb£|ngÚQ°ÿžžÞ¿‰Ø|,o|cžã䧺^€H˜„—‹|ÙRSö_ÿ¦EëÿÈ­¡ÿ0ïOÁV©ßX‚‚FÄøY†¬ñ.*16­ÝÇsdäž´4dogVšÊÍ"ñNš¦’xl?lãÝìÜüö4[kZVún»ÂÂ(:Tu5i_0±Í ÃXzÅ-Ý7‹Çim—…'j¦ÙŠ*:µg¼íLy'CÛ2âåÄ¿ 8nL£Ë¿›R=ué¢D¸VÆØÄžnÎÿ$cë•Í ÃJØ›p?tÞ/äžÊvªm˜‚³«x¥Ú˜rC±±âå/f/ˆÖî2eÞë_}:#ÆÆÚ1e'cv©¤õ+œ˜!½†öx¼ÙÜ­šÞ1;FCàþDkÊI ‹ÚRâ;Ä0@ü¹³Y vó[îw#­½üçjÊÛaxÞñ*Ì6í”C·9ŒÄ'Ý.If±¥Àò++´1aæ5¾<¾*æ=64çÕ n÷[\tÆæ_ìúk¾«6e•õuPå.zz ¼4ŠD¸œD]žüS'ϵ V´tÿ)A½2ry®#.2 RÁáWÌ>ú™$ÛPáâ裞ì ÍÇeZ5 eÅå˜ÿj)Í-4VB+EixWß¾ÚâFolN»è×ÖÜ\Ë™— :•$•`BhÓ1ÔE"ú¦ñup²«˜ö)~F1STI·g^T^_h„®’…á BE)C@îCt§¾Í• Äï·+CRÇKfXUÕÓ¦ríùE‡‘Í·k$½—3þe·[jGÏbš£HólCM,Õ×´(ñIK!lÀ=ºBårŸu<“d“fi}—3³{ºâZú¬—âûv+ðåÛâ—a÷Ã"—Ý/¶¤%BýFž!0ð€k¬ƒšbÖå+Ñ‘•´ã XArƒ›ª[YGÒ!4¥^£d£¢ò½¡J ÖS/@¥Iu‚Ðx«ÌœÊý)~UÙùÖ4rÔ¤ãXqï Dm0ü@Ç”x3SyEššŠ/@t0ƒÞ™°Ø˜q‰¡6Óóæ­4%„Ç ÕjìðZ|¡Ú*TNÉ(/~£¬‘—âËk!u½Í'@²Šõö§oý©‚hU¦ß™j¡jÆY0Ó†A¢CzÚ»×sµe`ˆ™Ë†‘Ä~ë-¨ÁÙ“‹ëN©o¦CTAâ—0êœ>Ù&lL7뙳¹@#]Å…u0ä²'ÌÏ3j½t*ÏéF^cŽ#7íðrä·qïiR‰ÞX@iêUú…ë'Ù™e1O?ؘü7{†< rgͶNÀåÔú=VìTRäy›Z¬§ç¾ƒó]ÐÞ• üsç‹“è%så\wÓïßk|OæjRBSüÊžVE‹WJ’V°Ó¤³”åéH&´ NvU8ÅÅ *Ai]r òêõÿy(\ñÉ¿›VmÅŠ?ÍŸÏ+ý¤Œïû*|]-̈¿ÍÿΫý¤›Ù÷G‹¢72#ÿ7ÿ:¯ö·ýŸtxº#s"/óóªÿi Ù÷G‹¢{:®²‰Þ VHÍp£.^Aô‚Nb5pU/s|‚ÓK¦&l:}ÂqlÞ¨#ynÑcÛ%¬ö%U]€ª™yò§Òœüv6^í7®ü!×÷íIо6ß·ëIÆ Ä7¹1Âú‡!î<ÆÌqgËÔ^V%[לµšg™ø€eÈ$ Ì›±LøY#s­òVgÖùNž¡CM>jÌÇ‘ sánÂúî£â†Hñ‡P´+»–voÆsŠÆýõ€~ΔÓ)sú~øqSbwâeÓ¦Q^¶–ùœèÛ]¯ŸUóâXßÞQ¡íŸ·âÙµk(¡QIÚÒs¦|ƒš—ƒ~ Ü7›-ë¶äŸTb&tÒ嫸¨§c¶:vïG »n÷­¬ê™©¶Y5™d"# „ûæš$öIY3Ùâeѽ¯B¨ÙdkK@ШÍ͈ùìïç•þÒhÌÿ³î©nè±µBQ•W6mEcy^Ÿ• Ïû* w ¡–‘b¥ÆR¸”,,ª,ç$³]zÐÇæ_ÊêËUŠÇZ´¯Å0íx†iÓfå?©ú‹>ãÕòû®içb×ü8Ð.½|כͯ¶ËSñÙ|y~“¯úÛe±®x 0Ì猠-çv°Õ²•mB³e+0™nªõ=F¤x„eNœÑجî”Í„ Îóhu ßj×mïUH±.YY`m­WU•Ô„Bó~b,½Íí¶©]µ Ëj‚‰GEZ À‚TúE 0Ç!À?„Öß ë½yúýê[>gLÌÄükðQ8„¢"ˆ2Ž÷sƒe¸Õìç^iZÜ­ÊEgZ29ê8 ¸§)È4MðùžÿŽó;k­´ØPÓMÒæ™Ï @l-GA®èî‰ßÎYG‹5V—T¤ÔÔQ(ð˜D„‡z?‡n*# ̶žWëÉR9dÙÙºŒ6"û¿_ÿ5_í&ŒÏû>ê–îŠ5ìèzºÀLðb²Pæ7 >O úA ÄjFŠ…äy…¦ŒMLxCħd\.í f ´³Þ·UjŒ¯µ!”ªŸ!äœîÕìñÃ;š®µßbÚtM‚A¢JºL)F¬11A¬ؽòÖWUx­£MÕ¬(ê)Œ]e.z¦NÔì–v”‘¾MZÛÓ­×;Qª!ÆI\"š×ýøÇˆX‚¶ ƒ± 7µÞPîvóFqB¬î`´—„…’º ЩwM9ßøl6)áˆål™~5”ß3­úRÒÜ|¶ÇèQÖµ:ûê¹ØNÍ™¸¾<‘f#y3¸¡à¿ý>ê»RÎÖÖ°T±*¸°9ñKù~«œvnë±+Ýåu&½Ø¥œâAh¼%û þT Ë¡:ª½îµšXÄH"¨iàE¹ÎäU8’-E½ZÐV} <׃§4öL×Pæ¯l8„778ív¼Ã/ÌtÙýïíoZ",ëkf0›‹³È8“Èãñý÷,’7þ\ο7M<⟦›ü—fxVÖŸ¥ä:~[*=Úʱ¹â©‰Q©:ÙÈÒå Ÿö'®q69®;ɰÑÍ0¶¨ft\w0@©f¡Wxh3—1AÄ7ÂÔ¢CF@øÌ&6¢(»J-`ig!ÀDFôŠÖÆê ·V¦œ {lý¨ÈýUœƒWZÛÌÕQvU‹?BàIh€ðs—‰›€ï²±Ù$fΫË{é±±¦»n¤ö¿uÜïwðÝf­|ÕB†¿–î1©€^®¶wŽCùf¶šÌÚãα(*Ñt‡˜³>z÷#°X'ó5)!)þe[C+ è![Um+9-åL¦µB”¼†ù¬Ûže6a¼ ²0^ð}¾^»v[ÚÏ«rw**ž¤¢YYÊà”æ:/t5¹‰%IGtäf…š¢h·<ÜìÊÞu`ö¼ágÄDÃ÷]®{9åû´ÐnœH¯„OQ¦`á—|’´m"ó{%GV9^q3Ýs cvsÙÏE;<áféFߊ‰®šk@UðÎ]¡$R¨`'}á㕞jˆ`Ç{Ý®Ú6ºýžv\Ãð­4ÖVjÀšuæRÁVÓj+࿘ óƒö–ÑÈÚñ«6ë­Qvj4¥\¹$¥W·)¥ïá˜mŠYSÓ>w}©5Ø¢»ŠŠ~ÄÍ)W.cÊh —·#©*ÄËî«8°(jWÚ[ΩÈ9h #sg7ÍW6Ƶ u¸¢¹r¦IÈΨHv “?-ÒêjXêPfV¶#*Íήb åÌQn4)Q¹I¶­EÁ9÷%ªX¥5B dýTé†X3­Ã:Ý!>¤ÆN ŠnþäcA䥭²8Ö~BQCK‚"cɼÙi¼¢áED—ˆ‚%”À:zC:i¸Q"a1D¢:$*†¾+!@´”4iÅX5¤ì¶ž KØv{HVØYÊf:9ÉÙ ÀYÄlB^(ª*õŒÊÍ3*•A!Òz¥šG$ØœÒ(&ˆåk~#4²)Lzx´ÒJÀy|<ê9«ÈMÓW¦Õ Î‹Žæ¨U,Ô*ï ræ)!¾¤2´Æa1µEÚQh+K9 0÷¤V¶7Pmºµ;ôm†ÖÄd|p³~–3Y«ÛÀbÉÕr]á]Rø(ô§·;@áÄuˆá]ÿkÛî¯Íu0Ì GœWùµhô­…ÌçÃÕŽgvY‡!ùlÈ‹nO/}b³-ñq9ª8‰8„eÚ pg1†|`–IîGù›—| ®Â†º|—Kkrˆ¼-Ù××}=•&Ç[·]à@âo¹_ÜгO¿ÏОù"0óÛ0 Mø)‡8ʉâH’4݇cƒ+y£g¦»ç9 ÂC‚F)C@×t’Vc$Õ":ƒ°­× µ7ÃxǼ5tYvîóJ‹Ó8ºÃ˜JYLmyÓ.ô(!Í`W¾œY„ʇˆ9 RkU™ÖÍZ®÷n0Ç îÖÆöLd¸ÎÇEóîò¢±‘tLf!ÜœÖþÉö;!›|]þR]ûYÚ‘±ôèC„‡SEÖÿ>zîº,žlNYq Êóv,q¦É`4K¤K§úWã®*A¸üÿ†á¸§$ìeËÙgȳŠ™ÕœÜGV&˜ÆG½.Iµ®Y^× ©:WÃ87ŸðÜ6Ã’v2e쨺sÑS:³›ˆâ&˜ÆG½*wI•¡¯ %8âWSKÄw³`ßµ?¿z@o@Ó)ü3ô&œ3²—x«Ñp{OÆÊxZ¿âË[}÷ù)ÈñÐÜÊë‰×ž/Ï´—+´™¶x½@qNA ׇɪi•„×µè°öV2)%Ã4aò·Çæºß6ŸçÑv×@OzT'ñÏž.Le{¶yWôû÷ÚÅŸùš””ÿ2«”²V šïUÎ`ÝXØ,ð}ºáh™¹t?·àey]ävæÈ¢ôÎpeë=Ô²Z5u|é‘´°Oa œÔ¼Bé‚#œ-ˆ£6ÜÍÖËfYsëšöŽeh+/Á Vé0誾é uÕX†¹¥ÀU+¥\a…®¼{0Dx?·Þjò÷ž[ÀТôÙÕ‰z²’È¢Ó3ïIuZd®hq(Ž‘¶ôt¤‚]N§fƆ]yí”æ½{%u•a—uÆ(eg(›Šrœ‚@ ÕbviEÏ?y*³©xâ~AÑKT9±džl´^Qp‡¢¢ËÄAŒÊ`½¢±ii¢–Û3~µé pÜÖkˆ©qJqiº©žJDD£ÌQjŠëâ÷®(i`Æ\#ÛѺº6“ÇoEéWV΋%B¬¼<å1ÔE,~!=ÎøÛª¯ñª .âƒÎ–ÑÈÚñ«6ë­Qvj4¥\¹$‚)*Få9SwMÑdüMñ_šªAÛ«Ïç*ÀéK¸ßøðý€£æÜ›µ—/²–Î}‹S:µ«º…@ÑxÀBqæà’íè«Êmå®U÷Mòz&×ø/ÍU$;t¹üåTMËÊ©\ç!JAgrÒMk ·ëȹXˆ~] 6¹íø+ġч¿|èÉq²ÐÏ#½|ç‡/8]ï°1Ýv¹ìç—Ü Yºq"¾3‡ »ä•K $¬›¢Òz'ø¯ÍU%ºlþr¬ vx>]˜í‰mËœzW²÷Ýš"‹Óg 3u’ºY-º¾r‘´“º¼„‡ÉWñ ® ðÂ!Œ øOs·c-˜eÏ®kÚ9• ¬¼K-[¤Ã ª»¤–@p.hªU@œ½*”£šÕ¢PQ‘%3Í RÐ) 7¡ MR1<””ÀQijÖÂQ/±‡gÿѾtd°Ø¦³ÈïE-ѱàäuàF*7DN ¼íW²o;³GQzm ½a¢ÈÂÓœ¥Þ€Ø«EA®'य़ÐCï£'î|º¶vVcÛUÍ9‰µpû 4ÈܹÕèBôS`±Ô)Kt¦‰\üx~@QónMÚË—Ù»g>Å©ZÕÝB 4^0œcÁ9‡x$“­2\Zå_tÜû'¢yÿå~j©!Û¥Ïç*¡n^UJ§9y¤ÐYݺÐZb«’ñ IÈ|“Ñ0stZ¦-©V%…9@JiÏ–ˆ“Õ&' «[,¤I|:°œùù=gÝh¿H°LðW‚çoƒÐýÎu¹@ë~Êzý×·_?ƒI&ð]eËáÙsè¡—Øÿ+Õ+áYþƒõh¯¡ÿ“ü¯T<(úÕ®Y(C.îBŠ+ M,m ¡§ –œšªÈCª”B¸Ðµuªk—]©“ºHØÆš§aÆ—T¬fC˜åQ†Aÿü©î󗣨ꌶfÒÈ^ñKÖîV¨êûtšR®|‡”’€Ñµš7d6Œu‚<â£Ò Ú{O!kÆìÛ¹Z¢,ìTiJ¹sS@ŠS#r;*néKû–ØX5ô^æf=µìçsvÚ=Ë[tUOhÓ”ôäè­.”Ή+ ßnXe­èö3fˉKkd>-fOCwS!"ÊÈjxÃIÌ5LX®Ín<†Jú›kÍÓ[Q¦ë!Äâ0ž<,YÝ×0}†ÇÜ´¢ˆ!‘Òíz.RþÍ4;m_gʉep@ ÅP‡!ž“ä·Â».v·dÄÉ]VÉts_—})an8Œâ(Ž˜—þ´Àß ]·yB·ú2;Üo\Å–’!Ý÷bÍyå”:û2hX%êÈ cLÀRéÊ©÷%†ÊñZë=uŠPüâÈîf!om뙟jW2å¥M>è#]S7.TúR [ƒG”ÚMk(2Tª'½çÿñCó'þÉÔâ_²òŸº¿üÿ³ý¨'3VwÓµ6sñ»îIH‡cºR—Á4Ç)¹A»^£³báBÆpòUønëSÏÝB€ùQ ë­ñפ,q‡=*ެÆÓ†-{KB•w+d!½ÚÙŽXzù)rK—QZä™Ì}r\펰GƒœTzA›Oiä-xÝ›w+TEŠ)W.cÊiR)g‘¹•FaóخֆÿÝvÁ¹oþÁ~ôªôpÊ ^„Ó…~R|Uè¸}«…ï9kÅ«þ,µ·ß~Ô¤#˜S! µ2ïN{wèñ,=g9÷ò–‰¢H©µ›oÍgìÎÖãbZþ^5ø³]ä•i[rõ]ÉÐÞ• üsç‹“!^ÑžUÇ}>ýö±gÄþf¥$%?Ì©æu§g9J¬“ öµäˆ1Ѷ¬„*`ÃèÑé Dì±$6ðÉ=+´¾ÑOED1„åŒÊc¡Þ”­R™- s1N3ÄLŽù?v–Fæ[ÅU+·]5{™ 9Ð^sä–$Ó^÷;r¢c˜±ïÅMQ$FßyµQy}¢’ºH/ )@4䪮qq²¢Ar¯¯üˆ(V²Þ”X̬¢cG2çíc'ªC?+Wv)íæ©ÕÏÀÀÊZÄ;ç/é€ Ù-€¿P°@ &Ôy£˜Àе1JAðëÞ+ˆÙÜ<ÛÁ¦«J.•RQ8ñ@Bˆê=Èœ^&,4FYÍ4o¿ZäšÈLÇ#E’ˆ±Úø„"Ρ‹ òQMå7 zj(ºD„ކÅG‰ˆM¶ËE‚xŸ†~Y4)æÇ|J„¡vhvŠ2nÖZ¬¨É3žšŽ'7Õ‰†f0Ž£ÞšCú+²wA*@ÑcÖŠ™b(u¿&òe®ÊûE=5Hn€”fSjé¡®-6Æ&â”_ˆyï~m,Ì¿‹*WEtÕîd,çAyÏ’A$î¬éÿ2ŠŽ"׬]µDQ~qäÕEåöŠJé(¼$(H¥Ð;’ êªçl­hú7xÅqCTA<3¯Fš/.´RWI BèBBE(Ü…Þ©N”¼üT!–¬Z°kW@gY£XÓvV˜¢Êl¡žš1 Œðùsõ9r%n¹ds*UϰcJU—œ¹§+ ÚXlyq»5o¡í¸c0RGE­káühô…"VhŠoɼÙ+´ºÑOEE1„åŒÊa C½5V«žÉH6Õ9‰Ø¡âG|{K#s-âʕۮš½Ì…œè/9òI.´ç=ÎÝKAë‰p„.ËñFMÚË]•&sÓQÄæâ:±0ÌÆÔ{Òs+6W´P)R‹ЄPËC­ù7“-vWÚ)訂Cpœ£2˜CPïHµF’ÓaIbž+EÑùX†2~í`¹—ñUJí×M^æBÎtœù!š÷Q$Äù’B÷…Ð02–à„µœ¿¤@'eV°É¨^S@ p Ÿ0ò0s›¦çÚ*30©]ÕOlÅœè7)òNhvž1N¬ÛhNß z§G…~ ÁiqKx+!3!@ŒçßýòÝrž gTÄæ‹^ÎØ]ñ°·Zv¾,ç”Z(Þ´q:¾! ‹#„ûæ†aÉY®4Búè‹ÎÈ]ï°·Úv¾,ç”Z(Þ´q:¾! ‹#„ûæ…«@¤:"dz²{ì-ö¯‹9åŠ7­N¯ˆB¢ÈÂ#Â!>ù¡hKäq½¢èª"ˆÛó&ª//´RUI…á BE(Ü(s‰6V´¼b¸®!ˆž×£M—Z)*¤…!t!@¡"”@î@ºõKt¥î×ue«¬ÕÐÙÖhÖ4Ý•¦(²›+ÊÂä˜&ŒsC…âS0蕲® „á‡'ÅXAG,;Uçm¸Ñtê³™R p«”””…,å¬õKïKPhyiw;\ïDïÈÊ*j‰"Fìëͪ‹ÍˆJé ¼$(H¥(hÉE™Î.6V¤"ácˆßGw­{dšM+$°'»Â"mf÷óš?ÀòE®v?´dÀÇÆdy›ÏZ®C‘»µî#a» ©Ù/ͰîvUsÅ­e®%ÚÔõ~YKÒpðøM€Œùq¼EÃ|›x³fÊ> +µôÂf˜еYfUW®kÙšÍ>úbhðÓ$–4§L6‰Ün¬Ĩm½ºÓÍó²ò öŽ7¬´ë8€¥‘DˆB}Ó@l¥®„*í!-i½×‚–Cpyu‡ÞúÙ2¾b†3<–Ĭ¥ò×*b;>0¥meŸwßNƒ¤œoø.n²¤Œ¿Tßý÷¯#mÊ~:¨×ƒs™Ùˆ ðq .Å^æW}¾gAåË Ôë¸Z$¯o-¹Ž5çj¾TÌ¥Tè$§ÏQNŸ ½<@Á°Y{’r5_†ÔHÈÔpÚ‰ŽW•ŠU¬(Ë0J6ôU0°îÕD*²(r° WkCEé%YZÊV|ITùwш˜§³!ïsÚ•ªXU¾0< m’gâªT†©çÿhÎl)ŠO nó?|´Exw6tÓmÖÜ’f¸l:úò¥W§ X–5ÊU­•ÂÎ\µH-t·Æ×ù‚ñ“fûå¯ ªÚ>ˆÊ3ýòŠ6£»GÑbf0HUé÷ÅTŒÔH|ž2dóý£ÿÕ0þÏþ!mƒþ^_OÅV è%áj¢,•eœ¹jZéo¯óã,£ë?(¥xmTîÑôFYGÖ~QC†Ôwhú/DP¨‡’ôŠH`…fÀÆ›dK&¡!+CJPè×…ÔÛ^cåñ’§ŸìãÿùLgÿ¯ÿ‰[gÿ—‹×ñU1ì„0˜ªd#ψS¼åœ4gp²‘B¢œRÈCÌP-R¨ÁÂ9~+ÎQž@ôH ÊN#¡+2‚ò'å’ÐT· v 2JzBBk‰Û•»1MsÁ`ÈK_$ÕjC¨ÅCÈiÌy,o¶%JŠö!­Ýƒj@^sJ=•¨Ùfs2í²ØsÄïÇT*ù†Ø­;63ìöˆ7¬œN¯ˆ@LYDxD'ß4Z€â(EÇ µåCmJ[)¡öïp¿ßŽÇ®PTåî)°C]™„¡¨ò”Äyk4Õ‡kK­sqø\4¸ˆ`Ä36lÚÙBùokvϺä÷Ñÿý¯ýZ¸–ñczÆÍ­ì ¯3¬·A霈Py€¥epsÉ ý‹†“ ‚dRŠp¿ÄžJ¾êYvµ’$Õ‹ÝtŸ—ø–qÌÚûŸ!Ùy¥}­`¦á¥ÚÒiåþxò´ú.‘¤Y5±C/-–î-EáeRÛ+WVq4ÌS‡”æ)ÎínÝgdEœêã°ëUzѪ»CûÖp¶ÃyÙÒþDtSøÉbË—”>¢FÛÌËjÚÌVÙƒ#%Å*ž2Eeb%áä(ŒíTüK°­=2|ZYä*«žélý“Âà2⣎œ/™Ó—Swk­º{Ò¡?Ž|ñrvÊè3ʸï§ß¾Ö,øŸÌÔ¤„§ù•g?ŸÌVÈú†šrÏUØ[A MD›C€—²csË‹ÃʼnˆÁ(°ym¶¼”6wBàæn§bh]½öÿhyC°vÃu­¦ÃÐ*ëR(ÝaÄ 30ëÊrîJá[èñtFåD_À?WûHfÙ÷G‹¢Œ{9žÎ²‰ÛØì”9ÂŒ¹yÒ 9ˆÕÃERòß0¥¤—LM8/î%»bÝ´rW|VõºëTu}ªM)W>CÉ9Ý«€ïøWa³eÍZÕìAøtOÃMÁIWK 툱LLÐÝ›)غ›üõÛR(ºÅ’0ÌÅ1µå9#pž8ƒevsö¨ ×§²Ï$¡î&&Ðù¯[…ÿ›žWûHüÏû>ê-Ý…°4L®U»¥?ôÊÿi'3þϺ<]ʈ¿€:¯öÌÿ³îDnTEüùÕ´†gýŸtxº,mP|F¥]{:ecy^Ÿ• Ïû*  ¡W+X¥q”®% *‹9É, èwC™yK+§üZQ”? C0Ì»ÌN\Õ†m eõÞ1Nn#”$%0ê#Úî’q;7³eÁË$ÓIÄ|•È7ÊäkdüV)¯kXÆÕ_4¾ÅÅ *Ai]r òêõÿy:ùŸöVP_Ì,Û…ÿ›žWûIŸö}ÔÛº,[•þu_í$æÙ÷G‹¢7*"þüê¿ÚC3þϺ<]¹QðçUþÒŸö}Ñâè£Îg³¬¢vö;%cp£.^Aô‚Nb5pÑT¼·Ì)i%ÓæÇÎhNˆœ#¼nçÞZêŒùÙé²c8ŠQâ0‚žù§´û2\\±M ¹Ë£W½ejÃâ\ǶÁ®u²Qs9ïi µŠøÜ)gÏÊ!äêf'V äùE©}ŠÍ¿Ï+ý¤ŒÏû>êöî‹ÂØ&W*ÝÒŸúe´“™ÿgÝ.‹ÎåD_À?WûHfÙ÷G‹¢7*"þüê¿ÚC3þϺ<]6¨>#R®½2‡1¼¯Oʆgý•¿P«•¬R¸ÊW……•Eœä–ô;¡Ì¼¥•Õ‰Š1“wCÜ%ìfÓ>Òõ^1NêmÝ=ʈ¿€:¯öÌÿ³îDnTEüùÕ´†gýŸtxº/‡‚â@(‰]Õ’ò¿ÚC3þÊnŠàÄØÀ¸6¨²sr €güŸ|CÓ…*‡›§ XRéŠw?ÇvßÁÿÀT’¤î¡¬m F;C:™²šÊƒïrH¢ëe®%àiÕl¬PÐB ³Pú™Kˆè–^Àí–‘ˆb.8²5Ÿ4¬nÕRl/mЧ`7|HÒò3|4¦¦†Ng©XQPr8Èf&¨Úòm‹jâpQÇÂÆŸ ¾zÕ^ŠQd/9`‡Òöód™b¶y+>cŽAÄ"ZD@}3KðÞÖXGjà±xØ[‰Þ-utèF·ì”Ø—¶5†uuÕ À%¤ûþòfÍ­è üY@[ëÝŠYÎ$‹Â_¸ŸåH'.„ê’÷¸h Öic Š¡¤{ç;‘TâHµõkAYô0òc^œÓÙ3]Cšê|ipG4’{ì8Ñ“ÙN̺•Ù«§%î´â+IJÓ ¸§9È$ž °»C >. ^ÜØ‡fÌíEP5¥e6Ý4Û}×gµ0\…8Êü^O±ñRâpqÉ!·:õÓ‘+#j†gEÇsÔ*–jw†ƒ9sSˆo…«y!£ @üfQ]¥‚°4³à"#zEkcuÛ«SßDøÂƒ1%[|ZÃQ‹;{«|CªXêˆQ»]E.½žiÃý Áâ±ØBÌ3¾m¡âÔV¦ªªþ+¯ÙX˜Øû—~½7åÎÔþ%Å EÑíÐî… ¬ªçMé«ÚK±.´yœ1xÞZ=¾Êìœ|Ùg–Kg†Í„u¶å?z1]¡„cbÃNuÐ×JÔë¶ÝW]ô÷¥BùâäôåC<«Žú}ûíbωüÍJHJ™WPÁÌè 6*ÚOÉo*e0å¨r¥ä7ÍcÌ5<ÊW,^¼Ë—£šSsîEj9Ú“¡—äc2ÃãuæÕ]–{„%tNn#ˆ$R˜uäÖ— Ãö3cw™?œ™=jNR›ÀD§Š8gáÖG|œ›7?s-ã*V\¢š½ÌÆ”«/9s@ŠTtnnéE!Uo°=3² ÂÝe7iTÀ'¬ùÊ|õKµä R×eKÌ€ÆÔeE<É¥!.Z%Ú)2†ÈadÆ¢ª1äMj sÑ DÔE“kÍzö"±«f,ä¯A–³ç)óJ9äŠKs³-$¢ªBmÅ'qr.·«Ï÷MÖmW5ŸÞÞÉ”õÅ0‘mÅfðöy©$R»™—CºRHT^Ù—,P¼«•“–r #¢(X/u9µCR¾ÒÞuNAË@ HÛÎoš¶a¡æ]jS°ÁÌè 6*ÚOÉo*e0å¨r¥ä7ÍeÌ5<Ê,h^eËMQÍ)Œ‘DÚ©ê¼ …-»ÜoH©•‚$ˆ6±ewžYC¯³"—«$Œi˜ ]9U>ä´u(Ž¡—äµC‘IæËEåz* ¼D(̦(è=è)sKM‚ªÞw½3±‹ÂÝe7iTÀ'¬ùÊ|õKµä Vk²¥Ææ@cj2¢ždÒ—-í™ Cd0²cQUò&µ¹èƒ…¢j"ŽÉ…¹è½{ X‰Õ³rW ËYó”ù¥ É–ã™hÌRЍ˜ùPBl6G <#ìYCÃó*~ËgÜê¯Ý4ìúyj“J]²çä”çéHP½³/Z¡yW*='/!—$¤sµê'X/…9ÅCR¾ÒÞuNAË@ IyÍóVͱ­B‚K­Jv\Òêw¬Ë¯âj•Á¤5¤F\çåE’[ê²^·Íx"ÔU!+kÀ™}‹7›_óVKÿ7—÷ZÿÚìú=)5¥¦ð¼íT ’: ‚-n·6ìïÈ7Ù{™ùQ¬Ç@”ç FfÌ2•rA8%Š ¯€Ç¬Cê¥)¥ÂÐÃbÓdFí3ßÖ;訫%PN\”€ùCÈ•~® ;([ƒy,/¦µ W™S heÁf#䞣¯9¤=÷ Ù ¿6Û+7ØÉŽd~rcõ©L¥_€þŠ¢Z@9)˜y7Ф8ZÅÈž)S ¸s/ÕYQt¥ªD„$Rˆê(©±qá!2Îi­Üï¹®KN ®”ð˜5[‘AØÜ'›Žˆ¶Ë™}©¶åNbv3“ ƒž²Ÿ!Ga&šHC¦fGŃZõzœFLÙ7-º:ƺ• Ç[·]à@âo¹_ÜгO¿ÏÐ’Ç‘'fJc `éÏ=^¯=‹ :­ígÕ›Ù+µORSÖV° NNc €µ·©ÙKÇXpãg…Z¢L=7ÉØì£l4lã²d.§…iªYY«hט!]¹‚­¦Õ^øVqf* ä%I­Vg[5j¼ÖCðÃXˆL ØÌê,lõ»À¹vj¦‹+4œÉH„¸‹¬ôå4ó8|n&Õ.#‰w˜e ¯ yÞúZ®ö/ ÆÁ=ð´£æç®‡îUû#¹ÑŽedbSeO`µiš‰Ž¢"<ÄS×ÎÐÙ@­›ìlD˜¬$sJmÆÿ9(è&~A±S,I ¶äžl•Ù_h‡¢¢ ÂpŒÊc¡Þ™íli-6Dá¾:â£×q*$oŠn¼ÜÛ/ Ñ‘f 7š Eœ ¬ i”8€eÝ$¸&––ÊòÂmQا‰ÑÆ#ä7Í÷´²2Þ,¥]ºé«ÜÊY΂óŸ$©6éÿ2^†Þ+‘èò‡×ÙP[YÅ”«LD¤ÐÓb<¾~Ïng7à¹X¬+"Å q¼»òÔíù©äY5@kT?Éšf{K(Ó5e¢ÒÀð”&3²ôM4:W–S¹¤a»#8; át~a©¼ÃMIü-w‡@OzT'ñÏž.LÅzÆyWôû÷ÚÅŸùš””ÿ2«ÝëʹU@3ôÌas˜³ü *ê^w¸Þ±S+IìbÚï<²‡_fD/VAf—NUO¹f€NªÄ?Àÿþa?DÛ?i&‡TÌŒû^ÉK¡øÅ‘ÜÜBÞÛ×3>Ô®eËJš}ÐFº¦n\©ô U<¦Ò¤*/& Qk®-€Ì —ŒÙ*ø~hd\UK€¦‘ÔB1<”§4¢¢ú‚‡ÑN&rAØøàˆâF쓱—1y}£žš™Ö¼$0ÌÆ(hé#tÈœàJRŽ¡‡äµC‘IæËEåHzj ¼D(̦(è=é ®¦Š‰AU!k<ZW:¤?y š ŽQÉ¥oRNõå\ª zf°°1l$«¯Ú €¾ …lôö‹ 9zø¼MmªÁÚËf‘rž°³!êV <&r‰'¢tš47˜U*BRø#$(Ƶ׉@fKÆl•|?5‘ÚiKõÉ/:€ŒO%¾?y¨¾ ¥}AB»Ý1;ñ×ÐÅñ Ŷ]›;¤¢Ùõ¦Ñ;g¢ÈÂQëD'õ3KrNÌîÑR)T” …áy¨WPê…еGTRh[Ô³9ëWP4Ïv-`bÈ‚ºlÂØ† q ~øáööëyom—2å¥U^æ]S/>TúRE)c€>!jÜ($p«Â?±“÷3ü?}}–Ïc·îšv}<µIøÒ}7.lº|ÕGŠý ÎÃíÓ³s3í²æ¬Ìé§Ý(¦FåίBA®I.p; Ji «á»"€U~Ê)¤Õ¯1ƒ½ÃbÖ¨|=¨Yoë”åê¯óµ]Þ`–k"éþ•øŠ‘–??âHnλ²öZ3ÌÄ®–ud7 Ö‚F)ƒPîKmj–'¹ä€ªN•ñ;Ž2ÇçüI ·g]mY{-ŽJégVCpœÁ#Á¨w%Né2¸9ä… Ñâ!sB˜èå¿›2Žæk÷—Û9é©AÈ^€ˆñ@ïNOmá%Åàd†n5ìAæµöcÙÁîТ«Ôîª&¶ãˆÁ."ˆè‰ëLíòÞP¬Œ÷«ãâ_™$lU™äw¢ˆsáÃë€/œB`.¼ÜÖ3î-œp³y U+ëÄÀSL 'á(ËËš¥ª†ÌÖ«f±’ƒ%JZ½±C²Q$O¼±w;8ò»LÛ‹wŠUj¹™; <µ§šìاA‡ŽoÍ”æÍµ“¥^ýWK·p\<¥ßHáVß-ê9ûúR©ÜÎ}ƒ‹tæ3gÖÑMSR&å1òùSÖÊÜ’†®Wfã;ì,ÄU]é¾Ä… åD+«s½êøÇø—çfIÖyèªD„¥½´¶­},r3°í&fù_`º ïÐQ1zÁÔ²-')&Œ16Z5µÎíD"ï.~G3gUÕÐ:s½¾¬‘éöÄ1¢!g­äñË^[Yݹº$3(‡!sžá™®Ü£ ‚ÃMÝñ7TlÍC]oC¾¢®üè ïJ„þ9óÅÈ‚½#<«Žú}ûíbωüÍJHJ™SêWRÒIQµ¯$SÚnÚ²ÍmBÜfx(ZM ¨s êEfÖfÉ{,ù…_]ù&ÓQ˜UõßP´#0«ë¿ ¡h^6³«(‰ ïÐPÌü«I¡åp ¥¸!-g/é‘gʆ´É¨X‘à(-À(!P@"ŠžÃ÷Kî,ˆÙ!÷+eæÕ]µ7HZ©)Ž0áGÈŠYAµÔ=+ð+#,~ÄÜ-v5eì´g™‰],êÈn¬ŒS¡Ü— ÚÕ,OsÉT+âwcÏø’nλòöZ-•Òά†á8‚F)ƒPîJÒepsÉ §lXSµ¡Ì²Ÿò%£Ü¢]¬hÕ¡4LÓº«,ʪõÍ{3Y§ßD4xÌI,iN˜)¸Ù¡XŸbFíŽìŠ2·Ÿ¶Ž·!–9Ö—¨ T²³RM Zg=e$E,p¢ÓÍKÄOxÂ¸Ž ƒ"ýôÞ¬¶e¯g®cÙ¹e °¼ nܨÁ –š'¬ÐÙI-kKZnÕ0÷h,†ÿ' S²Îâv àÞ½Û©‡aJš2Û)£<ÜB¡]Âp’ªaÅÚîNfÇÛ šâÝ™§6aM¡Ë¨ÔÙ£¦Ü×g´ °½˜S‘ÚSµ<õÐé¶šªÉàÜævb <C'b¯s=&®CÚâí§¦›(xsv\<Ķ;ç{uÓm6¥°ûbT¡h¯bÙ Ø6¡äÐuç4£ÙZ–‡3.Û-‡ÏhƒzÉÄêø„Å‘„G„B}óE¨ R„\z PèT6Ô¥¸Ò’Â×Óí™cÁߨºòz[²²¢«u ´8R3,ùÊ^”Õ…s€!»•Éí<PÌV)ßF˱G[ 6ÔQ[ø„â‰Õ; ½{f¹gaŸ2­eŠÄ n 3k¬å?":V< EŽÈÇà].VËžWîr‘uu¦Â‡Þ»Ç '½*øçÏ&b½c<«Žú}ûíbωüÍJHJ™KÂŽ¼dÃX±çºÛã»?móÍL›O2´KîSêmö~ªªg¤ÓÇbfíG⡉ÂâæðÓ]—(ëÎ÷åVºQ³#s²æËZÙ…%n–¸6Ä¥°”% l™,ÃNyjÜÝÅJÖ„â4SQƒAÏÐÙ¹±Xœ(ÄâdÍ›a@U9o~É8öGœ8ÛUñÝUYe?YùE;Ü6®Wv¢2Ê~³òŠ6£»GÑe?YùEQÝ£è²+)H@)B@ `+@šÖ†Š êJ²BB´0«ÞÕŠÿŠ>rdóÝ£ÿÕ0þÏþ!nƒþ^_ý?ŠAŽÏhÂ%hˆ"6¼ëÅ¢›«í”•RP p„ ruðØ8pÑaѰמ¼Öÿâž]JˆË)úÏÊ(þR;´}–SõŸ”PáµÚ>‹é*!ÀÅ,„=)!€j›l‘,š„„Ÿ0†s4CQu1íWt7–¼å¸uYìÁŒ¨:âŒÕÐi@¥-9§´ñR¶X°pœ®’éÛÖZ;ïmÅnµaãik¥x°ÚÓ­üST`ðtCx$Ð߸òüC¦Ë¿2c윂ðu‡×DÂmh¢râNv)q8ðÉßnÃîj³g—.Üïà6FÀr˦Sïj”Ë)úÏÊ)é¸m\ŽíDe”ýgå8mGv¢2Ê~³òŠ6£»GÑdVR€R„€ÀV5­ Ô•d „ó„Ðû¢*‡" ¦LÜbÓ–Ø nµRc£Š`¬:²ÏŒ{¸uN?ib¥ÂËÄÔ"óŸ¸7ã¿O]¬=adqå[Ùö~u¿2sgjk'V:+ 4Óœæ)›ƒµðî{í§= ª¦ë¯;ßà¬ÀÇá$mt¿ŽªË©úÏÊ)éxm\žíDeÔýgå8mGv¢2ê~³òŠ6£»GÑeK§¡!&èÈ1/Áø¹ÿt_À³ ¾Åw·U{^Žz'?÷®º÷ÜßGÖZÚ¯‚v“‰Â¯è¦EŒ‡äå< ¿üA´Ú˜óuq}!¢™ÑÏZ*ïNiÂöž+éLÜ+þ­urós½þJï_+™ž¹ÙÉ 2\áyD-®Äw,¦Ó¿4uÖ¤Pë ©¦`kÊrîN¾øâ ™ÙÝÌÕ_ û– …Î%¡Òʋ˩úÏÊ)£†ÕNíDeÔýgå8mGv¢ÈBJ(H,hZÐÑA}IVBL‘ÓQØq¥±Y+X®šBræ¬ûR½Ò‡ln±¾žN¶æ¡hg[miûJ)0Ó ík M(ü¤ÐÝf}YªÕ¸J*ž‰B)RÅÒ×ZÖ§P!êî¤7]”e/ò¨ò "<Ì<ÇÊc2ŠZ™fËÒ]1H¹-ÖEŒ¶ó §”ÔL 9jSæ3J‹h¡²IfQ ¿‚ò ÊÎj­Zúš§$¦[ÕPÆîAy^ÚP¡] ’¥®ädEªÐ²éÀ— ò#(ÙLŽ,‹¡£I0OÃJÎ#xo.ÄÇßéJ‰Œ¶Æò4íÿß½Ÿ­ vtìË’{3fñn¹}›Ýû»{§“Zß©½õÝi0245’û:ºˆNg˜§§!DèH!i.k›˜juŠA!–jS Hqröl´ŒCqÀÅé¬ù¥cpª“a{n€¤åî&ØÎ5S({ìÆgÍW×eÁg¸ëK ˆ2ËA}ü“7jv‰ìü#ñ]V›sz=Sâìø±X˜Üï3nKè¥:JÀ, Çó^ÒgnúçmZ¼Õ Õ×ÕÂ$¤LÖS”Á3öGmÇÚÑ™Žޛִ°9&Ëof´A¦ ¿ÌÊô¨OãŸ<\b˜Ï*㾟~ûX³â3R’ŸæUú¨Ùr¨q¡ç>Hí¿¿MY€>Ô¡eÕ'/SoPàªzù—ÜËñœyl¾Q¶[ïüvä‡b²³„Á¾ÿcåIÛÛ19þª%`Ãí„ܶyÖ¬ ³r)N¤ HC@ÖzòDv?fâ;6#ߣm­ÉænïÑ7‰8‡gÑùݤȉ¿Íº÷õÊÿi:áÎæoEŒ°|@2› §þ”Ÿ´’ ïVû£ÇÈ/›ŸÈ=¯çþ”Ÿ´€/½[î¤g<—Ѓâ—ˆsÿJOÚBßz·ÝGQo§[ÙÖ¨NÖÁ@úR“È>” pÕÁUÎxþ²]1!Z ¢h÷í7 ÞÏJw•áqO¶–Ʀ^¬ÀR©¶R z± ¹šiÃÃvÞs=éÚLÀ(ÎÚ_]*•Ða¯„BtÈfœÞÐÁwŒ¯Ùdmåvõuzlli¯¢lxŽ„‹–×_БèñtFåD_À?WûHfÙ÷G‹¢Œ{9žÎ²‰ÛØì”9ÂŒ¹yÒ 9ˆÕÃERòß0¥¤—LS¸œ XÕ¸Dd_üAÄ J@Ô­&':ó2‹SZÛ%ʺ@g¬‡P Íæ;$[ë1Óà…Œj‚e/Ýì•.è”d}­EÌËÆ™4’U¯ ø¶VdÄaÃSA¬ål~EC´AŽŒ»ƒ­W´ë¨¦ëÉî6øO¨qJI—qRe‹ ¦k·èr×ôïo†ë~ÑÄv¿ uõåKî#î{.MË ûa’¯1uªöt˜¾.r·ÄMj•I8ôüÒâ|9ª™¡ËZy†÷¿Ãei¸b›µÏ¯§*Pîw*÷“9ÚÏÀÄ®UŸAœÄ@4œù‚m¢ñ|–&û~+mz¦2JÊ¢‚‡dj—ò¥IFì–ú;-f–Ukˆ ncÞ‹pS"ÑiVuK Ì£õSF5æò”èæ.!¤++aEׇL¯stŠì·Å¥¿º~° ·©¦^b^/tæ ÃÀcñrâÝé™¶>M5þ<ûéå]Y¡cYcÐý®ºr¯t ;ö´FÊíÔ «™gÎEò‡‘;®Ô†—9úÞE7ÃÎ7¬o³BÐki¥¦¬³-Ò–ªH'7Á L:ruèì¼ÓRÒ-QJ?aWÛºsÄON·Õü‚û¤öNYÂQdaâŸtЭ5PöbÂG‰!è¤_ "Ýx°} »%˜ª²§Ð@@8FZ€ö´ä•~d.Ãâ|¦ºõ¾Iÿ†-î‘g#ú€¯¿Õ1Fû>'tD±ƒtI¼o¯©«&f{Z‚°á fR€rÒŸ(¦¬.„Ãð°þVí¾–~+ û[´&íYˆ vkզ鿥{®Ýè ïJ„þ9óÅÉz–yWôû÷ÚÅŸùš””ÿ2¬¡…§t«+j£TÔ³’ÉJ™L9j ¢‹ò›¬ÁÔ #uõz勚 ½a¦qæ2ø…ÉDÙ%xV#Pw$Z,”׆xDbØóy<¶<8ë£i½ìÝÉܨªº0õ ^ÊsìXÂýNÊ&4‡_0”JÐà1äÞL´ÞQp‡¦¢Ãˆ¢ 3)€tô‚H4¡í-°å!Ðy$Ú]­çkÉk;6Ih\dÒ­zÏœ§ÏT³d#C²» #D¼±‘[#ZÀVmZK–ˆà%xkZIN]A„LÊ\x~¡ÜÄJ@Õ\<Ǭ0†ƒ9JbƒF]•ÐÁrSˆ+­È}™­î¥èòÙ̆mVL²‰ˆp—Q˜È>„çÀЋíî¥ÖëÄíkª¡^ÉZYÈéŒÈ!X4i%Q}!„¦d “u²eÒ™‘CÁ…•ð°’jS]G˜ñÌU—— ‘ ‹6¨Zëè¨ôÕáÑe‘C¹…©ð¬•5.¢G˜ðHV—!˜‘(Ú nWXæ¬Ó˜La1†b)$Úºø„床DñvÇz“ÝØr[jz—ŒƒHÌ¢QÓ”åÜ‚¶QÌ¥˜ÔÞä{­v<ÔXjS+Šê)¥0¥B("–š .³)~aûC¹´µi¶yXQSœ Ûª=¡ã!æ¹}tùÑñØÈÙ+ljWp§"LBu+8sô$Ú£š,?¢èf業kÅjјÞKjë B4? 0-t)zD݆È×VIfT˳ˆ•f„–‘§Ÿ9éÉ`:­(µÃ²2íŒmyçSeY6ët_¢@~1da–¼å0AA¡P² 𬋉ud«W9NC0Ô5擸¥Ö«“¢Wz§[í{ ‘™Ó/„ ?Ú•´PÆ ¡h$«)Ø`æt m'ä·•2˜rÔ9 Ròæ²æže|iZµ¡y—-<Înc ûÈ»T:›^}é óRñÜ2üƒb–¨n#aÉ=h¼Ït‡¢¢ËÄAŒÊbŽƒÞ…+¸š(Ža—äµCq#IèËEæ{¤=^"”fStô¤Zh¨”-æ¢ævAcX[¬¦í*˜õŸ9Ož©v¼JÍvT¸ÜÈ mFTSÌšRå¢]¢“! (lœZØñÆgXjJ<ôÿA?ìHqñµ]âÞ[ݹcŸíKB‘4´òhý‰G8¸ÙY®õO]#p…ù„‘R¶õÙ×cTò*HLÕ$ ¬êÀæ1)2À/9L¤É#,*# 8¦ôƒ6žÒÈZñ»6îV¨‹;R®\Ç”Ð:Ic£•Nô~¾á Å뉷*Þ˲¬/¶CSRã”Ü&ЇzyŽ×ÂÅŠÇápó‹iϦÜäº]—4‘Ã+švË_yGHfç;˰͵ÀãØŽå›RÓ¿2uÖ¤¼€=aµ4ÌmyN]ÈÞÃŽXñø¶LüîðYª½!÷-X·5ÐÆX(k§ªJ\L®9¬ezýÝ;RY§Þøдøâ› 7á¼0ãzà%Dì7^nm—hºp³y ÄYÂ4Ê@2î’HÙKZ FC7®âTHÞÅuææÙy‹‡ 7š Eœ SL Ä.é 6CZ U‹Ù@.d0ráøA*á¢Ï#3l®X—`ç☂1y½s!eöžXZ\ʼn+UãàP¦™î öiåcì¬T"<$lú»Ë-3j|­ùu?è¦ÄFöºC®j¶ü¿«ßÙ)·=…é놊w¤VKÛ|Ž[1&z}Ê\4ÊŸM3ïNïeÀ`ÃÇ%_†óV§Ÿ;Ý`Äél»7Æ«Ù(&å^QӽnjñSV+®ˆw}زå&Pë÷~D ºÌ†i¾eäËÕÕÅÊimõOpÿÁWxëøGÅG¤g³6f~׊^¹n…DWÛ¤³ääM¥Èìî̢ৠC{SkÛe<‰o"Ù`ëmΠYÀ#2ˆ–`šp¥ ’MÄíH12åŽ(óÆo3l Û.§QG]=V Nkr·dZ˜^ÛUä{™æËUrT‚¾á 8|“lŦˆ6y§v$8˜s²XòF++lß6»›:ëè»ï '½*øçÏ&r½+<«Žú}ûíbωüÍJHJ™TîåÀ¹Hˆ Ó&kÑ``Þ–À$¡z KD¦¼JŒÂ%3±ÖíØðã²æËt^»“¹I–õÆ(õ¢n)Êr &ú&>LÚV‹æù^î‹íÝ´r?¼W­ìºÖÜ_ÂRõ×41e¢¥#‰mÊR˜€OD„ªAFC9ɺ°ÕG,YZÁÒŽc‰Ó¢¼  JøŒZMá›nrg=º;ZNVoÔ…Ú­ë}S ÈHP'(·÷13à ¼UêÑVÜgíUIÀìüZ”8M>ÿYs ¤š‚ªd‚‚iUý#ÛdãVËk·>*¹HÊÇ’òPÓϪ¤ÐVWgFöÙ¸Ö2[ìKŠ|æeƒÉy*“ì­‚•¼œ.˜¹­ßÃ{ÄõUE÷¦pì÷æB‰z¢”²(”ºs¦}é Ž RÖ/³7²b#ÅæòÚ-e·qªÉU×5eá. | *®Ý- ª—±-·' ´Ý}'/«/ëBéVõ¾‹™VO½›2ÑQ•۪䵜¥" ¥QJÿ˜MhAJrv6¸"EØã~>vÈ»iv\ë³WOPèYQL€5œû¤‚¶„Q[˜ªÌÀɇp{;±å´Y ¶ÕdÊëšÂˆð›PÌ>….Ø$•E…±m¦sS—rJ«µÑräbÑš‰Z(¢ªxg9p€$]«]ê£B•e=d«Ê™îŬ 沂 ëáFh*µÖº"{†îäÅû'ufrÍ{>öçÝšÃp+»4¬å DlÎz%†‹Na5Ç_ÃüÚ££˜aùÅ-PÜFÃ’y²QyžéED—ˆ‚%”Ž*RKKM‚…ðFH!G<Tp,»(ÆHWÃsNªÎbch˜£!PƒüíZç jhµ‘u·KŸÝO…­½ã{™±öÔä³v³™\®íÕ)pÉ.å®ms_*U'NŸ}DSñOš)J»t™üåRošñKGÍL\ÖjrjmÜ[“ðÿñ¦vùCü¡\7VâË|Io±^ǼíÍEé´,õ„1da)´çL»ÒÃehˆ uŽŠ]† ß½ñSs0÷t¬ìŒÏ¶Ëš³3ká÷@ )‘¹s«Ð‡%6ÒÇe²çÏp2P¬ê14­Šw L1GQ¹/ýE»ÎÕ[ñ€£äE¬ Ú·p{Þ¯Œ‰~vd‘±Mg‘ÞŠ¤HJRø{•ÌÔñwnÍËsxÛ¹–  >ç!®©ÓèœÓVL…Ãk渽§ÙÝ÷,¹sä¿ Ök¯â½+ŽË>!Æí¯'Y\ yöbÎûu&oRœ¼Y’‘ h:Êhéf.Aµ=‘ØqA/{s2»“nòî·­ïð]áÐÞ• üsç‹“1^±žUÇ}>ýö±gÄþf¥$%?Ì©…Íed\J»'œÇï"_M9–IØ«q™¹RÂèmCž‚‹sHè³æUý|þ(¦Rô-*&˜ýáI¢…àZUˆÎ©|QP¼±IDÇ}áHÒè¨&–¢æñZRW)wËúRCIÙKYŸP¾€H$  ° Ð!%JmÃhá¶\ ç ¬cÈš¡çHˆÌL” Êt tFœ¿mBø”áz©(•m3— Æ|þä<‰kef¹§Ê™Ù^ì ÈV¾`n\&×ò%ˆ¥"ù©Øæ*QE-O¥…°eôM\ÄeI¼ä[äHV&Í¥Ö×û±”€e­åÀm"M(ÖÒ|IŠŽ†1¡˜.›»´åå"EôU4åME±|DòÍ·@…r/€¨Nr£[Δ4©Qiuu) D ðëË6Âi€öÕȼz¢)LRŽo:Tp#P®8gÜÍ« ¥£ªX^×leÏÈOB[0æ€æƒ\Ó“ýØÔA2¦‰€sà6Ÿ‘-JúÚ}ߨ]áãq<+¶§÷vìòÅWe¡xZBE†œå>ô…lØJ‘LYµ‹ÞφëÍ+)º¶Ô§ †… rä *’JLˆñÆî ”\7Þ8K—ÜúR/ZPkbªLIŽbeÂÎ@´ÆÉ ×Ùt€„„©BÜÇP©DéËñJItÅ•…©¡‰¬L‹m®$é= 2˜Ht9 UÍÝUÀ·Vì!‹¬¢©K;ÕUµæ«ê„gÌ~¤’å$¨k¢¨sG›Dþꊜíå(¨h˜›PoO”= p-\Þá;C‘LÌèT¥åí&’Φ ¹]zŒ¸@$ À®… DÇ|=–¼Þ­·Ú×Jµ–åT€ 9$z*’N©]õ¸ÝÊê2úǸ)8O—ÜúR ­Ô^eYb(4Ò†>v)ÙbaWzŒºEtßšÞâXׯ¡Ø‰·ë/(¶«Ðrñ>ðè(é$“Èô¾ÌìÎÍðã0mëFÝñB~|—}ô÷¥BùâäÎW¥g•qßO¿}¬Yñ?™©I Oó%8» ^Ž'[I×]y9èÞ}% •tÀ ÝeB ®jêçO#I8ø^Ù‹(`ò»ÈuñPñiZWÇ~Iòa‹ê7/oüF&Án—L9¶1ÁÙGƒ6W:Á´ mÙ¨Åu‚a¼À›Osœ…0vhK,±1òÛNj9~³®ŸÁ“m|ÉóÀÖµÄ7],_—üß²¨SÓ®zBBBBBB¾ŠÑƒmXg½®\Ú"Åûöͼ-Jöekm¨â7»\Ôxi–©ã²ö£q]Ú\V\ÞC‘§5 wʾ;ò]KØøŽë}N>vª¼lW^&€Bpémdý×ìD¯Ýxûuóø4’wû-¸“…g~úÍon¦¶Ój\ü[!t‡‡ååº]P½jŸs=?'@0œ‚íg;Ñ¸Å¤Ëæê‡êI ¦‚Õ^s.¬¤d ¼6Õ/‰et „ …p³a{ž Á81µÀ¶ÔdöÏZwÒaÚ¶—Èz鶨ÚÊ®ZŠy‡vĸ||ì›êY–ÏٱРvc§Ãäº# ×ÂÂÏ1½:ë÷ IãƒÐkð˜pã…¢ À?öžaÿ”Z\ÅŽ"õ8SLŒM'ÏTÌ;oÅI‰epòSli›ú€Ö÷öV~)laó^¿/‚[{»¡³±d nŽíåó ÙÕ­YüÂÐV^%‚è¤Ã  UwI7BüF'‰th7.Q|·¿J¥™ÐÃ,Eñ·._‰7j{[ V\‡_°ü²žfÊí¨¹nK.¼¥6‡Ñea0Ô™÷¢{7¿;,3O™±ÕŒ ^`O-«ÖÓ± €B×±”]|ΔSšüZ»¤‡Y Õ‡Ÿþ¼?ƒù—½ÛþdœcûLf}güGËú¾Y|¿«ZuŽóy|?‡Î÷\¼P $ú¸­hh ¾ ¥!ZA±.Ç/8µã²6fC.÷²µnRâÓ”ÝQ ÕIK¬å9÷'ží|~+ ŠÃdžnlÙ­¶ÐÎÕ¿ÅnÂѽҪע•iÂÇ4=ñ«l@¶ìhéÈÞwÒpÙ7WÈ:œU®º¨@ÚNžZ golˈÇÀÈGп5µC¡ܧOÉ\áZÈ^_æ§M~ãagéuÂkuÄ癞–ʈöêÕ•Ñh˼\ÂiJ±'‡:9ÿ³øÌN6¥~"òù›” î¼Zt½>I§Xkc#«ØßÊôöRøÅ…ðÓ³^`âŠ6<8íµ¶üIb݉qQlv[Eãˆö'DõÐý•Û˜—á[Å4޼šž‰ÍÊ›”uß’ÓˆÀÄÙCMü:|ïÙ t¢t»áœp~CîF|«¹šÅ¥˜ÔÔ¡YLjÂ"¶Ff…6´…¥Íæ•}Þ¡9)9«äiòБƒíLV' ‡‹5I.o 2Ÿ³TliÊ·Z¥ÃGux[Zu¿Š L<ƒâ° ŒÚ×lWzÜöð¿©2ëRh¶ÍÔÀM1 :°Òs7$ìÖ{1Óá«;¼9µénÖ«muù’<ráÙ+´ÙõÓOð«8¹¥ÆÝµ6ÃŽ „î[E§~hë­H ÖSLÀ&×”åÜž— Ä3󻙪¿A÷,î‡htÝG&¥ ƒ–­S6,RzHÒœº² ëä¡âô Yâÿ3ÁeM,}wÕ/¹Úòp€i I(ëqÔz¤¹¤š¥ƒ8®‰÷ù¥…S#¯e®±°Æ˜º|†© 5Ç}Á.ßE¬P„ƒ’4¤ _RT¬Œ­ó™¡•u•šqÒèä?}(@¥IM×K:¦¶•Â8ÝïÐ&)ÂÉKpoUá±¥yx­ü(·Pæ©M¯7²Àsæ¨Ã1G†²ÔÖ왜Xy>vÍsßÛù™ã ƒ1bwy˜)¦CÚ”û¦˜&í\,pߥaAf¢Èß]Îzh t3Èì<~fUt½B0“> ÏÄO&s%k@ytäÂï.€žô¨OãŸ<\–+´Ï*㾟~ûX³â3R’ŸæQö. ÀLpìGí8™Š¼»ó7nŠÖæêBf¬€MDyOšyÜb÷ S¤Â¾˜ê¶Uì>Ñ$îoÙ?ÚXò<[‡?Ö›%(2&iR Jë‘ßW¯ûÉÞÌÿ²±‚þae(ÿ6ÿ<¯ö’3?ìû©ñtX÷6"ÿ7ÿ:¯ö’s?ìû£ÅÑ™þu_í!™ÿgÝ.ˆÜØ‹üßüê¿ÚC3þϺ<]kÕÐõvLðb°@æk…rò¤Ìá«†Š¥îaKM˜„¯èv3„£÷k¦wàFÐcs^ʨޅªò÷„VˆJQ5BADe-$žR>Åíæ|±â¼O«ðB‡?Áov6'ŠÀþ£ÍMc½±^QkS^ÇXÛjlvÊ¶Ý Š¯¶,çDù9w's²{?¸a[….¼·­VäŸUŸ)šBú«K>Æöï9~Fµ:4:¤jc{wœ¿#Z…¨ÕÆöï9~Fµ QªÑ~ôw‰Y˜Ž¹ÔÙ´–]]µjç¨w™gßþD‚:"hªWÓC©ì¹ÜÖJÓYf)€jB•Õû$s U%]6¾"6Ȫ„`W{ŸÆ\¹ÊæÆo,£ €)xÏÑÉ9°`¸©q¯‰—N™EoÿdÙq£d`j/Ö×Bá<+¹X ÏWVYd-´z»ể͚»Ê#E3®Ÿ¡1bû¼w‹}qròºËë­úRÓ,Æ#¶ùoŸU¾ýpÇÑ¿¡8²,ÚÛK/—iÈ)U”¶´„‚ÕICQ I&Ù¼&' áËv57b¹+ÝÇK$nŽMn½ÄSƒÍÏœ7…a=©c`füfÀbúÐYÙ¬)¦Ræ3ô'C€â¦Äæ¾&]+l¢½m"I‹ãluå¿tϹ­ÞÉ ÷?È?ƒX÷J¿Úìú=)ÏýÂ?v~íâz×õfÚý7OwŒ¾—ð¥V´tp{7GØ”ò‹v¦ÏÎÚñk²Š_j²ÎtOsN§evxÀa[†Í›-ëU¹'ãÕW1šC%U£ðº>ħ”[µ6~v׋X”P¨ŠûU–s¢|ƒš•Ùã…n6l·­VäŸTbf3Hdª´ª~Ž(‰b:‡É“/­NªF©p¾%‚,kz3ø‘eKEjø§H L"˜(â[º«ÜY«¶Z87î$;bÍ´2W|ZõºëTe}©R®|‡’`íL» ›.jÖ¯bâӆ›ƒ ’®”žbƒãḉ‰ÀªÓÅ햴𨣕´cõf!€õâ]e.z¦~Óìh»FX7•—c­×0EUZ¾èàÍÍjš˜±õúÝAO—ÓŸl=aüõŹ‚*Ï_%!¡UÒ®‚€w Rîšs_û3"ž”I–…]e×™Öý)1ݦàæ9ÂÈ¿[ôÒ’¤èŠ˜YÂÅp_$E““^iYleÖ‰ûâªræçªtqœùq1b.²fÓ­Šê¹Ñ²'ÄGš½Š›Á¦èB‰!èŠÞWk÷+yFÔzl˜ç/&aâ0‚žù¦~Ñì©ñ2G,/Èæ_ w¡Ì¦á^!c™#3W:ÙxkVТáèvÙØ—!eFÓ¹¹«7ø–ViŽ¢ϾH7²§2C4ÏÌèóróiÈé^êK€d‘ÆÊ®{Wãj_x¢/e†ÑüWŸWü/î²ÿk³èô¢?p?÷oîüÞµýY¶¿MÓ;ûßzËé ÝG»_1Ûž‚]ÎnÎx¹ë/ÊV^ÌžcÕ˜ "ˆ—Z§9èš¿s5òNé†fË–ÆÕ—âøQ"HØÆ°QmëóI’ÈBÄmO|-»®ÃÑiƒ=˜³"”Œx3LuåT»“¥…lÑDˆvb7u~ƒîH–Qšòå;KɱJŸÄr,[5©RJÖŠK9NJÊãZ Õd~U‹a«ui^y¬e"ò·ð€ˆ ÀA(Y”Û·YƒjÉ6JƱY`RÒ_$Ò„ÚYn¶µ±Lc«æ=ÉVÛM…-qŒ«£¡Cö4so&êÀ[Í{+™öÑS>ZWií€×TÍË•>”òŸµPáq‰—‡æ¯ uíÑw»*yh˜Ùw¾ VêŒOh¹êrs³¬s‹é°õ=ÍL‡^!(ê÷‡PE¶œ3•žî¤!zliXаÆ0èih•s­QÇ6ë\êÈb‰LJU2…òV U•ÒNòÉì¤Hd¥„äýÄ8>.ÛÛIñ±·ç/´ü]j탒•®E ÍêC³MÖrO-eb°œ>sp/. gÏ¿?_ßÁz'âc—6cYêþøß²¯£çÿ…;#…mJî4äIˆN¥g`>„‚ÛTsE‡ô] ÜÔµ­x­Z3ûÉbm]aHB™„œ;[0ØØ×‘u1Óœn·]Šæàf 9Nb‚-kµÀïËì8“l×Uß:«R”»C¬æ<¹KÒ‚”2 A^Àµ‘q.³¬•jç)Èf†¼Òw šÕrtJïTë}¯aR3"ºeð”ûR VŠÀÁ”-•e; ΂b¡­¤ü–ò¦SZ‡!J^C|Ö\ÃSÌ¡¥jÖ…æ\´ÕÜÆ\û‘wj§{^„„„·˜‹YÙ‰an²›´ª`Ïœ§ÏT»^@¥f»/É.72Q•ó&”„¹h—h¤Èh '…LêZ1À¸•É1ûUþv¦?Î ]h\±záZ¸ÕÜÆRE“k.¼ÕßÒ7ŸŽ¬~W Àе§cæ{ ŸšKaÇcëþ†ØrN¶\½–{§=3«9¸Ž"a™ŒaÔ{Ò…Rf€âÑèý› šßÕo‰€åÿs™ß}_¢)5‹U×˲ž{¶û(ö‰dMg_ùvåbî«áºÓÙ³» ] =<=wçÊ·øªÅ=B„ÚÝ@@Pú²}NgO$Ö&vùÌæÓBŠAQ[x=ïWÆ?Ä¿;2Hئ³ÈïEN¼•c)ŠnZJTìææQÉ¥nL8X{qÃå9W§àÌ‹w¾ª§Ì²-eVßNŸ}DSñOš)Ivé³ùÊ:tûê"ŸŠ|ÑJÝùÊ® ˆ¼!¶†×kÅݵá畽¦é½k7nb«­’“˜ Ã)ÊC¢aÅà;ÉFì²7Ê꺽ôØØÓ]“ðrˆ­¤[Nã¯E2öŦ–ˆ&˜8]á•ØîÌÀcÛX Wu¢J×ÝY3qˆQ9š&8{&*HF2{©‡¦Äkj òÕÖ©8õc 4À¢^zN}É E;JH)*ˆA {Ûrp«Aí×ÙÒrú²þ´.•o[蹑dûÑù³-]º®KYÊR!кPu¯ð„Ð@6„«-¡äàwá#·!½³^r׎U©.ײÎaÏ”½) –2‹K1Ó©Þ©Ðê‰j2LkÔ;ê1òö„=a†f¨fnA)ËT•R9¥¤VŶ™ÌyN]É*®×EË‘‹Fj$ih¢Š©áœå‘v­wªŒA IÞ¼«•T1ïLÁÖ-„•u-¼n¨©•¾$‡÷Ö®»ÎÜÙÔ^™ Öf,Œ%6œé—z [@ÙÕXƒˆ!ÿËçécg쥬&³ìû¥,Qˆ ‡îCsp÷t¬ÜÌûl¹«3:i÷@ )‘¹s«Ðk’£œÂ’’Bªøa’^œQ[íµ ®fü¸-¦çTCU)Ë´åt9¤å+½™†ÇWxmÖÚ‘¿Èމ¾%÷´³ópFâ¾¼~¹,ÿ³?ý>ý_üŠLšd]EÖý%ñ;ab¤o™}åâxo!¹~-V[0©^{‘D‡©Xÿ–œ¾¢B—%k–Jqê6U'NŸ}DSñOš)J»t™üåRow´|ÔÅÍ`F§&–ßñ-ÉøøÓ;|!þP²¹¡‡ãÖ|ÄŒ 7]nkö‹¤ 7Ž$WÂ"4Ì 2ï’ a¤‚U‹ƒÞõ|cüKó³$Šc<ŽôTóh€3ŒÒ§d’@Q©¥mS¸j`Ùˆ¢:Éè2-Þvªßˆ,"-e×Eã®ÇÉŠLHÃw&Ú†¶²Mù•*nÚTE'ê×§,–+8jPœ¦Kz…¢HÝ#³7e]t¯‰ÜqŽ??âHm»:ìkËÙh´rWK:²„à ¦ C¹ î—+ƒžHU;b¨åe”ÿ‘-å:ícF­ ô› '½*øçÏ$öyWôû÷ÚÅŸùš””ÿ2§§*5˜½_Õ ùy2 ñ’xÿˆ-Ægƒ:ÒhmC˜HR/0泉-XðF;bT ²Ã°ìS“v2×eFEœôTq9¸Ž¬L31„uôœÅjl¯h WǾ;âSÎ(tDMÑMדžöE~Eœ,Ý g+¤Ó(q˺Hf(2¼›´©ÅXB'eˆ¡Öü›É–»+íôÔA!¸NQ™L!¨w  *4–› sk:²ÌË$è‹ N~U¤Ôö!Ïi˜+8òîþCRh ëUÞ¥i+Z¼ÓX²S ’ûÈØÙ”j´ÄÂѪÙF§&Ü6Ža•ÀÎpºÆ<‰ QÚtˆŒÄÉ@ܧ@—DiËðVÔ1‰Nª’ˆ- Frá8ϟ܇‘-`ì¬×5ÞTÎÊ÷`^@2µórá6¿‘,E)ÍO¹bÆW|"ûqÙ¹´ìuÕZ¶q7)k9˘I!X)-¶¿ÝŒ¤-h.kùiF¶“âLTt1 ÁtÝÝ Ÿ/)/¢©§*j-ˆâ'–m¸Òì+‘x4@s%Þt¡ J‹K«©HJ o‡^Y¶L¶®EãÐ@5Jb”syÒ£…qÃ8®æmXe-RÂö»c.~BzÙ‡44柡(Ñ[¹è©êæo²Ô¢t¬µ:fQÐÅè#Ü–­Á §Çø¹¸fÙe~àßX¶Ôô7VrÒ3(˜5å9÷$+f‚Hj{°( ™bùyð›OÈ’ªä–b”‹ÖkbªLIŽbeÂÎ@´ÆÉ ×Ùt€„„©BÜÇP©DéËñJItÅ•…©¡‰¬L‹m®$é= 2˜Ht9 UÍÝUÀ·Vì!‹¬¢©K;ÕUµæ«ê„gÌ~¤’å$¨k¢¨sG›Dþꊜíå(¨h˜›PoO”= p-\Þá;ñ³”®e.؉ѷjÉ+ÌN^£¬Ô…™ªv¹KNi àò+J1‹ØÞyvFUYS%Y6„ö*ŸŒB£LÁ=yN@€¡Ç¢J}G.7rºŒ¾±î Nå÷>” ­ÕI¯2¬± ,™7AmÜÖÌZ”yž£ÆmH ø~õ[H$ `)X Ð!%Jô¥yÕ-(•{ZòE=¦í«<ÑfÔ-Æg‚…¤ÐÚ‡0þ¤VaÍfl–³æ}wä›MFaW×~ABЌ¯®ü‚…¡x\Úά³1äè3G?*Òhy\)nKYËúA$Yò¡­2jg±¹ðôTîw(¼Ò¶t+¨rÔD ic/ÂÔìF",$FYM4|Îå5?[Û<6 ÅèîÈ/tf¼£¨"è3 –Ÿ3¥²;°âŽ<Bæh½j¹žG]ôQovŽæã²­„²âò̵39¥¦ŠÜEh™1Ö7ðŠHÏflÌý¯½rÝ ˆ¯·Ig:'È9É ›W‘ÙÝ™|ÇxçÂ6*=#=™³sö¼RõËt*"¾Ý%œèŸ ç$¥VY,æUÙÎ+V™m\&”‚\’bÖܯ‡am’„rЙaó¼aeN³Ç'h’j8˜uåÈ;Ñl·)Ü,Á¶kP¶à˜‘ýE¬Ñ <Ù‘z²We}²ŠÈ$7 ÀJ3)„5ô¦ ¨´ØR¸§‰ÑÎ#d7É÷´ò2Þ,¥]ºé«ÜÊY΂óŸ$ µ/‘ÎÝ!=\”ˆL£ÚèH¢ãA)¬â­tз,®æ•Œ/Mª‹QÕNEŸ9„¿µ(àl8rKx69)·ÓÉÖÜÔ- ëm­?iE&d¡ t ¤?)47I}YªÕ¸J*ž‰B)RÅÒ×ZÖ§P!êî¤7]”e/ò¨ò "<Ì<ÇÊc2ŠZ™fËÒ]1~“t÷¥Bùâ䂞Ï*㾟~ûX³â3R’ŸæOøÏ„Ðk—i3ø>ÝxuU¯Ý¾ÖZÓ—ôbsTqµèª¾@Ÿ>ì®ÛÅM•Ü~$†þ(mïüuB‡‹Ùvq8HÙc&Vý«¿oeQ³;`ˆ+ aȶ2„7Ëys9fm ¹“geÖÛ7±·*(êM=óNÞ.|N3&'‡Vh;6a|ö¯[µÊ‘°Ãd•™³_2*¿XÜpL³1=âîyo)\{+e¾,®g÷e¢ z‘7ß/û3 M*1¸“‹ÃG#rgÏ™º†šûè• Y),¹hê7ßE[åþÇùE=' ½~ïE÷*£ì”RxmGv¢òfQŠ­Ö8mè¬!`ä³)VEJÁZ°‘C%€PLAzIR„¯”Ì#Ýs;°Ë!œ–Ím¥§®‹f[ÔŒ¥P“ˆ{æ ä?gq˜¬uK&"ëÌÜ ouâÓ¥éò]LtQÃák*ö7ù/=)áh:1Ý c¹lÇöÚZzé¶e½@ˆÊU 8‡¾`‘û=ŠÄö…K_3r½âÓ¥éòTí $¸]³Ëwó˜Ì:¬­_²lª­8–õÚ m%ERÖIžlv+³°²Iˆn|•N°3Yè/.[¯Š»!ŽyØÍ]é½WãkYæÃG¸gE0¼-º;µ–¾ËžZÕ´3 h/éµnƒ€5U-$ŠÃâ1XlLx\SøœK£A¹r‹å½úU%}&'=Ë–¹“wøRÅBaÓ ÃÏøwvKÆ"ÌÚ_µ—­Ée×”ƒÂ}VQÔ™÷¢»0c]–§ÌØêü ^`O-«ÖÓg‹ k˜Ê&ù(©ÂBPùq?ÀY]²}ùëxÿbÍ}:{Woîù虿zbû·ïkú?åé×/š¯ßÎíºå×í{ííî«üDr»XðR3³PðzíêêÌ7m/)IÂ#"È4Ð}óNÎy%Çâay¶³%|,YY¥Š7©»ûÖó×Á˜nኢ¨_{#ÌeÙ³«Yru¢CqFåuu¦žù¢e—‹ÄɆÃIÃáÕš͘_=«Öí28â‚&½íÍšùÕR”hÃ<FM¯å»Èï„2WX)3>ÐÍAÖÂ*¨1€ÚUU2Òh†öĸؠd>Mš›._ÞÜ©0á[ž_¨miµÚŒé næÆÿ“~ÿýõœÍÓG¤h¦ ~„ac;ÎøŽ-Wðå­þûö¥Ld\:ðeõµåÆì„`ü:qEQT3½{ǘ°ÍZËˬˆ‚7+¨£¨4÷Í&i±XÌT˜l4œ>Y ìÙ…óÚ½nÐÖÇm’FæÍ|ê© p”#àëž.ç†ßØû3f½m-Qî«$·ªûåâŸfa) ìv+½ac‘¹3çÌÛa¦¾ú CG4ÝU·^VÁðz¬9׋k~ïí§´^¶–¯÷%’UÕ¾ñxeÚ˜ÎIFbñçmÏ“&VØu÷ÕSºÂ#Œ3]NÛ)üoPÉ CdbiÁÝÕx<'“oÞi¦Ùˆ'êÂ`:Z˵0ä‰ìy¤ÅK™˜¾#[¸É—{­}ýq12&Ñ‹);kkÆ/¯€Ãá÷óšÙ¯‹1ivÔ\³'—^RކÑea0ÔSïC³{ë±ÒC4ù›i” Ì åµzÚŒK àµíe_3¥¶}# £÷@?øÃ0·ìyŸ¡*£±Õvþ랉œv–$a{}òèuËç«ßÅ·Á0ab÷`<_kßoeφN‡þ ÁÍŽ¶ã®vÓ&©i|‡¬1Z›jÀGYUËQM.í‰pøéÙ7Ô³.¿fÇ@,Ùû¾J£ ×ÂÂÏ1½:ë÷ 3!(Fè)ã ¼6¶ÑÏ_zÚZ«5ma½QÄh¦f.’œ¦š;'ŠÄb§ܹrÓl°y&㎌ÝÞª´NúÄ®8ÎÃhR$iÂÇûQâÍMØæãA騠¼[ú `$,|M×[ûôY1`Èc1 ù±óPÔ³s™…¥ÎfÕ¿DT'WAÍ_#O³ '; ÚxœF³SåÍ⡦SÒ¨ØÓ—U’|M+òÛYZYÖÇ_taþÁ‘>(aãócåa¨Ãi~ç3 M“Ê*1~ˆ¨²³–¾E—gPCÚxœ>x³[âËâ¡®cÒ¨PÓŸTA€‚Y¢~ZkïK:Pëîµ±êp¸áµm­°Gƒ×‰g’wí#·íŽ"ΰ ¢ÑD ¯n¹$ÝØØÇÏ.FKÆo3Y2oZm´Ú¾)˜®Ï…²Ì‡²oüWº¨”¤ ¡ õ@VckCEõ%Y>á&ðntQºß¾Þ)c±õæ«·ÃÙ«šh‹>Gp÷ÑyÚnïÞ0ýëÉâ½ú Û]×Ì]ù Ø`" ›×Ưö>¼´ö8{4òHœ8ÆÑ.ú¨ý›wOˆo'‚·èzëºL³zÉ2™ªµe䮂„§¯9&B|Ymz—I¬‚½}©Ûÿj`愺mù–©Ú¬1ˆe“ 8d$1¡×­«±w;Ol+†Ï(m™µÿŠ»ⲫ®ý†ÐºÔŒ aFF™@ §)˹9¸¬n>9K!Ãgo#œ ô?réG.h/’J(Œ¡\6vÃm-® UÛotÚwì6…7f`ë 2,Š"myÊ]èaq¸ù% › ‘¼ÎpkÐ}È’(ZÒY%ž”R!Fk @í'UäU,28yO5¼W{k0IimSÌ&/Ê4mRSËFák·©[AŒn°?‘úÞ’ó²¶XQà‚,-€‚,'¸s¼°Kí¬w^.’_pájêóg 2€ 2î’r1¸©cÇá¡að¿=Ž´,~‚×mt2Ö¢æeŠŒcÌšI*×|[+2bnÁ.¼]38¡æLãÁª»*n•RQ1µ8€€¢:rW‹‹ žcMõë\–Èg G­¯Q“så4¶¸{ܲ›NüÉ×Z‘@¬6¦™€M¯)˹' ±Ä3󻙪¿A÷)‘Ís‰`¡Ñ~‰t÷¥BùâäyLg•qßO¿}¬Yñ?™©I Oó(õ8¼±wI²â¢˜jµ†.¬ä§â¶=Öö»>JyÓØuÙ»õë_Õ›kôÝi~?.#—ÓÒ·Y Sµ/…‘æïk­Ý^ÈSµÁ—%pâeÚªâYY¨1iÓ˜£1™;å3aÃs¼Æƒ®´+á½ê’Ƀšÿò$ÑkER¾˜OeÎæ²PЦšË0LCP˜r¨6¨×Ù#˜S˜sîæqÚòwíhyåFÒtݵ›·Pªë@ä¤âá”å!Ñ0c°=ç,‘»,¼®««ßM5Ùi†nµÂÚw ¶ÅÆ|V‡Záè_Ú‡.gdÙÐêo*]ã%F™¦~)˲çb;‹…’¾ä’³:·Êlit(i¥uMîs[ º×}}Õ¶¡Ë‹1N>áœD|f=,eÖåÙ‹“´¶³h¨Båt“˜„½:¡‡ý›Ãá±Qâ`ðå»›±\ΔŽù;¢s&7uÓO¹EE8:ÜùÈVÚ–6oÆlæ/­šÂše.c?Btðø*lNkâeÒ¶Ê+ÖÒŸ1|m޼·î¬œæ!xNÛ›Ãû›ów(£ìTýÛíñòûžIç¿ðf»p³xþÕ½3VÚ{­¼æâçþštë^©uŇ0÷ƒ‡ )Ûcf2í9è÷e¢°Ü$7ú¡¨gºiÑ›±ñêLN“=Xʹ”¶âYÃlr2êùÖê"ÂÀg†Yœs¿|˜õl¦k¹Là ×q+<ÖV4Œ©ÓšhÅödŽ”Íƒ—†çy´Íu ÜéZí¿5X§C%n`6Ö«ªªâh’2…ã7‡„Ö ²Êÿ·µ·U*ÎØ Y뀊ºÄ7 ª”†s¤‘cdxo£s/)óUù´'[øíÉ-¸Çg"ay·kåµ(LZñT78\0žï;Ü™›Jsæ_UããÄb€‡DuíwI'³{6\,²Í4¹Üú³UµŽE_ˆlkÚùÞëÄ#9Ù¡¶wo oK¹ßVËSž36Já„ËuVY¬¬ÔŒ©Ó˜¡‹ìé8†|,¼7;Ìk5Öƒs¥|7½T3Ƴ,ÍÌÚÕ}ÊÐÂøobg“Ñ÷²çœï»[U޵ÏYW¡+ Å ð€U) Âh?±Ø"cpßFæ^Sæ«:èN·ñÛ’#ÄÈâ](°wkm“#Ó Yž1­Sb›{ªîJ¨BÕÒñøÈᦰf³—d$ xû2Hâyd¿Lú·åÞ¶ðÝm§¾ê]8s…·Â6ùᄄŒ0¥™|8Ðá‚Tî³½áNÔSP´çm˜ «U‡šº¡áZò0½™#ebåâ9¾_Z½Ç[Ó}«DI8-Érƒ¾·}dQƒÏŒ:…¡]«g`æüfÀ ûëýšÂše.c?B?€â¦Äæ¾&]+l¢½m-óÆØëË~éðSÀ 1OV ùÕ"ÿ©ô-V½Ç«å÷\Óž{}Gè>Åzù¯7›_m“ûÙóåñõÿ[m¢§±Ö‰\g ¸Ž{,Pþj—†aX毭!Ç«(ˆ’‘/1Ÿ=l#‡ÅM‰'ë2úeëk4ó‘XáA·¯Í$ÅnØÃ¨ZÙövoÆnÎýõ€~Ì‚še.c?BNÁÅM‰Í|LºVÙEzÚ³æÏc¯-û¥¤è$«EN.,\¸¯õ0ÝxŽiÓç%?¨ú‹>áÕòû®ÒyÓØuÿô˯_5æóx½¶ZßËãËôÖÛhµ_ªbˆ‹ !8`°Õ‚8s’jÎ+6fúÐ?gJ)”¹Œý »ƒ|8©±;ñ2éÓ(¯[H|ï|mŒ¶²ß>©íª>Ä6x¢9ˆ¡Øsd<¢l…•ùÅ rbPn–••–a¨™÷É8ý˜k£†ŽfÇ›áyµät¯u ãå’HÅW¥~6±2âlT8¸y´ë˜W¥$G3™£Ëæ®}ÆåD_À?WûIÐÌÿ³î‘âè£Îg³¬¢vö;%cp£.^Aô‚Nb5pÑT¼·Ì)yq¼Û\ïEOrû-*§BÊ@e09£ZâÓa/…‹†am?÷ä§1 ÚñY‰Í.¶Ç–u°ÔT×d¤ªJŠ`ài ø&†#0“):õ\ÞÅ–90Q˜¡wZže ªÌ#PªY¨UÞ åÌQN!¾®‰!£ @üfQ]¥‚°4³à"#zEkcuÛ«Vö=Ïu‚¹~A¨eeéI“ÐÕuR‘ë§^SšiÃH9z¬}¥ ˜¨i£8³lÚŠñr­ôßdÃÄè]©—ÂÕ®Ù6®Hà=¹i)Oà’i’Kmf¿EÎìÎÎàâZþ钯ŞëCÊõ½”+™ß (z,UãM•Y=Cõ›N\‡½01Ã.c¹^Œ:€uêVÓ®>!‡ÌLÄÅyÚæ±´.,Ý8‘_ˆÓ0p€Ë¾ISgUH%|a‡äe2ÃpÛuæÕ]–{¤%tNn#ˆ$R˜uä… iq –^å´¨Wg.zýàHØæIáœÉʈœîÜÄke§‹Ûgd”[8Ý´¼ÇYÄ"È¢¨„û¦˜1¸YdÇá¦`ð³=ž–(~‚íÅ#[ Œ'SU÷¥¼?a„hÂÌq‘ rcäà0ÿbu|mX\-Ám½Û–<[ŽÔ´)KO&€Ø•s‹•žïUhán@ñN·Fo\UØ»*ÞÖdØk—d®­2µD£j¹]cš³Na1„ƈ¤“jëâB–ç¸þ'ÅûêOwaÙç[jz—Œ†¤fQ(éÊrîA[(æRÌ@êoq½×;Š,5)¦µuÔÌÁ©DC‚ ¤uZh!Aâë2—æ´;›KP›g˜ðu…Ð%9Èpͺ£Ú2k—ÐWOŒ‘¶ƥwšr$Ä'R³‡0BAmª9¢Ãú.†njZÖ¼V­ˆýä±6®°¤!2Ãðýk¡SÒ$~ì6F©ä–eL»1H‰VhA™iyóžœVªÓ‹\;#.ØÆ×žu5Õ“n·Eú$à“ µç)‚ ¥ ‚…W€°-d\K¬ë%Z¹Êr†¡¯4Å(&µ\»Õ:ßkØTŒÈ®™|%þÔ¨¢†00e A%YNÃ3 €Ø¨ki?%¼©”Ö¡ÈR—ß5—0Ôó(i\±zó.\jŽiLdŠ&Ôsµá ·àبëƒ6žÌÏÝñ»7-Шë;s¢\ÜÒ@µxÛ™ÙR޾D…@¾ …¼ïz.PÈf%…ºÊnÒ©€OYó”ùê—kȬӗ䗙¨ÊŠy“JB\´K´Rd4 •”ú1IÒ1qŒ2›3õãõÉqf¿út_ú¿ù&UÓ—Oô¯Ç\Tƒqùÿ ÃqNIØË—²Ï‘f=3«9¸Ž¬L31Œ:z\“k\²½¯ Rt¯†pn??á¸m‡$ìdËÙQt碦ug7ÄL31Œ:zTî“+C^@Jx~ò+¥©à`‹6®·?¿z@o@Ó)ü3ô&œ+²—x«Ñp{OÆËôZ¿âË[}÷ù)Þ/½ µ9÷x³´u¹;Zå.:¾øJŸJh’[n[»ôIìÎÇˉn#ƒÂÉzfÍšÁt¯{QÕ¸I.Îc_Â'5¾@½#¼¡[½!‡äe€8³ Ãl9×›^DzÏt„®–…‡7Ä )L:rXl¯Kšà> #?ÁfÔÁ§ú-¼õÿ<öú£UbÕÁ/¸ù›ÈtÑVO€*}°YÍ4©Ù$€SÞõ¾~Ô¿â »Åwº­ÊÛ:\A¡BKnCð§SŠæø\uü–ýчÄ}>`Øf#=èw6ܧïP޾‰‹JÌý<µ»Øû˳§f\“¹¸£6ëÓöww೺ù5­ú›ß]Ô$Ñ êÛÁïz¾1þ%ùÙ’FÅ5žGz*‘!)G/-öêTêV-[¤ÅÓµÍ(ãeg™íq¶ªm­uÅ¢PRÑ›%SÍbF­+¦ðÍ·9 ³žÝ­'?«7êBíVõ¾©…d „üê{7¾ðês2Áä€<•IöV‚ ÈA •‰™á=Û_ï÷•†E6óï+%5™… ú²ÈM1(„4æ()ÕÚ•§ˆí狚ߙ\®bަº©¤…/9û3ä‚lÚ†AB^Ķܜ*Ð{uötœ¾¬¿­ ¥[Öú.dAY>ô~lËEFWn«’Ör”ˆt.”E+üa4 ¡+viw²=Õ4=»E³­–ñ•×0"êÀ‚™q#¯„aǃŠºš397_k'IÊëGˆõ›‹^S ¥Ûš‚ªÂضÓ9)˹%UÚè¹r1hÍD-QU<3œ¸@.Õ®õQˆ!I;וrª€f=é˜:ÂÀÅŸáIW_PBéîŠ1޽qùÀÁ àîÀy­ÌYyo Jû2gX&êÎP)¦P1uåTû’í«Zb{3€©#¨Ã Þ°£S9ƒ›¾óYE—–𴯳#€›«9@¦™@K¯*§Ü•$%´EW‰ kȈ^ÜQ[íµ ®fü¸-¦çTCU)Ë´åt9¤å+½™†ÇWxmÖÚ‘¿Èމ­ ëñÌË¥‡ï—9(ô!#‹¤­ø|4XV¶E4]~i`ʉT]AÒ¿qR Ççü7 Å9'c.^Ë>E˜ôTάæâ:±0ÌÆ0ê=érM­RÊö¼€W0%U3 h- ûþ3î_uOºµÉ5ax–xkÚ‡³_Þó|/Ë麚‹ñ dõ_¼,³*³&kJüÖv‰©iGÒš^%ÈKÊçà$ì†ã¢n–ã›[všt;Þ¿$¸Öbš q‰F`9øÓ˜ß ^±Äeoª²ð{Þ¯Œ‰~vd‘±RÏ#½ÿ…Œ+‡0ÝÕâñ<7™Ù,­·˜Z+—u†¤ŒöU«â0×È$:!¾ˆ6†Â§K ­”Æ7 —ô¥NÉvTÔÞ݆ê³ùgbͼ·Œ¯.f}®}Š}<Ó¢LZÐ\H í—póËWw£NZÛç –“µs‘N,*Øz;Fv‡N§^×j|Ó4¹x£.˳ÙÇÁ`Åùõ½ºšÛM”bõ+T.2¥Å åæDIšóW† /¶l‰á¸“6;Î(ÊÞgØ+rfƒœ¼DáYYi´Ï¾IaTžÌ™'uFd•YÉ¥½uÖµ€‹)—D¼FÉWø’A_«Rý&è ïJ„þ9óÅÉ=žUÇ}>ýö±gÄþf¥$%?Ì©õ Î¥qi%EÔ3äŠ{MØY¥ŒZ¬¨·±3…šaø‚'Î;š)¼Ï’PJ©8¼EVEÐ{’™ôÕ'½9≴·E/8N%fˆ!öì›Åš«+íôÔQ 𘄇z¬×› .úŸ®ü‚‘jôiŽ8C 0ìAç­4ÞQ’PJ©8¼EV"€è=ÉlÉŽ•îJ¯—63«(‰ @¥s‡?*ÓhyÊ”—½ó—ô‚”µ¦AabM(- (!%JmÃhá¶\ ç ¬cÈš¡çHˆÌL” Êt tFœ¿mC”áz©(‚Úg.ŒùýÈyÖÊÍs]åLì¯vä+_07.kùÄR‘|Ôû–,ewÂ/·››NÇ]P…«gr–³œ¹„’Ò’ÛkýØÊ@2Ö‰òà6¿‘&”ki>$ÅGCÐÌMÝÚ òò‘"ú*šr¦¢Ø¾"yfÛ ¹ƒ@Ô'9Q­çJ Ô¨´ºº”„¢øuå›a4À{jä^=Q”¦)G7*8¨W3ŠîfÕ†RÑÕ,/k¶2çä'¡-˜s@sA®iɉþìj ™SDÀ9ðOÈ–¥}mY x‹59Ø]m0-ÆV™rm5ÁEf¨Úf3,Òªù‡D“ÄEíL ›5Œi¥šáÖ[Ðx„&3–PüLˆñÆî ”\7Þ8K—ÜúR/ZPkbªLIŽbeÂÎ@´ÆÉ ×Ùt€„„©BÜÇP©DéËñJItÅ•…©¡‰¬L‹m®$é= 2˜Ht9 UÍÝUÀ·Vì!‹¬¢©K;ÕUµæ«ê„gÌ~¤’å$¨k¢¨sG›Dþꊜíå(¨h˜›PoO”= p-\Þá;ñ³”®e.؉ѷjÉ+ÌN^£¬Ô…™ªv¹KNi àò+J1‹ØÞyvFUYS%Y6„ö*ŸŒB£LÁ=yN@€¡Ç¢J}G.7rºŒ¾±î Nå÷>” ­ÕI¯2¬± ,™7AmÜÖÌZ”yž£ÆmH ø~õ[H$ `)X Ð!%Jô¥yÕ-(•{ZòE=¦í«<ÑfÔ-Æg‚…¤ÐÚ‡0þ¤VaÍfl—²Ï˜UõßRm5K@ÑsÚŠ™bHq¿$óe®ÊûE=Hn€”fS5ô›R×› '0«ë¿ ¤Z…ásk:²ÌÇ PÌü«I¡åp ¥¸!-g/é‘gʆ´É¨X‘à(-À(&¨¡´®ÌUZñ9©*™OO* íHuy(“By/¶%JŠö!­Ýƒj@^sJ½•¨Ùgs2í²ØŽ¢wäe5D‘#vuæÕEæ‹D%t^$R”4äZ‡8¸ÙP‹Ajʆڔ·_]]¡ >_†h¶v *¢wk0—œô”¼ƒ4|1¥Å%øží‰‹WĽzeë~ŠYàå}8áw‹*¶Ÿ±í–: âüsQÇ1ª©Ïƒ—!MŽcHûÿ%šn‰å½xn×ŧNU·‹~KFz³Êg;xP¬%BýFž!0ð€}àæ™5¹]÷®¾\­§lµÁrƒ›ª[YGÒ!4¥^£d£¢ò½¡J ÖS/@¥Iu‚Ðx˜­æ@çéK†YÕ28ÛÓk™ý «y+;§wšt<ï¬_cAŸT!#L&_ESîM­{/A_ÆÄö~1Ñ‘,œVýŠ ¿ýCjßãT â¶Ó/Š×7«zí#ðÒÙbÝ|Žérø&Š“Wf»]>Ï€G‡k y*ô»­zó½×§‹üÏ•4±õßT¾çkɦ$S­ÇQê´9¤š¥ƒ8®‰÷ù¥…S#¯e®±°Æ˜º|†© 5Ç}Á.ßE¬P„ƒ’4¤ _RT¯Òn€žô¨OãŸ<\SÙå\wÓïßk|OæjRBSüÊ_ÁÔá+À^ÇýÑyç˜[ö,×ÐuQØê»uÏDñß½q]×÷¾o£þ]¹|õ{ø¶ø.—v‰ÝkÅö½ööC†ƒ\½œ€óÂÝ軘Úm»qk6^M"©WÕTÀ8K¥3sBlf*nÔ“#‡U”d¿ yWÄ¡‘FÌ;es3oz×:Xœ0tåèÔàÄžoEÜÆÓmÛ«™²òiJ¸ÃUSá.”ÌyÍ)6#7jI‚êÊ2‡_†Î¼«âRóÙ]mïR9ÒªXÎ7L<Äóz:¶¦Ð¹m]óª±lÔŽ¥ªs$¤žØDÆ´.×’–7âq‚dÉVjîÅóÚ½ÔÛŠ w3¼¬+›m{^É/MU€‰µªA§–|½(Æá˜ t¹¸¬x|pJ×pÃó^™¶ÛõñX ‡[ðGÃS,5|XË0gLZg07ˆy'¯ÞI‰7Alí çÀˆbtÕy­ÙAø5ëZ(Ç"ÇS{ýr†h[0 åÙsÆ-ªJ"n!ç9O^IVå. Õ³ÜDp÷â2åÜåìé§*ÛEÜ­•KQ•±·gT©h´$¯MxGPÌ>H®F×G$’Â+iÝ.ù¬I+J}!Ç4 ´Ãñr4i¦ò‹‡&Á¤ÀrñE[MåGÐx%åN6.>Q<¡·Ëå#×äµIaicÇ‹ðü¹ Y`1‚b^IØ-uÌÝfP½jŸs=?$Œ‚íg;Ñ¸Å¤Ëæê‡êI ¦‚Õ^s.¬¤d ¼6Õ/‰et „ „ûÃŽhòf‡áö<œhÍU•}½Q„æâ0‚¶k*ˆ#¨ñÏÊœl^.\¦yÍÂw?c—+.ÌO§ÉjŽ6ÌÐÆãù z@XB¬ á0ä좲¢½¨9”ŒÕŒ’2^j–ÑÅ-%_ ÿT?RMj õëW{¡êø °ÚÄP $°¥­ Ô¡'Ì!‡\ëᨊ:ˆö«ºË^s\:¬î`ÆT^¸£5tGЩKNiÇí.'F:ÀÖš‹Í-kI.> +¼'Ż֖Ýk×O‘Y#À±°É'˜iGnzéþSB§D5 a¦ò ÷ÞQÿ‹¶ÒÆ<ÝKhúbrRs[å­r§{Äâq]ß¼p¤?ôòV—æØØ×átµ"Ž<ü<Íëuíì¨5í­+§qeSûO`Z åº×ïI d€l/©*ÈA åè±9¢Èj/mm‚·±âîÉdûHìµ\2ÀYÖ€„ n)ödÓË~ÑvŒ¸Iac%áµÙ¬å͵V•é§UÑÀÀÙò[˜Š¡tŒ?‡pÖ7†± mcÜÇsÍÉ/¸Ð׳«1ˆ³„mÈšôä†7ÁK†…‡Šçg±£sV£­UòÞ‘pÌÙFP*·5þm9°ºÃÖØÊ Î*Ö÷Ôi²ë; Ó0à ùžº^ʲ‹ZÝox©zøiÁ±˜—SaÛš2ÛR ºÃÈFb6¼§.äïá™,QLüïëU~ƒAAs瑹­‚¾ 9œŠ@r7–ãn“ ˆSü‚ :#‹CM»u’€êVŠÈ3–’ù&”&Ò‹uµ¨½ˆ c_1îJ¶Úl)kŒe8`éTD²2e}îÛ¹Ç,óó,FŒâZ¾ uYY¸8@iªc)';µæ‰ðŒ3™ÒlÛ«ÊA>.U¾»ìº¸ç}09@Üï\¶R¸’á¬5cF:ßv¯1ífSffV–Ÿt×\=\ª¦žàF“îó Ij¼Y³eí ¡ò»Oš;ŒpÝ™­øU_ãkµº{Ò¡?Ž|ñrzÏ*㾟~ûX³â3R’ŸæQêqybåÅ©†«Ä“N˜³9)ýGдY÷¯—Ýv“Ξïøpÿ þ]zùï7›Åí²Òü~__¤ëþ¶ÛE¨þUDx_ Â冬Áœ“^qY³7ÖûQL¥ÌgÏD݇Á> TØø™té”W­¤>w¾6Æ[YoŸUš+bŠ_Xk Â[¹cwóž3œVlÅõ ³³¥4Ê\Æ~„Œ6 ðâ¦ÄïÄ˧L¢½mL“¹ñ¶<¾[çÕF:Ï‚;Õ°¾aͦ¡DòÄÎ]š„Dú”fiŒ¹ò–‰Õl®ªsoÕq±Œ†\3²o 7[oµ|±ß´;Þê[Ù†‡•š—ÞTZ-Žœ 2„ƒ¹4„nÿÌk$‰Ñ æÓ7ÆÖ»±Á2CÏ7^ȯ=k¬Ì+ t®SÖ@‘á¤eßâ>Òâ#Ÿl—§[´XÊÕ»ØßÐþa•ªÝÂæÀ²¤f™1”{t?“´°2â_vBÛÖ¯zPO²,l9ØXòlã*\Ó¦¼C¨ë1øRh( º8XŸA’;1ê½–…`Á-èâ  \?¶Ö0~ó´æÈ§dÖqZ»‡K×i—Óœ“™Ü²âûįÎ7ÍB›©Ú¾óLïÌáUÖÜ«¯ÎÓs?G°“ÆŸ–w“,SKá‰Ô®ª„½ûÛ¼åùzÔšTjc{wœ¿#Z…¨ÕÆöï9~Fµ QªÑ~ôw‰Y˜Ž¹ÔÙ´–]]µjç¨w™gßþD‚:"hªWÓC©ì¹ÜÖJÓYf)€jB•Õû$s U%]7;"FÕÐ! HUÑ–iyOk­Ì¶­µ—Tèp’›aW`B®ÿ"s]‚ÍŠï2œÄyÙlSµç¹&»–>§O•'gGx•¥ˆ‹ž­›5a§ÕÛV²ZyV}ïåN˜R¨Ö«{ØÞÝç/ÈÃÖ¤ÐêQìonó—äaëP¡Õ£ØÞÝç/ÈÃÖ¡Cª5^:8=€ž*ü¾³¸™b–¬H®Š@%UqÔ&ú„Õ1?YrËÖN’VCrÔ¢!ÈÀ•½h¥æ£•Ú(D•tù„x¨øÃxb#cp*´ñ{e­<*(åmÂ=Yˆ`=E8—YKž©ÆíNLJ´$‰óŸ .ƺÝsURÓ0á˜ì»šÕ^øtòÄx™éEÑs’¶¨w=[Ve@góea¬Ð(r½ ÏÿÂñˆg†el™hoYMó:ߥ'³´$qcän­¾{Ú_ðYºÃXºÚùáÉøÎ\ —°´Vvkªœ¹„½)×—³˜¨q9þ¯6•¾a]t¥‡ã o|Õìœ<CŽ_lðþÝx‰WÐ|êÆœ¼øOÕ-0ÕN]yU0Ô1~çÄÍôxÜG3»rßMA±FŠÙÞcgŠ&ew[¿ÅUÞÆöï9~Fµ= ««áú8<¢%ˆê&L¾µTjñ7 âX!BÆ·£?‰T´V¯Št€ð”Â!©€Ž%»ª½Åš»d”’¬Ÿ°v=sB°äEDŽñ;Ÿ™kÊsçg¦ÉŒpâ)DFf0‚žù§#´{*llÑK¹ÌÕ ;Ô­0bY ×¶Á®u²|v;롈ÕÊåulG\M‘°Í|˲sTn# K+4ÇQ-3ï’mgìÞ%ÓA<òæty¿„ Ì+‘Ò½m$cZkh:¹íKÜUõ†œ-µ¬ÎxÕŠ³Öû54Ê\Æ~„цì aÅM‰»âeÓ¦Q]uµbÃãluå¿tÒeJËÒTØ´+»2›²Ÿüµuÿ{³èô§?ÿ Iû¯÷nZþ¬Û_¦éÿ¼Gxïéé]ä(ta´Y™ùt_ù9´å„2ÖŠÎÍC]S—0—¥:žÁ’lT8›®m:æ½éIâÃ#tuæ¯eò-”¾0Þ„6Õ‘pg$Ó–Ì_Z ;54Ê\Æ~„œ?`I*lNkâeÓ¦Q]u´?c¯-û¥rà³0˜{´Èä_÷ÓîùRx¡nDPA”Œî­²ïS,“-û6'+œBiš¡×^RÓš0á¶[=—¸ÎßsSϘå5m¦Â†šoÍT¯ö–öǢƧ™ëi<«4Ч Å+Óo]l,1AŠM®j~%wílY;´KP.”Ë>rRå"g~® ;&K«ƒy‰ôÖ¡jó*a- ¡Ø,Ä|“Ôuç4‡¾ô$—æÛe?…¸cb6{s›O!o3ã*UÛ®ª}ÐÅœè7)òJj[ŸåPØ ¾á®‰Xro6Z/³Ý!騅9xˆ"Q™LQÐ{ÒäRäaŠ’ÀRaiâÕX¨O%»´w”õ{޼íóýiæ{y½®çÂ;0h3fòü2ù½võ[»;»ImÄ ¾‰j?,:H¹¬° IÐeûXZ»|]ª¹ÿBu»c†1Ú?[­íÔ×—M«ey[\D^U(Ç[·]à@âo¹_ÜгO¿ÏÐ&<ˆÀ Ì”ÄmÜ+Œc=§—ݼ—ŠY«3˜Z*ûuÊ|†|´H¥!¶Òî‰I!Qi¾œY„ʇˆ9 Ö©N¶jÕ7á0ð“¿Ûc÷Eü7.«ìV»ÑØÓ—§ž¨ÝX^ëܲýK=o{½þ+±ÞdâqoÅú W YÊÑ;ˆ°•+ë* ÿ£2lw«#¼à¯- –/\+W£›˜ÊH²mgך»ã¥W„‘SVĘ_¾O7eŸ»m¥“5p€´½A*))*“C éŸ|’Ú Ý‘‡)«¬u‚<â›Ò Ú{O!kÆìÛ¹Z¢,ìTiJ¹sSH"ŠTŒÊr¨\>ŠÂkx»žNí¯ ½mí7=ëY»@aU× ÉIÌá”å!˜ `Åvx!ñ»,ò»z½ôØØÓ]· ø EÁÂÚjÇËâ¤cl@s¯†œºŽ÷UŸh«=làu.N+›åÐ6¯C±£b·Ú´[&ÄŒ…°¶ß[¾›®êè ïJ„þ9óÅÉÙ*¬ò®;é÷﵋>'ó5)!)þe]C3 €Ø¨ki?%¼©”Ö¡ÈR—ß50Ôó+ãJå‹×™rÓTsJc$Q6¢¹«ç#D*Ëb i¹®Ç{~Î;^~ÙÄ‹¸U¥t€ãª­9 MuLlb­Æ”´;‚býÅ8qÄꉳÌG™ÙQ&JœÎ]P™w‹àrR°_„ûA0B”ˆ­À ŠRÀÈ$qÝpnÓÙ¹û¾7fåºgb¢ÎtK˜sšZ«™Ô”æ©K}Þô\ÎÈf%u”Ý¥ZõŸ9Oš]¯ R–»/É.72Q•ó&”„¹h—h¤Èh ,IdåÔD̥LJêÌD¤ UÃÌxúÃh3”¦(4eÙQ %8‚º™Ã÷óÅÌŽ<ÞW1_]nªi!Êa>̹÷ ¥¢Í)èašŒŠ!×|?±Úª¡»6±mªJ' À¢ôœûVtI*/¤0”ÀbŒ„n«.”ÌŠ ,¯…„“Ršê<ÇŽb¬¼¹€<‰YµBÐç_EG ®¯‹,ŠÌ-O…d©©u<Ç‚B°¼¹ À|ˆFÕrºÇ5fœÂc Œ3I&Õ×Ä„&hâçÛ¡KÑÖé¾Èºªfr(ècóAX4”²‚ªBƒÅÖe/Ì?hw6– -6Ï1àë # Js á›uG´;#…mJî4äIˆN¥g`>„‚ÛTsE‡ô] ÜÔµ­x­Z3ûÉbm]IBN {fÛò¦:sÖë±\Àœ cLÀ§)ÌRkAòÐÄÒòX½ÞÑf4¨gº'£@âFc1øPPTÌ8éb‰¤v»Ieüªv”ÌGhÌDÃÄ"Ul…×µ÷ÐVÒèj‚ªÈ+ÀX².%Öu’­\å9 ÃPךNâ”Z®N‰]êoµì*FdWL¾€ÿjT ÑC2…7‚lªÛ£3µwTí•æz}Þáâú™JzNiÚìÈZãšµÿºÇŠq>|AnE1;µìú~D›%•×f¥¹1[;‚% <ÊÃϹ:xŒKâsXÆæ&ùÖÉq30%Æ©fwÁîÔdêq8£M£œ»uvÎ:» á1‚ª¤! é$£ñrǤ‘•UÏua\àÖºý+†3Î ˆ" í­“–š‹s½tâNÔøe)òúïŸ$ŒŽ¼×ì¨Ö—5ν“k69ެ؟[#¼ÊÍŠ¸-ÖjK šc1àÈìdípaS¶¡8D Û࣡¸&y•þÞ1­‡C£/í†Í9®Ý˜{UF {çÏ@FI‹•™“ÄëÒú|U[uœÚ‚úé‚!ÇÜjé‡aøßhƒuëËöjÅyz'/ ÌU! %$‡â¤Ž7I#*«žèlmsƒZë¿‚Ô~à ,nf‡Ä#mæFJv‚ܘ¨ËT`*½ ÏP‰»!¤µæ—òðÉ[”µµWF+3 Ò¡1Õm¸ÁÒ±OV-ׯ‡;””ýéz$œîÔM~¶L€Ù iœöñ¾¹N]߀N üí[æ a².ŸéX¨õŠ•Ãp4-vsOa³ç™‚Íâëø–,¦šÐ0ñˆËºA$¹j’'“M%.“pÃò À&†âF“Í—l^gºCÑSB³—ˆ‚%”Ž ì©+KXÐ~+ŸÐ2Ir«é`F§¦¶ãˆÁ."ˆè‰ëLíòÞP¬Œ÷«ãâ_™$lU™äw¢©V&±’ƒ$(ÄÒ¶)ì3Ý£ûðï;}Uˆ,3E¬ªÜéÓ見~)óE).Ý69GNŸ}DSñOš)AÛ¢9T›ÃÝÅ-51sX©Ëô› '½*øçÏ$öyWôû÷ÚÅŸùš””ÿ2¬™q]^TÏv-s™¡^ÐLVÖ/€Eœ—ÿZùÙRNÁ9þFú«k£Çÿã¯ÿì¿þúXrMø=TOE(™ÇˆXúá‰"FÜ”t˘¼¾Ñϼ53¬!xHTËaQ Y?*R¢'8ºæ¢Ì¾òABŽx,¨àYvQŒ:­†æµÑ‹Jé¼3mÎB¬ç·GkIÏêÍú»U½oªaAY9tún: ýIÐ*Ìó#£ÿÓqÓøoêNC<É5T …Wôm“[-¾Üø§ÊFV<'’«O>ª“AY]ÛfãXÉo±.)ó™–$äªO²´VBV^âÞìB,Ž=ßÍeëë³tÕQÌnT »RçÜ‘I} U¢JZB^Ķܜ*Ð{uötœ¾¬¿­ ¥[Öú.dAY>ô~lËEFWn«’Ör”ˆt.”E+üa4 ¦ø7éK|CúáA\yJÐp>¡&GJ¦wœ´Z‹:Ú¶’ÕuÌDC„A | ÑM`ûK^9;šŽÝœÊk”2Þ2Ê$ À;Z]N½šÆk¶Ù/™e¹3œŒÚŒÆcðÉ k\Ü#ƒÍž»sD¿ì¤˜b âÁ8ݱ±“ÛηÜú/¯‘:°))(iϘê‹0𱵧íšuVÏÉßE}&ã¿Åÿ× >ù˜¿õ~ qýSýž µ»X°¶9i{ºv«2ï™UÉ­0u €üJcçMa£®»òW€Ë…ìŒ jv¶ô‡uµ:][-Œ÷m±ß2Ërf8µˆü2C×7àóg®Üч Ì?Òû4»[0Á{DëÙlG§xØï™e¹-fã[¨Ìk¯Ë#w!\Ù€œÙþ·-vüýâ w®¿’çl/¶ÎcK•ÿè"fíM¿_l2Þce":/ÿ`œyÚµ¸øÂ[(ùK 6º/pÆ8ÆLTzbF¹6Ô0õµ’oÌ©SvÒ¢)?V¸Å9d±YÃR„å0˜ X‹Ô-Fé™»*ëâwD+ aì6ݶ¾jËöÑÕgó'"Óu •Ðj‰©T§¤äz%½ÂƒG%S¶,)šŽPæYOùÑîQ³ZÆZA„Í0+¡j²Ìª¯\׳5š}ôCG€,Ä’Æ•eô|{Àþ ñ ŒâýÚÛÛ;,׳×4{‚Ó¬7°ÿT5íOY £-ÊZãV¢#¨? ÝP«S|7Œ{ÀóWE—nï4¨½3€¬9„¥‘DÆ×2ïB‚‡5€hUbóZ%g(LÃÈ<©G ;ÜFËE5.‚•›Å±­X/ÿôëEŸ;U ©Án=Ø;›ŽÊ´jË‹Ë0þÔ«šZh¬ÄVŠÒð¯¿}µÄŒ*ÞØwѯ­¸¹—3.u*H%*À„Ð5¦c¨ŠEõMâ4êáeW1ìRüŒb¦¨’#nν¨¼¾Ñ ]$) Â@„ŠR†Ü†éO}›)DVkBŃØSý©hµñ+áÚáv¾£V•úMÐÞ• üsç‹’ {<«Žú}ûíbωüÍJHJ™SìËŽÎr”„™µ¯$K£¯(Y_yã3ÁBÒhmC˜HR/0æ³6KÙ:av*ÆXužÜ×îÍÏÛÌøª¥—(ªŸt!¥*ÍÊ\ÒÁÔ´6G3Ê ‘—…?ûw÷Mü?*«ìV}Ί=ÏNϧž¨fæŽ#³fæ¢ X¹íE,±6ß’y²×e}¢žŠˆ$7 ÀJ3)Œ‡zª×› sc:²ÌÇ R3·?*Ó^ò¸RÖ!-g/é5;+0:MBÅ.!ñG††ìµµ»!,¬›pÚ8m†W9Âëò&GhyÒ"3%r]§/Á[PÆ%8^ªJ ¶Ë„ã>rDµƒ²³\×yS;+ÝyÊ×Ì Ë„ÚþD±¤_4×blHût.u½wÙJµyeeœ„ ” <ÀˉIí¯÷c)ËZ$Ë€ÚþDšUÖÒ|IŠŽ†>`ºnîÐO—”ž”‹è«¡TÔ[7ÄO,Ûq¤ØW"ðh:€ç J5¼éCA:•—WR”@ß¼³l&˜m\‹Ç €j 2”Å(æó¥G5 ã†q]ÌÚ°ÊZ:¥…ívÆ\ü„ô%³hh5Í91?ÝD*h˜>iùÔ¯­­¼ó/ÙÝ„,-Ov,_ />iù@µù%˜Ünâ AeÃ}ㄹ}Ï¥"õ¤ت“c†Ø™p³-1‡2h5öG !!*P·1Ô*Q:rüR’]1eajhbk#S"Ûk‰:OH ¦NB•sC·Up'mÕ»bë(ªRÎõUmyªú¡ó©$¹IêèªÑæÑYPdzÌÈõPôr¼,µ«ªÙíÊ`% Yrš\ L²5 uäóu4¶{ ¬«9¥JšŒjtê!1Öc𤠭õ‘c,"Fy\Ïï‚Ù‰³”ž¥zpQ¨p޳Õ,©'Mkæ8q»•LËëà¤á>_sé@šÝTšó*˱A¡âÉ“tÑMÍlÀe©G‘‰èJ¡]®èÿG¸ëãù¸}£Y,£Wkz™E˜u°ð¹¯øp¨;ÉtîØ nXû~naÒ­ÄÑla¡IJµß[Ãí'ÖC“]°¥Ì²ýŸ”ºRBº…ÀU´$ÅǕǬ XÖTVÔ;_ÔÕ6£%„¤š`Û*ukPÓš†[ëä!öÈ2{^b-†)föæçùP»CÔöwµÖ)R~g QÒyH?áˆj!ê3Z˜í7Äå*íÔ›HÓA(Ïâ“ Ä]Òädöšâ™ªI¿)66ÿ±ÚKÈĹÚwŠiPþ«"ÇþÅ¿îAÚÒØÞFŒÓ|UåXG÷“äB«÷É–ûOñUQaÁÑRm~ WÐ^£{RñL¤©2gþ¨ß膖Æò>Ô|S( ö‰MzJ7ú<¡~ŒåtÌþê)„‚©¹1ë(ßèŠQ÷+½ÕŠOiþ*\ƒ3&Eì-(‹ß¦ÐÜP½FI§ö¥âc3(uäÓ¦R »/JŒªÐrå>{ ì‘“¥;Wñ ;ÚU â”ò]ÍH½Õápjo¯-€Öa]î¬÷ZãŸ÷ùÝ—¿œ‡Ø/Qù—ísŠ‚nö¢¯ûD:Ÿ½fcÈØðíwˆ?öf—~—sü¨]£ïoµí])t;†iÅYl‚—Uq©ÔZúi¸7ÒÅö1z…”lCdM`Ðê´Õ©Ò‘°Bƒô®}ÚäPaêQÚþ𣮠tñópv¨-=¯)Y²«8üáþnkU·ÚÚŠ}ì*âë¿æàícõÑÚ€}ì6è==³ÿ샴=Bu#µ6zd¢¡Iœ–o-˜q.ô åÓ}oð…Lje³}¥¸n±qò¨õe¿òáSô\Ó¸õÂÙ©D:æ$‹UîÃòîgN¼ò‚<ô& M2b8ÓÛ Y/ñaÑ÷¦w#a¤ã,%T,¦Ÿ‰©3 {/vÒ&‘œ•l2Þà뵯í € € € <{‹°þ ¡¹UÄ¥ZJJÙPï"Þ'uG¥îl5€MÑÁq§kªD¿~ÎÃ/̬[º~uБ}/™ ¿¼^~PÒlÍå^u^íSÄÉçóȦ™K@M²KË\ë©+ͯ٦Ðê¼ê_™Pãg§&W0æ,«¶·TT{©¥!žII -×]Í£Y{bY‹ƒ0òÉÐo©‡¾h›bz¿11Ý>ë턟RUté½·‡¾GÜÄ jëî€}J767ô‰î~FÓkCÌP±ÆrX›66$ ¼¢´Ù4ÇYÂ5õ”“,þSÎÞPyŒ¨š×«ëJBØ{Æ €Nªò…Ý Œl›#ÂÜJëªÏ ýÒŒÞ凉}šÁÝvYá$î’ÃŒ½àÜ÷‡áÏŸèŠSˆ” lðf´àZÃáÛJßét9OÇm!z‹‚»4Hkõ•LwyÈMÈZ@9’­¯ñËÙ @/Àº’Û QtøSœ¥@Ÿíê,°w?aö«»ý¢æVGæ¹)Ósp~­àOè%«%5ÀÑí B”}Õ Içxß°ûSoûk„•’‚®AÓ—]msaÙ²K<¦¶ò ç“dß:V£®Þ_Ñ ¹p G‚L·¨Æh¶™©d€l¥©ZRy“môÒ+ç¡vÇÈò8?‡¨ž J.œ×N¤ó&ÿ ØhzC]Õbù|Kp“ ¶Ó;Q”c î<Æúó†û˜ßhãÃ+Q+Ÿe´6í–´7»ˆmJÄÔ(ÂL!ì*Su…Їv(×~ºÂ©¹#-p«²ÊRäÐ[…@h¢U{s·"mõÂíbN&Â|#2òG´†²’̼“¬)Iµ’§nŒ®†ÚBù…òø8W…P”'Ú!V^P.›<µ¶Ð5 ´Æ—ÂŒ6•$ öÇz€³ª| ó'nWwí|Œ§„ø}é…Ú¯-+•WY^ÚŸÅ9MQàLßha Ksì,êA×o?²&ä*‹!?ÁúBiU;_ÄP͉AåoÄÀ¥!öÄŒ87$ìºWí ÚÉÕVW¶£®ðwJ¸Ïpi¦RÓ0Ø)O…&Ê æ`îe8F†ÕÁt™¥4—ZÌ€r¥*6Ëme fŠ­˜¤$fµ¹ÚžÃ²<ÿiz‘*,¤e µ’‡§­õú¢»ÃÓD)®TÛi´’U¦l¿¯”O~ÃÓcKá=Q!@¢äXt¸†æÀ…3ÂÚ³k »“t­{yé½é²4Ï «Í‚[–˜Xœ¤h¢ð9¢»¦0}­oß1 ¯MàREzn¬Šp}ò²éHÔ”¤€A'_= ï‰-‰ù 4à—óŒ¹MïÒÐZ‹iŠóI%®ù@ ¦ûòû`ûƒt[Q1·)R½Í/֥ϙLËÎ:”•[S`m}¤%d¯Ûg‰Íûø·7&yÛ_*&[aîÐO¤¥a¼C4øs.³a.éÊÅÀm¿(]£îhÞp§jüS,©v«tÚdãIUœs»Rp_]Rr4/.pv”¦ÏDð‹‰˜sˆR+U)Õ38Òž“tŒé]I#E&æ×Wâ$´ìÜà@àNѸ¾¥Ä2U$úæ¤eæ ¼º[ ÊF‚É:‚lTGU!¤`åÜé8/ƒóRI›žÊÚ B¬t:úôŠroì” —&ÚŽaÉ_ó $ º’ Ͷ·(_;Â#Ì`Ü.œ®Í4lIʯ¾t s\Y6WŽ/©¤…¯.[¨$¹{6<¡ü¼‹¾äŸÒ([ØèH:Ÿ÷0T=ÿ͓n©~ýJu €»X¥WÈt¿Ý‚”™d×¥i ¾Ûi-¦×BÏ‹=±ð[›$Jñj™|Á¿€ ›ê-ÐhMþá¸{{àœ8«†æ¦”äà ¾…›ß("çt¦›_®–$ù{$Kcœ$úB̺’FTæ$ÛE4Яé‰púe$³‰°LËd9/*•‘ï!@zƒÓÊÆÁdM .ðõÕ0ARQ²ñuV pcSDoðkÈmL¡I P4òjO”'Â’±µàl+4Ðq d¦ÀŸt/=tvÈ}è×ë¼-¤9%ÞSžo:îBQ°O?×ÖÝ‹å4jBñ' ñ„½VFmée˸—‘q¹µµÐ‚4 èA±ŠjÄ´ì÷_1¤ž<ÀRué[%ÒSM`Ûà 5>A¾·™²vm0 € ÜgQrƒêµvR…9'&ôÊåò’„mËHÏ`ŠôYںЗ'YrÊêMõúâÔ\Ž~å3ˆø§\™RËO%”Nƒo(ÛåŠ2”›|š„Ϫï¾ãžÓ6áÔ¥¤•kðŒP¸Š³7•]Dˆþ'Åómš}G"NcÞø?ÝZ'ø‰xö9¾ êæ+rÊ[aI'*çÿÿl/[*á~¨]ó|ÛœÄ6…Ti ­F÷ry#}ïkùÀòå~T ÉòÐ㉪¤–ÜÅô6“Í"aÅ}vLY2K÷ôœ—†FVí3$Í·2Ì­_x‰îmîÔnV­1·¢)iãвuº~ÿ¨W·6J“ò%K¶ñâ ãÀjR™T¦ÿÆœܘwF†•1„nXÄÜØ•M6›ŸL¦"OZ¶%$ö†œ›Âº R«J€ª‚›Œë„ÿ?øšy…Oá¤Ø&8HÐ÷µ#÷Ä5y_¿È¯QvªÍ_¶FL!(¢M¬ôËÆÿ ‹Åwaj»/ñQöÝ †œ‹ð• ðŒèp‹ùÝpûâ·ÚžTдâ†î2a|9¡ØÉ“÷ª¯¶¨ÛÔE³‹Ö‡îpþ #“’~ËÂY·¨¯È=G.[Æõ,÷tŒ>––×â ZÍô_’+¾HRxƒ\H+j^ÑNåºkƒð†ú‰û~‚–F·ýÙƒÄ3Ið×ÊÝ^Ë,nz­5çôÿ€”Ý]þÿ0^>ÆKÐ×]ÞýH‰þ"wÏèË1´c¼\„eUz`F¦­ÿv*YdÝ'úòË›0Ç1{NY¯Ì¤“bB×ã—Hò{Ž9­r8¾!cuh¬K=½ŽU$[ü^¤®›VIé‰BÆio\KSølùûä÷¡_ÄJ?Í¿¸qž#c„¨©8¢§p3xÛàt‡,³^Låš^eú Ÿˆ’¥—äÂf8jåÊðî(m*ÖÍÔÓëI…þù© =*á³­æOåLžm‹­¯ì^n7ÀÿѺwfOáøH-âœF€IÐÈ"ÃãžQñ!§ ;N¨ql*úÔXâ;²úÕ1å+oâø™]±|HIÃ’ªº¤¸ŸIuÔ—Û%&7)1j2¯µú ãK™ÈajšÞAoáGA ”&¤¤•Žbå±kùÞêù` ã´ÉŒát¤gªÐ^´B+R÷ò° ¹õ´>ì¾ í•éNaî&I,6õ aÕ_U2´¬0Dù—(†²%I«!¼¼u$´÷ô*° Ù**úÚsθõ’ÚsâY2ƒ5'=+—bókHûD ©’{Cî•[DšwjJ{1™Z’­Ò§©‹]LPz®é£l ñ¦NuÌ—P­uVžgËÓXÖŒ¶‹Se•wJW©‹naD¸FŠÚàéúë·hÓ»¹óö8¦œ~“ŠYZ‰ *T‚O^û—-£9­›càôÄA @¯ª,Rø=‰g&BË'º×€ Ýi(òº„™º‹>l÷Ä6‚ykkƪjŽ&Ý5ÎñÖK!dgJŒ²ÊôŒZ·£_m÷%¶å-íªcðŽE-ÜH_(ÔÄÌË«!ɇVoôœ$Ÿ=áwI¦¬[× j€W•^J:Â}ÏL#м~ÿÜÆO®@P;ƒ¤/îLOwlªÌ¦ðåN¨•Þ eÌ }—ÛôĺR¦>éÝ™J¯¦ ¶¹‡l¯š©€;-}|ál˜¯–¬2¤Ø’ž°¸Ò-6¸›Foá.¡¶‘NIª%Áòd¡ÏÙ\ì"´ŒãÝ$ÕÐŽaY•kÚñ:¢’}Êø^Sl¤2ƒ±>aý¥L¹­kÜKiná9îRu#Ÿ8óáz'R¥¤ûÂÃÎÒz¼Eè/¥È%Zªý mV`e êA¯ÕR¡­-˜¾w,S˜õ¡%OahnlsXi¬$û~ðZ]Ì[KÊ› ¨CHm§+cíÕ*I)½Ò6¹ÖñJUÏ(·Á”d¹*Fb½íÊÐ_Q­ŠïRPP:Ø\h"j\ Zäl›$ê ¹na«¶Ân20‘˜,'5í¨&WBÙºZ9ìl.:›ò†Úd5ÿ‘…UÌ(ªùH‰mµcÒm~ëØR Þȸ;_”>гÄÜ…,e€9˜ž)ë‘HX)±In|â»Z"ýù*Âç(NÂÚÂnÝP6ß Š(±U×AöÃQ§£Kr®FÒ¦î¡ï(û ìOœ/›J‡Iê$¹v_š*L²P½Îa¿H"¯HNÜxûOËÙ/0RËâÚý ]Ëí ŸË+nÎcr[BN]ü>È[KÀ>Þƒ>0‘k}!º&—(…‘8§#Ÿ‘}¬Wc÷q{Ob;åe*_CÊäãªâîHö¶x§­«¡AÅæÌ°”¨›§87.L”’¦×êe$÷Ÿ6›/a÷À«–ÊïklRÒ­Sd Möô†—Ô§4™‚ã¡IPybûk{H2=ÝŽ9m$O¦Õk.%P›j䨲ê“[C‹}»eFMm2K8«J©Jn¯;ü`âókýÕíÉ$êОi§±mâZŒÔ»ŒTš–ŸJ“d­öA[dþjŽ¢4î\Ö½I-! 4¥e@yEAעߒÞV`¶“©ý1´)G“TÚûG­ÿc9µ F/}~òÞ•Mý¿¦vubàõ#P€9n ºi]+-©öå7({d%Y¯çî[ã>Ë<ø»#*Á ˜u¤qNREs×*+R²Ù ¿”fÒ2R}Í3Y^® ÊÎ/±ç¤r6“iv¶ ¢ê6!W«©‚+Ù“,mò`$llGœ:÷ÅEñúŠ•*@ëë {åò·üÌF]”o·84ô…nI7@5 P]‰<¡R¿˜®-ª3â¶ŠÛõ0^ôùf”‚»d&÷♋|°Éà¯9›i %à}­nÀÙ)9cµáÇŽ]Ü™ QÞÙ±ùÜÌ6Õ¡$©ðö$p;ô…Âà*=©Xµ’3’/}:Å]º-ÍEl ‚áQÔè¢61Jè˜É%Ý-.æNU y‘Ò5q¡Å¤þÕ˜JÛÈ lnh•ÜùàSJÅ”¨_a·­¡¹oF°åð%) ±RMï{“¾Wò„_‹¿ì%ÐÑRU”Üxr‡ÜÛvˆí\¾L€’ JJ´ë°…& ®v…4Þ{Œ¶úBûZ)él„­÷T¢PHp•ù4qÕ±@­³”ÖÖ…üÌI¦a(ï,T.½ïëÁ.1»±+Ê‹‘½ˆýzDJ]Êü•MÒ2ÐF«È MˆŠiVŠi˜þÈJR©²¬t?©ŒÓµÚBŠ|‹N™$oéäî‡J< ÊŒÅ@ÚâÀr0ÔílÍûw³* V‰ ¢¢u—]¬nÊ+±÷†¡]G-"ª¶Á¶e”àHN],B¶60Kš±G·–·øŽI=ìÓ RЧÂÀ^ú÷;Jÿ–@*J]€!9´í{‹¶0tüÔÜÜâ´¾·I HÒÃM½`œši3L’”–Ñ:N©ÀØLCµÉ1®ëâÕœ+-­¥ÈÞH™.{‚µ4l´„žf•»çô”„X…YˆK‚c.U@ºˆƒ¹6×á®]éé˜pºBná*üë… ìŠÝ Ô•Óßà$X[Åb“|¶çÖ.1u²{¥uì!]å¬TTR~Øš| JÝ9 kóîSdìN§ôĵQ£HÉ·lyfÁ(¹JZ¢#M4`››(‘Èë¼ 9J†ÚÕ³ ¢n›Xû׊”{x*Ru}Ölê"žÞr£á"ßoœo (ÉÅ4ÉòÊ*hf̜é×á$˜Û“[=wûoÑ1sW’ôª[èt%ÁÕÓðzŽp€8_ì…Ûö€HP|¦Æ„ÿpŸy]EžœQ ƒ—(¶¹yÁzGû<3k!…¸ µXÒ3Èõ£8¿šVRÌ) qJJV–Ô¯ ÜmÖ9V¶M9i !ÏžÌ4 ØÛh³6ÚtÇRÙ!<È¿Çì0)2ý8º³oÂ\&âN! ·[¢`ú¬äƒÉ*fa´ «‚GXÙb›JH¥†\DÔ§%Ý•šrUæ‡Wv´‘e%I:‚:èoéÊü‘%Ûª&Ä–Ò@#b=o '²S’Òòa*BË•#¥þøQµ±6¿ Bs§0· ·×·ÀÔož ©$§ o0ØBQ’’jÚÖ¤‹ ¤´½ ql™î(RÔ¡{fé¾>ßô0ÊÐU{ªÇSa´S¾Ò`íÿØ$ÝÊíÒãXTøáŠBR|Y”9ïõÁJÁ)vÕï“ Ç6÷å´9­è©RJù2+¹×M­M*+TŒ­AD”‹ØîGã•xÊöŒ)Iíñˆí’a&¶aÕ‚´©H@]¯h$¤ž‰n’±EiÈ •ªÈI½ùó=±&š¤d©I7 ‘Êûú@”ü‰MVà×dªä\ ĶäZn<³ x.AV¢ö6·¬4ëC“§±+§bzh=ݧ„›¤MöÞ+R^À¹÷2›’TS¢|9v±ëç¢×j¤Åw›&Ê ç¯8vѶQRN@¡Õ\¶1Rö\šöëb[ ¾\‹hL+íåé³7U‰7ËÓ©„âîØ›Mö£(7M’•é­ï¿”9*T†¯– ]*JUka%NÙR_*ßèdœþ$‚­u>qQ¶Mnçújì©.øsfº:¢VËI»BûÂXJI% Q)JvMÏO²%ÛÓaÊ¡·’±uXjmæGœ wjÈoZÜå$qäb©R)&ã_ödŒÎªÉ÷†‰$éÕKaÚÖÑ”¤ÜÛD Þ# 2»/lZs\ä t†Ú¡vwZB[aÕ Ü£¡¹Ú ¯æ%&šK‘)J€Ž` Óõ´>V™·l¯æT`5Û,¤f7<á)ëf ¹_¹—[9 ¦À 6…ÚévM îœ* +@ä< îT1%¢°µï½÷05½=±ÉVÞuÔ´ÑOŒéeÛâb®/H9Gå.åB•OB¶è—ßARÙ}$XH…”ܪױ<¢ãT86ôz§ö3jn¯Š©ASÌK¿Ÿ6Ù´ÚÜïÞoÊÞpëGfÒÙëh ‚á²'sÙèMÍMû«‚ë“,É8ìð¼êZKE…μúÂrOG^Y=󬹙Ë+)¿KFs~ û-é”n-„ìsFögI}¦<ÎC{'AÎÛÂŒ·Árí´XKù]q Ryf5ªOFŠ:î>ˆöD\œ¯f 3;54Ó2lÉ­×]Z†D -W$ôñßò$R8Æ#á®›ÃÕš¢&(É¡×ñ%$qãª/±{©jA)A!@k,qc’M|Ç.íGÀö8PÕ&mŠáªËTJÂs4P¦ò€F·Ö÷û# ¸û)£)à‹Vi5ÃXb¿7'má¡1bQÉU'2Ut)‘î˜>F­+JÃ9Í© ¾àî M‹æûIÁ° EÄK§´&š{™I*+N\ÃQU´ îß3âRSkü!ö{³5>ê¯ÞÁe$›„í{fü ŒSû]é!kiÄ%¥­µ´•¤”*Ú+¯¬ 'öBRw¾ „:@ ÜiÈ`ó SHÃk²”®ì)@FÞw‚P~I„Ö¶ÿ48Œ«aÇ ²¬r:?L5_Rœ·¶Æ¥ÊÉð›ëøBPÞÅÝ@áOqרÓ|5/MzY‡+33aµg´m ’³G‹¹rlµ>ËÜ\§Òœœ™¦ÒL»`wu$ÞãOÍ‹x&¸/ÓWÉKÄÎña—kø–•$Ü‚C+vVq+(&àh-¡6ˆ–)F7!J *Ûý_ûœárá óÐ{Ç—D¸¤Ókõ:~ ìëÅ|M‡Ú®SðëH“y°¶Ó2òP§æ¾ÜÌ_¡&´h±_?Õ•8+ƒ@Å8¢£‡é¸uÑ? ²Üß´,!,À$èO1±ÉÉDOoº¿R·Š;Å|>«7MÅ”á(ë•2´¦ÝR¡ $%’Qi£Uy$x‚€°¶cmü¨ÆQßt• –S}ø¡]ÝÁXNö·(IoeÂIjEÕ-Áì9r î ¾ÝtñÚÙmÅhO*·6‘ÞýcNë"«“¾þÇ´ü̯}•—~nnQÖÞ )!9ÇÚt„¸:pIp{’Ò@ ýôwŸÒŽñ½Q‡ºäfY¾Éá9ÆÖR” á:é½ÿÑ û3µQ+fPÛšBT£cé(¶‰”mUd­/}wahç\èŽÕ¸Ñ*SUf¹ÚâWÛOèz°n9£PqËøKHI;'YZ¼Ëí$÷/‹Ù7?EW·Õ8d¸gD[á£Ú•¤aÉê=G T‹Í{"ÌÍ08‹DXÝ „˜èi. ¹8g ë(Æs8‡ÍNÒjòOϦ˜€¬‚p¨ Í´—>'WCrOFdnbˆž·)8e~S\ó^ÆÖaÞ%:æ o–ÂÐfk¶Œ¦élðËCçTœÉ6é=­£ž/LôGÖ[ì£Á• œÉ}ÍKþˆêž£:Þí£ ö˜¯ªÄIt±ÅçpíQ™ytI¥õåY 'k¬ŒºôRu»ƒKìsˆŸÅ´Ê×qL œÃînöÌ &AY¬U  RìêbpO½4f›|}¦(õJ5pk È;)@l!ÊuÔjN¹¡yKÚäXmbae‹Up)Þ”N§¸3Xà&!ÀMaW$Õ…S‰µ!Ô”„]å Ü©]àhDjñ7ßbå[LÒ{?ÔðeS‚ÒxR“ØÁ8¹¹‡~iùVóN¤›%9Ö‡`@;ˆŒUUÃÕ+9Gh¬+а¿kLJÍÎÎ6‰„LÉ¥)ne€ÚÆY£+ÙÏ5Lè\(Ó°·ÍÀ>ÜÆž¥xµgBÕ3}¬P0/pá¤Úe©X­¬?-S¥O÷a!ò¬à¶zû»yÆŽ”h)8Ó"6Öüof‡Œgi´*ÊpTœ¤…Be„­¹I¼êºíkY:+ Þ Š’_AבÅ>5Nų5|5_Ì䜕zZE…- p•@¤‹ÙÄßž±3R†êÅÚùDÞÔ8Ú³‡°îM.VˆSZ¡.b ÓÔ¦™•.HͲ‘hy&¢®‡&ÓI>¥F¬Îâ\ /B^j”º#3UZ|ì› ™™NT- ”æW†âé:ïx¶­-G8ü“áGêb†Ì¤„¼ãEÊ€ëÂ…å],ÚD:¦Äד”pé–ÀŠ9”ºã@©)S†àW¶±–ÞÆù'vÝ·µW $q´•6³€$%þT§M·H©ËÊ´ª‚ V ?75ïО‘´ñ&µÈÜVFSöˆÂ¸Wð‡†ònZMô7ˆ £óÁ°Lˉ Jœé6¾‘1Æ)!I.(½íÄÝU¡Ã™Jd­<ÔÇB¾Ôi{)+³Ïâ‰N%ðõÚÄžÆSSÉ}…™Œ…Ùlˆ ­.o¨B®F¢äl"­Ý9×l:i˜°D½J´Ýf§!:e¾PC™»Ï ™“›ék_ø±žEþžù#%SZP–ÉXQÚ9)÷Z9åÝŒ2T¥]Z F‡¤+ÖÊU{.¤[*¥äYµÆ XZ/Zqä›OI±ÚÀ÷ÆÜVöwNÀ·}‘ßYwù½mjÑÙ†¼í„tÂ?dJdzû`ÛZ«ÿ²ä&éfthð´éåVÔXÀÕ¤pÊ1k‹+§<¯¨„¢É¾ ó [íˆvŒÕ$î% ݲR, ŽÛi¾[F}ÑŒiª‡‰±)Iäå|•ÝQ‰)™µ6èSwkpuZZ* _u~¦ùÁŽ#Õpw¤1¤ÌÜÄçtàŠyeJšdŒ«I*ßàéaÂN/æ6ŽuàõÿªØð2µÅnÐh^Úó\¥FY„ªyIAYЧ9%=AHéiEwäªÙàìM_«W*T«5ºŒâ×™oÌ:V¥o¥Ï/+i­´Ž'’MœÝö¯”BLÐC…ym}ÁØDÇϸîÚ7¼aÅjŽ"áîÁ“”jr$¨* –q²¬ÊÒÊ òUã\™n“/ÕµhÙq—‰ë,Õ± p}^y¦’Ê_šejXm$Ù7è.}o³Åº¢½uÍícŠuÞÏai%*ŒÅBwÛçf©ÁHuå”›.,‘ ·œ®Ÿj#Ö·HØh] ±•IÌa¬?P˜ ¶¤Sg§[uN³tå½Ãƒ•­¥H¶ E,É¥jÍh«Ö‘«ðg‰õîã±$ƒ,ϼë.²¶'Yl…›¨›Mõþ˜ÏÔôÛn&1ÎãÊÓ-œâýfM2•náiö¥ÜY”RÖêTÂT² ‹})$‘xµ•=öÑ«ÍÛàÖ¸¯ë˜û¢µ]2áÖXD¬¼¼«yZa´ÞÉH$ýñ”²9ÊŒ¥>÷ÜË|/Å')¯ðá)i†*î/(8‚2”9e¢Ê¢»=Í#‘(ìƒÄ Íbî©Jɦ3I§3OiÉgÔ¢{¯uyŽÇSõžgz_C7žå£`ªq•x‹?WÆøR—ˆ Í:ZIæžqh!mYä©6)YÌAõ‡,ÖöR³ˆ¼P{à) H¢ÊаԤ׵·%.ó‹qNEÖâÉ'ÞW@"g™KI~¤K#›}º1Æž%¹iØrQÚ+4Ϥ½…³4¥÷ÈÓU‘”Ü¥÷…9ÆUòŽy[ª\XóUjî2Â8š“Ibƒ?†¤›’–-M)Ôº„AX)M……ˆÖà˜ÒYxhRêx¥¶\Ìö‚[ø’¹QsÒ>¿,–+T£6²ÔÛƒNù'/ͪÚbN÷Ò/ÖV’EG3n«þÍgq•5…Ã8w KP(«žj~i‘6§^šSgÀ²€¹°È’íKCõQ°³Ú Hâüe[Ãò©‘F$–K~ÎëÅI—q-„wÉþ0ñiüo(¯]·d®¡K‚ª½ÅY:— ð^r‚òS†ªyS^Óâš$¨¬Êäþ·‰ySŽÕ²žuWì^qŒÞÃRIua‡çRÛ ð©IJr’:ŒÊ×Ìõ€Ã¨û(ñ´êÝVî È6Ñ#õÎ9Úß’º¦Jd^±QIq~b1ÉD+|} •—ž+JNca ŽnÚ3ï»ÐYyE3y¸AI5c­0áZ”5@µýLR¦ö8Çz%±%>ê’ÒP.«›,‘·H¥‰ÖËì’|¢^y2+–ft¥•²ÀYîÔwÕ<ía \—jcxäÓduÓfr,¶¤Xl“c¯„¡½ò%ŽU¤aÉžöýÒ‰š…Z&0’Ù*zhSrS©¾fœ°6iVV¾åØÞ7µV$IN–‹¨—yVºVŸd.ËårŒ~É…IÏ©öWAµõiQQ…/ ”Þ’0ä¤Ý‚„»à‚%¥ n ê%·ÛûüÅ7"øq]àZG0P!9%Hk •“e‚ÊÑsrµ¥COªiê@ñÊ:Q­ûÙ”HºWA`ß*FUj8¦žÒCXç£&Mð‚›ªÀ Ù'õé Ųý91*•™SK»n 'BT /Ø—ŽUt)ÉY’ÐRs0$eîÕ¥†ûy˜ªkmñï»ÜlIÌ6¬á·@P­FžQ›N´„±Êö„©µ¨„–ÖIø :å4û’ýGRÊìS•W > ƒ´*O€©^ÿ¸¤2ê›Ìt޹¯õÅvyØznKõ0¦–ÒBŠ´Ð—;ƒ¤¸YqN(epƒ©ºƒ¤ZÖÒ'²Q¤âYXM‡öù³Ò"I·t7 )[Z ¬œÏt»1{­•(?µì iË9±Ð ÜôÖ¯(PÇ‘[b̺ÛÍ­!#›f"R¶JÄë`Ó¸ +J/¾šï›fŠ òeRå$xÒnt67Ó~IôÜ¥Ïõ¦”¤xRI;AXz-$„·*µ#*RN]E‚‰0v¿av´•2ëQ ¦ýFC µñE¸Sv ›K˸IIûá®ïa,t¨Ê$]%7mIóu‰n\н&Ùƒ,¼©Il£-ô €!îíX„·,ñnÉSck“¤ 1Ó™G—R{²w!7-T„¢Ýˆ2óAFèQA?˜oîqùDêM4·_€%—Á*ÎjÊvçRiþ…®wh‰_ ‹o±µY'7íºèU¿Ü_óð.³'–>éýƵ]Oí¸î¼¾EÓùxO¬wLØÖ¨¡•\[Y‡ÈŸçá"žFù®Æ5n,¬ù“üü/âd7’LÀìaRIV^-9­¿õ.ßãà}T„ç6ŒŽÆU¶¦Gcj˜NQÅ·u77¢ÿŸ‡üdïØôÕ±G±½P\'‹®wþ¢ÿŸŠ}TýÆçõžÆµ+ëÅÇvÿq¿ÏÄ>« –GÏ#±M$[‹nn¨ßçàþ*`æéXâ»UJîž/L–¤çáÿ47“wýÀö7«{Œ$ùÒUÿìAüTÐÞgàIìiS6ÍÅ·UmïG?þÄ'ÕM’òHÂ;TмÈâÛ€ôùüü?â¤.ö¿ìWî8«Ù\[põþ¢ÿŸƒø¹ýKYšäÏî8ªâãƒÿ‚ÿŸ†º¹ýEê;Ð'±ÍX((quáÿÁ¿ÏÂ}Tè~³®Ç•«ÿ³ãÿƒŸÿbâ§ûc–fc÷Ö‡^ŸõëÿÜC]\ª­‹ÖbOcªÖ|Éâû×¾Fÿ? =T‡üD𡯻!WÛ]Ûã,ÃbÛ"ÏÿŸç ø©Ø,Í·Ù/ 8×5s½èÛÿõ`³»8Oh2îÄu¼)S¬¢¯;Lu€™ñ-Ý)æÜi.¤)^î`5'o«®3ïÇÞm)¹Æ’9LËÎà@*ÖÃÎ2p“i£58§HÂZ¾`±|¤  ŠtË»\4—Ê¥Üiwëè"ñº‘'Ái%`ê rþttŶZ’z£µvqHí)FJm•ÆæÿÛ¸N*º=óè Æ¿²PèWh’æþXP·›®ÿLÇ?Ù<Ë4·‹4«ZÙIJ:í¢ª R%µ(œ¶6øÆY*´B“ä§'()R·Ø'o×Hɪ¤Ì”’ua¢@ÆúzyÄ)nÊ|;{:?gÇ’ž+`¶ÐÍvD_kþùG/·ãÝãeܽ:³éB}èóQÊ* € € € € € € € € € ;@ÏîÜIpö‘ÅH@ºH”$týêֱ߆ý=1µ#Š%**!ÒÝ"’Qß½Wiѽom,G[ª}µÉÍîÿÛþËšBIJ´P!'­@ŠÇ4#XÅ(½–2¡ o}ì6ÓE|½´ŽÍØuÖØí‡Ôó´h@.(IaÀ©$æaÝ8“RÙô¨ € þÈ2’çÖ”6„)ÌÞëðÞæç}@ÒÂÀs¹&¼˜fZ³M¢Î ‹ÚŽI%Ä·eEX"˳ Üœsåi™vݪ੠¨› Í{°Œ©-I“+Khr]®ñÂ’ë-Y$ÝÎ~žp¸´×ô&ÖŽ…Ùõ)YÀÊ_—¥ùôŽ›ñ@@@@@@@@@ çÿn"¡ÚGeÌ4”º¯ÿn;ñí QÙÅV^)$œ‰øBmwTGk¹#,‚@pØØsŠÒ)¹EïûrYÒ™Qij)VDŒŠ°ç‰6Ù2VZS„º”F›#cë«+ùŸÜt~Ìac8c("õF4¸:gû"ª¶ñ*|ŸFâN°€<+Ûü§öøš×Q.ÀÐíób>X÷há³È@;{FÐôrÎ ´QÖCe¬¡bö[C¼sdvè˶ÖÙR”¶2«1БÊ1N›%*òe°­Fm;~04×TÚ¿¼èœAý·p))Jm\“O„t˜D[mãv9/—RÑô>ùÖ<óœT0 € € € € € € € € € ;@€{q\öŒÅ $¡½¿àìÇ~/ý£¦-öQÅ& ³Ô[C´&ª‚Ýw5¡°W””¨ù[¬T×¹)Þ‹zƒd%')ž^ÒkF‘·ª'S3T ¬=#X­óF[ÿ¿ú:oeÍ8û†-b>Sjßö„RHß Þ£pް€<ÛÅâ{CUN‰Lº}>a³øÁ%£—?'šEYU¦·#hG<§­”uÒP”¥Ìé¹ÔeÔQŽWF3’¢­â[i-­´Þ×%<Ïœ`š|"»u!(+R²‹(­Ö'µ­Ðwªä轟 ý¸0:–Ÿê䘹ú_¾´k:ì4m5£éJ=ã{9¼ € € € € € € € € € €ÐàÜ@+´V)¹:7+¯ýY¨ô0¿ôø:a…œ[À’|K):¨_”KRö+µ%b3Ý7Ë™7Þפ:}ÄI$Õ—XqÄ4àVE)%'D‹ÜsÔïøFm=›Åv¦íÿ¿ý$ÃAðY¸¸íúÚ6‹WÀ»|òt¾Ë¿ì÷…ŽçåG‡ûaÝ|#£NI&}‰:‚ðGnÃnÑu“kØKéoø;P¯ÁÏ•ÖÎ56 µr¯kÅI¶¨åœ’ªòQWf.²v¶¤G6UÂ1É;Ó+Tè$%-£*N‡_eiòK]Úkf.T Chº‰±Í¹ô‰áé‘Ýò·|€ÿ+ø=Ù­Iûßñè$ߦͥ¯ßïÉô¥>ùŽ˜T@@@@@@@@@@v€vݱíŠPH Sr¿øfc¿±6uBûQÄ]Hï J†Æö0ÛµîC·* iH¹7Ëq·¤fåQÙN2z¢Î‰e«(RS¼mÔ‹ŠŠûËY$ ’«•e;^Ñй4§.]'³*ãöQ)Õ&­mýášf°I4}€ë Á}¼Y[}¢êŽ^ÁÆ¥œÛø'ÿÆ ðrõ VqW¼c5în@ry|!÷x9åu{(ëå=Ëi öþýô)§Æ9³} %%n%I7¸*E¬rÜo½}]ÍZÿ¡A+B3$‹æ'è‹Z*VÊPi¯Ü轟Sn1`e+/úó&<Ï´"ö‹”’Æþ¤»pª>“§ßþ˜àð`* € € € € € € € € € €váA=£±U•–è•×þ¬ÔzwŠŽŒq\³ˆ¸-`«ÚÇΖ©´þTMÎTøOÝΧåŠ1Iw.KJ9ÀJAA m¤8¸×wŸzý )oÒ5)$6çøÆñe_…÷³sÒòtÂÓ3.ÛŠÝq@%#0Ô“°†¾ã§áŸH :Âðoo™Ç&»DO0ë«Ze—e´(Ü$‚ì: ¬ŸRzÀså¦èâ3'Ãaašö6Ûõü"ßÔä“òŠ*ã©-¥6¹$t Ó—¯ß¹m¶èÆRImrU¨“¨N]´ÐÿL`št…%K@,¥¡dîAœ©Š1ù{›GFàGíÅЗ/–³%`ƒ÷ÂcY}†Uü¿ö})÷Â<óP@@@@@@@@@@Ú<Ûy WiSc—Á+¯ýY˜ïįÑÔN&êAPV[$ J´$þˆo¹è®äô$7  ¸Z‰$›éë |¶*¹T‹j Fr¾éj@)`hO?Â/|Q´~Ír(»Än/{#xStLb¼»ý “õ]Nq-ØÑ”ú(Ev´tcnþ‡ÓøGX@<;`LÌOqÿ?2îu"l´ X $iÑ)àäÌ»™ËžB RnN÷0ÙÌà×% \¥–Õ–ö½ºÙ´ø!¦Ý²¹i‚šF*›ºH~pæXo´%Ú•rN΋ÀøÅ‚¤¢ÿ-I›¯í ¼k%XÞ~iAÙô¡>÷Â<ó”T@@@@@@@@@@v€vâ*£±Iä©ÿíZŽü+ý3x=]»(•Ï.„Döö»)´¥®FÓuN–:臿qJMyý (p9th€Fžqªh¸wKìè·’eAì¡'5µV†6Jå²ãþѱa–1L“Å:6â~C§³|I§¯ß÷üϨPa|çí@¯jãÆ&Èõ‹èßMGá ~lœœîe) ­¼ÃME4ø0”uH׫ˆh¸ok’.mÙutsK:L«)AÊBõåû®Ó+¯ÄËc]T]Ó¶*¢’²âæí9€0`a˜ßå™"o§ötr‹zƒCÉ'Å£éB}ãQP@@@@@@@@@@ØÀ€»pÜöÅ6ä•ý³Q߉^3¦ZGVl僦Äí [áŠäÖÄ$&ÅaVNÄæ´;÷Ù]¯ºËZU9«ˆJ.±ÔÅÁ4íšFÛÚÑg$¤—.”ßXÙm„e¤“÷.hVMU¢¢œÙ®lcJ«gD]ŸR¢N €>pv‹*qÅ*XUæîür¡JI:G6E³B˜d))én~Ó|Ò~Æ·YRñº€Q7Ô{ÑÍ–UhÆj·dYgÊÔ§P…ò±ŒeM$8¯ufRR°P5!`\E4¶âEYÐxoÆ IOú÷'k]ú"¤×§¢¤¾Dß'Ò„ûÆ<óT0 € € € € € € € € € ;žíœݣñ:mo ®¿õv£»±ìê‚N'q8IÊ䓼 %öEÚߛڔ £lÚ}¶·ûûÿ°v¶ª%•'Âot¦àZÍL¨+Òà·•ÊfÖ F¿F:¢÷¢”\ŸqwEUY¹¸ÒRÝ›ÂüŸR!|Ëã$ó•^&UjO!٩ןP@Ñ%N)F×å¬ í¹i³ZšRÞck¦ð÷É„¤”[5Êê†pnrÛ~‘Ë’[³ ¤’’+T±”¬åì 7ŒÚ}Ö +•äSG@­oÎ)°¥´tåeÀäåÖ·&E†÷}NNXÛ*QJ4Ï¥#ߎ(¨ € € € € € € € € € €À€ûp{Fâq¥²Koÿ&j;°ªÆtF?-£ˆ»‘ ø‚“oºˆž—éêãÈ›'9ÌEˆŠ‹~Ânþd‰Ô‚ïyu$Eξ±jÓ*‹keÜ¢/2¬¹@ÏÓS¤tÆûŠŠ{t\RÏõQœ¢Ä}b­Ù´m³ê\IØ@ËìtWùU5©qvݪ¶ÑÇ;e+Á²ÁQMˆÓEix~m‘‘.Þ r®«¹`’no¼ræmÎŽYøMúTE–y~lbÛZcwTŒ ©wP )ئ-vûì•ÝuGCìýqÆL |·ùbKA·ðè‹“¨³Iý•òŸJïGžrŠ€ € € € € € € € € € À=·ÂÏhüSkh‰oü3[Ç¡‰/HêÆÝiN`“ï$µ¿è‰O»HÉ|Èm¿árÚ܉?F)KtTR‡ÌN¥%YÈA :k+æ¶]/ô•ŠÜЫ[}ã¢<„oE¥.¨ݭ`¡ë/¡´U4}=ÂûN¥Ì…:®öQ¥Ýç3¬Ýø•a˜õ6‰;K åÞ6 ^%™P$ ç–Þ#ü“’O’žpY‹’rØêyž^ûuG>IR«5º¸Ò°B’/q§+¦9'©Z2—v­ì®J2‹“s~œ¢;£Ë"qŸu¦)- ´mn<àiJ¨#U$t^%cŒ˜ØêĘ!7°ýò˜ÒWØö\ÓK“é@÷ùíwƒœT@@@@@@@@@@v0<Û€ýGâÌ—¹D­íÿ&j= 7éhé…(ìâ®Ùˆ )7'¥àk¹S¸Æ¼~Д(÷ê*:'KĤøzìŠ,(¨[¯tƒb£¨± kÏC÷ÅÇî5‹oŠ.¥ûágU“} 6­µ²Ú”3O°«$¤k¼[Ó:“·³é§Mð õ§Ëÿ&˜“­@ËÜdÒÛį Ü©+;7…çG,ÛâŠi²¥6£bR‡—Â0Étôk•fÖ—T.œ¾»rŽ\´3)R“+TØ ¶ºë{ëEÓÞÅ,nªêŒ²Œ¥D¯BI»|öUrtNÏþ0à[^â³%˜ŸùBDk/°Â]ÕÁô¥>ôyôs € € € € € € € € € €Ðà>Û·=¤1Rv9%lmÿj= ?ûGDx8¡ [ÞJ†„ká„þ…%°TT‹e¸¶]Œù&ûè°¢))R‚ÛÏ™%%J>î¤þ¢+Ÿ,Ò=‰Ùw*í«ú.f÷­©û£¢6öÔê¾oìZH(Šƒ ŽÀloS囯^ôχ?ì{Aÿ›¥ÿ“LAÖ‹˜óˆ¨?–•Uáö‡ ¹þ1‰nŽyÛL œSv)7×h«ÑÏ(êÍb¬ƒÞxœßÄ5 GW¶sÊÿò+ÆOÕ”^ù]£7Mðµ±à[RÍòê-qËŸá&“äqƒ´oüññþ­I®ÿ¾S/°ÇMÁJSïŸ×¤yÇ(¸`@@@@@@@@@@v6€öÚR¿tŽ(P-§QìÍG~5xΘ§JŽ&ñ ßelzzDÕ}®'zºs€¢¢›X›h9ŤÖã ’íTO¤)9Õšåu˧Æól¸Ê齿ö’Nc¦b7‘Óm½ð\_ÍI–² )´.«æÚÉýu|èÕK¹ÑôχFü>¡ýÝ/üšc3¬¹€>`ñ ^8¨ÿ!Âtþ1„ÞÎLœ³_˜Õ+MÂym¼U´a&×¹[Pm(:®ÑË9|Öc’–Ò!´‚P¤¶ÙP ̬£Ý¼£8ý”ÉŽ5\ EÕbœ¨ò‡¯>ä¤=·äJšu¯ßp m+Œ8 (BùfNäsýò˜Ò_,6”S‚mJSï˜óNAP@@@@@@@@@@Ú< ÛtÝŠT •ÛþNÔwb_é*)Åhg *ÊH˜m¦ÄâÔ’±¥7Õi¹÷AVž°¯¹SàÑBOè§½ „këé/dT#$íìØB»Â èVº›úÇO lo¹ÊÞ‹z[Eê»-„€¥8‘ ÔÅ6ž#ÉôïÈ|—‡äiï}ì²í±Þe¶|© ½¹^Ñi2ù}ïñ4Ó¢ùÜqD_Ì“ éœòmðRO†û»+0#KEj´c’:§#_ªÐõ” Äre“Z£žPI]Y^Ø ©ys }4Ö1•®Iå}ªÚ@²’¢çm£NÝPûT3~ìú¦ÕÆ\m™Fµ%Ëoß‹’¨2œWcHúTŸz<ãT@@@@@@@@@@v€öÝ*¤1=“º%v;þön;±ÿím@âO¨­à •æƒËÖ¿`irБbG„*ài}¢×vÊ­SzäDMÞÍkØ/ó!÷ëEìšÒ©Â ™IA½£¥Z-J.[Eþ*8¾›s~Òз?x_ì<›§n¨úƒa|¶Ääü¸ø_‹Å{|L)Uœ™.ôTÏèÕÆ—ߟX¥MQÏ‘¾×h×ëê!Ćïq¡*äc–q‹tŒe'ªä®È @QÖú“øùFTšäQvŸïbÈ~×s)ºµû ŒSv%)$tÏèŒ8.ƒåÉ/{Ÿï„Fì½_-ŸJQïþ¾Qçœè\@@@@@@@@@@v€öãÈŽÑx•jJõL·‹—õ³Qß…5ŽÎœr¤q7R …^ç\×ç ¶þâ—m݉e)ú9”|:ƒ¨õ‰Qiß‚WjNÉ”u!3(qM’,R/ò\&“«/¤– øBoNŸŒt¤¹J‹‹Ié—˜eH–ž¥h‘0Þý3 ŦѬ½ŸQ"À€>\â%\p\$_Cçh‡*g,Ö쩨–Tt½ˆ1£oƒ*OF·[PLÙÍt*¦9r:fS_R#½² À¾ñ¯¸Í5ÛÝìe……j’IÜ‹k¬î¶‚ûu\÷gÂUÆLk(|·%krùôo%Pûʵ$}+O¼cÏ9…@@@@@@@@@@àÜ)=£±H ¥wÛúÙ¨ï¿Ó:!Tq ŠÉMÅõׄ8¥TZQ¦ƒ¼Y]®¬nbkæ%¥ËDÚ<íL‡Z!*Á^|âÜiÙ¤U+/Úʹ¢TéÁJU­¯¬uEì§¹K~ß¿©i&Jg˜RVožé>}a¤ü›§Lúgé§'¸}BžyÕºãôéwVâÕr¢¦ÒI'™7‰:Ñs8÷ÿ1«_òÿ“T|2ñ?+¸¡b3_Q®Â«£—"ùÑW8 XY½Žºž‘[9Ú»Ù¯V@qÅ(([®›Ç4¥èÊZÓEsiÌB’/ôm`~––ÉíÑ‘áp¤¨ îFðÓà¨íöû€>.1às"Õ¹1dóýðˆ¦® i¸ã£éB‹áyÌ. € € € € € € € € € €vâ ýј©KNaÝÊé×÷³Q݇»ÓÑÑœ]œMÅá;e:ò´4߇kub[Fe‹û¾z^)_,¤ÓÑ6žR ‹íaGNË„•´™~Ãm‰€¢n´ßXì·iÐF®î‹aóì‚‚{‹"•Ý›Z|ŸHx :Ôÿð´ÃIZR)Œ2BÀ½Ð€ƒðºM¼£3±pm° ‰^ö/ç~Sþ²îíÿ”æÛ]¯¶°>_×êîŒö±OÝ ¿˜ä›Iý ùдË sßÎ*Fú­ÝY*åÝ)¹ }ñÇ&•™N[¢K€dH7°¶Ñ–¹&¤é×ü™`,Ý›è@½¼â¾_,m5¦ŽÙ÷/íË‚ÈQ­ÉeOæüú?_Œi¥’ð9éYô­>ù9ps †@@@@@@@@@<Û€¬vÅ>Gw+·ü™¨ïÅ/ôþ^QÓPïgqÇ.,‘ó¶°šiv¿%<±NОðù“}²ßõþˆn.¿»þÀò+¶¯ûé*P™I+>þ—ÖÑ[E)7Ê6—,•„¦É¸¶§ú#­¥¢Ó~a*¡ß¶«“¨Úiø-?©ôO³!¿ðÑÿ‚ŸûêŒÑظ7¸c+±µ~IU=‡½ö¯dw¹îoŸ>C—-µ½ík@ ù“[¹«ºnÚÇcÖðß±É$Ô­•³ †É$[§A iQ”·ãõ5º©"aIŒÜÏMÿç’ݳŸ(¯x -@#ÀMÁ¾ÿ­£=5vF5$ÞŒµ—×(n°%li8Û:gÌ©âî àšä—Ç÷Â"ŸÍÙ¤· K÷÷JG¼=?Dy˃T0 € € € € € € € € € ;@€ûo„þèüT¥¨„÷ršÕ™Žü*ñÑ×6·ÁÄÔÉR…Õa¹¶°Z{fjm ¥*:­@“á7‡§Ák¹;½“¨è+u ДïÖð—ÔÒ1ŠwÿfÊ”))l,jP-oNvŽÚF­û¡ù`¾ý°APÓ]4׬%E«Z‘ôW³ ¿hL5aoÞÇOîÕŽ¥Á¾ÃSóµÿ ù5B`|ÍĆÕw€$][Œ9-£š{h­©Ý¶×KŸX©xÑÍ–«íÍXƒ6»ƒakžžqÇ+RäÎIIjD%åÌ9ZÛLd¯hÏ—¿:*Þ©*ALÃx¤ÁÂ5^ÇAìø’xË‚I¿úû&4ò˜D[—ÈÝ´ûnÏ¥ˆ÷£Ï9@@@@@@@@@@àÜ ¬ö‰Å«JÐ,‰Mu?½ÙÛÊ= 1~p¿OGröI¹%"ÇãøB1r[Zº‡I}ÞQq…+AÛl°£´ç~ÐH²ŽÂÂ!òWz­›<¨ðç -$X(“ øˆîKå4ƒoè‡ROµ “b ‡IU2í­E{.ßö‚Ã7>Êïª3;—ýÈõv™¥MK?.¹–ih[(U”âH ¤‹¶ãÔ@Ì J„ŠëÅV¸Qµás£–Jü³ºî„n-´\§JŒß·WYmÂÍq­ŒpÍIé•«Q*²S~w<¢b© kv(¸T ”‹[Dé ÚvÅKÏ'BìûþÌ8#)Ð×dî@×øtoüŒ·ömŸJSïGŸàä@@@@@@@@@…{¦<Û_´v)á•ß—ïv£¿þÞÎÈ:ŽÎ+˜ç76Í­¾Ýá6¯d6ù½¯¤[ºî*=ÜÄ™I+DÊ@]Ô Ô@¤–Ñqr½" ÁE® ÔÇTV¬j[ú’ZVi†²¨6"i$Û>‰öXp;Ùÿ (m.´ýN,~#©ptòÛªóå*6ï×xœ²w-•³ÉЫ0°}Û´sÊ5{5ªëjö•EŠn›~1ǒ̲p’ !÷ô‰ã‚qØú -£QuB‰ÛÒîÆø³|ìòxÁ‚ìq[’9ˆßçÑx·]A):HúTŸxÇàÀT@@@@@@@@@@íÀ”žÒ8”ÝBâTïvc¿«ÕŠû,¶š±dm¡ˆS^PÔtö6•¶Zml›Û¯”T•¤ß?Ø¥(ïE¾’3µ!/.´¶Kkw¼pl¹½¢¡Íx8GÃ.YR{​dBú_8ëN‘¯l^‰M{ÉÍxl`îmƒpÏ¡½” û>áÏø§–\J;D†1¶—˜[K+ ZJIBŠUcÐAóÀ˼Lm]}{]FiÑÉ6¸hª˜ ›/Ê+|˜JQ½£^ª­+PAÌýcŽ{m™¾ÖˆÓ--¤¡o0´6´æNÚŽ¢3q|™¨ö«Ò²¨îr!;zÅS[}ËGJàƒ²T¬S†q,ôÊ‘’«K½8êRJ™J]J³m@ &ÞQºtÐ’”t{öલ7ÖS_Íë ¸£‘ã’0;KpICÃŽ[?õ ¯æázöýCÓ•] ýÒœ_£^~Á5üÜ?B~ߨœ_°~éN Øÿ«†ôÿ€Í7 ÐÉíúÓÒœ¹— éÿšþn‚K•ú“ÚÀö“à§þÜ´:#3üÜ5‚~ê†âÒÙŸÝ%Á_ýºgûÊgù¸= ®Wꃗi. íùpß÷Œ×óp½>ê¿Ü;nÌ~éN iþ­Ñ¯ükù¨~„ü/Ô\ñ_˜¡ÚG‚§ÿãaýá5üÔý¿Pì`{IpT*ß–É¿üß5üÔ'‚kÀ(·À~é m“§þïšþnFcìft ÿÏfÿ¼&¿›‡èOÛõŽFÚG‚ÊÛ7ñ‘™Óü\„ý¿UþáéÈÏîàµíùr×÷”Ïópž-ÿt' ýÒ\×ý\4mÒFgù¸=)~è;]˜ýÒ\\pß÷„×ópzRÕ‚»IðTiùnï ¯æàô¤Ãµ˜OiN [òÝð ¯æáúöýC±™¤ø(þ7@ÿ¨M7 àšñú‚‹|ýÒ<?ÿ·ýã3üÜŒ®¿º§ ýÒ<ÿÛ†··õ”ÏópßO5ÊýAÁ‚»HðY&Ç·ù ×ópzöc0®Ò|Ç7ëìVþN'Òý6c÷JðNßùðß÷„×ópýûÇ&´Ÿoÿžèÿéó_ÍBôf.É¥8'{ pŸþŸ5üÔ?F~ÃphÇî”ॉü·Nöÿ[濚ƒÒ»[lPí%Á[ùp7ýá5üÜ —€í`{IpV×ü¹kûÆgù¸^”ñÝýÒ|·þ|5ýã5üÜ (³ í+Á3¶8oá#5üÜ?F~À“ftŸ9ãtÿôù¯æ¡<3cÚS‚™s~[¦ßó|×óPý)?ífÚW‚a$œnŸï ¯æ¡úöýFàÐ'´¯Õ¶8Aÿáó_ÍBx&¹_¨Ö9r´§ïoË„xM5П·êOkÚS‚™¬qº|ÿxMiþ*¡?`ív´¯È¸Ç ?õ ¯æ x&•ÅþèÈí%ÁR›þ\7où×óp–ãufSÚ;‚ê÷qÓ#ÖNgù¸~ŒØýry;µEf…8­_Å8f äå1ÆØÏ4ZRT–Ûo*BÀ'Ä:+Çt!òS:9,|œyHl¬8»ˆÆÞôf«Ïa r¬&ÚêL ?´V¤í“ie+š Veô¹*‚‹¥É²IV vÄyGB~üÜd®‰,%äÙK¾k؈ºòŠI=£èdã~ϘpÞÿ6î¿ôÎDqàèòã’+®‹›f7¸ó†öÑÉ-Jʹի¤4¿8wº2“ÕšÍmJng2 ¾ÑÅ5·LæiðÈ<㙆¶µ´Hè!=­Õtä×"[+SšÜÂ!éh˜7[,°åz§HqÃ%0¶‹ƒ*ÒR…üI ƒ·8ÒqÑp“ã<@­4t§aåék»JdŸ M·1«Ï~~´ý‡ÓÄšñ……Šˆ÷GjÀ| Lr):¥ùú‰{Ç]NQ0ÎãTÓúb$Òt“M¡³Œ'“z5 )'jj?L75´Šõ&Óá1Öq¤Ûzª‡AUÆÊE¢ÖHñÚKVÖÅ·Q ^Ãë"ÛÉ&’>R²JÁÜkrsá\8,NÒšý†3õ!ÊH¸ä’á";ج.ÊüœÃúíûÌéþ5(¾&=Dï„5ùHm˜P(þçíþLeJŠye[Hu¬N°«š`oy§øQ]é:¤)f÷BŅ䀌?A@ÞnE#í¼_©bcR¤còFßÔzJmÍ2ÉŒýe-PÖM] ü£h„“‡©*7.çô¯Q>Öjð6íy…»­ø“·×©qào:ºHŽkl%ÕЩ 'cìä“þ.äüêíª3òÊRÖ”Ê0Iæ%/›ËÞ‡ßô?d²U‘J¤Qï±ýè4ÿ Ñ¥Úé'6…gk‰`?×±>¦Û¡IÄ,f²¨´…ÑéÉ.bSÉÚ´„œA(l±A¥ ÜàOé„ç´†²û$aUùA•JÃô³ÿDLSš—({ûHSuÙK =Gßr½…vKÿÑë ÿŽü»‘'bTŽÂ>[âU[p „ß_8i{œ“ܾR²qY‘k(_”L¤íÒFµVÍ) \ôÇ5Ûf2Ûî+¬¼ÖÍæIå®Ò1rFt±Û×Êjò5òñ³Î\ñ…nv0k‚TŸvعd¤åÎ*¢Õ7-¥dê êb{cåsð`%vÿaÚð' ·m‹%Y-¯„óØÁ^Fá'É—¬¾%€«|:CeǾŒ)JËeªéÂûÖ%·¢, ½Õ}(¤Ú)§àÂE‡½âo ½Ù®+b‡V¡œŒ îLTÔì·Èò’¯À:íÎ!siàýÌ(!%'rn-Òì6¼Šnä (»‹ÃÔv]J©1ndMÒd› þ0­2Uª·³ Kº‹òñA~Œ)ò`¤*úåéoÄÀ’kf”Ì($œÝàQ-¯Î-?¨¾æ›¡Ið›æ±PלfZÅ\mŠN\б6±±C§bÛ·FnÙ^Q¢Nį苶ùŒj™€–Е¨Mìo´6ÛàÍ%ü¡spU©>¸¶ºùDIÉîËI=±%i-¥A|ˆYåGx6ÝÏfUÛu&Ö"×óÖ¾[¯Cn(jÒöÐò´7ÒÙ£¦!*Ndß=„;m_‘vyƒRR|GÅ®÷ÐÄÅxf­Eùµ8‘ ¸Ù7…$߸ü 4 “ÈkÛM Q­û;°Ø$ØeµÍÍüâT¯Å|–ø´§»PPY×QÒ%½µ-Å‚{h¡m…óEðTT%FAF]7ÊÌw=U¶ˆ‚]ÎKÉ—F·!Dò#_„{-q° ¹II;‚vºá¯q!w½’,4÷ ù˜ZZd™.š[ì¥yPrf6Ööøé¬ „cܨeiHNd_)$w¬o| (x•(]% “¥ ùªâF›Ð¢ç„›ÛK›o€UÛ°¿‰$ ‚F—ì‹‹~â´¥FT»_23e"þp×s—ÞT»o´ÂTæÄ{•o ߸û(²&ÖH†ÓrÙ ¢©-®l{“m=,`Šv'Ö‹=skI°NðÔwÉ®6·ò—ò×ö€,vBvÚ:šj‹ù[º'0¤©h%$›]Cxªfï•gЮȿú;áÏí_ÿÄ9£ª<"A-ñ%…qiRwUájèåÈÚtVÍ•é™)‘kÅiIËÁ­ÖÒ‘2¥4éô#KôŽ,‹f2“ðU§8P§MHˆðD\ž¸2à$øNdÿkú!Ãê9EÉìNehP@¶ÚoQ*ãò­€ J.«“{ØìD ›@»¸HSŠ:¬“mAo(#Ë*IÉëB‰@ ñxm½þGkCâ¬Á*•™* j ÜC¯,p$„ªN÷¿HJq'¶KM4@YFÀ'¡·Â);µÇèa 4E†©ˆ>/8o—m=ŠRRQ”Xv3)»óú°ð%›Ÿ ¹ùÙ¤e"”¡ +?š4ŠÒÒ$×Úý…°7R—›•·°çñ‚*¹Rù‘€´«p­  ^MÞ´8N/†¶)D›æLKíA(ÊHÁ)+¸Í”nGãâÒ²dõö@f6Ís¥;DÆN¨j.ùÐ’ÆþzE^´ÐÞäËå½É¾¤BOÜv¼ŠeHJ‚T…{¤ZûGÖ²j*T¼a°ÛnZæ¹ÑQ’ýþø¥¤a}ìtô´SÖ…:[]œQÊ mðøuŒÿ–Ð|ª×"q²ÊlNuÙ¹µ£FÛ[šàÇy’ŒÀ‚oÊ!ÔŸ:ðÄ8´rnE7ûaß°ã-Šl£.`›ÛKZ÷ƒoFo±[÷ö2‚5ÑŸÍÚ¥L¦¢ÒPÿ°9.|9‰:\ëŠZ\$”¬lÙI¶R-¾nGñ‡Û.Q’—r¥´BFöÜ¡C¢ à÷ã€*JFR¾¢Ü¡KTÑ/µ%2TÞ  XZûúÖ¶cÚ¹v XVE!²‘`Mö‚é®’à •f#ÊþpåÝü£rM}E¨‚•(­¼Þü‡j• JŠT !Iéhvß’¥ »„¤n5'¬).åbiF\hEÂUdúíºùƒ¹x)B×76½ÈŠ}£‹®L6¥/Eic½å¦Ð¢²pEí¡éµòÊn¦Ú÷3 ·Ðü Ób”é÷y0—Vo ò´4ÛÉܾc!Õ $“¸†í«’â…¶êÔïzZX¦÷6ýÉx|Qc„"¢ ¢³f¦ñ¤-HÓ Z—­¬-I6¸Ìuþˆê¶ÖË´›²kE}úQJµ×aå“^%³èGd"Og\:I¾“ø‡!QàéPòÛ_å·Rv¼'ÊgDÛ+frܨ#‘ÒñI&C~æ±[ öÒ£`Oº®C¬re[£ŸÃd°°Ðƒën±>“UÁ„•fIÞûi°‹må|!*H ÙD'{I"{jIAòaÄ­`Üî’,=!7à¹:Òbr¨h ¢H¹T52ri%ô«¥W)Û‘‰V¼ Ëj„”“{ìt¡RR’±hJœ¦ä\Þ#{“ßÌŒ(«E‚B­hjž‘Smî<}L²¢7&ûÁ-³H÷> å±9€)&÷†Ýpd›OæUpRHؼ7Ǒο”,sk}u1 9qt)'+„-= †Ý–¦Ô›p%Jܤ^ÆЦÉYd•>))X¹Už¨Ö‘jz³ +B”’‘áûD9mÙœ¦ÞŒ¦ä«[œ¼ºÄE*4“]Ú•JIýÑËõ1}» 6âš2mbEæÒé´BoÈ"÷°Mïh!ª“¿ßïð¬öðÁ#¬%­¶ eFײ­¨‡7\ šçÁ€§ ÔÈЃ´6´T"Û}¯”ò\˜Uó[rN¿ì@ZÂÀ uÝ[¡8¶©~¡•Y ¿;ë ´ž…Ž[┃^| ¸æ5€åi•s Ww±*Nç”V¨Â{VÍv²§W0RQr=Û˜ãÈ­ýN|’íáÁ+ïÎP N„~ˆŠuh¥§EÝ &£@˜ª?VfJY÷­ $«.kŒ€¹›zÇ~³ÓʰÆÏ“·¦è^\O'}+¯vBªÐçiÔy*ŒÊ2·;le%&Ùö½ôô‹ÃÕbÉ9c‹·x×Ó“ ½,ñãSj”¸û——õ+Ô3$$©!!DHéû/G%6Õð ‹-ZùßB!÷.ëµ6H ×BUÏœ JZö&Kµ|ÈXAP 0­–Ô”SEÅ7 T'䥟aLws•³’Ç)[‡ëÉâäÌ¡òÍÓwúm–3J¸ÝMù%²žõ¢;ž$•&ßLhúL¶Òðr?Štî1É,­¯§ƒašÓFž“*R'ÒW.¢E”æyp 5V¹ø¦ z»Pú}Ô,aÒ¤S5ó-Mwá€ò{Àž¹zixÕô™~œþæÝ?¨ñ»Ó«­_㡠•‡iéœg2šïÓ,]Oz¦õº‚bI*msý‹ŸÅ0,¯ž®®µ~Þ×ämì5Zm¯*Tä“J ê̦ŠxÞ½ù$áºDåjªÕ>\¶åÕ™j²EQ¹ôŽlùãÓÇÖ–ÎÞ›³Ï±/Çþ¸.©Ø"¡P™yº|ý:k¸HÔ<2B2­ qOâPÅòE¯ÀîÃrNME£Xy—¥4âîÔPUÐôûãÔŒc%wêy4dã.S0y@ëhN4Ù)Éü¥œÞ¨ËH{\ÃRí+*TX[ɤ`rƒq¸– Ÿº81õý>GéÁ¿Å?ê.±‡*ôÉoh˜i¥$))!µ…(‹€@&×Y:|Š*RCé¾!‹3ì‹ßÕ5Ç?x/\5ÃHTžI°×~R²†×ÌI  `Ÿ©ÛFo¯Á,o,í¿ÈõŠV”Ò•=*¦’•†Â‚‚® PÐÜt…,†äpõ°ê)cjéøw^ûDiéW¤ç/2Ú˜qÄ…™?¨Œ²cíttÂqÉ8½1€ ”AqD®Q©én”Šú)HJH*$›é‹« ŒU³-©jHÐZÃKo &’-O»~ ƒ˜ \æa¾_Ôi$‡dÚ/Í&]²”ç^Pµõ'”4œš£9¨ÃæñìYÕ°ÅRžËî:Ó$% ò‹O’t'[Æù:l‰ïÇÕ8~%Óu7wÍ]5¿Å{ Qè“ »).\B”´¤Üt«Ü‹q 92+‡,ß?[‡¦u)U%ú·à="ô¤â¥ß R›>"Ù M¼”41Ç(Jš+SñRÆõõäBÛq¶Ð—YZ3$(fÞ×Ü@áÚìÞŒ›Qv5rV¥¥7 4ŒÔ| T—wà hå $¤M¡Éëê–㤠4Jmqprª&Vß>B5Êwø!YGˆ¸ì 6ò´V)J´Ø¦0IY Èl.LiÙì’îoïû¿~ yì-ˆ%•iÊbÒf•„gBŠ”F€Xê-Î6}4âÒk“‡Åz\ª]’M­½5U±šnªÏ¾óR2­Æ2… ¨ô7ÜÜ…ŠrMVÿ¡¦^¿¦Ã÷I|Üy²;´Ùä¾ÓE‡ÂWtØ"ÅkÄë¤)c’]­y6þ'NQñ¿Á£5JUFš¤7P—-)Dì¡÷zÄdÃé;#¦ê±õ Ê 2îŠH'A{Êæu5{’'a´¤Ì$Ü¡$ܵÒ6ƒnFËí_öEë •æÌH"ÄfÇSzm²{H@yH:˜i{›v¶} ì†-ÙÛ‹ßIëDqàé0òïªõù‹(_9õ0?I;¤V=p›{úÃt¶e;åš¾!VYåEÇæÇ4뻸ÂRui‹Ëqc9Íü[D]­&Òo~æÇCŬ$ý*žT‡¦&{åºP’Œ–#]Œpgè!›¨Y²m%Å×·±écë^.žP‹¦ß<ýäì[‹%*øEš{ÓiK(KN„÷Rá‚Z#_î}#“¤øLðæsÖï~]µÏÝÂ6êþ#‹>N<ëîUÍBreK$Þç˜×”{O»Ê¿¤þ21Š÷Lô:>¯øl²ŸÓõ)_Z$*¯¼ÐUNy •4Ú†Ú¬'A§H'Ч(E}ˆï–ÛˆãÕV<µ÷K\%¯¢úŠÀ5yZUQ×*M¸ä¢ÚÕ ÜN¨6épcÙé³(Ê]Ü1ñnŽ}TÂêIùúªu÷— ÅÒkM)Ç›u3]ê×>¡ô²¡IEºèDt¢ß>N Ÿ ÍŠY#Q×oèßÝÀíÓ;"ÄðqrLË!IZ‡‰§ÂH¿¡½ŒRêñ¿•½}Äõ ̱ÉÖýêÓkO—¤«^ØúæX’ötÉ¥º¬EÔ®I×o(R͉VE-¤tC¦êœ%‡±(Êm¹7âü/}EjŠjÌâGf_ny½ÑB|%yJt_æë{yDz¸Ü–[Ú\è:˜cþ·]Ö¥ô»üõCò˜Â’Y§38ËÝÛÍTÈNà‘n¾ê~¸µÕA¤¤¹çêgþ[ž/$±¿š.áýÿ[4êÜâê5é¹×†bëÄ€U°åðÞ<üÙ;äæ{&Òá†%Ê_óýI˜¬Ý±>øÌÓiZr¥9¼E$ Àî5;®éåÕ`xáûÞÿCÔèz˜tÙ}I¯èm<=Æ’rO;TD¼“Ëq÷¬ -©  õ÷£Íëþ,Ž1ÂÜ’¾^ÕÖïÏÜz'Äâ“–eMû{¹¢ÔÓS l!n!*à\‘®=Ø[‚½ø¿ªã™zm¥OiîÛáû”øÞvV£Šçg™PKn¬Ý6¶–6Üý±‡Q)dÉÜž™ÛðüRéúxãŸ;ûù*|D(h4мs;m+= Š÷2€2¤êNä[O„T^é²ù)޶ W™(U’/kmúa¸ýA/ ØBˆJ‚²ªÉ6°&úí»B3  Û6¤Ü .ÚI›Í/S_¨¾™æ¥ÃôöeÙvjW;iq=Scqë’œ{Ü›\QóYºLÑÃŽÓu7&“§_Gj¿2JëÔ´Í¥4¹¹I`^YqnÊ(°êÚA𤑰µ õ±q /Ö¿¡0èúˆÁ<ÑrZZû\ºßºúÿÈô½OË1:ܳè%âš9]IHºQpl3m±ƒ»¦NUOþ‡“Ä&ñ¹:Ò\moÍkŽMoT˜ª¢žë.6¬’HBÛm¼¥µ=c—<“§(õú §ܞäëÙ§Ç÷Ñ®!v7PPls¾ñΪìôSö ¸9®/›”g9îš)=Ù†È ZêͰ°†¢¥º*åvÁ IYº…†ÙO>ã­í{B}çS­ÍÕ´6ü$DcÚïÜÞ(Õj+oÊÔߟs¾’¦%†›—8xèH¾‚ÂäG£Á%&ö—ê|î~“¬ËbQùe+ß²þ̹‘ªÐ½¾v~JnQ>Ö©yŽîujFU¤œçú¶:Fë$¥5˯¡Á—£êcŽ8Z•C½ZI­ð·ù'Þ¥ÎÏÈOÊÕåÕq¨2)Û‹‰ŒçÛ(§|3«3cœñÊæŠJ–­Eªûì â"ÛUK¿—zEhR–o+0µî~;(äêÔe´ÓüYê|%ν9¹p¹IN~óX^R t‹Z9cÛG§6ÚÛÓ,pùW·%BP}ë“uqI;6Ä£fÂÒˆÞ×óåu«EEIIÓ'þøh‘eziZ³dÙô#²'þŽøsûYüC‘,êI€ €—XŸ7å É+¿ŒéoX·VŽ9ÕíË$…Xl4<¡Ñ›ßÕ«Ç4ú’H"âÖÇ5lÂnQÚ¢º@)[‚>”`ùFM§+—%Æ£OVª-Êʲ¹…¼¼ˆe¬Ûmv¢:°tÒÉ>Øòlž“|#¯Ò¸ òXµWR¤^)Õ†ÛÎPzÌ} ?Ãí/™×Ü/]D˜x+O üæ>§­]L°·Ø"×ÀRwÝú"WPã¤(pZ‰“+¸òTfß,¾ž»EÅíËôA.§[3ûMÐEÇ÷¾ª,_ðÀ`÷Üßà‰õÕŠý§pÈÑXÖXߤ±ýäP~ÿ ½eá{ƒQòRÖ4lº­¯-dývŒßÀ1û±úíœËŠü=žÁ³@­Hq“î¸ÙT#Äë¾>›\¢ÒRVh€8l­Éµ5CËdÆ}Ëdºt«Ój>’”­’L`¤õÀEEËî:¶àå^­Jj§93M£J:€Y\ý˯'‘˰t{ý/Á²dŠœþUãË&N0äÙà”Š=ìeGËmYÐ}±ÙþDžœ¿A¬Ê…Ò,¼g!›ø¬é÷ÅÿGÿ?Ñé:HWí'AÇåAßÂÄä–»ßä7•>E~Òøh6l‚5ýí¾¦Ù>¢wjÌþÓXC( Æi#p=—ŸÕø.[byðiœXáÆ¥¹X¤Ô¨Èƒâq BÛò·HóºïƒK¼{H©7‘k“–:Ò³ Àh-?˶‡Ú£­™”—~fa ÔréÏ¥âT{ž‹JRÑÔ8cŠŽ%“3î9/# ŒÔÙ°Zº$sÛxöú/„˨]ÒÒ»`¨Ûà}%*Ìq„cÝi÷ǧþEÜÿB!‘$›D†ø-HµÆ,¥ƒùÝο|5ð8§}ÿ¡Ä.RÁ .rµbúa$X‚ßôÂÿ"ƒþoПYqFÁ:".S‹©kå«[}°?€Eé¿îµ;W¨EdœcMG@–NŸlø ZÜ¿þ¿ògê/(¨Å\˜”¤9=B­HÕû”çSl]+°òŽN£àSIÊ-?½ŽZ®N97*¦¦V’W*µ¶¶ºˆð%q“‹ä$šò3Ý•[U_b@‰ù_(6öo.áÝGM–å24Ûz½0ïðmƒ©1ètê-"ô—ÌtÀê+Kʼ_ HäY'_®=µð(×Úý ýHÄ_í'DQê¶œ?èúaÿ‘Cÿ/ШæT©Wè€ù[Iÿ´+ôÁÿ§ãÏwè¿Ü¿]Uvˆ¢iþ¬(ÃËÙÕúa?Fõ/ÓþEëÁüÔ$ðNŽùcIò e_¦ò(µN_§ü“,ɾæCªð9J¸ª6$§Î¾”“Ü&é&Ý/åøjá-‹Ôƒ]¯ƒWiîÓ*/HÍ¥M¾Ú²­µ ­9›ñKÓšÚ)â6¥M]J;À¥|ºÆ+Ù‹µµwL¿áþ›ÅUÆéÒI:©JÙ=I=#·¢é%ÔKµp[I-q< Âì4–ê­¤Ìóˆm‚ ŸCCãªrý Y’ÚGðKiÁ)P¥¯ÛþAÝŠY“|Gð5ˆ8±¬Õ¿×üƒ¸ýHùˆ±Áü b¥âvV¢-™RêEÿãý¤CË)ÀjV¸™÷îH—ð~)ç˚ঠq%¸­‚èÑL¨öDËü?Ž©6/YU—ˆøBV „ú[±Nd>ΩtyGÏõNš]“ड. `%•C%'eY&à~ÁÜÓ í‚Ñ:‹Ü{jNb„ìM·‡ ŽöiÞãb”ïóÜ*ú^ÚŠZ5J h“áKíÝ æP°¹ðÄ´í*»>„öEìï‡ñ_ÿÄ9 1àé åî+×¾JE‚Éû`|ìæ’Ý•åD6°H:kaSðfÙªÖQžZBEùXrŽI'{9rS[D4g¦À‚4¢{i7dãq”v¸:·gËKLÌÌ6|–¬ƒù·Vÿd}GÀ¢›”ß"Í¥IòoËqÅ-D…}ù˜úG=*² <¯¬*½ ðuYŒD’ÀTê¢0~°©šhœ~nZi)i¥ÛPAÖÂ×ô=fIæpîJUrvKT£\®áÌ8×$q5*vbn|ΦViÅ‚–Š¢”¤îÇV<ù¿ˆx²*TdáO¹ri+ V¼w¤sß‘'ÂFšlaî)8Ã2§°š™²ËkTN¢<ß‹%.šLÓ”]œ'>WJ‚‚¯§¬|KVÍÓ”xòl\8—jcÊ6úB]I>v7±CáñŒóExlÆ=Êï÷ûý£»Õ&¦''T늺ʑ}!u*ZF<2?J6Q‹|bBÝ›ßp/1Y›ªËU&ÑOe."VšGzé&Öýt;®ê¥…ÅB·åa[e…>‹‘Œ¤Ô0þ*¸Ë2”¥”‡¼^òÔ¡ÈiO?P±¦œ|ÛðT#‰Í£Nâ%"Nê”Z|ß´±(ÿv‡ $X0M¤vôÓ–\QÈÕZ1É“Iè£"Nk›o Ñ[ö¥µIœ—p…4ëE*AØéOš 1«µG›ç0îR€ŠEÏœ~u™¥'¡¦ÝWêHÃÁ±4¥8 •€R3ikéqõÅ`®åeA»i=£ÑmÌZ%$ÑJeØe)m Øi½£ôiCc•ŶÛ-} üàî’{u¢ÿ…t §¨œn/‚§©SE_°Ô†®ÈËH æ‘7&‰µJO)%éeFEïµáô]L³Á¹VŸ(2ÁFZ5wÌ«\é¤w³\¡ù ¥J͇™Z®7·8 “…ñq2­c©ðÚrçXYJt±:ì#â~0½>ªJ GTRí»ÙCKʪƒv¸@PÐ/tmTkbI6ï…î‰.KÊ3à.(¸é¬ßœ}ÇÂb¡ÓE¯$f_1mpF‡C…»3Ðì‹izy†”lâPNš\ÛœFI8ű¤›£ ñ[áì8fä©TŒV¹Æm–§&RŸeuJ¶€åÞöïoKÕæËRÈÕ}9:3cŒÊWqGJá,;E™\ú¦*jq¹ÆFFV€“î3Xƽ/[,ó’kŽ>â2ãXê%@¤è Žûf@ÓªC¡H*I±¡¦Ä霻´*Ø{¢mHù÷˜j "4úãå¾9²ÆKÊþæµ–Žr]N@6óÖ>u«q|;üËÀ5‰*Lò˜l%×N~vé_ð(¨ã“_B³*£qZÍìtç{ǸÛg:ú˜¸Ë °ò0¨/Üê4| GW¨õÕaŒI]~u·\˜U:a´¡Œ¤pA?Ty9:ÙúòÇÜ£^çbÃåüFë:ƒ+ÂÙjÔ…­>û²I}ù¶g-Ê,›Yh¶k|!bê²K;ƒioóû‰q¦š^i{Ø›úÇ­àçî±  ¤f·X.ÉlÔ¸öï´àÙ"ø S/dJíÈ£ÊøÔSÀ¥ä× ÔegyAÂHøæ¥É§rJÙ*ŽæYÀIUáèÖ ùšý[ý ŽP­J@ÓÂlu:ØýñÔ¼Gµøý= ÷©ðƒ¨Ô»4iV ½‘­ûðå¿5ÿå܈:×H€a/1No—ž²¯â÷O8­jÎiº+Ö¥-ÞÂàõŠ^Æ2ih×kÍΨåZO;Ç&XÔŒe¶U8ã‰YÑa7Ë”rÒé˜9$øÑ¼ðb¶Í: ì¼Ó¨HtܫϜ{ßê£ 5/%Ê*QùwGY¶â{ÆÞII؃¤}M£™ï‘|éø˜5É6Íc7+4Ê5=‡f$˜‘L›¦`å}I&ê o¤pàécŽRœ©¶ìÞ}C’ISŠ3V2âꨦ|Ìwš[!N\»óßÊ4þ,þ­ø'½öv¢¾ÉþÊ}c§¹{™ÇJ˜Ó³rèIQyzÀä«l<éçŒ8žUé3K–u ̯I×Hð¾1ÖAbôâí—Û³™!D/2t$’ Јù+½6j›jä]à9Õ±ˆ%V¤¯5‰µÌwty±GçTŽé'?/:ßzÓÉ$ŸhzGÞG$f»âù9ݧOCáÄ›:H¡÷"|›6Æ_“¸sIʹ0ÌåA–Ûbn]Ì¥‚•æ&ãQ¦šGSÒ¬Î-ðŽˆdì´‹Îq…CùNoü­;U›OtŠ›/%O2ݬBT³p£Ö9ºÎ’y†*QöðV,É&åɤâºCµÉµÒÕ0™59™¡6àS–6$¨É7úãÐÃq‚RäÂn.MTüº²¢à¤#NäMè×qÖ&“¥RßË0…:E‚Žn¯«† vÙ]­œ=÷\uµxT£¨#œ~}9)I³¡ºT¹¤=–d¸ Ó/3Ëí´mŽi4ÙÚ·$¹;¾¯IÕ)m(¼Žù( Zo±Ö½éºˆåÆœYœ•2Õ/¶ð‰‚AÖ:ÈÕ—Ü2Ä’ØcÈ×&P§Z–RŠƒ©ºHüc›«ÄócpLÛû_píÊÎbŸÆ³uZ¼ &i]캎ÊA'R¿ÉàpÇXL=K—tÉâ=BÍžRFÊ ß÷íÿ%t»Ë—}/@y‹ßXäïÞÅÔ·£¯ð›Ë.ŽŠcîºÉ6îº}Ñö?ê£<*MWoFéí ÚáÁ¯œzöd×’D”ë Î0þk¥%vÄ€AˆšîM!®mv(âUR{»_’˜ö12™©yÇ šE€é¾Úödž0ÃØËžvçÜgˆAF(Âr÷èÔéIÆf™}ùfR¢¿Íñô¯¾‘=/GèM˺쬹–O–§šËï}DzŒ›±©™Æ`¸ë©J¤“¥ä\­sŠõ¶j¸‘E’Óh×[ë#ñŽ¢r¨ÇÁ¼bª™©÷v±M…üãÇSOTª: ñ´„Â¥fKhxï}ˆ ø/Y7ŠA–Ý9™¹U´C픑¹P¦SMZg;ú‹ö¦‚4u»òÔCRƒÙ{ˆqj*xvƒJhtÒåÜg:fÏ/6k¤râé£ 97vm,—”¹§cl/JÃ3"B˜•¬NHšlÃËÍ,R¡ãXA%YÈhsKòM9ÎÒv´W«Ý-š`™—H7uÊûG£Ü¸0rnY!JSÍ€7ñ;שœ×Œ˜•‰ÉviÒ΄*êZu·(ð~7ÔÁÅaNüšb’‹îhçEE*ï‰'­µ>Qó #YI¾k‡ÞÔl¿t éë FÙ¶rª/Û+»(Úä’9oøÇcUE1%£gÑ‘7kVí–›‰ô#²-ÿs¶¾ù_þ]ȃ±ptˆòçªÃ„&ö7Þ*^É6ùEjÕt•„’ /‘ƒ“_xÕvž'驚mW[`æ :Ø Žñ–Hw+*Iµ®MReŽîí. ¬£a¾±Í 壚VþR2T¶¼¶&å;ÞêšD·*ÓÙ,â³MenqÔm¢W¥úZ:ãñ.¥j2%·öX‰k‹I)¨< ºˆ™|KªzslmµT6î'¬BcA±"ИõIÓ“ulÈÄ•… Aëss„¾%Ô«Noò&ž¨À¯ÕÔÎo”¸R`ÿ2ê3a;BYª¬ó¯¬ma¦`—_žQ¥2¯I æq`©jqDJŽæ9\Û•Ë‘dZBÂB@9²“½ùA]̶›‰†Õ‘y’îa~ºßx®îQ=$Ñ1ºÜü³e2³n1æ‘Ó‹¯ÏŠÔYO#1ùO\$'å' ZûÆ¿ç=Kþ`í¹|¦ĵŒ„Š‹Ä Á;Äœuö‰„W/ɇq`¤„TŸÌ;Ãÿ4ê^ì´—u V ªþ¸øw´“oþ NVfçZ¼Ã8±¸u€9zÜùu)X£ïÛÇÔbëRµJRŠ ë»ÉnI ’‚P”€|#4&žšc]«„)©×åÀB ”“`¤G§”\3OJ}º^#­&å®äØ\ï¿æDuÞ;RÓ\ ü¨¬åHTÛÃC¾Ÿlâ½E×xEG—Á‘‰ë öç5<—¯¬L¾)ÕWÛý””ŸrFU‰ëÅú¦ñ°Ônz@¾)Ô¿çþƒ¹S¸ÖÌ'⪪m¯ˆEšõ5¹~„[¿aKÄ'å‚^›˜Y=T-?ˆun=ƪ’ûˆÅn)YÊI7Ô¨G's“äu& ÏÝ›¦ý ù]X[[’¥¼Ú•l¤h­4¹ü ŒÜ]ÄM¸½ètV*M¶”38ê4Ñ9¯xèþ?4?þC”•Ù•WjÉHI¨8êV/‰æ—3bÝi!&¹PË¬äÆ›Xè:^%üC?1›üÁ*å~B‘Zª¨*©[éÄú\Ùš]¼þþ‚]ªêƒÂæÖ+ÐDÿ™æOí—}®‡b¤µ©·'!D{Kn!¿ˆæksßÈÁy÷KŠJ,r¤ïÎm»÷)Nä:œÊtu"×'”ÈÒ¡Ü[¦mØ*Ý¡s6S`T«ì‘ë×§Sâ‚»gd-m)n.aÅf•l6LlôdÜ»­0§DÂâïsôF–„ÓMQ¢Éº>…öA7ìë‡Hé1ÿˆräìJ„P@ËœL°*î²Nƒ”[VrËNŠÕ¥Ä­J±ÊMöÓhµÁŒÓäL”âäßÌ,¤e¡H¸P<ˆ…u³(eihzf…L¬-Çä¦[må$þö˜V_æt12Ä›»4Q„þo%<ö«¥’[•HV£À¤¾zøFÀÙ¹H3ƒëhÈWO˜?K* TF¾°½ Xeÿ‰a*¶Cš™=sþó°ýLG¥îˆX½Æ&pôÛJ%R3bÞ gá¥|!`sŠÔÒ—#½Ù ”Ü•ªNÖ‰ò7äB›YAÐz›î .vYK±)@Êt!CAg¸½95~E{*JV´Í9¶øÃì^K þaH¦©äÛ)Í©›ùé Á_üqxEiÜÁ¹WÔs ¶®¾‘Q†ƒ)A¾Ñäᚈ͒Ÿ2²F¤2¯†°8°¶ö‰Làêá>tÎoÍ E·¼-ºqI¯×qT©œª¸Iîµ^±Kz¡Ç îË~n]ÕT}©6ÅÎE()fÃ`¿\k -ó¢Ö(Á]–5 Æ]”Lœ«K—”l”ê³Ð¨ýÑ­¯³ÎvéR‹­$\‚­´>Òl}Ï '/¼ ”nGÕ ÿä‹Ç^¢Ý–éïÒø‡%&w.;•bÆËukÐ…<ŒAܸ7øòëÞ!t‚}õ7âÎY¢ JKjQ\Þ4ŠÑîC 9ï˜[HÈÍÁvÚ¦ÀYÒËúC`Ókå¥aœÁåjnr“`a¦ÞÄ“\±hzm ðLº ¬l¥i›æÇ´´%s5ƒ94×½_鉌›Ûåÿ_ìe·ç›þuô-¢É"Úß_Hw%À½KukóMZ½N œÅާk˜}ï‘÷? qš­Q¤-}÷yùÅ@öÃît7.Ý zµ>òB]D©PÓFú î¯7É…T¬€§É<È h~º@Ü^Ú²:àmoSœQSÔy­IʒΜá>×ÂOM L3GtM„[l«Xüm 0Œ¹‰*0æ¿F&^ŸBp¥+”¨2á:(<ø ~0–{PTd8Åܽy™ŒË)ï  M”¿ ã‰PŒ"¶C˜ÃòÌÅe…¦ùl¦Tǯ¬'¿$J1~D¹„Þ ÌÜí=Ü¢éÈö·éúyñ¢½;ކ¦°½W½Éwª$ %i$ü%†h•†¸ ¿†jÌ/*é³hQ¸Õ½=t‰ìŸ úR´¹#=N}·»·Y˜mAY|Môˆ”zC”)èUn?J©9M«2äœË${pH¸ùüáÉIr‚xä{‹VVT”êEî»›D>x!EñþÂû¥dšP6åËX¥¥ÁN Ü²R´BìA°Iú¡Ý‰Ç„ÞÆÕ*êÉNý5‰m°•x0¦È«[¦v¾GV¶d°«¶|&Á6&â’vOhÛŒº‹]Ü$®Ñn÷@£§±A— îŠR¯¢Hûb­¦M|ÏîZXR@çë­r[´-m¯ á·Æ|#:2‰WœT³¥‚IŠ©{öÉ¢Ô)-S¦\½Èd›ÛH¥ìRÆÚ&5ƒ±l(ÒfJ†`§¬›kæ`ôeÀ–äÎ ¨Të”öÏ{6›€Ö*¦ôiéT­ÐëQ¬‰K•ÊsFÄ!·VHëp›[ã·Èؽ!<žÂ¾St Í·&Ø.²âÕ]ÜØç˕ä$ßû4·=÷Å7ì.êck«Ô”²¡:àQ1BûCîd©[ÞˆÎMϸåž}EÝ€„ìIW‘—œþÉ=0-²»ÂLCm6ÕX…¹4«2äÜÎ]7󃹋Ÿ•ðûê@ï&¶À"»´/´G[Š$•XŸ¶ýb;ÛEo–-²B G"9C‹¦-=ÐüºÕ“k¡mj‹Š­Ð £Þ$xoq¬'Ei½ŸMød-Ãl<û™-ü’bN¥ÁyÂ>_âò‘ˆŸYNsÊ·g>Gl‚m°Q$ó5ö˜½oâ@¾ým¥|†“¡§@Ïk¦þ]!S&Ò0Í…²ØÞ ðSIì]ÈQ R|W½ÉÖ)FÈ¿q)I;ŸÑ P”TQ›²äm§ã s@Ú»A•=ÐÑFÛº.Iö eËk´ˆ¦Dâ‡2$ ixªØá­ B ~pfË翤(ª)ªÓ”µ+DÛ•®LKNZdÆš³*KJh­&à•¥Œ6---÷C[ëk› =!v¨…»2¶À¸¹)U‰Ö÷„ÕèO¹¾ï–Ø%;Ø‹rÖjò)˜y¼æÚ/)¹·1†)ð 4¤Û"”…s”íÒðÝØœd˜â&gY$µ30H¸PQ‡²äšÙ(Õ«²®}çª ØŸ¶‡tž…¬û ÷ŠaY…”\—B¿ À­ò>öír|år—M+°ÐÊ ç¼1K€î¥¥±©‡%¦‚õŸ˜Ä„Âðê+ï+ðd¢˜çˆÐ)àNP¡o·H‡û ¯LeÆ(äê‘*7ÔªÃí„ñÚ‚^r´r¬ÿ!ɤ~•ý7‡Ùb•{ ,QÙYÃòWæ •¯Û Ó‚á\Цå©hB–h2NÄ›|oly¡8¤Ý#(E8©4 b”H»$ýæqãð‰”S{Bƒ½ÚÛB(ô”l3J‚oñ;@£ཥ¤9íÓHÌ„3 ň6Â/ð‡VøÉ­‰ùF¦§S6SРÀC¦7o`g*N'¼|¬òͧ¤UøÈDÃn Žýj)ß9$ƒÓάrŒ½Ä0A»i%[“¿ÕoÀ5/"†‚•âÔòíõ„ÒD5»c*œ)9¡Ø¤^ä|o 4Û S’T\P°¾1¬%)¤Ð&Üm[:ëyoŒo‹¢ê&­D‡?©²ÊðCL6™L„˜ÿ|ÝŽµðŒÓûTŒýU_íX&gÒR¾b÷5Á%ÿ’ü…êýL¯õeªÌbº+„ Š­øÃšâ_£ªžŠÚø€ËkT”­6¦„ò–™ñAb>ÑÒø>xª~uýAM_&¥_¡âz ¬áÊœšQ¡sºÎØø¦ãíŽ<'Q‹íÁ¥ú~f­¦ôÊÆ&™q™XRÆ…[ê#Ÿë_Ð{~Iq*X9иœÉø^ÃÖ#¼6;ƒh§*EÅXœ…VI:î“úbw$Ù îÂÝZ÷u o ¿b\;28îóÛ*¼¡+"·¦)°‚e«M,®p|Æ­:ä~I»n5Ôô‹Š¯—kät¤‰†Ò/boKcíOgÓniÃŒ>?÷l·òIŒŽÅÁwÂ>bã#þ¨f L¶VsÍ«+UÈê:ÆÉ:2“KCK ÊB3FRlU#O\ Qb~”M>A5Åev¶Tkm`½ƒäqÒt!Úß)ç^Ä´›Øreu»¶Þ{ý¥kIJS},“´&Ø©r‘”ß9>.ƒ6ÐmŠÝìZ –ƒkØyX®ÛÓM +XP²I°ÐŸÓîÆ–¾ñZæê!·| M‰gr@ó†ÄøôŽTýÑ+Ø¥&¸@»€’›‚tÐ^ñz—º²¤h4Þ6Ë; UIR–W`.mQÖm¾`«’,4ò…¨ÝqÀ¤æ>58¬·*“ 0WäÀ^R“kªú€«¤ AÝÅ™%Jt÷…`NR ¾"{’ÞÄ)N%dŒ'Cpn}bj¸$1AJ±ÑYP7"©îlq˃—ÅÊÃS§8oµm­˜½ÒBÅÖwm%É„Ý*îìüÓÊ îîhVsÝ«0°½‡Pm÷Er4û´!«_:Ö»¦\¶‰¿,”ïBÕ™²Ô ¥@þ0Ýp ºêÄ’œÊñ…‘¦k¡·á>lJŠP«u.Àr‰z`ù{2…–ÎEŸ º`M·Lv‘”­¾ï5ÅŠ€7ÜCU»èAqIBn›hAÖ)òL“÷0 •1u•‘¢àtM.“a¶íÞ)G!çO'n¢ùxdœFšÅX•¹ÞJGxû© £™õ´oÒtòê2v® “íåèìôùœ‚’e0Å^ji"Ëž›ñ ~¢>³G‡V•œï#’©ãÌI8Tƒ>¦HeÓ}côÆï"ðCI”3só¬­é‡W5,“ ½²iy#¨¢ê"Ýaw¿q¤™”-Ä€¤¨Ž¦'½íSf~m“tÌ:‹lA‹YŠð^S1æ#•ܹ„DÀ é¬5$ð«1ñ•Ñ^ ³NŸ_»P§øTU'œsõ¡\–ýü”¦ãÁÈ1µc â©s Î[MºŸìÍòPéæ#å:¾–}<ûоeÝF”›iÀ’I6NÇXäRðÍ£4É-­wBH¿¼A‹ß¥ÚÄ%Ä Éº&÷¶°5(ÒLk:€°U¯¦¼ü¡rKIqý…¡@•0ÞŸƒEU´Ia6A.[` R¶¶\RjÇQnù»^×Z°‹ÝLøkþÇ4ù¶_ù4Äh»€a58©Nr“Ä:Å5â…*Ruéu”j’Rµ$Úü´ôrÍl ^QâÍ~CM¢ëêCcJI½ˆÛ_?8—dÛáˆZ‚EÏ=„B^ãr~¾òÉ #]¢SWlMvì}I#($Ž_öQ2¯+R”¨ÞÿKB>¨—Œn;b–°H*Íê î^Ô• ðZáwX÷/ÏÖ*ÒC¾æ›&Ò)“ÕY’‰6ðl]g`Ÿ2b©¾^£¨ÇÓ¨ú²« º\ûKJ]–q+SØèV9°8ÚÙpê1äW./Îê0ÝpJ.gØ––ʳ)7hoÆÚ¾oó.ÉcSßÜV§Ã˜¥$‹êmÎ!§{;S¥£7X± Vsü]¡ø*œ¾d6@Zs8Œ5É*.ö)i**pXGé‚-44št-g%‘tn5ßÌÅw{ê?*•¼ò–OzëŠË–×o„L¥+“¤Kœ¡UYžD‹’ .-9Òoöò‹P‘ʺÜrKÏ?ƒ‡ª¨ª{°¾©¾ì¹”¨ç®Ö‰xÝìÇôþšÈæ»oŸ¯Ü53J¨Ë¼ÛNÓܸ¢Ú[(ÕJ8¿bñõ8¤›ŒÓK’;­)·Ô¼’S`ëöD¤Í´ÿ+Ùï3åÌm¢²‚}~:«ýþ…$Þ‹™¬%ˆ¤),LRg“)ï;â‚,Çúc–=wO<žŠÈ»Ž¹|;¨„=n×_€Òhu—fß•D‹…ùt¥o¶wHU¬O®aõÃ}^.Õ'-;¢„Êäà•×ç²Ñ¼Œ\‘vhP^ ³rêŠÐ;»o¨Æø¯I¢çWƯ÷ɼ~§7H¤’‘šž›KrRë˜uHÎPR@û„zP]Üpyy²ãÀ»²É$ÙÆZ&ðS)ÌàR<ùùrŠí÷"=F9E8µ¿¯ûŽ5F¨MH&eª{Î0¢T”ÜkÒúÚðêÅ“ªéá>ÉI)%½þö8ªqÚ^¤Í…X„¥-šÚô…Û'Â2_é9Y#¯©fJnVoÙçî€ ‚‘npSá›âË ±RÇ%%î¿{%HÙ*Hèb/Ir UÉZ…ÁÔ´°t 8-Þ('/ A‰îÞÄÝ+d)Ù’êò$”ùq/&ô+L¯˜]‰²ˆ×HÅëh„©6ÎÁi„KRê*m_:ê‚|òÇÑü.ÙHÏ+Òÿ’õÅk•^ñí´srÌ‚nF¼È‡¿²U›9T©µO§Ê½54ò‚PÓiºà¬FI(+“-G»Q=ÂnÏrk–«cÄÄÀFšƒóiÚÁGŸ;òŸê¾,äÜ0žŽ‘*rã‡$êrµ‚¥›–›3”䌭½aô/îŸ-ŒÅ%Ù›ó~‘}¨žn©É?%:ìœÜ³Ì>ÒËn4êHR0G/¬{ð’”n.Ï>_.™h'À ZDh,¤£K‹ùÅiï\Kò”·—¼AZÚÑâün–8¿«7éš½,¹Êœ¢Äuë4Í’¥dÆ'”6¤ XXqžÍœ–ÉBe Ô'•ˆ?„_$©A±€):€ ì9A^åw&¬y»s¥·¶‘RZЖÖÉ ¸{Ï©PÞ Ñ¦—qµù7MÅÇ‹œ?¢sRàúeÃOö9Ãÿól¿òiŒ™Ø¸.à@Î^ÐþÞ8¨\[åy½Í¿³.)'ÉÏ=3NZ‰I uÒ5«2t ê¢v†¾¤¶2ö¶*Ø6ŒdÐ;­f $)œÛXÜë5‡oM˜/8–…Ò N€ôƒ¹Ø$Þâ*Îu$Z硹ÒàRO†`¡}ÍÒ¥kô†”Äã&Óð9ïh¤’R4¡©ì§> ÚÙšÃÎÒfgD“‹˜%Ť”:›X…[]5µã|R¸ö§G™Ôâʺ…Ÿ±É$Ö¿©aK˜¦–%ež¬¤¦›6^.-„Ø{·ç¤kÉ3$sÆS”1îqª¿³÷•õ ¤»ô)ô¶êëóýúZæoúÛΧòºgF.šqÍö”+ñÑF™ ¬¨i{ ^1ÝYëé£+zÍêJ¬=â  ™ÊzÐÆpèMìG[ˆ”‡{—‘wQJ@JuæŸÍŠtÕmÕ°, Åãu[—(˜ªd©IÄ·Âs¬ÉÕVôÊe6¶„Âwh”‘šÞW°äíäâøŽ fÃQÛO¡:–ìœ~HÖÂÜ›eM‰–Ь¬›‹^ÿÎÑ¢té¾NN£óvÉa®Çuuké÷¤ëtêe#Ø×0ÍAhaÕT[Vb›"ûò$Æ‹*Š9rt™úŒžº¦›_…'ryS<ê'Ý›u´¸¶o.àÜAåá']â#™4Íò|* x”«§õ\ïßiÊ^.(-§R ‰ kúuŒ=ÛUò­q÷$&Q/Pa÷YÌ–žBʼ¬¦äy_hË/Ù’º×õ4Ç–ä¥/üާ)SÃ/âÆ+N3–WÊ2®!ºlÂJ³)9r.âÙSËìœpÏ 8úoE®×ÊáÖí}þO£ŽL3œú˜äÔ–¯ž*‚¥X Kü¥‰š®¶úêrÒòÍI¡ ï™Pɘ¸-`EÁçx¬}&w }4¡J »ðù¯ëLœOOþ¡Oí%¯jÿ¢‡שY—p¹=SCòÅ €¶Â¼Q×Òô³Œºw%Äw÷×õ×'/QÖcQÌ¡.]¯ºöwT™“¨M?4”­ –Sa Iñ«¦cè0Íßs>Gâ¸'ÔcŒ`¶¤™{OÅ”¤4ËÕ+—¦¾iÖÙ¶VÚÁúùü#u’-lò:„æî¬TÔvœ¹ro”¿B5Jnž¬;1*õBZdË]¹%Ë%Aáâð¥\ŠmÎE¶ÎÜqÊú˜äŒZ¶œíZãdz1#U“r²Â×0îžZRƒaË‚F»ó‚3V¯ØÏ/I’8'é­÷Þ¹¯¡G‰Ò”ÕÜ{‘•#,»ŠSi?Å*Ö1š©YëôMÏ»½ý¤“‚à€µ7•^n7ÏÒ3òu&ªýÆ})BR À°ØÄw=ZöeºJ š]*EÉù½’Ów ó1Xá<’ì„mœÒ›ÿÆ·ö âh“/ª‡,tÍÜ¥áœ/8ïÂ:¶»’_™)ÛÙ§V©³ÔùÇ$joIL ]Ö]ƒÔr1ßñº’¦S¶—·ïBð]tѪ6tÃÛé±ë ê– µ>*QN¾ã¦È̳8Èu—P´¨\Z>ª-IZz9šhu([RL]¼Áx¯a9—f0ý@I¼òBVàm U‡LÀÚ9óô°Íɤfñ½"xÏÄԦùoã0‹ýÑÌþ‡ÌMU“ÜÉãGJmùHly{;¢øV û#Q“ÜÖ±¶'®âº’gëÓMÍL¡=ßx–Rƒ—•òï]>â]°àÊrrvÊBÙ·‹O†‘¹c3n·,ÑqçP„º¡IÅ+cVs\oV5jˆî¡.ÈÊ‹ó's/ñ>²9çÛÕã´ÈTºtäìÒ%$d]š™_¸Â7õ'`#ÎÇŠy_l–¤£öͳö¦âw±™ÆðëE°.ïF{Grø7Tö’D<›lÕÞ—Ÿ§Ô×M«SÞœGºÛ ëèc. ˜ÝIPáól}!j&åBÃM71’Ù²N(}@÷¨?Æ4ðRvÇåû¢zÊ´;mޤ/3Dé¶þ°¾â©ÝŸK¸M0Ì× °ëì:‡i²ã2qpÚAê ùˆ–u® ‚Â>qqíÔ=ÆœNó%ƪM-6«¥I/(‚ÜkGg<í³Q™.V-nQk\™S7P* ¾†3o`¢ù™VÌF¹ºFViZ&á*þ!®KRi¬9572àCM6›’@?åÍš`òdt—ï^çN<.ríŠ=;€û-á¹j{ocZÜÓÓ¤eiÎ%¶Ú<ÁQYÛ¤|?_þ*šct½–ßâÿ±ébéáÄ#ÝõfÐŽÏ<%ANVªÖO#:HW­ÄyËüW?´ÿ#£ÐoÿÆ¿_÷=Ÿ¸H¥•*NQØ!ê¬íÚoòAè?ÿM~¿î,p„[ª<@¥ØÃ_➢÷)~HçýÜSŸø> «ÓgEÈ$‰Ç?L?ýQ™ÿ4¿$ _þ5úÿ¹_^ìÕà ”sLr§O|_#ˆ™*ó ¸1ÑÓÿ‰ów¨©ßÞ’_™1ƪp×ÓþÙæ¾8ð»úç²T‚^•zꕞd‡yئÞi·8ûo†üV=\Zþeàóz®•Æ>¤]¯ÞkEÂl2o‡+ùDZ:<ÛáØ„Ýj(Xsè=9ÁvOj”š%P¨µ*ë‹U3,¤’eM¯™½…ºkqÎü¢#7/² }³t•àÅeÖ+¬¼TœÁLʽ•^`”Åv¿sE…-˜à½m)é:ûÅBÙŒ«šzøa¨ýGèù¬•ê~!#|þÈå‰ú íß ±%±µ´‹"™‰œê›4¸²^Õê¯Ê±ß™«ö)±7 %š¥½?ƒk.ÔËI+rŸ8‘ßeœª°¹ç]WÁœvùòi¢Úî9É™ÌHJ—®ƒ2,~#n¿Tx%öŽ…(ËåB}¡hÞÅcrFÞ›|‡Ù_A©u8êÿ{¥n>µ4ßç(è8Åͤ‚âÑÞ°.[‡8e†$Ù¯M$974R ­¼¿ÑÖ>Ç¡è×OŽŸ,âÉ-ºr±Suîñs“@ïœý#®T+VÅb&%qµäšÚQí­Þ“…>4+'˜;kÖ1ê:xuqŸý&“ÙçÜMK›§Ôæ$§Z ÌK’—õ¹çÔàx¦ñäðvNQ’´¶G â•ÐY.- =ÅmnzÆý7Ä2ôî¹FsWÁ¿aÌuJŸ jaÀä\…íEÓüKUÉÎëùM‰Éw’ S RmôU±”eÀ6×#¤‚¬À9ÆŠ1'Åy«Ã©M¡è•ŒLͰÊ]˜m±mÏH–ëÈÕËlÖ±8¦H4±,é}`[*—ާâX0rö:½¤hµºýbµ2óá,Ü€ÚM‡Æ>{«øžLÚŽ¢kÚàrƒ#574Ä«¼ò‚P”óó>B8ðaõ'Ù%©^¤Ba™YLEnBš†ÕTP¼ÄÒÒ A<ë÷GÚô]$z|S<’oHI¯U•1í)ÌßßS¦ñÕkÊ2LwJJq€º%k»MI#÷•BÀ- ä•`›ou].>£l¹*iÙÁfå¦å'ž‘›imÌ0²Óˆ6¾kÛO(øÜ¸^98ËLëRï\˜×K¥%7Õ'KFN×%Æå®I2 ÙDø>0Ó¡­º%iß $Ü•Zð)mŸCû/›ð ø2¿”TAÕ ú„|Û〥q6¹MïþÉ<ûéÍ•Å&öå{EFцDk Ës±¶êÆ’iòd—°ËŠJlJ€O c÷¢”_†6å–B{ÃkîDa=#XÅù=ûô¹g1-vºã)S’Rèe•(j•-DŸMñ_ãªXñÃ÷o÷ùž·GŠã'õ£ÑϺ¥¬îcó¸Â¶ÏvQC’2ÎÌ­IAJBe)J°HóŽî‹ ËÕÍÇ*VÛá%å‘›$q+fg%\•q)s)7BЫ…ްúÞ‹/G5Õ4š®~S'håW³ Ô#‰§fÚ•ao‡2dAYôÑÓt™:ŽþÏåMþFyr,u~XÓn°AÒ9»STÑ£œç¶”¬µS€³o¼„äÝCͨò!@}ÄÇÑÿ‡:ÉcêcéîгųA× 6aca×”~´äÔ›>Mª­Œ¸„:É@ñ*ÍÞü‰´&ém ¨Ééìïø*©Ná¿&¸ŠÌŒ¬Ý]ÙÕRpãs@-– A¾R~•Ò¡{ì„Æ–’³g¤hó= xÆûÎ>qÜê¥\¥ ´”޶tF~«âŒGÍ‹•ã×Ô°?/*&ûøÿ&É/a<Žù7:.1í/Uá´Ö9’¯Ô]£Ë,%NZÎâmâZ]P9‘öÅ''º5}φÍ'öþâò“Ÿòòz×Í¢ørþˆ=Y{<ŽêÅQøýŹz“S?–³sUrÌÂP[^»([kBõ_±qÈÛJÍ»´LÝ pûãÉi)yfñ4£ÈŸ–iC3íu€vÌ ë`N·‹¾åEëµ7æ?Ê%™[‹J‰°= ?P…Ú³j6Ÿ¹%—PÒÖò”CjUÆÄÛ¬_m§l¨ºýþ‡g ¤JàúU=3,‚rý%‘u(üI¹éâ±âŒ²8ò?’e™vfa¹vRTãŽ%HµÉ&Àkë)(«|•½#n«ð«S)Ô'¨í·-,ÙuÅ †î5Ô^ûG:ü—dÙ´°N)º¥pßÔ°ºkò´U.IM—Тêµ  æ $}½/q/ˆ`ŒûoéÀ– ¥d#ƒñ6)eÇh4§'lÙoæBIé™d ù uF™zœXeuú“ rš´BÄÔ*¶©ªŸY§®Na) ¸Ì0A ‰øEa˱’qtÈ’/ºÌÃn´áJÊ6RqNŒ’µ_S”ñ1†¥qÕP4ÙJZ&É+MÎ.>ØùŠãŽ>ªi{#¯”•”}Ú–”¥µî¯<ãÏ5íiï©,Íãg*SMf“¦5ÞF…dXG±ð¬ &kðˆË>Õ÷›­NiÙÙ÷&^Q[Ž(’céärQÇ%Åźs„$e%@‚’¬Û€L:¡oÊ5ž:S7O‘Äm%EÑûÖmH"ê°º~ëljñ®Ÿ¿sWü¬2m¸³–ÌJ6ëW ²R› [K4—í^9-cn›+×MRT§2)7ºwŒœZÜ9ºwDéŠ~*¢È1<¶çX•wÝq`€w…‡âŽ2q†N‰tYñÅK$44œSˆZnÉšrü‚µøÇ¡Œõ ™Ï vÑŸÊŒDúÒØšZÔtàÿ7êg¤ÿC*]Ï„(Èbº¯-;1­²ßq,½d×Ítc>¯§Æï¿Ÿ¸ncÔdò¦¡(ãJ)ç7Pë¯ £ö¹7éòÇ67<.Òöãñ%5(Úª3,}=ŠQIìêqµ¦tÞÒšaS˜™ö[_pžæT‘ôÍõø~ôéí¼­ù¤ê¬Ú_un8¥­ED›’|Ì}9Ú×#[‚aÓ¥g ±ß¡ëÜ£XãÜ‚W=MÄŒ nI—š#é:B¼®/õGƒñΞ¦ºˆùѾ™ ¡-Ýi(·DŽ±à¿™QÔ–¬~P’x×:_¤LZá‚NÉ©J{ÆÍ7C•sÉô7²å¿h,5oÿ—_òŠŒŽ˜ðoðó§´ ŽX hHªÍoÏ畤hŸ[4§ œ!V>qMÏè6âs$…¶Œäˆîd%WI¾ÑÎöl£«G¥;ød±]е<Ííý©€ÿ6åŠýŸõGÐ|=§/¿ûóKÚä\òŠ\«=gîJ§É®vah (hxV¶ÓœzŸ ø~^²N•A_sús—6háI½¿éu4ìó‰„KKJ¨²Û€ø¬F¦=ü90u]D—§xñctÛª¦rMIc_5ÊM]~ ó-Φšòšmƒ0¢•¥ÃðóÒ0ÏÒàëK–Põ4“®ANX^HÝÑ%·.ÝI¯“S,mIK {âö×ÏHôSÆ£Õã†ÎÈ´š½«áû·ý ¹ôäçÝoc^ #àþŸ¾kÉÏ{X,Õs( ¥"öþ0[àzë ̤—¥’ýºæG«'Ì‘å±{ÙðθC+>Rr¤Üž—%þ™½²Tv,v3v)Â+:W§u#©PŠûvteíqGFâé®ÛÆ\£žÒã‚ß =%-ˆdæ*²~Ý$‡R·å¼¥ô ÐѾ׊yÉ_Ð~c™Z·g4㉠rL5O˜yºXRr$5œd ŽO¶:RLìïùlðëtÌE‹gkTz h’³kïŠ-¬ê«tÜÛÎ0“‹vŽ)×(£d(,ß.9ÄÒkƒ°c°qf t ­5¹ÀE·¹1·n4‘ÅeŠ„¢clÆÉÏœD£‘ÓŠÐòØx’n[WÝÁÛhR]§o±¥Ê?Eþ¡y쯹“‹²ßõWJ±ÐÏKéÿH˜œÿûrûŠÇö‘Ò8ê¼ ºæ"JU‰…h-BÅ_½sØrüØò:™Â+]¿©ÓùªÙ"QÊWÙ¦>åV‰åi½ËV ó-¡7Û’T ×MáTúIwºq“ûÙQ’È«iÑAÄŸmGpcJqUJ,¾¦Tr¬Ä/9½®<üíô±‹Í“¿ŸìFKŒcÙìhÕUÔ\S.T:«² ™ÏüÛ)VéôÒ=HF5pG+»ÙÜ yk¬_€qËøž¬{2¢t,´/›P2˜ù_Œ¯þ©ýÆøšQM”‰Ï¢tͰ]£ÌI$k⎭¦„'.9nƒD¨ú¿ƒâìÁÞüœýCº±hsIùǧVa"û‡XR£‹ñi> ¼óêO…¤©6ë qÏÔuÁùùðk rœ´QäÊð›‹Ú.Õ“&üÕ%Põrή² ‹ÀºOÖFl~®)AùT ]­3‹% Jƒ–¸µôéãN½Žç'ܼ÷gœ<Åkˆ :AL´º¦SâVE†©&ÜãÅøçR°tÖ¼¿zýOkà½:ÍÔ>ïK==‡ž–-OM%öÔÒ¤Qe–¹¶ñð¸ú¬xåÝOß¹Ÿi>™Î=­ëî<«Ž°Ô/Õ)Í6œŒ>ãiH¾†ÑúGK5› 2¾Z÷?>êð¬Yg÷eWÉÌgND›¦Ûn#¦0Hâp_Ìu,)ƒÀÁ¥™¹‡Q92œéu*7kO<ÄzXñÿ§M»>¯ø¬1õ×½8iëŸø9a‰æªN1>êÓ2Õ¤:I:zòç~Vܪ^·éáÂ3Ç]­^—¿êAÈ.¥@­7&ã(IygK„¯“³aùdÓ°m>E¥û­æVº“´}ÇG‹ÒÃ[”ìYBF‰:}ñÑÉè_Vð¥B™„¨ø…e/Sêh*CƒfÖ ç§Æ9±õPË’PòeŽQŠ‘@l ¶¿”t]vñ´ ©pþ§&HÎÒS4ƒnh?}¯Ýv>þžIøÙXíKg'BÊ”›rðÚ>1µtzH™.†Š•”…¨káÞY¤jô>„üúe‹¨¡ùc»lúÙsý€ðÝ¿Úü¢ã#®<üùÓÚ¥ÚÚ‰Ýi6·Õþ-é%—2Ç}¶™ô? Ÿw~Ï'©óç²€°6óÏ(õëÃiÙ†”TÃëh“®EZñ×ÓuÙúkôdã÷t¨“—-ôÎchÍ#›¶™ÂÓƒq‰Ë— WÍÈH:|÷c{Ñ‹ƒ¿ú%QxsªIIàÚ땹OU(XCŠ~ÃXŸ–o©•Àü$Â(3­LÖiåÊL°n†s\—ò¹û"äÔRA–J¨á’ÁBYX,æ¹!ñˆŠ~Nt´˜ù) ZºRFƒxÖûd¦ÎÁ‚*LÔ¨2ËB®´ !I¾ hû~—4rb‹‰Ë4ã&^K<ì¬Ós ¨¡Æ–—®Š~±¸÷ªÚàܪ|ZÇ• tÄ”ÕY…²ú n~ônêI66éÎ8aðÜ•«4–y»Lbg‰øÝxtQ­%2ÝÈ`© ¡.–íl¹÷µ¢ÿ˰,ž¥³Íª\ø7b|).äµ Ú%œVeJ¼ÚVÙU·íðŠÍÑâÌû¥§ú“,’¤@ÅxŠ·‰jFz¹P\ãéNDè[š”áéá…T3›“¶U¸´6ÙSŠJRÉ&6my#êrØÚsPs!C¹Ñë^`y\€f%lÛ•ÛS³¤{ËËîâ‹éõÇÈõ=dºœéøOG³ ÇŽ¼žKX);\ÇÖź³Æq¶bZÁZÂú“¤h¹£ÏË¡5G’Û‰7qH׿câzˆ¥–yÞ¢åN%÷ñά*¥%-#2VÑh¡ðJF·ÒÛˆòúÞ‡UAÉÆ·£Óé:Ét“sQNýÍå¾7b’EŒI9ŽT~Øòøs¿ü’ýUˆ3.!ÉœûλT®MÕ]m”8û¥ji½5éþ >”)áçÉêÍåu²÷s(˜iHÎÒ‚P؃q¤lš»92ãŽH¸K†‹¯Ë:þk*¦¥I6l[㾦g‘ÿ§þnÔ «T'*ó*œž{½pØ)e6Øi§HÆSräôz^“MÌ1×ÞE“@TÓm-@…:Œ·:Zâ kºq_SUÃgesø&À²kí·(û¨ý•gœÒ¶$%7ÕBÀü9I%Hj>OQp¯Èb®ÍTÚ$ø³N²°¡iqVPú£äú¬Ï§ë¥’>篎¦<çŒ(3ØoÍQji˜—VUe7J’vPò:GÓa͸Ôד̔;n,ªR’ef[UÎv”›0DlÕŦgÚ¬â赓sr@×ô˜øi}§~ìôu¤O”)I²I·æ‡áx-G´tXºÕí|Úˆeù>‡ö]àðu(¨ÀêýÂ>tv‹V^7bqao•¦´#T\Nl’IšZÕe€›yˆÓw£6Ò䌷,êµµŽ„sŒ®ö.è§¡§IWº¶¾-#&·¡©WÜB3“’SmÌK¸Zy Jлe#Î0Íd‹ÆÕ§É¶,óÅ/RgXÁÝ¥ñMLJU$ÑQKÉÜ8øž·ü/ó^%ôgÒôÿâ,2UÔÅ÷} ‰=«Ý-‹áç #[+úc……ó7öât¿ô }²ßk,Ú~O8’vÿLü-ÔsÝè9©»Y^é8y뎧HKü/Ô&šh_ç_á©~BÚÉGÜ ¹{u„ÿÂýCoæˆÿÎ~ÿÉþ>%íG^ž”qše1,(è»é]?øRnU)/ÀSøÿIx ÛúèãõÚíkÕR«L)ù…wð(ûƒ¢ÅÒó >_®ø–N®nY!M%öüi6ÓÎ=J´pûš#L—C· eQÞÇCņ9'U±4ZÝw×Z­aéÙªtó ̉‰w2”_Óqå¾èî!’‹º:$¿jž74Â[ü¨KªH±S’L|ýدZQå.¦kMÕ¼m*7Ĭ„¸‘gü˜={\.ªWI ª¸Ö¯{¡"Úe“kôAëû•üD’ýÔÜk —1M…­a,ßù0ÞvJêgÁ·ÚSŒ•h•8Æi¢QwÊR“~@´ˆy¤<œu9»³ Œê§g'˜uÓÞ8·›2º“Î&)KlÎå$¬³’HPJ–|Á7Þ:cMR)+Bæšs0!i×#KÞ¼—M­‹¥Ô+t‰•LI÷©J‡‰¾ìå'®ÛÆý7]>‘Ü^Ÿ‹'& ’v×è^#‰fÛùÚc€ª²ãÓÿÔ0Uqü™ŠéäÕìÂø£=ë2-~Qqÿã§ò±.× C¼T›!Ržzõˆ1xFsÆã$‘…qYâ U*/n[CÿÔ»íeG“¤èJx§4°-'p6Š—Çâ¿’ŒÔ;™±k¦Õ.…&YŽe‘yþ3<ë·¤m~ÃÆ”[ö±÷vøGš¾m1ïI6-Ì£*J‰e·Û «%ÉWLðÌšŠµ ÇÚô2RéâÑÇ7²êA÷¥¦š™iŶóJ!iФƒpDtN Qqd§NÑëã¦q¯¦_yIMNU…76ßUe6X¿”|QÒ>Ÿ:^,ö1æY1ýO(¨¤‹êo­ã뢴yÄ8â[aN/[ ÅÞrÒKÎ?”œËRНÔïÜ¥÷³Ñ„Wj:gÊ &» ¥RE©Æ“*¥„:¥€­…ô6¼xê²`Àž'NÏcà½6 ¹o"Ò^~ó·³ÃL ÚR±…dŠ6%aÓ÷ÇÈÿšõÿù¿É¹õ?Átø¯Ôóß)ÌÓñåZ^FU2Ò¼RÛh½­¦Ùµ·øt§>žÉË>C®QQ(câÍvY°¹Æš* +PAY é¬z -³ÌÉ5Ž“WFä®M¸ÒÝRYÄ*ÇD…£¥tÒ{³åçþ+À›NÑ«â 1¦T“—}—KiA°ÂpiÑô=Pú¬K=5~åk©—y"ËJÒ.6þQ)¸É3¢qVQÔ¿$ËÛ…$ç¤}ÌÆ×ÐóeòÈtX\7ŠAʳÓÜ.IJxS³<…rq7D»n5}\Yp„¤z“÷ÇÉu%Ÿ«p^OWÖ<yÓÖçëµÉšµIÀäÌŠ×Ðy€mM‡ Çžlæå+e<ÛÜ‹ï)YlÒ¾èÙ¾ÔÉÕœm§€°µÍ„“Wgo)>X|Ø \óým;VCÉ]žE¬¢HÆÿtHÔ­ÑôC²÷ûa½-ûÝZÒ*3;#Á¿@0€šÜZœ~ˆU)Ùµç˜~eÇ\QH”VI6f*)èæÈÕšÎl«s7:Æœ³6È“*UÊóäM#i™¹û‘»Ñå¹¹±¼K°YPæ…*I:sÒÄù-Ëè11OC©JQ½Á…Ûp†ÓGH¾b¤¦Äèoþˆ—ÓFÉ|X|ŽÈRR]&ÝNÑ/ oCr“ªº2s¬ÞÛØë `@Ó[i,ø–¯‡(_ÃÅ ›Ý1ÆéLæ%%Jå télˆÉ-H•+.’ŒÄ_t©ŽˆÆ4cëIJƒ`{£¦ô¹4rmS”¦ûtÓ2©È…¸ Þe®ÈA'u‘”ä’rk¥•ÉI>K|cÙúL”¼ò&%jr¼YÈgP äR·´p`ë±gœ±¸¸I+}ÚÓÕû}OÃráŠÉÝÜ«KÍÃV0†M2VÕ)·fŒÃŽ])m"åWØcŽ}tqõ}Wò¥¯©Ô¾ê`ÅØŸs»±§83SöÉ©ÓêLN•%¹Ù7s2‚Ÿ{1åa¬ZøŸN¡)OMxóøÿ’åRJM?%•3ƒÒâN°Ë3rU©…J!ÉCMt,%}æRHçÉñJP’N1mÝûWƒ§Â;{àßs¥U÷£EÅ5š iÚcÓr¯¾ÈêåÔJR»j›õãØéÜzˆwÅR|/QÒËGŽNÙ]ò<»j °&×ÐÇBÄ‘cð>Ì‚F\‰'Qs´ZÇn‚6žÉŒÊ‹åÊ]<ÈPËh¥ì† ¸e¶–oòº”…¤÷~ØÍÆšøÄsõ‘~„ßÑÿC³¤Šy¡~èéô¬=Œ1†(ª´1T¼¤£3޶”¼â €%d[&öÓœ|ÇQÔt(Mâm´¸^O ÅÓuNIvÎ’l—F᚟áÍiú•FNf¦Ûä50IB@°ÔòôŽN£âÿ‹ÅE¨>S»ÿ£«E8tÓî•¿sRâ7 *e„NÝ.i‡ n‹¸.  ‡=ãÑøo_ƒªn‹M^üy<þ¯ É‡ærMkï*{Bðâ—†*Ô¶äʃSê®wUõûã£à}Kë!>ïågÇ:%†pìòŽ}ù>ÉHR³§óFmãÛX“ÃX/”…7C`'W~BçîŠôbôS‚o·Ø™+Li$f¹°¶›Ó²ÁAWï÷úÚh¡9ÚºuæN¿èŠ’ÙKi" ú fŠu›“°¨ŒæßŽÚ7¾Î÷”µÉ)iRšW„tõÊ¥‹³ØæÉpüÏBG(ö,Éý Ì ‰ê˜ZªåB”ús¼Ê˜uµÜ¡Ä(Ç”sõ43¥Üi Ž-ÑKœ„€Aµ­qý1¼i*&õeV5ö*ÁÏbàÈ|ôåëuYV,.Aæth’Œ¡Lµ7k ({ނߌ|uÚÙêÅplX °îÅrõ&þQón2ÃÅiæ †·òŽ.¿£]V'×â¬ì躇ÓdSWø:;MWˆx6[ ŠœF©;6è²d„âó¥]º<ãâñ|#®ÉbÉŠ)/5§÷lúŒŸéñâõc‘»ñnÎ ˆg'ê•ÙŠ”Û®)O’¢•Nû^ܺÇÝ`Á1X ´’ÏžY29·É™(ìäˈHï^T%ËeW™ŽˆÆÞ‘ÉŸ"ÅÎ~§EE^O .UõÈûKiÊÊ„À˯Så°RŒ8ýOÍúÕÐõjÏû*ëÛï9Õ~•1!8–§lºò ó%ÌÉ ‰ã"íw#ïú>£SKÒÒ\Ršy”$©%=á µŠuÍå$ÙÔÒòn\>¨&rˆ–îã^é·”}góz¸WÐàÊ©—çDß-ÌwÕ֋ʾ(«Ô0}3 8´¢N+(CdÙjQ¾euµÍ½c“Mey|³Idn=¨¡$t´t­òöRãÙäÉaÇ•œ¸œƒã½voK§oÉPŠr9œºÉJH$t">.;Ó;»W’|ºÆ¡ž£ó‹²âŸ }66E½ásåx?˜¦‘ô/²²óðÞÍ:Ÿ©åÂ2;A€a9;CHµKã%~BU²†YŸy &äåNsas®ÑIñG6E½b­ÞY@[‘#Ë£)/r 8HÚÇëŒäŸ“9$ˆ¥+m9¬UÊÖˆFj“2ÚÎp‚HÍÔÚÆu´[šZBžt¶ÝÜp4>5úáS÷iÒ2¹¦r‰†o¨ï€¿ÛµåÔÓTL4Y ̱¸:º>Ø.-ò‡iGh–ڵ3-Xî °oä9Å4½ÇÛi moåïÓœíu‹ÂÕ ·v u®÷»ïšAñÃTåv‡ÜСu'Ý<‡ã® ÒÛv+:’¡  ¤W‚’-7e¶ ¬7DÅ’5Ç)íÎ&]пgYÑ|¼õHæêúgÕb–ºoÉÕÑuŽe6­/鋸«Qœ§²ÕUª{ìM.`ÎÍ·)P7EìR ãô†9wçíiª¤©}û|ýO[¨øÌåO ªw¶B¤q-ù9z`›—jyÖÌ϶©ÇÇï¤=—0¸+HÛ?Á ÜœeÛ}´–ë·ÜŒ?œc‹m]ï›$Kq.›D]2C Ñ„½"YN-Ùi¹€·fKƒ)†‰Ï/ÁçÔ÷OªÉÝ7TÒ¤¨¸üJ8‡O¨ï^ú£ãúzeìGvžãì%¢§æC„(,*ä~m®"óü7X”:ÜŠ]®Õ*ÕPcø–>žN}.7µ_‰¨ãj½±^r©MM9œÏK—.¦ÙŠy€N¶O¢Ã“% ’¶¸û½+«Ê³ey1ƯŸ¼§ql¶‹—›±Ð­HŽª^çïVýÌ”žè:d“kƒ}=D èN2J„‡B[²Mµ#($»ñ0“ˆ¾gûðH¡TSN®ÈÍ­ p2ò TA¦šF9ñú”/•_™·M•C$efí7RÀÕÙšØ8­‡¦S¥H Œ¥DªÀæ½µçt0õ±Ä±¾ÇJ¹ª£Ôž^Šy\×r·ûòmü:Æ/¦`JµmU£%:þg’òTIæ ¶ÑäüCá¿ËÔÃ>>ÛŠ=>“­èá†XåtØóõL)O³X˜te ¸ë¥G§Õa8þ7‚q¯ÀRÍðÙ;w‰«ö‹ÅôT­µ,Æe0µ î«ÇÎüWªï’ÇÄêéà–ÅKK£ÀÒQkÚú y˜òRúuäC£ÏV¦Ã4© ‰ç6=Ã~ýÞ‚7ÁÓeÊþDD§ɼÊp¦y2ˆ]Z£L¤•¤²·‘å÷Ç¥àó–äÌßP¹D…pó ´~{Í8±áQm¡¯Çxé_…SlÏøñ0Ë’énW<Ò‰Oµ0/oíI…/ƒÅpØø)j/¯¥²ý&±L¬ „æîÖ|€ÛëÏ?„I*Œ¿=Í&ƒ‰e稓ÂJ¹N¥¸U¡šþ GÉ[G››LN²F—ïɼ%´1:ÁSR”Añ“er¸´bU)-Œaªƒ”zèRíìï(’c»á½O£“²\3Ÿ64ø:[.¶ãAÆ”’•oP½ÑÄý… è HékÁbZæ€7ÖÐìÍø—SLíML¸;¦IÏm‰å9ñž§¹¬(èÅŽ¹)%t‚²´ÿDx‰«:¢œQ2\ø‹‰×{E+¢’ûVö„oxiqå—¹ô#²}‡gÌ9oö·¿–r2;#ÁÑ @ÎÞÒŽx剜7ºjS úœ#ð‹‹9ò$Ù¡¨YÏrÖÛX¤¨Ë^Hs*ùË”û§[ÄËš3ua ±n-f¥N†ŠV‚%O¸B‰;^©Ü¢t*6¡Ói¥ŠÝö’@¾pJSÌ‹tô·©1ô½Ñ¹º<ž·ã˜úLÏq¼“\î’üù,˜”áàVfåd“tòeýG×úLù~‡?þ¡ê|tÚÿüâÙÀ…9}žFßD·ßð¸ßó~ÿ¨úª×MÿöC}ÎI L¼Ž`wöwOÞb—Kÿ/ÐøƒªKÿ·ÿûD—ÁJ×¹’¸Ô~öréaâ_¡?ú©¿þÞ¿ýÑ13‡°ÝNIçØC%–…Ü[M¤m­•¡ßÖÒÔ\£à×ø†Í]N7ó§ú/êsÜcFsÕ”.f“}@')')"ã-õ±óÔG}®× ÷¥Ž‘ §,æE ènyÆ©¯P´Ç™q¾ü:Qd¤êm÷¸Ay4nåHÞ)TzE E‡ëb¥Ru°ê%V¢%ØAÚà{ê±ë¤zÝ?G½\‡ÒôŸÇ”öJwê{ª-)ä”Ë&ÉŽµQT‘èV*à‰II¦ÓN[`ýQ)cðˆ¬+À¤b§RIÚw_à`íÅ\ ¬Ið Å1(£Rˆ#s/ý1Uî„£ŽÌ5‰›SŸ=D¥” Ò%Àsa¸â–š†&©¢«áÚtÅìK†¥”˜·µH)@"Ûܽ#ÎêºHÇýL÷øO_ðüiz˜ÖÍÅ;Ä•)!`Ú×zþ¶/ûŸ9. KõÄ$’5ÐÁ»¡ö¦u~á+”Vñ6#ms2jQDœ“gøR“ª–ú?†ü>3ŠÍ“‡ÁžlÎ:FöœKM•h5/„è͵É=Ï.WÖ=¯Gᬒ~E ^È?7†èÉèCÓ±ãö&R˜§1yÉþ°ÒSak c^ÜØƒ‹ˆ&‹H¶öödþˆ¥ÙvÁùdáPµ"“ñ•Iü ù)2»R0î8–îߤ³K«}švMRµò —¬põ=éê™pÊ㣄Ô%Ý’ŸvVló+,¬^ã86$[”|†EéÍÃØëS¨ª@*wB¥¥&Ã^q`“·ìGŸl´H;Üsçh‰*»dÒáOqr['ÏgJÒl• ›ÇÔ|7â¬}<ŸiÙq¤ÍôOË–{Ò­K&G’}óäév´Ni æÌM¼>/sZà“,~`¨X¬Zv¨´H)ùÖÔ,AµüàkƒKîGÐ^ÉâÝŸpàû{Oúg#¦<‚>sö lÄꟕ¦¾®ùQqg<ù³F|¬85$_@Dh£»0”{´G›RRµ‚AU÷A’I²o}¤GÔ2©JrÖÚ2´f•¶ÉXqi8†šB‰RCdýTþØ»¹$eŸ*ÅŽY+i6¾òÛŒU)‡qdÅ0©I—”!´6“¦À•[©¿Ùõ™Ÿg„xßáü}:ÎÕÊvÛòjWÿhiM¦{u&¶J¢S&ªÕ6d$KŽ» ©òqpÄå.ؘu=F<Þ\® ¿QÌEGš£T—!>ÁiÄYA_Eiê8¬˜å‰Ôˆèº˜u–LNןö!&Á'Ã`|µQÔ›i–¸&­7JIJ³…:”©ø\€AøFØfá5Láëú(u<ã5àµâÔÒ=9F7_²LK¯šR@PO 7·¬WRÔrIðž¥çè±Ë&õÏæŠrdÝÖýÛÙ]S7àô—M¥®y„8¤çÔx×Êi3£¦Wš;_™µÕ¦]™¨<ê‰R”«å; h}šû+Áõ¹^©x,¥p^,™ÃJÄ aÊ“´° öİ¢Œ¿é¹ÂûläycufÏŽp]~HÒ&g'j”w'fÛ–%ejJìT!chÃmÉK܈eW.çà Ó8{^£c|7'ŒpäôŒ…B£/.²ð²V•8”¨fç,Ñq“ƒàrÍŸÉZ&ñ£†‡WkÕ9\79-†Øžq¹gÔJ½’:Ü®w…‹4eobÅI%{(ª=Æ”ìÞ(šÃӌҔº™“”åA÷VR`“Ôˆµš-Ñ¢Í Oµ=”Ôi¢ÊŸdæ-ºÑCˆ;Æ:oº-4t¿ž-3ž²ÊRÇt/‘*ZSÔ ÆÂ>aù‰ñùb”Øó !AJJP-ËKs‹‡'=í{ªMÀŠ6QHm‰d! §m¯‰»À”qE/drÊÛ²×Pgq&“¡Håö‰•eï•6*U¹ ã<ýDpÁä—Å’]¨±N ©§ˆÈÁ/÷mNû_³wЏA¸¸W[.<ˆˆ}\=]pÿB½6§Úù.1/ æ)´Šœý;Ñë–~³*áïX±$°Ž|_„åÊ-_¿“Iôò^Q2„Ž56å.SR­¦XLa K™rg {›kËH˜|MI_k««üG.‘­]²®[È3A“›ÄÆŸFž–3r’O°µ7°+V$|¾è¹|A9¸ãƒii°ô¶i<¶žï`B¯¥úèG—œzQv¬åk”rî)-#ˆêH ïCkQæ ‘!ñh¨u2¯duâk±&T4„…'6š‰¤й–Šîr³dØŽvЖÒ4”irA›¦)Åæh–Ö,÷Ñ=²î¸œó…¢D»‘ žsº;”¯p7#ôGRËÔUw.[z6j% …( .)@›ªéRˆØ›^%§vÍâ”4ç…Ôi¬B¹ª›aÙißw@Ý.8uH¶ÿ©è#ÕøN—#“ðGQ>Ø}Mʳ=3QœSó ÞÁ Ñ-ŽI #éxÒ<ý²E)D“¦Úòü>Á•<_:ô­*fE/4œÅ¹‡r•ÒÂçhå꺼]2Nv^<2›Ñ¶'˜ÐªÊ] yûJ¯ÿr8ÿÎzt’¸Ú7u¥ç2¯ò`ÿ8éþ¡üFj8Û ÏaZ§ÉÕ'¥™ ‡™WвzÝ ƒ¦ÖçÝ?S¢=ðàÂxœH¥JIMŠm}ïÎ:ºdëòs^ÐÓ„+ÝPä¡ÐŽbÞƒG>â…V“ŠKÔÖÐÄ]²÷sôZy<ïxùÏŠtëHÎ>N¾š}ÉÅšUrˆ™´¡-¡)U³'.öõØG(n×'D¢¥²‘Ú^!i²u-ÜnuìÃX~·R•)ï½!™zDÊV§f&µÚøv4ýŸõ)Zh¸ú²¯*õççFÚ³ÙÇZãÜ~‘tUY½…”üï=;©¯¼êèÚõÓ^ ¹û’»{Î~kn§Ÿ,õßÑ…(X[ÍþRJÍÉ=I,ªrv´tq@2‰br€<[ê-´xÙ%97Hñ27)”¨É»UÁ ±V–mÉ|<Ûî!À}˜‰†¬UÒÖ'X2ŤÛ^M³ùû×ô*Ÿ™¢‘‹x!‰fê8‚Ÿ5&™.û3H} qâ~ˆ)ãn‘¢ùåiQ1©Ê᢮¡Œ›œâ%§ñ"š¦<Šr{3Kq )lmÓm÷ŠxÚŒZ[-F¡ %»6|G?ƒ(ü(­ËÐë4ÈÎágee&:·*Ť“d§C§#hÍ)¹¦Ì““žÓäó©Ð”Ü'C¯N_¯”zÑòzéë~ƌ넫|âõµš—<#—sb¿„+IÎ@A¸ çmb“¤Ì­îÎ×LR•L•Q$æeÓÊ×¼Çö#^Çæ¼g‚´úM;V±5z°(¨mT‰¥¶T¤©BëPoËO8ò¾#)Ï*ÁŽ7[kû˜„™³ÍHS+XÃc*a5t³8Í&£4(.:„®)$hH¸<ÓhâS–1%üM}¶.׊ŠzR›©Fà$›¹òé|Z7ÄÑ)’¶\%AFö÷ˆ¿]á&•&­ïîu)[}êÔ RSÍVÒßoÙ]ëä“L©ZöW!¼Ä©_H©ò‡uHI¤øfÁ:óOÉ¥2ùKyllNªêG8ÑRÙwìKá½a¹jÔÔ²¬ÚfBT.›{·ŒzÿÈ¡’P~QÍÕ-&td¡¦öò<£èN.)¢,º yu€vH¦¿1%>Ôä¤Ë’ó *èqµY@úþdFLqœjHp“‹´v¾q™§½ž›Š›î_#)¨ Y é?Dõ"ã˧Íu’nX6GX¥© ñSŒ+”¼&êI¥Éò6þÆÞcN‹á-üù¿"sõwòÀã3+q÷ܘ˜ZÜqg2Ö³r£Ô“Î>Š1I$‘æÛlh ßR ¢Çb²\ûºý£¦7Tsî(N ºü„£!+ùÞX'[) ;G‡ñ™®ØAs³¯¥Žì®Ia¹­)h$ïcmŽúÞ<.^Ž·ÁKXœK£¸eVWRÖ£Xäry%=Ñ9ŠRTo©H†ÖÆé³há^186·?PjDN&v™1N(*Ë”8¯äSfz¢2ãïÑ«´–¬ØH'|£ì¼jé2µZ(ì› -îút…õE9/n€.ºŽP«ÉRv°ÔŒ¢Â;ÃáJzžQŽ~¢8àÌzŽ©aÆÙ®ÓÑ•”¤ø”I¸¸!FúÚþtxtÒúŸ39;2𠬤Œ¥g/(•pL¥äèÜ:ÄlORZ’u䥿RA>ðº>ÏáÝZ͉'©.N|ŠŸuòn ž™rEŠœuRÍ’PÉt”$ÈNÀž±ÛØ“º2î´£bÙ¨N0ÖIy×Ùl¸îÛt„çNʰæ:Á,q›¶†¤Ó¡‡.’ã‹+*$•(ܨîb¸T„ïÉ—æ ®)Ç^[‹V…J]Õõ˜Q]º@Û“Ù0ø•2½úÃjÝ¢£”ü6‰x Ý´¬jR^JÚÝ^V›&·æ^Br‚Bo©òdÉ jÛ¹=œš­>åN ýAÄ FÑJ‹I±[<”ê¡mw„ùÐZ³èfAnaÁÿWòŠŒÅÁ½À0€]¦ôãv$II Ô¦ŸñªŠQ´säuf„õÎ[êIÐZ-ʪŽi?rêG~¢›\òˆšw²%/$GuŸšq«Ñ ø¢,Ê AÊ,N¹ˆ nÈuTN°°ïzÓ%&÷ÐhcžQ®Á]Ä‚ï´BW½‰1;F]ËËʦ”FT’AÓ} ¹PÜÓû,^y Ð( )¶§©9?%)§èÁSçÞKšjOèJI Æ×Í´8ļÃËZV”’u;¤E¥|%ªÕtªxA|$ˆáE$Y¶Ù7)6ÃÄ/öתKcSl 8¦’>ˆ·/8OèSª¯r­Ñ7/w.!c]9ü#/Rp•ÃEC4±·ÚøðEü¡­6@JÉLÅ:Ö=vtÝš¯ŠåIF¶:ŒKWI·z“o¬DÇâ³Gñ9ýbJʵ.¤Ž¡'Hkâ™?æy~‚U‰jÆÅKoÈAþaøŽ^í^a=æ[éo(§ÖeZñ²Ö‡eëÎûCªZÖ‘©#î„¥<ŽÙÏ’rÈû¤Ë¹ de²PUªuÛ×Î5QklJi™ ÷¤#9I7ÕF)¦ÑM(+lX£Ö©RÒ•JÍK50 ¥žµ‚Ò¤¼c‹©Q›X¥ó.Rñ÷•›¦–(EÊ4ŸðEV&Äl$ N¼¤Gœv¯‹uQUg£z³‘ýzåúk´ø·Rü‘«B‹1Aiç þÚÖ‰ÿ6ê[«œ{ž´)ÜWˆl žvÄm®þ°×Å:•»)¨¯•þ`Ö'Ä$ŸßÏ*þp¥ñ>©¥²b“×?¿èe*¨Î>œ}Ço¨›ÍçË—y¤cÛ¢îA†Ë9]þˆ÷„*³­F£²IPKÁ ¨!U)[mãFm¥I H]œÔûº¹Žz˜(Ù«ò,lt7µ¾Ÿ(j×$Å¥£$)+#¼^QÏ©üD^:äÊ’ zfU†‡]}!¨·ÉOrÐÌÔºK*!¬×ԟ͉qú(û¢¶z’—R‹[Â#öQ2\¤T=D›m¶T«‚NšXÚ1ìpá™8pÀ¹\—PH`Nƒ¯×éÏì²vçÀ´×1[°šI Þ7ÿ1ê£ä—nÐëµìPê2š„À°ðØëñ†þ'Ô¿$J-­r4㸊kÂôãö¶¾-ã?âóÉîFН™&‹2¿ÃÁj'O±“Y%öÙJ6öXÈÓR׈ ä Tž__át"«’ņ‚ $}ö*žÍn?ˆ!=¼j¿;i÷BVžÇT¥X(¨ÙG^·…a+_ˆÛŠ$(!Jô´CöCî­QŒ¥JIîýyÃW-Mmð8Á Véæ"”¹ ¬”„¤Y;þpÚ5zF”—„üë~ŒÛˆTÒÙôc³œ«ò|Ã-L£*Õ$—@¸7JÉZNBŒÅÁºÀ0€½¦Çþ\1Ø œÅÿùŠ‹\ùMóe ™Í¶óŠ£švDŸ·~<>gX‰s²f©¡›¡)7úâØSIÎͧ…ôj<óµj•^IÉùZd ™QõeDj7:ˆàøŽL°pÅ…¤äê߃Ôè:lsïžU}«r]RCVðÔÞ Ã¿%wsRÌ¥¶ÞZÛ²óæ7± sÞ2„òaÍY'ܪ^7¯¸Þx°åÆçvÓKŸÞ®§‚ðL¸¬S©4y:i‡W!5<¶Þm €B™·¼ u!WÞ<Ü]wUXòf}¸ÚåE=ÝozúQÝ?‡tÿ6îÈÇÒôÝDq%Žœ®éû á¬9‚q†gåpË´dÓçšeÄ’¡2Ò•b’Hð¬s´úŽ«£æjV›â©×êƒMÒõmöÁǵ¤þâÁîáé%âI馋’f]k£øìUdæ*=rè#ñl²XáîµÝûúòkþQ†É9-Síÿs²Ì¸@²Q×A}üãë{6Ó£äÒW±Cº[y: €ç~ *4*Xå¸ñäAÊm‹¶l\1—jc‰4F¦Kí¹6Ø-”‚›ê:Z<ÿ‰NPér8óG¡ðèÆ]D"Ö¬ÛûLpꉅê,Õi‹•jZqÅc+9Ú;’±DxÿῊ˭ÆñeŽãçßþOCãß ÇÓ58=Iðrƒ#(V¢†‘—ª…‰¨”böÏpŠ—E>Ek6Cw#mÀ‰í‚%Â,Ã4é%$Ý[Bm¤ )‚ƛٕIÊ(™BsrÊ9i' c"Ñ',…ží¶ÁV ÛQÊÐûm!R[dùjH Q§/ºVc¤ZÃ.fqφÝI~jÆ&ÚîÖe–’I7B“e'×áJ4Ú:c$Õ§¢(@t€HØýúbjþײgFã^ù^‘%-ò‚¥™‘o½\ÂÊ™KªˆEôrã|«}TrNtº®ikg±ñŽ“ÒP„{šI}Uþ';öv ñ¤,.tn»‘áöshÃ’„­- ”è«n¢'åN´ÊÊ…Žé7é´¬pºDŠ}2Fjv]“‘ãkµ“smâ¡-ù+'6®¬ßÝÃu5tц'G‚ÞÞ•*ÃO|¶Ž¿F7Ú‘ó_Çõ+êÖH¥ÿ‹[û—›#Tpí Ý2(SÕ•¼.fp„}’1çñBjÎŽ“¯êºÕ,¸òG\¦­þ?B‡ÓdéÇe%ÔK9R±W[w×)#b#QtWá}OñVF©ïÅ'^WЀ‚®ìAÕ s1’ú3Õålé8+áfðû3õº`[R”㮡^$+Ú ;Áèú£æºÞ¯¨õ\pÉ&¥ÿúÝEÒôø>ì«ù½_àZS0"‹5Lš‘’zvfQÄËÌÍ2§%œ%ï •mŠ’@ ååëògSœíO…WÆÖýŸ&øº8b”qÊ?3^x{çñG.IJÆB»=&ûL2ô»å4Á% 7Ø~»GÒtóŽLQšá­_?yó½T28µ»ÝpˆKXÍu)%$\r°û£{ú˜9nÚt©EVM€ÖÇíŠUÈ»SÙ¸7I¡ÍªN›ìŸ“ökiÒkê­ 1ihùÙu½\ó÷'Ê»Zñisï±sôj3“`±(]x4V}¤÷¦ç_Ü ô¢¨Œ]Q“ÔÈÛ¥ÝüªµÆï“Q­I6Íbi”œ¶êÒ”sµã A6þóÝÁ)Ï rOÊL„o2P„¤ékÛaµà×µ1l´Èñ,Nºm’ò *Å›:”€’n-§ß ¬uóX8\Ì€.>‰çJ©•¾LÝ ²tJ„÷ÀäÆP AØ¢©.&ËJNBœÀÛét‰m äÂP¯R³ÐÄд¸ÊS˜dFb4&ñi ^ã« á ú¢¾àix0œÄY\Åï×Htš)ñ¡æJ”« NºS¸¡y—çÛ:ûÚt1›[.Ï¢=›æ„ç0ËÁ–Z´˜k+I°%¢þ§-ÉæI1‰× Þ„|ïí<œ¼nÄ$›Tf ÿéÎ|›ts÷Æk¸›ßœhöéÉ2<ãjT×ÐÖ¼LÖÌçm«DpF{^â!*äˆ7lŸ…ë5: ]º…"ur³iºB‘ÌssQŽnŸQÜŠÑÕÓçË‚]ðtË•qW7[vq5‡ægB[RP”r<XZçÏXãŸÃºW×üïóäí‡Ås©Z—Ó„&OãtSæ¥Ø˜©)¹’µ-Ų‚⊽ë,ÝI ")ü?¥“‹pz¯z׺üÌá×õQM'ÏçùòWKÖñ»ÖÛMI¥S¬ò7bɽü$~1´±à¹)Gís®~ò=|ÑŒ]ýž<Bî­ŽqÄûÒÎÌ™´–] 1"„àújÊR½oøþÒcµ½ªÝ½{/oÀÞêò5&þ¾9!ŒWŒƒ K¸º²ÚBRX¸J\7X·ør´Zèúdï³ÛôàÊ]oR¢£zV¿>Mx²ë(+zF}–®u"ÖøïR³GcöÊ›SY›p‘˜‹ØëånQmèÍŵBÚ$s£{Áh¸ÚÒ-0ÝOäLMO¬¡)ÙK¡²lF¶'¤sõ8QŠXÛ«Tt`ê%ÓåŽT¸ޱLî#¬¹X¯Îºëï*Í4€r¥7÷Rž@iô].‹ qãá/Íû‡YÔäê²z“•ß&ëà –?Û0A:žH³É=¶8‰Y†RJ$濌 z[ã N5äRÁ.SeZÊE2i7$#CétVè)qàA•˜·†›={Þåv°wßË¿”Â¥gPBÑ#;˜k˜¦Öûaw׆ÂÚ¦¬³Ã !u™ÖÜGö5¨¤èô¼lº™?'•/‚t+rƬ¯zaSîºü–ëËñ·= 1>¢›¶¶vC !ªHd´ÃZ’‚TŸ½€>^p©-›%¶Ë\O‹qzFNFµWyùipÃV-°›s:LJ§éÛ–(Ó|}WYŸ©QŒçi~Ћ/JŸv\-4©Å¦ùn[;zínÎOêK49÷%®Ý2q*÷”‚qoޱ^¥*¢ý=r2ý*¦Wá¤Nû£T ^&R~Q/¶aTº€¹YÑa°oh—$ž£Ó{–Uñb$D’‘Y2å6)Út¿OŒküLÒàáéOQãW÷¤qV”Úä¥g§$I aÛIæÀøw÷ ?úLï»64ß½˜TÌñu§¿}k&ê>qNíqÅŽ1QФ¸­/ÈSKi§Š‰TÛÅ{4Dùjœ÷É®$ϸ‰nè¶[ÎBB3_-½câƒ}î;çûC<à«»\~¶L¢bÌF„6å2¡YÈÓ&]¥2ŸBo_aqÓé:l÷A;wøšÃ¬Ë”$ô«ð+—žzdÌ.F¢â”n²âEÊRNñÛ¢”cÁÌÓrr|±¹ÉI”!-&P]õQîÅý=èR•x”KÏ:è £Õ-kÝ¥#àom®Kî,çkx’^œŠ³UÎNë#M#Dô¸7ûcO^UÚ“<õðÞŸÕy{>g¾_?uÑkÔR†%+—) ö†ºv²­ ×ðÈ_ Á6“Ww·[ühÍZ³9TPöòÚ– )(l'7;›oYG³~—£Ç>ËßÖÊâQ¬81›ÓÑÒ¢¬a¡”¯¤‘{87{!öØúKÓ_ÖÒS`ꔲ‚¤ŸCÌy‹ü"m¶h¶Kù2¸Z9põNà\Øý°hoîT¥e¡ó” ¢T­Ê™‡ÝJ¨TùCA©Å( Ñêzéü ÒoÊ‘5o† LòUdѧŠvÈY±‰W|2¥iÒDjƒóm—&)“ríÖã'-þ7½Y=íò‡™w;9ØZÚ…ÁA>½"’ucŒ¯ùuæIRR[s‹SWT ËÖD^¹ÓeWMȸ#MÁ‹M¬RHMæQâÖ„Ú*<ìúÙd߀xwþ)ßå—¨ì\Â>wv¥q³Þÿ)>AþíPüNTÎnâœ$*÷°$ïNš9rIÅÚS*ïûÀuÊ<7çú!ä[}ÖÈ·9‰Ì@ÞÀé¾vg~Q–šzam°ÒÒ—]9AQÑš ¼5¤×¸Ô[eÔuº¢¤0û- +EÍ8ŸÈç§-ã4û>Tiêv*HHÆØˆ£ÃPX\Eúù‡ëL±®'S`«ÖÜLG«»HIÕ$ bÌD¤æùNdŸ%!z¾z²j̧â°UT}Déb£úaú‚YfÉ”Üi<¨¡©æU¢Âýïë Î÷D a%+-6ÕjšúÕ'4V Õ'©ó$ûåö¢Êö@';£0<Åâ•r`¥ob_Wvs•Ü R- ´Ÿw‚䤣\–”g%h2ˆ©L6™º¤ßÎ¥ O…´òœC¨íòh¿ÓŠU±Åc:ÉuE e»ê[CvJO”7•ûê5¶ÆÅU¥ë» ¼#X^¬ä“ò!Xªº°-:èÃd“ÈKs^@âjÙÑÊ‹À lT`õ]Ñr“÷Æ&«¡aFqÅ'r•b<áú­m,“ÖÑc:üž&¤¸¤ KTYIX è4ÃRîÛFíwªmô»Í©–ÞÄ-CT“î‘¡übîÒ1ïMòHp‹!)>sÑM¤øK„ÉÔÉÖ)Töê @zv`!·§kÄIù£IKÓJÈs5ú»î›U&’7Ê— ôŒÞI{JmЕW*ê6M^xϽ6…ê>X4ß K•ªÊ›U§¿ûj¢c7bzÕìZªeTfÕËWU¬Ww-oÀ¶ë5D­*3³WI¸Êá¼ °ïe£UF+²?%VSwne@$‚‰T»´Í#’ùe$ZŒ¾²eÎågRM¶?¥O’+ÃüÅ4B›ïRBŠI ž~FMì>WÁgOm…¼¹‰å$SåRMÿ…pò·”&üø4I7~ T1DóŒ†e2Ë0 ÃhŽBäsˆõ7¡,›!þPU‰¸Ÿs0Úë1/4¬O+m F"­¥J ÔfÔ…a,ÜNRzF!®?ª³ŸNz’÷²K·Ð"¯w¾Äè¶Ç½:ÌߖJ¾ ’øSrÊ‘¬ƒ2…›—«‰¿;Å)^¤W¨¾Ë+™O°Í½&HRZ³¸>›g¯¤Z¸>ÑÉÓ¤)çM‰Èœ™ˆ¸;`¤“^ã”¶ÌÔëM)*K+9œRM² s'Îà|aEw:C‚M÷{“k…ïeö iSŒøB¬¥kÔr"e& rðŠ¿”ê'UÎL,íu8¯¾3îvfÚ{ƒ?:£ýrÿ@sŸ³XvýÅßäÈŸœ7=ó¤ÚçÄt…¾GÜä©p,Î΂T—ßë¤56¼„dã!ùÕNUÄw“+uBÛʺQh;äÍ;Ò#Ï4ÓuMÈ£#3^X¶¯‘F.•¢d¤ßÐ[+ e’®¶Þ*’tËSrTH@ QY%YmåxÕFøåZ$%~0"âVû’k0˜lƒ¦`5…'ÁJìúÙcý€ðíÿÚÝþYqŠ:£ÁÐ!Œ çj´ÿå«›Z ù&ÿÇ0ëG6MJÎi0rÚÇ6Ö5Ë1ɦÝIjS·Ë”¤빃#ù´DîÈ„§» Q¹¹ÛœCà…·bØÏߤæHPmBãH™»hÑ©.µLày§8QJÅtÖç§_œŸ™”v^^]KKA´¡I$¡9Žý KŠ«E´¨Ýåx!*î*Ãòk¬¹O§Ìa´â*ÄÜÓ62M…(,%;“ ±^Ÿ’–(Ö‡0ïøOÄ;DáÕOËbIyuÌJ5YmÍG ¹ )Õ$ŽFÅÄ^Ëpƒû!x1N§öl¢ñ•72äˈKÕ)wˆð4¥”€5(¶!Ë"}5ÛE¬ç¨t®áÝJfdVjÕY9i¶[X³,¾IH·%e¿œT`¨Oh8ï8s„©UéJ_1»2+¿ÞeY€Ï~i<¡é,xã#‚ºã†Žôš” Ts”½}c)KFI¸ª p¸ÙâUÓ—ëhÑ=YšÆùú‚¥Ö¥ _Ë•áKŠCUšå›7¨ÌâÎ$Qh3³!ª„ãRªuÄ„«M#>Öå³nÕ'~ç@Æœr™Ú™Ãú\ÚæiµB‡%'T.K7!«sAJ‡(mQrÇóQ‰x)‚(ÜRĆv­6ÎôÉZŒÓÍÙo½ß• ‘¥Ô@·¯œiØ‹x•ìªVáG0m~o‡2•ª%v‡&º‚äjn…¢j]ê!CesoHšŒ–‘)F\8Ÿ p ThXoPq"fª4©Y×*²Ó@¥¥<7)=é Â+Evdž‰8kƒT7XƲU|=¦iS2©’’˜SEÙwPtå#`,yoð¥lQ‚#ã,¬•+ˆï1MÁSØ4´ËeT©§ÔâÛ¸>"¢I²º^&Jž‘†O–*5`TÞ¶ SŠ7#õÒ_‚k“./*—`›„”ê"œ…¤ÍŸ„U×®R~¨)Ôù gçæÂ3–eÛœ‰æ£}d¾v\aܪEíà|cĺ-Õ«FJe·¨»U–J(Ûz©bÆÊ¼>ÕªeF LÛYáhõLgLÅ•Bòêª4ä‚É7$¬¥¥$Ôsj:ƒ¡ɪŠà¥Ä¼L—¥ñÜŒãË}É”>ä‹©ñ1 êÔ†žU¹’O‘¿(N:»Æ™ŽÒÓÆšöš­>Õƒ*äüôêZîå¶Â”žj¹·HžÅudvÓh¼ÃÂ\C”§Ô¸wWªÊÊš°Õ­%Ùd÷js½AFŠ(P¶÷·¬RÆŸÙeJ)¥àÔ¸‰†0³\9•Ÿ.‹‹š¦™Ó*j5rÉb`XÙHÉâB‰ê†Üù(¤¬SUözÛªï¦\R”s©$¨v… ]ÈÇI9P¦\ èT£–êNßT^Ö˜”œxC““eRèB4@7#k›~艶Í´“DOر±4û_×îcŒr¢¼1†ç'Ù Èfi'ÍgO¾+²ø4Ǫջ&ñ Ÿ_­8ü”åM²Œ”i2Tµ‚ Î©¸«á±/ Ýàu´iƒ€<^'/ä JÇrgü¸ŸND¼/Áªqbœ;/+Š(ïS^}²ë(t¤•¤\X p‘§ä×Ò¢ì,M¶„×±¯‰ujš@Z¯fÊn¡Ëx¥&¥ÜùàÕ”‹…!C˜ÛôÆ´·femÚ\XÎØÍé¬g)V\’vΫÁú ¢p’§ÅmH8¶§ÑI¦Ò … :ùIQ[„j@ùht‡ªÙql;ÞËž/†œMãf£·Ã–(¬ºÜП––œw¸™)eKFP) ¤ìEàùdôh©ºà×{$aº.)ãt…"»Jj~QL>¿eqJJV¤ ”ê’à@¢”Úú²cVÑwÚ[¤aÚSUPp›“sY™¥Í©×]V[÷d_žŸdTâë‚¥·KFÃÆžaŠ7ÝqVL¼Æ uVy§1Ô›+%ÁÓ”‰¢§£ò›îáî …˜U꾡 =7Crf±ˆ_x"bYÐ.’ŸSmoð…‹iExýìñäêšEÒÛ®:ÐpdQ*Mü*·"Fþq2k…îsßd©K€´:µ8””'0JîA×a$ŠRRÕ4èHRP² }ïâë&¼ ü6JHe*RUa¿ßc×6f\ Í·ª‰QD92ã*ò} ì¯þÀXw_ìnÿ,¸ÌëA€a;ûX§¸€Úãå®:øÌèçËÁÌÈ‚²È{íL%kocUCûçÅï •}ưåÉ”ÒZ!Ü/ÂtN¢&¨Î5m?ŒÃiSKRR#6—ÔDÝjËùmSq:±…8!H¥áJYH ZÓ`·¯¢l£ÌyD´£ó¿÷C´KÀœ]Â’ `J5nlNÑUD™¥b6VÒŠ[*p© Úæö7O%CNÚ^àúˆ$¬…ˆ8ÏG¯Rj33Ï©§•Œdª²‰l€Ý=•6ôHu&Õ¿ ÞUZ'ñûa UNÄs2u®Mµ4KòØ{ÙÜ¡ _kÖ½¦)É4èólÛÉDº’€R¥rûŸéŒ¥àæ¸é­9 Ô²´‹KÆÜ¦éèŽé[’k*ЃsnC¤NèÍNÕhÛ85[’¢ñk Vª/äe*2ó¸RNVÒ¡sa¾F¬µ%jÎÎxчe0†3š3uùy¹æpÌæEföiµŒå$û¹r’/×Î5´uz±J߸™Þ'`JŽ3ªáúÜÓîaö§HLÎJ6¬ò³é¸PR«kÞÞP´ô/âbåET½S†.Áx…XC½‹ñfEtÆTܪÛfQ¥‹-J¸¹U¾ÛBI-‡|q«-ñ%g€Ø’sâlK‹+/LÓ¨ò’oÑdåóªi7 ®Üɱ·!¦T§ä‡HâîÅu\s5Œ«ÕŒ.ŠÓò®J?JI.´Ó‰b’/Ô“ ´Û3Y£|œ¯ŒNáOʤMaAIS¥J%I±PËÐÂYÒ•òŠÎ!q4b ö§a ’›œn£8iÁÒ©‡Rï(„&ÊQÊÆ•#9çîÓG?—}—²©(%)¶÷ }‘’÷2Mö4‡BÆt—IÕW¸'Ê.×ÉϽ ¸Ip¶5)¹Q=nvøFM$ù*oÊ2”€¿žñŸ6Ѷpÿˆx×€0Î"žmK+Tºv”z”#HNKš)U#¤â^Ô\D­pþsÍw2Óowei¶_@ ;kkiÖ-e¤íl¹emÒoˆxýâ3ãœF¢E®j.ƒö*Êø2î~Ån¯V¬:—+Uyê‹©NF×6úœR@TM„/RÖÅRM¶AÊH<Á6ߟX”Åm$èK ýþ B2!UøEA«Ûm2¥WYXA± _ãiKoÂ!©yf2æ9ˆ°$ô&1“A´ûYÓx9ް쎪`wJ›©azƒÈšÏ" &dŸH²\nú_•¶òÔ„ü3|r×k/pž8áVâ~¯`Ú5}ézjæ üÝAô¦³´¤¥#œ¥Dõ1§tW©v»HÎÇ)À|A¦bL)IÆ!°ûSmT¦eÕ+mI¼ Y@›œ×Ò Š—r|ÐÝðCbÊ5z…‡qœÃòI˜[U¶T‡A)¬¿TS’ä]ñOLµÃ½¦qtÆ ˜gª^¯†ç›y‰Êt¼³h_v´,°.Jt·‡êo‚FÛL¯¥qžžÌö•ž£LÌÑ)Ô¨ui,niwñ'–žëq´%5ãÀz´ìã ¬¡ s){ØÝV¾Ç©·8—ÚÞŽu~I@%+Js®Ú›&4T´8ò<ÙÔƒ˜åÓMO¬>8-N¹dôêAZH6¼iN®‹NöÌÊ€gPF§0çû•2âýÏ¢–E¸ ‡¿âÝ#ÿœ¸Íkƒ C@Ï>Ö‰HãUzâÿ¿Þÿ¼`|ùk–rçÔ€ÎU¤‹ØïÓ9¦ÒxÅa(jui Ìr‹^*qÙœÜbûHŽ(@Œf¬Q”VˆÓJËäP±÷’zÎnL§wì%ªƒbí¼¼«õï¬gêkdwG»¼xU%t!ÔXžgõé Êé¶R”i¦Ð•%ÊI¥"ÆþzÀåïÀ)Á|±b“PfÄwˆ7Þrð7‘.R2º„¾B¢òlìu‡Ü.äÕ¶51Se"ÅÐH¶€Âr¤Kœ|™us“ Zò¥²«’7ýt+rØš§l¸g1h©U‰Ô§¯˜øÇOk-Ê,އ’•†¿ ® Ʀ´Ó#Ù¥ÉÎ.BaM:{Öï¢6Œ8ÛœSãD¦ê²á°¤¼”ÜmmǤñ÷+º:l«K{‰™‘‡ÞŒ£–FUW–RH¥DjHÛ¤;&ž¢’§³?*·ª»Ä‘°µ¹Þ'¹^™]×±TjÇ+£-‡‡N–…iÝÙÉç§[m6×U[•ï¬>X))i”ÀÓRéH^P”â:¨©ÓP))=Š›AîÔ´‚RlI·Hº\r¯rše÷$.£ÆÚ•u'rŸ/Hä”T_Оæ8ŠÌºÓe\ ´£‘W ²©1ÄUÙ•ó¹¾ÄÛxO,VÐû­Y‘\—KeJYÓÊ+ÔN†§»r±,¥X8S¯ÄÀþ‚y|¾ ›9I&ýßkË«L1>äÏ̲VA°*¼wÀ»œ›Dù6{¶»¤sꥡ;^5„hmr‡ÝfÈV],a¬TŸ‚Õ•ÓŽ¼ËIUÈÝ }qÏ‘Ó'¹%¿ÀSuu€T°žzÃŒâÖÉS½yMBW6® ›ò‰rM&i9_‘I¨° .¦ÖÐòøÃ”ã[|Ñ~èiU9`T;Ôß§1f˜ÞH½7B©ËhâI< õ#Á/"¾¨ÜÍU¼–—NuÚÀ§¬O±o-ºDŠkN¡µ •/UùQ¬"ã¶&¤ÉÉHZRM€À[”lД;¥¢ºªÊÔ365Gˆ+™Œ§öºíÄú\ImÛ%Zëm£ô›k’Cs­—.¤>õi\t¬G·0•Þ%Dþq÷¾¸o"ó«"/¹PƒE%%Ô\u·Ù|E´ö)3̨‡õÚðýO#OliS²ÉI³‰²wn +¤8Öè\’Õ34—Ý»a&èHúÆ‘ú›½–iQ ζЈÚ-Êm*÷m Ìœúx¯ruŠûÅ%É:íäJ;ÂFö*Þ5\h©/äòûsI@¡çÎ&•ì¸E®O¢}˜“—€øq?ï þQQŠ;‘¾Ã€öà‘bC޵–ZS¥+qÜ‘|Ëm+#Òê0üÙÒâ¬ä ²”I Ó6ÖÒ¶Œ$š¤Æjhט›•'c *wFyIKbã-Κfç“ðBŒ{›cö+ÊB´úõ‡$ïe4Þ×$ Œ‘pì_‘ñ Ç<à¾ÔüOn.|é?ëä¯U2bÁ!…5ñjÆ3ô]™úvÝ~/S¦°l ‹4>‘OA̳!4”ز-K“N ãof~Oy$¨´æ Å)«H*‹Ij Ó-6ûò/¡—-‘Kl€¿C°ä¤Ú”/²/½†œfŠ*yå[•˘©Në˜}]LvǦ”Wt¸9ÿÌqzÏW-~Oû}Hí¶”¬•€o¸ç¯“Ðí§¶¿/°…?fî®,6‰zئ·¯$)‰T:•'!ÌuÊâgôœÕìRÆ ©¢ªb’ás2¢—H7±„ºyKq£'/åýÈíR¦ÊÔDºöÝ$óåü<î›3qîjB¾NšÊPã+r«OXk¦—¸ÔÜSM?ìHV¨÷-¼äƒéh‚A±ô‹}6I*­±m¤ö…Kaù¬á.K©&À„ër‘Ì~˜ÃI=%çO†l^Ѝ7.ìÂ%³•kP&ÀíâÃ*“|§Å,Š ¥½rXVä•#SzIN-¥gB@;ùEö¥>Ô>Ÿ?ñ£‘ªM]ß—JÕu% *©‰i¢$í5÷%–ïpJFŠRRB~13í¾ßÝ•,s”x¢ª{M”÷êaä¥Ï qI!yÚÑÎà¤ûZäÏÒ’J}®¼æ0ÕQ¤!nKºÚVŸRH ·0H×”G¦›i?ßõ"X2A&ã¡¥PgV\ª** ?KÒßT5Ó·Á›MZ{ U|4üƒ­º±£e$)CÈsŠM%¢ïi¥ìÓ_‰”á¹á4––Ã…Ëeîƒg7ÕkÅ>šøð\—Ëo}W¿%2ŠûN‰`Â’õìP B¾€ƒÇ®™N”]}üª£`­Ðæé"^e¤¡ÒÚ\²V4I妑´àâö.›6.¦&jÚüWßà­-(¬¯8Î,qªM¾­Ç(†’àÞÚÐ'æØKÉM<ʾ›m¨…ê2É,iüÍ'÷¢×O9ÆÒn¾…ÖœqI K­aÂBR¢Iè:ê-§œcÛko…Ë¥›¦ãÉTÄ¥k2ë(I«)yóòˆí~âôeV• 7E›HdtM­ÒiÙZŒ;PCٟ˘ÝjGÔ øA,-¿”…ŽRãCaçÜuJ _˜Ñ?¨â—pÖé|÷î¿©>ŸE-fïP¬¶'M/úëGoÚ5ÇŽ)÷;¯ÞÍŽf3Nfbi•4‰”’Ð&êPÏNQ¿¥(¤ä¨Ë§êñgnÞãÉM¬% RìX7T hêQrùË\)‚*زiÙZ<º\SIn-à„ ary“=o[‹£Š–g§Æ¯ú'A›¨“†.}ɵîcIy7¦\nžaEÀ™´\/oXòãñŽ—$Ô`Ý¿§êufÿu)9J«—µ¥ìs'è³AÏà—Þ¸ÚûG¨ñ6¯”Ï&Ï#F‹2J³²¥”‘ zS^ ž7¤cäi°ÐRYPê /E‰FŸ?¿ß#Ÿ#̸°BF§¤RÂîÙ¤a­²\ÆÜ»­©I¾M9ŽQKí‡bŽ£ûÿƒan‡8Ô˜œ\£ˆds¬êØ‘½‰Ú:V•½ºœrÉéÁØÕ·HE¶h›¥n©Ž4àÑúæÖßÖ.‘q”j铜&ͨ%V°Zߪ*Rˆ©Mj-$Üëô•šOFŠí/ÑŽÍ"Ü ÃŸòbÃTB:£Á¼Ã@„»|4QÇŠ‚ˆ$:Û ÿ‘ø@ø9ó:8‰ÐŒ¤{í电ÀÕLåRI MÇHr‹¢2M*lŽHîÍÒoËÎ%ÄQ’–£É¼ðº5[ØšB*™‰Å1.oLçç5±<­wÄ2¬YñJR¥nߎ_áøÞ|9cm%_™¿a U5ßÉ -I©IJ•6]sVw/ÏøÔmj:,• ò<.£6HK>H6á'Ww\S_F{=>,maÃ?¶“î¿¡Å*)O·>P”jò¼<‡ˆý‘õؾh&ù¤|®Zî•-[° ²B Ž„ âœhÊÝ;@›$è”Üïtê!Ö­Û«¢E(°Š¤²æFfRê À丼RII23FNµn}ôtLyU“wΡ³(ãoB&3côQôtŽÌ“‹T|ŸÂ:\‹&=´ãw§_‹òj“¸‚œíÑÚ¢¶Û(P[$8IB­âR¿8Ÿª1soo±îaèr¬ÿÄ<–Þž¼x¢“2Õ”%WÛÄuÒ1’Ò=8¸í“ð¢²bYû'T‰¤e]²»b4$é¬rõ*ðÉ'Z{üC¥œ}hjöµîvœ]"®ú¡;Tuõ.béf›Tm¤½%ó¨ÐhRy £äúi¤ã‰+i¶¤«ô>žqM9äU®ZßxŠSÔëX¶§(Ü”´ä…=é7åÒ”äp…·P6¿„ƒhx%Ÿ,8ån3’wíÊhœ«Idš¤ÒªújŸö8*R{œÇ5´±WÒþˆû6•ÚûŠi½ Kan’@"ÚÏHq¦4äÎ8¦C²SÓs-¢aHq"]çe@¶@PüÞ†;©6™ò½Ž1–íiÝ4ùZ~âEB”òÔʦ[C’´Ë²÷%‚ŒªoÖö1)¯%z9ñ§/ü¦“^ÛÓ_JýM-º‹þÍ(Ç;2«Kˆm ç}Æ¿lcßHú ôÑnró-yööU™v§X™šVT—Þ‘{„ß]bR•šôø§ƒp½öª‘™³t'M’tWù@£Ý¨­ ›IðuŒMòóÒ¨v™9.0SRì!M¡m„÷BÙÒ®eËßì—éž%pÉÿ¼Û®yñô¤}_RmJ zZöãÉsY5C9X˜¬»NüŽT¢„“I-äZˆÐ@…k“çØV9bÇ}ÞµüÜÞ¯¹¿§·ètäõç,•é×ËÇàQqÍSxFF©<ãÒo÷Á´Ò–òߺ›&|gÅ.x´›W´¹h»¦ùi×ZŸ¬Êª¤ì©ö7—0Ýk¨Ïôn#jkMÙççx2E“ðNU‰>á†eÑ‘™.á&êSaJ:õ$˜ƒ±pm ÄŸ²6Ôš8Ç&¹U#½]9¥Le]Ès3€\r94écδsæVyýÅ!9•7ÞðES9ûþ¢jÎ)Ç5ðé Ò/!”äîÈyV¥Œ¾Q“ÝÜ>ÔÒÚNpâ-©Jòý°v¯æVj²8}—L—L‘¬U›É4ܳHö‰ÕåûPNÞ¦%mvÅ%.{ŸæM^ª¸‚„EÇΣùÍâ”&¼ƒ…í±Ç°Ú’ŽíІ£¹*qüηûýC±5¶0ösL¸†‰¨Ü84ÿ „½ÁB+†e¬>æ[~QÒ‡Lª¦L5¦-XZ¦ìºž’ªÓæŠAºY ý|áT¨K¶Û)æ{Éi³(ó=Ó‰Ù (uIæ>ØJk‡É“J†Ô爤¨¤_@y¦Œã%ì?.ë’”¥*$îLOÐÑ˳D©§ê3J”‘–reäœ[Šð y›ÜÃrUÚ‘r¹ÊÉ¿“óÉuI˜ÄtF\>òRèùžç^± /ÙPÒo™c 9’ÊÄ´3ýÚtÿ )wÑ+—/Ðpá™ ­15 ­œZ+k†Nû„£ N†ØÄÔ{j”Ýzx.oÈ8ÇHRð½Kº-µˆ(Ï/è s?d ËÜniy)*2óôçòÕØCH¾T¾ÑJºËÖ•:¢'%±%d€Ø¾{“¶±KÙ®E5˜!J lIzÀë†5/qhSóSi‘‘eO:mtd¤žk'ŸNpO"½riÚä»O»” ›L¥©ÚÝ*QÒswkpÝ>V¹î{àÕF/M¿D[¶bªaPRsß(ò‰IûƒirÄ¢„MÂqU/}ssû"êMrOb‹´Ì·E°¹Å4ÌÀœÙ‡†Öåáô†Ô—,N)}¦ýãd¹ŒhäsJßቹ?šÈì¾$GªR*”¤ ‡D¼ä‚¯‘ùM~  |OXJROæà;­ÝéR2\8 kñ Ü^ÚOÈ›“wf;㺠‘pwþ˜"üâ´¡§»¥¶n¥˜%¨•ÖÑq+B«:Ê^œ¦7a”<½Oé…OMhÕ©}¦?òR†ƒRÁÛC§Ø<¡Ü½ÉçÈÙ¤ï1Åt„›› ÿÁ†§*äM¨»LpÒ%C@ŒWE[ŠÐ÷©:ùÚ¥'ä…S|Œ|†•8¢œ[‡V«Ø‹ê}5…å¤ÿ˜œ!ݦ1=HªJI©ö%T–….EÁtu&×ùi“\«2¾NmµË¥l8T• kºmÈùÆ©²UÇBTáK!iJo¡´K¦KhËn‚·—‘ “~[ÂîÐí=ðJ§Së)e>Â¥éòû¥Ù /¿=l=7‰¹5QѪÆéWÓO|+:±]*ö÷;…X}W¬žèp˜`š ¹Å”•%?ERʾ¿w*å Ü•) nIöÊ•ùSFX:eS*Ò%Ê~¥§-ýʦ¹Ýø1Uªú€›#êsht¿ò#=Kª8á2uš\ãŸí Pú¤&çæ„¡µNÈÌ>â[oË.Yö@4³ª|Ç”WuƼ™*‹¤ ^®ß)Iµ„TXÖ¶˜¦“ Ê/¥Íô>±q®M"å¶Çî ¤¤“¶£7ëx>ÏoC’H&¦Ùã7#ùÙ¬UK¸H2ð« ­I•â“u#a€aíö\&%qt8×îÄs9•E):¨Ü€yƒã ½|¢Ž7Ví åÈ[c¸N‡6ûo¡ÆœZF©ZUb¬%*)KÁsWœb¿InbaIfzXÝNÛß¶ÿXM}M{ã‘RðQ:ö¤¥A<ïÏõÖÓäÂû8qÄ¡¥©6QµÂ‰ ÞQ½”åEB©’Qºl²²2„¼ õ]M·´&éS½"©N ä’ ‰½цԷBR’¢T@ 'á¯À®(r`ºÃÅ—eÖ•¥V-©$*ãakséh¥vRW*0²¶SN¶¶ÜA±JÒBóX%/rÞĦc(¹ '‘¶°¶Ñj™s!Wô÷(Õe©æ›4µ›© åöÅww:f±“k¶ES]ï²0…©7t\_‘æa§òì™_º èMÑ–÷#.ÿ»¢Sîà•#P]:†(¼“Sd¸ûÅWPMöÓì„çòšwTT2­×ÔVH']¦3ðeÞ¥´%.¨X‚T9ë¬J~—)—4\5Šj’)§aª´ì¹ºDļ›ªB½A¶°÷à¸bŸ(V–¨Ó&C*|Ô“Ùs%¹–ŠG[(^×X$Ú"~ÒäŠÄÂòæ¹Þ¯Fš¦XÐës4×ÉA —^޲¯uÁÎã¬Uí2‹}m7=2ܸ&_0q:¡´\R·F™%N—¥Ðn­ïîò]%hÉ2ÂQbYSS™ÆÒ—AåÔĹrt,ª*ü•SÕç.L¸·]&ù•¯ÃÈyD÷6sK*¶Æª'@oé´ô jõÁs†p¶+¯Ê¹1@Ãuz£M/#ŽÉÊ-Ô ù”ƒ÷À”\{•Žb<-‹0ô¢&kØn±HaÅdmÉéGJ•½Pó‡$è¥GQWûûÊD8á$•)C¢Žð+òg7xý6zfRa/˸P°okèGCS*i_’\ÃŒ»YS²èSI™o½[`h—öõ†žéÚOå2£àUÒŽô¤­~¨Õ?—d%äD‹M»Ui3fi:¢’/ä"O’×mÛ1^«½QY'ÂÊtCIÑ)NÃã)&éðOr“ä€^o§qÔÞ!¥V¤ü ZÖSd­v<€ÖðG~ÚÑ%rÓɵ8ä¬Ã2ïÜ4ê›9 ò'CÓHmVÁ&¶Gp4"Æú˜›‰2VÁ+8×nP×%$ü&&}©†]sÄûD%*;©K¿ÑK»ï4NžÀY½­¼Uû/•û!H ’•\(X§4h¡(´‰ R”P¥&ÂÁ#X¦Ðû‡ià›DkuŸH´í›-ýÇÒþ p¿ Ž”©_ä“u"þ„x£öEäX•âä£íæR¦ä˜p+` ¥·§•>ØRº0̵£ÏÝ̶u")prKjš°ËÝg#T^ÀB–¹D­{R yÞ&Ìí]!Lí,¦Ä›(“þÖŠJ_ˆ¬¨7‹H%/V¼ŠJRou¸ œõEB--3§ö]¯ÉKãWpenŠŠµÚFa¤² í,‹%ÆÕ¸#˜Ú+ðÍqÉ7\›?jŠdŸ pM;ƒô9E:ÜßõN£Y˜h'˜„¡'¢l/c½º˜©ºZ+*ŒU~Д+{F]Íðs(^“˜gü"{›äj)KC²Å)R‰Ì'_(¾ïr¢”la·Z Ò¥_å¿WÔTÒÃr.‚Ýw‰|4ɨ+¼·®U¿¬.[Ø€BotZüº|a;{bN &¼“)3HT¨I¬70Éuµi¢¸ûa)ïFª1NÙêÙ îâº$¯hÊ»HDõT³R¤¶‹&j} UÓ[ý¢ûGOnìêqå¬iˆj8ŸÔ±UHTýAõL¾P,›¨Ð`=<ãžM·GÚ“¶U…£»¿#¡p.äÚŠÍ•îüa}nÕìq·€–rê%AGbuÐEA;ÑKÙ‹ZìáRBy0 T¾c$öþ„v–ÃnX°·”LeòŽ£]ÌP76Ó^p™ŸÙ\ I6²@ ØzÂR÷/åµ~Ç¡{V1üúeX¾r‹(TÜûÁ)É—ÞîÁ<Õ¯ÃÔF°“gV5«9Ÿh®$Lñ;‰sX‘Ö;©T#Ù¤[æ–IMÿŒosëhY6ÕË2‘¡Y òÜOË2OÍhq ß2F¶Û”ìÅ·/™lu$%Å(ªÈP0ÞÌÓ)÷I?`™t( ºס:ÅØ‰‰‚§±µ—m£'±·î6¥r¥[§œJB›íÚûŒ¤‹fJìm·X\ ]‡I컌qE‹8r‡J®NIS§j¬ûT£nY·nln"ñ¶©Y¶,’îíDÞ×X«Ըɉèu äôÍ.N¨âeäœt–š°„íÎ/%ñûð<¹%ÜÑÉŠÀ:ŒÄkéíhçMS{ý ç9v'[Aà®íXü»ÊJ×Bƒê"£¦8NäìR–•+"¬½Ëê{“Мª<ìd,¶áE¼D\ÌFml®ëcay¼]á7;´'÷i*ʉ:uÒh#¯'Bìëè8®½?TÆU†©XfŠÒg*f²ÞMìO=Nš\òb¡îYxšnÙÖ$¸Õ¸‹:ÿ±†•¢`•„3H˜`e~˜¤‚⎠§-671}ɾÄe'Gâžsãêžr Ìùt MK›¡Ô”¥iPþåCžâáNŽi:“£_ZÊ€kÕ ·­̬ºø‰¶Ÿ¿•·¢nU—TàO¿›ÊÚÆ±^F»¥ mEI-‚¹m­¢Ý^Êî¤Y$%¨„ÛCÚTZJå(§åVÈðê.“JÍ#­LxYþÆ8sþk–þI0ŽÅÁ}ÂÛäªHí|:ã>£puŽ×ør*òAÕ¿0ãSŠoÚÔTH* ±6ð‹4"”ûUPÈ–ŽuÅšþÄX…¹¼!„†dh6ä¢fTïxåÍÜ¹ØØðˆŸ?)–I©¿”Õ@EÕmL [£:[¤$©)*ZH¶âÞý‰…GÃ.âŸhœÅ´(Ù 'ãØ–ù$¼…–’à%;9þ1yj—Di¹´6³áQAÇÖÐ*»²âå´?ÄŒM7‹qÝcN2Ô³õ¥Ì©–MÒ‹¿¤TånФÛnTQ²4)·œG‰E«í AúÃmí/q3 öõ¬{6ï ÷XãÝÜØàQJr€ µ&þZõ*‡$Úî.-µ§óOP?_¸ÆS¦´&åì8Ø^T”‹¦ÃKë¬JQ®Bž“T ÍÈß]b“ð‰¶—ï÷ÿƒŠHÜåQ×Ñ6òKt‹U»2e'çM¬,N±IÚcWݦd©DÙKºv˜—²ot¼AË›ÂTœ¶ ZŒËm!Àµ„éÈ©1wÂE+«JÉ«9@•’¢•yr{»G$ÔlzTYD¯Q}T n9Å&›¦„»¨ž›¨•¿º/qå¯/ôÅ·³Kz¤ ª¤Öb7±)ÔU¿'Óÿ±†¿û—-ü’bN¤_@0€~É(?¶E!\¾KGò®Ãðc•Ó³Í.(%@šïÛ±º­ÊÓuÞéÓX¹q²rE¾x!ªù¬Èħ¢rvùþÄZˆ. “¹÷LDÑN4™ ©ÇåÆGp€o¼sIÉ%é:{×ZmAk–*j•}ÑqȨ®õÏ‘§+i'2 ÇAê[àÍJ¥ÜŒ*¼’C%#7Ķýw‰õ瑼ыµäkÂT[WSs´W¨‹MùÕ–ât׊úß”'+àŽöí¤4·Ÿ.º¯.`ÒòÁNžËÆ¥Ô IÐí̦7íö-ɶ!æœdñØiqkDö¿I$ÊwÔì£äËè’ Ü±„”¹‰›Ó¤aªÂÈÌY²Få'œOum°–IrùfM|€–Eþ‘ØqJv¬O>êÅ–TC VúòøDzÑr –[I£¶‚‚ÚÇ0zÆÊoÊÑ-·¸ò ¬­jËÝ€y‘øÆsÉF‹"rl̪×6ókYV[øSÌÚ qrç‚—Ïɱ˲¬éYB,Øh!öÇbI\¤í˜yhÊáA6Zo{ïc µ}Å'øµ4L!îý ñØ Æ–ú„a–4Ktœ˜È©½k:ÐÚúÍM®Lå)?šÃÉñ% H¹Q„óv»ÐÖFÒCˆ®¸Or‘¡²¼âãšÃ½7BXJþp²H |¢^[bRíØÓUUåRJpOŠâ‘] ƒ’[—?¿ÐÊ]™ŸxJt÷Gë¼5à^¢“o÷ÿ´›kHµÊrÞÀõ騤éFÒ¶H +W„«-®rAè#]M«Ee]…Ü5P«}cùŸ¸¹Sñûäˆj A!i n“´eßKh]û±¦ 9B€¿^Pûâ÷DÉË…È·*€¯D›~v¢z«*R”–Œ °JAîó,mÎÿŒG©çb„§U_¨T$eKwÈUÁòŠSRwËñ©§JPd¬ÛOzðwÉiè±§2Ïx• ÁNâ7‰j/ܘ¤¡mä¹ÎE‰OÒ×פlåE8:"¹(ã®”w*96llDg‘ï»ÁqÆåòPó’Ž„8C¨RÆ9å*tÌÓ–¯)ª²¥ éZMÍí¼?QGÀûÒ¶€TP^ík²†°,ê´‰—b—UdäQmC”JÉIØÓ‹F>T—=ÚÎ÷5†§bî‹ÒfS8¥*Él܋澀Åz‹Šä§ûýÑ6˜…#3îj²-ð‹ÆÝ[-¨Æ·þå“ x”Hk€m¦žq­·°_/ ‘&´¡JRræÌ.m²¿^‘JOÉ¢J?1`ò“•( BˆµåÉ–é¡Ê)OʬœÉ÷‡?²!·|=±>˜p¸ðÏ¥[Šd°?ü¤Ä¨½€„¯šDÒÏzãz–Û•; 3ê—GÓϨ~ÝÐô²êºˆãá>~âðÅ>“*ºD霓—x´ÛÎ[R·#M—ÂéòáŽLʤÖ×°ºþŸ,ÒLJiË´ìGx„‚o{yrßNšäáž&¦×‡ÜBï9è@„úuBxß+`åaÝ-}NƒS¬?áõ°ôÝU Ns5‚€ sXqÁzcŒ+ƒdá†ü ÅMI-À%ÚŸ™pq¤ Äüohß§é#9öø::\$þe¥·÷\PÂr8r¼…Ònªlë š”P$“ôuæ^±¾|Ç*ýwL¡=*^ Ý™rØø¼úF.)-ËæÓfX§»?0ܬ».:ûËKM!òŠ€OÌDÜa9i$ÙQÆç5rø6^6Ñ鲸Ýú=*RFYŠ{H`%„Zê Š•ôÕš÷>‘ç|)O7O’wÝoõÕÿ‚Žw‹Ò¥øÖïêh.ÐB€Z®tØGt𦩞<—†4Œ0§ ˆx{_Ñ =*zl™Bi¥îŒ/ ¸¡”¿”~hÚ%ô‘±ú~ üšq*+R®-ᵤ9téÒiZ%Háæó%*p\ŸäW¡Û*0mhî’Ü)â†ÚÞ¢M´Ð¤‰ÃTn`”¡Ì—Ë“S¿—(öGŠ•¯Ðÿ ©ÆµÏÔäÈm)o(Àƒ™@ÛãåöǞ⮑áJõôî.á@º¬ã’¯c.§¦xåQáì×ÐÀïRI ‹z9"¹Ù¾vuIV‘’¸îf›u§’EÂÓ‘J±¿+GÇÕt’Éæ5_™íü µÖF>ÐÒ+´d=RšMÑü"Àéï è¬I¥÷/èy™q¾ö×ïe9ÃI@ÏŸ_-¶Ú°&r¬SO‹Ù†Vã{ŸÍÞ)a­ &)xàq¬5‘ !Í °çõ@°):l~‹| g”ç;æa¼±¬Mplü)ÂU|L¦NãO¸°´$ê R¾ˆ×O‘F\_ö:ºLQžE½ËüuB–£ÓP?%&éN]¾þp±ù _CÎ:³ã†8ê-çÅ{p£R[(JˆC‰·"MƱÍ[9;ù„Ì%%ÜÀÔ°6*!$ïdÕÝ3ÌvHÊTt†×¹kT‡èh?+ æ'ÇmN‘>汋NÙôÓ‡BÜ>¡ýÝ/üšbNµÁsÂí‚u¹7q³“iXT(—d$ åÝ1Ráä$Ñæä$‘½ñÉ*T¶l\=ÄÇ ÌU'X–Z§Ÿ“T´´À#÷¾câW©ßäë:?â»!7QNßÖ¬ïè:ØôýùÛTŠ)É—JFªÜ‘pOSÒ;;}ŽGµMr%IY+*B͉Aø±øC2ýò¥mïòÇAµÂ2Ó.çqÂs„î"•µlQß(mÅ‹$‹Z÷é¨R„mœ=ÅŸ’t š©òʬÑBî$!‘rE¹Þ:0fP‹í[;z~§ÒÆõ±xÃ9‰ðcRµ†š´£ä°ó( @dá)õ‡›¨ŽLu%²²u¾¶%ܶ9´w†å%Z›~¼£RG `:Ûî4êÉSN!@¡IU”‘äc6”“RV‹Œ¤Ÿzåç©•lUòå&¤ÔÏÊ 6·Pe²°’•yéÊ<ïƒÃ6.ŸÐËq¿Æß¹§ÅÞ<¹Vl.î¿Oà’’ 6æyuVÏ%ÂMƒ9‚R?µçåñl’Ñ•¶¼ÅA&ûiÒRöÝ÷ˆ åº4íð‚×Ô;R£=ÓˆY*@ÛNPÓWe»m*:³FÃòÏKÕ–¬?Sbš™$Ê)ĉe‹f#žñéÿnö‘ëóS´ŽRú”µ­ ”’M²Ø^úÛãxó›Ohò¤æíµÈ4 ëhÓ-µñi¯ßÊZí÷¾[kï7^ Ti¿’XkÒªövaMqEVµÎ ²<‡bÉ,ù³äos×á£ÕëòAaѾÕýM8 •ç½ô r×Î=}R<©BQvÁL)kÏ™w ƒ—ì‚_D.ÛÛYp§r«‹\^T ¶†Öí>@J©eïB.é¶—ÖòÆq^®™é,¸ò¥ê­£JÄtתO?L’vZP«æYuÌÊHèUÎ9¦Ó“íZ<üÊ2mÁè„ÒBft„©V)Ïú#+i‘>íðoU•*k‚´êCuÔü„ë®e$|âVNÖè#ÉŃ.?ˆO7oÉ4’üc&|Sø|1ßÌ›×Þj+eJФž@m7Ú=ž[I»bC­°Ù$¶éë7ÈœUL³‰ †Ü²Mɱ²~0û_({±é–Ÿ7C£m›Ü‘SR«C{TØÒYy$©M®Þè?ÑÛ8í“Û[HÜØ¯aœI¯Óª¯½M J[•)t)EV'~cêŽÅ88%-ÑèG¨ÂñÅM;F¿ñĵµÏq.Ûm¡†%RM™i"À_¬ašjn×.|þ¤û½•€«Þm»wûcžíÒ9Z‚6Þ V蘳[«ªeY (K ïRR<´$Ç™ñ|zž–X1-·ú¿Ã3bé³ú“½'F¹6ãSu]b]A*ZÖ­4¹"=æ´‰ØÎ¥„çiÊM*b¸ìáràN¨Ò/sñ2äÇ(¶›/6\2]ɳWx­?Á¶‹€O½Ïg¤œ†šs#„ä!%[|"W´¶Ñ9òU2“–ÆÛé)$è´¼±ì> ªËE)9¯¹XÍ[¶‹Ç;t}7Á ¹/‚éï4¶œnI”-µ‹)$ ;ÄZ@Ký’š{Tèb´woË9.­îÚ³|¾t}FI™em#ÊËY²F›j-ª9¢EQ(Dœº‚¹m΢¤õìW¸¶Ðs5Ò1%R§cJw(¸º¬@°¨‡œŽÊsi(¢ÞFƒMHâj“Í©@(JIGöÆã^°½;ûE¥Û¶O2¸)®5 ÿû¢ª(-60 hîÚšÄ9¥*R¿ËˆJ(Jqª¡*GÊ’éEc7+ ¯Š)ÕØ»âµFB8x¥[»«€5°ü¨UÐwã)¤àšƒènŸ;9+1ôDвOA{ýñ]ªZÊþò†½NŸ¡Õ„„íÜm_Á<9ô åµõ…UÉŒâá¯q‚¤…››(Qhª3]Š+}àwÒþí©Û¢e.Ž©Ö=5QE:œòQgëaÈ_M"]ËŽ XÓ·z©a옢¹ŠÛËj@?Z¡vF#ÿIkÉ%§°#c*e*ë'’ˆßþÔ À®è!Œ˜j9¤ê·;ÝCôÁp'ÕŠáY_ÛN_`ª”ùéû5‚ãá–åèmlpúbí&V¨É#Âæ`mõÃJ>IrŒ´@ÄÓ$~S¥MŒ‚¯™ otÁ÷U} ¾ß¨å=Å•eÀ¤6êÝ ¥GX®zk‘å.À).¹)óë :CƒnïDšLœíRiròî†%Ùñ»4£sè/¤L¤ÛíL¬pn). äpDª&jUIÇo«Ÿ ×Q\²¦áÖf°D³ãLÕÒ¡}R¤ô·S J6_rHiÙœÊi•%î§áT[©kÚ°UŨ³¦ü‹âãä—8‹öÜ “*°õF÷Ô¦dCN/V.øû¦Óç˜yÌ;72‡ÀÍìsªÌ¢: @—˜” šù]™Ô¦»Ä©MÜåRuÌ7û¢»¯f*=ºLi÷ÜBZÊõÏÎväëÉ:’‰©ÉÆå¥TÉMÉUò¡=Oœ5&Íît™dä–“|¦³Qž¨Le&\€®—ÚþQ6¼ŽJ ò*Vg‡­<—M«-w÷JÓo¾ ŠÚ'º> NÌ`T¬”ÚÊBŽ¡/$~0»£c“OÀ×µ`»dæé™×þô+‹È6ƒ‹&K”~iœ¦+O’»£ü¨¤Q§¡‡jór³$\JN®ág ;% ÜX•I.ßû*ûÅ©Ç[›g¸™eY ÔÃO¿OÁºceN—RŠ6Þ~=ÕÈìɱJÝΠ”4’.áøòóƒŠoÁPR—,ØC§ÉÉ¢{Ô ‰wø6¸QþÕ7Ðy˜–ŸÚ“äÓQ_3àT¤ßh(µ—9j¦È?Y…q¡z±ö59ÃÇ]%4:êäë`Þ…ò•êÁ"0˜ÀÖÌÕ.º•_Aíûa§.üqVÅûN(9©Õ¯øôoõÓFq®6aM`y»!.Ud2:¥|õÚšdÜx¢FBn›4%ÞSs)W‰©¤{ŽÓ¦9\U!¦r©À¶ÒIHÊRF‘[òG³_¿pi»Ÿ.”ªä n¸)øD¹€’ñ9ΖÚ)íƒJÉXu»ÖØ%Ec[l/µvoGÔˆGP@_ý’áýD¤ÚÁSwÿ–o³£È‹9™µÁ¾€Å¢¤r¸É­ ª¸¡(À*I°ÐÌk7id‹qVˆ7Mô×[óŒíUÆÅÓV}±¢¤ƒÝ‚´“Ôm ½Ñ²·±Çß.;ãrê$“pb[vKví˜J–àÜo–ÚĶZƒ— ·ÂøGb6å …S©¶Ò²­RrëX¡"¯b†);¢Ñ&âJY* ¿` ÖQB>.ž^MAä)·Ò¤] j ŽV…´dã CÉ $›‹ëqÕ•nöO«U\œÂ¦JaeO±üª:ÛÖ)Év¿ä¢¥.¡Zº •Öðí2[N…8ã}Ë€ZÖÐm•h–¢Ý6XTç òڈm¤„6¬-¼)Éû É9UëÁ ¨#lÛîLB·àKݱh¹±Ì«úó!´š¦ÍÞ•Ã:´÷*¼G\Ô¤¥6IðÃm>Ny¥\“–„ý†)AÕ²áß&Œ|÷oÇêg(7.E!zx~7ŠáèÒ«E…¬eqœåL¸2”+¯X¨J¼ 3§ô+ZPŽì&Å·‘È^ñJøaiò< wÔ¨ít~0õá“M¡õÏQ’i% ¾gúJó‰”ê)"å'Tˆjs[…XZÚ˜žëÓ"QMhÀkö˜žÛ~Y´ðw 'qG ®±/KTÙRS0ú PÙ ghqqPVWãì5RÁøÊ¥‡*í¥¹É‹+)Ô,n:" 'Ú¢Úe)X5­Û3ù¯mM>ÌÒVÊÊTT“b jlQÖ×#³“&f©2âP ]‡[j}"Ó^MÉi <§o`‹o›™ØïÝ©µ5ÊËÎ÷CΫ&p6Ú"鱩¨ñÉ^\9ˆÐ$íq¤dÕù «m¡hVbMÁÐY*ž˜-`X« Nšµûb’¡ªá!Fùsp@Õ;Dxäoî\#S”ß{%´¤<´BÔÚÛˆ^JNÝ¢TÔÿµT[q_Â8ÁBÔ1±1²’oCoÝ Ë­Ñp›©7ëõÅ ´.Ÿ4†jrï¸ …<ïú"\—‘Ÿ¾á5J”ÄýEÉ·V®õvÓ6Éä"$íì-¸¶GÃÞ"#^¶î6ë›ìÖ½ =íí ðâR“Àš'[ÅÔù·j/†•Li8Ð7ç}H·ŠãœW§«6œcÛòsõ•)CS÷úD®hÉÝØ…8àFo;Ú4ÄéñÉ$O¬ÒU$ò³%*4?1\âàô›J‡ ¥(§C²S±¼]ÙRm¡rª ÎAJy¼i(§É)à›¤êòˤɘHª k_W•amã/sL|Ñõ&Ö@˜d¨$Ñ0±P¸ ›ÐÿÐÁá™eàññ ‹‹›”Û”$ôr%&¾c%þò—)W„ëÎñY'TLÜ®’ÙXép©6"Àjñ“vôfÒJ¼‹iJLÚN™ñ….lVÓíHy*?H€ KlÒ+³Ly!=غA nUÝ Å[h콜 M}ºoiØ!ÿŽQ÷@S¦Þømêä× ÿÊU4°¾Ö4»å#GQúhœ›äÒJ/†ybª‘ís9¦‹î]ôìñÌn»ùïí휲‡‚($mmv„Õ½‘cSc4«ºƒ `¬ït ´‹¢Ÿ qjp6P¢rÚùˆ°”¸D§l£q®¶¼K)/¤¨ (ŒÂð®I7^ÃìeºuHçä=aA¦½@ñ—ªƒ0¤Å¢¹juA_(¡½KfëP®¡¿Qìš5Ýyàr«+)Û¬`߃™¥ü¦2‹®!—ÚÖìòî5OM¡µ².¹¥…©byÛoX¸»v%nFC†ÁràY ó‡R ŒY†W™”MÊAŒ«E¶«^L¦ÊH ÷´'­4´)»Þßl 7Àw*¶lü¥Õ*üQ IRZqSJžeIú ,£è?¨÷^Í ž¶o}»'$§;FUŒ‰Jà 1.ò“ÍÄ \z‹—ÅÔ$æÛàãŠHÏ åxÎÉQ­/L”ÛBûÞ…%T!ó‰÷›Ž¾±qZÑ K…v#Æ”êÚT£qÔˆm¾RäK.•­Ýˆ¾f˜âí]lÊ3›€H¾ŸͪcM·À´¨æÛKí×Ê+~x©Ú:ïbuÓ•ÇY :–Uq¹¦TÂZ %İN¥Õ…i” ÜÅc«¤tâÓÙ¬qýÚZøÑŠ~GK‘MEÖÙLºl€Êr¥®Ðæ•´ˆšMšaP Ÿ…¢òbÒ\ QEW¶Âíl¯(Âûõ'tªâæÄûT¨T³ªRíÜ^Æ5¯ ä’hZQÞJ­Ô§»H!'sâ.>YoŠNb½N¾±ÙJ˜':¶±ÚÛÀ6Ô•#lá6*¦a BýV©ƒ©X…µÝû-Fù$è¡á:ÛH¸? ¸MG…hôw"‰Â:_&ø €E"¤ê[h6ð.‚«å$w|òŸÆ6µÛfî]±îh󇫲øƒOÖ%(ò´V&WœIJ_ºkÂ’M·ßã´ŸƒŸÕîÚeú]G¬g{—“‚[RMÆ·Ú_=ì’¼ÙЛ…\%Wß]cu¤'ÝŽ° kH€Ô˜¤4߆e÷ Ë[>M–›K‚vÌq,½ÎÐé¬MSf˜¹³ê4#° €1~ÉPá‹ì5ÿü 3ËöO“tYÐ_nP’¯'j©˜¨d˜9¬€Â.mR£)®(¯UÒ”¬ yŽQ û‘‘ÞÒ#¾ëˆRW”Ù*ñ[{F2kÜ©®D©wRâBÚÆúB‹M]‚~ÃéqC•€;óôýKrÖø2W¡·¯84ôS‰ÎtâÛE%bwvĬø}ã~F#‡±÷[¶Eµb›HžäÙ[Sž q2ì¯Uyn9ÆRvè–ÿñ$¶ØtæÊvÐ[—Â7ˆê¹”'»Ro¥ˆ½¢[îL}º¤ìzFd:غ€^€ƒ¼+ODÇÿ. !Ò66òª-[bÒñJ”ânÂêuå—ô\q‰¨øF©†)õ7[¤ÔÊ}®X¤å­¨'Ý: cHÉ­zä×ÁII±µXͪVˆ’½±µ,òÛÎÖÆ¥ïdj„ßrØJ™dì8‰Ê‰RV„H÷‰`‹|áJÖý/B-F‰îM÷$ï÷È÷ݺ…© +Eµ7²}<â¸dJXÓwhbJk»ÌÒÖn.n­µ1wl©š¦üòOJî‘âû¡Ù[zHr\’ĮQrYáZíS Ö­Pê.Èϱ|“ tßC¿©‡‡ÍeF“nù Uª•ŒÄüô¦&¦.ºóŠº–£¹&3“½°îw¢!pÔ:^£:µ±·æÚle[€3N¹“[ðG¦¸ã­i áð¨l4ý| ƒu`“ûÿ|’ ””$÷y‰Ðïmãd™ŽØÇµ%¥J)PÒüÏ錩ZrÚ% !IºWx-3EÆ…!ÁŸC„>Û.ü"e¯T¤L©u‰7”‚Ò–YJÔ• EÇ+CJ¸*-Æ4EïÔMÔo{ýwƒ•bîkúçV©$o¿ÞŒ)æÐ‚¥«*@¹0mšåð1(âž}S"ù@°¹øˆqæÚ3“Œ¶˜íÉJ—bOEs‹–N„ξã)ÌÊ’ ¯3?¸o%ÕËL¥Ð2›ªÛsŒé-ÙQm+dŒÙ²ßKò¼;–íX µõ±Àó7‰ðrá-&+5IŠc4·êsnÉ0¢¦e껦”tºS{'~Q¥ê¼MÕVéY$¤$ë|¢×‰tˆƒî@A ô…V6Ôy#®c½šKM¬„4úL4¬]ÉðYJ)ÅØ; ¨~»ÆÑWÈ¡%|*RQ ÐZ4áY¢“JÚ%f9Ê\-…ÕÒ*—¹}Êø,ðMÎ'—ÛøT{}b]{šbM7kgÔXGX@fý’PÃwÛ4×ÜÔdàñµÎ]-ÌÂðyò‹î³h"Q€A)÷bçÂDÉÒÑÁ˜{›\sôŒ’÷%´ü‘ÜeÅ  d-×l*Rº7‚Iyt®ûc¶VÔ››§ºãhKŒl[u$) ípv¼røN"ž7׿æC]N ]î–ð9w…r® ÷ÙbUQŸQ.)kIØyÄ<’O´¨7à϶Î_7ÛEwÉ:ØÙà«%Â¥o ½ÞĤÿòØO:¢…-yFÅ<Ì6¯Èûå'´YÒår¥EM©N+C›—”tF²ã(Ý2ÀK©´–Ð äú#J®G¨ÊŹ,€•e¾À…ßR~è.ÊpQm] b|3W§JHÔf 3>’äºÒ´ç)œINúfñƲBr”b÷3LÝ6\QSªRáûþ 1><%jQüºÅ¶ßÙ9%&µ!IžµÔ ,rwŒå>×±÷J”VÅ*v`,©9rí~dÃõ.è¥|P…ÎN¬äMžÛD©Jô«—¦Ôœ¡BäXFͲ{YgH¡TV<ì”Ò™èiYÆßlm‹ å¶lº|7Úèž©e1dÇ[Æñ³ŽÈŠ©VÌÌ ä%J(J· ån¿ÑWÁO’§Çê7%‡j5‰§Œ¡˜[m•—pºµŽ>§"‚R›ý½ãé'‘µÑHëó¬üØ)Ôgßx>Ï,åIðÄ&vh¤(( Í÷þˆÉÎB…Ó´aéù°¼ÁH6Aº))k[Bäê¬T¤Ü‹«H«odÆNIÚ£-LN»{eH6±Ö›j›ÙUO^Äé tÄè}ä+»X²{Á`¯;óÞ4„¾iG×Þ]¦EÉe) `¶Sï6²nõÚ:mSð.ÞÙ8?ïþÆnáI-Ì’¢Fþ~°î¹ÙN/}±5‡jÎaÕUýñOCÑ™ºšiŒrK65“Òîù¹£oá²Ë­ÛòùS]ÚåVKJºF¤+”'¨Ú9n„·;6 q:ënž±=îŒÔÚ•??¿È¨LèKˆ /êsE·(¯©”T'=Ò´¨Ú×Ë ºZœâ¶…{LÒ—d›Xk¡6„òJ:b’”§û¯Àz^Znq`)j_DA>PÔ{š¶hÓrN%Ó”ç ö–]BŠB“t›q}}>øêXûtÓÑ´ Òí’†³åÊPTM…·–ñ¥X¦”–Èól)n(á½Ö¡±ôŒåì…T”³ ©—J›Sš ×/‘´sJ ?©”c*¨½~ý†Õ74Ó‚ëp“ôU{ÆnR↟ýÆ•97˜]Å‚î9ÃripFùlP™›Ér·R›ê£œ¢¶w*îS`åS®f¿„¡ŠSiZDEÎJû¿vJ—zq×…)ÀÝí ŠjMZ6Nü—TÙt6£¡I½Î^~dzéB-Fèµ]ðɨmÔ›¨ýzFþ4Šm?#á$¸œ÷JHÜ~˜|­’•è’ ;┹ È'xrjѪoË-8~3b¹Ae\¸Ï˜‚žÍ1´Úv}D‰;óOì$œ1‡M®¦Aúš€Ï"´xâÖc1äGXqÍ# Z¤_»bAþ,9}šB”iZ!´R„ ƒr@”f“å‘Ý»ð¡N¦b™¯kj0üƒŒHÔFdË>H²ÏÝ~W/ãrdÄ»i5ir×·ô=ƒæ†<­IÓj“öcœtv:íUuYjÕZRYh¨UnÉ}eWH¹ß*t¼gðž§’]®1oIø¡üg4f¡%)$í£»J`¬h”ë¥Æ¦=IVÏÖ¬Jé,%wI'S¡MÄÅ(AÇRÙ…Re J¬¢/oCÒ%bŠ%.åųH–[¹A&é$°Þ(ñFI­˜R‘+5‰)’êEÚzi¶Ôƒ¶R°?Ó5ê-B=Ó+”¨ôùöåpýNY3Im©‰W™ÊÒOœz]LbÕR³Òë±8)*UúœÅMJôË{\s¿ó•.O&V¾c @SZeH±Ðl}aÁÓM-ý£nã$”›Pj ñtYW3‰Jr“¯˜'ái¥–2åM¯ßŸÌõ>/Æ)¯1_¾>†˜ô„«ÀüÉN–J¯{Ÿ+Ç«éÆ©WguP‘H’!WeWóåÙ àžÄí£-RdC™û²m¡ÜÀ±A;E¬+‘B(-f Áú„_d_új(³Â”jsø†šÌÓiD³³HCÅGd~ÈÒ ä¬ß;Éïs¯ËÉU'8¥XÃTêt¶då¥å™,„+q·º±è|Ï#ƒ×±êöNYej¸öhãKOy“0AYH¾S¨<÷å¼y®5*Vpu¡·hò¥hd_šHÛNP¥“éüºù&U)™ZÄ‘§aúVîB…2O6D¶Ø·Dëh^”nÅ(/³Z$&FU  S ŸŽKìIÛ:„Í3 þ×X7åéꄛŕ©¿`— ÷é·Â;åk;ݲ†(âÇê=×¼×øôÚ[âÕi.nô”ŽTéoAõI,¯ð9ºô£½/ú5å¹…!Ò•ÚÄf°ÿLr%¶ŽÅ:m^–ìß91òóêi5$^wi]Àö½ì/kÛHðÞHÿšÆÜ~ן˃ݎ)Ká®Nz¾?š¹N–w([`€nT„ò·ôǼâ½xû6$Ò%=á.€ä'ï‰íOÀž%º<Š\ãy†P±dmÒÁ£)£È…æîAÜØBôíðSÄ«‘éY<œÍ n<#sÊ+±?XÓû‡¤¥‘/PmrËZ_ »% ¹Íðó‡Ú”µÉX#RJ,Ü8ö—Ofвâ‚h6•`ŒƒÿȘìë\žOËú}j~­Y£©¤•dV«Xozlâ”,Ùxg‡©Øž¹3Hqo"eÉ7"4S‚TyÜ_Õ>—ËWÕýÜ7ø3¿ é!Ôdxïmkï[kò7 ³Ç‡86‘B’bXV§QòAÇØJ‹a~ãbãK Ç—ÓáijäÍ‘¾Äê;~<ëÜôrIü; :|iw=½/Þb­+̹$ût—P[p‰&¯”‹\1¬zþÓÂJQ»_Wþç_ŠfÈœ}þˆÔK”P 7¨=:ë¼zj ðyn5äÊ)’™€-‹^ÄØëöF}»„“¤²Á}qQÆŸ$(ê×Ü-‰@£fR’O„ƒ©.:$ Ó$Ç>R2é3*–TòwȽ¯Ðêc±Æ°·[º:½8¬ ù³[eH¶@•#RGÙÖr¶›¥àRP››Ø›§ÎFucîå :mÉ1U|å[eÇ ÑŸSÓ`A}àjûŠÜþ:B¤¬[“l`ÍJ­Dªq¢¤Ÿ þºÂS\I'¾>ƒ­-—yÁ<ÏÍ€JJìMúu‚×?íþäÅoµ> 6¦T3 ¶Ê#}}"—o¸VÓðŒ4ûh ¦eÓnV7´ JöTt¸%ÐjSërs«q*Kx£5Š€P6T\2F3L¬99©> |u‰gq u÷Ó+4ùyêY!±saÓHÓ6ydwzö5êz™dœ¤Þ¹)P¤¨e*"ü†Â0v̽_ïCÒŠe3mZ²…ñ°¬½ây€y\DµòºÓ. ¤œ•¯ctù:½ÄìA/!ƒðÓÈ——D«RåÒY“h\€ãªÜ›ìÛ”sô,°FQ“î”·àíê³>¦IÅTR¥ø;]ž±[A)œÄØi•¤ßºfÊ}ok»ès¬_QóÙú´T›ã?Êà+úavÉ+aéÝŽÏ•Bú¯¡O"aÛ§ª{>×­q ß×ôÅ%!zHÏî|ÅÖ[ДâMÐï-D.é¦Wcðè‡ÄIî(ðù)sJSKêOrÝ}¦âŠH˪ÀºI½µúãª=d¸k~çCêòEsoßÉÉPÙ)²¶JöücŸmžw{5™oÞ*BÕ'E¿.f©~ó P±^:Å2cQåœ[Òˆ–p7,žñM§ÝÎáékó#ðžš–h§i¶¶é_:úž³ø¦ycx§ÃT^3À Z–™úíAÅTÁp’+ßSŠrGƒnÙ%¬d±ÆtKΰݔ±¤dp¬S‘XÖ…—]ÒnaÛ‚lOî~¬fHF3Ãá\ÖRvúáüÄK±2½ŸëaÅgÆt‚… ˆ_Ѹ'kÚþQ?0zIòTñCq#áªzê²ò•J-²–§¨êÌZI9ŽtH§(¹ä“IIir“Q‹|phXš±5_¬Ì×gÝCÓSJ-ÆÓ”(íáç“ÔnlÏ3õ'ß=² ÉB ˆHHØkëÛ½­x.iõŠÜæ—Â2‰Îó}òeXEܘrÚ\ô¼súýâùªŽ˜õ/Ap¿_¼èT.b÷dÓ1V¬Ò(¥bâ]õfPqÕ2;/~I¬ðy…㚯¯ÍÖ1NpêñõØév r ž8JÇ´˜ZþΫ;_x{÷M ½ÀGTàRqþNÖîåì~ÕDÓ÷)Ek\ÅÔfSY¡ÍR1²+½öv –måÌy^¸üÄÆ=¹,ÄU,IYUF¦†S2”û:Ãld#/%£o„k“;Êí Í’YtŠ ö!I) ¾é‡̯µ[ä³Ã¹¼;ˆdjò…=ü»Éu°‘ï`õ\|c« sáxgÃMêmÓu§É«”ïýÿ2^6Äó¸«ÌVª¶ÜtÛ-ì„'Ý@Œú>’&%xþ¿¾Mzž®]TÞW¦UeQAt(N‡!¸û6Ž•G$c!•)hßPoú"”’òWcKkúŒût§v•ûF×* ¼Bœy¿êLU;¯ÐkÛ%„>‘¦©åë JÁ[wFe*rLζµ¸ÒÊÝ-V ×oC dŠ{”S¹. ·âÊlþj‰D¢Š\˜™TÛ¨S™ŠÜ#.‡’mÊ:òõ QíŠÓÙÑŸqN•“{Eô‚h4@òi¬N[çꬄ€×HšŒtÍUGDÿË ‚?$ië"Ö yËAÜ—úŽ.ÔL«Ó\JQù#J~|îŸ_¬ qñÀG#½ˆÂHÜ' Ó®«÷‹¼58½¤/Qïå0Æ1–lœ3K7ê¥ÀåàW\F#õ–êø}–ZP)ïeI*O÷*Þã`²-6TbJ<½ mÍÉL*jŸ1|„¥é®â¨ipÉxÒmò™Y™YÆUŒÛÛ§Â/K“6¤ž¨• ÓóSˆe¢óËK@žJ&Àü/xýT=ÏNJ¢[aiçÀ¡.çHôw å™Â¼3“L‹}ÝF¤‘3;0=ãq¢/È+ÉÔš¡õ­jQºŽ÷‹ Mð%ZêMùA®Ø •ÞáJ9F §èƒC§FÉ Û•Œ5B@µ(’I7õ‚‚«‚ÃV&)Ïø S+]dû«O0D&´ gã5KqzRž‚$_ ›a‘›qéxÍi´a8Ó5Wl”j£o(vgΓ;/eé d„þ-TºW8I•” ?Á§LÊõ&Û:1Å$ns³so­çÞS‹Qº‰1¡wCI&úCh·É’má*·@`ûÊH Õ&ÀhHUõøA à ºyØó& BØì”Ãò¯¡ö-­áI6‰h¯©Í;GHK#ÉפÙBQl¦iБôþ#HšðDâŽ^¥¶§2-6é–³ ùö ë­%¶Ð·\VD• „ŽdŽp vÊT¼{õZ^‘ö)y4LO© ¸…m»–ÕJò½„KtjòF:¢½<@ª¡@7O¥ÿ{ëõƒxVÉŽ}mS+â=l›"Z—Ԥ˹þ\5‘¦Sʯc?—µg¤Ñ×›pY^¿áCY_ =kZCŽcµ %Ì5FW-àüawïHâ{Rjn zž’,e®]J åkéxM¢½_tVÕ¤edVÓÔÇý¦™2£Ý• )¥þi‚?&¼2Z‚ÒC !W Ê—¢Õy‘éB®ý'*”µÿ¸rjÝÒWðЏXóÓ3—&õÙšëã†$•eŽßï‰1–èß ð}€ê ’öÚ’jk³ÝQ×òŒ³Ì¼‚ÙH %aUõ"Ë#MnG+ÀL¸>}¸Oˆ'óµR8'Ýì=6¢)öÌ9Qwµ.Ú+“r2!WpkåõÆz¦e(¶‡%”[™K €R ­½ö‰îÚ* Þ†æ kÖúŸÂ&R¶…Å÷FRM–F»CnÉPÕ­m!N£8Ì Ò7ßQöD§ÜËQ’¦ÏFþÈ}"—JÁ©¥Ó¤äPäŠó¦Y”£5Šm{ w1¬ê*Ñ·Pœª'›7OK‡u½œ½­!MØJþÍa¹xò6©¡ù‡Ôº#ò**S>òBy®ÿ–†Ýi1§,ÙJU™7H7]£H·«%/6Z`´¥X’œ ¢«M6B’†¸:! w|ǤfÀïÈ7:ßXÑpmBMá¶üzUjeä:‹!Ai¸æ á0KvŽ¿Âlq‹±.)D¤Ó’‘–h½4´±b” ½ô¹ûŒ "“•ìæ¸úªÝTjŒ¡)i×tÙ eãküaÙ/E-¬.oxM€¶ ¸å è?ñ= cTaãVkÖ1zf95£]l¥)X-«T›À¥½˜F+»å=)Dòn˜’¡a. ò¤]£µðIÒ÷Þ,HP“–ù¶@—‚©y;} I,'†"(Ò3’S`ƒ‹«5ÀPQ;[Åñˆ-}qÆYjL¯ê Q‚ºHΆýÔ¹a˜¯ïЉ›ŽÍYZi—B,/‡Á„åÌd×±Ê;A(ŒZň·²sëË›B™ÏËÊ@$«ëutÄoÉÍÁÛxòx”䵞Y·©‹Ó¨Ú‡˜Åßchz:d»ò˜+…´ªÄJv~¦µ—&§–@¿‡Ê%$Þ˺à‰Åy9 ¬@ÅLSš¦ÍÏ‚‡åÛM’«â–£ê"x9ñNº  ²W&t÷G׫th¡ïòe+Īꈗ†):ÙÉ”²RÒ„‹‹Þ%Û1·wC´ê‚åŠÔ„¤‹&ãQ®ðmr[E|ÄËÏ>§n¥¢zÆW±wï°«‹Ž»Ú‹b´Õ$XaisX–B^¿8ô1ÇÐÜÔË ç[H'U$s´$¶TjN¤ŽôŽÌb_?S©âÙFø~‰ln¾…£;­’¶o=º\é¬6^}Ç«¢Mº¤Ê)ï‰D¼´²êÛÊ¥¶ QO"F¶åµórfÚO‚‹%dlÜúMÑ1’îÙ!¹·=‰æs…”’×¾ñQz oÀä¶aœjE¯aÊ- ¿rl›Šö„¬¬ÂÀtbh»—ÜDz^Uî»+} —#­Ó7ÞËH*ãŽR‰$T˜>ž4Ä^q­ŸEà:Bæ°FnÎX‘=S.?û†à&\;U«Ë ÒÆÚÂgäìSé?%b‚@Ò/ùvîˆh,¯ß,B® ”šÌS0‚4;ÄjÐÛuhË‚âàN°š§A¶®&Vb cÊ€R—â(%äs P;yÂF±—†zköIqÌ °myÓûH×'Ù+=ªhòù+ÌnoÎñ…#ž-ÓIMʼnëLO|™tü‚Šm”ïÎ-´´9^”PÙ!ÍSšá#.Ÿ\hð%zH¹Â Ä’ ):>‹•XÄ5ɬKg¥f,§/p~;F‰øGM‰JMómx°á&ÀܨØ}±#:+n !Áµ©$ }YAIñ!€7ò¸¿ý¨ÁÎ °ÀHm:˜¬€ÄX ÜÀÄyÓˆs^Õ*‹Q*G{zF ìÃ/7à¦7ðªå$z[x;¸3Ë/¼ô¦q.áJbÐB—OÝGƒ±pNË¡¡] ð€Mál¥ÉÛ+2øª~›†ÜáôÂ¥7.´²¤§*î/Ÿ®ŸŒ.F‘Ç×iÎñ j§J’ÊS4¦½Õ=s­õCã’dýj9ΆÜ {€!mDBOÁǸþú]Ƭ dÊ‹ëî›Æ3fY_ƒD@6!vp@¾Ð¹1Ž3´v~˜`—&å3 ¸¾Úé P§²H¿ÂñhNÙ@æ«é ¯©vªÑ“0óšÊ}í¬ K)lé}¥8Æž)§¡41M™e0UßçïI ×A ðÅÊié—##˜%Ák“öí5lŽêàBŸC@,­ ù!ÖªÂRÑj`̼l I‚»Œí©*à˜ØRB–R›`{ð1¢Ñk¹½1æÞîÖ•¤Pn•ñûá®J“pvvþcé Ä‹2“¯!‰ÖÒ¤¬è­7œk .¥%5hÝÛy Wl1£úÀâ-ÈŽZÄÐìYqE!*Z”,3,<¯´1&À$ÛMu0þàëÈBs•Øp»BMšGñý6OrZYàôÒÆP”¯Îiy!É.YÆâ¦C<•ºµ¨­J¶—<‰ŒÓ|œÝÝÏt£8@ÉpTúC–Ð4£äè¼&ÇÌKI±Eª¹ÝÁ ¸¿¤/ϤV9¥i›Bi£©IͰúÚq·uºNñ²Ù£ä’•xzÁ²­2D´ää»e¹iɆ[X²’Û¤zˆ>ñ}Äu«ÆIúÉÞ Ð*B\RA¿—3kè×1~1£Ð%§æ^µÒÚu$”ã¨âʼÍz¶õFe.X%é÷lžæÝætRMô)Qø'KÉwÂüeù7U[S*´«æêš®¶ˆ„û^ÍqJ•¾‰[§T˜K²“-9qùÛGDZ|IX<òØ_x§ièZcòÓo²X˜u¬é)s»Yå¤ Lv7˜X,vò BȾ¶¿¬²§b]UOÏM¶ØH÷os ¹.E{£†q=Š1{_gi%¶PGž¦9Ü»‘œ§º)»Ï)M’4iõÚ-,ŠûhQï€K‰ÕV$Ü{ц].âW6ˆ²Ó¨Zr•©'Kìc5=P£>Ûdžý®nkÎÆ)KÁ]ÎM$+¿l¨¨8 ù“´W¨©¦ì_´ x’´ÜóI´NšÓ*.¹0_k¼9Šo¾ûþ·_/´Ä—[’´ËXO´v’•{Ú§Q›»EŽkh®‚ÐÕË“(¾ÔÒàºed+¤X“ÄÒÕéÑ:A#¼¶b¢EÍÆ¤Æ‘Ù¤°l›ÝEGPµ¡½º¶uNŲ£Çš#=ïu‘âýòßø4)Ë|rÛãÖŽœM=žÿ„l@>íNÒ^à$B¶î[WÔêá¸>s¼^P&À(ÞЬã›÷BG°¸O‹˜ò<£UöL«å¶W¶ƒœ›€ ã%ÅÚÓð35.§+Jìߢ×:tÊ:œ’Îw¢kÞÞö¼räð´D¡Êº+”™„”©A'{ƒúÞ0ì’tÎu*BsÌ÷™s¨îéq ©. !öt%ßh¹)Zžˆ‰ƒmY6“çAg͈±­Éhp’|2e6Ÿ;8ú%[aÇÖM‚ 'ž£ŠRã’Ö7'Hº£S&ÓOöÁ,糡a+p¢é ×KõòŽ¥ŠTÚUF’íºÑ82ŒÁ ƒsáÞ-ÇÜjÐÈ–[Ó—g/xáÈ”ÞÚ“´LÒŠî`““튶×Ö0Õ}êMM²Ìì½ X6¸¸±LsáÏ<\\2úžŸ/M“Ó˦¼ £ã¼UERRÜÚÜ@N¨pÞÑk$¢ô/UÃR6ªwjh Tö×ԤƟÄ×"þ&Ó'«ŽhH²©‹òÞÑ_Ä¢£ž2òCŸã”û„¦Rœ‘a¹:ýP½}hO¨Iñf¯\â(®és*e ú-Þ3y$Ý>ëJ[Z Š=I¹9z¬ÓŠZfŠ’Ú·UÒl~Ó a}±›òÆÒõ<> 9 BÒ«{ÚÊŽˆGØ}«h\Ë]ês”eQ$Ø:i ¥{C­éghSâa û,È[‰»I-›¨ˆ¾þ±Í'vÂX2ÚKðI­bš®Y‰°†¼*B9 ícÓ¤ËÚ­?ùûˆª¾Îÿ·Þm4þ-by0”Ô)ë's™&ãU×?¿'EÎ1¹Á­“ÑÇ ”¢ë¥¯}l?[ƪ§Mú‘åpGœã}EÄgBO#©¹‚]Kð‰þ'Mv©ÄŒ[Yx0‡Ëaj os~Q=ù'öIYe=U{ÿ&±ø©ªTón¿=3“»æ÷Ø/é¥ÓÉO°èx2<’-*)ŠVj—?ÝØs*ŠÎÀþ1£ÅéʤDñ(˲{¯¨Ë²ê[¶ 9G¼Bys…Û±v¾“”IµÒÑTL³¢]Nw}ùG„*×Ë~±Ï)A˱síäoÜ=Dµïõ’”Åô¹»Ó¥§Ú^D¸P–íá;(ƒ°1ÍëB >þ]Eöµá~¥Õ;Š8¶ž”&m¥¬+T÷‰µùëG©{ú}IõRïUe«|l©#Gé€( ƒ·¬\zµìD³T©¡¹Þ8T€³tæÒ®Dí÷Å ¨±ESâŽ.©(¶—ý™=LG­6õÀ½~çQ_Ôˆ(؆«DUz`¿3,‡{µºU|§ÇM@¡‡#‡¨Ñ¢Á“$;ßÓ4išSrMß÷Ë"a 7R Roõ¤Å–Fô¼~ü¦N(­ Ž£¤%¥rpíëjŒ  T …]:L8ã’ýýCæœ;¤ÈM(((^Æä}cîŠIñçÏïï*8ŸuUWïúdi“N:Pà ¾–¹f»~›eÅ7KŸ¯Õr7p[Ê@¸ØöFðÆ×:.PðÕ2shKi-”c¸<ùÆ«\ãá’¥ C¥´‘p­à_Î%º¡Áy½66"Þ‘wà§ÆÎ»ØY _)\Sv/Èä\6Ôß,uŒÚѶ$¹G¼âN€€4.ÓÊ à6$'ÿåÒ?Æ&äOƒçÆ“k*Y'1yÄ.]œ2å¶-i§¬lÏž±¤/µ²%n$v›¹p®Àƒ}NÑ„*­‹d2‹ ©Ei E¯œß@Þðx¶ÊǤ÷lè4¼7KÀ´ƒWÆTög+ `¢¸u—\{’w)"†¶uskKÛêÎj©y5T77R†·ßëþˆöŸÔð{"¸Úb »h†€XúYy?)U—Г@Ki67‚“m0D¤¶bPÕÀ:Ciž¨Ýû>K˯‹TÀ”‚‡t<üA}SÊKáéK4QeƦfMnˆÐFSiö%°n‡\úE} ÷:¦ûU-צ±§²Ž~„”•¨«™Ó.‘ÀÝQç_ÍQa/.—&ÐÖ|¡N…Ͻ~Iéɇ{T[ãÚ ”LM3J~©)Tu¬¤ÍË/2\ºo¿;m¼sôy£Ÿz‹Ñóû|›õ]?£‘§.çîRª•ÞX-³¾[kmc¥ÃÁÏéÚ]X‚ÝÈÜ ëéod! ²†Œi,™òvä†6ã‰Gû9}þÆitêSŒæ“›ÿÏäöiÔ¼9M`©Z¬ÃK¹´Ï9p p Þ  |#Пr‡Q,QÝÅ­{¤yð„e“Ë-Ó¿ÃýÊWBÂS;’Ÿ¡È™7Sq‡[¥Nd _6§bHú£³§ÁŸU,y]ü«Æ®ëó×êru0Ã>K«oúp¡H¡À” ÐéöǪ±Þš<AÅÚ-pÍ:YÙ,%(3*9@Ê…ÉûclxÒ’ÑÑ‚)d‹¿'o¬T0óVq'´K¢~‘0ý>ZÖ=ðt£ºRO@ þ³œ§yƒÚ–\jò^Ó¯Ìç¼cL âugÙÜC­÷Á-­&àŒ©ÚÛÿDru4ò:<Þ¯ÿy£Yl¶ZŠ”Vt„rýe¤Û:¾Bªpåœ-\¨K±-9Pyõ-Åš-טŽY“™#Î>kâ°Ï¬}V¶ÔR×»µúiŸGÐÏúu‡#¤Ýþ[/õ/U&ªÇ+;ßÓdöGfÃA«ųi"߯ççÉÒÂ0Ú©Kuwöõ¿ÈìîRÝS¸ÇÍ%ÉDÕ'ü%-Z 6å2UU¥'7x¤¸ê{›ƒï Ž¶Žœ˜º—šOm6£|xNÿªg,e†Xâ²¾w+ê«ó¦s®(áÚsxÒm¹[}Œ(8Ø9 -¤“§™1í|?å†.kßôuÿ'‰ñ(§µì¿Ü×þ@— --66¸I61è,wÊ8(¥rd–©Œ÷©!'*ˆ¨juµþ¸j pŠìIíþ‡LÁÕz~áÍby zIʌԴü¹#2™SiÖÞG_„w⛎%ܼµø¦Šb¥½Ó*xá#-J¨P¤¥'šC–š ‘•ÁyN‡Cc´gÖkµ":Õä¢î•ARB²»˜¬onøGoLê˜F›Jw Rq{²ï ´Ì¤ë9GÏ>“óÍK.¤rcçú¬ÓYòt‰ý¹EÅý)wþ]¯ó>‡¥Ç‹&u¸¦¿¢î¯€å‘‡h4ôÉK9;Hš—ùD4â “ yIï’5 ]#ƒÄäòeÈå©©vý;xüÖά½>ÜqŠÜZ¿ÇŸÉ¸Í‡åçØ•b\ÒLÁšq3¹,ÂBòr¯¤âHØëhßáK‡t§ÝÛQÕ¹;{½q|{üG¤ŽJ‚«¶ïŠKÇÞCMIΗ Š•c¦£Â<Ì}~†9e®3 K¤–Ý/»þÃ=ùAêN(œ–CukvEn¡ ”¦Ê ÓM6´<ÿ>.÷Í“šK.(窽jCkQNKÛMy˜å¯,ã¿eR… Öñ Li VŒ¨û×oÊ"^ãÒ;/`ÓŸŽ´­Ò&6ÿˆr!¦o‰§ÁîÈ ‚çݩӟ€x…:ÿÖßñÈ:ç<èW¶:·VÖÚ%«‘Å*z¡Æ“y溵¢þF‰“u²d(XÜ|fÖ¹é7Z2\Z,°ýb«BªËÖ©–mÄ)HeòØRR 7ÐDeŸ§‡Q ðtàê'‚k&>Q³£‹|Eª!ú|¼ó³/­9w,Ù¸"ÄGžÛÇ›à 8‡W¯ÔôWÆúÌŠ¯ôF´pÖ%XaÉÄo5ïÿghö-{_äyŠåº”ÙÊ éÔ5'â!qãõBQv'äZ³k ùeÃ`4XӬɠXÿšŒ -[2ÂhSZø’JÆÛ›Úû"^7\98މQj¡)!3*ëZ¥Ö” “q­®:q›†ÇRâŒ7]«+ 9BbeJ¦—ûåKªæ9sÚË'Æô)dȡ鷢iQQϱÞ%éQ-Ê[±l!ÇÊ„’tV–èb£CNWGKáW æqU!ºÕTPðíÈmàÝæ'ܶ9'ÌÞ%÷OŽ ¡[: |9àÓ-wJ”¯Îh,ë“z«Ô^Âk*µ¢\ž à䳨aÚ“™•|äÍóXÞÇ] íc¥ì0öàÛ“ X ÕEïd‰’¿+‹KÀ•pÿƒd‹Ðª›[I¥~˜;4 ‘ÃŽ 8¥$Òk sLÊÉlŽ´Ãå|šx:(”b Tr«LkÆü›Çç™’“¹ÎðGº*¬RН—G%”Fe%ä¸ÙEÓ”r‹å&Œ7iÌ,P ƒÌ§—Ư#ȪWàÛ¸OÃúŽ6œ|34Ý2•"rÌTœ¯£mþr‡Sµº\ù5н¿ßýx:‹<7àå=”²¹JÍMÔœ}s9[røDú{ÛýþüµM ü†àÑQPÃu2¢5W¶+­ù8oòßæ7$ù€8.n&ªBÜý­¦¤—µ«_8*£áÃÕ@m{‰·/ÿzJ!¡³Ãn —Ze»ûÅ3«½¿íCôãÊ•pŠœSÁB]sœ6¯Ì¢y°T)5U%Ë ’½Á"ÿ\8§¦gt@n@©ÇIj<IJóA §ºøÊ~“iïðºEü æ´ø ¨~IºÜƒB]ö”0ÍôóøþRû=ÅJq’µÉL•XœŠRu¸о¦­“(¬µ;?/& ´¥÷Ò²+©µõõŠä¨3ÓY€¢Ì«–•i ²Ú4J…¾ØÑhèmUλêb…÷€­"Vø6 3ƒ+•ÚíbA–ĬšIZÝ]³Ù9ˆO[¾jÆ“jѯ‚†Ä\i ¡;ì4ÖðøXPg•(ò5iÔ8ÙÙ@õˆuìYçZò#]©È´Œˆfia´Ž`›ª!J´aÃh€&’—;Á™JJI7·-`ú“E¥G p1M?…ÔJ\¿…„Ì=ÕÇT3(“ÏSöC‚¥³«tH¹½þø´GÞgso8 7:/ qEV‹-T•L’%¦Po½˜ $´´gÜZ†oѧè‡iu2&¨4¼ÂÇcx¤Ñ,®ö·Xz\ é)‡¥æPëN)*alå RÒ8˜ôû(CfzYº°.lLE5"d‘¥¾âÜJ¬nÝÈ;ÃŽ™.š´uÌe¹6ëµvБ6µ&]·­ª[¶ÃÊ!mì¸mY¼)Dæ7æcR¤ý„‹È޶€éÒs3Ó¬ÈÊ2^˜ya¶Û@ÕJ0-±Úå2vSvQi-̶Ft%AY}H†½ØSNÙ DtòÒ Y-Y”’¡ÛQ¬ ï5žÐ¹Ü!2ðJ¦%îPá÷JËæ.JT)qgHxº¥+À’-¶ã¤BU»2ä$Cï´Â•”¾HºGO>„>¸N*‚ tÙkˆq2äÚU#¹ÜK¥9™lYsßÅÉ ìg)öªEK#n‘­®zuDæ¨Ì©G™y_¦3î~IRí݉ïæUßO\ªÿÂa.ßS•Ž5=>ÑÌÜôÒ+<¯Óê:ä«’…¶JêëCækUÀÓI•‹ßã d~äüÞã²Ø§´è_ËS«VÖqÅ(PoªÁ<‘ò.¬ü½E"¦Ú—˜*É8Ú…@ßEß¿™ljȹ)YQàÚ _eÜ–’$SÒÍŠE÷7q´8;ZB”9‹¨ !ÍûGmì ÒÏå]Êlzþ_4¨Éèߤ{Ž`€(8ª3p¿'­.hŠTgÌê»)ùAÔ/›s}"µgF®Õ=.9Þ% M€áÅ?Bwº ¼R¤–õ™üc'½˜÷mèeöÞeΩ!-­KP+MOÛ=ù4n•‰J”™Z©Óx—õ&^ô?,3>ذP*HÔmr%Vj­½žÁâ­§†qCTÜÙç W© “iÔÏ.š•,‹¨_™ÑKØéM­$j=žd ×øƒŠ%x_G­×™«4‰j;²à¡€ 3! ܤ “h˜îôgäçý¦jX’bZ•)ˆxMKÀë-m=(ÎUL‹ZÇÈD·­£<ÛääŠ'1ð‘mÌElÁ­R㪎5o Óo„6ÚE&”[CÌ¡ÅÖT¢@±Q§) »IXWÁˆäB…‰›lïcïzà¸W¢&Ï£ýºÙ»›‚ Ë,1Hš®â ZD»ó+ÈŸâÊŸ„&Æ‘Ýi ,Hb )N§¾Í:›LSMº¦ˆ3/(+:>ö¢%Õ&iÍÄóÒÛSWBд­:)+#ÈŽQ[2½ µ½` ±l\(í¨?t&4p¾(©?—3éO†ê ¶Nq‹JìÆm¹h×ÎD)G:G‡P@‚OØÊ£jÏCaÑ— ÒÂMí,¿”m£­ï‚Q) ™N·¸0Öª`LG…0Ý£^¨IMÉË¥€eJÈŦ¶"%¦Šm='°ìÞÅ/Ò¦ßT€ CÅD÷ˆ7±õòõ†„Õ=JM·Þ(Wà†·Ö&„rÞ?–ÿ,¤Š+Dµî»ÆY9Õ;47¤ŸÖSµ•ÏÖïƒ'쎳Ùÿÿ7'Å€Px\^.D¨ÝìN¶ßM"ê‚…7¢†›éhT ê\§R¨rg×g[“.ÊÉ8¤fÈv+nw€Äí—-šÏ0’éR2Ø‚V®ŠÄEeBp#*”­Oˆ}cs„‘©ò#‘†@„AõÀÕ8Ü¥' rÄËJÙÇÛ˜l±¿žÑ)ê̤è50ã3€6£•I#M´<£,“¡Rd5;[[Þüã™»bûŒ(cáô0p*•ZFÅà SÇXµz™5!(ùmN÷³¯Û Zþ#ÏXÒ+Ï®£û–±Ö¤WpÂï¶Yôíå¦Ñ§ðÊîÎcÅTÀعÜ;YrQÙ–›K½ä£Áh![xºètˆ”6Èœ#É­¢Ù€¹øÃ«V„Ÿ†=( Þp¥&ù¶ÅFÞ¬ÊRìM³jFao«»Ä”¦Â…¬§'Ëhíôº8%ñEÚñIþò5W¤»H¬GÖ‡Òî’ÆÅØÎΫ‡Qøªþ¤`|$(Üm#7­iß'¡?cª]NñJ ç~óašrÜÊÚìñ¡6Pæ¡Tâå;¨:ZnY™Å:¹{‹• ¨ØõDN/¶Ø²&öre”›¨kå~quœýÞ§\Osk\/} ’kLmÛ¤K“q´´‘bM­¼tAëbîüĺ#Éb¹*òÉð>…Û` a:L´Ô_¢ËÉu u *‚9鯡»Ù”oh àA«OÐêmT©s&^i BÊ ¯¾‡ÖÐ'@Áü\¬Ë&¦1 û“Jr^Ò}ܲC¶Ð›§è‰i I£œÔ'fª3®ÏN¸^™}YÝ]€Ì®{m •ìÆ¢¶¹= ¤4`¸†›.,è‘rzBà¦yãΚ†%©L ‚Ÿ9U}4Žw«0ÈÕ¶¸+U› :(+M„ û¢ÞÙè, >Ôþ ¦:Ú‚¬ÊR|ˆÆðz:-¯¨^)¶']<áƒgB’šál䜔ìògésr©O{(È%3 Mîo½¹Z%ŕܼšïq)ÅX©Ú·pYd 4Ëdê6¿ž°W[l׊µÞ$\ƒa¼bhãÜqŸfk%-¹âb\!V=Lc9+#$÷£LuiÊrxOñŽÑ+èd¥léÝŸ* †jR P•…ØóbáiµgD¶t„Ø-Ë¡Ähn‡ì€-æ®aÚ¦g b9Ç©‹”|½+6ÛyÒAú%?B¦¸)4Õ1®%bðµ7 a·š”“W|ìã‚ÝâÍôâ`Š ”½býlv†Ÿ‚v#d˜7ÈS4Ž=ζÞ—”ÌŠx/­¢fèR“‰Èn²¥&ÿÅIûcïLÁ̇Qp¥æU{Ü”›¹ÆY6‡¸®æ%ðŒÀÜë¬g±w¿åC‰j’aíð¶Ýý ¬+D\nn^$ü²¥Tšäp)Wú{nt†Û÷Mò6èp8s(\Û}ÏÆsd8jùsXòçx–’Ú.Qn£ag(-‹fR€Å'±Kž6OBA|¤•Ø‚<'—8ÛWcîª7,|òã~/–fàËyZUGðU};YS^=àhåûÆjRš=!û ¨ãêçèÓT“ê]Gèˆ:±p{P€)¸ˆ3pþºž´ùþ-Pó6¾•|®øG[ëâÈÙGÞ*Y›ˆÓ¢ù+ç-ÓerÔbf&Ýå¼"1–hÿ).Ts_išžqù•‡qY”»réé-üÆJR¿™¼¦ŠŠom”èSU°ŽÝQ—[Ÿ¡ÕS?*áJÒ‚9úcË»lÆR·I‘B’•>T­ocËÒ/µr„§Kdš ”ŒÀj¦3ÉQ6ʶç`”½â¹Õ@òŒ#òø'ÔÞ¹ùe°E€ÓQ M5¯#õ¨­˜5v“Ìi®¦-8¥÷ƒ•‰†T›)+<î";’'Ö¡j«2u²Éhq˜Þh¨ÒÕÚÊ2¡jW4îôKÊR$S’·ö‡n@ ½bñ¦Ýš[.AB’­FaÌÚѲi—5¸›.7™—™­‡ežCÁ2Í':¡V]~¨ëË$ÚCÍøF7 2Ó¹}<”+ZætŽym¯ÒÏRþÆÄ«Ê®b9Ķ{†å›ik¸ÑJY)ßd+êô‰GF%Hõ¬3`€0ÓO°¶m´âJ…€R t ƒ¸€—ØÍ¿gÅ3Œ…[»uI·¡"“':+¤BŒÙ@ÊE­Î5¦eó=ø+µÙCÄ4ÔF2ÖÉql™F¡U+³J“¥Ó¦ª¥%ÂÌ»eJJzè#<™±âJY$¢Ÿ¹X°e̚ĭՑÎÄsóÏÈIPjNÌËË2«+kÔn/Ë6)ÉSºßß%®‡¨œœ#?…5 /Ug"Ý”[iQRB–›XØÛ­Ž†‚“¤ìçž åkõþÄEÐçKbG8 0ì’ýÿÈ–hS€Ðrç á¾;àIšKiOwëXK â’m–˱]£\êeJAH xG0uôŽeµÓg )øî•)qd ¦Äëa¾)ÇØ¨¦ÒÝØÖ‰/SÀœC –Â¥Õò|ðCv²·B¨ÓáVW>šOÿ’ú¯?‘éu˜úhg\ÇOïðsùšdÊ~q¤‘¹M´ŽÅÿ)â4Ô­JÔq —õ¼ôÐ ¶‰¼¿ËÁjRw^ éÆx½*gß¾ðK.D‡ëO‘¹œU‹æEÔ&Iåe[KoêI –lŽˆ.µW]æž}ÓküâÈÂŒ$Ø’“vÙ¾ð㇬Upò*s’õi„.tJ„S™JŠt¾e_èùÇOÒFpõ%|ÖG¦éTñ¬;º#âJÃØªz‡ÛxK/ u"Á|ÿ¢#&Š]©Ù–L}’”.×¹ á (µ¯|Ã@< [tbãJÉná)‰ŠM.2ZžœTš4¨I?ê"§ìQÈ¿™Ò3[á]zM™u´ãO%Úƒ’»,+(Qþ)·×háÇñ y\’×Ë~¦ù~,tù·_qVÍSß—a¹×šuä­M ¼ª!^žé!Ô«ïWKúkýÌeÐä‹Q¾n¾äÁ8ƒIÓ8*S eWȼªÊmçÊ5‡U'.Ëß<þìÍãÉ,iß+ú&qž,|e9¤òPÚ6Y&ÙÊó;²ºnf¿=ohšzû‚£h}³—,žéɴ͆x+åú³:ZšiN%†•ãtî¤õ޾Ÿ§õ%ó=>ä–ßàIÄ´É:}W¹–’ž•B —œM–•ë{ùm›ƒ¨—ž1Œ¾TA*UÉ-Ùß Ð^^æ.)®ß$ªu&b±Sj#*¹™·o•¶‘™K>CíŒrå†×&ª²Ô©z|ÊæfšK²u8‹˜–˜Ú'.L1„²ÊUëî|Wæe¡ËÞ’ŽÚ¿Àð«W$&'(ÔÇç˜`„©ÆÐ=ë_.§{rˆÏÔôÝ4£.D¤ÿ_»ZüM!ðÌÙ­Æ<o±JæXqL©dBFºoqËÓÊ:¹|œ§÷¬<ê–,âR-­ô·œRéß‚e¢e LÍ>âeÐ¥­¦–þš¡ ¨ªüô5Ž'HÕt÷Áu/D›fƒò¾RdûÐÇ}¿ÎZöú£U‰¨÷#OE¼}×£h¦ÒؤQeç]£;RœšIq´”Û¾ç©;ÇLaq¹+gƒ—,ú¬ÒÃöB:»åý ’òÍânöžíS'V‚¶&šl¥%CP•1–ETLòÏ¡¬‘ÉßgM¯©¤©$™Ë¤\([ÝåoXåŸ{í§µäõ¯ìh Sqq¾ê“Ó§ðñ>¬<£€Ø €>iñâšÍŒXŠ”ÊÖZ–Ÿy¤j¬¡f×·;BnŽ\’©QªJ ‡ Nºwq [2OnÈ«• Ùn.c6šº2i§féÁ ½.‡Q®ÍÔó&-¥*tæO„¨;íWÅz|¹ãŽ8´û–ýªö{?ê1ôþ£ÈéQ¸c ¢±$ÜĶÅtškˆ}™ ó“E ü±hó+RVÙ &çÅxó:,0é£fÄ妪¯æ·ÝKÙèõºŒ²ê†‰>nëU¯È×±´ªj|>£©œKF™z–‰ŸhJæìóÊ.’ iPºî6Ú=ŽrÃÔÍK]ÔÖ–•y®;ªÇëtøë"¸ÝïŸ÷4´éNr¢l2ÛíÚ=¶÷þÇ…Ú騆ÒVà9 À×K´6úà[ð5§BSï’­%*¶°“~Ä¥½rË $úe1e.aå´‰¶”¥2¤(oËœV9¨à^œÔ›á›W±äÌÝBµD’D‹ÇæÕÙVÀTÊAЩ_J:³õ6ÜQÕÕuw7Ž5Vhä’´  ÃAåmûž|šî¡ê$ײVegTÚî¥Òžj±½£,ØÜàá(× Þ,‘ÉÍ3pǘÊOQj²i‘rY3•ÅU[®‘*o&B½üãÏè¾.žpœ¥¨Ç·õ³Ôë:õŸ±×2îý(¡N©9&—Z¥T]BÒD«–Uù—8õj/ÉäzfW…*…²E"¢£¿õ£›yé ´ òf§ŸJH¾È¿Ñ µT5‹cŸ“5#u·A©)C[5ÚßT;\À“´L ÈÖ¨ÙJ«tj«O˸JÌ›"ܽجsí’lÖŠjqäÝhüQÂTÉy¤ÓðäÃSN­É…#0³”‘™ŒÉæàõŽøõx£i.OCüÃ8´ÖÙË“»l¡ÒáP sÂtUöó篜y¯nÏóbÒBTs¦ê)<½XwE> ̈¥Ñ«tÉö;ùŒ¡JÐUüÉ7mËžŸŒpu}#Ï8eÆêQ§“Ðé:¥Ž3Ñ\d¯ñE}>—3=.–¦T^m#BÔºÈQ<Á¶±Ú§¶×“—±5^ Ö…‡ê \þó^¾ºCrò‚VÈÊ¥Í\Ðj‰ÛÃìniöDK"ö§¾š|†‹S°;û—'þÌ Qö‹­ˆÑ‡TµÈTYRNÆUvf,‰r‹PWfÕ‚ø/@ ÊSiEÕM1Rö·Ráʇ™))(#s¼uàë#öÅîά}W¥Å{”Ø’n–æ œ˜¥JÌ5$û…ÆÛ|ÝhR õü"'(¹ºZ9³d‚›QZ+”¢°¥6Úl.lc84Õ™;”R&ß‚qEN…/KÄT‰™ÁOž EË:så¶U_q éG[Ðõ2K&%Ý×g¯Òu˜a,_ÊíÇ•9ú½6~_Ô*l!SFm,´¥!ÂãÉp)'‘IH?åê> ÝŽpŒùíír§ù8¾*”£.Ýnþ¾G›]}uê=D`“$Ãí-¥3ü/z¥«ž™Ät/‡§“ŸÚq•_ô1}jõ#7²šüí¢ N¥…0{ô·¸s‰¨¼ÂÚRŠT¹W3 %e±}E¹¼WWÒeÏš3î]‹Ùo_½‹Qß™û½oèi_’•×^I8R¸«û H¹oªÑê¹.iÿcÊ–Ý¥Àµa\BÒ]µ¤e‘ÜxU—¾I¤kèHR,¤wŽÛKíëÅÞš9»n]ÌÙx]T§SêÓÒó³?&¢zEÙF§‚I2Î, +Mm`Aõ1æ|G òÆ. »¶V×½xü<‡Ãrc„œ&ë¹5~Ú6ZeR‰†hÕ©IªäŽ$}ùÃRÙYQ’÷ºˆ÷ÎÛGŸ›~®x§8$Ýñ|sýB±ôМg%6Ò׎K4ã,+%0œJZ›E.^E™jjl©sâ+ ¨ad¦ý 1Ïþ]ÕOðÒû=Òm¿<%íïfϬÁ¼ëíTU/Xô–1À²ÞÔK fn°* ¥Ö–UMRÚ7Xµ³dwq®‘–^‡­ÉʇkÿåOñqýJ‡]Óc•¯2¿»\þg ©­õÏλÞûB”ò®ø£ski˜ëñªƒQUZJË*”¾þ}쎅ÞÁC*­â'[y}ñJTaÛiÉ Š)T™y뜒˜•iO*É-•%7'@ ££¦—Í¿'OKJn>é–¸šQì?ÂÙZ UL·P˜¨ÀËNØF[›.NžQ¤—f×Í›e~—N£.ofÓÃŒC'?BbIÙ¤77,ÒÒµûÀlG[ÓHÉQùoÇ~“w’+ä—•ã÷ä¸Ä•ÙJ%9É©§Óœƒ‘¤®êZ­ki÷Æ’’Gú õ™Tbµ«g ø5)Áu¨ø‰æNçí´y¹R|©F4»O^~Æã!8s¿¥ÜvY'®ÏÓÎÌJ‘éˆF¡óµ*mÇìQkf5Mï·Š #*ù ›)Å ,©VµÈ‹‹£5ÓäˆBQdxµɹßÎ3}Ì„­5z2\MÖRBiñ(-âŠo»Dú€zUSU ¶ir‹´ŒÎ;çn_Œ Ï›.ÒvôZ¢Ÿƒ”ÈK˜¦e*"ë*e@“oâíï’Ÿ§$ÜŸÐ’†pjÅÄhÒîýˆ?õ!]©èlIá•dÅÃ^}Û‡[tË¥á1|œ¶ JaŸ+ÕviC[k ºå‘ÍìÂ(”)É Õ7 ¼Sd¥Á`zê¡kÃç†[ìѯש³Tº¯²Ï°œÊQ-9k%W؇§X[zzfrÅRmù"‚±›@|íúé¬)7BMð;+k’Br¤êF¤Âí^Kîðz'…ØN‹‚è²uªµ5šž&} ê=¨fnž’JR³‘º¾§m»7·[6§qÆ#Ró Ä·}’–“aå¶Ñ¥ KÁË|Hmyñoø´þˆ„¶;q ˆ*›Iæ>m;}PÃW£'b k2‹ó=Ú`kA³-cŠê\ºÞeÑ{åS)" ±wQMÄ|5‡8£Du3,Sq(Ï+;/áïT‰W[ëxÍÁ0œT–Ï2YþñäL!MÌ6áiä[ÜP;zi¤8ñÜù9]Óe*YÚë±JAØé}oëÉ 6Óg[ìù„¨³4¿Ë|Y-òƒ]én— áð;—E:±ÒúH_i÷~dWj¦Î®î9­ÝÊyvE€m¦…€Ãì‹íC½PÚq¶!×÷ØÔZÝÚL4ƒŽ œg]P .3§ûÈ?„*sä?-+zxå¼;á:}¨˜àÆõ´è¤Ê,^ú˦LIÓ²%k qšºV0¡É¶ã‚ÍT¥ uƒÈÀí݃ižmÆz¡„±DöŸuO;,°¶ÞGš#EyFQ¾T©•©R.¤¯0 ýcFùd6ÓmŸpd®0Æ/|²ã‚‹Mo¾›R ‹Ëú(û"$ÔÝÂäép@»‹^–DŽ•b™&È m¶3Êç¬ZŠKHÖSoLdã\JTÊnÞÜ´†“÷i¾ ~Yb;êŠõÓa ƒµ 1*Æx“[Ô\"Å>êvø(}†˜ aˆSãº^ö-#ôAæˆrl[Ø®f£"å2½'+Su9]aæSâO;PÚ+»ÁÁ¸×ƒ$°–$eêJ–夒ô Y¹acÞjûÛ¤d£ü¨Îf ”èB‰.3tò¼iôd&·ÒÓd©ÌéÒä'[òzŸ²v¶(µh¸¦a÷fèâ~«?òt®©BÔ¼©Aé›U-Vä4^2¹Ëç›-cISbÅ/ 5tþ[>JNéajz“ÊZÔŠNwûödð’f}‹g½ó«ÙV4?!´Ÿ,?Ó§b?çðãÐ î=‘{k×ÔýpÕ¯æØªîƒØpvP?,'‰ÊBm*vé Jõb”áàmún{2iئ`>¿uSŒYô;óŠnØ>Æ’²®u²³®HT¥Ão¤]% ð:‘ÌZr¼Sr,¹3’}ÎÞÇ)«¼Ã ¯@âÒ4Ü‹êo#<²[.1T³r˜¦¤Ä¶rÓNäFbIHÐé8ß&¦ÑÍð̯/I ­+tÝ**¦Íj›*ÞìsËGs©}b~Ç ¬Êx{]Ÿ[vaÙÆÚB®5RQu o Z~¿XRäêÅu³Ñ±&¡ó£µJòû‰I±½Aß¼Á{92ãRvh-"ÎH[Ò4anŸ‚÷xZ¬mפfÓ\±MT´GZ®á¼ÉîÜP.7}H6>±2¤®ÇÚíÍÌ»31uøµÒý6·ëÐBs¾æm9l“TÃõú³‰¼?V•'+>Õ$ò;ã°È‘›~WûbU†L;ºp¶& aú°)IÌ ›º[®š|‰á~̓[«‡WI¥ON¡»…ª]…,'Ô¦ðâ™/»ªˆs,¿*òÚ}—Zq%hq*Ìa'A(5.ÚTT2¨Ø\çõBoÜzŠÙfíYÙÜ4ºtáKªdf—qZ©Wæ:tµL¨Í¿–D$w«jÁV¾·Ûáóø'áÀW”k"€[ÈJ¯±E&®avzF¦êÞ;„’l~ÈÑ7º#Zâ䘦&…%:ØôßA%*:}G a)nÖ&¤'UªÉ»éÆÔr%J·…>V1(ÑÌ2éÈCÕ‹l,-¼0WÀìšÖÓÁiUˆØŽ°˜—±Àø€È—Çõ”%÷ËÛhIŒ[lÆq—s¢™a6Ì«Ù[ÑÚrùy;ö»|7 0P™Dd‹Ÿ´Ÿ®6†‘©b}J´Š°2r}D7Êc<9£P$­95YœNw“&½%G;Ì~šeh¬â¾•Âø‘¹Y7ÜvRe0ÁrÙ‚N–>–†¸®Íc:À$÷Fާkô€<œÇ´RÂñ}:ivÌ©,‹WçYZ^3–žˆ÷íµ¤(ës·Qh‡.ÕFO[g^ìì¥3…ª¾-šÌ€ÐàŸ'Bm¥Fè7¬[{ýð´`ù|Š$Äþ%œ›zo¼îÙ§Êè²?8¨éoˆ„ìq’ò;Äœ=I¥KÒêÔ'ߘ¦TÙ.´—Dz-¡<÷û9ï #t‘© 7åh£7ì„ß­à¸5=ºN ’I¹› WIÚ&ÂUË8úÞNU”gMΠsˆ»Ù‹«Øý92ŽÌ÷ÓK%¶K™F„’ ÄvÚÙQí#âÓÕJ€u×,Ò‘†ÀÑ´tHåçÖñ-¶g9w=ªp˜æ:ì ´K~ÁÛ °W=§hšom_¹1„ë²ü?•Ç/JѦ¦Õ$ÛÝàÌ]l»ÛôEvZ±úK”ÊE*èñ$6Ñ*Ñ.·ý ¡Â<:ÛqÊ)ºA[%M·i ¥å©K–p)’~ˆ&Äy(vé®?3§:“Pe6IâouyƱvLë²KÙ.6]±…EE*ž}´וüìãø3K£Ç~Å#÷ÈÕ$ìcYéöîÙíØðàtö–þ¬;ü‹1œŽ¬|âa󯵀ËǬI¶³Îá}N|‹g;aJS¹nHØžQq3 ”êˆ>Ò¬Šºm¨<â%ÛfSµ¢*+nÀ›—¤g:¼w«Ôœ)ÅÊ!¯Ë®n›%3Þ¾€HЀ 9”’o(i«*iÉù:ïÜÆ“8xñ ñUÜI…«&i´…dz™0l[Ð-{ XykI¶­n­ Å\Nâ3=”p­u¼cSIڬܴÄàR{ÇÁ*ðê°9>Ý Í¤/´67Å<0¨áÌ€jK¡ÒX¥16_”B§ÝXºœZˆ$ë÷“q¤…<©ㄜž<Ã<(Æ5‰få+‘äÉT”„weäw©GyäJMïçQObŸÎÓÆ^p¾‡r츶°òé2ÉešÇ„,;Í‚ï×xn)šKlð…]†¥*SR¬Mµ6ÓO)´Ì7p‡6Ì/ÈÆ5äåzcråJÊ ÷×}?¼—k‚Û -ÁˆäU6ö„Kˆ´­Ùª|šþK^ÝcxýM˜€•6×Î×) ¹:í¬ C£~ÀéJx#‹òåÖa£dì4N&¬Ñ ‹juòƒÈ›¡6¾ o€ãfZÑ`ÞÖë »p>':•cÚ‰ïÆŠJ}#5Üa’MIÑJ»…)j:\ž°7À¶¶z„œGÊmyD[ÒÂ6‰½jË$¤~ûEP= Born­Ñ7L*Õ#Á¸n•‡éIÅøÄ~÷4œ\Êô)Y—úu„åz4£UÆué¼O_~¯:Fu”!ÂÚFÉšýpÈnÝ•+H½¹ÃHI;³l@½ŽÐ›YÊ»D)*ÄR ÜÝ2äÛ®±žC)ÇvÍ C*2·t|CO¾%ïBíVv8ËØAä YIyW=u"ÍbíˆH'bbÆÅ¤,»oEÞ.ÑVÆ!ž "~u5–l|Ê•m¯®¿f1­lÚøÚERƒ‡q3=䴼˦éë&\ôl†ßU­a¤(ð\½În£sî‹ó´Ué˜ tÁ÷ ýÍ#îeÁ²€¤k0>ã;H&Ò8ýÏtTƒ}yÍ'Ê0]ªT%·m)5:•#)ô&!Ø%NÛ Ÿá„is¼OŠ3´åfA7þþ±=¡Ýî‹…¬à§ñ@oT*2‚Ñ=å5¬îg½€#ÞclÖ üǦç¥8®É´ã5RÄïá&k îÞK˜3úowS¥j‘»ìŒ3q58A8ºcòÉ÷h¹SÝ*¢Œ®…[ÅqÒûDJ)Ù)Ê’×ÞkYÎöûã.ÝÝp…4àK7Z.€¤¨¥'ì#TÔhR¾ß—“o–¨a0CˤN÷©P&ÎèHŽ®üwäó–.¾M®øþCuÚŠjUg§Òßt&*JTyZ-˽¶záðG dŠâÊošÄ¹ˆÊKVuÕìö×ì{8!;§þ·wùb$tãàî°‹ €Ÿ½¶éȦö†­6Ò”RêÛ˜ºÏ5¶•érmåh–ræNÎU, –@ºB}ëìbáõ1i¶ˆ“¹’ù:¡±åþ¤äuà¯}N©ÄQ©ÄN¨ˆÜUÉ–ø¹‡±D•y‰ ‚¥TV%gÙ2åÁ)'}á)«.6ôn\FâìÖ$ Âôœ-AÂô‡¦DÜÔ½!‚ËÜŠÉ<ºEÊjª%¹I® v£j“ü1¦`g[–útÛ³­8›÷ŠS‡P£{[~Q"í¦KîZhܰ¿få°´ á ?Œ§',ƒÕÔe‘˜{É©ŠSE©Ök‹(º³& ½28·yƒc~‘)ÑI÷lP*´ͽŒ6ÓZ6Uãêú¸TŽ•JŠ*'}½?4{ÞòÛf½Š|­ñ‹ŽWöFÚ”hÖÞy%W $¿8^LÔ·À”¼ sLCt͆»òû¢Y9n ÔFÀC6 ¦¬³—rïÙÐyÝmü¥Fv¾bÐ(¯»FmRFñ²—†ZŠ0A£¯H—ÀS­àý°hé«óª»oþSP¥Îެ|Ê$°€ð/o9Ææ;BÕ .%Ä´–Y*AMǨ7¢&~Lßi3޲£šÅJ7^±¤hÆ2·±©õ¨¾¯b@Z©‘'.欇0ÂÍÕ–å[´e(º²{Tµ"–y¶ð\º”I±Œœ{IÍnÝÑÚœÐZ“–Ù¤ ÌeÈŽO}ýÔß Y@ZêÔB“•ð/RÝ¡)«L(ZÀ/h¸©]½òJßh ¼Á 'N‚Ñ3›{CY­ÓúŠr¥8ëdmÌ ¶#dškDâ”TTt9¿¤ŠÅÍ¢âY’Hõ;ÇJM›9+¡s »âZP¢-{Óº -¡â*¶˜ÓßZ{‘áQó….Q1Êã÷îã@7WJÝm›ƒéª/íÇ,_ÛKâ~›o0žJEÆÞ¬äÑIiÇXr×Vç¬WræÊ¿$9þ$áyfÕz›k·$Âõ"·dÝ–%ãT“M)ºTªXÌ£ Œçž> –T´sœK‹+¸‘ðgžXk0!¤ #)Mìç–iI&ЙfœÌ•((§‘'A$×!)R¶‰“l%)*ÛbåhÒ|{²Ó•TÒf¤^S/¡O1æ#+q}Ë‚Tûø7Œ5Æ*„¨C©PââU¿¤V>£Ã)f÷7jG°Ôê2&À…Fë,Yª’º²éœo‡V/ò£?Ý=H²Õ±¹Ì†ØMÕT`‘É;Å)GÜRt¶Íz½Æ ² dÒ¹—»mÆ3yb„ä’³žâÎ&×khT³JL¤¹:„Mº‘+—3k\2ŽM‡c§Mïçx˜E§±öIl˜¦ÇrS”,Íö‹I¢[æÊç›q.fiKI§(Ú3•¥h‡Ü¶Ù±áN%ר« LM0‘–ÊÜZ%g”yàÖ9—äßh¼`¢L${Z­Î7P™ªœ_ ¿–â.yŠ‚\Ü¢½X¯%Ýù Ž"áVSþ¹´zÃY ÷aÝâÊ Ï0üºJdÐäÒÇ ,/ëÇÁŸ©äѱ±[3iMEÒ5´dòÉðŒžní@Ö¥Rû×q嬒n¥+r`V(¦•·²Z#_²5Øœ‰z]]Þp‚²M²Æn>lµE"›˜—p­(ps²Ž‘ÎÝ2\xbU?2¢FSbµ‡Þ¸"õ¿¸91düÕˆßÅöÄ÷ÖŠM·fLÌØFeZÊ7 Í ÕØ¥~*nk:µ¸ÒÀÌ>ë&JqvŤN>¾ì61IÞ˜Ôf÷e¥*D%£•6¹Ôžq¬!îtvÿ*,[Cˆt ‡#Ö5jª„ñµI– )Ûnr«ÆÑFªÚ¦)ÄøÂAÅÖ3’Õ÷g¹?cý9x0û¨áÿÔ&uãû'p„X@xköE)BGíÍ¥à£P‘feI)¶K]«yÿ üíÊ•£ Èá2þê‰Y¹½üâ®’9¸ùt36ÕßH.…$ÄCi“8÷;L¶ÁXz¡Š+ÌQ©Å×/ó‹Ñ)HÔ©^@G7UÕC¥ÄòOƒ¯¤éQ5 fή ÌÏÕ%%騢‘<Ëî­£2Î~î]`Yc{ ½#͗ƱúnSÆÓ^<¿»îòz+à²RJ9O—à­O%]Ó–ôq%&ïg /e̲@N[^þ üE\RÅ+•ÒÕÒüLÁ×ÍYRKïýÑ¡Tðä£3Ž2'0ÒP—’€s±Ô ·W{ÕÉ~‘“†Jåýß¶4Ý\û†ähPë¤Tp$ìOn˜¡‡eÁ¶r5'‘‹ô ¶“b…-žåÃk›_ê‡éÇ‘¼M½²SMK¢ÂêØâ”W)éÒJSâG"`Ø*¯˜Ãit¶Ê––Ðá .)FÉ×Þ>Qœ¥IêÊKt¥Vt\KÚ ·Vf‘QÆHR;ÏoiIö&½Cd¯O;G‹â3ë2<}Ëxký—ê{³ø~.’ $"ò7å}Ÿ÷þ‡!©S=¢iÇßqÞ(«ºl‰òÖ=µÒ‰óÙ ¥&®¾”0šÙÎR»^ÇKA,M»¢Rc_$O)·7ðŒÇ_Xjªl»ªÌ&…6¼À+rL/J^G(6“î§Q u*R’£˜ÐÛýJí¢±Á§gg£àúL’ØÇ™PªZiùlL_RHb8!zµªýOj"¿úå¯Ôæá+Ì¥©¸³@*Ö&÷ç½ížLŸu¶e)+UM¯šäA^lz\3 `ú$–6fŸ5ƒ¦eÛ5ziÊ›™¼'ÔGÖÍôäYVÿ–_Ú¶{½6õqP–'KÊãý ˆø6JƒŠ^¦ÈUåêm¡ûKZ‹Òy\yGwE—øŒ+,ââßù<~·£† Ηr5ç¨å2‚eZ:‡’vÎH㊾D¿JžBÎL×Ü]Z[¬'…ùbùŸQGRrÄmx=5eö¿%ï °¨ªb©z<Ù ö´©¤fH÷»öÇWKÓ§:“:pB3ÊãîuG )k’ÃËKb§$¦&glfîÖN`G0#Ð],TTW(ôWIXšÚ4Ldì´Î-ŸzQ´4јRCbÉ Zß Ç.}ÍÑçå”}GH®u P¥ ^ýc«F~èݸ5‚e±<ääÕNEÇääÛIkB¥¨Ù zn}#Çø·ZúXÆk¹¿Ñoõãñ=…tÌÜä®)~ÿ.I´üªé/ÓÖ…&®ÍMÆQ?× £R€:”ªã­£ƒ'Å?ÔY?ün)ñÃó£©|!zo—ΛçÊ_ߨ¡«ð±µ¿W”£ºÃÓô÷^ï%^* - ™ˆßÒ4‡TÒ„²éN©ø·àçÉðØ|ÑÅÊ¿ÐçnЦ󄠃s½íÛégÃ×÷<:Õø4IüÙVs} ÚÓ´Ok—ìQ–Õ”­T9[qÖpP8oh·¬Ð&(¯4ÍI”¶ã¬·0”•n…ìoK ±­›K ±µ¶IŸ£ÎRŒ¸œe(L&a¯î…oºÅ(UùF²ÁÙö†šNʿѲ’FÆ&iü¨½ÀXMXš¥7,ºŠe•—TÒÞî”» r Ç[Õ®š1ùmÉ¥íÉÛÑô©rM×j¿v[Np©oQêz]A5$R—[n-;©YN¾¶9!ñ,O,1ek•ùMsKs£'Â[Œç}¿Jûßà6žRЙäÏâyY7deS6ò=•j iBà’7Ümþ Ÿd±crRm-¥µzüF¾ “–Jq«üGe89(¹¦Ó‰¥BÂ&ÜZåC*^@ ¿t›ÚéÜ^&Q›‡¤ïk•ÊVi…EÆûý¯U¢›pÔáŠj&*Ρ¹0ãMJ›­´ÿf¿$-ë]'Y‹©“ôWÊ’wõ~>ôrõ]颞Gó7Ǻ÷5¥Ò¥’ñ³H$l#¿²/gœþ]r[R0„üÔ™›“§©Ö×î+00MÏ8Ú8/ÁË›®éð¾Ì“Iþùöý£O“nbfAÖ¥’à¶etÖ¦ã³XçÅ9ÔeoÙ4õîCRÜ RlAëç Ž—'&Km+o06Í FŠåÝZ)=éQÔæÄMV„¯Iêìàƒ×þ©9ü“Q'dx;d@†d%×WÆçâÔ´·*Ê Q! ˚à¹&ÝI„Þ¨Ç+G A̤©6µîâÎi$ݘu(P)Ì8ŽP8Ž {/8qˆFÅLÔ×/í,dS/2 ŠÐ¡bž±Ã×tŸÅâxS§áýVξ‹«].E‘­y¯cxÃøÿ`Ù¹Tá‰zº¤œyÙ©ÅÍ©!ÌýÙKiHÐ ‰>‘äu_êúèÊ]KW®*Õþ:=l?éºY(ôéÓ¶SQøÑ^f[qêÂ[užêqJd!¤ ’¤”›uÒ:%ðžy1ö×do[ü<ýç4~7—³"þgTs¹§ÞŸžziéùEºê”ëŽÛjÔ’u¶·vŒUC„x²”å'|òþóˆK“M¤Ï²Ö )YÁµùéÊžIŠ~Aðð%Fa’‚E€Xé}¾¯®4c”fØÓ¯#7x…}m¥ã)2j¶ÇåÞA6HI]òó¼8í•-mŽì°FŸÆ×_„SßÙŸw Hù°-cµï¼â‹´ø69Œ>_D¶ r¨j‹»¹XZû®þzÇ?QÓâΫ4{¿~üþGV Ùpµèɯßëø›üÇ8›Q™~£YbŠÔäËêûÉô¤¥G}·Õa‡dT ©/ß<þlŒ©ÎNråŽJöÆ%®íÉŒ=.´(¨:&Ê”¿(ÒٚĈöyâ7nz„rïƒÔŸ,[´Ì#³¾=µ•R¡"ʹò`©é·¦ÁÞÎ\E¿ÌÏжÉԹÄ× ÖxMâÃHÂX¦UÉJZß!m¦T¯P4§ñ CÓ|)äXý?ŸbTBÒT±¹æoÖ'ï9œ]UŽ›¥ í~cÎ). PN—ƒc^!ÅØ‰©,2ÔÄäêKa©jl¡²,?µš›ïåqèðbÈòF ¹ùóùï¬Í– “¥ø/ÐÜ©Ÿ8…5.šZX#ÂÌÄÈÌçm/é]óq‡c÷Og\qaš·‡Éò|ÚîªbX©Ý‰ýÎØñI!5Œ:N¿<¨›Ÿ¼h}]q¢P›×°ökX]ýF¼ ÓI‰”ìÿĪ}I™ú}kØZVÒý§P¡¶æe’-5ZR‹M2·QøÇÃúÌö+®Jûjnb£O!m„m¥­Ê6]Tã77äÒY²÷¹­ß,æÐe%¼¹/t›æÒñ—rkG<“nÇ‚FVÂl¦ÂÃ_×xm§I‘L/[«ËQþMfraë{?tÉ ¸á¶šŸº2Ƀȳ=ÉXúŒ‘‡§­‡¸ÆœC#%Všž“¤%•%éeιgÂ2¥Zk| oXú McЦ©ýÜÑÔú¾¢U)K‚áþq}Ú|Ü›ØÓ)™¢µº!J*ÜZàmxPøn8ÉGìé-×õ)õÙÚ’ï«äÖÓÙÿdÊ+øet.*Ä~è)d85Çv†¿sÞ>!9jøT¡>ÒuúÌ4çô¤¼HÄÇgž!¦«†œU²&Ó[zDÜïaÙõÙk‹°÷0å3•,?‡+2RÔô¬»n¸„¤X_™Žâç_2Tu>£"I/(ÄØŠw̱?:¦m±.Øi Œ‰ðÛ‘ÔÃɛզÎ|ó–WrðBm ³Ý¤Ø…\F)&Ìi%FÇÃHƨO=0‰Çœ”\±öG2¸ÝȱI Ûhóþ'ÑK¬„R«N÷Çäw|?«]3•®Uh¹™â;2Å.Qž5Ï)ùçÒµ¸œ™…¸ Ç:øO}©µµ_.—ß÷Røª‹îÆŸ7¿Õ}ÄCejUÜG7/(ܳ5y¤›`>›Ëä) žº$:Åôÿ xñbY%¸6ßÖÿ}G\²ú’íûI/È]gˆ‚§ƒÜÃsì•IûLµûêÝËí“gmÌH ýúÂÅðŸK?­”®ß?‡>áŸâ>¬=)ñ_•pPc¼HœC5(ó£»ÒMIä/¥EY¹ûc³£écÓFPO–ßÓg/WÔ¼ÒŒŸ„—å䦘 ¡Õ÷O¡Äá^kfˆõŽ—G$¡»‰{KÄù:l´“”ƧA+qÕ>B‰V£%Ž–ŽˆfŒbyGE–Y%8dí^4·ïv™ÄU©)ö̼¤Êu;2ùZ†–Ê/Ê+$Ó¥¢º.ç9Eê´’üYHÚM’ uؘÅ;‘évyL’´øµð…×ó‡ôe´†–”­`ê.~¨‰½¡${¯°‚ ¶Æ¢ïýÆâ¸ðvx  €~ÈÔ“RÜ\’}²²©ªsO/1-hÓÊÈÀø0Ëöyý$…«D^Á'œ8í˜ZTf|¥ ½Ônu‚i‹%="³)m9ßË• 'S¸éë-ì›Øü‹ДT1 y×-I7¨m>gP> ëÛ¾éþÆQRr’²ÎSá‰$™Â†ÍHBEÿùP’•š ?”yìiHq% ̨~gÊBÖø5æ`sŠÕóíëchÅ4»þGYG[™ûú}(Òð%—{ˆóxÎÓ5¢r‚©³¥¶ú0zˆZð>ŒcK~Òói¦ÛU¿ƒzäü-õÅFK‚½EWE.#¦Éµ*ktGA—Íó¬ÚÅõØ`qò‰•J=ȈK¨J¬”„Œ»ß?œ]ÛÑ–éð8—²•870ö‚.ÝQé<,ÖÁ´ZJÊ'¦—ª3ˆ[Ω7)¾à ÚÑp“¢ÒCK˜|®êqfýLU_$÷‡|ñ°+ÒðûGõƒ4Z/ºP7XIË嬠˜‚ëàûêׯ!¦…72øX)qi#˜Q…DÚ-ÛŸgÐ&0Î%G·H>ÙBK¢êiG˜'X†½ËLòýf˜hÕ¹Ú9pŸc}L6®e?G_B#8£žmqädÜ(•x2îG”S•!Ò\ë²øS‡­W%ÛGËu”÷ªx‹û;ð!= /Œ8+Û7N‹Wç'_qKvaÇ£rT¢oP´Ä%n s(¾°0OFC®ßGõ¤&̇\P%K:yÃHj@x Ýâíä`hjU²Ûb ɶqS2Ox•pÝ IÜav‚mžã W ñn™M ·&äÑoàÂõ)øÆ+NŒgiÒ5°¥›íÈÀÉù¼W³*HÔê8¶¦Ê&=‡÷¼›KÂ.UoC™¼YÒ+uz…JiOLÌ8µùÚAÚ¬!gYIâ€Öœ:K÷4 [ƒP³¯œ {‡s0—]¾«:ùä.é/ ‡ùÕ¶öüo!¹KË%Ó*³ô锽+8ãjl×ÊÜà¡)3–v‘ Ó¥1ž(¥K!†êÙÑ:Â=Ñ0‘|Àr¸¼eÆÈš§¯';l(¶.n/ks‹N+ÁŸ¯©Òó³ìHÉ]Ù—TÐÛž·è˜x`óIGËs‹ÑÚ(8aº[.J5[«{ËKâéhÛ`6H¾qõ]?ÂpÁ'‘[9çšMvÅ’ÝV;àŠlGRèún;äO­’ÞùT¾ Rî¼@Q ‚=žàz^\äˆîÈÞØàg•‚æ£ÜZÅ-ÛÿÆ+ø.—Ää59ó`¶p=ŠŽ¦ß{‹iµþƒø>Ÿÿ/VTÒf¦ðâu“-7ƒXaµ{ÎK8s'¡&]®Ô®Jäç|TÁ,a%KTiS˨ÐfÔRÛ®œ—vßÁ¯§‘œëþü:ïŠù_èÿÙòwË|šÃ9;Æó°T,9ƒþ˜ó’·gDy™ÊHIÒÜ·Šì2”'¿Eî5²¯MØvïG¼{ ·Ýð5Mg]:jˆ“²Š‚ È_²M$àÅ´õ2 Êä‹!“b¤¸¢@=@PúÇXLË/™F@›©Ó¦°Ô_&Ѥf °–sm{€b¦ÊQæE4ÛÊ*l) ).§–ã¤a;JÌî)w%úŠ}Õ:âU”NªzÚ2ÜŠSóF%Çzò[mR”„¥:’yjØ#(·³µ+ƒ83!Šw8§+‡kï´—ULbQO P¡á¬Ö+Ñ~Y»Ž5© aÞTãÄ¿+u¦Ø•˜’r¡/U•FtL2R9õécÒÝ1zi=pRÒ¸=Pk´M?…õéÃ$©©‡‰Ö‘pëAµ­. lB‚våx^šºÍOƒV%M:«7$¢\î[*U´YI"ÿdM4c98éR§a·© ¥`ýðâÚ²û¦ÄJ, 4‹”éáªá º)}ĪŽz\ ˉ¹#}b‘Q–é’¨)k|*ÚÚ7\ߊ7ëQ7I•zF{{DÃlÜr PýFºØÖôu:¾4˜£ñ=œ!)%&póS Ó×)Ü‹¬/*J³y}ð%¡¹S£žñŠ5ªR™6Ãç»·$($|€ø@¸&|”C1åa 4ö9-~ôok `agâÿÌñº]û•ۢ­h瑞nSHÖY Ëq®†ýzÄ´Ù3çæ=…N ¢´-•2mðDtEZ6~äÔ¦üìmxºA¾„G((‹ª^¯ÔpÜÅrJAnȱp·.6ÔØs¶Æ'¹]µ½”„jÒúå½Á U’:˜&a'Æ V·½úBìrþÑHÿUrN'.s)—ÐfŒrl™élçÁD$ÉP½¯Ðô‰HÎMÌì=žVS§5¾iµ(ô"ñÁTMî™$íF«-Oa#½šy $u*9Õ½‹¾(*E8½ù*l»mJSЙVP,Vz’oõBT7õ(=™ûjÃÚ¶­>È E±=ÚнAM|ètü›.‘”­áºõ)r͉öòÓ#ß²4Z éc{Bªc[Tk;¡øEÙ&“Ú•`Ú}ȲfóýÉý1œÖ…5£‘°âBÍɵîDClÁ»ùQ²p•ÐŒy(ñ)YCkQ6Öúkúõ1èüŸQödåu:dۥǔ·uÝJýu¯ovq¥ì6ݵuixŸ;n…xC‚æÁZ°_¸¹\˜#23k§;@^˜|è"Æ×#OXwåÿ¸ÜY„÷i•wºŒ'¶•‰ÇD,ió¼>«K>ÐY}”’1‡Y>žq~ßШòš9!p,H¥uA}˹5ÁMè¼hÎ|#96•!ûç7ä¢ohÎI^ŠSð‹œ<ÍQkh.ËHϳ2ëa7Δ,(‹z#¤RšN™Úx÷Â\sŠø­PÅ8BAÌIF®¸'%'䔕7•I*Ï"›[^‚5ÉçfÏ“º:6\•/øªy™ê ÎÉÏ<ÚÁ@qh îï¶™Lj–ÑNJéý–ëÔ¾#bL;!ˆ¦8§Ì-rK"óÒE oº=JIëš“{g™x‚‹cjÀM´ž~ÖþÜíó[læ›ù¨§lYW>ïV…)Ò´<Á*Y7Ë~dÆÑ÷`”¶‘*“o–XRÜÊêBˆ:`Õè¨ÎzG¤f˜¡@褃¿”t-ìèØ›ip~œ2vOóŸ&פj9T¡+0Ûå)Ü„¨>¡ ¡ÞìêõÌ ýW‰ŒbÉ)¹EP\˜j¢äÉpY9 TRGRR>¸‹ð]VÎqγu¼wTª0 ¦žzͨlPÙ•"²†×<¯ BHSw—¿ž¼ eoÁÀ¸£1ßñ¦½ÂV”$ŽV„·³,‰ß©BéMJ†§žãÖ#¸†›{G£0ŠÐæ ¤(e[þäGLZ£y[TX¤®F†(V ¿¸GfÇAÆÕúF™Ã²N1ì•ÝjEÖŒþðÏñ…H®æ´l&Í‹v0„‘{^×ç 6Œ¥#0T: ÙÉûB»ÞcDX"ZÆÃÎ0ÉÍ?©¢8.Õù DEѳ¹AÁ3M‹ß*ßs´iXZGF³­Óq]2¤è%¹Y¶žXÒ•~Á:¡Ý;-x§ õ/T[Q°qã2ÖÑhQÌøýÐ*c–Éÿ¶®7:|¡-a°öD~ˆ) 6A®cÜUY¦»N¨ÎK¹,õ‚Ò‰FÒH½÷ãhm¥´&ÛÑ3…L•?bÅ¥¥éË•Jù)Ç4 õ´'M ªVi¤6åÉ4^ÐÊ@”ô\ë3?tÆY“øG$d¥(*(I×r5øFqfoåù‡…–(°$„*=ƒ¥ëÚö1ʹg¥øÙîqTÛ/Ó¥f¥äZ,MÔ˸ošàïn‘êüQüÐNêü-Ù°`ù·]âdìÖ"š¡bÈP¦OÉŒ€É²“tû£Åo¾9sE¬ b¸Û­³HRnOz+%0­>›NÅ5i›š£LÑ‘?KuÔw_;|†ÿI$XúF²êe•Â/N顼J.HDæ1¬Ž Ê×Í!SïÕ‘qãMkVƒ`ko©Ö.:þ-ÂÝ$Ÿ,™d~’~ÿBú³í´ì#Eʶ§4º#.®V}„{C‹)Ô9íðŽ\4šjO~îŠËTš&à)i~á™É”ÐÓKT¤ÌÍa©¦Ÿ}ݵÐÛÒâ3Ï‘¼ÓI»´—·âRʾãÏñR«Ãu‘*… r‡;´¨ë’÷Mþîu ¬OšþÇ"ûZ8ü‚Ô·B”@QH¾Ÿ¯HøÝ÷R:Ò|’’ \¬kÔ@¼Û- d^a»FmºDºS³èoe4vÉ"ß6éÿ¸ƒ²< „@ý )‰¾Ï®ºÃJX•Ÿeõ’Be¦ç º€õ"#'…R¾ñ&å HI”ÖØ”82©²lOA¤/¡.W¤UU¥ó5ݧU{Àô1”¢ä™ޘܻä£*¼:sŒS\2|’¬_j{-d^Kf(¯R¥”¦â ””ºï™™i¥¥ûmäõbSW¦@EJe©³0ÔÛÈsý±¨-Dïs{ëÏXÞ˜7»Bšu—ƒì̸Ӊ$…²²>#Xqu- ߸Ó-%}âÝ*W­þ¸SöîÕl‚üÀ›W³K’ µÕÊ%&¸&RþRÎY¾îÈlgÊ-¾†:£KJÝò,žåüÙˆVãMŒ ¸ì”ÝS³´ðßJV©J¼â[i9T…ý!ÔFЕ JKFÝ›Mmäc@C‰Ð…Ac¡ÀüÂYöt>úZ;¶PAø^Ðr CdÛKXo‡H¥ZýaЛKf½Ž1…;S][¯ÌZÉe'Rb%46—Ú8DÌó³ÓN>.ãÊÎoËÊ9ôÎimé ¸¼¤<ÈàºÐ«tuã™fiíP*nwJhY•+b:F°’¾Ó|rîZ:k!Ô…!À y¤èccN9¾Úié;ðd›ó×”!ïɃ/=a€i”¼à%V%ÄÚ$’ßœ™J Fˆ¾¤ÂsHNImœ/×_ÄX…éõŒvJy&ñÌöìÅÍ·¤BVe‚ ì/oX®×È·-¾M‹…8Ãòz¢ä¼ÊŠ¥;¨PÉÚè¼y í4ºŒ¬ó!ÉwêH¿„ÇG&ôÙg9958Zö¹‡Sh ¥N*å)Hª¡S ‰µa÷‰½µ¾½DWÜ/¹û|à¥*íN‰BàtË…ŒÛG=! ¯Ÿœ—”aOL8„6ÉQû`_Š˜­¼GWK§÷¼°! 'Þ<Í£ÓÑ”®Û5t…¥´¹ï i¬BTg$¼› ÖŸÊíR3õ¾¿×dd}ÑmËbÇ0Êêlü™!R–©4–_– Ȥ‚HÐzÇÑu]?­M6«ØËNÒb1Âåê”|5E¥™$]nU*ʤ¬‹«xZ3]rK$®ƒË½"-×)x&£…,½!=ïwÀ•3µòE¯a{ƒð‹ŸI åYŸ+õûDzQq~J÷«³n`ÖpÚÐÈ“jms©XIÎV¤„ØëkXtc,¯*樇’â¡\ÇY¦IÊÕ°M ì¬¢$Ú™t¹Ÿ"E“{ŒrÇ¡”É6•ßö4–~åó$D¤ãú´”Ýa¹)5&ŠÃ²­4«ÙöܸP^ºïöÒ}'Ýõwøý YZ§ìhØåÀ¬'VXl!+iD66MÍí(Ó©ÿí䟱’—Íg!’6Ñ9­îÇÅ^Îø;_3$¦á@’n5±WK‚£k‘ÉDޢжÊß³é')Æ—ÁŒ5(\ÎLƒo–Ö.òß ÖøD‹ƒn€a ö£¥¿YìýŠd%‘Ã&]µÀ²P µz“ð‚¬Œ‘î‹GÍæUp¯{Ú!KTpKKf<[EöbïØ–«ŠD²¦ž 4òá²¼)^!ÛdIÊ\“å›6O?ˆÛ¾7QÕ‡m¶‡fÛRÀ+$›é´ ™r}©QW:Áo*’¢•^æÛÆrÓ²Uð‹ü7ÄJý aÜ>×$)ñ‰õÒV8e—“s¥ñ¶A@ ù[Uµ(ÔF«ª‰k,olµkŒøc)Rûô4Åÿ_©,fsXu v_tì }D"q®Mv¿Æ™Ù† )²jçBà¿Æ2}^þTCÌ£ÆÍ¥R©Vç;ù÷²5! }Ñ ÷=‘8Î[DÉ&‹E*UÊ͈°åÐ+º²[Ä©’”¦Ã˜çx»eµå²¦ym¦×Œ&¨ÉÇV‰cV°ÔÂLªšS|Ò´ŸUÇe,­-›å'ÈÉ–£ ±®¥6R¼—ëÁ«n‹æ8͆Ð+ïÒ|Ó uÙK4|3q $|ؘYþÔ aÿr½eNÙGVã{júbÂŽ™#í‰}J\#)g…×&•ˆqk«$ÒÛm²m• ½b%’R&Y[ú!š|±‚ €ÞÜ¢á VJÆŸ,•ÝfQ=Ú´&ÿ„](/¸F¤ŠN!e÷È. ã¯áù–ÉËÉ” é¤ué æf¥ÐûN…%V#,}”f¥G#Ö˜ýÒqoŒ>Ò«Fs¾°ÅwÀR4ÞZiÛ2Jo{ÛÈš mP)À ¹¼RBå¯k,KaçièR{é‘”&úÚú˜ó¾%ž8ð´ùeãq I{Xrל|hìpUQyA@+C±OZ)Û¦=‡Rf± €IR‚E£6íY¤5*> a {”œ'K¥<¤)ÉIF¥Ô¤”” $Úü´€íEŒ@±-95Œ9P¤©Þé3’ÎK—2ß.t”ÞÜ÷€•õÆ#\š“UÇrê>Ñ3ÌÊ¢¥LCfæ÷²oöÅ"pÛànt¼†ÉmÂ…n7›u¢œü¢Šj³[—UŒóÉ :œêŽyäÈŸ&Sœ¢íĦÁTæÊÒî«O¶ñ8²a9ófN%Ä-¸ Åf „‹h™…ƒ÷ÀóMòÆò:ö`1n(Påú‘ÔfWMáG.NîE97V/ò·$iZ©e:k0¿ÓË5üß ýISâ|D»‡*óÎ ?³ªÞš˜=llY4·²d…^¹<ãH›©Í<™)RÉøEBR“Û4RœžËþýkn˱QåÒ:¯Vij\¬6£áB…†R|G]ÇX¸©-‰R ÍÎÜÏœ«•rŸôÿrÝ-—TU’ÇQ§8ÎP¾ ”;ÕðCr†Ê— êÊ#Ò·l^–»¯Dw¨JQÔ‚¤[KBX}‰ôâØâhƒ/†ÙAÖ£ù•éÅí’Ù¤K¦ÁI¸MαqÇ\"”-Z'±&ÛW@JJS¼_kðlàÓÙ%)‚ ”9 þ1Qm8Û¥Ö…­¯´VÅMÒ¡µÊ¡i*PEº±4ƒµñìA˜¦¶µåÈùèbUÊ +#.†…¶ @ÐÄzdzVû˜AIO¾R‘õÂx½‹ôÓàSX}°s*ÇMFñ/`±(òÉlQe›MÈ ÖÃHÝbk‚½8ׂl¬“Y=?ÓØß%8¤©1ñ• mm-kÅPÚŠáÓœ„äJ‰>p4$!ÖY!@Ü›ØÁÚJI%²;ôöTÞb‹\Ûm~¨ÍÆôÅ(F\  &à/:ކñŸ¤¹"8c¶20ú¯ª•¦Ö„°ûŽªl[”õÒVá"ÂàoQÖÁä4ä¬~^‰.–ó¬ÜA#q²”t™9©IF›åt‹ï¨¤m^‡Iie*H7tNW¿¢U™ysfë¬% ñ¢² ÂP‚¦A·˜°¼KR|³ép"“‰«4EK8 @ì»Ç_Oñ\Ý?ÉÊ2ôâöÑfž'V“`¦%üɾ‘Ô¿Ä3_ÊOlØ+Š5 l™iU\i¼_þ¡’þT'tŒ§Š5½/'/ÓKÀ¿Ä2ËúÿÀ(*ÚûhV³dY×Ìé ÿˆ$•¸þ¿ð7‰ƒ¼H­L€„0Â3\‘¨‰—ǧ5ò¢£VÈ *n¡7íÎ)nžg—7.iæ—tÝ›Ço¢RÉñ¦-š}Äe,eÖ×Ü&3É'cnõgBì†,ã}žê©~ü<ò$6Ø+X¸Öä$æFУ¥FØvÏ£°Î € €Ý·p;ø7UƒiD…I~Ý)Ý äY$¤tʬÉåµí¬g=yáO¹šUm© …¶ÎX«ä¢…¸ ñ ~¢);4uÛB]–aãâGÀ²BX÷LŒºl“Ž%Å03$î&“äJ)7bM"AG7tG[~0v¤öŒž5'V-T‰«ø2HŸJ/‚£†+í1MQ¤ü*JÍ|ª1o¿±E;‹±æiòA$¥½Eòøw‡Úq޳/.Ú²„ååp4‰í§i ß#È@îl€oµõ1iûÚ«ckBH."Ç)°Ö!Å·l˜¨y¸E‚R¢IÛÑ éÀòH¹ÖÄj,n!´Ñ£k„eE*s2›‘an°ÝðWos¦eÖÓdæEºå<à§Z'µ^Ì)½ Ám†*)Õ”â£È ©—;[N5hZ”…Žÿ\=ÖŠ’_Ì)°r€QpN–0+!ªT ÙMõÓKù@ ’º0RIQ ºoÎ\A4%gÁb’Fö\@'ÚÞÌ„¤$eÌu‚Ÿ‘7k@¤&ÁDì/h,| ïT‹oq°Šì´iìQHÏ”{]:˜]º*Ó*2ØËãF\§MM®`j¸Òå S–Q Ê‘—so¾)=‹hOzÞ©H±P¶mÌ&ü ¹m°BN[ZÚ`íƒA$Ý<á4Ø”«‘hIÒû®°(°N/A|É×O1´R¤ NéVà+*EíŠcVù0è!@• ¸'STÛ0«+5Ž¶Í®âwº*CyÝ&ê ¼áU“ÚâþRV@AUµòP}X…°• gÑ#_„´ÆÒdiŠtº†k F"p|’áädÒ%Tç𠑨ÓC c­´‹»b•G”²eús‰x~,qNП“%é¤|9Ĭqð %ÙLêù  ßH¥?«ù‰ôùLÉRƒ}¢Ö/q¤¹¢B„xòZ×Ê*’+ÀÌÒ»¼á"àë¼C«¢/µè4òŠ’‘ro—”e.A½èöGìvpõùLÖ>Ÿm LÊW+$•¶sq™ÀNÃB›‹ý!¥µ¤wb‹JÙêf¡@k·.F1à”Üã ­uGï¦2 ©E€âwÐXclžf3ÉèÑóµÅ-™•6²w祣%îyÒ¸¦š%°ý•¯Pt^..–Èr¨’[_=s}"êÍ"é)6=¢Ü'*’M´÷óò†ÖŠ¤Ý§ú«eR2“ËúaIp6̤¤˜l«ˆr[)ïfwBT¢«ƒcoÑ)²Tšà-e•(¬`chUÓªnAöäa÷xBÛH*±ãßQ¤ è7ô0{Í®F„îúCQÂø†l5JÉØmÕ3=&š ”“•(6ÒÂk)ófS`P9s‰wÜÁK†(¾R/½¡«h}ªöR*Qq—hir-)Z’±Mô°¿ß ïE5äp ïa¨Þ ¡vÙ„ ·uhn5¹ÐE=-ÚàJA䀢7Ð(\ BбóŽl@¶©Š¡Ê.&T mkôó„âÞø%$„ ¹°!ZóàvÖ…Ó¦){x’.w`av×#m7Á–Á7 Q˾n&øaÙÿ‘—œ9Æblu 5†“j‡’KLBÛ¾û2òÿLo"œ¯CŠ$nص¹ë A!ÝëÀ% ‹¥÷70’¤'Á‚•¤'NZyë*Ȭºf [{¤ÊHÁF`.·#˜ƒµ“|˜RT–‰HOÝ© &ض“{¥ ðÚþ(v`«ß J“¦ºha4ƒµÙ”¶,l’tÛ0ë[¶e( "ã*·¸*V[{2‘uÜù½Q<Ž%» ã}ÂüFÖĨ4ØÀØ$ÌdÄwƒ.–'h*ù&\˜Zoo(T¬%I)ãR:ë¢–ж™•¡6RI\ˆ–9FÕ leùÀ-n»BT‹ZT32öD}|¹Â”¨N­•“®€‚37$oåË›1µLÚx€ê|DâD A#çTJÖ³ám \’|€>}!E¦k‹³éŽ£Haì9%D¥²”“e,¶Ð Í€'Ry’LYÞO€ €0ËSî0ûHu§P¶ÖR¤ î |ííŸÂ™Œĉ—ddVšê‹òNrý&îI7A6ÔÞÖ<ã7àä϶Ž0—T’ì›èEûœ±o‰¥¦“`6ç)ª+¹1bÛÙÀÐ ÛØÅE÷*zªJ…³ir/¬VëeÒ0A*! ²·9ŒTS`¤ý…X‚s/]͆ßu“Üž¨È$4DÄÖÆ´¨ÊÉb€A<á¤ù)ªFEÒ,„óÒ&M¿cäþr†™|ás±©+0„¨¨‚ lÐ%å±s¤…,Ý´! €¬¤ï@m ¿a¤­II9–ʇX¦è_@(PNÉ):øBÓà%kÀ¬–m:ÚÃB!´š+t`¶´‚„Üs¼¨–ÁiYµÈ}:t‰q%¶%hÊrÜ¡{P*%ª•d‚G$ór>U³9žã2¶O+õ†£o¦‰¶[ûä¤À˜$’à.RT%#@rùŽp¼PÚwò‰JT”‹ù‘Î’ä"Ÿ“!&Ã0±‘Ê)¥[&iº3•bùN§[˜%¢’fV“{¤ømל:MÛÓ¶`‚¡¹<¯ÊñOzaÜèYÍ¡ ÍqËëÅh0s¤›á‘4é} ßÀl¶£¬÷˜ Ê|Y®(q«¦K´¬d§Þµ605¡®jÌ/kœ–ÒÚ¨µÇS¡H\ê‡R­°¾ðŠ2 s('Q}(·B¿c) ±$›iØQŸ µQ# *v7Ç"’´ZÃ^„î!µ[ì%Dˆñnb| É€TTIÐØi¼·î%Å ß5Ï@"eL~hg:{ß…÷Ðm-pCqºva)Ю÷Ô[”'7B´ùedÔâo›70O¥ãɾ$Ÿi äÔâeXmek^T§ŸÂ!¦ø!%'Q>‰v5á3|7À ž¨ËWjH ™ 0€IJ:‚t*k`EÓER=,qí‰Ù"‹ € € KŒÜ=¡q'½A­7‘Z®Zm)ºåܵ‚‡QÕ<ÇCbV&¬ù·Æ ZÀø¢f“X”S´¥tè¡ÈƒÌ®‘Œ¡Û´qäÆÓ´=—‹d „Ž£¡Œû¼3–3w²t¬òÒ@*¸¿ÂѪf¶“ú²d¼ØZS{\ikE­h’Ô•2{S-­^ ò1§š§B³)bÂÀ‘ôáþ†rýE¶¢¹E†Æ’[ä«QäIPÈrh/pXHjVµÈ#k- w·XiX®´˜xʉØê4…ô¤¹FRP°”ùÞ+¶éÞÖŒ¤ªë±;ƒ ªÓ_‘Ë%+ îÏæƒ×¬Tž´b•bœÄ¯KÂíò9H 6ÒÚI„™I¿QŸ9*9Òz#ì*|­cK(½9*¶üMùÖOŒ^äi ’TVØ¥f,å6:’u„¹ ñ¤eBÄT5ÀEZ½Ûm4!ó¤½Ôm¼!©9ñKŸ^v*±w6é&êÈ6"úpÞÉZlÍr¢|L Š.Ý Ê¥².4H}¶Åµf ”R£n„A$+\‹O€¥ Г{ßh m°BAIÎ¥'¦_¶–Á‹%%EJ7ºl-Î)¤ÉÚbÒ%¡JÞƒ"‘r¡aÓ¨‡ íÐ åUî­¡ßÊ N¨mùtå"áDZÙŸhjµ³ ±·¬¥]K^ckk…Ïr„¹AEUijQ9ï}v¼ y£)Y6Ô ôö6Û@áÐ…']ÆI‹BT²¼”«q~‘=ë€iæIAñjI¹'oH«’d¬bbe=͉ h~1œ¦ŸœÕ¦fõ°¦ÛˆŽê"é6ˆÌ£eX‘¡Œå?%¸(ß¿õÿb;}ìᤫœ Z3ï³4Út‘ìÃ}Ÿ™u‰^"cëGÇN’Q¾r Ö?4¢Nö×O{hª= Xëg¯b‚ € €4ž8pÃqC ¢™\6ëÕ+2Þí)BÚƒï „’4&Ûˆ(©*gÎþ=p®¿ÃŒRõ.¥,´nÓÉnaÑH<ÇÛÈ€AŒ¥ƒ'OÚíï2Úp´3o¨Ta{9åv?/5t]$\ž[Ú4n‚éh–Ì‘á ] Sú»»$‰ÒR nyÞ5s­•Ë’R'Áª××0w]6\®ìu©…-J!BöåÎ,¥6ÇPéîˆZýuŠOud¶«jq$e *Ê-½¡7E÷R´Œ…#-ÂI;‹ò‚Ó÷fB×Ýæ%6é¼Wsj‡bw™7Ìu žP%dªiŽË¼½êlF‚-{1º£$NÚb_¹O\FŠÚ÷ÓHtÑœŠ ¸BH#[ýavð„¤ü‚rae'bm÷P8¦SµÁ……,‚ÖÂ_)-´%ynVs_TÚ>D›ÛDøDC®D%¤'{[//8]Ä©hS–ÊIM‰éÀÝl7*7·;õ‡cR´<âTVJ–ÚŠu6ÆÕm1*B´U” ÖÇœ4’äQß&A*¹QÊÞ°¸bÈA²ÝËq:ÖÅ!FþöQa ´U•æÁIQ•±ç ¾L(fГéØ*ò‘`w¼VüŽÅeÙnlÚ'Æ‚’zòJQb7Ò+d¦d_6LÉÓh ‹oF ñò$s‰LoÜ3 $¨«*¶‚ÂÕXžñ9¬x-X”“Ñù´…eÖçxÎY)™Ë"D7&õV6ÓÖ&S½w¡‡&ˆl½ü£7“À¶B\ÉUÔ¥¼ýb%4>Æ´0üÎdد1òå+HÇ"µÛȹ]œy ´ Š]¬ LÕFnÛ=iÙ+³©JJbüvÛ¬I•‡e©«IL§|Ë7ºM¬7P¹ÐXbŸ“³*VÏcK2̼»ròí!¦[HBm % À6Eà€ € €(x‡ƒpÞ7 ;HÄ”Æ'ZJPµ$wŒ“oºNƒmícq¤i=3Ë`ì`ÿrìî­{_‰J`!Ë\X/•GSrríçhÎXÓàçÉÓ©ž_Æ<<ÅØb ô¥Z‰?*óD]K¨¦—¿‘¼`Ô¯häŸLàípkKmÖM—šéÓQoº™-?&{ðÒrÞæ×ŠrOd:NÇ}°d.xòÛ[  R\å[½·;`RTFÖ×xµ+š“T:ÌÞ¥‰Rw´Rm¢¼¸’#V;ðasZÄíЛð%H²‘}úœ}Ø— ~|Û˜šº«$겞WÞ3­‰ßƒ'6P’•\}(râ¨o+tð[z£¡Úûu)jÇ~’œƒ6K¥ÁÐÅ'JˆC-ܤé”të^å6Ú¡G-ɰ½­—”«+7ƒp‘ÎV¬;|1 Ù#K_huä•1H#pom/pÛÒ¢AR…úßx<=Šïœ›k‹±ØÉyed¥'èÞ÷„äïD½nÆ×0Ù7Ì å0»«‘IßS:ÒE¬:^È’Z«v¢›X( ó„ò&Bm×>3U‡3÷ìV¨1<¬Ö*}P»ìmÒî#.c©²­¼g&ÈSîÐË*à§]lH0›Ùj]íÐÁråV%_Û¢)òˆMÅì[³n:25©#ã [ ·vu. vÇœAy*§ÓĆ{.vjèi;_[jEÁ°¹·(ÑA³|x;¶{€½š°Fa™ê´³êÊ@³ó žå“–Ä%²H:“âPä,cEŽØÁ#µÅ@@@@Z½6U”öZ¥>Vy‹æî¦ZJÓ}¯e9˜åØë³Wñ;Êy̲QthlÀjaÊWÀI_Ê2¹µvßPDgÝ%ä_ÔgÚ¾p„Úþ{Z=m™Ê-«QØÒ掫I¸…®[“J¨ÈSÊFd ”úD·|&¸D‰i)÷BP†ŽM-§ß wI•I2þ‰‚k',Ṹ²m Í¸ÑÙ8]ÙcbØ›™”E>QÍCójʵÁ ÷ˆ ‹×Ö4XãäÚ8OJð¿³7°¢ØšŸ–]vu½JæÒ9³\Øò²Š×N–¢‘º‚Gc–e™yvååÚCM6„6Ú@J€lŠ(\@@@@@8§aH—¾\ÔÙÕ½`ãÎ0žõVµ¼cÅÈ öÒ!8§Éʸ‰Ù?…8”d$f(sT£…M“}J’«’HÓE·Æ^8³9`„¹G(ņ+?“¸Á‡¼ûJA ×K$+Mµ¼CŸ2é øGÆ]˜¸¿A›ötáiÊ‚3$@tZüòÞÇM·ˆx_'<úiøG<©`¼O$òšv‹: yw 7„íx3ž)®Rôœì²­1*ëJµÈq² ClJ.*’·\¬uþˆé] ®[í R3ël±Ji¤(ºÜÑR* ‘{ mûhjêФÍël \é ÊÖ‡/üG2s§P!÷ØBN’¯öþ‚Ãä$®W"ñ÷.Û™Â.3‹oq°†¦ÖÛ2fÎ\ù¯ézá 6÷ª2'‘›5½G8nT9Jô3z”ç¾—Ú&Ri ºÛ³Øt)UÉyÃît9Î/mèÓKC¨#îÚËR¤¯ýÃÛ€ÌIò;E7ì/SmÉþ‚U4£âS‡]é R%kv$M ’A'OŒK–Â<¶Ö3í…†¹L-Ø»£J¼ˆ3WB”?@†ýØøÐÒ¦€H$ÚÛÎ&×¹FDÊ•ºIQ=ÔÆ›%Åæ°K„/Â)¶ŸjŸÊ)©Y§3—!åî»H®×-“ehU)²”&]Fúe¶¦a"£‰´Ñµa.büBù–¦P*Ž[1K,(”¦à\Ømr"ã‰ßÌiÖ™Ô°ÿdN#N®XÍÈJÊ0îR\za j¤‚T-}E¯å±/&¯¦LìŠEò÷’ˆZ·æ¥OÄÃ*‘-¼„P-áZ"HئE¡ÿãR.à@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÙtiemu-3.03-nogdb+dfsg/skins/ti89_fr.map000066400000000000000000000037461220314353500177120ustar00rootroot00000000000000Model: TI92+ // French mapping // Alphabetical PCKEY_A:TIKEY_EQUALS,TIKEY_ALPHA PCKEY_B:TIKEY_PALEFT,TIKEY_ALPHA PCKEY_C:TIKEY_PARIGHT,TIKEY_ALPHA PCKEY_D:TIKEY_COMMA,TIKEY_ALPHA PCKEY_E:TIKEY_DIVIDE,TIKEY_ALPHA PCKEY_F:TIKEY_PIPE,TIKEY_ALPHA PCKEY_G:TIKEY_7,TIKEY_ALPHA PCKEY_H:TIKEY_8,TIKEY_ALPHA PCKEY_I:TIKEY_9,TIKEY_ALPHA PCKEY_J:TIKEY_MULTIPLY,TIKEY_ALPHA PCKEY_K:TIKEY_EE,TIKEY_ALPHA PCKEY_L:TIKEY_4,TIKEY_ALPHA PCKEY_M:TIKEY_5,TIKEY_ALPHA PCKEY_N:TIKEY_6,TIKEY_ALPHA PCKEY_O:TIKEY_MINUS,TIKEY_ALPHA PCKEY_P:TIKEY_STORE,TIKEY_ALPHA PCKEY_Q:TIKEY_1,TIKEY_ALPHA PCKEY_R:TIKEY_2,TIKEY_ALPHA PCKEY_S:TIKEY_3,TIKEY_ALPHA PCKEY_T:TIKEY_T PCKEY_U:TIKEY_PLUS,TIKEY_ALPHA PCKEY_V:TIKEY_0,TIKEY_ALPHA PCKEY_W:TIKEY_PERIOD,TIKEY_ALPHA PCKEY_X:TIKEY_X PCKEY_Y:TIKEY_Y PCKEY_Z:TIKEY_Z // Numerical PCKEY_NUMPAD0:TIKEY_0 PCKEY_NUMPAD1:TIKEY_1 PCKEY_NUMPAD2:TIKEY_2 PCKEY_NUMPAD3:TIKEY_3 PCKEY_NUMPAD4:TIKEY_4 PCKEY_NUMPAD5:TIKEY_5 PCKEY_NUMPAD6:TIKEY_6 PCKEY_NUMPAD7:TIKEY_7 PCKEY_NUMPAD8:TIKEY_8 PCKEY_NUMPAD9:TIKEY_9 // Arrows PCKEY_UP:TIKEY_UP PCKEY_DOWN:TIKEY_DOWN PCKEY_RIGHT:TIKEY_RIGHT PCKEY_LEFT:TIKEY_LEFT // Functions PCKEY_F1:TIKEY_F1 PCKEY_F2:TIKEY_F2 PCKEY_F3:TIKEY_F3 PCKEY_F4:TIKEY_F4 PCKEY_F5:TIKEY_F5 // Standard PCKEY_RETURN:TIKEY_ENTER1 PCKEY_SHIFT_L:TIKEY_SHIFT PCKEY_SHIFT_R:TIKEY_SHIFT PCKEY_CONTROL_L:TIKEY_DIAMOND PCKEY_CONTROL_R:TIKEY_DIAMOND PCKEY_MENU:TIKEY_2ND PCKEY_CAPITAL:TIKEY_ALPHA PCKEY_SPACE:TIKEY_NEGATE,TIKEY_ALPHA PCKEY_ESCAPE:TIKEY_ESCAPE PCKEY_BACK:TIKEY_BACKSPACE PCKEY_5:TIKEY_PALEFT PCKEY_OEM_4:TIKEY_PARIGHT PCKEY_OEM_PERIOD:TIKEY_PERIOD PCKEY_DECIMAL:TIKEY_PERIOD PCKEY_OEM_COMMA:TIKEY_COMMA PCKEY_ADD:TIKEY_PLUS PCKEY_MULTIPLY:TIKEY_MULTIPLY PCKEY_DIVIDE:TIKEY_DIVIDE PCKEY_SUBTRACT:TIKEY_MINUS PCKEY_6:TIKEY_NEGATE PCKEY_8:TIKEY_PIPE PCKEY_OEM_PLUS:TIKEY_EQUALS // Specific PCKEY_F6:TIKEY_CATALOG PCKEY_F9:TIKEY_APPS PCKEY_TAB:TIKEY_STORE PCKEY_NEXT:TIKEY_MODE PCKEY_PRIOR:TIKEY_EE PCKEY_DELETE:TIKEY_CLEAR PCKEY_OEM_SCROLL:TIKEY_ON // Linux PCKEY_SEPARATOR:TIKEY_ENTER1 tiemu-3.03-nogdb+dfsg/skins/ti89t.skn000066400000000000000000001424511220314353500174220ustar00rootroot00000000000000TiEmu v2.00¾ºíþdTI-89 TitaniumIñaki NavarroÌàÏ1."TI-89TM?^{&P=Ofx„T¬{ÈWòS7{SP~w9¥rÌ}°·ÓÀ´ûÔ ¯4Øc°ŽÛ6‡b°4ábþ:Ørý}áµÀäú9s-~·4Áù6>3J ‚-97s^}B¶dÁFùgD=dI9_9hr~r´—Áwø˜u=–Il9™q¿¥·Í¦øÎ¥;ÌIšÀ9Êqñß¶Âàøà:IÊ€ñ8üq!µ@ÁøA;>Jü#>*r^‚R¶yÁSøzS:yI-}aÿØÿàJFIF,,ÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀظ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?óVS&¯{!À-;ž=ØÕ"ÔýNCý¥uƒÿ-Ÿùš Îhh¸õ¦™@ïU7ZM݉¤“8¦™ÍWÜ(Þ(o8úR‰Wó'›@ÄÔ¾xÍSÒ:ÐÃ8õ¦™ê™zO2€-™©<Ú©æRy”hÈ)<Ū¾e&ó@|ÁéG˜*®óI¸Ð2×›IæÕmÆŒš³æÑæÕlš>jYó¨ó*·ÍF–|Ú<ÓU°Ôa¨À–—Íâ«a¨ÃPŸ6-VÁ y$j³çQæÕlñG4hKGš=ª¯4dп20ULš7·æ ]ëT÷]æ€-îSGËU<ÃKæ²Tv¦`Š‹Ì4 (lš\Ô>e(“µKšPj2—x  sJ¢Ü(Èõ  ·ââ¡§ PÛÅ(jˆbõ DàÓ5\ëN hdEBŠ`Ktq4œÿª,äµná·;¶:’jº µ óH¤ó*ùµG\‘ÍWk`;R!õ¦ï5/’? CSƒ@î4dÔW=)Û2xÛùâŒÒ…cÒ¦ŒgÚŸ°Èë@ŠÛ”FÄgµYX™ÎÕRÇÑy©Œ+ Ò ?Ýêh‡”iÞIÇ"­¶ $ûqSGò ǦÈàô8cL ã;Rl>•¹›ª»šr¨éó€?Lº¶O@˜îvP3ŸX‰äŠ•,å»·ÑMt  ë›sö¨×Ø9þ‚œ|;¬?úÍAc@XçÍŒ«ÖÿtÓ…„§¬L>¢·¿á¼c‡¿‘§ÿÂÇÍ~Ùÿ®ýzÆÓå#îqî@§6^ò‡ýµ_ñ­ïøCc潑¾‹ëH|Gú\€wÊŠÆ °p2d„{Wüi~À@æ[qõW@<lN>Ó1ü¨ ¶ÀÍÌ¿¥cžû'þ>­ÿïåaŒu¼·ÿ¾øWD|iÆ'Ÿß§øS—Áö]æœþ#ü( вFÝÛû|ÔŸbCÿ/VùôßÿÖ®”ø>Ë마ÿ Càû<¯œÃü(Žsì øû¶úoÿëQö ãý&Û¾etcÁÖ}çŸôÿ ƒ­?écð ,s`Ïü¼[“éæRÿg?üõ€ÿÛUÿè[Á¶ÜâæQõš<{¹3þè V9ÿìÙs€Ð·ÒUÿŸ>?åŸýü_ñ­É<s˜¯?ï¤ÿëÓƒfíz¿÷Á ,b6›sÿ<‰úR6ìsöyÑI­¿øCï"î>~´Æðž¤§ä¹ŒÿÀˆ ,b›‘ÖÞ_ûàÔFü¤c¯¹ÿÞ²òÌ¿Q)¦+Äœ!ÇJ?Æ€±‰åãycƒžõ²ö:úrñHÿR dÕº5‹ÿ^ãü(°(òë@½Ò­Ó”ŸxŠÿ*®ãé%‚/º–õ4KˤòÏqWDö,~hæAìA§ˆmçÀ†uÜOÝí4°Ñµ½+F[)aoÞ!ÇcØÕpœò)[ =hË ±Ò—j‘é@·š_2¬yKÜsM1Ô’”KŠw’¼üÜÓ|¼P‰©ë'óQ„œ8  •è¦/Z)f^õ}úšN•{­4#ÀNj'?ʦL”Á$~ „ã†ã®ÚŒ€I=? —ë­FÇõ¯oá½.ÿPfoïÊr.•¬=éFGjC±^+kuÛ&?º TøÀäP ‘@ÃÚ’—·sI@ŠN=©ÀÅè9£ñ£·Z(é’‘±ýÑšÞeûÑ8ÿ€š±cu5¼ê±É€ì­ Zòâ;¯$># `S¢’1–FP}F)~µ¹«™g6ð§ÌXgõšlæ·e{ˆ™S#4X þT›7lm¾¸â…Fs…V'¾9®©Dßh¤}“ËåGøU!˜´é§µYœò¸Î3@Œxa‚;LÈæ¶5TßimpFŒ7­WÒ®fK”…\ˆØò¸ f~Ç9;OåIŒu­o:yþÓ¾w œaTt¦ßÇn«G`6á?Æ€2úP:Uæ³ày •ÎϼqR dhÖk†@ …\Ðr©`Hâ€úõ¢¶ïn.Ñ&*¨0~_¼?¥E-’£@›¼Ð ã  }izÕñ¦¨šti¶ˆ¹Ý·¯áN{ eŽ)~Òv9Àù9ÍfâƒïSÝÛý–smàw¨;æ¥ã½ Î:ÑøÐà£ð¦´Q¸!‘H=AïÆ“>´Uô>PwÙÂ}öY—~±Ÿ- 4 þÉÈün玴î1ŠÇ6‰«é™kwóãBsÿŽš ·6ó6Ù“ìòt$ ˵z-gê5ž¢§ÍŒ I`ÿõéŠÇqlÑU·)èÊx5_‘ÔV­æ›y¡±?ë­XòqÇâ;US sÆÓ[ž;©ê´«ØŒRíšR§8Ç4ÖéƒHBÚ›š¹â’‹E ¥ §Z(N´SÄ‡ŠŠ3óÔ²*þý4£ÉOéP7SR&vTo’2GOJ@ØSŒŠiä ž{SÎOãò¤ [‚¤?*B0>fà:ÜÑôGÔn.We¸ûˆÞÿëT:”ÚÈ–U?f÷w Æ¡TaLi k„PŽbž03JÎ))&(#©yÅ4¹þT¼vÅPh¸Í4»~´ºÐùÒãŒb–“ÓÒ€ö¥ÇZþW†ÊI#Àe³ôÝNImØÍó8`9ÂðiØ ërÄd0A5sR’)µÙ"• Ã¥cÁy Ña †*y²ÝCí’@§  íZDÛÁ:£#sTc¼•¦Œ\K#F¤ñYÑ]C;b)AS3Áüè¤Ü†ø\­Üb ¼®ÿéTà’Yn§k[˜âLçæè}À"²9õ£#8ïEÀÕÖ.’TŠHÊ2Î:U4âú2Äy5S ¦‰Q¤(W=(J"£í¿2œŽ2}êÇ–’Iœ¡„( IïXã“G g4µ+H¶·+;§Q±A«]ómláW>ÕŸœý(8ÍnI€{õGù ŽãÓZ´Gi,mÔP—V7¹¥ä}haÝ~Õ}ó/ÜàæªÈGöm¸ùIÞr3T>´.ÍSó#¦ÑÞ¨cž”ÿ­7¿€>Ô} Í-âƒÓÞŽÝ(ížôsÍP©HïŠ;Qz:Räãšd‘«¡GPÊF"¸ígD›OŸí–(L]YGðÿõ«´äisÈô ç ²é ‘€üH?UdÇ^µ¿­é¦ÏöëAû’~dþïÿZ²'DuÄ0ÛÐúS$©ŠL{S^”™4„&xÆ%- rQJh  t¨S;êy:†?¿@‹ñçf•A&Kâ¬. žƒ=ªž)žœýjK[W»»Ku;r~cè*3€rJñ]O†4ò‘ý¥×æZË;X¬íc†„QùÕŽ1J? >¦‘@?Ò€ =y£•\ÜM§©ˆî•N‚qéW¢µ†&Ü‹‚sÜšCiXí ±É!ˆæ‹ "±œJŽ¿¼ §æY:ЬÌâòõ•¶°EŽÕ¡1Å€å$œ“øšiµ™ÛÏÃO4F+¹Œ‰o/Ë8É•­Üò´#ÍrÌ…œ:…‡¦¶Èžf3ûÎZ˜láÄkƒû¿ºsȧ Á<§ òäõüj%¾’ ¹Rr|¦ÿVxê;UÁgãi` çnxÏÒ”ÛEüJXnÝÏ­-ÏûeÃZI#FóB€ jG{¥¶Ý’ ªòe¬bhÙ |ÞyïN«—àç–Í0*Át÷NcÜÑH«ó®AüiµÛÁ,‰3;«U â¯ù1‰Œ@|`‘L[dDdRØc“Ï4€‚ÊëÌÆí0VUòÅh gÞ«Çl‘Éæe™ºdœÔÙ'0õ4~4Üã½½iàG½ù¦îõ4ó@¥õ¦ƒùRgÞ€Ö“ô£Û½h’F²#$Š °Á¸®Q°f ÐÿË´Ü©ô®ó9¬íbÁu ##÷Š7!ô4Ð4p!ŽB§µFx«2‚ð‡#çCµª©4ˆ (¤ d‰E"õ¢˜d¨cûõ4êþÿZhÇþ¯¨ÍDÙ>€ûTÑão úT2޹ý)Œdq´÷1B«÷˜gÞ½Ö‚Ò4€ÈÍq^¶ûF©¸ò¡"»ÒQóNô†ˆûôÇãV?³õ.s£ê¿†Ÿ7ÿP:õëÁ¯~ïQ9r™Ô›¬xR隃¿LÕWé¦ÌöZOì­Kw:n¦¯ötÿüE{¶¬ý«2öòÁ~G¶ŸqÿÄW¼bŒQí{y tmLpl5ÿpéÿøŠ©wÓõÿpéÿøŠ÷œQŠ=«o#ÂF‹©`cûÜñÿèþÅÔóŸ±_ÿàºãÿˆ¯uÀ¥£Ú±ûyý‹©ö±¿ÿÁ}ÏÿL:6¦0~Á¨ó×þ%óñÿŽW¼âŒQíX½¼.§ŸšÃPÿÀ þ"èšžãÃPÿÁ}Çÿ¯x¢jÃÛÈðoìmOòÔ?ð]qÿÆè:6§ÿ@ýCÿ÷ün½æŠ=£o#Á΋©ž~ÅÏýC®?øÝ!Ñ5LdØ_Ÿa§\ñº÷œQŠ=£o#ÁƇ©ã?b¿Ï§ö}Ïÿ¦¶ª¯Ùú‹{:ãúÇ^õŠ(öŒ=¼þÅÔöäéÚŽsÓû6ãÿÒÿdj@ý›¨ÿàºãú {Å£Ú0öò< i†ÑÿíHŸOìÙÆ~Ÿ%FtÍP4}Wö›ÿ‰¯zÅ-ч·‘óì‘͆+‹{‹yB†Ù<-`ç Ê£#<×]ñþFÈÿëÆ?ý-r^Ý+X»«—2¹ÃkV¦×T”û¹ÆáÇzÅ`AÅv>*ƒu¤wïFÜý qò}ãïT `¢Š)õ¢„¢€,ËÒ¡CóŽ•4*ûôÄhÆsC&0x¦‰°€T3©*yãÞ€:/Åï·×XÀÐÜŠçü"ØóŒWC!`óƒ×4ˆ$ç8¯~þ*ðýG5ïßÅXÕèa_ ´QEbs…Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Sñ?ð•FéÆ?ýJäO×|GãÅQ×”ú•Èé‡ÂŽÊ_3uˆDúlèºHúן1ÏZô›ÏšÚAßi¯6`C{²ØÚ(¢‡­-À³!¨‘Il€OáRËÒ¡_½×¿ùzšŽçåŒâŸ,2ÌsëQÝå‘ÉúŠì¼*¤i ñÈ®€ä.8äV'†0ºddœq[R/ÊNGÒ‚ˆO¥{÷ñW€óÓŒ~UïÝë½ +ôŠ(¬Np¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(Ê~#ÿÈÓ?çÊ?ý%r xäW]ñ?ð•Eßý?ý%r 8äWL>vRøÿ4l=«ÍîÛ‰WÑó¯IpxíÒ¼êøm¿œtùÍYl­E-„9h¡h¦™:TH>j–N• ýê^Œàt¨îÿÕt…KJÔ7]=Í1ï‡ãÆ•qZ„8ÁGE=. @?-^$¶sù E’wc5ï½ x $E{÷SXÕès×è-QXœáEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP”üGÿ‘®/úòÿFI\Öºÿˆÿò5Gÿ^1ÿèrW ÃÓ…”¾BüWžêŸòŸýêô7ëÖ“f«(õ欶gqE-%!^´P´SÌ• ýê–J‰~õ/Cœb¢¸åÐcœŠ’.GJlŸ5Ä@⦣iŠËcøzÕ¶cÓ©÷^ÈbÖ1Æ1VXp3’ ê*K 9ÏLsÔW¾÷àG¯ ^ú:ÖUzõú EV'8QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEåÿäjŸùqÿC’¹k¯ø?⪋þ¼cÿÐä®E¸WL>vRø‚9æ¸m}6êî3]ËšãôŠ!#ž‚½ëø«Á°Np:÷¯yïYUès×è-QXœáEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP”|Hÿ‘®/úòÿC’¹žõØ|Gÿ‘ª#ÿN1ÿèrW x=+¦ ;)|†CÇÏø”a×½o¹â±|@¡´ÖÏjÐÑœgj(Çb¤‘ê:QBŠ)<*õ<*÷¨n1Ímx\}!ÅcÄ>SÅoøQG)Í7 bœÜó‚3Ö‘IÏ\÷Îi_zãÔŠEÎ+ÞÞ¯<ž¿†kÞ?в«Ðç¯ÐZ(¢±9Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( (øŸøJãÿ¯ÿô9+‘'×|H?ñUEÿ^QÿèrW"}ë¦ ;)ü…ø=«\Ó¤Éǰýø¬\ÿ KòçŠÐÐâ;RP(ÍI#ÖŠŠ`O%B>õM%B>õ!c å+¦ð’b&fMsHÈ'µu~ÏÙAÍPÑÔ¯Lô7Üçœq@ミΚp¤ägÛ5% $™Îyâ½ÜýêðsÓ§_z÷Žõ•^‡=~‚ÑE‰ÎQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEyOÄ|ÂSOü¹Gÿ¡É\y⻉(‹þ¼£ÿÐä®<ý+¦ ;)|…úÖfª ²”²kMûÖv¥ÍœŸîÖ†‡øQAáÖŠ’G­-À±!¨WïT²T+÷©¹‘äšì|0ƒìq\Ý·5ÙøtmÓã#ŽÔÆŽˆ) d>½))ç¿®hR@“ŠñžqßšEuǨõ5ïëÁÛ#ÿ×^ñüU•^‡=~‚ÑE‰ÎQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEyOÄŒÿÂUô²ÿC’¹]Äù¢çþ\£ÿÐä®@×L>vRø ô¬ëþmdìkEú£x3o'Ò´F‡ÿëëIO”bwôÊ’G­-ÀžJ‰^¥–£O¼(aøˆWs ôóǸg@+½ÑT-„_AÖ£iAÚ9‡)?Ö‘iâ\¯E±VéÓ¥yÜÞCŸï ôk."O¥EåéÈ9úÓ›îþ8¦‚YsƒŸj žF=JE üµïÅ^’N8úW{qñSC´”G5¦¢ò?wÏþ?YÔMÚÆ¢Ý¬wtWŸŸ‹ºëgª}|”ÿâé§ã‡”sk©ÿß”ÿâë>Iv0ä—cШ¯;ÿ…Ëá¿ùöÔÿïÂñtÂæð×üûê÷å?øº9%Ø9%ØôJ+ÎÇÆo Ÿ³ê÷å?øºpøÇá¢3äê÷í?øº9%Ø9%Øô*+ÏÆ/ “ÄýûOþ.ÿ ƒÃßóí¨ÿ߸ÿøº9%Ø9%Øô+€ÿ…»áÿùôÔÿïÒñtŸð¸<;Œý›RǼqÿñtrK°rK±èWŸ‹Þ'×R?Hã?û=/ü-ͽ¦§ÿ~Sÿ‹£’]ƒ’]ŽþŠóññwÃ祮¥øD‡ÿg£þ÷‡{[jGþÙ'ÿG$»$»Eyøø¿áî¿eÔñï ýžš>0øtŒý—Tÿ¿)ÿÅÑÉ.ÁÉ.Ç¡Q^yÿ “Ãóë©ÿß”ÿâèü8Ý-µ"=¢Cÿ³ÑÉ.ÁÉ.Ç¡Ñ^v>2xpÿË®§ÿ~ÿ‹¥ÿ…Çá±ÿ.Ú§ýù_þ*ŽIvIv=ŠóÑñ‡Ãdà[ê$ÿ×$ÿâéã†Ó­¾¥ÿ~Sÿ‹£’]ƒ’]C¢¼÷þ‡xÿEÔÏý±Oþ.ƒñ‡Ãª2mu,×$ÿâérK°rK±èTWž¯Æ8ÊÚêdzˆ“ÿ‹§Âßðÿüùê¿÷å?øº9%Ø9%Øô +Ï¿ápx'ýUÿ¿)ÿÅÓÿánhìõ1ÿl“ÿ‹§É.ÁÉ.Ç}Epâ÷‡—ï[jKõþÏ@ø¹ ‘i©‘íñt¹%Ø9%Øïè®|]ÐK=LÿÛ$ÿâé?áox6š˜¦$û=>IvIv=Šóïø\>Á?eÔøÿ¦iÿÅÒÂâðîÝßeÔ±ÿ\“ÿ‹£’]ƒ’]B¢¼ðücðâŽmµ/Â8ÏþÏ@øÅáÃÒ×Sÿ¿)ÿÅÑÉ.ÁÉ.Ç¡Ñ^|~/ø|øôÔóÿ\“ÿ‹¥¼>zYꟌIÿÅÑÉ.ÁÉ.Ç Q\ü-Ý86ºž}<¨ÿøºrüXÐö‹]Kw§”Ÿü]’ìÎ]Œˆßò4ÇÇü¹Gÿ¡É\yï[þ*Ö­¼A«Çwmñ*@±0PX†cÀÿz°Þ·Š²:é«E&DßZ©7B*ÓÕY‡«Eœf²˜¼'=k8Öž´¸»ÍfšL‘Wµ-bJ‰ÏRÉQÇ’Ô„[³æþ }kÑ-Gî×é^y` Ôcõè–À…^3Å1¢òW#Ÿ¡¥#'•À¦¨ 1FÔH¢6_˜c¬­J,êävÅj:³OOLTmãL Chr1Î*6´'’µÐAd×/±NROjyÓ[ CÆPq»·ò¦+£—6g®)cì*è…©gÚÉ8Ò½„ˆ hÈàÒæKF3š6«ŠAgƒÀ®‡È”† wŸk<œÿ@j!d3žGÒº?³gµ7ìËš.:m9Ê’?<ÓM›1ù™Öº6µšO±Š4û+0ÇL~%»(Ç?t?cŸd„!s€=À”¬ØÇw϶l”uïIö5Ïô4\ @“.pÙ_Ni10 ßð#[fÍ}7ì|Ð ÿXy¦ùS¿ós[ßcàÒ}ŒtÅb>ÜÇÞ‘|ý¸bG¸­¿±Ñö0{P IrÌ}ù5!`N>œÖ¸³ô L{P@YÇ+øR…”tv5±ö {@µÇ(dÏÜÿºiBJ¼Hÿi‰­‘iÏ"—ìžÔŠÑÈÇL’(òI\cLšÚ£üŠ_²Oˆ"”rßaM6ÅÛ/“ì8­ß²qÒ”Z{PÚcŸ‘©³ó/JÚû*ƒÒ—ìé拆mXžsŠ_±ûšÛû8ÇAO`c\ E³èNìŠQlkl@¥X< þ\ u´>ÿ•J4„^Ó9Õ#É5è–ÄR}+ÏteÝ©&kÐ!û«L¤^WË` pݲ{â‘Tç°ýhd$óÊÆ7^úÔÕ•ƒÆ£g뺘­.D–$ôê:Õ˜u/”‰ÇÍ»=sX77°Û.é\(죩¬ Ÿlr sÛpÜh¹-&uòH38äWeº¼œT ·ËžkÎׯ*~xPýS«aâk[¦ 0ò˜ÿUÿëTJ*NìgOw$2"˜ÀE©ýiÊÙ‚ìG9£ô4ã+ zÕÛbt•¤U%GóÒªÎ=ié+ÆŒ à7U jå¸ÒÈðÇ…8Ö£´·Žàººç1Py®"1äm'8¢‡·“tdnúf¦i¸è$&Ó`å†í¸õï@ÒbmáKdŽzÕÕ¶!äy΂ÿZrjìù1ÉA;åXrUî2s¦B eŸ†Ú1LZ© Îw1!p)¨äœÆ­“Ÿ¡§.£€ &âG8Ū$s‰;g§z§siä2‚A$gÓwûLìUÙÐäœòjµÍÇÚ%-£°ÍT=¥ý퀮ï(ž*ÈÓI ‘2£-׊Šʬ{Õyu Ü3³1a}Vºúdµh¤ ò’zÐÓÚÄ«…2&ãÆ9⥞éédê}jÉ¿ƒi#yɧJÊ£’~èÕÊo¦È„r­Î8íBé’y¦2T3œñWÛQØ Jœ€(Œ{i ‚1XóU¶Á©EôéòàzTÛy2l|gâ´"Ô VÜpäŒ`tZòdšmã§½i;Ú@TØ3ÐÓ¶Ž”îüt¥ˆÇc[ t,Ò…,=7f­',ؘppp¦ªÂë‹!<š¸š¢'˜ÅXsØýkœ÷÷DW“O(¹Þ -¶¥M5 ÞQgÝŒŸ—ùTrjÖÓ)V ÷²̹üªEÕUJ¨Œí3sQûÛ-Œ$I“(1Œ@ª, 9U¯¶`H0c­UÎO`8¬~q[šé ÂÉÅ&KÜrõ¢…¢€,IQ¦wT’TK÷©ÓÑþÑúW \ôÅpzÿO®ò.‚™KbâŒ(À÷Í ÷sœúãµ"©Û€yõ¡·m#¡¤1Ó;xïY·÷‹gãË­3ÔÎ rš‘{íV;mÇh8?Jb![YµG2H̱“É=[ÿ­Z0i–°.%úâ­¨E1ÅiÛxX¼µK›m:y¡|•t\ƒƒéTíanà†‰yö¬}CÃ襴ùsŽÆºDµ¹t‘ÖÞVH³æ2¡!qê{TyÈæ‹… j“Äík(,ò½×é]jüч(ÝW#©Eö-B¸ø v¾+§³t(3!aÉ^ÿQÞ¤ qÞ‘†*MŒyB~ªGò5#/Yc_÷“úÐ2½ÍÒ[ÄY›ÓÖ¹{ÍNööC ²°‹ýMlê ¯ ‚0LË3)ÖöÑ[FSM 9±¡ê3ŒÉ8_nME.‹©ZñJ\BA®¿4¼ƒE…c™Ó¼Euk'“z¬ëÐîûÃük¯†tž%–'ÜŒ85‡ªiQ]ÄYF$†‡®=ðÄŠpèÃ*•€é³Üòi3Šrü鸣§©ÆåüÇ?¥ *OÞ‚·øP1ÇP*µÝìVq‘¶ÔÔòåFú¸Àÿë×9wo%õëDd%Wï¶?A@n¼Ky4…,ã+þèË~}ª¡¸ñ Ù˜gŸ¿]%½¤6È4¬`zS°ŽIuýbÊ@nC°ôgõ®›J×mõ%Úd½ÐŸåOšÚ)У `}Eswwö]ÒÊ›¼‚{uZV·uÏåKƒëTìe2¹ùò8eëøŽõt8.?ÞFùP0ÇŠFp‚GE;Ï¢)?Ì ©xYmœ»×Ôÿ…eêÚßLPa¤éœgJÆû.­¨Îìª{¹þ•±e§ª·Ú%\ÈÝ3ØVˆÀ§`9Gðíú®å¹½9 wº¶ŽãÌÜPv<©®ÌQOoÄe]A‹ Ã4­b=B1ÆÙ;®zý+PEr¶Öë¦ßù,3 Ÿ÷Ó5ÓDÌꚤÓEÉüÇ4†J:õÅ&}éåãl?÷ÓS]\3ñýÔ€2µ[ãL±›¡#µbÚit|ëÂpy þ5¯:-Π±ãÄ7ïSû i vVñ¨U‰@úQ&Ÿm2Ñ)ü+¢»ð®¡§Û´×rÙÂU7ˆšáw°ö^õ$>UÓ-u íVÖÎ  La‘ÙŽS°®yÖ£ ½«‹2F9Ú+KCÕÚåDS7ï¹ïZòªntWÞ ÈõÅrwq;YWOºçp¤ÐlvùÈÏÆúTvïæÀ¯Ï"žßZ‘·ÒªÍ÷MZ~žõVn•Hg]X]«\ÎÚÀíI’Ç/Z)W­‚±oA¼Ô ´‘ÞþÕ³%Ý­ššt\™¤À·Ôôü)îšÍ´¯â ^Šâ„ÌR«ƒýÓšC3á]ÓÍ)õÚ*ö™oæ«im+ŽY’6#¨U Râ>àîJ³¥Ì–úŜҶÈã›Ð5H Ÿiš>•,ö¶©¨›˜œ/™.ß,þ™¥°Ò4­^ÎèYËwݵ¹ŒÛJ>1‘Ç"¡ñNµ6¡«ÝGì“Yo %:uó­£¶²ðûÛ隥‡Ÿsnå–]®3å¨Çÿ®˜ŽHô¬6CˆF΋“ï[c&²Ÿ÷¾ P9؜ⓡ†G@ ±Ú¬}®lcÍoΫ/ 8§núT ŽîV3Ok>Ö?.ÙXýçù\½¬ÜNÕ]>kHXt(*:€u˜o&kØía´@ò;©n{¥BÖz߈¯[ìÜn€}6õ­¯Ü}ŸK×åÄm¶Ø’ «zŽâ±`–ïTÕã{k8ãªÁ*àw¥P‰õM iÖ6wÐÞ%Õ­Ö팡uÈ5‡u Ïnñ°È"»«M{àja™M´m…Hûƒ…?•rdði3¼?3LmÖ6+]*\Jª>vüë™Ð—/;ºd5Ðg,dÍq#u‘¿:ËÔI’X¢ìÍÍ_ØU ó²æÞC÷C`š<WI¤h–›UºKÉÞ;(ClFHÀäð}k›™J9ÑéÚÔv^»´Šñ¡½{ ê¨Hb¸äU ”-ôÅÔuy ·I-m£ËHÓœ˜u-ïSx›O³Ó5³Øïò<¤p\ä’FsL°×–ÖÂæÖ{$ºûK†–G‘ƒ6: ƒëÍOâ^ÇT¾¬¡@‰©— °ÁϦ(‘Õ“6¾`ûÈÀþµ¥dw@ŽqTµ>ÆAþ"üêý®#·\œ`Rc-ß•Q—U²€âK˜ÁôÝšXu{ÛÜÆO¦qüé^Üfòì‘ÈÅ?øé²:Úji+¨˜lcéèj[ˆš'þDSLÛÇ—vqÞEnö %ɵý ÈÀ¯^ƒ¡¥ðÝÞ«pštZ|F€6ùç€mØI$îoé\=ÅåÍÜ‚K™ä™ÀÚF$ãÓšižFAv(:.xÅbæ¢mΧtm-Œ­å»ž?Jå|G:Û{&·Ðkš¿—íÚÐHùHþP}è`túfM„y<ãµY|cÞ’Ú?*ÝÐRµ@È_¦j¬Ý*ÓU'áõö«íÅ0Á昌[]DZ±µº‹¨Oê*ÏúÇ÷wH§û¯Á«7–V÷Ñíš<°èê0kÏ‚!Y=$ ¾ñCÝ-Ä(½r\VeÖ±+!æ7C)QP¯†îËsä¨ëB×ÃñDA÷°ì8ÄP²³º¹R"c±ùäîÕ«o XÅËÇæ¿rç9­4 aUBKœã¦i\ ¤ØÚlâÔ £/‡£¼Û^ì3khuçšÓ§  r+ùì®×íh7ŽÿxV³Â³D'·mñ7qÛØÓïlb½„¬Ÿ+º{×;ÿrbf êU‡¸¦3T†§MPÿ„å­ŒNÞªä~•ž%vR!µ†#êXµÍ©ÖÎÜ»ýã¯rk&ÒìÛ;2Än.ä9 Ÿ2ÞÖûSŸÌbÇ=]øè+£³±ŠÎ<(û±êh,Úkw_4— n?º£¥0èú¢|ɪ>Œ tõ£ؤ?öÝFÅLwðy‘ôó®i—Q\ÆÖ†îZ/jÔÚ Êw°u-) oµYdm;ŠŽßJË® æ˜ÕkÆêP€³<Äàþ"¬ÿhé 7 —Æ#Nà8eA¨Î-­JûÙ8QéïQÜkv±)¨]¿¾ã~FÞÚçT¸21bWèô\ ­¯þËÛÙÀÓJ{Æj±kW_4·K?£¥kÛZÅkHÔSŠž#LÖaæ-A\ú0¨î//£ÒzJ+£1Þ›"$¨RE §¨"€(Ø\&§n#ÜÌc¾=E#ÆÈH ƒY׺LÖ®&³Ý´r6õZ!ñ,ñ¨Žòîãs|­ÿצ+šÔˆ‡<ÔÖkø’!÷4ñŸö¥ª²jZŽ# 6ž‘Ä?EÆOux²Î ÑÆ~P?ˆÔÑéךÝy)ŽÑ'6Ÿ¤˜ˆšã»/aZøÇjL èô=: 1n÷-“I.‡§Î?ãÜ!õCŠÓÁÎ{šç.´‹«hYa”Ë÷QOÓµåŽk¨#4kÂÈ¿y~µÐcŠÎ½ÑmïõýÛ÷a@‰‘,î†ëkÈ_ØœQÊ-mFgº‰qÛvMbÍáÛ¥o”Å'ÖŸ…z§‘ CÔšMCVySɲG†•†3ô©ô= DÄ€çøsßÞ®ZèÀâI\Ìã¦kT £¾jCÓ­DÜ÷©IãÖ¢c@ȪÏ:U¶÷ª³Š`sºÏúºçEtšÈýÕs”™,rš(Z(yF½êI*5hµáÂ>ÒÜWo"¸¯ ãí ‘Ív©È ¤ZR*wÌã¯zddcóÁgŠC#`xìižù÷ÉÉ#žÔÄ!äõ§g±4¨¤hvã@çõ¥ã?ÖŽ ŒqÖ x#4¸ëšg8àS°=F(Áÿcž óÎU—B3IëG'ž(¤šMŒ¤—¶\û R¦—cù-Ó#Ôf­ƒÅy à…j)h ɤïOÅ4ŒPsJ üèÆ;R•ΕgvrñßÞ^*ƒxfß,ò(ô­ÁFsL Ë}Ê– +´kEQc@Š¡@ì)Ôs@ žÜQϯ¼æ— œ{Ñš8¢€•ÖV—<˱õïSö¢˜§õò~¦­CoDª=…MŽ:ÑŽxæ€2iÕXŒ{Ôw7+mv?ýzä5meÝŠ“ŸE@ιk;¤ÉqùÕ!â«-Çp“óá\cî[$(6O×<Ð+ý¾½erp³¨oGýkI]Xvɯ*Ù,ž‚º [–¨îZ/~«@\íÀê)¦A*Ͱ`Aç"¥üó@ÄÆ:ñFh#ZNG=è DÇŒb¤=*6¤MÓµTš­?µTŸHXJçk£Ö?Õšç)2Xõ¢…¢€'’£Z’NõÏ4„nxl=Ž3]¢t®3ÃdùÏõ®Ò>ÙÊE˜ÂœzûS˜àu9ô¨>^çÖŒñ·=©È ÷4Ò l¾‚žØÑÁê?`4ŠÜrGÒ”ž´«÷°E SŽÞÔc©­%‚ °®Å;ºžô8rAbFV²ö¨ Ügßñ¤_sŠžxÖ9W8r1Q°ÁÆ5¢wW¹—B(o|þ4`äg4ùÆ ÏïIõÅ8uàRc§„g¥õ¥ãÓŠ;wüè8À˜ÏBiØà‚0i1ÆhÇÓ4ƒ?ZpsIŠNÞô©qùRšNi)xíÍ¥%c§åJMã­úfuæ—ŽôPÀ£ð£œPsÒ€ ö¢Žô¼ôý(?Lñž”½:TS·—=ûP³{†~x^ŸZå•L’$ÉÉ­½nSËœšÊ ô¦&=ÐU™-§†4yatWBÊ@aê=k¥ð÷ü#º(PÖdû]Á£³„ è\ôÏ·ç]5÷Äo ëV¦ÏQÒ&ò²í%=ÇLSÐG•²†Š¢Ê`—rž ®‡X¶°‚a&x.-œ¹]}˜æ85‹0 ´˜G‡nد’ýÊ×H§Ö¹}ñJ?„óô®¥TŽ=³ŸZE8éMíNéÿÖ¤ ŽOë@ šªBj7Æ9¤/ôªs“Š¶ãŠ©8⨠_ýY®s½tZ¸ýÙÍs´™,zÑBÑ@$ïQÖ¥“½F(¹á¯õÏÇzí õ®+Ãy·Ö»DéÍ"Ú«ÎE;' ý*8¹Å<ð3ü¨®AèB\ ÏB;ƒR·©ýj ÓçÕî ¼lRÿX㿵4›ÑijÊ7^!Ó휩•¤qÔF7U1âëüÑ΃ԥvÖ¾Ó­£ ¶èHîE>oiòŒ5´÷Íiì_s/jrÖþ*°t —Š£Ñ‰δ¢ÖRá•–xäÛÈÚGô¢çÀš\Ù"„ÿv².~ª‚mn6ÍC¡ä5Q 7™!}Ü“šzž}EsxsÄZxÝãH£±9þu6Ÿ®9›ìš‚y7Œã†¤âÑjIFrIÇz1ÎA¨•ø§†úÒìàt”ñ~•“$jKª=MgIâ 66Ún“>Æ€:8m£h•›$¹ÀìKöÙð¬Ã ´×=ŠlQv‹¨H÷#Š»‰à‚“BpyÁëXJ5/£I´Ðsµ‰'ªSB"r™Šlzº™üÃ*±=³LóQÉ95pS_@Çsߥ7RwzRðzñô­|6òNNÎq×i ûJ°=8§b[e²¸v $ûŠŽH^Û ‡lÕæ½ˆ˜ðÝ“Çj£<¡§fSOZ4lzÛM${Ò<¯Ö“ì²áIC†éïV­ïR;e^ ç¿jïmÝv¤˜a‚ W;œÓØec98óßšG²™qRÖ¯}¢ßÏ.¬WŽ™¦K4oj£r’£ƒšçu ØÇZ9#փǥ&à:æ·œsJWƒT.µkk\ù’àÿuzÖ<Þ,·S…CõcšéE'·z‰ci[Ì€ð=kßͲÈ7–f힃ð­¸/ã¸Vϵbø†0·Vò7 »é\äÑ´S:È8®ÛW´ûmƒ¨ûÀdW!.g¶Þ×CòIî;éùSmayx ¶¶šP cò©Î‹ª/[ ¡ŸúbßáZÕWN‘Ú}NîÚÜZV!¥?È}Mv|EÓomE£&¥f.!›ssÏ?­g)I='šOÖòæãqÕ]pEF¹Ç­^ÕîžçQ–I/Zñ‰ÿ^s–4Û¼Ù‘q’Ç?…ZÕé1yvˆ1Æ9­¨ÑvmfÂÿ z{¥n‚8€Çj{^-°%œß4NÀ«maÏèi¤óۊǹñ5”#jËTÆåÿëU(üYjÒ€~Qê?úôÑrj6éUíõ.”4röèjfm܃@¹ªsŸj¶çЧ9âšW?»ƒšâü7´7®k´·‹H2 ´óœÉúSP¸ Z~/}h)•>Üç5Ðè‹‘˜ù¤ËêsXj O€×Má·Y´ÖµÏï­Øü½Êž†µ£¹M‹*Å•œ“-³y«+“µÕ†Æ?­#FAæ­ÙÏo¼ˆÂXæ~<ä¾€•¼“¶†+}Ji¥O-¬s£)W›ÉÇ¡<ô¨ÿ²¯JÉDæ7ØsÈöë[Zuݼ0ZÁ#ðec 9é´þ`|QÉøÛŠÓÕn¾Û¨K(]±ƒ²$ìˆ8òªX¢Ã±Q¼=á‡êõþŽýBþðôŸêµèO¤üšº}3M±xæ¥u²ûù’Cý=kS_ð呺š=/÷w y-˜ãrã;—×è°hpÁÚxæí=·Àãùf™6¯hQ‹‘2^Ùƒ27Ü?> ýkP­Miu%œÛÔFd¾ë¯piX,G¦ê‘ßÂ}àzŠÐßì+ŸÔ¬×Eñ"›r~Í>}Õ†Gó­¼á xÍ {¨Ca–g A\ߌnšCöh‘S¶á’j–·~ú…ór|¤8Qýk/ æ›x§ToãAôZAâT Sÿª°X]Ý)k{i¥‚Q cò¤û ß–ò i|´8vØp§Üö .\(ÕG>bß54^/Ô³"FãèEf=•ÔvËpöò¬ p²!Iö5=¨ ö“¯Ã¨¹) ꆶäq^U²A2Íu9ȯEÒo>Ùe½Èçë@Ñ¥‘ŒœW?¬k2ñÆqŽ­Z·÷g´wã8À®þV‘özòÆ€eYç–éÈã4‰bÍV- i$X£BÎÄ rMkêºtº-à³Õ®•S„ó·=ÏJiçä°’>GéW4ÝRKYBK’3×Ò¬yá¸nj•ÜJ~`9ÞY܉ãç#×­sÚ¥¸²Ô÷cÎ6°ôÏz_ ]³Fbc’>•¡â8V]?Ìî¼Ò(Ïд…½¹˜Í ’¤æU`‹ÿcÐqï]\Ù]Û‹G°ÒÚ1­½â‰é‘ÉükšÐî­bóæº–Ñ2ƒ:³œãøPuúž•®¾!ÓeùP16ž¥? ¼Ö±µŒe{œ®­§?Pkr’¨À J ~ƒõ­mÓ9˜Ž½=ªŽ½%¼ºª snS`Á‰OÈôúWG¦'—n½8›4‰5ÝÔv—v áµ-Z{éŠÆÄGÛÞ¯ø’ûθòœµ‘TæÛ–KÔÆ’M:DÐYñZÑé>“V–H¡—Ë™Xò8o¡éNÂ9›[¹ì¥IR;v®×M¾¶Â@H#ï ä.cVÇ5kÃ÷f Ñ7Æ) ‹j¬Ý X'Ž*¼ÔÆ`jäùuÏw®ƒW#esâ“%^´P´PòTjzÔ’ ~”ÙðáÿJl×oA\W‡OúS b»Hú E´9\g&¥É†úäÔQ{*_J]Ûzþ”èn.,çK›G+*t u‡Ú¢bqÀ{Ó|ÃߟƄì \éí¼g§LêVòÛKÝâRêÈ­u] ëVÜîÈvÈ× Ê’rTgÒ£6ñ7ðíõ­•gÔÉÓ]Lû 8Ìl’ÓcPÉi,y}F+Σ‚[s›{‰"ÿqŠÿ*зÖõËS¶;÷qý×Áþ|ժ˩.“;%³Œç|SªÇ¦Ù4×s ¨ƒ¨÷ª7Zî½v¦6¹XÁàùkƒýk*;4ŽS4¬ÒÊz³ŸÌÑ*« F›êG§Ú{e ãÉ© ¹gˆ4û÷,R©#Û5`6O=>•^öØ]@Tõõ®{ênO­iæÃS– wBÇÌ…ÇGŒò§ò¬â£Ïzвñ²ØÇ¥ø†xââ¨øxǧ¡Çó«Ig \óoâÆz `#õÓ8u'ŒÚñMÜ鸲œ:yj¡=qÍ?ûÿW­i­õ‘—ù­!ð½Ûs Í„ÿõÎé?©\|ŠnÚÞ>ÕÇüº©¢T#óÍ gk ¡»Ôæ‚IÐf;d`ã>®Göï@~(„ :âXâ‰[Øã8ýjiÁO×îõR/7UÔšú}ÄJç¹=ëQãß\vÇJL5’1þ,Ô5ÑMe‰¥µm`Û£cÐçµf\YÉe#ÔXV;/ L ð&¨Í5ì!nã;¬Ž$ä}zT–ÒɯxYí"»¹´—MGy¢$„¹ˆ¶Ioö¾µÉiÚ®«¥ÆñØÞÏnŽrÂ6#&¬I®ësÙ5›ê´’Ë»ïdääõ<œÓ¸?ˆMvºüö¡å,bÁ>Zƒ=k‹(kjçSÕ®ìRÎâúy-£ÀXÙÉQŽœUlìzR`R*H®Ë€‹÷¸®m­™HLfFáW½wE˜´±DÀÎ94†ˆ5âE’ŽÅ†q\]ÈÄ…±×Šîu˜‹éï¼×,>lr*~p=GzÏDøG¢ÚÝOs«ÎÈòÛ‘GÝIxÿ!ø× ­Ý=εy4„–yœœýiÞñ5dž5uºŒ…¾Y¢Ïß_ñªµ¹Ö®&´”Im;yѰ<á¹Áô#§áNâ(ï=i ™Z‡&•AcŠ@lxwp½l+¤Öv•&OjÊðí©ÃIƒÏµ5çò´Ç£ lq$«Ó¦)3H2@§b s÷®úÐæ×ßçÀí™ õ®÷Na$‘È hãµ Ü®IÝ¿z ¦­©ZÔ¦„ŽdOséX§ ‘@‰ÖLW¦üu¹Öµ :tZÜÚ1C‚?Äו†®×Â~'‡ÂUÝôAeÕ.‡•çˆufúœ`{SL ~3Ò Ð¼Kyao(’(ß+ƒœÎ¸®vÜ쾈ïS®¯&¾º’yœ¼Ò±fcÜšu„^n§c;O8¡ên™òÔûUyªÖ0€{UY¨(çµ¹X#­oêü%` L–9h¡h  Tc5$”Äï@o^k¸Œð+†Ðý8ð:WsùE"Ü@ã9©ã°úTq`ŒcŠƒ d}i’—Ǹ¨‚A54„÷Z¬¶wzµÐ²³%N?y&>è¡»j{VÎÔbiãCÜwüª¢ø—KÝr¹÷Jî,>i*´Ñy²wfä“Vçð*ᬓò¬½²Î"=RÒ\m¸‰þŒ XY‘ŽC=ëFëáV™&LAã?ì“Yü2¾µù¬5)PúMUˆ\µ¿Œçµ&xçZÆ—@ñf™–Ü—:¼š,µ2_³ÝDÐ\67Cô«ROa› œzÿ*]ݳQÈõU²ÛÅ(æ}ê²xvÎî]¡䎕h6:>ßT¶µrX‹0ZÁ™røfÝ•Y”î)O†®—o•sp7ŒŒH©­©5ˆóG†ƒƒV#Ô-ÙPïä)b‚nÎm¼?«/§Ï  ÿJjh D—rK17äð®«ívæ/(H¹ÛüŠ_66³ò Ó31Ô,h@—†<óÖdw©,©§Ã}ÖnÌ+[ZÔmB—Ž‘súõ®Ÿ'½±Ú‹É…ÕñìûoûàѳTÂÛþù"»[÷È;g¥hEƒä‡ Àòâšv8³ê§­…¿ýòÔß²jÒ‹m 9þ%SýkÒ&™”¸W0BýÙ–&¼G†€8 má¼%£e†âŽû'·ÒªIesÃ@ÿ]§º ïÝBIDñöõ–ah[k½Ä¼ Ssõd(=_åþuzÊÁ®dÄ üÏåZºvmzCý¯Í>€óú×Mo§CiÕ ì;Ð;XÚ%´ ƒ£ó¬݃¶nO$ èîç[»· ó»Ë–»»’SÜñô ½á¡CsçLd®|ûs"gŸâ­l -(6ño¤g×ínÃþøêk™ÐõQ¦\í:Fø ÐI†àý uòë61Úý¤k¬àŽ;xĤú}Þ>µ¤Z±”¯s’ñ2¨»@ŒƒÊöœ{šÒðõ癩<¯ƒ©^ý¾íç`ÿ7{–?‰4Í2ðÙÞ~V<Ô7©qÐëõ½0ß[‰bÈ•9W)4+rådÄ7C† ¹õÏcúWue?˜€ûTWº-¦¢2ê¡ýŽ?ZE4yô¶“ÂØx˜zp~†ˆí.$Xœ¨êqÀük¢»ÑßMÎÍBH—°ÏøU¥l‘qtÞ¤P+<Ÿ)pƒ|½Ø}ÕükoÃúqGóœs늞ÛH¸¸*× "Œ­è¢Hcƒ¨B7J¥8«¯T§¦3žÖ>çjÀ½¬–°E&K´R­<‚˜´ù)‰×¥54‹óô®ê!+ƒÑ5­wýÑAH½m£æCЃD-¹~n”óÁÿŠC#``í]¿‚4”FeA’f$œ{×~ï9>Õèž¹KÛdoÈ#Øò+*©µdK6 Ò˜Ñ ­‹Å•"¹lAÉk>$°Ò]c•·ÈOÜNH¦´íš+ÈXˆdaEp^&ðêëŸèqI2\’Àÿt÷É®ÓÂú%Α¥¬3yœàt_aZÊ1QM1–d³R: áüaáH¯-šâÛ:|Á…zQލß[Áb³Œšwx¶™4’Ûí$gk}EZ•Ö(ŒŒzRy!5KМ â´´/ûOSŠ\ÆŸ;ŠîZ–cC êúñÎö¶¶=à‘ïVáUÀÈK\È[Ö½2Xá°³w *F¤ž; Á·ñ¥ÜÝM‡„ ãήÀpò|*Çܼpj¼Ÿ µ8ãßPqÿ5éúÏØÞݳHó)l)Km­Ú]õ¨G5›ªÙy±}¢/–xùw  (¹hí„JyzãEmê÷&÷ìäõäïX}(%G…4É/䕤ÑÚþÌ’p¯õSŸÒ»+¿èö¶¢æ =FîV[màsèÇ·ç^]å]Á K²TŠA•pVúh¸¸^’H>Œk9FMÝ1u«iíu)b¹³[I?r½cŽæ²Û ƒÏj[[±n.¦ŽAœ+¿¶zÕSÍXÎßBŸ}š6z Ô÷wòË/Ù,—t‡ï7e¬]*ìC¦”OõŒp½tZm˜µƒ'™–oSL¢]¼Ë§ó¥ï»œV’F‘•BaN÷Í#sQ·ö¦7©¤}j¤æ®Iõªsž*Þ²xÅa.;Öæ³Ò°Å&K´P´P‰:Sdõ©$¨Ó­/hçŠæ»èOÈ+Ïô²¢™¯@‡ZÑÐh·›z­Nœãñª«“Á§µ½¨(œ¿=~§­ZÓ5K½ýo,Ø0Æ$ŒýוDžŸ^i7ŒžçI«ˆõ=;ÇZôcíÊn….Ñø7C[¶÷vw‹ºÚê ‡¬rþUâ «+…+’x©[I‹y) ܼ“Œ‡Nâlöó ž SL>Õä0Üköc÷­Ú…èRÃòlÖ”>0ñ5sÀ= ±cõ©t—ahzI‚¹ÿj°hºc³°óœm;“\•×ÄJ…"‚ÎÜž7…, šæ§{‹Û¯´ê7Mq7«tOJ•GP±¬,U¤“ï¹,ê|c]y¡sƒ,d)>µÏ2ã=ªDžK{ˆ®`b³DÁ…t"Cñ›qy§Mk*»àÝ1žk–»ð½üIv?ž’Ä n ÊG•vš/ˆ´ý~ÝA•!½ œ}G­j5=0~†¨G\i7ú…Õ’-•’F ¤¨Çõ¨®¼<ñêAž°¥³18ç= ükуÿv¢k)?»úP” [¹¬ì,ÖÕÜ¢Èìò÷ u®³Ã’›­-ãçOݶ}GÓ5¡ÃUæŽ++w–M±F¹,O˜kãëe[»'Þ[ô¬™Æ-žvÕgPm\3GÅ´?*{ûÒH£+ê1RÆy¼ðä‘÷Ži¶ÖÆ{¸¡þû[³Úo–KfeV%?Ú‚³^ ­ä ¥‘ÔðW‚ ¹q ’îÖ}ÈÆ¯/ä`p§ >”Èç‹ûN UÈé4ŒXŒmÈŸ¥y›Y+’`•Hþë¬?>)‡OºòÈã×#=DXÖ5«½jõ®®äÜç…aTvvŸÎÒØàt©Í²Æ3,Š[ûˆrOãV-ìäºu]¸ÉáqÒ¼/hÒÜyŒ2«]¯j§¦X­…¨OâîjéÅ 3Œ“IFsÔQŸJkf¢lõ©Þ¢lB'5Jc×¥\~†©OT7¬õ¬aZúÁù±Y¥’Ç--bJlxÍ:Jlz‹6F?­z±ÌkšóÛL­üdúסZó ý)ô.ÄFyö©XdñøTҤΠóžxúÔE°zþTâsߊÆÔï%ö[_õ­Õ¿º=hFMJ BYÕ1Ósbœž-ÒËŸßD 6¹…Ñcvó.¥sÔ±¥} ч1ÂEk²kvW*ÿ¾7@0yõÍZŠþ'`f=ëÍèc’D>Ƙ,5KS›{×ú74õ'”õ2m\9$r9¬ûõE˜øR8¸Õ5ËS™QfQéÁ­­;Äß’“¨çš. 67–9ó£,µÊÏZxrOJE Ƀç7cÒ¤Ž{ØH6ú¥ädt ;ùf£f`tš58.1šöúψ˅‡Z¸'ѰßÌ´¾,ñ]±*oã“þºD¿Ð DZ½†Þådf”û»äº˜ºáséEÉÖæÃxëÅ%0 Ž}|£ÿÅV§¨k:ãí+½ÑgýTcjÿŸ­I …”™&eo¦i&DU9•Æzc¥O>¶^8ÖØ€G¨¥ÉúÐ1žäZ`gê:b^¯]²Œ+â=ZЕ–Ý.p 1]wÊ:Š7ñÐ}iÜ+Ï»ÿ :~GühûEÑ8:BçØŸñ®öÒ1,‡ d ôÍE3«ÌÌÀuì1EÅÔâ —<ÿÄ¥1õ?ãH­¨ÊÂ;}5žûI?Ö½ÞÝ0ß9$ã Ú¥{4‹r«6ìd¶8¬ÝX§aœf™áéQuzÁäô=«¢Û€8æ•q֬ɥÜG½¦¦³ ܦqLP ‡kvš o³qFÇ® m¤ð,A\¨npxªWS£[Ò*°èç#éÚ‰RlÏæ¬-”Æ=û8>õLÏl—\ýkDjÖ‰â\¶Üb²©)/„¢3e m¥Ð63ŒÖ£¢CxÅ£"9‡Fë¡:œûÃ;1Ž8ª.ÊXã¡õ¥NRû@q—:-ôY[$ÃûËÖª =÷6gÓqÅw¤Õ[Ûèl 2ÊøÞµ¸Xç­tk¹å„vê‹«VÝ–Šç!œõcÖ°g×µ ²E¤/fjªÉ­Ý}ù|°}(±k¨cûÒ Ç©ª²ëvguÂÆ¹q Ï'3];zóSGáÛeÆòÌ}ÍÑíXN@K„'°Í\Y€ æ¹¢eus¥\,7 ^8Vô¢Àu„ÔméŠEpêïCtë@9=ê”ýêã§?CL_Yûõ’+SX'ÍÅeŠL‘ëE ENôÄ8j|”ÄûÔžØÿ¦Ç“Þ½ Ô~å9í^wQ{סYgìéŸJÝžÕ)S»¯Nx¨âçŒÓ÷`¤‘@Èfá â²`‹%æ#æsúV̈&Îõªi¾Ù׫ÄÄíBHÒWR†ÿä‘å† ñ,}Kd~ueü.VX§hTÙý¦v‘cìF5_LÔOŠùµÄ%*q´ç9­„×-'Á,’ }8ÚK+®v¾r©B1‡/í`·1ÏæCçÆêp=³ßÚ³~Ç9·k ˜Q¶³ã€}+¸³¼¶¶žÞ(¯"’KM:PdSò—<€ ëPÜ_[ê>ÔÒÒ QùR²úÈÍ–ü; ç-´‘œK¡ÿiH¬}KO|øWlÈrã5è¾1¹ÝvÖâêàãcG–>^ çúW$ñîR(Ñï>×fŽOÍÐýkBIDHÎç “Xz”šéÝY*æ¦ Ï°' rßASa™÷7׺ƒ¶&(¿Üý*ƒh/!,÷23z“] Ĩ¡@À«/‡îSL±½Œù‹xÅʶpãNÀp§A™OÉu(üi?³µHÕ_Iv5ÞËá›èµ ›GxÛ(yegÚŠNqïPÿÂ;©µÜÖ©m¾X”;mq§¡¸4ì- 6¿"ä·Ô ³ˆ¯mœ-ü?/Më] Ò/ÞâKu³™¦Œeãr¢¨]XZádaÁW\JÀhZ^%ÌK$lHê*Ðb{Šäl éz˜·$ùýßc]Ho—4†=åXÔ³°u&°n¼Yk ²EÊGuSoÌš¥Ë@¬VÞ?¼Gñ’->Þ$ ±¯ÔX CÆw)Ÿ&ÒAŸöª#ã “ÖɳߚÖû4Cøò£ìÑq*v)k—'ë]1Œ ,3šHõ-(ïŽF–!ÕI®“NÔVöu<÷Á¦´`Žj„0›=MJq½G½ y!f<kAý«tneæ8­k_çû>BðñÅGa]: t() $´Ó¦º“ɵ¤|g :_jš}.êÖ–h¶#»F¤‘÷—ƒ[Z-´—:±²4—$E„A–+»ž?*šæÆSá[0ÛKi¥2¤Ž‡>‡’j…s*÷Cw+fnã–𺡅°3þÑúŠÐ_ ÛGâC#ÜZάK}Ü•Ü÷­}eý¿交ZDáÒЖ/ã}ë:?Û§Øä6;e¶–FUF!J¸9ääç'4¦v»§ÚÙÅiåÛ5µÌšHK–sòœŸZç/-xúܽÔZöÒÒˆl¬¡óËrúV|˜XÙ@3@é,ÒY®îHâ¯Õ=*"¶a˜X“WXb¤d íTçèjëUûÕÊjç3{Öh­ Xÿ¤~5ŸRÉ´P´PòSSïSž˜˜Ý@‰W‹ˆÏ¸¯AÓÉ6È}«Ï[‰Së]þ˜ÑSé@Ñ­8柃×iüêã¾*Er=þ´ y^I9çÐVeÂOepn­Ð°þ4#¨­Aî0}ê2çw#Šb¾ÓoGË:ÛËÞ)8©þÄÏþ­ã÷\T:}ç3B§è*ªøjÙŸÒÍuùÖ€.½¤©÷£aõÁæÆŒŠÌªØÜÀ8õ¨MÖí×6úŒ¥}š Þ½[Ásø`ÿZarõÖ§{Ãspó"œàŸ¯ZÊ¿™lí™ÜÇ…^äÓ¤¿Ö$cÓ#…ñÿÖ¨íô‰¤¸:Œ¾dƒ¢Ž‚€$Ñm -Î>w;šŸ"íX³™J­i m~•VöÕ¥ƒzq"©÷¤ “‘Ítmâ±ØZAfÁÈ´òäåÉ’wq“Ͻ`Z]Á¨¦Éb»^ã>õ3XÍŒˆËUæ˜=ýž¢Ú½­½Ì&[”ãf*¾Ð7.O©¦íÃV¶³"yRÆvs¹‡P=kkiª0ü)¥}E »¢µÎ§I'’->™ao˜°êó\%ØÝu)"aóp&9|{Ô±I=»—†W½Qˆ4“4³ÈÓO#;žYÜ䟩4î¥ómŸ¸VÔ™¬G-eŒj:’ù†Ëv&·ÄS±IŒ‚ôøf¾€OÊ¢7˜£r…$øÖ΄[Q¹»Ô.­#¹ò#$3÷@ì7W? ÞMk 6í²êÙÉ^3‘ôïZWåëÅ$1¬6Èì…¼b<‘œtúÓ¸eI4ërßȶ/`è!f Ã1ë‘ÏëMÖ4…CP,ÄrÚšI|¼y›ÇÍÏ|VTºõüÆà¹Œ›…eùͳ¥#øƒQ–K·’Pâé6H„| {Ý(¸Xع²·‹ÄZÌ‹o û5§™ePØ^qÓ½"Ù[J±jm ˜iÏ9`]NméY’x’þK‘pÉoæm(äB˜¤`†õ ×oþÚ—(ÑÆR?)cTwo¥ x†Òy-ì®§ž £¹ˆìh¡à‚sšÃÑP¬/þ VÆ­¬OwkÚDIº‘G@3ÏAT4¸Y`.àåŽi0D3®í^lýÓŒúÕ–\TZš¼mÔC-Î=júl½·[›s¹Hù€þ@Ëþ¾ÓôíPKõè’uò®;Õý_U°‡P‘“M°¼.w ÚW“w×'¥s†2)<³éEÄjÿÂFëþ¯KÓz `™ª÷šõõí»[ÈaH[HáUéîj—’Þ†ž-e#"6?…;†…LUK°öëܶkB.Ö3$ÔóTì£{Ë£têV1ÂéëJã4$ˆÉnS¹_H!¢62³FNÌœn|` U;Í<\‘$nc•~ë/QIcdÖò¥ãqÇ£ef$’I=ê¸Ôµ›UÏm ÚŒ~Sü'ö¶©/ú2}Øîþ”ÄY1<jQg.2PêÜ £»\˜|׋=£Lcó4G¡ÜÝ>&½žCß÷›GéŠMØ 3mÓ|óFƒýàk<±ÔÜ$@­°?3‚ÿOj¸|;mhêÎÉä6súš¶p Bi« ¨€*6ô©Z¡cB Õ)ØàÕçÍQœðiÈj§7$Z£Võ3›“Ïz©RHõ¢‘h¦‰)‘ýêt”‘õ¤!òN;×y¤6lãÏ¥p“q´û×s¢lcúS6#œvÓè>´‘à‘Ò¥ rh(ˆ/8ÉJa<ž~”çò+#UÔZÔ ]ó¿Ýžæ-2¨,Ì©4ë]NÖ;™”öÀ`k}.æìﻺv'øAàT/áÄ겸4=:ßR¶TØÎ¬9 ã¥g4 ÈÄrkÏ¿²õ(?ÔÞ?ýôiËw¯Zua(÷ +• ·kl¹Ë޼óMžâ'ˆ(9#Ôuük€‹ÅÑqujvú­oXjÖ÷ñ†‰Á#ïÁŸ&·¸Í`Àt­+O'õ¨sÅ8y­‚ãI·¿u6ÉÙÁÁ¨¿á¾…›ÈÕ&Êöó3ί£pKô«ÆþO8$O­4'~†XxŠÝIþÒ|P?¥GöŸÆ0e·˜zºsü룹ÔašÙ:îìqÚ²÷QC°+õ)­Î¼ãq°·`;ªãúUymu]A±tËotŒuük£¶•M¹I@í†æ®$°Á™H8„ª¸½†`ÚY-ºaLzqÖ¬ÉÇò°Ã~=ÅËGpʤÏ¥A<þl›€Å\e&uÕœ†U¹¶.uèGCõ¤þÚ)òê6»þzCÈ?çéWGÌqZ&Ö Á v®ìœóZ!7cëzhÿ—k³ÿ?áIý·¦c&¿¦Ãþ¿öKSÒË•R+1£Uv5=1@'r‘×4Ïù÷º×aÿ ckV¬1oiq#vÜ0?\V­´1Ë:£"àûUä·¶·£æÛYÊ¢ˆÎ]-îo¥Ý`åcÖ¶#\&tì+B[hQ¢e<ÝGÌK¸l‚=sš^ÒêéDíl†­gIaqi9¸Ón lydê ikJÕc’ÕG•lã8­P›±ÎG^èÖÖ¤ÿx§ÿZ“íž ~6ÛGî#ÿõW\±Ä’ï(›6à…5GS($A ¸â„¥vsàëÎ~kâ3ÆqO:F³p¿½½¸ÁúéW·ckNÈ(üÉFTtÏ5I8ìŠ9è|2ÞiyÚYÝñ±8­hì™>Sµõ]ÜÖ‚êÈK£gv2¬ûÉÖk†tû¿JˆÎrvjÀ-Ü+P™ÁäÕlŸ¯Ò•åiÌÄ㊯qs´FI\"ޤֱºVc,¡PÀ°$zõ±±®Ëh—+žFOë^{sâ±»m¥»ËïÐUg×5Ë®#‹Ë^ÙÍZdµs²’@]˜•=ŸmªAjÍæH#EpFßZœŸ2ì®zàÐ4 $æ{—cõ©qæVc;Ë­V ¡$/~Eækˆmâ Õ‡Nj晩\ÚN¶×‡;¸WÏZ#UdRNj&ëJ¯¸šCõ¦2ÅQ¸û¦¯=Q¹?#j 8ÍC?jj­SÞœÝ5CPH«E*ÑL ¤¤N–Jlz‰fû¢»mæÆ<úW0 ×eáæÍŠ})ñ¨Ç9ü*EP9ÉÅDFMJ03Æ@ïšG!P VCæO%ËrXàg°½(&#‘‘Øæ³áu±ÇUb eR”Ý•9Zn*€°ºô¶ö“Õ.œ¤a'pê¥QšÕà™á•6È„«/¡èŽKmtήæe² 3‰‘»ñé\<ñÈ“H³% Cç®s͹Eí‘—æPsÛ{böR ËBU—’q] ZŽHƒ¡ 2 dºeïÛmRAÔŽG¡«ÌÛ³ Äðöî"UÀG=êÞªï)ŽÕ<ÃócÓ½H.õ;™˜Çd:Aôªo¨°-ö¶-ùøVÂ@± DPô¥ÛNÀsg¬/ݼoÌÒ¯ÃÂϸWYa¦\jw?g¶UiJ– ÍŒãÒšúeÜv+xð·g(®Hå‡QŽ´XG.5=z/¼ŠÃéVí¼Q*È©w rDsg×h¨!9-¥SV¾Åÿ–KùSM•¾y‰*v ÓÆ±+ò%wÀâ®Ãã¨]ðÍ"ܨÅEöÿTŸ•G.—m"àÄ¿€©pOq ¾¯ö˜s¡•»ŒsNï\W—>‹8–Z~eô®ªÎán`IðÃ4$–À\ÏZË¿ñ,:y1#³È?‚:5‹©-ívD™)Ú¿P´ÒãC8Ý)å˜úÓVOjóçȵڧûÙ5j> ›û«ôº"µOkc5íÂ[ÛG¾WûªïÞ€åÊëÎr×$fŸöHøêyÛ¾ècëŸé]}î¦Â%»Ž8òx_5K~@ô¬ý”X µ OMaöŒÍsÜWKcäK$g ÕI!WRdV}ª¶©\ù2öô4XgLX*–ô®je“Y¼bäý–3€F5¹zÅ,$a×mVÓâ §Â@ê¹4GiKµì*A¥X+Vtømf¾‰/e1[d™FNÏʨôýûT.,íš]ƒ,GéŸZ¯-´¶Ò˜§‰ãuV"·µK*¥®œ¦ÎÊ#û´Œá‰ØŽ¦ ½×nõ¶¼ÌÊÀ¬ì¿¼Ùî(‹³Ö©_Y-ÄG 9´±HÊ6œÐ2=.V’ÑwòÃWJ©¥Gˆ ω«Œ1RT.ÈßJÐzμº¥08»³›–¨ªIÿãá¾´Ê’EZ)W­ÀšJl{¥:JHø4„M)ýÝuÞ Ø­rRªé]G…ÎlñèM1£¨ˆ‘ÅIÏ'ô«§TÀðzP2@Nß›{Vt…¬.Œ˜ó!nE^À ž§ÓÒÇiV\­F¶ðÝ®ûi‘þ@"™&:clzâ«Ë¦A3oBÑ·ª6)ÖÚUû6º„«°gæ9­4°õk˜Led‘Lm¹0HÚ}G¥Epó\ÎóLÅäs–cÜÒý§ZŒíco>=WŸÏšOí)‡:_ãÏøP^Y¨®Ym­ÞWàùÔ’jËÒ6bÿítþu],îoæ^…HÔåb^ŸÐíš+f™ÆRXÔ²&ý^0{¡Ûõ­P à ©²¤ðç͈îôÖLvÝâÔáB@›£Æx9¦Éi*™}E;ŒeÄ–WÐ\Äpñ¸a[¾5˜®¤š|h#·wª¯v~IýkÂñ¥ç¸“ÌžG‘ñÎÄœ~4©¶®j,úP#&˜z¤XžÕÇÞó1[²ŽÍ˜BÖT£íÚ¬QGóG,ækqâÝRLqI—cÛEsËIóõ«iúz‰lÌXýä'{S™¦;k¦ðüþV—wssolö–¨B‡…K<ÐnÆkÛ[vúÅšè±i·:i•Ì…–r›˜÷8‡Áo™‰À=©¤T¤NaI¶•'„K+ ‚*?)H#œ+Wd"(šFà(ɦèñ0·20ÆòZ“µ2ëvñ·ÝU,>µm— Õíç‚õ‘ù€ôïZ%➺&Èíí@ñÍ©Lg=(òÍ06ü^1}b£¢ÙD3ëÖ¹íµni'¹eiåyT(.Äà‚£ŸJWÛUn¢Ý,ûÛëLñKÈv¨îj¥¸w^hº^ßÞ—¥‹Ìµdaœ­WÒͳkb?} #oªÖ€b©\ÙHf6®c™{ŽÿZÑzS<³éǪßé¬ì8ó!=i§X„œA¦Nçý¶SÔJrÛ³tR~‚™öýNOõVVñg¹ç5»KÜ2§qqýh1µuq´µÅP•Öå½¹Ü:3ŽƒÚ¤:Q”ÿ¤O+ú‚çð«‘[Ånc@µØãXb£ ¦¶jRj&j@@ý+6ø ý+IϲõþŽý¸ªŒ˜æv>ôÊWæVúÒT=h¡zÑL ¤¦§Zt”Ô8<Ð"w#Ê®—›b= sþª·ü&~Gô |xï‘OàŒnÆzâ£=€üª@BðÀ}h íãvG°¨d ;T²sÏSìk'TÔVÆÒ{g n¾jôçOìvÀŸÜ®~”Ä™ÔôSÿ/­õ1ñüê'Õ´”»–I›²¢سÓ-'4±ˆ2@Ô mf’W¶à3@¡.uyWÌȶS§«}kj5¨EàJ^ÝÔ£†KG YK þ#5Y`nL-Òµ³Ço­&zŠgoÎxmçöcçKý³xÜE£Æ§ÕØÿ­›éqIwrf™‹ÁÇJb¾¶1†¡­¿Ý´µQé³?Ò•ŸÄu–(³ýØñýkbÅñyŠ3T®|cyt‚8,¶ªô –u»Æ1Z‹sÒ|ØÃsd þUæFÿ^¸è¡ö¦}‡XŸ™nÙAêÇò gqæ®~ð¥ÎzøW ö VßçŽíØŽÅji:ÔÍ7Ù¯l½@Ô éæ¢`GzU|€i îh•©œZ¿=«VCŽ•‘«qhôÀã.Æ’â4T’=h¡h  ¤¦'Þù)ˆpiˆ´Fb­¯ ¶E÷¬nZ3ZÞ|\J¾â˜ÑÚ'$dâ¬)穨"ëœÔ¸9ÉÍ!Œ— u5†ù÷R\È2sµ}…oJ DÜ ãŽõŸ fØØhC ÛJ¼µ°NdÔ…y­ n¿µ¢ûÌv÷;$€½:sëÒ¨ f@`úLh•‡#5émÿJÑì5þðE9üˆ®k_*|ÚödÀÅrÇЊ,+œ¤º|º5?…cÍg6“7Ú¬ÉÚ>úv"ºrµð‰#e#‚) ±ct.í’U#gkv'¬/‚‰4$|¨ä µ«Ï"¢ZDy1ÆGaÜÒ¾¡¯ùna³ŒË/B{ É{Í~C¼0QèVÕµ„vÑ€ª3ÜúÔþXô§`9³¨ø…äzb”kúÌG[©ü t&!éVo´‰lhhÄ¡É zgÒ‹çŒ5šÙÊŽÛŽ*õ—Š-n\$»¢sÐ7OΧkd#”•Q»Ò È»E†tk"¸È=iá±\Æy-´æÂåÏêØ÷Ñ©ô¤¥ýMP¸Ö¬­X¬³¨oLÖv©yssqö+3·ëvöª±ø~ß—27rMPxËN†ErYºœðªçź÷Ïäj¡ÙÿÏIý‡f90 v‹–þ6²·sŽC ÊpiÉâ:æC‰?l?Z¤tk¼À&zs]”£ÿÕG—žÔXf$ýõ«„¾‡åé½EtÖ×iqt`AYÓÚ¤¨UÔj†›»NÔ>ÌÄùRr”¬Q¼…'=+™½yõ›Æ¥´g GñÚ¾‘£±‘ÔòŠ­¥À#Óâlrãq>¤Ð€­k €"úš´–±§ú µŠ±a¼÷‘ÇwqöxwK·vÞ=*€e®‘swkssja¶]Ò1 bªÖ¤>·ŠM³j—j9"íSéž•—ªÝésÅZvšm¶¶L&æaé@®b”¬íBÀJ‚DeNTŠ×+‚Aö¦²åNh°Èô놞ÑõÇ5n©iiˆXöÜM]4€†AÅbë'­[Oœu¬-p‘jÔÉô´€qEI$ŠyR-<”Å0§ÉMLîëLEµÏ—øV‡†N5íTTª×‡ŸfªG¨¦4wÑ“Ç?­N³ÈϾjðEL ôæÇžAëØ¡•´™¼Å>DHþëWX`œÔnC&ŸZ0ÚøH‘Ou5@ëÕHü)’XsïôSÅ(¼g܉‡÷\g4ÄK ÷6Ç0O,GÕ¯ò©/5+ûø’+»™&XÎWyÎ?¨Ú…ôëôèŸJœÊ›ý­iÿ-í'„ý2?LÐl5ÁX-ÞG8U§I«ØýÒÏ+v2?¥Sò.uYU§C ²œˆû·Ö€¡Û²Û¼Ì2±lS¦‹~·=‘±õ­hÑQBŽàUF'GŽê!—„äÜPÈAéL"¯*¥ìâÜîR2Ê:¯áUÌDEYƲ^Û£ãkH ç¦3Z¾/,Þ'» Ûµ@ôEdùdjþ¯|º¤°\4l· “7g#€ß•18¦•©¶Ñ°šajPùwVÓ(ù·…­ù¥©sÙsšÌ¹_´êP[¯>YÞøíé[DÝ“Ôb“+NƒÞsròäÕ½´í9ºr÷¢ùXzbžÈE0"Û[ú< áíZÒ@?p‚æ#ÝXuüÅaí­í*h¬<9ªLÒ'ŸrÞ(÷ Øêǘ Lç6Ò©¶Òm e+«ežFÈ¥ÐY¾Çå¹û„е.#…ݸTZ"ld#‰=)0"»S>³o„RÕp® E¨¢ÞÛÞÊ)ÚÿCZB0>da•aÞ€)⤀Göˆüïõ[†üzgšR„RǺ9Ô ©ddqìi±â‹-2Ö[#¦FR9aólä‚x<Ö*ÝÔ÷· =Ä$ÕCåšC·5Bú/ô‹b>öÿÒµÄDOu5B%º€‘yŠ.õ=Í/O›hÈÝÖ£ÒWÎÓ|¿ùiÚÃÛ±«øéÅR–ÚâÞä^Y?ñ/cR…¦ì5 Ö,Übò m¤îUr´ÖÕ4µû<§ÑcÇëL.\´Ô®¬¬®­!*#¹I•ÉÀô=ªŸ–iƒU þ§LžÆFÿ SuªH?w ÷sþx›¢“U®ÁCתG³Ôî5ÅÛùg²Œ ž Hí—dú÷ c!„A ¢Ž‚ƒùT­Š‰¾´€‚N®_l[‘ÍtÒ¹¯ŸÜïLLæ‡JZJ*D9h¥Z)4”Ô5:Jj¥!S*} ±¬×"¡„åpiúf³8ªz$|€9©Tê†ÀÏ5`‚¼t¤P™9éÚ¢8ÚžÝüCYÚ–£ „[äåÏGRhîI犞Òáa“æ<>^¢¸yµ n÷>V-Ó¶:ÕB5ØŽåºf#±9 è·— ,™POXsM³Ž9îcIUYIÁÍyêëzí¿ßŒIõ_ð«PøÊêkVwZîïã·Ž]°ÅÝyþ•O>¹ؼaipÿ½ÝÉa[PÝG:GVSܳ¸Ž¸ö¥r¥A¢4îœP'Ó¦†s=…Á…ÉÉS÷M)¼Ö×ýe½´ãòÏ󫆔6ÓÁ  ?Ú—ÀþóGCþëþµ!Ö¢_õÚLêÙéüëfɃ\döõ¨e¼„±šbêeméÿÅir¿P “P¸¼ýÝ…£F§¬’•ÒXÁâG˜gã4ËÈV °±ìdÀÐ3"ÆÁ-’KÊܳõ{Ð)¤úПéH .“é÷†îÝwÆß~?Z´—ºu×IÄwŽN1RävÅW–ÊÖã™aR~”ÆHMë}æi YŸ·A©¦[èSI´[€;¼ ‰ô=9]€O=q@®LeÓÁßÓÏZ†mCL·µÜn}Š–ÛÃú}ÄÂ# ÷«øvÆÎB»‰ (žmbAq´vÃï0Z· acA€)UU Â»Ž´†$±$ñ4R(!…fÃ-Ì?j´'!IåkOy#Rgz Þ ÓóÍØoîÿ‘L:õ©ÿU¦Ü¿Ô[VQ¤“`Y8î* ²0«ƒÐS—ýµ9ûš?Ó-Gö†¯(ýÍ„ õ9þ•½¦ˆÞì,‘‡R æ«ÎÃÎ|z @c5¦§}ÅìÁ#î‘ñšÑ†Ù-£ T™ÏáéHyï@ÅÉÍ.â:SŒáG'ŠyQ7ÊȬ{qV ²¶Ž%ÄeyÀUXwZý•›á§Rã²óT/k(æ ¨¬øÅ·p®ŒÏlO̹í]&Ú­wn&ÔŒäR°–Ó¬ð¬ˆr¬2 OŸQúÖ†œ›F‰1±ºNÐOjCY–$,ìI5Ï^xºÚ+ 4Äw Ë×õY/'kh›¯ÞÇsY) `r2hfòxæâ2Ûm°\7ÿZœž5_ã¶lûÖŽ20#ɦ›dÏ1â\ê-¼s /‘ƒ=APGó«3xÚÎåÃÈÄc„À®0ÛEèE7ì‘ÿxŠçg«Ú_!™XŽÝëWƒs^c{[È‚r+Ò`mУÉ I2Ä»•GrN*§öÅ€m¦ê?ÛÉxŠêk›÷‡qÇÆ+[–ï@\õAâ]1 Ø·ƒ· U?í{ÏÚá?ð1^qöSýêQfOñP%¡é¶zõ„O´ÄqÛx%׈ìî"HÚê<ƒL€×˜‹ŒfŸýœûH1@îz]«œŸ~x¢ÁsÐ-¯¢º‰dƒ+t"¬n=«Í¬næÓ.Ã+,Ÿ˜v"»û9Öx–E « -šæµÉõ–³´fD^$qü«jþS œ²’Ö~•måX#‘–“ç'ëBC)áÛF>eÞÝÉ«ie cåGÐUݼt¥8éUa¼ ¼ÇáV'±¸´(. x‹¨uÜ1•=ëÑôËk]rÎÊÿU²†+¤m’Á|8®;Ä#Q:¼Í©ÆRbx¶ßjas Æ fߨä‰áùeCGzØÛMdÊž) [þÑl’w#‘VáTôÄ"ãÇ]8ôæ>q\ˆOúBŠì$ã9æ¸Í}³v LË)(íIR!ëE E0'’™Þ÷¤Œüâÿ*­>Vê2s÷…Y‹2qU®ÆÙ³ÐÕè¶$›tÎzV‚ÝsYº\›­#ojÑS“—aøReªì þF¨Åˆ%h%%QÎUˆèjûFK`{TrÆ“G²O›ÈÁ  ³YÉårB9«ˆíV€½¶mç%?ºy­yz¹ómá“~]¦˜ïÿ…yGü¿œ{üµÌ•5tê0¶[wØÜSEΗ'ü·’#é"bÀ©·Ú¢›lp»· sVåºÓaûPÿv1“Y®³êò„´VªrsÕ¨¸ðý»%£ÊÀì[sSçÌã®Þ*ôp¬Q*ƒµTÔâXJ˜êµ yÃ’¬sÔòh Sêì‘dåqùâª@+S—JÔ ¾Q¤…·(q~¢½kA׆­£]ë:ö‘¦-”âO#敽*ñu<Šôß7Øþè6ñœ$¡Y±ÜíÏó4ÐŽQºŽêþyã…aI²Æ£…ôOw4ÒÔÜÒÄæXÿÞé¸6Éþèé^l˜3FÚé6ÜÛGÓîÐR8l©\uê+0ÒÖ¿ä%qþð¬Îô¹cn×·°Z¡ÃM" ' $â½8xÃÚ¬ÅÝûê3G¼HB¾ÞÕæú¼÷ZÍœÒys¼ÊÿºsÖ½™µ2/[i÷oÕ¼‘¾ÜG§ùëT„y.¿¥Y¹ÓËïò[±Ôuœ&ÇzÖñ}͇‰/!ºŸÎ—~ã'MÀò `ïI€ùœ6ß­zŸÅ”îŠó¢rËõ¯G°?èQý)ŽKÄjrzí¯ŠÕñü…%ÿtV04 “©É¯Vi—Áž Òîôûhêì«K4‰¸œŒãúW’Á¯Dð÷ˆµ›ýßLþÁ‹S† ²ÆJ¡2zqš¤"ÏÄË+c™«Ã G%ܼ1“€sú×›Á¯Aø¡ªÅ=ņœŒ†Khÿzî«qúWœ–¤Àt˜e®¯Â²³ZrHS\ˆËWaáh ÚÇ sÅ!£jö5¤‰×+PiJ'ÒÕGúÈ~VJÐ œU‚ãO¼7Vƒr±ùÓ=hE(E"‚gµeu 2ãýd†Ö^êãüþtÉ.ô¸OÏ|Œ}dÓ¸õ=^ïUš9&*‚5 qª˜ôª½ÝÕÝü«%ÔÏ3ª… Ç8¡:¥ü³‚âSþîßç@Ô.ýFžŠ=dn­BÄãÁò×ËÈÜéOgÔçàÉJ{"óV-4ò[åG–^ç­("ò¡U¥aÇJ±4O”uÚè5]ZC ”ðkˆ×úy®Ö_ºk…ÕÉ:ƒæ›)ö¤¢Š‘Z(Z);Óc8¥’’"A¤#F/»ÐUkáÐÕ˜y9¨oÀÛÓ@wZ#nÓáÁtV²ú+ ÃrîÒ¢ã8^â¶ÔçŒ~”™CŠã±5õÎ*F<ǧj£}w”&YŸ :{ЬpHù–`«éÏ4·oó…]…M«†—_Ôî‹;`‰Ù˜UvÕµøÎæDp;m VÖç§ùq41üŠÜ ät–6SJјPÜ Wž'Œ5×Zª’*ô;‹ β£täf°öR[1LM¤÷†8ÐØõ§]Z‹)yNjÆÓ¼Wb.±Ì›ºa¸­K«Ô½u.9ÁÎkdr>˜¡€dçaޣϽ87<~”Àå54Û»‰µ´‡9Tú×9.Ÿ:e£TþòsùŽ¢½5ÂÈ¥dPÀõV=φ­¦;áÂÞ‚˜3*êy¥[¸Õµ «(lî.å’Þõq»é]Kxnð}ÝEþœÕy<=¨©?¼·“Ý£þ´…c’äÐ tï êe­-¤Ãoò¨Ž‹v¼.ôfÿ,9ø¹ž1ê½2ݶN‡Šå-t ɯQ¦·Kx”çŠìã]€"ö hóíkþB7c ?•eƒ]~³¥È·2Ζæx¥2©äQXFÅsÿwkøçúS°™VÎök¸® m²ÄáÐã¡ÚÂÄ·k¸õtwÔÑ@ù¤ ã®1\§ØGüû]óô X!<Åuÿ|Ѩ Õµ{gQšúèƒ4§'}*ŽêÑ:rÿÏ ¡ï¶§§üðº?ð)œ9aõ¯J°R,ãçø}+‹ƒJ’æá#ŠÚTüÍ'ÿ¨Wyo• ' ÅGâ#R\Š3X™®çXÒe’çívè’dmtoâŠÚDÌÜiʧÓs;ÀÝZ6šö©§Ú=­¥ôðB͸¤nTëZ+¡]ž–0©oñ©@¾= ·Oø?΋ͼ¯#v,Ää’y4© ²ä¢SØ~5Ô¯‡¯Ž?{º€b§O ¼Ž>ÕxòJAc›³±{™„|ÌOÌàߨZ-¥²DàsE¦Œ[`ŒÜ㚟Š.{ Ô« § GõȨrxö­e½·XP»å»ŒZhMµ±@èþ{2Ê‘¡wTqè‘%ÆÃÛœnQÅ\ŸÄ¶í»;9aX^0±†s"ÎN9Ø2Fi‹Þ:}6Øܹ°~•xYÚÃ"‚£IÎ+€ŸÇÛÿÔBäç \Uä9À5A±š~î)ŠV˜á ÍpZ“n¿“ë]åÇú¶úWŸÝœÞKõ¦ÄÈh¥¤©(BzZ)«E0&~´E÷ºŠ–/¼(£1’*‚ùX'·¸©ã$œTwc1ž)ÔxU÷éˆ3ÓŠèÐ6ÞÇÞ¹?±6l:áºWZ…ÜSò¤ÊDr ×=qÛïšI9Š3„_Zèf,b$/zVdq u&„2¸ˆÐR˜Æ:TÄb¬XÀ·…´.2²JªG± UšÖèÝT«.™o'Þ‰Oá]ôþ³—_[g5¤DÈD‹0“Ì 0;ç/íà‚çe¿Úvíä\FúE…s—›@¶|í]§ÔTV·Wš,éÎdµ'?Ã] Z©{l³Û²0ÎE+±¢DR*FAõ©GZÄðô…¬¼·l´d­mRãÖŒûqMàu5FëZ°³b³\(o@rhfËÌ7 E°±è£¸ .xPsÐW;ÿ nš‰X{…ÅL1ºÆ?A‡l/v-Zç8ëM†%‚%@¨5 M½”²ÈSR#žñ¸ñ±³µl?ñ°==…s mæҹɩ³ÊÒ9Ë1É&º ûGø0دgý*e$סxGÀ1kDº†¤óDŒ¨@-ޤät§amöG¦›)!…hJ¢9AèqQϦh°ÄÓo.´ëÄÛ#c†\ðEzM¾5~äg­yÖ7\B=\W¢Â6 zR9OkwitÖÖîcU‘ÔÖÚµ9ûDÇ?íÑÕþmJà÷Ȫ Ø<ô C|í@óö‰ï£J'Ôú}¢oûèÕ›x¤¹ž8#P^F £8É'Šê“á׉Øãì Çý6Oñ§`8Ñ&©œ‰æÿ¾8¶ªzÍ7ýôkRúÊçJ¼–ÎåÍmu¨¨ì–Þ£ep‰4Îñ‚®s]Ü2 bWÍyíÓn)Ó–â»ë!¶Î!þȤƎ[ÄÚ•ÏÚE¬NÈŠ2vñšçDsHIf'êko^ÿ´Ù죘­@™\Y±êE•Nêê;HšYX*Z°IèFk^'‰íl79¯;¹ñdÎÅlí‹Ñš«j±02Û¾Ù&&®z,ÖðËæ…p«ò1XòØ[9ù¢¹È|{,|I ‹ëƒW!ñvŸ7.å êw¬oÙxrÒáZBã‘Ö•¢KV0ª(Úpp*/Ûù-µÊeû†§|ÒI!‰9$RìäU-V#6Ÿ*ƒÉZ·ÔòiH¥CÅy¥äf)‡÷J‚)ª‰˜äF¯µoêÚj£œÔÆäà} s³¬±>ÉT®:ÔØ éöúž½kku:E6]™€àsŒšö«X/[yÂ4¨­L6뀌ñÉ…|ò©â·ü7♼=-ĉ—ÎË ’1Ïj·§ÜéZ”Ö·je9*<k3<ö¤šéç»±f=ÉɨÃäòi1“ ?iƒÔ¸þuèÐçÉ_¥y¬Mþ“ ôq^•-ãÒ£†ÕÆ5žüŠÎqŒV†¯‘¨Üÿ¼+;w4ÑÑæŽ^ÎIX*$ÈÌÇ 뺤v*ÖR ù3°°Û’Cu9È W‹@ç$“b3ÏŒíÍz‡¬´jIªOâKIÖJ¤@îbF9Õ!ˆtû+Y¹´»›Íš6åòNïzÊßëZž)ÖÓ\ñÕôjV9 \X»©0%™•™vŒ ÃŒæ½Ç?dá¯8'æy½&Äî³ýÚE#×ÏüM§Î>ଅ<¹‰8šBúÈ|ÁCê$>Bͽƒ2ŒòsWΧ³;ù –öÿ§sâí>Ø’eBO''?ʨ‹È°4Kx­¼ÎAÆ~ïSj§GáYw>>²òÊ ,Æ&±dñŒŒqdH÷¤ØÕú­V½Œ2‚ éWõEÀ£Ë Ûlq^wŒgFÌÖD/ªšÞ±Õ Ô¢ßä÷ò) ÜÓ.£·˜‰qµ«ZâúÒ²®„〵Ëîùªk쌎;W-Z1œÓ`sÞ,¸ómd~™5ÃEuž)lZ(õ>µÉç¹®›YY ‹IKõ¤ ­-À™éО”×§ÁË Š€Çÿ^–LãŽ~”F£Ûǽ}€C*é³[„‘üUé°6Qyç•åÑ« ´+Ó­ÉhqëR49ÈÚqùšåïõkæWcöhN6â5ÓNH·`x8¬‹XBZƒÝ‰'ó¡]-£ŒaP(öTðT~Ul Ï=+¡Õt½&ÒöÚkt–ò¢²\Ç(4Ô)ëÛ5AsŒ’ >ôj §6…i'>^ÓþÍw·~†»¨¢ÔTEhŸ,Ñ•O@1œ“X—útú}ëÚÌ‘qÊòAX.r2xt/Í ¬¤t©ôýNïL¸K{âZ&8Y=+t¡äȪWÖisnÈÜp})X èÜ:†¯5*äôÅbx~YÅQÎY Oʶ×=¤1“[ÅsÉFEa]è3!‘;#€@üë äv"Œ`úÓÈ?‡î;ÙÀßBÃù®úŽÒAþëñúŠôˆ>ÏäǽS<“œV|„yŒF6犎] 'ü²—¦r8ýCý–‹Ô\ß#ükÑmíÍÌÊ3ÔžÕ-ÕŠÛ*Ȭ²#d®(9³Òšâú5Ž))Ë3Wyl@¸è(ƒ>ÂŒš@r͉KùZeeŽP ºŒ€kéüñsüJôgDq‡PÃЊ„ÙZž¶ñçýÚacϾÃÿÿãßáMûÏÄ_™ÿ ôÁ¥Z=¯›Jýá´UO°Zuñÿß4óïìç<‰¢?ŸøR9ñÌñÏü+Òmôh®É o É'’}"ÞÚC–цúQ Xó˜ôö’â8¢q#ÎÐp?:ô+hŒVéÎ@æ–;hb9Š4R}(¤4sÞœMùãf‰Ókmê=ë éH[åy±ÿ\Çÿ^†9 ïOŠÔL[jF6úŠ`Ï;]#?Ã;À@þµ4Zÿùa7âØþ•é)¤³)Ã/ÊRÿgÇßfÆì¢‰æGž/‡äê-sõcÿÖ«pxz\ÝÇõŸÌä×rö0á ŒW¶@5’2) 4Ê6:T6cvwÉÜâ¯ôþTûvdÜ»Æy\u«Ú²a‘ó…a…pV‘FiëÏZÄÕµ†Åµªï¸oNÕ«w'“lî; Ö—k˜ÚîNe˜ç'°¡ 3[K¾¼ùü+ÚŸ‡mÇ.YϹ®ƒf)ÉË"¤h]Øà*Œ’j¬#&=ÕË çéVRÖ$*(ü+¿ð¶¨$zŠÜY•“=«é·+um üê;ŠèJÔrÄ#‚(°Í ö¨Òo»2I§]J$“åû£ŠÍÒÙ…¯–IÂ’:ÕÆ´R-À•ºÔ°r@éQ±© nE5"B8¡Áô?•> •ê)$ª•pLw±¾:05é¶LÒ6Á Šó+îdS‘×µz>ŒáôؘÿtT°EéStexÁµŸlœ½«`H§)î=+Hð8>õ^æÜK‚~W†QÒ„2£FU¾eÎ"µîµ{Y4û;+{I"Ž üâÒK¼ý³ÔéòÏ·ZOµY$ŠhO®3LŽmFËUŸ]¶IÖzÑÉ“|«•ê¥gø†â üCoöyU†8¢.‡*ÅzⳂÙI÷/>Œ¥û '1ÉzmqNábÿŒ­ìa×åûüÍÌÈýÀ®q—å9ô­ -œÒrK7Zθ9¾ÏoóÃ0íEÀCÈØùK±ký*;{u·…Q{{T‡9©¡½JcÏ|¼Š¿SŠÁ×õï°þâ 4Çÿ®B_µ^¹’yY˜ÿxÐ#Ò§e»k‹þû(¸þe™Fåßanδ߲̿uÿ#@®zå­à¶™dB­ŽÙëV.õ¸"X‚…ää׎»Œåep}˜Ô«y©Ç÷ngð#@îzy"–¸MÄ7±ÞGÔ,NqóuÛÈÍJsš3ǽrú߉e³—ìöª»‡ÞcÍ`7‰5bIó±ŸEÏN¶¸òX†åa…DûwŸwî1@ãšâtßÝùéÚ££ ‚+²Ã¨ Œ”œŠžÒæ8 ‰Ãá5Çëþ žÒ_³Z`>2ÏŠædÔõI¾õ̼úPǯ cÊc°’;ÕyõˆÎK_›w-^DÏy!ËË!úµ7ȾóøÓ»&Èõc¯Û+»yöá}üÖ ŽúÞf"9ÑÉì¬ yˆ´÷&„‡F CHjǪ+r§ÔS™ÙÎX–>¤×¢x’_1mïXð¯ßñ®½:‚((‡QFšÊEHíQYG:¸?QW±‘ŽßJ§o ÓîÆm¤9 ¦€R¸§ÛÍ-­ÂOl–3¹Xv5xØ]ð‘*…iŸ`˜rPêx¢àohzýÄ«©ij.Aµa‘ÏÞöµÉ¶æ$±$ûÕÓlˆ2óD£ýìÿ*‰¦°Cƒ9cþÂÑq¶dß»ˆ±ëØzÔíyù`¶‘ÏbÜ j[É,‚IÈÏeË8|«pÁ<œÔ®8éS˜À¨_$Ò‡ñ#gQU=…d¿®Iæj¯þÏAœ±éC$JZ(ïH­-+u§Ã÷…5ºÓáëLF¼#åš|‹òçŸÒ™lAáSJÞŸ¥PÌ}AÀÛ@¢» ÍæéqŒò£ÇÞ¨h›ã¶+¡ð\Û­^,ò§¥KuÜ‘_z…‰‚w — P;ž* ¸žƒ¿jEçæÁ÷4C"þUÎÞø•ÒS ”&fHà  |E«Æw=š‘ìM1¥½¤ìÆHƒ:g©ßA´*Î*tÀFé\\^5¸²öR)éWcñÝ«®Ùƒ¦NH+þÓ%¦mÜèiî&pFpGÿ^£ŠÚqµâ©ÿÂO§^°ÿJE'€ Çó«‰"Ê¡‘ï¨9¢å+’ZîA¼’gîŒÔÜUa é“×€à'‘§ºy¤9f9æšm˜¥+Q† E¨£i¥H—ï9 ¹®ÇSøuy¤èjW‹¡@OR_Ƹu‚8#½z\™>ÎY‰o8äç¯Î*8#“=iŒÔÝÜœ^ÀÛν>b_§jó˜ãîÁùÇó¯Gˆf!ÛŠ G« þÓ¸'³ ¡š¿«s¨\ÿ¿Yï¥%^k]<;«_´f^yxÎÿ!¶ã×5Œ‡út¯Røwâ]sUñÙî®äžÐBÅÕ€ÂÓ§JhGœýÓ‚1ŠJ¸U«~%’ñ ù·Ç“ç¾ÜtÆk#}-¯šŽ5z˜ÿELœñ^tÍ—O÷…z=¯ü{'N”ŠG¯(:´¹ç +,5jkçþ&³çÐV?zL =k«Ð<3¥jV)s¨x‚ÚÈ»”XHÜÿSÏÈ]7…¦ðÜ35Õ»gW_-aÆÒ;îïM—ÅÞ“Â×±DnVâ—|n˜®l1Î3]÷Åo?´m.¥¸Ym&‹ýUvìqúŽkÏÉ9'š ™w¯WmáÛ·º°]ç,¼\N{WWáD+ú¤4tËOò–UØÀô¦ Iì‘Yºž(ÄÑ®æ‘=©—E•ùžðõÆ2sRÉâ;+9YŒ«“×8“sã67b1Î~\š­ ÷s [£Òdœ0æ©›xcrFBbMãø›ý\23tûµ@ø¶ñÛ0éçô›¿Sµ²‚9 ß8ÿhK{p¨(›sþØ5ÆÃâÙ”âöÍ£B~òö­ø.㺉d‰÷)èEeÊù¯qo¥A)Äl}ªrjü¾]¤è¦´C<þýüÍBfëó¬iÌÛåw=I&’‘"QJi(ëE E0&jX~𡨌ó@‹L9«N89ü*•§ u«û~^¦© n¶ÑÜùfi-VáL{@ÝÜò3U¯|?}c5Ê:« tYà©àøÓÎJ]ÑÇí>Õ]"¹ÐîŬŒaÏ΄çŠèJÕ{¨ƒÀêGQJÃ5­§¬©Œ0Í=ãó#hÏFâ³t!=¥jZ@pº®œûŠ…>ldàcï/øŠÂÉ‘^{§Å|™-¶Aѱ\Íþ‰r®L¶Ë8í$G ~¿ýzbg0Šëm|Sg€®49#˜Ý<›•‚˜È=sžÇµc>•ް\§àü*ÓÑN<Ùÿµ?­ˆ¦Ï“H® 0Ÿ»:gÝ[ü)§Mqÿ-býGô¤6äµä¾ñ^•0ŒúWgbçQ…P‰0À’¹ÀüëÑ"OÝ‘œt hóÝ_o¹Àþ:Í®ƒV°v¿¸RUYˆd,pãYO¹ÀýÖùS |°ëÇ5ì6ž¸Ñü0Ö:EÅ¢ß]/úMÌ’íÀôZò?°]gýSR‹;ßùã/åB&¥lö7ÓÛI";ÄåY£9RG¥SÝS› ÌÿǼ‡þš?³¯?çÞOÄR9uú×¥X’m#ãµyêXÌ&FâÀrkÑ­cd¶E#µGâΩ0ÉÆšéõëÚ‹;Šë€ÄqšÃ:lÀŸš2=wŠUÈÅtº×…`³VÕí¯å»W'²„#·SšÅk÷–1ùŸä)ãL=æÏû¨ÇúS þ,ñcø–î"°ùÐ.ØcÎHÿ•s[³Z#Jþ{Ÿ¤_ýzµ‰#Ÿ’ÕØú»qù ÆT³° “îk¼Ñ¬¥’+ 1ëPéz@ÂYÎé; p+khÏ!¤0àu®sQ½»Ô.ZÒÍÌq'úÇʺõ/ëŠÄÑâÛk#Ÿ¼Ò6Mfpðô'™]Ý»’jÄz-œ}!ë]-¶‹uwhnÕ ŽÅ7Ë(@HÇ5n×Â÷wÅšDH¯™víàûñUaÂØÀ‡ˆÔ~(…GEÑ®“¦ êâêBE±QWŒõÉÈ­+ÊÓY³³6-ä<¨¦gŸ%Á#héÿÖ .q[¤ŠU”j- •ãÛõMó(ô®ËÄ–6Ö¶–ålâ·™¥(’0p2ry®YPA8è(`išÇñ â2NpXb¶«‘ñlÿêá÷ÍHÎaG¥ïNè)1H 7½8Ó{Ð1ëE ENôÔ8aOzˆ}êlÙàãŠÑ cü«"ÈœŽq[* ^¢­Šì0q·ŠÇ¿FŠå%ñ­×QÛ³µ(Õ 'Š3»Ñ®EÖ™ƒ“ŽiúŒ[íÎ:ö®{Áw¥¢{v9ÇAšë%Œ²•$§¨|Ûd“¿Ý?QK žEÄrã%6|dX´¾h$8†n„ö5$±4nU†¦3¤ºÔôÁ£4-$º„‘Ÿ,¡5''¡ü+GUÔìït½dE4m${U7ߌxõÁÍp¤SM1Xi¨.?Ô¿Ò§"¡ŸýSý(í ÿ '­j}k3DR¶ šÔëÁ©ìã$Ÿ­86âJŒ}iÓÏ?J¿ö5HwÏ Œ€«ŸÖ³¤ŠbJ)þè©¢¸–…sƒÔ• Él“LJãíô¸nÕñchÎ6õ¨nô[X,DÄŒð*íÀ¶œI&J£¼œOrÒ(;O{R¸Ê1XÚÛ¶è UoP*À8ïúRõ£ßýj×Ó¦^Ç»OšÛ–îÜ •?v8ç­ÆÃ¤Z[I½c;ÁïÚ¯;P͹‰Ïz23íHÉS¦Ù# õ¨Æ O1m¾\ã9©»f´ÒæÙ`XË·OÃ4Л} á¡…ûôÛ F¸Ö Üdp“v>Ʀ¾ðüØK‰ü½Ã÷E¾é>™í\Σ¤_è3‘´²w ªkWŒäŽB9«”"±´ÿI„ݹ{Æý+j-oK¸À—09ëéLÊš¯r1näö´^}9Wq¼LW?ªjÊ 0œÅüMëEÀÓÑsýž„íZ=«‹óõxMe·_áÇjéâºc`³° íɤ}cZ‹K‹ûò·DÍq÷:Æ­~IóäT?‡Tws½õô“KОµ9_jàP&V#P^D²çýóO[ýb!upÿlÕ刭l?…õÔ²û[é—nÝ··®:Ó°k®ëQÿËÔ‡ýà H¾(ÖS¬Á¾±ð äE1ˆÇAJÀli^,žk„‚ò4;ލÅuJû†GC^o¯Û à °Íz,@y” z·ˆ¡Ó[Ëù’žÙÆ+þyóÿqÿßF¨jÃÌÔ§fìØªj‘ã•ͯøM®sÿqßFÿ ¼üÿ¡Gÿ}Æ u"Å÷ÍQãy‡[ÏüÑÿ ÄÙÿ¿ï£T¡†Õ˜ @õÅ+Chú¡NÀméÞ/†îe†ks 7ƒdfº àŽ?Jóy`H®!uàÜסÛǺž¼R2µŸ.˜|¤ŒI1 àW='‹õ'á%ú-.¾ªú¼¹ìg¦ÕþùP+–ĚɱôAþë:ÄÝn¦ÿ€ñNÀ•.üQ`+ý§T~ ÅÁÿštZާhÁ–yF;‘S‰OëJÒq‚9÷X‡Fñ*Þ¸†à˜ôÇF®„×™J›KÚGâð*¿AŽ ²3Ö‘›ü)äj©ZZ€$N¢Šrh¦íP?Z²Õ^J26à ÞÓæé\÷CZSíaÍ¥>qšd±eOÊ)-eÜ£š¸T0隢Ì[‹e’N—õ¦øbý¬µ³ÈNÒx«óEóg${ ÄÔ kK„¹@AšLLôñ"ă|MØö«e„¶Æ+ˆÅí <ØÇ¶z×7¢_¦¥§¯Ì7¨Á«ÂI`}ÈåM+ £}à‹-GtšMÚêa•Çá\½ç†µ=Ê<.õÞ˜§ÇÚaVoï YŠêX×m¶£"/÷%Pà~y G—;Rl~àçé[Zo†.¤Gç/Âÿõë¶–âý¸û}ªö`P•Q’(Ý÷ÝÜIrã¦Oð  ΂ê%´¶F[Uûò‚ÿýj¯¨¢Çdê€`.«í36€½€¨&|,=Ey´êb”¯J@Õ§«Ù6ã"™8`==k7­ Fÿ†![éÑH»•§\Œuæ½BmZé~&Ãb³?Ùš¦-ß/Ý'§­y¨ÿfêÖ—„dC(r=Fy¯UŽ[Eâxµ O°ylÊ·"©óßÛGeâkø""ÊH¶y¬xÍix‹PMG]½»C”–V+ôÏ“»Þ“ø¿ãòߌüãŠôh‡îGAÅyÄ ‹Ø ìâ½›p}E!£„Õ×>ýPU¾¸Ï÷ê€<ó@‰¥mØøWZÔ4ó}mdÒ[`û”:õ5ƒ¿Öiÿ5 ?ÃÿØñ[[B2o`Û°Ù÷ÇzjÀsg*pzÒnçžj”“I»Žq@;xó×p¯DµÿtÏ¥y²œÍû½&×?gLúR8½tmÕ§ÿtVRšÓ×ä+7…e@Ž·Áš]µõÕåÝâ,Y[4Æ6èǰ5&›á8õK¨K¬iÖQ#d²a‡áXú»ý—±IIÜ …8 ö?¬¦”äóÅ;Õ^èö<ösØk_Ïç’$#n;Òü@†|[v"wv³ ®sNÔNÔ ¼X£•¡má$ÎÒGL⣽¾šþò[©Ût²¹f>æ‹€Âr5ÓøSp‚E8Û»ŠåâBç8â» ÌÚØ®á†nM F®E. Èô¤§f‚ŠòiöïŸÝô4±ÙÁÜŒïÍO“ëFOrMè01@çŠNüRã­'µcø†üYéÍ‚¿Êk¹¡v8¼÷ZÔSÔÒ|´áFh(§–ç'ҥǯZz)Uû¢Œ¸DÃŽ• š°ý9ª®y ´å¦w©ÉPQNAE0'"¡qSTn(Q…ImaÍ5ÅF :m>l’s[p’Ã¥r7d×Mk8u欤[’5#æçðÅfÜÚ«FÈ6?Âk]+Ú¡š|ÜcëŠsz=óhúŸ–íˆÙ»t¯B,“Â%B ·é\6§§ùñîLŠ»áml†ûÁ9 –#¨ÁÎA£‘Îz{ÔŒ¸9ê GÐи‘Ë~”Ãõ©6çß4ÓÇÒ€Œç©Ãîç"›J3š¡}§ý y‘`8®^óIÎød½cð$có®à^ÔŒqŸ¨§p<Ýôà9 ?ßFô˜læÇË,D¿ç^Žm n°¥DÚm“ŽaB}… ÇžŽÂ6ÿvE?Ö›ö¯ùçúŠïÛE°uæ,}*ðíƒ CK@±ÄÅm"Þ„ Ňæ½"ÝGµSµÑ,í&óc›±nÕ¥ÅG ©YÉ5íÎÕ%ÈQÔŠÈhfC†ÔûŠô Ý.×’âKþçÏËy ðH§ Xâv¿u?•N3ƒôÅvÿð޶9¾›þú¥|s}9ú5+Ž ÜP²ŸÊ»£áóÚö|ûµ(Ðøþ—ïcˆH¤ó#ùHËq‘^‘f®-“w\sT ðüPÜ ¥”Ìæka~L ^¹i,º«…²|¾õˆlnÁÇÙåÿ¾ z=ÝŒ7£÷©ÈèGQT‡‡­Aç‘î)è8aeuÞQŠp°¸=B¬Š?­wk¡Y÷*TÒ¬ãéhÐ,pCM—?4±ø–jxô–c÷™ý•p?3þÝ Px…*U†$û±¨ü1FcŸÒô0¥e˜•A]ÀâG¦1Iš@£ùÒ9¥ `)@ô z;šRO¥'4¤Œv¬jQé¶¥›F(  Ÿê¢(þÇfFûØí\ͼ{W'ŸzD^]4ÒrIÍ]à` ” uâ“h¦Ú}*90lýiVcŠ¨Æ§™¹éU˜óR!EJµŠ•L¨§(¢˜ÉqLaRSM*ºõªì0j㊬â†M§Þ·ôû³À-ŸÂ¹ pjí­ÆÆ¦˜½¼€æ­…§ò®~ÊëpšÛ·2Ö¨²)à“¤ÿ®sR³– ÅÜ –'mvCpjÍ®ô#ÿB"„Ðuµ¿‰b•±"úœVË#Íp7–rØLn-ÁÎrq]6ƒ¯EŠc‰ F¿#Žv8§È€:oQë@ üx¥-æˆ3ÖŽýT¸ÏÔu¥Âí篵éõ¤¥ç¥&ÜsÛҀ𤟷Œð=©¸ bÒS±H}ÿJ­.E'ÖŽ´¤’(ÉÅ:2G\QžôsŽ´s@}…´c×4}y {š;ÑŽysí@ õ4gדG>ÔœúPßš\æ“=hÇ}(Í¢-%(´ÀLÒ€sŒQŽj½Ýì6P—™¹ì(×·©ajÒËŽ€÷®îîm^ôÉ)Âv•&¡}6¯uÔùc°éVà³HÐÎ~”Ò'r ØQŸ¨ÅJPޏ«B)Ï®)ÐäS°Ê¯…ÃT&qÍXÇ=? Ιòi1;f¢êh'šU =jtŠ™EH:ÑJ4SJJZJ1…V‘jѨÝiA† 9ƒN‘j†€5-nJ‘“]•îà9Æ£àÖ…­ÙB9ªLiä_ð5mU\sƒ\Å•ú¶2Ø­è'Ü"‚‚æÍ\äŽØ®^ûFžÞcshH`s·¥vbMÃÜÔrB­Æ1´yŸè×@‰\ñ]@f@ñG¨®fÿE‘48Žu9VZ’ÃRšÞEŠí~Ï7@ÿòÍÿ‹¿äð¥0ç?…X·»†r#”äìð~†®ý›=¸¤3+Ë9äj<–Æ?…i |ô¥[lž¢àeˆNÊhòz€xúV«[€ #[⌣^sùR,Lz­j›}£i¸ëŒP3(Äá°:CÓ§ ­S'ÜP-ùé“L Ÿ-» 6œc¯¶+TÛd—š_³`Žå@[©£aÇcž+XÛú­' äPW—Î9£Ëlð8­Sn ÁÒ›oA@>[úgéJ±±þUªmÁ)E¹ÇO€2ŒG4ÓzqZÍF)<Ž:PX‰½(ØÃµjýœÇ?Jk[gœPY‰‡\â§µ«ölŽƒŠi´ÀZÌØI­8Åj}›Ž‡Úƒl1¢€3>qŒÒˆ‰$cZµrmíFéH ئ¹ÝW[~ê%9o»ýæúЀ—SÕ Óãa¸3Šä^[j|±aó«ðéS]Éç_óÏ©à}kR;XÐÕ1Ò„fÛX$\w®yJ0sîjÓ QGåUå‘TvÆA#m9³n¦Ûœt÷©nîñ‘šÄžã$ÐØ› ‹‚@ƒš¤îM#É“L& š‘1Fjd ‘N8¦ ©8u¢”QLÅ&){Ñ@„Å5”uZH꣮+E—5^HéNœ®AëC. 3½^†ä©8ükvËTÆÉŠåƒb¥Žb§ƒM1žk¨£$^K€Ã¯ë^¢ñàGãZvú» ÄþTôÎÐ:°ÁÅC4QJ›]—ÐÖZºœqWPFÜ(°Ö) B±$?óÍû}j±i­ÍhÂ5rüñ›ú¤/ŽZ‘î#• ²†SëNÃ:ÛmrÂ|G+iðÉÀ?CZÉ‚€¡V¸9Íy££ÌJã”n_ñ§A¨]X°0É-¹ÿ¦:ªž”¹@ôµL˜cÚÅŽAãÚ¸Ë_Þ)lPÝÔÂû[þù5«Œ´¹\$ŽÖòve+KP7Ìc©?¥'”½W‹S·AŠHßÝX_µ/AŠ@Möq»9éG–’¸ô¨~Ô¹ÎsíNKßZ”¼ ÷¤0óœ `¹¾ðÅ/ÚA=F(æÇAš<¥=±éÚ˜nW»øR‹„ù  <±€;{QäÐ oÚSûÔ}¥|Ÿjp€g‘HmÀ \®3OµiR{~tw“úP!PØ Ÿ­)º\uÅFnÐu9úP¾PQÇ@ËQ}±@àÆ¨Ýø“N±Ï»O÷AÉ  Q ç‘Å'’¾œ×!uñÙA–ÒJ}_å‹7Š5MEˆó#þä#©§f;Û»ë+›‰‘O÷G, Á¼ñ8?f„@‡þZI÷ÐW5r3ï‘Âg©Îæ?‰«‘µ¼G*»›ûÌriع¹ºrÀ²g¬²rÇè;T–öqZå€,íÕØòh{µõ¢{Õ#ƒLE†*£< ¨žU^GZ¡-ú¨8ÇçY·§¥sVâñUqœ ǺÔHgO|ÏïøÕ˜±¥q\±=ÉsÔÕ7Zk6i´„æÉ  ÔŠ´†9L‚‘¦QŽÔ O€SÀ¦¨¢žãE7”êmb–ŠLfšÑäSÅ/Z£,UUƒZ¬™ZHzñH 4R•Ïo4›è¸ö³w$ý)«1èqøVšhó  ›gVr>õ@ú“·ñVW˜i7Ñp.½ã7z®ÓÞ¡ÝšLÐËæ™š(ëH” Ò…ÍL±ûPU L‰OXøéRªÐ!ª´ð)BÓ‚ÓNQJ¤ @*­)¸§ÒSÜQŠv(Å  P)qKŠ`7m!LÔ€QŠ@Ux2:UI-ˆÍjâšc¨¢Àb4l)¸­‡¶VíU¤²=…P¤«lëÚ£1°í@ÈóE8®1IŠJ)phÅ%¸£™¢—ŒJ)phÅ Š\QŠLÒæŠLSsGzJ(sIKŠ1@ šZ(Á ŠL\PIKƒF (ŦQKƒNOje2ÀíÚ¬Gd稤0¤Ô‰5£î*ÒÙ€)Ø Øà5:ÅWÖß©ÿgö§`(ˆð)Â:¼-ý©|ŽzQ`)éÁ1W<ŠQµ;X%<'J²!”áµOj*ÒÅ͘Ââú5ü—ÿ‰¦ÿÂâúõü—ÿ‰¢ŠAaáñ?ý šÇþËÿÄÒÿÂâú5ü—ÿ‰¢Š?áñ>ä\Õÿð_þ&”x?Äÿô.jÿø/ÿE£Áþ'ÿ¡sWÿÀ?øšQàÿÿй«ÿà ŸüMPÿ‰ÿè\ÕÿðOþ&øCüMÿBæ¯ÿ€Rñ4Q@ü!þ&ÿ¡sWÿÀ?øš?áñ7ý š¿þÉÿÄÑE4ø7ħþe½_ÿdÿâi‡Á>$?ó-êÿø'ÿEÃà_Ÿù–õü“ÿ‰¦Ÿøþ…½_ÿdÿâh¢€ÿ‰?è[Õÿð_þ&ø@¼IÿBÞ¯ÿ€2ÿñ4Q@ ÿ‰?è[Õÿð_ð¤ÿ„ÄŸô.jÿø/ÿEÂâOú5ü—ÿ‰¥ÿ„ ÄŸô.jÿø'ÿEŸðx“þ…Í_ÿdÿâhÿ„ÄŸô.jÿø/ÿEŸð€ø—þ…Í_ÿdÿâhÿ„ Ä¿ô.jÿø/ÿEŸð€x“þ…Í_ÿdÿâiáñ'ý º¿þËÿÄÑEð€x“ø§uü—ÿ‰£þÿй«ÿà ŸüMPÿ‰è]Õÿð Oþ&—þÿл«ÿà ŸüMPÿ‰è]Õÿð Oþ&ø@øþ…í[ÿ¤ÿâiá_øþ…Ý[ÿ¤ÿâh¢€¾ñëáÝ[ÿ¤ÿâjUð'ˆWþeÝ[ÿ¤ÿ (  WÁ>!ó.ê¿ø'øT«àïžÕð Oð¢ŠwÃÂ#ÿ¡UÿÀ)?Âÿˆÿè_ÕðOð¢Š.<%â?úõ_ü“ü)áñý ú¯þÉþQEÀpðŸˆÿè_ÕðOð¥ÿ„OÄô/êŸø'øQEUÀ_øDüEÿ@ Sÿäÿ „üEÿ@ Wÿäÿ (¢ã<)â/újŸø'øR x‹þ€§þÉþQSp<+âúêŸø'øQEî#ÿÙtiemu-3.03-nogdb+dfsg/skins/ti92.map000066400000000000000000000040431220314353500172040ustar00rootroot00000000000000Model: TI92 // English mapping (VTi-compatible) // Alphabetical PCKEY_A:TIKEY_A PCKEY_B:TIKEY_B PCKEY_C:TIKEY_C PCKEY_D:TIKEY_D PCKEY_E:TIKEY_E PCKEY_F:TIKEY_F PCKEY_G:TIKEY_G PCKEY_H:TIKEY_H PCKEY_I:TIKEY_I PCKEY_J:TIKEY_J PCKEY_K:TIKEY_K PCKEY_L:TIKEY_L PCKEY_M:TIKEY_M PCKEY_N:TIKEY_N PCKEY_O:TIKEY_O PCKEY_P:TIKEY_P PCKEY_Q:TIKEY_Q PCKEY_R:TIKEY_R PCKEY_S:TIKEY_S PCKEY_T:TIKEY_T PCKEY_U:TIKEY_U PCKEY_V:TIKEY_V PCKEY_W:TIKEY_W PCKEY_X:TIKEY_X PCKEY_Y:TIKEY_Y PCKEY_Z:TIKEY_Z // Numerical PCKEY_0:TIKEY_0 PCKEY_1:TIKEY_1 PCKEY_2:TIKEY_2 PCKEY_3:TIKEY_3 PCKEY_4:TIKEY_4 PCKEY_5:TIKEY_5 PCKEY_6:TIKEY_6 PCKEY_7:TIKEY_7 PCKEY_8:TIKEY_8 PCKEY_9:TIKEY_9 PCKEY_NUMPAD0:TIKEY_0 PCKEY_NUMPAD1:TIKEY_1 PCKEY_NUMPAD2:TIKEY_2 PCKEY_NUMPAD3:TIKEY_3 PCKEY_NUMPAD4:TIKEY_4 PCKEY_NUMPAD5:TIKEY_5 PCKEY_NUMPAD6:TIKEY_6 PCKEY_NUMPAD7:TIKEY_7 PCKEY_NUMPAD8:TIKEY_8 PCKEY_NUMPAD9:TIKEY_9 // Operations PCKEY_ADD:TIKEY_PLUS PCKEY_MULTIPLY:TIKEY_MULTIPLY PCKEY_DIVIDE:TIKEY_DIVIDE PCKEY_SUBTRACT:TIKEY_MINUS // Arrows PCKEY_UP:TIKEY_UP PCKEY_DOWN:TIKEY_DOWN PCKEY_RIGHT:TIKEY_RIGHT PCKEY_LEFT:TIKEY_LEFT // Functions PCKEY_F1:TIKEY_F1 PCKEY_F2:TIKEY_F2 PCKEY_F3:TIKEY_F3 PCKEY_F4:TIKEY_F4 PCKEY_F5:TIKEY_F5 PCKEY_F6:TIKEY_F6 PCKEY_F7:TIKEY_F7 PCKEY_F8:TIKEY_F8 // Ctrl keys PCKEY_SHIFT_L:TIKEY_SHIFT PCKEY_SHIFT_R:TIKEY_SHIFT PCKEY_CONTROL_L:TIKEY_DIAMOND PCKEY_CONTROL_R:TIKEY_DIAMOND PCKEY_MENU:TIKEY_2ND PCKEY_CAPITAL:TIKEY_HAND PCKEY_RETURN:TIKEY_ENTER1 PCKEY_ESCAPE:TIKEY_ESCAPE PCKEY_BACK:TIKEY_BACKSPACE // Others PCKEY_OEM_MINUS:TIKEY_NEGATE PCKEY_OEM_PLUS:TIKEY_EQUALS PCKEY_OEM_4:TIKEY_PALEFT PCKEY_OEM_6:TIKEY_PARIGHT PCKEY_OEM_COMMA:TIKEY_COMMA PCKEY_OEM_PERIOD:TIKEY_PERIOD PCKEY_DECIMAL:TIKEY_PERIOD PCKEY_OEM_2:TIKEY_DIVIDE PCKEY_SPACE:TIKEY_SPACE // Specific PCKEY_OEM_3:TIKEY_MODE PCKEY_OEM_5:TIKEY_LN PCKEY_OEM_1:TIKEY_THETA PCKEY_F9:TIKEY_APPS PCKEY_TAB:TIKEY_STORE PCKEY_INSERT:TIKEY_SIN PCKEY_HOME:TIKEY_COS PCKEY_PRIOR:TIKEY_TAN PCKEY_DELETE:TIKEY_CLEAR PCKEY_OEM_SCROLL:TIKEY_ON PCKEY_END:TIKEY_ENTER2 PCKEY_NEXT:TIKEY_POWER // Linux PCKEY_SEPARATOR:TIKEY_ENTER2tiemu-3.03-nogdb+dfsg/skins/ti92.skn000066400000000000000000005726141220314353500172400ustar00rootroot00000000000000TiEmu v2.00¾ºíþU Default TI-92ÌàÏ1."TI-92ðGÐGPq/¦t$€Yº"¾Y÷$ûY3$9Ypq~¦¸q¾¦õqû¦3q9¦p¡[Æm¢¨Ç¹¡õÅ CÅT¡‘Æ¢¡ÞÅï¡*Å=¡wÄŠ¢ÅÆØ¢ÅFÜ”ÛÎáÜ.Üi|Û·ÉÜÝQcÛ±Üël¨<»ö=D=U<¢Þ<î+<=x<‹Ä< [< S\wmS§wºRöwSCwTR*x=SyvŠSÅw×w;1tb†2º;xu;´wÚ:ïv‡´¾ÑäTÃpô±(q]¯îB.rî®/Þ:+wP…)ÁPÐ* P*VP;ew‹…eÀŠÏd ‹eVŠ;¡vƆ¢¿ÄС Ä¡VÄ<Üuÿ†ÝÀÑÝ ÜU<v;†À;Ñ ;V:<Svu‡TÀuÑT uQT‚ÿØÿàJFIF@ÿþ4Created using the Colosseum Builders JPEG libraryÿÀ‘vÿÛ„       ÿÄÐ   !1"AQ2aq#B‘¡Ñ$3Rb±Á4r‚’¢Òáð %Cc²ñ5Sƒ&'DTds£³Ââ6t„“´(7E”¤ÃÓ !1AQa"2qð‘¡3B±ÁÑá#ñRb%4r²$C‚Â5s’ÿÚ ?äIÃ䔨ðìî÷+Øù¤‹ÃQ-J ”Á,ãVß|)îVšxlµ%VJ[R¯ð³Â¸3Ú0ÑKRJt#a«¼\¬¢µÈôaòÔ©ÉAÔ“¥‡¾#ÇÂ),£’¢Q§£‹›žÐq“y®Å—E,…'…t’üÛA^åMî=8|½H×.Ê`ÿãZÀXd‡D´i<À/^¾Ã³<(4„]$¢´…¡ÔK¥nvéh,(’U ©óS$GX 鵈á`ÅÏ8RdåÅM!’‰¤‚M·‚ô*VÊ"ÒéõKt]‘ɃЋCœ›ºb3ÙßcÚà^ãØê_×´G¶ Ú¡)Êé²·–Å(…*Ü›`sw´824$‚ïïõ…•±PvôŠèI‡”lÀB›ÈÜb€Iý_ã•äÚmŒRŠfärW$Ù¤­Té›Xëoê(È’„”«°q ¶q”Úƒ¿Xb¨_‹ïoX´ëè ¬:LêªÉTÔòø“f¬J@p’À^ £œ‘oļ3ÎÔ˜2ñJŒE¹z×í2O(N¢X)öèÑ"ÓV‹îÚ¦ÊlðPËí^PK6ŒuïkÆ%†tCÎ]ýÐÆæ›%‡ÔÀÂÇk±‰±vgÛÒ.Ã’ÎÐ[à‰X.:Ãe‘BjN—é ÍЋ³êºt(«Ðr]˜˜–e„[@W‹Ü±@XR@M*JU׬l€‚—1AªêƱ@Bö³ÄkÈEþÈ›1TºÅÆâ¹ œ“ëp‹¾Ã t¹ïËMs€Icþwа~¯Öï‘@’ÏÂ(o‘Aæ·”ˆÉ_¨Õ3)Là´„ip‡#@³1;ˆŽ¤¬’½Æ/ëÞ4ï¹O §( ï¼LwP[ÐŽÌzvŒöÝĵx¸WÅ¢¶Ú¦…ù;„þ‘[U܇¨ 9ap"6’·†À+º¼ºÜsHÒ¯²"vðK½„)f 1}¢FIá»*|gbëáw"z "ßh‰æß‚†å¢æ*ÐÛ"ývŠš_˜LVpû†û!„/€`}âw[§°¼€½ú¾ðn°û ´MÉ?K üTøê"=­p(Q¨ì`ê;p0,y^ÿº Ól8a”ôÕx|ä'A4ÒÁ¹7ußxͱ͒å*90y\ŽJÔæü¢+òÄU›4áè)áÙÝ߬‘…•C/R‚S¤ÞY¾ñ¬"mù½!å‰z’.o±ûaô.*Â^.jÉUÒ„ïîéä?"ɤLµK$— }áô#tG6…"™ Ñʯ¬;Y§{±¥ÒÅOgŒµ‹3Ú5HQ:Pàux5O#´Oc”W¥)~×…c!Æ‚e$¤ËJÊ|ÏÔÄxt^ß!"X!C(;Ú.äK‚y2õ†ëÔöƒ¾JöÈÙRwZl¥mëëb,,’•I3R-ÕQ1m,‘®[ÊZ;¶ŸH«áÙ ¶YËyš#jñ¸mq¸Œ\)J°7X¼\‡¤zzX¼7úqxhS~¶§ SÁ*˜- ûŒT³b³h› ] ‚ÒÛSF/ŠsŒ§4n£VäTsßkj9rK {£®Thq¸qaw€^æÛ\zÆv{ƒ¨-þ­Š = r7‡©ÙÕï´0- ׄ1D$0»¿X­nV€2EÍ¡»ˆI ÌMÅXÅ–¿¬Zîy:,·céå÷ïÕ¿ˆ«9¤êW^±¨Kd…Ö”tp‡ëFÖÙ<ù± ߃BK_hŸ@Y|ýlå†ë‹R¤{øÈ‡v%w4‘ôã9ÑȯðÃj&ð‘WL¥+ÒNtå.Ã}ãÅr´}ˆS<ÝYòsËxþ†ezdüɈͧ•ˆ|òó'{D²4ià™ 'Rާw Íxô{ÅóYæZWð¤yëåCá<ÿ³Ý63ùÓÚ(ÓVšgùU2bÓ­_÷o¿XÔu#%“.=µ˜þ xk‡ç,>un'š~e•.j¥û §:€AØ(~±û=cNUô Vu,oä½…`øm~#âwž¹2×L¿™Tx‚`%%„ÒC€whÇ{|–šÝ³ƒø‹—NZÍ5xR*½²L™ËDº­8© RB´¹!Â]žÏœî,¹”>Œrõ6…ùžX%3 JšÃHcÀÀ©%GËÔölðk àP•Ìt$:Õˆ°EI¡g¦d¥¤éW[í­Ð2÷à†Ó|JÎC.SâÞÅ=^CÀשµÔ‘´¾ý`ÚK¹àªäÕòøË9Ö³ÞÔ)´4þZ•y\·™·éCÂ4wb®:´çêFHò'x¿B¦Û»ØØDàÈݹ~þ±¥MÒ5Ü.›1;FEˆ«'™]lZ Ð,¼‘ÍÕÝ¡t.žÀXî¯MºÅT]‡¦žj˜%6=\^'&{Öâ̦š”ócén;ÖäjB’Láþø4ö*’n†°Õ©ŸÒ#Ú·6Ÿ”¨HøÅyÜ6žâ„¬\nw1ìFÓˆ´¥røŒÏmàÕ­‡jy¢2.Á,}ñbé[f“äzIr³`c/ ·“-p!,9’ïë5-™jöbX+öLGmz¢æ½A Ž¼Ý¡Ýk; K;žÛâ§WïnTÒÜd<¶=w¾í†â†·aÖ#µžX1ƒ’n×ß ¾Pf>ñ³Ü‚òöÔÖ‰þGÐG*6W¾Ð¤—æ6,v-Ò+o•aØZàï°†Wćª³›l>ø7k~Câû½ óHzY‹n [WèVõ¸¦%vã†=R“~ýûD¾,+’ûu‡-òOQUc{“÷E‹Î6 Ðmc¿^ñ#L!TY$“¿X,5èöþ8¿¶MÅêÄ_·x¸JÖŽÄmåý gtĽës?@r£·¤FÓJɽ ³ƒbXî3K„àô¾ÑYY>]4”kJuÌZ´¤:ˆÉg%¢«“ú#äÅãs!‘L¥1ç*=»þ–ÉÛ½‹Û+5y‹äýâî )Ž)”ý55i¤’}¾•Zç)ôŽY…ͽ`š« 5Š*¾%ä áñ)4¯ ù¾|ù)¨–Ž<¥êBŠ€.…( ¡_d)IØ´·+H²Fú˜{à÷µô+h½àÞx‰åÑPeÎ5•Çý²@åÒúJÁ؃´VàÍÞQUF ŠÍÇÆ ŠmX‡ƒÁÖŸ>­,îÛÙÞ çÐ*ܳc~ø…„`§ÄpQÄTÏj«i*%‚ÉØ‘Iœ•C‹©¨Ð¨%%*/otͤíŸÿG©TìéˆI#Oû:bŸwç‘õÝCó'K™´Q~Qi™'Å FQ6<'ÿöRá§òÚ.´jWÁ•òh¥"SUÿðæDÖ§ eÑJR¯Ô“åË*l¿k¦Õ#‡9\7úZLžÖ.#}>`šÿÅ£†ó&ãïpg‹FÿmP\ž#Œöшªnø-±¯©~¯îTj­‘%L¹ -i ÒdzÆx£obI)B–àî;Eo‡š2(¤ÈœS+Â'ué%þ²+Yz¥Î›1Rår†Ò[w¼Åª"ìdóÛzEv7Yc%JIa©Èî"=ÅVâ*X &äjßî…àW$z Q@r!°ÜzV€¢u²n1ÈÂ-ûCh¼ ù))X :_ï¤+Àý)ë°ïœ–†$#lB´”öøÄo’«KUi…‡Öh©’/XOE?{m ·D¬±Š P±bzÄúÄ)‚K÷Å—†CP„•îë® –…–™ei—¤û÷…‰r"¥ž#nâ'¡x®G*XEC+Ì­ Ö08¡“%Ê:CCwb6š€BEÒv=Yð!ALjN€6.ðeJÇ„„€Ö¢µnˆÿùPæ Ã9>°ô-XhÕ-’.îOq I[ VG€4&RKÝÿÂ-^äíÎJ¤ƒ…¤ÙäÊOüñË32ÒGÌ`‡)–†?ÑUd¾¦ÖPE,Ê(}>áDßqeÊú0X¥Lð-«ÀéJJTû1ÿ¶¬˜º-)QZô8b5?Öï«$ºÈ©”ƒ>[*ÓçßînZʼnP”ºÒ>Œ)´õÚ3~I»"ž”¦j¦LB·0*_˜ÉRÈ IåÑæNîþ°ºÜ«Áô«J8#œ¾¯áFf9Àâ‰e#X·HÍ×Êj9Ë1”¨q {ˆ­öá ¶L¤ž"“åQmúÄâÙ”ö ”A2Ÿ—ªú©ä»dYtË›:Y\¥¤)Üa”·œë¢ P§¨#n±n²‹X–ØéY ÝH‰'Ê$­ê©T££PW'§)‰ÜNâY ˜”))b s¼Nëd³&dÑ0…%ˆÚÇhÖQ¦:JødÙõ1CC艕6ÀÎH÷ƒX+ÆÆ‹Cÿ&æ·¶ýùUOáÀ{'ÉÌÀ Aë´nðŒ7‘¤ N ¥¼Kî.ÿäÆkZ :O¾Ðo,ÉÚ ‘ß"Áy ºLZà òÀÒ>í¢ã(X‹’Fы͕:v5~K¨ã¼Žä33Ç&“V¬¡P K¿º:F~Kf^§Ö}ãIbÏ5S'©¡ÔÓª™sa* )vv0ºyÐï‘å/‡Ù»ÂÜ"º› ¥•‰Ð"L™¨—ˆ®bÌÄJ”L¡§™^Va}YÍ6¸=ZQ‹Ï'Fñ¿ÁqÜ©‡áØ´”®Tªék§*˜¤ðæ„-)UˆÔÎllcž“§gY¤é3G•²†UÌ9· ƪe˪©À)eaÔú'/‘r•*g^R©1¹Í¬.rei¦û¼Sý)˜>¼ÆL¤ŒPN“KÅâ)ø:j§K·›«?¬oFMB—“ž»¦P¥>ß( ²‡ïŽíº96èö'ŽS¦IɪZô‘+ ¶Ü‹ŽN¬é=£ùÇ k:áòðÙØ—ƒÑ'.ʨŸ@¬>ža¨W>£­wN m³òwÅœ_Ì·9éÍ÷v½™ò¿™?¼‘‡xo•¨æSÐÖq=¦±Š…N‰’§%’°¢&b‡*¯×´4äÚ³Z• GQðOúøŸ1.¢RªŸÚ*扉*ÑP¹Éú7 ÐYC¿¤MGØ]8÷*g8ùÐátÙ–†v5I—s:=“Ùªkž(s8­¤LP ú;m` c:²¤šØÎŒSMìÊ—Ë“ ñDŒ9§­Ì2éøú1ošÓO(jà¿èÆŸÕNû§¹ŽšU¾ÏÀ’i¤ó\˜Ÿèæ ò¡ûÏÿwŸÕwcMÜÓ;WÉçÁÓWâ¼ß:™8j>mÔjê”%ÄÆu8nm={w‹¨ä•§’éF.ÓØÔæÏQá‚þ)SI2f>hö)Ó$*\³ôàÌÒµ)Zù¦1¹chÂÔï¤ŠáØ™Ò³ÎŽÈÀåTxSœeÎÁ%;àøuº½n¤Ó¥__hØFTíTѧMÁœë䃟³.%â¢òE~Q…a”m£ ¨H×+\©³K’€»¨\õíg*‹h奙$É~JÞ+f\÷ã4¼3™ÇU+¼Ý2ƽR&+d!,ڌꪃ¡'-K:aÕV!žUškU;,ÓáØ‡žu:eKJÒNŸ¦ Iáê N×éOµE¬¶Î=ò¯¨’‘¾ 6ƒI¬jD™:¨&W±L Ô3_¬oºåG6»‘‹à~'^| ðêGèמ0Úu )¼³%¾ýã¦-¯KüÄR¬ù,,Ïèó'ŠùsÁ©êKSYM‡b3)¥Lš‰!S¦ªjÖ ¦Kná㎔ܰÍjÇÁ¶ñ¯¥ÊX—„gP4²ñÌR”ñ­w$‡ xBR¶É$£Tl~RU¹Ã Äñ9˜niá`ÔØlÙóð±C)\b“3WÒ—R] &Ûo¼oJv`Þ¤m$Ù†8vVÏž/Ít’'⎪6§J¥Í™N”K @Rx„©‡ÖÙ£“µ;FcñB½Jе8ÿ‚¾ É£§ÕQMŽ&ž†téYJS%B\Е…j)îà÷ŽÑ’”­}£3‹Š7Þ5øŸ˜ð?“.OÌòêú¼MTCdËtÍ¥Zæ'ÈBuº@#£F`—¼ií¹ÒsøEÇ#É›ŒxA‡c^fºl"ºª’Un%‡ÑÊ—[2dåI š…j$¡D”$€Ä häår©®cJ)Av³É+ZlÓ#ÄAQšpêôUNòÖÕR™"¥¥Ê©Ò(Ò |wBQqí[m¹<• C“¼e¾|{€)êÍÐ>Ñ[q¶24jáØé=ûÃæjËÎG²·î‡s«%º‡ :†®ÂÔ¬¯ÐB9oÖ*¿”¼ŠA))<Çõ£;ªØ‚©™M`Y¢ßsûÁàRÀ©Ã°íÊÝù«²4žÝÄîË-zŠûžß»´I*Ø”àÒ7ÓÞ/wÅtQ2 nö÷A<ÐXcƒu4»zû7ù"-ÃðŠÝ;ä¢\¥…®àöƒY±C€¯~W÷˜)~D·À+CK?WÚL+uPà¿Æ3ní•c,B9´…7uEîqÉo ê;F%tKhD–mI~þ±¦ó±_ ôêl:6ñi ÷±èæ[ìŸÕïR¯‰¢<##Ä+°¬NF#A;…S"j'J™¤+IpX‚ ûÆœoWºg¶¾AYï5æ\£˜çc¸©©U<š¥ËQ“-:JQ$ƒÊ‘úÆ8êAFšòj2“mvÄ\å|­0¬¿Šc>цJÎrS*O³ÊN€*ôd¤É$\ÇH¤“•ݺOÉwÿI.Šæp,+Ãkq£„S´š9 ˜²8ÓÒúR ÜñËE§m›Ôµ%ô8ÿ…¾f\©âöOÄ3–XưŒ-Xí•Tâ”S©å~™$k>”¨ï°'¤trM\Nro_ø¯?Ä©^?d¹9"v ¬ž¹TÑ2“ Lúq,Ô((™úK›ê°cÕãŠì¦Þç¢]ɮ݊wÊO6á^|¥äæy9kçJÊÜ2ª”Ó—U1zÃ…‚^_•šþ‘tîQ¤cQöNèÜ|—³¦Í5Y§0ø„ŠÊ«Q"²u==u"dÉLµkKThAPÔ°ý@*é XFÛ¹tç)]ìx§Æ™´3|aÍs0΢^/Vd™S5¤ Î^’Ô3_¬w‹µläÊÔ­%i3?h«Ùê_ôsJÿÎ."½iùªk[þ$ˆ²Qœi£ž‹í›£ž|¥¦­>*Öå-ÿƒ.9éFðΚÿ;6ß%5ª_‰Ô)JJ€âiO¢™×Ìf´MPÿ—±ÿÏ®'ÊÀp_þ¯&7ÓãJ?Ÿõ9õ {ì}ààÚC8Pnž‘²YaÁ‰sQu'[×xKmÉ}×ù_’‘_R²±õmðTVíÑ#àºËP :F¥Ž¢!·[±éç*–Ú]¾~Q2Õ±Á¦¤WCÞ'ÊÃô(!AdË/g¼Oª{t¢`Ð<Ö7ØÃ‚=‚`Ñ9-õ¬}b­‡.H@.ÍË&$â Ç×:wám,!4æá=¾è·ÈB¯d†ÔÝ„•g~µ €n÷¤e+V*ÖDš²’èõ…`Uˆ«¬+SqøA<R{k#Ð^ñ^ô-§@¥’Sbž±kqÚ¼˜ËÖ4ž±•^í¢„ªf• Ý]š.jؼXà±Õ¶=¡|"ÅÖ"é²zˆ*Ü‘T»A˜¤ŽcÓ¬KÆKj˜Ä:ÿI²º·’«±éHSÓoH‰µFc•Aм!Ýu„öxe¬–cy»| ²ò?˜tÄ€@qÝ»zBÕ—qH/ €Gß Æ 9-#öHï%Te,•”ƒpdI>ãÏh·€Õ<33+öM WÊA~ŽÂÑ«ÀHÛ;]’ÁC í»ÃÈÙºJe¡6+P*¾Àî}Ѫåè8©”RéI`®þ± ²ô…éUže‰éy ç’SÓõúEÍUlEܰT6T^0T±F:ˆL ƒ+qnâÎî;ÂÈ÷¦B¢ˆt§¯HŸ‘dÞÌè IÔ±æPëJØj¾Sþ‰Øwoá{Þ‚UV-3T•$bAa÷zF/ßæ)4ˆáL—®bü¡Û½½b2Ö[kb b\²£"O(FÊOšìwˆ¶ *+Ô¯â…D¨Íkõ1´òe#K_:Y#AÔ[ÌzA§³$Í=r‰˜ vª}þ±S[…M;1Ìé¨R™nÝÉh&¹#Kµ}þ¦^‰©'B˨نÞýâÖþõfêBø‰HH'•ɗª2莪ú~PiÞ-R-R0|XYBh°"°›ÿ1Q‹å ªÎ`ѤzG[Â#ÜE5û·MâXB ‡íÛx…~.þ]û߃ D^LŠÑ®ß Päua/ z¤M@J¦Ê˜”­ô’–ÔÝ¡iÞHß¹·Æ,·(Òîn±Ï-’gw-¬(”¬¸Ç;³¦èt²Á‹·HÚ§°hÌ/ÀNÁ/hÛižoæv¶ûE4*˜FE®‰à7Œ«ÂÜFª~ªy’ê$®Z¤U†P*(%a)Zy¾ŒíQMdªnG¢>M>,Õø½SŒdœçŒO¢©©ãUÑÕÒÔ.TÅr™K˜µf(¤áœuÆkÝ«Hï¥%7Ry.YæmÉ£ ×ã2saÇñLBlÉR$â•bzÉ’Ê“1CèտĂO1ïi/ïý•iìÏøÑâvlñ5¸þ#5RµjE"gMàË:–F”-JfÖ@ô´wQKƒÎåe6„Ê—ˆÉ\ý|$©*_ žìð[ðzÄŸòaË^ÐRQãè™–Õ…¢°Í—$˧J‚ô2˨½‡vŒ¨öß©©Mcаø›âÿÙÞ» ­Å+aQd&Xé±èчÄŠjQížæ¿ùRâ4Þ7£. e´?æ’Ò­wSdqtyï¿®ñ©A5Rܾñ©ZØv=âW€ø®fÅ14Ùç\þ³TàÈ¢“<2@^µj=˜7B_x‘Rx{8·‹5_(ræiðÏ ÈÙdæù¼^.#˜¸kª™ªl¹£é² ©7X±ƒRîf¥¨»{QZù"x‡–<8ñ!91Éħ"WèÑD™d—•5ÂÔŸ×O^ñd»¡Ftßl­›ŒÃâfKáöxÃ(•Žû~9ó²­fS#ƒ0)zÈS‡Ìþ­YUÿ¦c‹fÆWÊ:n3òvÅòp§‰WLàû5JÐfqZ§Š®2¦M$° dÙ¾1…§˹z®J™nðóÆ?²Vm“˜0ŒÃâ’è¥jÿcÔUÒšeºŽi)XŠŠ…÷¼IFOz4§ÆÕ•_|qË?x¾~ÌTuÈE_…&†\°Úi×(¸\ÁÝ&Êïî‹8·3 $û_É{Å¥¤n±±j®èÒ&œ»_s-¸Ê/O‰¹¢N`^7‰dühU¥4ÓtL\ƒ:hm)\Î@”ànÏÔF&·B:™w°üÅóŽ@Ÿáî=M™(ðš\EU˜|Ú$R¡A –dËJŠ–SåQp”µƒìq}Æœã%F‚W‹à¸ÞSÀrôŒleÌ£ÅgMªLh›:J´)ŠVRPàz•´e´¿R¿”ýŒ½0‰(¬¨¾)]U‡ÔOHTÊIsS¦^•qyÆ@;µ%jŒ²Ìxºq¤Ù\û¿#‰—rH·q•$ˆr\ŸX×"ò,>±]‹È¬¢b;“ &Ù-!™÷>‘+á® Xe ˆ+–ã}ÅM‹¤ÛÖÊ© ýA‰ۣƹV©p[¬NÜ'È๎bµ8ž†2£yB7{mÞ 1®á½}ýG àˆT7m/úE¯å‚îí½áT€vµ½ —ë÷û½þËÅté0!I·ÛénÝ‹E[tôˆ÷Ép È÷A?‰!b(Z÷ï¼E¶yq zõíù©ð9Ý$º½ðDX¤†o²"wŸ¿È_ ¯KÑ®P@ saØt‚å!èžßÂ*JHn nIn¢i%û‡¯ê"ºyeÇ"›ávÙ7ÉéO߈9[(åLÉGâri&TÒÕ&Wt´…"HjP)Û´cU9"Â]³¶rì·a”ß*œ?2ͨOÍÒóLºÕNÖ"P« *wfÓwvõÆÜh›»õ:ïË#ÆJ)ž4`Ù§ÃìZEDÊl.D¥L•<(™óVRL¥ÿ2Ïü#”#IÇÔ³w4Óàæ9¯ÇÝžªpœ;9×Î8U6%&¶a¤›7Š$‚SĘRJÔÞ­xì´ûI$ÞìôæF͹Fc”^5b20ê4óæáXžd’™Ë(J“ŠJY:Iqy+¼}ù7[2¡Qâ†~*ü©æúú*|¿ƒPT©¯›N™u3dÕêCñ¤,)±‡fÑG²5ɋόXÿ†ù·ù› ñW ˸R$èX6;ON•'B’RAJ€!¾¨ÄOâVt•?•àðÖt¥£ Íø­Xki%VM•&§ˆÆ@Y ^¡e8¸Ý㤲s5²Ã,mñ§‚KcÕ?èâÿóö Fß5Ìûx’#¤“¬œô¾c›ü¤Î¯«€N xom¾†\y´ö:u-÷4o~I”³×âU%MŒ¹zÝÝÃÊš"u]‘|v'ËÕŽ˜´´­* à¹ÊüÞOÛ4飞¶5¾ü+-HHÕ¹o,te¬Ú,Y`•K§·ëXüc2ÙÙ– €??©Jny_VÛ*4Äp KÕ;@%ým›ßÙØ™ R‚–Êê ¼]ƒ½ t$§P!ì`ªa. H=Z¶ lÔÁ·/©úÃaR¥åÏAoj+ØyI „ǯSéÁE$¤\(Þ&v#Vð Õ¬·-õsv†! béRX›¹ëÞ(Jk¸PÜ®x‚Ø£”y@*æx?${Ž_2ÀVßÒ…jÕAm,Wï ÈÑqÌ)ó~0¤Þ ò1®ûµš5ê5IYI)w‚\³4†`TGED® V‡öI~°UtVù#QR”…$Wet‚\±C’–$‡$lH”¥Óèp?š!Š xiÖ5¾ž­¼%½ ¯*·NÏ›,o(T )JÝËĬQ"9ˆ˜ %[?¬(U^`IvþXVÀ€©$¤ÚÜ?XW,¿™RùA¥B»Õ¥$ÒH:FÌë»wŒ­è’ðge0NJIpÐ4üãOzÍ~bÁ€QÔúúB!dGúD¬„±HI#§¤U°¯$ˆp@V°=!‚_€d©*YJ®_m½Ñ%PÕ8—úÊèƒÔzŽñ£WHU•+A /}Äg ÖÆ2Á¤„‚¤mmÜõ‡9+ÝÊH:‘¶¨'{“Å‘³ÊRd©´v-¼TòâËBä*cÃ7øÄL™[ü¥—¦U̧ÃNÀyNûÚ9¹ãPo¸I“.I—ÁLµ>½¾0XUÉ¥i£¸J©æBÖGÕ˜÷øÌ™$镌Rbx†` ^èénÂ+m"ËrµˆÍX–³­!VmF7Ta¾MF „"ÉS| ÕjUZÚX:O*öPÞ$pUÌ:•°Ý y‹tô‹ˆÒ¼Êš¤LJ’ÌH7ÿ¤Wµo&ÿ/â* àØž¤ö°ïcx«Föˆ”ÖS¯¦´ŸƒÅyX4Þ0aø®ue«¡ª$w} Œ%†_0CèK¾ÑÑ3/qX|`@f€Š—‘õ žŽ}"¥O!›,/ÆñIFn„×V nªy Xö±û#ޝQ¥¦ûu$—æ‚MìÖZʧ›‹b•H£¡–ÚDÅè\ç%<šƒ)‹=ìñåê:Ç¡¤­¿ÍŽ«– vGÈÙjº‹1‰¸¥:ièý›…U:|¶ç%ù´¶á­«ÚÚ2Ò]¹wtŸ™¸hÆvïbµã[‡æé´³é$SÓ¡¸fšYL èA:\6æíÖ=žÌÖZºJWŸöÎzÑjO1“ÊN¨údÆF(bâ9ðŠ˜ÕjÓ}>±Uf:Ëô>ó¹Žjö:¡é`5# =#PDô2‹pG5ßgŽ‹cÏÈÔ‹Ãt*Ég®ZÐR·öë‰PÉI¶®»·qú‰3i”qÜS-æ |c¬›MU"bf!h˜¤ùT) î‘Ö+V².²‹Ï>7fß2 ˜i°àŠ%KRjd¢oaB—R–µ;ë$Ø^3 4®ËQΓ9j˹ŠÑV6Ý:ÄúÀºE½ QbÌ\Þ‡œ’CÐÈØ›R©Ôíéßuf0i[±HpÛ{¢^H°@_Ñ¢p— ÏsólÖà,¶u¡ê7YF…ё˷¤Fhܨz| ÈýÝ´·H¶VÐXoæÖ>±FÂf Úî!e¾@ú¸ ïÖ ”·x] ¦+{tûâ'Œ’ð8BýÄTë`e  Ê°ô‰„ì½Õ°©‹õÙàÖÐ’ ÝFѯRï”) Ò—ïŸ@š»O6‘·q¼rËx±ËŸX[k•»À¡:t‚ÍÖ-Ù›»ú¢Í±1›¼‹ä ß©;Bíà]ˆÇI}û®­µx°r;ˆ| ð v6c¼åôߤZ( ¸½‹¹-ð¸¢låìÍöBŠ_ÕŸß ÷"¯Â bµ@–ÙHUz‹¡S‹·xo‚¬‚»³¶Æ$Sd@ZésÃ.¤Ñ}@ípßç¤)§¿©>€B‹‘÷F£I"Ú@Ä©ùLeUP¼P1cwþ1¤ö¤,4«Iê!i»¬U'™Ã”žÐ[< ÇYb72^2 ’Ìmà9[!‡Kx»»‹¸ïÅ‚Ã@;Dà'XA%€Óï‚\³K—#R»³ØÅNî‰w‘½ ¾Ñ§“@¥  ÂCV]˜úÿŸX›¢¤:IæuÚ4ž(’Û«?ѳÅz.0Ɇߤ‘÷ÇIJ*6ÙÇG3ts”‚tx³‰$_ôNS·èeÇ“§—|;©«òt걨Ñdù#j™â¶H0"oRRwi3MãzÑMJÍh:£åߥ>9âÈÐèX·ü 1½ÝÎzêµhàÚy˜¹çxÛv/‹,%s%Óáõywë 4ZívY|?WT¿.ÞåomŒ+Éj–>º·¹÷ÆqFÚÉ$¥3ؾ££D#¦Hw ÁãU}G–,öÝ¢¿h\­ßþ‘ XÀédé H»ÝÿÎÐ[°öýGå:o„Dø‚¤ýÏ1ôŒT>‚JîÄnOHzš¼l4°E’l¾£qøEY#,~`4Øåe|ÊåÌE%ÊÙ‰”@Y)p—;Û{ãç{O¬ŸM-5™IE_­žŽŸINO»d¯ô7t9s.ãØEeN 193©¹ŠãpÂU)ß”S‘é õ½OG©ÔSRibÛ·õàïî´õpã9ØŽ»(áÔÙÛ,a Peb´ô“g¨©:‡f•i·ØàücZ^ÓÖŸKÔk´®IoµyýLË§ŠžœW5™›dÜ Àq†*§‚˜ ®ÆihÔXNœ‰dúüc:’ìƒ~>¦÷:å¹*éÓ&lÅ¥`•(ÒÛXw/GÕË_¹Il]XvÕ; ¯Á3vC‚Ì8nŽ&º÷T¹3]5ÌK$²É±-¼|%(ëèJZ™ž1»ßÆûÊjJ¶òi± Í‘±Œ¹O‡bRq dÐêÒŒ92RfëS——f™ÌzaÓuZzŽp¦ß›¥^rÔÓqQ|ZÜÁÈôihCKT¥,¶bΠ¬E1šºi‰Or‚ÛôK„£ó#1’³ aÙýçxãU“ḭèÝc5xFâBJµé:“Ý‘P\Ìzˆ±`ËK{2Ig}Ät<ïæ¤8é~‘jð„(¬iI'k Ïá °K-9[#âØÀDʼnx|…EM^¤J;[V’6/î3ÝN„`Ù›žü>­Êô2jjæÉ©“8%HŸF¢©dHæ)Ù/öAI=‹8ö»à©ÍE9”–+ßMÙãK ÅÞPÅK¥pž~ý>ø›†Ýˆ©TÀتåºZ4[c)À/­ÁêÞ_Æ'‚ÛJ§º‰^ž€3Ã;˜Éà+H·H«Ç$Ët9¤…$(+îsm…ºR$bÊÕÓkûá„ÃonC‡NB´•Yµ3|W€Û¼¤Ó°?H7Ùáž»¦˜-%A}u30í퀛hhå*å˜Ù‡Ýg€­UŽ)¥rR&:Y¢U*ù¢BVRÓàÿ»‹b ·,Ëù€ÄE‘›¦Ô,«nmx0Ûš{ºf>§~h+ V ¦g½‡Ýƒ±¡4÷,†q¶ýŒRÛD‚¦…œíhÐî|À´×}í¬…{‚‘ ¨«·GøXRb,Io*Üvš b+‚HÒ•Ø\!Û‘ñ!Jd…qgkClP™:Á:¯v¶Ðè™&cܰ³|UEÊ@!+):Ÿ£³Dݶա•¤$%Oõœ_á '’gq%6}ìZ’ü\à”ÙØ{œÂƒ»À˜H{Ù¢<"»ªpI· ¼n²>!ÄIÖoÝš2ªŒÛ¬Òt8 ?e [b”É}%Øõ-Œ‹wcWÁ%ô‘f°ª*îAô?©Ñ¶‘P$•é$“kŒ|B©2’²BKÄ0p·‚[äoÐ]%¶ØB‹ñpÅÓ'IÆÛ~0Ø[ÝàŸ¨Y¯a 'ÅÈ"܆Û/ÅœŠ87³]úDx#îxzÜ&ÛíÖ+|ø¨R$³‡7pDóD¹òÈbÝX~è®·ð\ái<ƒQô°‹³¡ñ^â¬Jgîm÷D^h&è_¡\„ÌÀ@;òÓ%ÁP÷hœ¹Ò„²É.v$FªÙSorM2µ@ì@ata¶2B®6fÓ À}Ô#J+}žÀøÂ¸.رT™zÉýÛ[&V¢^HúÛv0Bä&‰D’AÝ­©=†­)Ü [wŠ‚lAH:n,C}ñlA$¸讨Úllô¡25/”“·R# Úɨ÷7‚”)\°¼Y×)dj¬Xlñ–TH2wé¼n>L½™êôp(£Ä AÁc…Í,ýäˆÆ³}˜Vsé«Þ;tsŸ”Š¿ó±ˆ±ß…ÿÉ—ÓØM©²Õò/ú_°°—*GÞùa®þ :ô«ãlÖ|º•xíŠ9YHá1;ÿ'“éÓ÷jŽ}Cÿµœ,H:“m*à´ä³ª¢‰Ã$q¹±„•*D޲ÁÔ_U3K6†HÙPÙü"9l²Ô,‰Œ H›TL…%¤ŸEl"2/QW5 I€ÛÖ–ùB‰Œ°ŸWccò¬›;gó¥]Ø_¤P÷Á"&,LÚôûàhv²W¤—;re“¤ êÐþv‡%~)QÌÌá¿t@ò€&lÏmýÑcè”lr†`Ÿ€×N› K™.tµI›*c¹d‡ØÚÄ~ò:ºšŽM5†íc7¶ç§ñ‹µÅF„“â¸xuDì.†e}™tôóÕ!Ù(ºIV§w½š.§±-Ê0›Q“m«ó¿ÔG«jœ’ÆÆ ~uÄ*òå~6U9˜„ÌBbÊUe­:N“«ìëë?ehÃZªî1Q[lŸÐå.¢R‹ƒÙ»!¨ÍUuyi4äKàK–‰Zˆ.ÉfêßTtÇÙºzzþþ-Ûmþ¿‘Q'vÊéeéé7~ßú[EI¶}ôô‰ˆ²¨iYRõíë® / hJJ€BN‘ЈÉw“¥JYbîIŒ=¨›l.‚¡e¤'¦£¾M&öAJP}=!¡¡Àb¥iVÀžÑk4g<Ê<=ZÁÓ»nг¸àJyTØÌñk6]‡‚”1æ'r}{DË&ï•Ì“rÿ$+Á‚Ç"Vé&Åþè*Üm’V•:Žf[+‰K5% AH ¨gg¼OQŸ'=Ì?ÀñeÖ`zªiLÎJRI,BR`Á–¹aGšêiTe×ÒΗ¡:h!›­Ï¾ 4;¨ÜáyªJTŠ©!FÅÒþöx–ï%ã&ÊLéS®™¨RujTÿÒØ<™ jA[?ßï‰è_AešP˜“sô*ßq³ÂÂBe‚Þ›ˆÎ òc)!”¤–IfxÏ’œ—wÔãxÑ2ÆÍSÒ§<¯ïŒ¯B·š#È¢ÝÞ,pru²Ð©ÉZ×5zYAt—Ú9&ÝøàÖ9É—S*`­úU*RFÚ‹ºEÊŠ¤mæ{šº¹sW*Y¹gÒ•¾“ðŒìs‹­Ê¶6„¢¥hB”e†e¿ ëQ åJÀVµ°J[¬_å#£EPIF¥+k¹1ð`ÕV(ªiRŸÑºŽñ¥µJ¨À©æ:o¬_´S/É åòiLÛô¼Dez‹†0¨Jn omÉ}á“MÓ.øôº}hIÕ¸û¡õ7~Gx üš\ŸÎ 6ÞEFos^^"_vŽ–©{‰¿pÆ"ÞÆÆ~^¨M&1MV½ZeMJùw²‰«ý7É–è¾ã™æŠ³ ò° )ë-e(+IÕÕ¯/GÙÚŠ_Ú^úàé>¡5„U± ÇOÃ¥ÑÏÅñôwú5Ô,¤]ì mãèG¤ÒRïQIý wÍ®Û1pü/­ž£G‡Ïž¢×•)E?pô1î‡O9lŽR—kÉyËãÕŸM^©TòÎé%iPß¡O ¡¥ì™Kç¡ÆZ‘EóðÛ.P¥Ë]J¿ö‘-C¯ìúýÑôô½Ÿ¥ Õþ‡7ªÞå‡0e¼¯ b²ŽG)hàé›*BÐóé-gë¯F5HÖ›mäòÅx"qG¢CGäÞÇ­z˜ÅìŸQ¾Ü£§ÐŠLÃ&v­˜GE‡…Ž•`Æ¢Ç>†Z/+I Þøê¶<ï{°°?çï…/¿½Œ²Ó‘¨)¥b¸›{=3­)[4Õ¥”A±pö{ĺÉb¹fN3›1 V°È¤\ÚjT2é©Ê“-œÊ Å£+gO{ÂF|üc1Õ壆VKUM0KKö‘1JG.‘¥Ë´gµ'ÜNëÃØ©/ ªÔɦ¨wrè,=Ö{Äs~ƒ&áujš ij\XÝõEàjðªûeœçfB›ß¶ðïLp°œAS@öIĶ›ËUþèŽhœ›„W¢c{4Âr4)Ç ´W8•П4â ji„(½Ð¯¾Ñ;Ñ£ Ä U,âÛ Ý¿#p•„W%Þšm¶ä/û õõb|ψi¦ב_}¢½EÀç;¬V¿ÍæmЯÂ3ï£V,Ì*ºÊ³Oq ßx `S„V‹ iä• þ÷ª»™Zð4WktÓLn€ ýö{ÄÌ¿A>i¯3?“N lJº'¼ObËÓ‘§ Äöy…·Ò…_î‰)«¤drpšÆKRÏpÿPþ\ÓaìÅ8Mhqì³ÜÛÈ  µSج*´ -FÍä?„Uª˜¡YÿªÏݼ‡íÚñ8Mc¿²ÔnÖA¿ÝxEaIüÖsŽƒoº'¼2/ÌÕcÿGšìÇþÃÞE`¼üÏ[¨O?â‚ÍöCÞª­ „Òο!¿ºÑV¢tKȇ®ÿÕguA°û õ"·*±Q„WlªiÖ¸:Ù´G¨ˆ Â+Š–M$î›K?„U©M ª`ÕïzY¥^¨S~èw­‹|pz÷uSÏ~úøBZ‹ ‚°Jí…4çõAü"ûÅy*“¼Ž^ ˆ%Zý’c/Ñ©ÝÞ­‰| ù¦­$¤ÓÌ$ì4ýÐ÷ˆ[ceáua@™DæŸÂñpVð(«BF©'IØé?u¡ï€ßà ­$£€·>`{ÅD¾Dù®­Ia%EG`[áh{ÈݘˆÂª–’Ò&i}%ÿt%¨žJÛC¥a.2Dã,% .ßdªÌš¯ A¨–häÖ aK3wêC ¶‰ï<•ºØŠfRµ“.\Æg. ‘öAMrœ*¨ªÒTÀ?”þ}äLÛ溿û“ßÊ ¡ïm‡ÍUnZRDzOá´=äE±êÃ* :P)–îú Ç¥¡ïäŒaeþ…n Æ“aöDz‰¡Ü3Öêý ÙŸÊvï´¢/pŸ4Õj¼µ7¸þsˆît*0вSôK$ô 7û¡ïärb§ ¨PtÉšO`’ÿº/¼V-€Âªô°’µÙ%þƒÔOanÅùª¨Ê@2fufI¿ÝÞEì/88UC7`¬R[áh×½L[áU'JD™„Ù/ð´Ox…òÅVXTÂJÈWd›·kCÞE`™@0ª¤ÍeltŸÂöÃyómN’x*JNÄ$¹û¢-E¹p ©I¼…¿Q¤Ûî‹ï0g4,¼6¨»Ó›sCøE÷ˆ´"°Ú‚H˜ãšÉ?„OyÀšê CÉš ‹¤¿î‡¼.æÙ¡Â¤Í~ÉûíxC®ŒËIP ¸TѤóF²µJ, ’{nÑç£M#R²E¯xàôÒhÈBÂ¥†õŠäàÕ2I7Xw,c¤Y™lz—ý*˜|DĀР›c»q$F§}¿çÞ÷g3ùKLÓâþ$¤<&½ÐËŽ:9›ê~)Yqù ¬+Ç .Êñl­ÿA:3Õ ßIó?–Ò—þ¼±d©\ßBÁGþ˜ë£J笿íÉÄ’ÎSõOxÓòtw¹hÊ+˜•S-“õ·øÄ–džˇ„šù甎Vor£QɨòKž³Â0B§/ʰm=ˆ;ç°ªd¹' ÆqŒ&~9WŒÒQPÉÒüj… -ÉO+‚ {õYÖ-)-8¦Ûü׿kJ.i·„¬Ì#R”gŒ)E-äÄÓæÛí'ãõÝ\èÿsQÒQ“ø¿rcƒa@‚0Wꊥ‡ºÑÍûG¨oøoôä«J5–ˆU‚áæc~^àß­¬â‰Òý¾è×ü†½_»£5îãÿÉ œ /â Æíó²XâÑ´uïøOôäžê;w"C•ë*©jjp\ã„×L¤¦TõÉF"V¥!!Ë‹«añˆ½¬á$µ Òn¶ÿ/b=O¶[ Êø¬Éõ ¨J„ôHã,̈I/¼}¤û’’9z3s5*)å,ÃÿÚõ4k³g±P®zþª 7v'øEK4eѳÉx$Ü[ •_U;Bf€¤‰j é î ïGÙzr‚”ÛÏ߃Ç-v¥Q7Òò­"I}AAÿtuÿˆÑòÿoðOÄH‘^ÂS6q{s([î‡üNŠåþßà~"| r¥(,gTivó þÈ‹ÙZ>_íþú™Z•gJgN6S(9û¢?eh­Ûý¿Á*±?%¨ÊR8•wb÷F¿â´|¿Ûüu3”éHãT?mBÿtgþ+Bîßíþê&п’t‹QúYÈì5ü ý—£åþßàÓê&ÆÏÊDáÓ&ÐLZ楙 .Mú=ñç×ö\"«Mç×oèt]Kä­ªP(d7¹{ˆø’´éž¼n"‘É¡[Ž£Ë Ë!V°$﫤O©ý"^À”Š·øBÞåªÂ¥E˜¤Ò61RHÊÚÙ"PÓTH$Ùöx«!áçaÈÐfAvØíï…y.ÙLb˜j!W¸bzE¬Ðð.¹i”›¥É{âW“/.Æ•€Nµ?ê¡E~ƒ“1`”¡V`nGáE[˜Õ¸v\³.§¥<ŒV™)r;’F÷‰š±ÆÅsÈt๸MLÚi®Hu¥){Û•;mÚÜ”ÊÝU>iËsʧȟSL qe&b‘ñ%†Éx'¦÷,fÊJÄ™KLµè¾¢ 9Þ%VE–)çIJåLF–*'qÜúÑےC0ð—2É6`w0nòTìdÔ%2W)¹‹0;teÛØ‰ùP ÂX(nÛü#O,Õìˆu$¥,Iê"`?ScªZP—^ã¬Vër˵³®%2i‚eÍué}|6#Ñã’ù»Mm_½Â¦eLåËTÔ¡HÓ•|cWŠÿÒSî¿ü5ŠçŠy¿HÚ—â=̧ä­ã“R¥j1úˆØíÒ7ƒ7jÞåcå”T ‘·WÚ Q¦Ä‚€•ÜlEþ%‚lÍ$ò îUû£FeVbTú’A'”öŒ‘äÇš®F#­¶#·º*tEDøXO êJ…‡km °ò]p"Q!EÜ”Øí¸±õŠuNÉ|Qd¹„°z‚XtäTsòkzG*MÐ7Û¬o…fâ&Ê)>ø¥{Y²Á0ÚÜAe4tó'©ÛD´—`=DwÓÓ”ÝEuHº`f â‚©b˜ió´³æÇ·KÙºº›á~àâõ#’ó€xY‚Ò!µS*RP¤uØzˆúz>ÍÒ†^~þ‡7©+h¸á˜NC-(£Ãé$³Þ\¤‚}ì=L{ã§ü¨ãÝ'–gSñ&™iZ”~¨?ÛinEl´MÈøÄœ¹7¬àÐÊKi“Uª\ź´))»X›ìDx¦õ–”3ôÉÝtòQî‘^¯ù‹—àÿÏtš¦M7“ȘWµ(¨‡?„~-e${‘‰0oߤ=N‘y!P%J 7§Xæ›JͧC’Ú‰HïKµÐ~ ÄT©PwޱU¹æj¤Ó.ä»l{÷ƒ#Á½Æ'L¤Ê”Ô®Gbg—ܺû#z7Ûƒsá¼o”‰rÒ¾q¸sæO¡ïµ5;~ÿÑ6LônZð³ M4©¸€*$h:YØYŠ=ñógÕJÚF%¨©Q`G‡ùP#OÍ4¤ƒ¨¨È–ÏØòÇ/ÄLÓbŸ²¡AIÂiƒó&D¿±ôíÄO€¦Ð«Ü¥ÂÑóe7ëjàÊvþ®Ñ?¨^÷v:V@ÊhAHÂéIßQ‘)Ç«é‡â&;ÞAY )©œ"–Çg”êþÍÞþvNá2§Cæznbö§–ãÝËu3ºΨDxy”›)ÔK92e8þÌEÔê"ÊmØåø}•¯ý‘J56Ôòíîå‡âfG&Ư å2•ƒÓ¶°§”á»rÅüF rnÅ^@ÊjZ“óE+©¶§•Ëý›DZóKɰ9)©ÿØÔÉ×ÿ³ÊåoèÚ/â&ƒ•ÈQOþǧN¿ýž_+FÑQ:¦;Ø•ÿìztëíO/•¿£h«¨šÌ@ÊŠö=:uö§—ÊßÑ´EÔN.Ðs`rSSÿ±©“¯ÿg•ÊßÑ´_ÄM+2¢ŸýN}©åò·ômÔMæ9L¿û"™Ât·³ÊsëåÞ'¿šì@ÊvÿdSS¥½žS_.ð÷ó̇ùO¦Jm¢Ôò­ëåÞˆ˜îÈ ¥¨š)l$û<¦÷ùw‹ø‰Žà*5°zvmÉåý¾_¾ˆ˜î`rSbNL-¢ôò¯ëåÞ'¿Øî`rS·û™Êt·³ÊqëåÞ/â&;„ü€Êbÿ3Ó hþO+íòýðüDÇs ~å$jÿfS+P>i2­ëåˆõæ÷+›2žã¦ÛGòy_o—ïŠõæNæ(ÈQ-þǧVýž_3ÿFñQ:¤;Ø# e0´š)/æ§•Íý›Å}N¦áI¡%x{”’°¯›)•Ø*L¢?åˆúB÷ºKÀJð÷)¦`XÃ)•Ø*L¢öb¾§RÛï<ßòÔébWÍòR?fT°Sý›FßPîÉöª¼±«W²!ûðåÿrŒ~ {Æ'ú©Ê¿ú”¿ÿg/û‘!ï§Â¬¬@ 69܇ã$=ãõW–5jöD?~¿îDücð=ãøU•Q 6Í.]¿±Æ?Þ0e`hîÒåÿrŒ~¼`<+Ë:E"·_÷!øÇà{Ƭ¬6£FÍú9{RŒ~¼`<*ÊÃj4lߣ—·õ!øÇà{Ƭ¬6£FÍú9{RŒ~¼bªœ­ÿ©KÙ¿G/û‘!煮­ÿ©KÙ¿G/ûüd‡¼bÿª¬¬àûmôríýˆŸŒ~¼`<*Êà’(Ð磗ìCñÀ÷Œ?Õ^WÿÔѳ~Ž^ݼü[ð=ãð'ú©Ê¿ú”¿ÿg/û‘üxÅO…YXElÒåÛû?üxÁ>ed—M°}%Ëþä_Æ?Þ0O…YXElÒåÛû?üxÃýUefØÑm¾Ž]¿±Æ?Þ1?ÕVV`=Š[ ‡]¿±Å¿Þ1SáVVF€Û4¹vþÄ?üxÀxW•Ã5môríýˆ~-øñ‡úªÊ̱¡†ßG.ßØŠºÆ¶ñ‰þª²³ìRØl8ríýˆŸ‹~¼bŸ ò¹$š4wú9Ü‹øÉxÀxU•ÆÔhÙ¿G/ûüd‡¼`<*Êãj4lߣ—ýÈ~2CÞ0åm@š4[þ»b'ã$=ãðcÔøM•ÊŠåÈUÁL½½97‡â¤÷"—Ÿ¿ôU¼Sð‡•—j*ðé)DÄIR¹’€ì•ˆßhé§Ô[¦X¶ö<«›hUC‰Î’ 5"b“ËÐGð|ejÏn‹Í‚}ñ[ðzI¨ù”A%’5F ÒØå©Œ™4ê'Shë¿ý#¬U}2^OPÿ£sR¼CÄ–Ÿ0Âæ¦û7DjmöÔNz4¦Ó9Êi ø»Š‰ðY÷ý ¸á£…“}E©|EËä6²|zœoÆfÿôyÑ:á³]#JMŸ—N‘ãæ2?@Å]?7“´ÕiÑLê¶qÔlõíèÝÑkÉ2¸Ói%9µÜôÞ#ÙêÝ#áÒT**ì¡£áeEÚì›;+^)M|}2ÎÉvù©ŒI´ðn+-¢åT ?€ØdÄ+Bgñy]µi¨úï¤|Y>þ¹ÃÇø4ñ¢«ï';F”ÉB“º•amÁ7“Ìó’%)”žRlÚ„^Ò±ºùJyl]¾¯ýbVE ZÜf6³Å¤…ßµfŠô¢`BN1%Ë'Îý#æ{MGݬsþNý?ÌסºÃŸªRéPöu¤ì~—aéΛøJ¼¤¦Ë$ÝFmìphì‹ÁYñIF^‚…W8;ž…*鿉&s“ÁÑ|3H/;“M(ÿa1û-áÇè*SeŠS9vfëü=c£ ùIà{?nñ–ÈÉV,—ÝíßðŒ¢€2T ïþß1Y%( «¹ëÕ“ŠR‰ú¥[úÄhÕB•e(¥Õå}„V¸"3pÔM E=Õ{ì{FrÍ/B‡ŸÅˆ R&"³ôi’RB4KI;lîcóÞÒÑPjkŸô{tçv|Ä¥N‡bzGËV²z+8K)S&$„,¨î7ŠßHÃ&Ì2’PP•;¸ ¥»ÚÑ"êÌÝe)££D€©•2¸¿´±¤E…=Ä“J\ÌB‚J¦ªQ–XM)qê/¼m.^å’k ÖVc´H#†¤•lI#o¶. ò`OÌ2x„ò„¾–³“ßxª‹Ý{³±Ô)v €ÿ'xS« ªÐl“»oóxW’z\d–%N§f'§¥à;’Á›#AsÕÛþ·‰¹¥hͦ¬—Á,Q¨—c{•m‚Q= ’eO–Љs-š5&ý@=b5d+¹Ÿ"a˜œ•Ô`³ xre¨¥ÔnX¥Ér>'Ä·ØU”éõØþ[œh±:ze›(¡zŸ(!ÙÃáJYDqo+bçãt8ŸÒ ©}]AºôsÚ-ä&m µ“5bãnÿ‰â‹ºLr¡±=}ñHò¬IáMQEÒ–m17/„ÈP•«AKv1SOp£k']¡PUt©ÆXZf;Ë;Ê9T·üÏ’ å…!)•=E÷l@OýcJ8õ39eÖÆš•Ò¦j& ²Có\DÍm©ÓÁZ«™¨-a.%³ßgŽÁ†«k˜&N¨Ód ,ž‚Œz3W[5A”ASnIØF*ðašªÇ$ƒ²Ž¡ëëø+iª£ hO•Ù‹ÛÆŽvcLRµr‡¶ûKv^“ª£Q]µmê-±ÉrÂ/'S$qRºÚðJ,ø®±ù!d‘1Ÿ¿"¯yLÛÆÇ&wJ~¨{zÇEš2"ùX¿]â¯B¬àï¾aT’²¼ªÕRÈ3¦uðƦ(Aßß©ö~Œc¤¤ÖÑóu¤Ü¨é˜]‹âHÃðÙióJ5$;w$ ^®¬t£ß7ƒœ æÜVçqʾÐà88‹ÒQbÓúYséPts¹*w}‘ù}hÏVoÝ7\dú±éãñ•ª¹žâ2±‹QaÓÜ<%j'ìHí÷Ǿ+­Ò“}®WÿÛchÉ,Õz_ 2[Mjñ .5%-É;ÒáCë“ûºG‡ÚÐê;{%ÖýÁÛ§é §‘Lñò~/O›&QTΨöp¥ï,ò –K°¼}/eiéËIjGý<½gwwkx9ö udœ]zX éÇÓÕàóè»<‡ˆ†©.¢£ÕýÑø»´zvb­Ê˜ž‘Væã‡d+S­Ó´s‹ÁÕ,dQÊ‘Üõ7i7fhµ2@, kF“<ßÌÇÊý"}Íðï2ö7¸‘A‡…¤Kg;†7Œ^çN;?É D醳-ZUÕ!Ç苼xz·Q9¼;àôa‰k²l˜ù\…)t«w#¼K yìͧ¤,<Ň¨Š‹@æÇÐ@ NÌ9ù¿«õ—Ä:”\zCÖ€³6HgÝC¤DüÄ ]€éÞBY!΢:˜6it–:Iê ˜‚T °;ÂÀB‰w§hX¡\-:Ëþ´/6Jv§xXQ.àôí t+…§YÖ…æÀºyYîÍ«¬,žV{³jë £”Y‹“Þ`Ä0¾ñ,ËplÌÑoÜê»‡é ´¹ ïÞ €)u¹6fh^ºSØlÑ,ËplÌÑoPQ.àôí !,çQL„¤3m¢X”†`-´, P*ÔÓ·0ë:¤(êeìÞL£©–C³zA0 Äk «oH¨”°A·ÂPLP¥‰„Ì{AoT™e9Y4ë¹´ë/¥¿Æ A±þðü€â#H÷÷‡änm:Ëéoñ‡¨lO°O¿¼? `x…ˆÒ=ýáù[›N²ú[üaêÄ,“ïïÈØ!b4x~@6šfm»Ã€¨Àk$§X0"X!+3 Ü÷ƒÞ¨ • ’oñ†ö(PÒë%ýb6(PÒë%ý`Ø¡CK¬–wõƒ`… .²YßÖ €J4ºÉgX6(PÒë%ý`Ø dý!¶þ±mx¡_®|Ïþ,…~¹ó?øBÀhWëŸ3ÿ„, §RH) ½ñ…Ð5yÅnW¯’°Ùæ1!þ¡´WÆG|ñr‘r³=]ƒqV¿2¯^ %G«NU"–yIÞ-×{–I¨ˆâ+ù±¸üUH窰O, LìIo„uŽiɳԟèÙ â6$5m…M·þ$‹ÇWòìqÒÌ›(Þ>H‘3Ç\A5Jø|¥.S¢>wFÿéTï×ÎN½E=géþ É>ž‘?( Ø–„jã¸D½,ÔóÆ:ëÊàÛ.Š^ñQXù{ £åŒ$Žo¡töüÚLwÓþÍœçüGÁÃáN ¾Þ±oÐÓ¦¨µxzOΡõv~¶TI¼RFvÙcðöõ5e˜~ „›Ëa;tSüRV¬Ü§åør&3<,4ÓI—lF`_Éó Õ/©ú=E£ãF?þc'ïÿt²¯r¾ù0|V_•6¾n-&š¾­?g ¨§Ô'¾­\ä!÷fŽžÕ–·ÃîÛŠÍ´öÛƒ:­Ëô-YïÂÏœ3¥U>>M1§ÑÇ‘*™)µ!%?XìM£ÅÒ{]GN3–S¾ÑÛWBäÔJ¦3á•\‰T³0¬Kç;F3èD¾IwG2îÖ¾Å÷d=­é-E_ —œyÛýœýë_O̵e(¨)³ªÊŠ|B}. S6d¹ÔƒóiéÀ$JH<ý£çõ>Öz¾ïݪNI]îŸåûtú›Ñ2±àDyÛ¤)²ì6ç@xúžÐw¥¾Z;^†æ!&TIIòS©êDÖxötÍ-(ý¦è³,2œÜ³7xî²Fì¨øµ¨`²83Ógý•Z7¦þ%“2¦t¿ ÿü•†Ù¿5•oè&?e¡ü8ýó'ó²Ã,Ü.Ha$’™‰Q*fŒ¶™%»ÃL`z â Ì^‰wu3ýѪ*"H(2Á CÃ{#u‘%öK¿¤Yx*%¥”fÌ( _©Ú2ß‚¤79ã”9kR§«-ÌR¤\uî稡{QoæmTì^n1]=i¨· J΢‹i,§³†1ùŽ·ª÷îë¿NÁ»Ãðéõ“%©(d©ù­þzG‘ªY:'mQcÃðT˧A:˱Ðüb'െÊÎzÌt˜}LÊyNIfRIODžÞ±l×|cñ¿Ð¡Öcõ8š¸T¦jì™ÍûÀìcÕ¥£)b(ã-Jtò%6]Ì“BЦ¥&åæ‚ÃoÖ¡§ìÙ¸+9>¡Ul?#UÌZfM«°PpeƒÿÕ­/eU¹?Øâµ«ÔÚÉÈ ‚ó%,k²Œ”ÛïL=Ÿ¦·Kô2õ©Ù*ò,d¸W.Û—³¢ÓI×ä;Ú0k<8¬á•ʭԣͤJÞýQåÔöZuOöí³OY“1úSxd´ókâ [Ý«Ò<š¾ÎŸÍ0wŽªUx5ÒuȨ(œé;»ÝãÅ$Òík'¡I5܉ÍB倢àjÓæé¥t‹{ :ä²BÔ@k)ÏÛo€”©ú厈"â`7x?̉ò°ìVˆÒâ4Ò&LP ö¹ÒÂÔ.׸=zÆZ¥FÞÖrœÅƒb™CÓ5KT…y&¥a.À==U»}Ç:ÎåË/ãTØ„‰‚é]µå·k·¤£pw„n'iu!'é,ů ¥’V")(–¤³«¯¤F¯aÏÐÇ•/T°„¯ANêýhv÷ìë˜sÉ“8ñB´º›†ûÆZrÁ´Ô2cbK—¦R/„RîÚjí’iS*øÄô™ÚЗG[ùöû.œUÿÅîU±‰Sæ9ó3²:ZàÉ¡ÄjÕ ‹ªïËuY2ÝnjªŒÄËL½ZÝ`…³_³EO-ªÁT°f)“Ì<×ÜÁ˜RFò“Í¥ú;ìb‘o†2ZuNJB]÷SýÑ8/%“.S&[-|¤–¢Ð¾R¢Á(-3e$/Ju…m¸7TAâR¿ò!WÿÒ ü5F*¬Ó{#–$:A%ÜoéÂ2ß“H @v³öƒÅdÔo“Ñžk^L¥H7(@ý×ôXÑÑCæuJT¼ž¿ðs¥ËùfEj©ôTb´óSÎO„¹;<þ‘ù^»[S_VQ{E¿ê}M8éÁyiÞ*ãØ0¡ÆUª¢ú(™Gt“ÎÊpAôÚ;{7§ÖmêilùÆLëêÅ%nyõG«[¯¬~¼øÍòYü(Ís2®fEYç¥Sñ¥í­ ›±!ŠºGÎöDº:åmûYèéµýÓÆÜ÷Åœ±+7em4çó”~llëN«Éë–öwVú]_‹g¿èϯÔé-XdÄйy7DÄéPà8ÛÙê»I£äA5¹äLP~x¢O5œ|~-,dö«äÃX`Õë ñ¹Ñ;ú‘ô¼â0ü¦øÀ¢é*ÔþUÜ—š3™`ñ´Ï5Ü›‘²G¿üb§D~MÎqcÃ|ÞÉ+ãcÚÙ¿Ðï#`4;îþ–•;«wœþS¼$°ÓÌýÞ>]œ‡Ä"®’í´0qïû&z]¾…\½¬c¶–dU\ž6ùBS 8ýR‚4•ÍYßwRï_Mü4ÙßJû½[0¹µ£N¸>ŠD”@ñÇdÜwÒ¶ÉMŒ©JukwIänÑÕctp’¬~g¦Ñã\œ?=b+áq æ§N¦o¤‘øBp“Âèå¢þ6Ú4¾?á²+såm\Ù¦«G6£ÿvßÒ<úRáx«±ÿ!Ô§ý~àçvã1ÿõyÐ×_õ³,Ÿ}ÿ—~•| ±dé¿Ð¹}ÿ7“¤ÛTfN™ÄC¥¿VûÆ7dËVYr1"®@í©‡k*r[¶X|3ºêNú\wóEúˆ´•?¤“wÜA1ÎMîoMn‹Æ*¥ø~ËêmGóŸÿxñô×ÿ˜Í}?ýÓmV’ûä×øAŸ¤d…Ö“ƒ{Tùú4Oö‚Žk~]*ÂÛÑ£¯´½Ÿ>±$¥K•[íͯt5ýÞhI¾ ÐIÄ+gáÙsØ¥Vh×OíŠ_0æ)÷ŸŒa{7QÅCSRëÓýš÷«¹¸Ç0¿ë0ü”\%'°™ÄŽ–ÒÅ>›ýÑ'ì¨Î}ÍßÃÛ÷“+YÅR\Ù¹ªñn‘TX¦ËÜF’m5M_·­S2´0sv Ú<ðö$®=Óµ©W¹:>¦î£—êk¼Jª3N)4'Xö «T§gÐ÷o´Ú†œcê—ç“: w?¡¹ Fç$'JUL¥„;éú]ž=½-{¥^jœY—Y\nñÙ`lì§x¼¤Œ"˜“V’ݬ¨ë§ó&IZÉÓ¼7Ôr†ÿÑ¥_ú Øè?D|½LͲÀ@æîÍA*RtÌ7ÿÅ“‘àêAI܇NñŠ ’žk%6÷à àp5´.Ú>·¿Ò.ÿ™sb¡:Á:l½ï³CšŒÍØí6T‡?½{X,G¡*8jêÆ ÉìuŒNuOMQ2±u8 ×Z¦caó}[ îÌu]TµåßÁíŒTbY°ÌlùræV~Œ>“n]ßcw´yR¬³užØ–:šˆiÕÀÔÌ–*Õöí¼a¾íޱJ?1KÏ9Ö‡I3jÿvÇÓ¨IïQîÊ2Ûª[?3Îű ª­©O³J·T©ö=ÑîI'™#‹ÔNVÎàæ‰™rTâD¾¢ìüËãô’„0xµg“£RaÒô…hcÝ÷ûãÕ|rÌÉtA-BͤAøä´î„\¤¥w6nLì )–HÕ×fÛÖ6+ÈôÏÓ1ÂÝ…‹u‰ØŠ›3(ê¤Ï5(â%ù®C}‘—¥œ`ÚšxeoÅüOˆÈ¦µ<“Bf¡z Ò¦K_}ãË­Ó®¢5> )v³Žæ<À'­Œ­tàšI…Û”E1ðúžŽzy[˜êÚ0$Ô%ie)ÆìÑâ’”qèuï­Í†ˆiSž–_²$“T—!7±»¤¬DÄ…¥_«ßÖ%3k&Úže } Ääñ(ײ5¡‹î›— F%þ;–íR9foÁ+²V9ªTÎ-*¿G5€~PörwTU.å“-yäºe¼NF%…&k³¾­û–éé©–üË–®–°êKjý˜»:TcM–K%rØŽRKb»XGT¢3%+”½ÁŸ_àј¿ælSi$·01ŠÒg¦C î5m°Œßwˆ¾,É•ŒRr—Q0™ÚÖ¦ig°éx²¿Ø¬b“AA%L¯Öm¶¶Žk45ŠL¡çt÷hæÓº2ðjª—©:Õúû[³FÞ6Ø$ùF,ËDÙ™¿ŒBHÆ!Dj×Ë·xžÆÇ¢Z¦[%V¾ûDlÒ-’ä¢\„  º‡¬ZÁºÀS.¢Z†J”¾åöƒvK!ñ¶RP#iÇáȨç¾·±ÌP\>§øGM’1%DsüÛµ£-Z_SpØôÿÉVG¶#/Ó ®²šV­>GẳÇêÔ:6ßìxµ©yþç§sÎv¯¦ùS.Iââ)+¦3õ$i2™Î•¥‹„«­½câôÝœSêu¾]ëëô=ÚºÒ¿w’ª<3¥3„œc5û&'7ÏMìzZã™+ÒyXücÞý¦ÓOKNãæëö£Ï.•4³ô9îpÁ«²ö=7 ªKM’Î]ÒОâ>ÇM®µôÖ¤y<:ºoN]¬ƒ-auæ5+¥F©³ŸMÅÙ%Gr;Ö¶ªÒƒœ¶CNOµnz'.f¬·”å+*Ï®a‡³ÍáLæâ<Ï(¼Í¹ÈkôGW/Ä(üÞ«Œj:ÐÓø/cŠøÅŒaØå>bÄðé s=›ŸR•©Š±¶1ú¥ ´õÿéóµu›’Áâ|Pé¬ZÓbÏÀGæ3G¢­Ñƒ0(¹Ò.äE9µÿñÍb(é‡ ó'~±¯…]ì6Ã2ѧّú¯^§™ßs°ì\{¢ÒY&Æë9ìø_c•nûÆ7²;ïÈñh¢è#àÒ£çõŠ¢sœUw×Ëû¯{ÇÌÜä>2                             j÷+ß¾ÑP1±`¥PN@W6…(Ø1éÒvU¹äŸ”Ä¢¬l€5Ì3´ö~i‘ö4r°tÒÃSŒUËTª…!iÒuÏ´t”j½O§h}Ó5Eþ©¸/5U£2B€Q —¨)=ú÷ÿé¼$¹³ÔèÛAÿX˜‘R\üÕ4 ôâH‰¯>ØaÖLôÖæÕYϾT5SâŽ#"Uä'¿ÑK;ï¼sÒXɽ{rhß|‡œøý„OúnŸû<èGð™:_â—! ñÿtèý ¥Ý¿7“Ö;Cøi쉩kQù8ªB6 ¿v‹'[ìW|–¬µÊ’™ò‡,§sïq·ÿ– %—{–_ “údÉÊãúн٨Ȭx¨ç4i`w¿ì&3*´™t•ZeÆyUGXl¤"iø¶ÛNªˆùRo\çµïú Jô’9¹Ëp\'Hû/s’ÜNE‹kͽÖQ‚â˜_³Sq RRyÒyõËR0Ý˜Žœ¤A6†®–¹4Ó¥ý1<=,]·÷ÅïRVƒk¦lfeœm43*‘@ÒÀI*⣩µž8þ'MMA¼³~æN-Ö JSΛi ÛÖ;·ƒù2æÕSàx9Åë&\yói;?qÒ3©% R7ÉÍ)gTÕâ§Ä’õ=%¸ú;iÝ6.¤~[­×zòi™©jÔn†Û˜ð¥¨²ÿƒÐéáœ'Åï 'ásWŠàiú%(Ìá¸ú_2Ô²ÎÂÝ#Í­ÒÇU¾Ì?7–rs%Ô®TÑ¢¢Z̵#v Ü>ÛÇÉ–Ÿkpk úù:§Œ´5ú¡ú—±ÅE¥ÝÇ“h³áÜYCXoòba;:/(°H¥£Æpñƒb6§›å]ùXê6 w¬FÕÛKƒŽM“_”sÌ:¬0K?–ܯÑÿZ2šX3%NÓ:FP*×-rÕ©Wt¶ÑvØÕò†Ô¡A)H:TíO–X¦°t5M”‚%-êòßnñɾ(ÊXf»™&f•K›¢\çÔ½$»zFÚ¶Ù§ká{•lFrBÔ¥ùOÕí[[ý î%4ª`s¥*ÞÍdÍÑ£© PL‰‡™nêì׉³r\îÍs[Ò/¡ªäŠk%ˆ±%½ðn÷3FE»0ßÖ&î‘TrYðÊa&Z­Ò´j¨éFLåK Üénþ±†Fø N±yj,£1 oÞ&[˜þ(,§*L@ØV¿ôáÙZ\œ¹>UYÃÞ4¶Aî†O}nÑ$XîzŸäŒ±*³,*bÜ êC·”<¨ý:‹} Kÿöäs5aÛ•ïßh¨ø˜&Šj]Î’¯phÜ7²ÃtyOå¹´ØÚªåX¢¢Ê¶áK1õôj‘aó?©Åq¹óªkÕ:qu,’Mº’c¼ßÓÑ®Ò*LÅú¦Î ªÒF\·J‚JšîÍ»­Ñç–rRÿ£IOˆ8‰YÒ>j™ÿ̑֟»¬™éáݨÑÎ>UIQñw:àÙÿàËŽ]:ܺõï È}Ïø9 qôÝ7üÞt:†½Û/IJ4-Q16bRª*8ÕRø\iºÞD6ÚÖŽÚoàM,WøŽ÷8ØW)úOº°Œ×¡eÊÈGÍzÊôèÙMÜžuÝœ‘ÛtX|/Õ¦¡Ãy~hG|ɤñr˜£•8!ŠžÏ»ĵó6tXy&È÷Ë“i¨k–sq$pÑÌÅDs’.¢cÁÖ{7GªiÉ|KgŸòHêÏNÒ7‹ñR®a’fÒj25pÏ}þ¤y²é÷wçéþÍþ!ò†Iñ(Ëàé£ÓÂÕ§é<¯¿Õ¼Oøé-¥û²ûÿBiž*J™6bæaæA‘ü£Íû^K{¢ÿÇIæþÿR½wºC¿Ö²ÂeJ“AÂJ%„‘Åw#¯’Ù³¬Kïõ'âl2»ÅœZnW†Óg—U-r&/•\Š lQûœu5Õ?Óó$º‰5Hƒ!WȮ͒"w…@ž"´ê KïïµÚb8É|œB‹ní=¢¬ °ì¦xÊOÍÔLŸý"Xßk.7§¹‰g'wù+·Ï9`5Ú–ÿÒ—¤êýÿÓý&‡ñ¾üÇÄLRžLìRJ«xs)—Ã%Ôêí#£Ð›Pr¬;ð{5f“u¹—q‰Ò24Š\Z_Ír×P•Ë«q3ZL°´$Yî[Ñ£]GOݯßøÚ³äšz•׃iK†®fy¡¯­Å>s•ód¹”Kàpùø,0>ÿ7{Çš}BŽ”£öÜšy¾2mA÷'w‚¥?Ïiñ¢N½sTñ.CI«j# ¨º~›ðéÍb—“Ïï5=çùRÅ誧æê„WIáÎåâ§P-ÈoFÚ>†ƒ^íS³Ï5ñ×8â Ìù’b¾-}¶­iXt¼|hõ4½Ü?Øí£ ÌŒ¬¹@kkÌůP>YÍè^ÏèÑñ^0ÑëK¹`ÚflZ‘‘"BôI»Ø—Øõã6Ö"i®ü£æìv³Ä†+éÏé&°å°P²€ÀãÛÓôòÕ•#–®²Â¶,¹*É¡§"R.|ês{©¬þ±úžŸ§ZQ£çJV^(©Ó(3[©Ž²½ˆÝ,§å N¯e“=TÀíÑ®º=ÑØë£Iö½Ž‡òs‘”e&mŠ_›·<Èï§/ú“FZNGM®(â(2¿Y÷´DÛtj¹45êÔ¥:˜…‘¥¾÷޽¼œŸ©¬ªmD›ÓøÇXìbÌË!*ܪÞèÑiQ4YàT5îh¶áªãÉÀˆ E}<µâ9M:“ô§ú›\È… R  3-Mïsm=“gY«t„Âq…RÓªž²O‰N‰‰ÔÚI`æÏzWñ,ÎðÑÏüuðâ—þÁŽ¥(jA¾ìµ„s(whòêéÇ©]¿Ì¿±·ðålp*2–|ê ´p§KYB®ìAcµ·>.¶”£*™Ù½¤·6X]qLÒ¤\õlyZíu¹½2Ù‡ÕkÔ¥/×¼Tïck„‰óÞsvTZe—Äi‚Ÿ×ִ껀)ëGrºR9߇x¤éUþÁ?qåU­e‚7šÁ1GB©B•"[UÜv,`ÔJ‘t«¢–w L´i{læ8Ea’1ʽ-täÓ¸—;èUç:wí÷ÆÖÙ{îW+§(9RY¾«Æ•½Ì]á Õ(Î)&Ãh¤fª¥:ç»q<Ç»m‹Åø2šäÄD•Lå–—"æý#OCr?C6‹ RÍîYÛü˜‰øFsÁ½ ¤•&^¢¶)–ä±·¤2kÔËTÕpÊé)`_x‰rF:ÈÉ%Šy¿œ;ŒWd{™¸=*Ñ(âsy% ![º¬ –þ-µ·&¾…CÅŒJZä£Fó& £ï:‡h•T¿0·)O¥ÞøÓ«&ìŽªé ¯VhÌ—&áÏFx'0£%Ðè<áÊ}„^?cÐçB?Eý•©óºòwü£âþ'…áRhêðïl4ÒeÊ®2Q M‚ ¸möhùÚÞÅ„æä¥W¾?Ùé‡]$²¶7˜NpÊÕyÃ×›~k›+‹Æ—ó|Ùºža)¾–;Ç›[¦ÕüDåîû®«5²;ÇRí.ê¯CQ;7åL«(£(Höºåo‰ê˜†ÿØ’6R“ðxõ¾“_ªmëº^0ÿuúœž¬4iiåù9Ö1_ˆc8¼ÌB¶g¦kk˜ÉK²@ €­§§(vÇðÊORVòG:Tš@ˆT{:•Z ¿w¼Ez˜´Xé´é•O³Î O”+0ì?é&NÐóùƦZO”¦ÝD|Q]©äï6·VyÓš>f•j n‘ù¾Ï¦íÙ‰3OåûŽÑ›|ÞIe’CzöŽxJ¸:p"\2EÈû£J¿"ú™’ôŠydmª7õ<Îû”Zfû›ÓW’4ÞÆë9ù0§?ú—ûãÔÛØôgÉ$ŸÉbÆß £æõnÕžynvTõÐ\Ú}cæýH<; b€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€a,êØ^*ô.(ÿ7Ì:œH·¤n1aº<£ò–OçÓWÃÿÒÖþ³,Ñõ´#PùŸÔâ5Ÿ¦øÇVð©¥°´OÅ u½:¿ÜjlfKå˜Ä5£ªÎÌóK+¨?ÑÖAϸݰɃÿ‰"9õ_"úŽ“ø¯èP~Tiñƒ˜ÿuס—Mü$×i¹ùòøë…$›ž5¿ý^t]eÿ[¢ôÎõ0k>\@q„%:@àé¾ÿ›Éxé wAJ[²j%G0ApøE~¡È»xm.Šm*ÕYQÀ@fä*ÕuvÛ¤bX¤Œ´•› Èpw:[ûQW’–L[ ¤Ä%.Lù|D©µ%È}›cé!ÈØ¥Ñ¹8‹þôZ[îwÚ Èx(ì:¿U\Uÿz2»B”©¡«ÈxÞ•ÛnußûQj°E9.@dL$~h×ÿ¼_÷¢´Šõ‘Ç"àWj^›ë_÷£4ž(ر%d<DÒ°Õ~uÿz*¢ûÇÃ-9o°ŠC+ ¥à¹ej/a{“ØAªd“£1EK,‘²·RDTŠgŒD2•¸ö”?½•ÒÝ4bMcÂ*Úœ3/aT38S¥H“1 `X„¤‹n~¾Zš*2åcç¶Ôû“:JüIÎ3h—O;Ô…¸#Ù¥lC~¬yãt»”wþN¿‰Ô|˜ù{zºÆÒvò-/ÐŒz5µ}Ìëc [)44©—&› “7R%êÓ3NïÌmmÉÙô#ÿ^廚Œ•F…pÙõÙÛ™Ç~ñ‰IÈè¢Ö#»9'ˆ™’d³/¥Oç“_RŸvÒz†Ú=ZNNÖYÏRJ©lgøy—Å-8”«ÎWéÝŠ›«mÚ?WÒtÑÑóå+ØëfOUƒUPME¦èk›2Ÿ¼oRw”M=°Ên%CˆÑI›6’¿BC8á$¿Ú}ar‚JÉ»ÉÎüE¬Å±L&¡5R>†^Ÿ¦Ôžg)苆&¼µ5 î87¨lu¯“º5d©IG6ìvúó#Пýh3gE¯ Ë3–ë¾öíåØ~  ³«A]㢽ÎoÔÕÕ¨9ç¿oHëˆk§¥?Qf£CpulÇb{ˆ¡²ô…²€·º.¹,ÑáóU䕈KZ‡vㆳÃ\Ñt²ÿ3ÄI¨›OJj&q>z% bhÔÖjÌ©pto jäÑá’pºÐôË™M~U”½®l žÐ}¿ È„©ÔЇÞJ­©]!:j-&žkŸÑ™„‹6Äïxá>žúý¯ú>ªMMzäVËáÔJmrÜË‹lD~zqm8¯ÌôÅáEœ ³N”“ÄwelÛÇåÝŒN°\°:ÅÈ.ªR™Iv-ïjÓGKk9ïŒx(ËÙµÓK=øcù¨BNäÔcšv•™ilZò¾&*0™Su­õ|GhÛEŒ’TÉè1 ˆçQ dØE–LÿbZšõ© ¥a*NæÐò‡“[R¤è˜4±,×ÞSYU-ÌÉhAN†ÐÈ}â4a¢aã•B÷ lÑ{UÚ-fÑ”Š@™!Zœ•1·HSX%S%B„hBnNïf™,°Tå Þ½£>¡®EBBR?èKê]„䞦!_O*`DšaPR»LDË'숓dlÔã˜Ù‘-S‚Ñ6¡ˆJBƒËÝ‹ucÞ4•,‰’WYĨœ£Ä˜LÕ-·{·hz¿S_5:fpÏRÏéÞE^PÌFP–”Ì a´bU¹½)^ç¡ü¶E¤å#âxhÙt?ÀÑCæk»›ú—IH;5Äz¬çÙOêM*A)&‚”÷Š "7DJø0q¼sÂN³SIYû" %¶ìýþèá=xÅoLëÙR·’ƒ™üR¬…Ê¡\™2­¡jÙîSï—¯×åvóûã§j™ÌñÜ×_W=BR‚B¾°ÒGOHùÓêu5WÆÎц2iêj'O˜LÉÁºç¼I%T@½k«Ú2Þ0iN'„:FÑôŽ‘YÁ•Î_§ßcœ>M¥¨ ¤–÷úÆ·wäÓÜÌOòTƒÌ^6’g™üØ€F’.l»´^h˜7Ø1‚zÐÉ/ØÞÑ—Uf«z7ä’+$¨ü¡*>wX¯'9Éü¼™[yùœ7Hù¨æ>2                             Eôæký±P1q2}Šr™Ž•'Þ7š,7G“¾T)H­™gúbuôÞg,},Gs¤1:G™ç>øé.©‰¨?J»?)´X}>üœõ¶Fd7ÐRcºvèóÉúž•ÿGÙ'>×?7û2`ÕÛé$Z&³~ê½GO™¶S>T`ÿ®óÿ»ÿäËŽZ_*'Qó3mò*Q:àÉgÕÇø~o6ù‹fúuÿb5ÿ.T$|¡q¢| IìÔÒc¦›øÚŒê»³‹%#ÊVíi]†ù¢Ù“Ь€à3‘ï0iá=Žkz6ž!Ì^*buj §¨›*Qú’– žý#çjûBs´±ôÿÓÓî‘K¯Ì8¥ZʦÏQ ÜjU¾øðORR¦Û6£ÌQ3†°&7Y—1ŽM<»"Ö®E’[¨¤2aHyJT²d«©ëîŒ,"ÅiQO-<5oetLU)Q¬žF¦´rVN±ØÌôbÁ«ÈØÎMéÒC³ôŽ‘G›ù˜é/¬i.ç¯ùÞ6G“sl0·Ôr¾1Í«5¹è¿’|§±ëüÉqóº·š9Írvd]P` ô˜÷9’ ‡,Ì¿X¨Ø¡üÂicå)c¶ÛÆá¹aº<ŸòCÏZÜÿ+!Žßï#ëèü§M/™¿SˆO 5NÛôŽ­bϧh’„k#}&7±f5vFd£©®§ý£¶#±ç–Jÿ£èÿåî ÿ6L6Ûô’>øÆ½û¿Ìt×ÞÊÊŒâÞ$Ûýÿ&\sÒùIÔW~M¯ÈÌ7˜ fý?ÿ»Í‹­ò3]+}É.ÔÿüBã¿î\ÿú´˜ëó2ÄŽ$:K?d2ËOÉfÉëZ)) EÙ77;Ä–ùØÂw'fïä®z”Ä.z4Uá+EÐ/Dç!%¶ô÷Æ>…ªØÉ\Ô€&/Ñ¿Œj‹…Ô”!!`ÜD¬‡Ëc’±Ñ™;鈗gAJ@I^¡{\ýÃÖ(¾’¤èP–NzW!§ZX‚ Ϥp^(œ% At÷o¾&Ä®FN±J@» ô÷E\•;ܧø¾GÍT¨ßó„‹+[¦ÌHé¾_(áĵ©e? ˜ýއðã^ógó4Y@d†K\Þ#f}·”HÜ>ãü#69% æÜ·Â2ÙQ³Á×&—V!4¨&C;µõZO¶šÜÜm;9vĩÕYRBjk›R—o! ;ßo|~G©Ö”õ;Ùï„~ß4 '-‹QÕ;}g,®›w,¼#Ñjüœ >ã*¯ÅA* ²›T»‹$Ü¿¤wÑÓ¹$Ž:²ål]|:Âiý–Z%¡lì;«Ò?[Óh¨EQóç,ëÂÌ…E˜*V+gND°×– ²¶tžÂ8uÚþâ Çs}>Ÿ{£¡Lðc,$%Rë10ýÙ|¿Øÿ/ªÞËïó=Ÿ……QªÄ|Á” Î#Y¬}eNCyш{RIí÷úœßJ·²µŒøA„Íš…ÏŸS>PwJÔ’Ûº#×§Õ©*håîjèØ« “‡£!B°H½¬vŒû²f¸5x˜«A!}_fhÚyÒJ˦À¶¢#²Ž78óf®«ô‡ÍñŽ‹b%“¤ƒ3e0"} YÄEÝ#UúX €¨¸QÝÀèÐV‰M£%RÔXî ·ïôˆÕ•:[ˆqj8Ú”wcfï¼ei¡'y5µs¸“±>iVÀêØv^šbØÙSS­sf¨$‚ÊWX½ˆ¥¯'¢Šel™“§OBI$© ŽXƦŸÂ䑘J¯|6ÃN<ÉÓ)'ùW4¤¨1CÜ%·M%ÔEÃSsѫƚØòÝm N‰®‚¤=D¶Õ©ú‡±ØÇÁê4½ÛkSöþÇ¢¹ẕPDĤ؇~±æ¤?Øë ¼eٔǨÔiWçbÀ³½·ˆñ–VÛ8nn£©Ëù†¢”„Ëòظú úwŒÅ&­–I=Ž%:“©Ò¥õFð·0 ®Yu"þ² íÚ/ #RTµ™‰H%[éøÂèl,É&PDlË5˜ža’‰njéÂzŠ)ƒQûÿÍ¢F 勯Jþ!˜“2a2%k{kž—P„ãj-rLìjgVÔÔL&dùŠ`¥»Ó$ˆf9úÎçgÚ*tHÑÖ¡B¤)Q rЬ`ZDjµŽÝãQ¤#[w¾ðúÁ`·ÕÚ{ˆ´:DÉòo.b„’#JmZLK¶[Ž*œ° ¹« ÷Q‹Os8[!xG†K’dRÈå ƒ¥‰#x©™¿"rêêß|h¹¢D)JH3Dª0í$É.jIB‚W±P,,­dEPÀÚK»ôÓü#˜!«ZæKF©Š*½Éˆñ–t†³qÄG’Üíe«›kôh±ðÃFl»R…rîÑÞíäá*î¡ò,R=B¾ŒnbYɹÎgŸ ¯är‹ºïf’Áè¿’´¥¨*Mõ =F‰t|î«å,3³%ÂNŸ.Æ>cÜÀôùFÛtÚ2À°+ÊwÛ¦ð@ÆÄïA0#†KuÛ¬t†å†èòÊtk¿þ˜wÿį °tÒùŸÔáÓâ(’<ÇhèìúqÙ"L<5d·”ïÞ7§»1ª°ŒÙd[ÊzÇdyš=%þÕ¥> W•#湃šÏô’c:ɸW¨é߯ì«|¨¥”xÊ!W#…·þæ\sÑw 5Ô*›LØ|I>?à»7Ó³ú<غøÓ¢ôïãF7˸¿¸ÆÃOãù¼ãªäç7ñ¤q/²*vBÉ”.\Ž&”©C¡;íi¶H«•Ï Ô ò0ýh»›†GgÜÁQ‡,I§RÕîò¶ØúÄ¿%ÆÆ’N5Še®£Qܪb›áxÚK~13!Xö%1$šÉ¬v"bŸ÷ÆiEªÏô/un'Ïø— ƒ[4?êÌWãbV¿r)5‘§0bLísÜÌWã¼JM¶ÇsM™ñ9 ˜J•ÄZÔX׉ÛÁ{ä2N`ÄÔ[1µ1˜«úo´^ÞBœ“.¹WŸQŠËÃgºAR÷ÔäßhÌ—'e”Xf‡Xôû"­ˆž g‹¯ó4‚¨{RnתÚ7¥ó"KÁÓ|1-“pÕOæÒ¼Ûù÷Gì´‡¢>dþfZ€d±)%IwÚ)M–.BoÙ¢0™$³¨ݘĢ¡ž%T+ ðÖ®j-:j%nYi~Ý㎾£Œ-=ްW†V(¨Ò¬BU"S­(}ÒáίáMÕžê¶dxµZih”€ gåº~ÈÌ[³»j)5¹ç,¼¥bYs”\FånÉ?„}>‡JßÐòjµÓ;æB£K?P-õ¶ÔÅvÆ›'kâ=Yá.‡.¦£@âN{‘pÊPíë™ö—S-MN×Çú>¯O—w’àR ïfÞÛGδzL*¤è–uË+ª¼j;˜esNŠY‰Ô•3]&Ûˆú.ä™Áà©â×\Çôþôôö<ÒùÊî"’PK%œo´w䉚 H`Fvêñµ¹ÎF¶j ç¦Pê"ý¿Â:§JÌ¥“_^W.ܪ)õ£5Wõ0f}`O0¸íØÆŒ²nOØ ,‚v~ÿÇÒ êd}ÆçÝû17ÈHÆpìáûE4G)J $IÖÞ þn·C{Ô©7P¿Ot=Æ>‡pÆ&'ðšš*¦SêÖMÈÕ8ûö“¦½ÏVãÃþÈöI©é§àòwÔÉ™)ñ&õ:¸Ž?U(÷ÇŸÚzQµ'Ïú¼ìmP–Rœw7Ç×ÌïöØô,;.t%?W¨ëYW#£\”ÿ”íšUz8iL÷b<§JP-hÊŠX9£d•,Ì:R¤û…º7…¹7fvE6¨¬&ZÏ6a!)߯GhJTG¸ÜÈQáÒtÓp$Ë?Z©„Åm³_±£¬†¨£b¹¡3'-S§óËöõ‹³3É¢ªÅ«g¯W´*X?VZȾ7²¡Œ'»Eã–bH=¾1S´Ê”µÌHBJ‰o(‹ž ¶nðL§bÓÒš|:¥ ;M\•„ô¹ ^=:]&®¦ÈÃÔŒVåï,øM)%3qª•©L¦ažÛ…#ßSGÙIS›ûýSÖwðìt µ’òÔ‘.‰X=äMd“)å•݆úw¡ø](G_¡Ã½¹eœ/ÅÌ&—Î8…-*%¦®b€Ô€£òÝJKRKê} 6ÞåX6Ç–ý:ÇœÛ÷¿X—l–({¿xÝ",I„êáê·©‚òb;Y‘IKUR¤¢žž|é§p„ö´XÁÍÒD“\–|ÃlʤM™%ˆ=*´¿²{}ñô4½«¨íãëÿ†%ª£„ìè9wÂÌ€ •Š›S5>d¨¡HêÌèõôô½™§rÏßÐóË]ËcŸ²–7à R|Œ*–ž}/ ‡2šB£ªjArí®é ôßjI—JR–YçZĉu:NïµÄ~im“ÖדkpìXõŒ¿S¤w1¦O•¾Åmlì€y€‚7ªoЦpþL c¢õ<ŸÌìt§9;ôßþ‘x¾nZ¿Ù`‚ÞË)Ÿãe^Iü”Aa°½¶.ܲí3«ªÁÆuga ¨÷{ëíøGÎ2Hƒm"Íš÷µºE@ÆÄ˜PM»8ÝÛ¬n–£Ê)ð=j%‡´”0Ûýåýñõô^(ë¦îMœ>xi„t‡¬u‘ô ðI@bo/XÔSûûÜΫÁ™-!&å=ÄwYgšNö=%ò ü¹®#CüÙ2ó|¿¤“÷ÃRû3ç‚hüÌ®üªOŒŠy­Âu+¯ÐËë:uÝo¨ÄÙ—ò5Kxý‚íôÿÍæÅ×w§‘Ó¯û˹x÷Œ(ƒ~§Ø~o&:§k3”Û÷”pák¨³ýÐÁ^p‹V@4Ff ’‰6¹1¤H,»,R«_GÿT[\Mö•'-y±h$Yœœ‰Œÿ27§»/^øC™¼Pß0UÑJ8w‹í“&®&¶mS· îÝ"Nj9¬tô»ìÉÀü͘—…už I™G' ¦Ðòg¢jõM2¹F%”ómöEm)v¦Ü;™½Â¾MùŽ}µbY³*aŒçááxž!2MHb]å*SùY^âX{ÅfÖ•«0²çÉ÷6b™»Àª±L E,Úù•µóæË¦]:f¡fYtp¦/8¥o?@´Ÿv| ǾOù’‹Á¥Pcù¢Åq dœG «™:f’Ás¶YËX¼s÷¾‚ZRL—Äj2fW]_Ÿr\úª0´Ì¡‘Š“<”ƒ,N’½£p›–(KN¢U²l·Î´sß5 0ê5ˆÞ Cj/µ K0$]ãœY¬ï_æYút—yU"®H’òtŸ ÛòCwof—¶ÞDýñû-áGè›5ñ6Yѵͺ¤~¶eé-«×ÝîŒð]‰¤$é$ªä-lD¹0|Z_ÂèDä,2†útùþÒ—oO/Zþ¨ôè+š5ùe+ŸŒòÊg•ýAxüÌ®/Õ~‡²5,2¥ãÕy—GY9SBBô2R¯+ƒÄ…ptŸîr? dê­•5Ž ïëemoÙ©µ÷ë¹âê·g¢ü?§â2ýk'úF?Dé&Ͼ)#×y~@‘„Ê ’ÒÂl.wømy÷MÛ>ÌFŒéŒЕ…lÌ\Û¼qJé¼Q³³êüc¹VÅ•SLL²,À︡¤é«<ÏЩã#Nµ8.Ö£êiåQæ–%ew×Â.@CôßhîÈ"—I)ÝÞ7’Í£]1i–µ,’å ;ƒÞ:¬ª2]iuk%ÔMÿèŒnðaN}^V{;oÑ÷m-ð’í·Vÿ/éc-<ª*, ’CìG¤K4B²™‹uÞ(!–Oa•¤(ªÝOhµä} ž¦@QXü¯Í´K§FYÝ<,˜+2#J©jPú?8t¤Q¼|®±vëÂ__èzt~-7yãå E£5ºo­ÐêRtöŒ´\¼”cIÔ¨æ8j–f™®Ú¿V?,ø‰ím_j/ Š©ÔA#¢¾0ßs¢"ñŽ]f ƒ8˜µ'ŽådÆ­ðFÓÊ5œú€»‡hÞ%‹•,ÒÒRN_MF¾2Ò[ÊI>½ãœžBX³fünn1LªZÔ™E´J„'”ÁË;íé.“SQág© .øH”¨/ª×ÿèëpwýd{£éèû)WýôÿÃ×|Ë8% ‘‡S)Iwš¹(Ö§~ Ý£ééôÚz*<òœ¤n‚4'£XGs>¼Œ äÕkný`U†±_ùµÆåƒÌ®°i¢<}roMÑÓ§u”ywIMb’¦I-û†ñùK[ž÷ƒm [«ÆÝrj9d.áQÏ }¨Q¾§ê7Ut ÄŸÍdïÓ㎠üM–áo¹goH›™fß8(šÔœQÊ~Ø’ÆÆ½Gü“TNTp–=›ö%ÇÍêݬœ'¹Ù@°%œÝZºù¦I0m£                              U’HoŒ1qCùŠÃn’Ilc¬7,7G”~SÞi›+;íþò>®‡ö:i|ÏêpùþsþGÃÒ:³éÃb\?ôªÛÊwG,ƶÈÌ–y‹¸ÿ6Žèó7Áèÿ™7Ö°oörÿç“iÖNpùÍÊ´§ýpâŸn?ðeÇ—CäG§ªÌÚ2~Fƒÿ?x3,[Žà›ŸÍæÆµó £=?Έ¾^êOÿˆa JÀ<J…Çæòwް_þÇ-K÷­œ)E‘ÌîÐô*ËÁkÉR¸Ô‹”À»0;nc/rCwäÝx^yªG§š4mbâSüHË)Êp|®;r'xâ5§³³Ñß",ÏC•2~tÄ*±ZJ9êö 'O+çœÀKtïçn¢¹&%&ý·Ÿ3EÀ¼%ÌùCÌXêz_dötK«’DÝS„Å0I±'ahæîRN(ܱ¯b³â6 „ø‡â͈XoˆùÁæq8’ªq”ËNÒS$8HRQ©H'Íp{Ú5Œ_•û‘üM;3åf\©˜3&?–¨³^ %rò-F]N!W_,HŸP /ˆ Ô …;9Z%mEM6íðirfá¾OÉÙ?Îy­^s¢Å&ΣÄQ6E4‚,’£¤§IA7 ‹'mãŠ#uÚ¯‘>Së8Þ˜§áÕÞ Ì¡¦ª\êy¯‰Í 0Ž`àÌ ƒê¸Ô.)?Ⱥ™³ÏùÊš=E?öZçˆé^ EYz›` ’wmºF&åKÅÀN €Dô—þŠ£¤8ú™“¥LèžÛ'aÛ±¦–oב;zGì´ýQú#çKçe¢J\D9µvôIø’¸¥î ¿„GTJ&¦ 3’Ìú­þ1œ×øŸ«çìª ’¥À6<ˆ—í9|«gþONŠÍ˜Y1<\¡”Ñå6/þD~qe[=•›äåÿ(z•.aåçgíc.*Toº¼”Ï t¦©Z™O~‰²£ï{9[Kï“ÅÔnÏHxd—ÅdÝ s7بûÚŽ Òáæe©Ãj1 šS‡H•)SµV¢d² °t±$~ã)ûCF2QNíÖ(îº}F®‹LðÆ]NLų-Z>‚’tÙ“2ê)@ZJ‚‘tîìcÉÔûMÃ^Zkv¯õútúe-7)psyé œ¤ ²?¾>ÂØòaŒJEÜqSdõ¸ˆÒ¦NU}ñìhñ$(j›¿CÄ^Ñù.µÞ³¯¼ŸGJÙHQ ;ýÑãäè­1kôo„TÊŸÂ ¡…|É"¾ª™f%3 P¥&Î#õI§5&­³Ã«¨Ü¨ètÒ$Ó™$ËH ÈHÓhú*)lqy6˜VŠbŠL¬7«¬ì$IRÈß} ö?dgS[OI\ÝAÉáÌ+ÃLff?‡aµs©äM¬âé•1KJ“¡%EÁM­ {SKÝËR9ªýÿ3²é¤åÚù7™û%`™{)Ô&— ÌUœ¿ž®BNžtì°E‹{ÃG—¢ë5uõW¼”Rð·ýÚú„_jg-:B7@ØÇÜ>~Z"Í¡¼9ÅÁ%þ‡ÿš#ÇÖ¯ú™Û§®ìfÇÐN&´»ÜËëa’‹Áí¼šÉÇ–À‘ЋÔÜw Yæ, ˆŽKd™Ñ«×·ñ­ò_©˜€ÔiÒÊÝžwó[_Õ½ßNѪHË6Ù¯X8n ÃÙ%ëÖ0Í^Hü“]9T«Õÿ±.>wV°q’ÉÙKØ©AïþvšÌŽM’o„e`                             _•­{Š‹‰¥èæY¥ŸvѸ<–£Éÿ)Æö¹®86>SyŸ|}m=é|ïêq Åæ5öí¥Áõc±-yªßÊv‹»1ªé#:'X Õ²;žY¼Z=òI9ιJ‰|ÂÍ<›Ææþf4“r´h~U`ÿ­üH–<&#ÐËÞ<7Èz:™?#D¿¸:ˆ?ï˜ÿG›¼o[:fzuñ‘ü¿å‹ :Ÿ‚êVçóiÓFW¦™_â5ààû¤%ýï¼M‹¶KnK˜ea“æ Ó§o1rv‰™ˆ,³wáiúz¥›“¡ßo­Y5ÙSñ.VœÓ6c]m·¢á«5½‰‡×UJ¦áH¨™-|É -VÝ¢¼6[мR¶lµÌ™Q>`˜Ú‚–N¦øÞ-V«ycŠâ²¨•NŠé锦úMPJ˜¾Ï~ñMšNÈikêäL\ôTN–µŸ£Yïµl,lÊêÉÓ:uLÕ-*V¥—\^œ¡:+ëæ¤¥Uµ•¥I3Ab26ù.™9zse4—8j ÇMbàíú¢¢«RlÝc‚lUüV”fe¤à"kßf Tn7x3T¯gâ´›â)Ѧ¦êÓô«Iå%+£òÞÒÕŸâ}ÓWp¹>‡Mû¾í˜Ú\R¾oЏLê [ò¦¶›Ä•ÀM.RmrÙÏô}cRÑÓ],Ü£Øfïf#6õ#NÚüžzƱZ_ kdæj_fŸQ£O­*m3†®dؤÞ1ÓiAõjZ/î½K«©%¤û–O>¸Jóõ{Gê—V38)¼9ƆÜoüA>¹Ö“{:y+<ј™˜ŠùõÝ<¶l~MFPÃG³)šº‡’[gc²t†ôB«=ؽ£“ÌoÉÔD¤ê%!‡H«¶7 [36PÊ&Ïto'š_6wX磸ãL6ns¢Ò¤aiEšŠP'Öñ™lù&ù(æþ<’ãçuwY8Ës²¡‰åK4»íé1ú™$Á˘È€€€€€€€€€€€€€€€€€€€€€€€€€€€€€έ…â¯@bâó|éÁ‹zFáó£Éß)÷Mj’©ŒõA-ë2ïü#ë裮œZ“³ˆÎý*ŽüÛ÷޲àúpÙaŧ*íÊoMÓ9ëlŒúgTÔ²µ\hô7äòÏmG|„—2^{®˜“¤Œ:bÿLYÆãLšRiÒðhþUI#ÅÌHžm\&ý–“/í7LþÑÔE÷º2~F'ÿ?Xwý-»~o67¯ü#?ñ¿Ò?þ"1‚þ†ý¿6‘Òj:JŒj¿û]œ‡P>U»"§Š-<ÐLÒ¶šÛ\Ä’VaR–Q½ð¸ƒ:±¬9>hÒ5©‘ø€Ì­«UE0ú@Ì;Ù#©ôŒËâT{•„`y‰CP¹K·Ò˳üb÷>PpY0lÀ%iNÀmôÈ·ß¾h(%ÈŠÁ1ò_æÆ#ËôÈ·ßçʉ-Æ|ÇŽ-'Np«ž27ûaoÁ;,_˜ñÛ…Ûr8è¹ï¼Kk‚¸¥È²0lvLÐ~lpKñ‘øÅò^|:Á±Š|ç‹#‚#ÙåJtPR ]'Þ."]*fÒ¢é0³Xƒx*ØÊ«ÉªÎ”jÄ0)´ÉúÉ%*õÒGñ‹eKÉ‹‘³.'á¨Ãj¨uJ”È–®*y˜‹[hû½7´£ 5³÷èy¥Ó¹;,ò3òØáÚ~™íýXìý§¥·ßô0ô%{ü¯ýGÿ‹ÿÛí.¿ø/¹—‚Z?×.róv­+ Œ×þ¬´t~ïüq+³·Æ3j¢Ä*¤û="§jÔ…ëÝ#aßxù½wWH¥õ=:R‹¹s±¹Ë•¥WqQ+\³æ—©´Xµú¼|§³;)ó{Ÿ”-2U„ÏD¢þWOêÝ`í;7©ðàæT"^!"b‹©þÅGÖèu+á{éäê!ñ<ž†Èu3%! O™/ÿÕ§y<›´zó)V¢³/É© Г««ýb?„~7©‡f£‰õô¥qLÏRõj.è nñÄêbb ̵LN±gÏxÜ/»%±¤Åʤ"aB8J Éwm£Ù£Rjòq– v0„„„ ¥=?Wo¶>®›{žf•Ñ_ÄT®h`ö/¹híêžLÚ+ø‘uf_W‘¿Œuns“âÍ=j VY[ßhìž Uá3PR]ÝúƬ‹coO¾“öE. y»u½ B©Nc«P=Ì3`Çœ•%&cX–>ø_vB [±"ƈæ:©g•á–èm“cƒK½kûœ:DZÙ嬔é±V—}Œ~×'…´[üǨrÞrN'ˆÌàËt‹Ä:Ò¦°,úOHðûG§}F’„Uçôß'~—UB]Öj³–#+ή%N4Kª«9*¹åRʆàwGO§îá=ÒHåªÔæäkµéAq©Éî;G\™þ¢ËI%` Ñy3/S; —.ŽdºÊ¥peI"`S>ר{£2šX4¢Û¾:øÛYMˆç Fºž~ kf  &ãZËßß“뿌ëï'цÅ)‹ÞãpcÈjü ¨¥º‚ÿíFã[žˆð—QÉ4*÷2ÒßÐL~ˤþ ~‹ú;Wçe 3„ý±é0_pìÙ‡Óø/]•Åë*ø|1Íõgë=oXù’èÛêÖ¿ ÷Žô}ËÓy)¸euV[*¶†f‰²Ý¦°,á¶>ò#èjiÇV.X<ñ“‹µ¸˜…}N!8Õ՝еÿ¼`6¶ÃÝ0QØ6ÞSH9i—-<ÁÚâñ[¬³ wgPÝ;8J¯s´³r;òù{ÇÏõ296H ÖÚ2À°C\iÖYÉIK~·¤n•ny;åP’œJjÊ8Ì2÷kÌ»ÇÙÒqQO“¬UO3†Mr²O[ûãr£éƪ‰°çã+NúcpÃÁÏZ¨Ï‘¨MN»ÜîÞryeUƒÒ?!D¡YÒ¸L™¤|ß0‚ÏõäÚ¸“Jœ²h¾U©J¼Y­ ,“ÿþ ¸óô¯¶6zz——É‘ò-(=aEIÓ8ýžlk^ýÒ9tÿÄD_é ü¡±ƒÛƒ~ß›HŽšTôÑ™ÿŽ ¡ÏØô1-°ž FEšÒg¤‡º“ýn±[äÎÌÝøj•%u†_ì2¿­ Mz‰r•)3 ã ‰ÉoÉ ¦I@téOwÚ ÐÛq§§MÎÁ÷ƒÛMX¦*I;õýoÂIó°pR”±±õíKYÀ†™<ÉPmÕÔ»“L¤°³8ô1–òe¼™©:tb“Þ!R¬ š§PSµþرD¼à†aÖ…êaë ¦Sm’°ªLJª°Õ«DšZUÔ,1/¤‡=Œxúýyè¨{½å$¿S®Žš“iø³cGAƒÍ§™Tœ]+™Hí*¦p[}¯iêëB]’Ôø·ª[xÿfãv¹%Ž’Œ©0ì½…N©ÁøÓê©äÏR=¢xÔT—!ÁmÆñùhûCÚzÚº«Nt£&¶‹ª>Ÿ¸éã¶·KÉ]Ã|4Å3Ì£/pêT·Ô#PKnÆç¼têµý¯Óèþ!êÜ~‘ñdÓ‡M9v(çó9Þ} •…f|O£i“W6RQ{%+!!˘ýo³µž·O§«7—ÿT|hÖ¤¢¶Mšì>tÄN–ƒ+ˆ´¾ŽfÓÞ=o ´ÎutÙ‡âÜ£W‚¬R¦aîRB-Z4ßu³€åÉ‹‘Zà±FßcètzŠíg UmQß²%bT"ݵªÓmÇ'ÏšUÚPxŒøh¤œ§#Ëm®³Ú>'µt_ß·¤àès’„„†g´|SØb×[Jüº_é?SáÕã¤<‘¤Ç¦DÔðølÜ®í·Xöh;hã"©Œkvú­¶Ñôô<ŸÄV1Ž…Jfk¿Â=š2—&F=ûÆâ³F'äÕÖ$¤ò›üc²ts«0*ä°=£hsF,÷±"„b­ÂˆQa¸H×ä.Ð2bÏK 'ê0÷v‚U°D ˆŒ­Í€¶e þÿXo°,YbsU-9Q'û0nŒ:x;Ftš0 héúIÚÿ¤ÓAõï'§ÿ·ª”øUýdþ 4™å/+ŠçRÐè^·>íÖŸÀ¡çýЋ«²«…Ó¶™oî1ù¸»nG²>KÎ/èÆÄî®ÛôŒ½ÕR5þ.V"T:Œ®#—ï¤ÄŒ« Ì£qM³Z5 IJ—¨ß¤l=¨ËÅ›æú#—–ý®#œ“Sx8̖ყHá½¥»Þ·ãss”¶ào±ÐþNMíØ‹ýî™wØÿ4ÿ/îyúÝÑÙ©œ «qÐzÇßäð"t ðõ$Ù^oC|ø'—%sE¹‚Sîh]n|Ü_Áp¤“SSªjw•¡w7êìÑÆzÐÓM³J²QóW챆Ià€é<ÎûÞè÷GËÕöŠxßìv†—„sœÅœ1LNz¦L›¥+&ÚS¹Ùãçjõš“Øî´³f‚¢jæÌÖ³¨“s);gb2ÉØnc;“r)îA=_xÌö³¤|žˆð„ƒ‘è’K}²=~1ûN‹øú/è|ÝWñ²Óv†n±é09(Rå©)±·Â¢i²…,¤ÕOú9]:·N‘—$·å‚»‹gœ t¡^ÕÝL´öý“ßîQÖÃIe›zw¹ÏóŠ8d¥H“Qþ¢NêGÊÔö”ŸÉ·ß¡èŽpQ*ñÊêéznvÛðô¦³›nLëî©äÁd(¤3íëm«%´Œyà I{jëÞ'6uŠwd ¬ &8¦©ÖWêÁ563e’hÐAÔÅÿ|uÇ' oCÐU.`$¶±©>„ų<lä …Öhå(úï~MîD|’TùA^é~~Ì«¼|î«k8É`ퟳû>Oñ›ê`rl­´e`                             гšžb΂t÷£QÞÊ·<›òªJ¾r˜”:&•hßK—~±ö´ÚQVv‡ñÃ&]O«Q7%£lúQØ› ~:šü±¨Ýàå­ò™©<éÔ4ÞÇÖ;$¸<íc¤~B3%§:Ö‰ƒˆøjËmõäÆç˜ü83¥‰çÁ¦ùX¢PñgzÒ8lX_C+ì/NÜVGSm¼ùüüàÀ©Ÿfßóy±½oá˜éþucÒ£ÿâ/·ÿÝäFô3¤¬Æ§ñ»~ö8"ƒ©C¾þ‘o–Té&XòB‚eUL%“ɶ lŒ¤ÛíEƒÃ­jüŽ;ù¢Û¬šNÒ.é + %„eïCB9Ý3túĺx%ÖÃÑ0™)˜ô…&í~’””;¤ÂO6}­('@Ü_ÝÕŠx… :†˜ÓÚÆ*ÐàúX;Éõ%,.@¼KEk–C1$©JmÃOXÚÀYÀÑ¥7 r³n!¹+êXü7JWˆVÊBuEÉR¯õÔRßxù¾ÒµKˆÉ7ôVz:wóGÒ‹e6'âLœ!8: J•0&YüßÊ6ûÞ>4ºod½W®÷y79=Š}J‚‚Ûò:uu&k›–°ZŠ ž P¢™Ü’ËLÒê7¶íµ£òš:½uõc¬®=Ò­ö¿CèÊ®íy¤jòöVÍG:ÉÇs!ÇÒ®´Ø,-¹¿¤zz®¿¢}3Ðé#WêüW+ècOCUjwêJÿC‘x¦™HÏ8´äXª¾ ¿¤1û¯dßàô£ÿÖ?ÐøzñîÖž9f‚˜LRÕ ¼gOv¼})a&¸9&ŸÄÌìZR«2¬™„ê\­Zý]a¿te4ž´Qçœj‹Ø3>‚4¥]7nQøÇ£ETèäë·'QÉØ„ª4'O6—þ>ž±ú®ŸQF4x&«'MðÿÄ€W ¹Tº’ŸÛnŠª{Ƶôá­Ùr Þœ­JŸå ƒLXãàLÛj_ð—û.Ý)þßìõ~/ÐÊWŽ9Rz &SèIý¹…ÿøqcì׺—íþÊú˜¼Q«¬ñg,UTJ•.vï}3;2=z][3‹ÖFYÄä×IRÐu‚׸»Ò;(V n횺ĕN˜Ý“ÚÑ®J¶5uu+™Km÷ÇFý K,ÔW¤!ÀV±¶ÌÆ:C'#_P÷3ŸÂ6¬ËI»fƸJXîïÒ4“Ru–KuÞ(&Ãè&×(‰Aô Gk×ï“2(f©&¹)ÒyO­¾èç)Çf*òjª1 T%ËX9ûc]낤D1ia”)Ü‹6¿¿hžñ=‡i¶ÀótºIòÖ(¸šñìÛéŒKRÑ{ZvÍÆnñB§›¦¦F‰r¼ˆÔ—g¸@}£ž„!¢šGIÜðÞ›ëUŠæéÓ åN'Þîí ÚZתïeþF’¥hØ`’ ÉÁ-Ì>íãæÅ8¬â«rù„I”‰Orî~ØæÓFž­Îaã^5íY榦œê—3KtÚZQŠRÌ·,´ûþ¨Ý$+„TW¥jØ7“ñxŽ7óÂÜØc`K¤¨T«¶–WÄtŒ¬»,­*g’¸*©©6ä<6 ›¤Y|­®L½‹×Éò¦M&3V‰‡ôš-{²WcÙ3]Ò\ãûœzË•QÜë*((Ðj*ìÒ€fe*û½½Ñú Î0W6|÷—H¨æpŒ9k“E+‹9 ´íJ ½Ø§¸<:ÞÑÓŠÃûýÞçÉÏóG‰X¶&ƒQªY%)Ùõ•­×ÏQVÈì´9e:¶¾¦ªj—:c“è#Å)¹aRKb¥ m ÔáÕmh…»eðŠL·QúÏÒ"¥±3vˆÈvÛa³V!ÝÈésýMI2÷°¸1‰šO'~ðF®ž§(R¤ÍeJÑ/ÊlB°è&¥¡D¿¡óúˆÔ–Lk0åì5*TêÝsA §†°ä7oXë.¦VÎpÓ“¢‘˜üZJTeáRý˜§Ë}M·ë#ß7[ÚqKàW÷ô:ÇG“žf ÝŠbsg+P,å“Í·ì†f—©Ôêježˆi¨âðWçLTæâ=Û³k `ýLâÇÊó8¹è;Å‘™lH§JgÓÓ¼cÿ±’ ƒô(tØ?]ânìé ¼Ó4…^ä}ñÃèu^ƒR9v¹ØÆã—ƒFÆþʆ7Õ´m#Ëȉ.n6¹Æ-Y–¦kPWÍ©wz9_eã24ÓýH|’ü›Â9J|ïû2¬Ñó:¤–y35.Ëàí)’ÔÒÞ±óÎ#“d€Ím£, "®’í´"œ5RÌj tz¶Ï[•ny7åR—Ŧ%2™I˜Ty¼ –³§*‚;Gø‹<6i%NvélúQ¤‰pðóTú¦5ìsÕxFm4µ•"é‰ôŽûžy´Ñèï¸?–5‹ÓÌpåõý¹1uŒj93¢—}7HÁù]¦`ñsk¨pµ+O›èeGŸ YרjÈ>FÇÿâÿ§·oÍæÅ×þ1Óÿ_—òGÿˆ|l‚Ê< ÿú´ˆßO$Mgÿs¿¼ ¹6O¼o0Õ}"Üëì=#7Ý6òiZmp_j•¼ÀyÕíÅäÞMUi~"~³;qܶ1<ª55v–¬u†Yɘ;Sªï¼m*À{“@P#a" )uiØö¦‹FW”ø$´¤:WT%¨÷IHtÿŒrš¶þ…‹[…qªg™ƒL¹Z•üÔ¶÷Žq•ltv÷(Y·•MšépùR8têf§Ô½d;3‹F[]É?¿C©´l=‚\ÖPC©EÉ~ãn 2+\–œ–&b3¥8ú)>Œ—îý£Ž´á§äΚzyµ–SühŰú>=U8Ô”éÒy¯äqë¹èiwjn[î—Âql.ZP”ê.Wü?/©'©+k'®0{VÅ×-R+c²»ïkâ‹%5rp¼6«˜e6 þqÒo~ý£Mz×nçè׈ΩâH–S¤°ê öíKÁ™>çeÙ B%h ä%ö‰ÚÊ©˜šP©SÒ¤¸:nñ"¼lW…Lâ’öpfÿÒñ-U!'ñ|#‰ vRºDµÚ‘QNU-Bj%/Bõ¬ÑÓNN‰&×i±«Åë+¤«@ë`_îŽóÖœ±&s÷j;˜kBÈÖ¯)ýñØMp:Rmm‡¾FdÁ]ж¾è¼è4,.M¡¾ÆÎ•qüR™Sè¨8’Ò’¢®*ØŸQˆtz³rŽ =H£MU"m-LÚiÈÓ2\Â…‡ ±$“N™ÒÓÉ'ß÷ÄÉr$À×'«|"nXçôÕTÉP‘3JTé#HÛãá¯8G´“Š{‹6|Ù¯­N÷ØF¥-ÌR«•⤑n²M) Êwïn°s“uT³*XRþ·Õï»ØÖìuEmOŽNµ“¨ž¾èé§¥)ºˆºÜ°ây#4axbñÚÚ—Å–Zàlz‘5º=M8wÉ`åHɪ+ŠJ‘¤ìúGxò]Û:;¬˜óTɲ}åá%m£¤U³e” n{ÇPévRHG~±¬; Í ìˆ:µ_·¾;léø˜€Ž ëfØ•ƒqš–IÃÃÊ)%:¾ØÌ¶Á}H|”H9TéSŽ–ý‰qóz§š³Xº;0I–—bT|í­œI#                              Q!˜=à*D¿e›¨jMʺ5¯Ê*ß“¾UEG™¥-'Žtß{Ìoº>Îö`îyÜáÓ<çß“º>¤v$¢µ1kõ„koSž®ÈØP¼¹ÉRCíñôŽûàòê|X=ò(Bo®™<éA¡™nÇ\®Ñu.PI3:=±—Ĭ‹å†þ¸q‚¿7пÿ±•47Tvê/»&Èä‘ãö §˜Ž?/ÿ«Ík/úÑ4>uC¿Òtü¡1Ò¤«ÙÞÛþm"7¢ÛÒLƧñ«ïc‚”³it‹›¦½Íö^ZF=uio´ÂxV¶3re«Ât¤ÖV‚Èý• %ƒQuLÓxÁ=IÅ%JÕ`ü­è˜Æ¤¯i. \ űZEüßMí*C?:S¹=Èìc¯mÊ=y!M>#6D鲩¾†Fž"õ¦Ïµ½ñšÅ—¶°&…âøõO ¥ö™ˆó#ZRÎ ]Dv1ª¥EPÍ™Y‹)f| 8ž-…p)”¾™Ç–¦,TÌ’NÀÄú§f FŒ§,ËÆçѶ¥‰)¨â#}:€Ò íwh&Öâ«ó-xoŸqœ)8®‚ûE"Ò4Íö™)t,¥±;–̽îoò…nŒ"†¶O ¢SKœ@éPP ¸pnÑosQ´Ë¢›Y»·Ý.îÊωÕ*‘‚! ÿ{4K?ª:é%jÌËkEûÆNOÃÀéO,~„Çì´?‡¢>V£øËHáíJ;_•Ãl}"P$’¤•’s½úwŒI`A*Y¨?Ùà•c±ü5y‡]2Qùä¶áL}@›8±çÖÒZ‘i¡&ŠDб¢ž¨Hi\Ú«àoïÉËO±½7¹ôpÕ›\çAó†/R¸“üK3\û£”Z»àÚV’òqlr†n˜Q\„4¥¿¸äd€;»¿H÷ôšþêXØóëAvä¿e QK¥H´úGê4¦§Lðʸ:^[Z8þÒ±¥(Üöw™,c’Á¦ì«çJ:zêi‰œ@³‡<·nÑ™¤âDþ,»2âØÅ S…Ö#T¹ZtÏtÔåÔ ãË-iJ/ÁÙAw;äÏ8œ›!/eê·f\È嶺E%÷“/ib©já(¹I}]þ[·A,Y©Ä”é:Röb^7ɉljª J<ÍðÞ:Gs Àœ_Ê‹ûã¢#½ŸÔÃXu’EÞ4<Û1Þ‹ŽIR› FžEbrA/¾Ö>¿Ë'èÍi¶šâMEd¼v®œÒð)„õ”óƒ¨êP×Ü[¤pÓÌ"å÷èt+g*ñFJtPb2×y2֢ݨ˜ÔÚTÑÎ2·^…ïú_ž%Q)LÉrÖO¿O»¼tÔšŒ;¿2ÆÛ¢Çž3 ¬*x51áéBBÏ2TÇpW¼qÐÒRø×'IÏ·˜³Ö0¬3BžšO‘M»¤?@wòúî¥ÏSÝÅ~GM(rÇáT£† ߉}·hùÅdí¦Ë­"(Óôwê—õŒ¦t{š?+ÓAÉÃä«X—«Œ–mÔ‚›üzB7wÉm¬®MnC¡Nƒ¡<-súަÙE¿|îÜE'–̽j) „6VÌ¿F2¯ÌçÛZy\x‰H5|ZH<$ó^ñ…*¼O,_ªÛ÷Æï7³þƒ‘ÝZœŽ±¸¯…&_BRæ`³zÆ·ÜçÁ(…¨¬Ñ¤óG<Ù›†aµµsSì”uʈeKR˜¶CJzŽ¢Œ·k'@ÉþOÄ$ ¸¥Dúy`ëàÍ¥P}¬úêD}nŸÙiÓ›ýŽ2×­‹þ_Éø™f’‰¦¤WÄ]Í®ÅG´}]“OKåG6÷e«Z¥â¬X ˆv/çò³®ã€| $ gÌFk]us}I˜»Çå=¢”u©-×÷gÒÓÂ(ÔŒ+­:"ý¯. Ëlxª†€›`û‹ÁŠ0RÄêÚÌb§Á·àzR€%‡xÕ˜x-*QÐãd~K. –±ªê„IU¼2ÿL)”R7ü=7G=G³Kès”ÒÉÒ2÷…xE2¸•ÕÔ”) »ì¿wÙ_KÙÚj+Þgöþçë6þ¥× ¢¢¡”$QÉP<£Q-¹ê}L}8B0ÄNRm¬™øêQá¾3)Aõð9z–š#ÍÖ$ôþ-é*Áå¬m F%1.”³Ö°É£ÜÕ< R – ýÑÊ^(Ôw1 Þ½ã /ÁÝ”ìA~þ‘aó 6%ý’[­·ÛG€c”‡,cO^ÆÛ4¤ÃA?™Êþ6ŒÉà¬ô‡ÉH©])JJµ($õ]ï7ª¥”ÌJ*¾ÿC´ÉÒîÉò÷êq ³[hp,@ þO=”ææ=-¼o”Ty;åV?Úsµs«Œ¢&ô7™hû)Ò;CIœ6q$‡#¬ÒÛïê}(ªØ’ÄÒÛiGæIìgSccFf À‘–ùžÞ¢^ÿÒ‘ÿâ Q ~•ÛóyÓ§þ3«üg÷ÁÁþ¬iåQ VBgPUKPБ¡æ·0™að»EŸÂ°”ÕÖéN޾k* 7bQXñ€ŸÊdƒqv?ÑLbnÒ:éÅ+iž™Ï¹Ç6xsà7‡ò¼?ª™M&«ç.4éR9+ÓP’ŸÒ%lÚÖ,tb”§%%Œ7Ç·ÔÍÀ1,{1ø}ã~=—kðŒJ̼JZ©j9f9JSõRÛ(ö¸«òk¹ê)7Š—úd¤Ì4Õ5Xß³L¦©ƒW'”Ü·¾3Y¢jú3¦flŸO7äÖ2h“12©rwµ¤éSªµ4ÆX³¾¯ØvôŽJVû½Nµ~ 7†¤¡ð'Ḟf£Á¦H¯¢Õšf(IHÐÊPbXÛ{é.ؾ걪º9×Êrj¦øáH•råáè—.hÚjùŒ±èwëïB«5-?È«)-0ÞÎàÅM­™OñuDaô Ý«KMw9,ú’:R“ªËxî”̬Â1 i˜üÓi–fî=béõZ¿,–=I©£(î¢rna¤¡5Âñ."7—ìKpå¯håøÍï¹~¨ÓКãö(YÚDª|^MWšZíZÉ$&G ]\û¾1òý©ÓgÞG?hôh˃&W 4Ó˜ÉVòÉgÜï¾ñðçá½:M?&¯Ä\¿"zU(….Z·˜ey{Ü]/BVNW€Ï©Áñ¯›§¬¥ôk˜\¤–}÷µÐu5Q‘äÔ†õƒªåŒl«\ƒ¥RÖ·BOhû‘QÔY<Òm,¤SR™‹RBU­¶VíQQɆ÷ÆÇ:ñæ-ŽG×Ñöe"Ë„s-ÿoèyåÔ> Îàøjº<>–YJ?H%$+¦äAGOJxŒhã)7ÉŸ(²ì¦b=#«ðHù¡AQnW»0íî‚TJÉ‘ƒÅ)A ‚´þñ[2§“„| Óÿ•uÓ‚*æ vó®?+íãW§÷gÐÓÉÎ㨂ï¼x_¡×‘T©Š¥(zžž2°œ+Äæ&]Lç[‰j m»Qô´g©ˆ«$¤£¹tËþãUsRjæI§–À²ÊÒ«ƒÝèúZ^É›iÍýþ‡žZélt\¿áÎ_Ë̔jæu5 B“×ö}~èúz>ÏÒÓÝYç–³iQl¦“O&QM<‰r¿fZ@lb¢©ÞI³'PB´õ-a A!¶+Ò¡¥úŽ‘FÊÑ.&²œ“‰¬n»Ïn«ønö7¥‰3Ëù…-‹­ -¤pwÇÅà÷ËÉ«š,Ìz…Dn¾†–æ:Èr@vÛ´ràì„’.ïn¢ ln˜‚}ëþ½c¬¼œ%óI!‡NbýâýI^MÆm)|)|À{ —)øýñ‰&Z=òM˜~b6–¤¸Z·'L»?xùÝTj6sšÆçlbÓÊݣ燀À ã                              7-A7––{驵í´ovŠ·<›òªbS¨“<›y7™´}”íZ‹íœ:iuzì}ñ¿ÒŽÄ´/ÄP«†ùûàÆ­Q±£OÒË9ÕÝž9½ÏDüŠÒ…fêä©3<‚þy_tY¬"i˜Ÿ,M)ñwJ&ªj~L§×ô2ÏV7O±éênØ¿#„ãf} ñ®ÏÐMÞ7¬’‹3ÓæC?ÒËñÛSi~¥[ŸÍäFô?…õ1¯\4¼˜,9cŸ¬J_XÐÀ}ncöÆ%iúM®ì–/ ØÕWTç†Äô²¢¯RÅã%{ÆiÌS»¾ý9Q´boƒzj›/ÞxýŠe¼ŸK—1l±—s&¿fùê‰U “­jZôê˜\¨; é´YéÛ»2¦ãŒ3'/ü¥s–˜s.-?ËøÏÞËí4˜<Ù’ÀIJt Í »—&àBPîÏ‚­F• Cò’ÇðìËOŒá9#aª•«TŠ<1råMtéÒ™¼Ì䋨“ E8ö²­Zv‘aùE㘮%Oˆœ‡i«$Ö&¬O§ÂÖ•­`’êW’I.zÄŒ凩{£L¯¡S¥{À¥&ž\µ0[9p\GÃölÞ†¯ÆšMV|¶¾üžî¢*p¤ÿð}n+‡`Ùg*Öb¶+J$áôs %BR™ %ÙH$jˆ=ì"CFz²ÕŒbÉå­¿0õ#|",Ÿ˜(q\#1b3ðêi“ª”™Ôºe΀Bµ9Åß¸Žº,ôÞœ>gò‰ U.ç¶æŸÎXeu6†ª³ªÑÃâb%3.–$¸S¹Ò^×´wÐèg£©-]GKÓÄõÔ’‚ÉmüãÌsR±š(j­¬­åáç–ϹØXÇÏŒ½ÌRj2^™Øî×sukúmñt>ââRåÌ\žrKðÞju_£íhýR“Ó}Ç΃ø°Uk´Ô-iPI,ÆI¶ÑùDÓGºKÁcÂkéñJtµjvQ#¹7wíjK»îÊV~É)ªäBV‰ŸRt°ËO•ï¦Û4j®Ä¢žå7Æ+ðŠ”Ðâˆ2Ô7X 6&ÅDw÷º>µ5RgŽzm<ÆeÌ•úBOB¿Ö>—qåk8)þ=ÎJðDp×ÄÔåÀæFÑáë®P;h/ˆÝ|Ÿ*¸U uÝô›y×´tèjZ)}îcUüx:µ6(®¸ba÷Dzqîv·g>÷T6e`RÏ”réq±ÿÏcª"f4òêÔ4ªÍ`7“C¨‘ù"2¢K'ü?’zl<®bt…«eÿ¤K*ÉjÌTJ¢Àð‰êSÍ’ogIº<ñÔîrŠõ:ÒTmñuH¢Ê©sdK˜V]€=Ëohê¬ß^Û5¹‡Á2­Î¥®¨$‚¥ † -MÞ j8[œÅ+1š©Ô´s”¥-j œJP’T(± yºžªK²ïü™Ž›”®EE1*!EjZŽ¥LÝDõ/ÍÊ}Ï÷=+ÁbÀ°²¥-$éïÚÑ”«s¤#Éd””¤¾Ÿx’%6Õ’ÈPF²«o¼ªÉDñå(ü¹—5æ·ßÒZ7‚ðI»Ž åY’ BT?kx7Û±U#<¡Ø¸û*ß¡ŒÜeHD©ó4°å²E†Ñ”ıƒˆIÙ€t‡ëñ‰jònOâ±ÊTn6´X¤šDX¢ÿà5 5f3U:¦D©†V!iJÇ_t}ÏcÂ2mË5þÏ/TÚI¾”$S¸ O;›^?DÏ ›\»†WcX¤¼>†JæOZ‚t„’À5îEㆶ¼t`ç. §¦æé„xwG‡aÕ3±üÆK¨L¥i¥‘VÔ-­+K‹‚¬|ØûBSiiÅùÛúŸÃ¤®M¯ð|›@ª)ÔtØâ¦HEEeLùr§I¦AÒ €ä)g¾ÀßxñuZúú;Ԯ–So­ÿS¾œtâ’Jüø9w‰¿7ó‰|×.R)QS5(ÂD²‘1M§M™™½#îtn~æ=ûÒþ‡‡]¥¨Ôv5¸5b´Å,bGÅÄz'³9¤íYÂþQhÑ™+Gjõÿ̸üŸ^×½Áô´•#šÜ¯ïcÛñR:p Y¼CÀQ;׃t’r4äSÊf!+Rô D”$ï®è`£¤š_t|ýVûÝ—$‡a‚Ó’2^-˜äLŸM6ž–’[k¨«R“(;€ê #t·¼ˆñu]t:v¢Ómø5 j[\Ì#Ü«3aø,¬iUsçñ5Σ©Bäò ¨2´¾ÖÛpcÉ/hêÇNZÒ%UŒøÎOGác& žKv{ËIü‘Ääá8VSdð¹„ÎëIæ) »~Ì|Þ‹YûøwJNïœ<}þg§[M(ºKûœ¸$¨÷ÿýQòið?'ò ³ðmÿˆ#‡Qò›ÑÝ£ÌÙšøÔħV¢×;yFÑøØß'¾U»53ÔT„›• ýa¾æ£¾LiÀb}Â8,£¬r,¤€çÐFœ|0̤ڑ%Á$³ˆèÙæ;66ˆ¼_©^M¶kA†žm>É+øÆe¹]Ùèß’sþLË5K$ÁÔ•i—t|Þ¥Úg9%{äíƒÌÉ$ûÖ>wÔä<;Þ2                             pðy©g¾’Ú›^ÛFöh«sÉß*Ûâ«H¹ãÈò³ÌÚ>ΓøQÝ|éœ:x!wN›öÞ6ê•y>Œ6%ËN-‚þ¦5¾SgDH©E¸ø^;W,ñKcÐÿ"å%¾¹KRÒ=Š`yfþyQ©|£Or/–L´#ÅüQ(JSÂÒ<¿C*<º$GSóüŽÕ§ÆŒ±?§°ÿÜM껌‰ÓâD?/Ukñ·Õu Îÿ “éßýqüÌuþÖŽõ£{;0oò”Œ:¥I §oy„°]?˜²xRé©®PkpØ+seD5qÁã5 ÃS.ªT¥)!õrÜY#JŠŸÅ’’j)Æ­IäÃYÀ ƒõ‡Û \±Lr’- ~Æ3†÷ Ò”lV€H}àšòc-ªÊKus \›àT„•¶´·wÿ6‹kȶt/ ”'âré©e̘‰RDÕÍÒ•CˆËxÀŠ­Î u=‰ôÿ;ÁvR|f?˜Ð»°ª—Ìö]£¶Ú¯&gèu 1:ì3+S*‚¦u?…2V©k)*B—ö×CN:šqïWTÏšæá&Ñd Æ±ZtOE>#S)3å*\ЙÊi;‚Æïë–Œ%]ÊéÙ¤£ù…~-ˆWÈ’Šº¹Ó„‰)“-3&(„¡;æÛņ”`ßj«wù‰MʬZ W¥ÃgQÈ«œ‰5j–‰Š¸bàf‰=(ÊJMdÒ›JŒJYÓäÔ¦t‰ë“4;LJˆ#â#¤ã*’´e6£{ùošfSª\Ì{)-©^Õ3R¯üèò¾‡AõÏßû4¡ƒw‡É ¤\¹µu”²Ù!:x‰öÇÍÓ£ªŠF£Äì×KˆN¤§¤™ù½6‰.b¤êbÌÆ/Oȶ÷y39w:4™³Å“EƒI¢M\´®T”É DÆR™$~½öŽ‹KM·>rtRm$Ž?›³V3˜ª®j¤Ó’C…,,Üú‘±™¯×_ç±Ò:Yîf¦Š¯èÒ›‚åMuzžæ>\›nç½{qèopŒ+V’ [¯}½ÑÑF¨°ÐKJI@ 0ýч‡ExÈðRÔçK>ž°—’ú€åIQ~¤©’Ýà¢xúR¼ë©%hAÙì"6Œ¯¥µ£‡êL¤„j‹¿¾,—s´e^É©Šn4—ßsàœÙ>4Lô¦åpž»DH>[8šYrR¢ÞÉŒÖZ6ñ&‰Ô½¿„k£(èß'?ûC×·Ñíî™wØ÷rñîyºÊÁÙÒ@AR@-pÝ ~„ñ3¡|œ£âU2†¥)*>ŸK.>?¶ßÿÃþÙžž‡37¾.ç׎’ÌYÍn¯ÉÂþP«Õ˜±u¯˜?´¸ü—]üW_y>–’g7Îvî7~ƒf üÆ$¸*ÉèO o“(nGÐËÛù‰Ùônôcô_ÐùÚ¿;-[nl{G¤ÁÛü%¯¤Â¼ Ä+«¤ñäK2µ"ZB–^¡@8,7"?9ÖÂSëc¶žwÛn?¹îÑj:2oÓú•üĺ^ ᘄìÃðÊN+Š T˘½rÊnêÒY_q1ßSÙ“z„dÛu»Æ9ǪJiÖ•³Ö I…×áùv£¨ˆpý¢¦µhP5'B§Ø¨~‘®— Ôi(ÝW®÷eÕ×5·¹ÊAèCõm½Ñö&2ƒ3 âèÔ”·œžQôƒ¬yz»P´kOvy‹Y›‹ÍR\6—èÀ<~A`÷O&º 1!@¡]FÍn™¨Ú1f»›oöÇ=•’Ø%õP PÌÔ–¥An»FÞæ;yÃÅ€‹µƒq›ÁLœ5Bôr‹ïˆÚ»/©è¯’`Wäܰ©2Á Ab¥i—ot|ΩᣛXî;in‰Pæè7ÿùç!ñ,Ì@¿X¨Ô„ŠIÃLÂût,´U¹äï•2GÏ3IN•sÍ2Þøúúoô28t⢾bIõé[=ñªÁ.ü û£PVèç¯ò›*c¦zK–Ô·Žìò¼ž„ù,/5V30¡XõóÊÞ,—ÂŒéî'Ë(xÉ¥ŠŸ…Íÿƒ+xótþOWQ˜¿$)ŠG8IÑ1AkJ«È›×¥ÆŒ*hO—‘ÿÏv,[ƒÿÈ“éÿ‡ÌãÔ?ûŸßŽ›º2o2ùJ°šË®FÓï1$]/›ŸÂ°¯l­ ä}>åA…%ð–¬Z†MYvö¤_Õ—t–Äy´Ž™ááWä–Åÿ5•¿ó²Ðþ~ˆùz¸fý$–Zã¤u3Τ±b[ÝÚŽƒ_“h“' ¯™0ÓaËÂ%UÏš¢W4ÝHIÒÅE7Þ>D:Æœ¡¼»š_~L´©qF¹yoÄäLz¶¢eR©ê& ®cŸ¨”KIíÿ©¦ÒÕX|ð¾¯úzJI¸<”øú>¤Íð«K:”z}2cÇԾضuÓVè«b1iœ¢ƒ¯t£ÌÒ?!Ò>–¤c), ‹‘оø·d»C¥TLBÒ¢~°íᇵ¼3›*B‘T ÀYžïö˜8÷<`½Õëõ6˜Í.‹É –™ GP°—{ûG7¹b¾‡ñ#+NêɤDÉÕ¹’ ]‚{XôCVQÊàå($ñû•l;ݲRXýYa_áÞ=º=cƒÉÉéÞKvR8ÁHïªÇþh÷ïWÚÙËÝ:7¸nv§+A5èt©bÃך=‘êàù1Ùjµt§:—Ç–F²<ÃîæŽ‘ê&{+ ËêT¯,êvmL¥ Cû[AëE»L(Öä>'h–RšÍ,_–c?§›hç.£N+&ÜqHÐc$OšDú‰ê'U”HØsGž]l"iA´j?(±üJwÑ(Ê”®Š+Òß{ï-_hº}¿O¼šŽ–- ó|鳸µ3×P²_éTTÇÑÄx'­=Eñã–LÊl9SftvïöG+:^ ·ȖÖCÜíÛhÞäM›YrØ„¢Y––ó3@Òód´éiA$¸=£˱è5ZJ¦iÔ ¬ žhnL©œ©ÒY­xÎ-6Í”_”2uç@%)>T›ÈâÅ+±'S{B³ ¨„±ÙâC ‘VrŒu) kifé Û%r?+DЉ…@¨i±6éü‰I5g”ÂB@É~S¼c¹¦YfLsn.v}ÄZ¤‹òtµ~!u_‡æ÷L¿ì{Êûäóu¼šKh$îî¤~žq”±üC/bÞß@¤&hG 9U’àô"öÃ_Bñ÷sX7 ½7q1ñzÚŒO¨Ä*SgÍTéŒ÷*$ýLjZqPÐÄ›nÞì… RÜûh÷GJ2Ç-–—¨*)xªÓñ¼eÉE[4¢ø5xŽwËx©ê¨å\pW-IµÿXqM^·N›†›xäá%f xæ+YP›ŠŠ¥Ô%º77¾Ñù®§SÞj9#èATW’¯`÷³G¡w"¨¥€S‚ñ™lnOCxHÇ%й#èeüy³èÿ¢þ‡ÌÔw6ZcÒdÜÈÌØ¤Œ­7“0"Žkk *L½aîÆþ‘Â]4%?x÷þŸC]î¨Ôi*m@±ïÌ’&DÅ¥€U¾Á=Ët6¶¿ùñ Jœ$n9þÃïÇSZ1[–”·)ÙóÄš œ³UàR_‹£R¦%:‹)*Ý*÷ô•Öõºnž}ðÓIÑÃ*§³øª%A¸…²£ÒòcÏR–êQÔ{ª3/º5Ìuþ]Ý®²¶:­†¡Âœo²*Y¢³4¸¤@7/øÇFÓØóï7@’lX Ͷn:“†’î(e5àÊz;ä’IËIIᨅŸ3é•t|î«c„¼­; ECëÓÝ5˜$#                              X%˜~±P ª ÒÍc4ïäßn‘¥º*ÜògʪøÒج4¹úÚfþ±ö4¶Y=w%öŽ!4ºÎÿÏøÇI*gЊÁ.tÏ%–5 ÎzÊѱ’ f¦ÊgÑÛ}#X= ò2oÊšÆIЬÜ_Ï*5=‰ è—å›ÿóƒÿÂÿäÊ/NzºŸ™ï’0R¼jÙ‹Cñn‚Çôc¦ªN i¿‰4'ËÍDøïŒ’’¸ °üÞL^›:q8u µŸßކMÆ1)ÃêA±åo[˜ÌâX&å‚Ûáaº¸«Sýi÷**,«EÙaQPaÐÝ**ò=̢﹅«v:šJ§LÐX•í§«F'5÷> ïbÿŠxkYA†ÖÉ]E2êäðõ k$.4ò¾Æñð4=¿§­©ºwûyÏè{§ÐÊ æè—""“ Ä¨ëqêdMŸO6T™B¨Éž@ Zm* A"â9{K»©œ' 7ð´Û­â®×ª~6:tõ¦œe-ýy(xÂ&{uH™Rš•‰ª š…ê ›¿WÝãôZ-vF•*ÛÁóæš›o&4´Ø’.ã·hèó“7’`—MÞ k”+røCœŠeÆ’~o¢þR‹tÙ|vÓÜĶ:‡†\/Éœ/¯‡ìÒµhó6”»zÇì4…ð™:îÉÕ²Žáæ/RŠ5ÍÌrªL°n©+[¥6$¹6Ç‹©ÖêôWrQjývõ;éÃFO›ü‰eá^/0|Ê„f¯i>Î¥!’ui/ggôŒ½N«³Þ|5^¥íÒî¬þÅ¿ÅZÜ«†àxfUÄ>y\„RJž‰”‚Y^• mpÝ£çtZ󜵣Wmfþ§§^PŠPw±QË8߇ø5#¤•˜×:N­"jd—IMØŽ„ÇÑ×Ðêµ á'SÍ éAÚ³SNÈshæ« •"¨¶52D±pî×Ùþ1ßJ=J’÷WæboM¯†ì¨g¡ÿš¬i$©$ð<»þ˜Fº¥qdÒܪפ¢¥ai–•ò tÈ«iVÇÐ[cs LE9!|Éõ¶ðMY^^Ë8}FkƧêÄjéi¤iÐi'•ºK½ˆ,S÷˜úÝAx÷Ížm]g ‹LÌ»ŽaЄ¬â4·Òd•̨þ•€ÜÛÐC©ölàœôÿßô5§®¥%d8¡´±;4y¥©L¯G6Z.8jްjïveâµC¦TªÉ2W·1K”Üw÷Ê4TùesÊôSÖfR„¡`¶ é»—j™{xF‡ÉŠI*Ò•‡µœ»64ÛnÖ ¼­]fW©–‚D¥¥NÁ’E¾ÈªMlÌv#`•ÈdÎCøo÷³Ov;ù–´ÌuNžìÅÔví´¬¹l(*¢IxÂÚ’µžÌöû7‡¼“ÝÙ\3©p€âR\ÛËþ…mT‹Kcs‡á‚J”à30ÿ¤JF¨ÌD‰RÔ¢ t\ìrÉé¤UTLáÑHRµÖ[íôitššµÚŒJj7e‹ʵS¤•TT¥ˆä Y*Í©ÆÏ¼}eì˜(\ž~ý4º–ßÂcu”ÕêÃëPÕDKHé>²^ä7ô¯¡î¥ÚÏL$š°-¨j À1åÙdêñ’/¬ uüw1¯¨Xxnžµ(”©™Äaì8¤R>P!Rs˜ Ô¢Ö6<ˆØÄæ‘ZÆy7Xf®vk·Û}„60Ã-sCîmñŒ¶ïwÜ›Öhg©AŸOÂâ –þS¥Ÿöº>ñ›ULÐJJKÌâÝnbðGµä躸nG þÉ‘÷ýŒó%ôþûž~±ìvZk€–'™ÿéë º<`’PóÊ}KØXËi; 6`âxþ…¡j©Ä$LPIYD‰È*÷1>‘çÕê´ôòÚ5æO©¤¡r°™ ?4ä}vÒ¿t|ýojEb?¹Ö:.­œÿ0çìkRÇµÔ Oc1z@¿ízÇËÖëu57uô;­%¹Y«­¬¨¼éó ‚‹|cÊäÞçUÙŽnƒc.Û Ü½{Ää—’€­“áUÉÒy= áòU µ¤Ëÿ‘1û…Þ„~‹ú7Wçeª\¹ª>BÇf=g;D“QKJ—«®§§s>hOïøF%©îDÛØ®cÞ"e¬*WÑ)SÖ¯-IéûC¼xµ=¡§'f£¤Û9ödñgª$Rpd'§³êKí».>f·´å;PÇßÔôÇB¨£bxæ']RfTWTÍmSTz ÜúG‚]F¤÷g~Ķ1äͨ „éÀô¨¹Ž>†[ð1L )!™¶0“t=fŽP^Ý#mdÜ^LU’TIo„rªÁÙ*0½A<ØfZ‘ žÿŒt”iÙç—ÎÄI.ÙúíºÍàððÒÁ½ŠUÓ·_¾®Šz3ä’ß’èÐe…ÛQ;éÑ+hùÝVÇ o“¶!Üí¤jØÇÍ096H¾–€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€v¯c¨Òú™LÛ»FùEŽç’þTäŒa{¿ê÷¼ÇXû:5_‘Þ5ßôq¡¦þ±¾kó>Œ^ (J­™¯ýýÑM•!@P׫nPãÐy&zäf 3EY%¡^ÿÏ• â&aó|³?þpbø[ÿîeG›§àõu20>G©R¼q‘Ôñ¯ÿ67«*‰%”‘ËÀ•xí‹ 9ý iëù¼ãZ ­$Ž]Bÿºþö8M÷Ž&MΞ½ „éwÜí’{Óù°[|-ÔqÝ:_“}¶TN ĶVÕK’ V”K=Uf‹vi»D)Çp°ç:'ñ“¾%Ø´Ñ<¼w “4ÌN!Oo.™©·ßQî]¯b©4Õ,OÅåâHžfÔÐÊ™7Od¥³36“¯Òï¥öNãîÛuæ¿|¹õ“ÔO»B£YQOª™Rk©J–¢²óC—/«¾>Üb ’<ÙÆ°ô‚}¾–åÿJŸÆ+ §—aª™ü¾œ½˜ÍNÿnÐD¼›9Q2RU)IZTÐ\Den°‰‚}ì`ö rQüiæê;_Ú‘¿f\uÒÝ–:w†ïù#‡X%•è&?e¡ü(ýòçó2͆ÕΡ¯‘Y!Zfɘ™‰¹gÆÝ-œââ´Ó-ss”ƒG6|¼…¤ÔºƒNáÊÒ­Zµê¸1óÿû—Äû|Yè÷ʶÉŠ8Š1`“‘Tš‰ƒ ™ËBõi_6¤¨¾÷¸7ôZn靿dÖ—u} œ{ÎAù¼+ƉÔOÐ\oúQ>¥ü-t·*˜¡ ¯š´)*Ag.ýÑùˆ¤}ðÚ5õÄ¥*QS‹lcKbÕª5Ÿ'ùŠ™‡MZµ=œ§}×¥ö^4«ï“çëîu!>d´“)L¡ú¦>žûœ­ŒKÁëÒS:‰2?Z}´&j¿¤Þîxóktšzª™¸êI<3ES•ñJ}Kë)§ÓÙÅTÅ*iûnÿ™­ì›—ýoõÿÃÔº•É®©òÛ‹…× 'Ì¥HPL|Ùôš±mvþˆíHùº™A!JœDùJ­ežURWÛbj—5ÂÊU¯ðŒ·à«Ð†}<¡¡iDµ9`àE«a“©¤…‚Q)ì“ –Ã8téY JAÝØ}YؘäYRÔ¹‡ƒJ©‡MÂÿè´u%²f¤c†ÌŠLª²$™i%Ï*½-ífjM\±÷ô1-t¾•¥%aus”¥äJ†“èAôô}™¥¦íçëÿ‡–]C{úZ*zTKdK@ úR|aüªŽ=Íå™RÔÊpê³v6%„Óãôá(R$bA"\šBJR žf*5 wSÓGUS_äï§>Ü”¹©&bŠäp&âHÓ¥R»jOGÜwÊONZRí–çЋSV@ÆZõyŸÊñÊïtDHöP*~Š"ÛÃ’ÕlS¾Q £:*f Rz?(ä—5à5Šþ¦ë -'È’žš…ã.ÖÁ,`À˜%ÌF…lzvSFnð̼h…a3Ô Î—®#À•%Gcu‚ý•ÅQÑùÄÆÔ”}"~/§Ò>Ö¿[¥—ýO t›y)Y“ÅœB M§£üÞY$håS‹Ê=Ñòµ½£)?ƒo¿C¼tåÇkëê5jÒµ;©’\^ÛzÇÏž¤¦ßs:ö*ÎMlå.bµ)W÷GÕÉ¥õé¥` “ÜÁÐù\Ú1EäK°cþ0ªe4î}ãiѨø:ï„yÏ¢ËI¦Ä&ðÕ% 6•)ècô[¦´TeÇøY·ñ°ú/þL¨ótÙjÏOR¾#[òLìÞ3ásÐu(q\àMuq¢Ÿr[ùyËàxùŒ²œ§€Å»ÓÉŽš2r‚³Žº­L¥$ÇDfÛy7¸> ZP–øz‹÷QhËYÉ­+î¶Y¼/+M}hÙ¸wø* ,AZ¤Eâž3:h¤¦› ©Üé¼§¨õŒ:àÖí”™5*2ÜC¾ÑÓ·‹9<:fyœ°ô›ì[xb°a7tÉT±­:ùTÝ#YÁeÜÅ5ÓIâ3 .Û×fBr0½¶r“3évu¤m¬¦ÍÛxMˆOJÒ¥-î °ü"¸.Ó:6GÆj¦ct´Z©—D‰› ,¨Ï´c·DYvZJ”à;èÏ¡]¤Qükÿ²¨Õ³T¡Õð]£¶–õêfTΛᶯÉ4=$¥ê&?aÓÿ?D|ɯ‰–؇¼v âBÉrÀ ~*€«˜T€Q¬…›{ô⑺fnHW…ø¸Ù¸.?[éDxúµð»:Aµ”R¦yT”–1ù åŸI´­uÇó5¯õ™ý/[ÐÂ5'rU…MS;tõ™¥ö_ðþýOŸÔ'ttõ¨iQJ¬â>¡çTÕ UÂRÂv ÂÂbËR R5ýð%òIW¦¦O kIÜmû¢8Çb©5“W;/åéˆ W~*ÿóK£ÒŸÌ¬ÛÔiÚ1j²ÝVv=+hÇš¤‰)Iåî5vFšyà¨|£eëÎ\5 ý_èKëXÙPo;Æ2‚xi"ÁÁëz³2ÌSfºuÛVÎ¯×øthŠì¨ÍÇ 4ý[üDf4òG•“‹€Ê'Ì`«·85ÀͰMëÞ†Ñl%ºéß«ÆÒ{ Õà‘ `ËÙö·o\¯bAk5»ÅIõ”’6êÑ¥KlU ?¾ ¶ Ù²Áòö1‰Í–Š]z˜Žt îGq´ºmMo‘z‘[—¬ÁÜV²—TúÿgžPè“ÂJµ)ƒ%ÂØ\³ÇÒÿ‹—eÊYú³—âtŽ}™0º¼ª¡©fSO\‚mu$‘ОÑñ§§Ù'Áè‹RÜÀY*±Ü܈ÆQR¡Š6 <86˜ «nËÅ℞ÓÏú§¿x«À¼)uýñjŒÝ!é›BÒVd#t \ÉyƒÒªZG”~¿½ ‡hõèô:ÚŠë‘ÊzÑŽå1øcŠà9b£Tïh‘#OéJxz–Ÿ®Irz Fº®‚Z0î»òb:½ò9ý|¥È©T™–ým>ÿøÒ£fÌãßÛ[ìn$öûžñÍQe‚Ï)<2µhÌb)’’›à¼tlóßÄØ‰g³ÄWA›œâQ†dû¦>—ƒÞÍ'ƒÑ$T(`‰œG —¥ýtÊÕ|´p›UGn (•¸)Ý÷ô›±Ìrl­´e`                             Çœ£¨ :C)ÏkFùEŽç“>TGPH}3 ãTËÇÙÒ•E—ÍrGžüRåË¹ŽŽÝ#éCbJÒ/ÜbÇû˜ÕÙ ­ ieµX˜ïÎO.¢³Ð?"öü®¬¯ì pÝuʼoQü(ÄnŒ¯–NŸõljêV‘ôWoø2£Å¡èzº‡RLÓü–R¤ø¿‡¥AˆâòfFõþFƃni™ß/ þ>ãN¯ÐÙÿöy1½áÄókýðyþ;–’€b.½øLöŒbO6‹“,ž¬Z¼äpïÞʉš4“Q²³âê›4”nÿÐLgPÔôhä«”, M¹ïžpqšÍÿ¼:©ñ#:KËÔuÞȹôÜ ½µìTŸÔ#~±™IG,±‹›¢£ˆÑÎ¥Æ&Q/›S>×åx]¯R5äë¹çäÿ`~eüïM‰ûm+KM9Rx(G³‰²LÒÌ%Z@mƒ¿M£œ5mrtž›I4SüpðâvB¤Ë“æâžÛó®MˆÀáqBÎ2µ6ìï°©'tIFŠn 7¾ÑL3¡äTy‡%‘ìrÔCþдe4égÐé GZ¥¡Àui(ˆà;EÆD“ƒÓÎ[·*¯ éÑ%±Ö<RR¬°fLdj¥u7”r}±ú¶›éj;öÿcçÝj+òzJDì9Rñ))Æ4&j›ÙÔ\lñð&µ"ãkÇþžû‹º>}Ìø08¾¦ª‘,~n«rïþÎêz‘k-6jJ.1w„ÑÌ|zTŸËD u>Óù¸úM?]vhû¾ËRZ?¯üG‹ª®ëFUQÂó†|Å/ƒ>L„œEn£©jHk(€.åü#—ã54g?µü?OËòÜÓÐŽ¤cÙùš¹™r›­W‚ž Ó×rÖcuw=Qꔎ£Ë9û§,¢³ŸèÕIáî9O4¾žûý"Oñ†¬œ•ÇrESh¡Uë™7ˆ¹š–~³Gä£àúxZ´–AëÞ*ðÍVpiþN§^9îymÞó#ôžËþß©óú¥R:š2FúÇÕ<éãiQ”ýcl¨€úDÛOÕíý Þ[ðö³Ê”ÙU\ µèä m+(?XÇhùzþÒ†–«Ò­·û£×™¸÷pA7#M8•6I_Æ›6z%ÂN®·W®ÑÖrqršªVgÜ;QLe^CÅésœ¬½4éŸ9”ËÌ ô;jaX±ëá-­×ø²>­Elp¿ k«q*šWµD‰ª‘£„>©}m¹Žö¤TëïÁÑt­Ê¬jü5®8×Í²ëø“¥þp€ÒB´“æcxÚqŒ¬•&é}Ð]+oµ2{Ãéøe%eLÜWTÉV¾],úhÞ´½ëøcÍoûìIô½¼™4×MÁðüBmoWÉ—1 á‚úÒàyÿƧµ¡Ê m¯èI*NÊÖ{ʸŽVÄGˆ!‘1"t¥:yÒIÀ–}'xöô½T:ˆ÷Cóúœµt¥¦òh™ƒîüÚ='B€[V§ÒÛî€|0—ÖíõÉþç’ZrJ =íîQ¨ñG‚Ÿ)¸’Ù ÔåÍÚRcó^ÕÄc^¿Øú3ù¤žÔh¹ÛHë%ï“Ðò žR$¨'ÓáéÛ-æü”Ÿ”jÑ37‰²Ñô]ûrKë‚àMú›,. ¦F±3QVêmãKËÌV œ°0Äb2Æ$–¡¾ êµêßvŒ<º×‘ëý²óoô³éi_iDå`OPÏÞ<”ÍçXc©-0@ Psa¸ìcQ ð8$)E*²_~ñ¥dºVŒü'Äq:ž ?gêëHèOR;í¥£=gZjÌ=H£ eŸ «'I31Zf}¥è }ú¥~èúz^Ê“iÍýþ§ kç@Ëù;/á ÕKIô£iœEß~…G¼}M.“OMTQÅêM¼–$êUÖëîIÉÒÛ¹Í)™áN<&"ÇÙÝ/ÿG‡ÚíÒlí£Hóiç¹ÅÜò¸íÊ#ò‹kg¼Ö,YÙÈÚ1/–žÅ^ e„‹¥OðŒµÉÙ_"ÊÎ ÄD—;e8ö)vúߌunÛHãüì¸x‹Á Ön,¬%D:E’ßlF¯—ƒÒ_$™òNW“-¦ùÙÎÚ%GÎêÖK„v_¬Ä:ˆ¸ì#çÉ6(€Îw- °ERòéf¦pN¦òÛXÚvÑVç’þT+R1¹Å?^bƒþ³ªeý#ëéFÒ;iª–Ôq‚êfb 㬗ƒèÁbÇÐ¥'°q)á™ÔØÏ¥RK)C˜+ÍéšLòÏG þEçVk¬PS§ØWfý¹QuE…]_,uðüdÄ—Û…ÿÉ•=x==R¶GÉKB¼_ÂåÌ›¡?Kõ]¾†dtê+µß#GáÔI#/åû,ÿø€ÆÐ7Ð[ÿÕäFôZPG k÷™8Âê%ßÖ6Ö ­‹Xc€bA¬8N[˜ý‘™ù7¤êäX”o®Ìï´U4Ý i½Î­x­„åšlƒïkªrî„âÔü%#Dµ™ÊÕ ¨²RÌ’÷±Ž=Y·8áßåñå\s˃*Uñhi°jZyháÌ•N`ë–7Žº1j.ɪӮÝ<ÅÚ:ý%ÿÃó«¢R¹tÈ@·Lg{:&Ú£¤ÍRUt£M™Ww=ãžû„©2›ã5`êÓÊ*Swë¥QÖŒ·ƒ©üŸg&BòÌõÔpS.e*Ìí¸m ên­»Gëïéi+¸íùÉGRÞ2zTfz 8€^nÖ¥JšÊù½Aߣ4~}ôsn5§[sûžÿz³ñ~Ãk3E1Âð”§79ET’±ìÈý".žIÍ­.#¾Òø¿c™xó_'Î2ê$b>Úf âpJ>ºË1÷ïëoÙPpѦ«÷á.­÷KÍnCÅ©ðÌ?—SUÂ5.túJŸ`{Ç^£EêjB]·WŸ4¥Á«ÞŒ\ 2â¸U0“G7KmÊ’×'¨=ÌtÖéa­‰åO]Ãc[Ÿ*æVäv¶±ZæLö}jfv˜6÷FgÕÚAÛ¶Q*Ô¥OQ Ð’Ì—vøÇã•B-VLêWÄ»ýPñ®}Hö5'¡¦’¨(¼¾F?Çé}“OKyg‹¨Ã:Z´¹/Ö>©åWù UÑÎ\Ïêþ0*Û+K…+›ÿªÙÒ=áé©©ð' ‘‡Ó{TáÆtk oÎw6ÙþÈü—WºÙ)ºN³ù_Kø+·ï&¨Pbô¿ ­Äðïd’¬F!|d®ú…™7ØôÊzzŸd­Ó9¤Ô“k’Ôó%-Ÿ1L+?œRWM›O;›ôh˜”iHrK’ñáêºYihBqÙ¤¿:;éj)ͧº)y"züAãŠâ2UP­¼ÃÚ½#êõPo¡ÓUt—åÏ.”¿ï–|ÿQ¾Ηÿâ k¥UÀOsí ³Ã­Kð0îôþ„Òoß6¾òo|MÁ³$Ú ^Ì:(’™ÓLïi–~”_K¾×mãÍÑkè§çrxÙþ‡]XÊž0M™1ì È9IŽ óšUGG-ý©røg†o`]˜ý±Ÿ^ZÚ½’¬¾äº“ŠŒm^ÅGå4MªÁ'ÉVŠyØ\ƒ*C? $¬¨Ü°³ãÝì{Pš–ýÎÿc‡Vö|QÍKXæ¿HûG‰:Âä v° b?„ ~DpHZ“©]ö€%t)’]û@ËcWâ¬ÄËñ>Œ¡C_;>Ÿ¢ON±ùÏj'ÙõþÇ¿¦TåkÁ¢XAQQæ">;Æ*T–;žH'LJ scÚ)%L¥ü¤Fnå:ûtnIq"’زní™´3VªIeE÷»zÄ¥õ3€¥ÑH¡¯Ný:ÚD[eb^5ZnÏê"EVÅnY8t¤iBRû±h)²ÉÛlP“¯Ðî!&×ÄFÍ®QÁ+1ìLSR\ýeZÖ$nGh÷t½4µßlv1«5u<¹á^M0/¨öú4)=º…ûãíè{.Φ~þ§ŽZÒgAÁ0œ? £D¬:›†”¨Ö¢öÉì#êB ¶;i6Û¶g©`–=¿j Pá?º,9K%f|ÉL¹¸NíKê—Kìùë.æéµ5û]#¥eÿ ð*)²¦U£Ú–rëK–bl¨úšÎÒÓ·,ýýN^\z*yT´üizÓÕúÇÑI%Hó½òLŽr´¢ÌΘ¤å"Õ‡ø}™§àÓ19˜‘ óx²Ëº´í©÷¶Ñâ—_¤µ•çó= BTäö*’AÖ%¯§NÑí<òx´79ð—ÖþnãÿG“­MiÝÑ×G8‰æ\Ò’œÃ=*å<¿òˆü•ã½ú©¤ibYã>¨Ônì‚mÖ¢l{G¶:!%žav,à¬ËA>ÊÖ}ãrßs„—ÆÄмsš×*e>RyÓG)$_f1š{p[=òHR¥—Â}oÓL«4|þ«åüκ;pp“æ*ï4æH ±Œ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ìX9€ ©ÕìÓ(é˜RTÞ­[ä«|žJùSjnóâUüíS>¾“I#¶Ÿgv68ŒâJùƒ¿¾;;¥~O¥°KAúU]ƒ„0Ûf5^'BT’.w÷Ç¡;äòÊÚÉèO‘6j«YK`Xߦ¹Q½O–‘Î Ý_-ÿœ8šÒðšïþæTxúY4Õ¾¥üHÁù­GÇœ%l’Ûþo65­ƒ¢iE)ªåþ’Ál‘ß°‹Í–ø"ž‚t¸³€ý½ ²Kät™ ¨¡C˜‡o6¶÷/yèñZ:y¨Ñ3‚…¤»º\ËÅÑÚF,%é2ùÝŸ§fˆ°¬‰ÛeSÅyfVS:fk'·"£Qy¶fE×Âe…dŠîÔòÇÿ 7Øôí=(ýô>v£}í¢Î¢°„v~ ]|@[ѾØÐAwf¿H , wëвþ!P±…„Óó ñEL°_ àÓDxº¹%&n)”™Ç{߬~F(ú­Ü¼˜u™ŠQ zˆÚÆLâ¬ÓøJ&×È*}<6 ·œÇè}’ÿëkï“ÃÔ*gUå k)ýñö+ÊôúŸK½öŒš{¶'S…1Ñ6¤ªÚiÛÖ& -…Zˆ.ySß¼=³ñAQ'©M‡§x£ŒPS$éfêð%­ÐŽ@!œù€¾yÈ–ä0;žð.wB)›=7€¶Q)ެh”É!™ Ü÷Å.Ã~[Oô:ʰY‡”@˜O÷&‚WÊ71²o,Òx±P”ø£NŠu²Ñ«U¶yImãóÞÔ¹F7ÅÿcÛÓöܯÐÓOp‚§ÒGÝVÈõ´îè…`Ë•©ºw†ÆnÊOÊ5Dæ­aúŽÿR_X,í±¦ä–I©‚ÕI+JôïÓÖ*Iœš¸¢ehÔ¾µ*ÚË}‘”©šàØâEÐNL¡¦íµâC"JòŽ-=¹Rzv¼e¬äÔ±!ÌJo±Ü÷¸Ö7Lé_'kâ8kö™wØíüW÷¹åêž;$„éN‘r~ÿHýâØµøC—©³FqFT½2„°µØ›ëJH±»ÇƒÚOá´ûÿ#¯O§ïeGPÌLܽ—ñJl'ªU,‰3eÏÄ>q~.”¯£Y$8VÛhøÝ>´:‰'«;wiVÏŒþǾqzi¨.ð«4 K¨qdû?šJ)¤>­J HJõ$[rï鞜$÷¶ßÓÓý˜ÐÕî’MQ˼]@Gˆ˜ÐDî 8„ò£¥™\EZ>ïC‡…ø_Ðñk×½•zšŒþÕ¥ M„Ä}î/§±ÃœÇåfLMÆ‘óœÐ¦¥Çä:ÚzÍÝÿéô´›£ž‡Ø'ïé^Û: š[õˆÛM£ÐÞ‡ÉJ;ð‘ÿËL~Ϥþ ~‹ú O–` ›zÇ ÁÒü0Èø^'•ê33?]$-#J†­KR<ÉP"à£ãuþÑ–”Ö–’·öü­J=òØØç’U»«´b–ZØè˜Kt‡v~á›H<™)JhÛ“ª97lTY`ö1*̽ÆjKÒP-(Ð=š[—}V7ˆži•lz'ä…=JÁ8i^¤„>–ë¦TxzÅðœgMYÜR9‹žr>Á3úLJ`åÌd@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Õ‡nW¿}¢ A^Rhæ…©Å÷–ß|n+%Žç’¾TÊ Æ\&iH=ï2ñõ´²‘ßN}Ò8¤àËÙ¿ŒuhúØ’‡ôг‚–1¨ã(ΦÆl²5% 3\Gdï'šK“Ñ?!ùB~n¬–U¥_7­[;óÉË1Üåñ|³–ŒX¢?¢kíô2£ÉÓpzz´›¦`|¯ã¾§”3úþo6:kªƒ&ƒoSГåþ–ñß/¿ÿÝäF´ýqüÎzëþÛ<ú£gÌiÕ™Eƒ*¬A7ú'õæ1%Šhé Ë?†éR1ªùCÌžèª -ÌGkfç:`ñI|%#ù¥öÛÔv‰ó[Ñ]¦ÈR„⌔¾±Àû>´Uñ²ïqç Πãn¿ÖöaoíDú"ö¦íœRf¬k˜î}˜z#ò‡j¥A3ÃÚ’’¯žÜ'ÿfÿZ²-$F¯*@ÕóÓ%AÏæÂÿÚ‡kl•áôÐXcLŸ7òa¿õ¢ÓY²ö¢Õ’2¥> 8ÕÍ«öº…KÒÃ)`X³9¾%ò3‚ȹ‰›[êôíè\]îk±êIU¸|É3–ûAücKc &‹¢Æ°’©txž‰*}à ¶Írçaí»WIv¦s–Š‘°EveÓÿklvàKÞ;ÊêíÓüü2ªüÒÆ.¥Xû<»F_´õ[¿·ûü4lj«³R’xxÝÓËüš]Ì?äõvû¯Ð~YšŠm‹è#Ì}žYs{G[{þŸà‹§‚#E~l þØÔO_g•x?ij´Öß§ø'ᢓCª)±|Q“ŒcÿðŸ„Mî!Ç3 Y«Ô¹á˾ëDÿ”›ã?~…—J²¯r?Ÿ³!Uë_õ]þèÊje/¿Ø×áSi±>yÌŒ™F¯bÿ£—øCþSRÛ¬}ú]4w¬c2!@·u¿èåØ}ÿ”Ô[ýþÅüÛº¬xrî;mù=_¿ü §ˆÉØžh µ]Êørì>È/jj_ßø‡ˆÃ‹fwç ÿáKü"ÿËjxûý øq³1LÊŽoœΗàËßì‡ü¦¯ ïô‡BœO4¸¹ÛèeþŸù]_¿ü/á¾ßš„µˆ÷qÁ—öÄÿ•Õñý?Àü2c‰f~teitŽ¿‡H?iêóý¿Àü2äh¯ÍD$üèÊpÿA/~Ñå5>ÿð~$òkót´•#Ó0—*Ñ—íMG$¸ûô4ºd¶30|5R+§b8…w¶ÖÔéy¼-= bá½Í?_^ZÒ¹tÒ‚øLâ@ ÜíšÉ¥òàƒK!N)SYâÉ®MEÜ‘GùC)*Ì ƒÃGDîܲâE öSÉ—%3E,® x©¿Vkĺ1k³–¤%S̤¶Ý^Ö #g‰KG±ÏAXš“¥Û­ý"G6ò­œ6H&RæüÂ3ÆÆg»ÊR’T£x•!»ÁѾN¶¬Äx‡RÓ¤ÈûÞÆÚ_~O?XöGiK=ö¾xŽòt™*O‰™2®\´{8'YÅ—g1ò}²¯Cå¼þ˜y=øßЏý}oˆxˆUZfʦ¯˜$¥,”¦b´Ü ïÖ;ô]¯Ålʼ¸Œ&Lþ™"S´Ë:åé)b‹>îïW²t=ç{XñüîkñZŽ Z‰‹©Ÿ2lÅj˜¢fúÆ>¤b¢©fÞæV•œR™lK)6m®-±›þ§ñè§ò‹ MÎ%7PÚ\~C­“–´¯ò}--¼üÙ6è#ËI›Ý‘N%‚ô"#{#qðzÂ[dšK} ³§ú ¼~Ϥþ ~‹ú;WçeÜ1øG ÁÙ|7Åêð_ñ\C ©LŠù<$Þ¡@ò¨±=#óÝn‚Öë! »Yü°{t%Û¥&·Áʱ b¶º½5µóxËOV {7Aè#î­8ÅTO“o&n}ÌÕ™Ÿ0MÅk%èRÛ‘ÁfJS¸õDré:eÓi­4kWQêK¹ši!@‚úG¤å*ä~k‘«Ã,d¤ 6ÿJ#Å×ÓÒi›éÕ¼žaÍ$|ûPáÉÓÿ(ÉÛ¬ž÷mšÉŽZ2ÒºeŽù )`iqûãžïÁÖÆÊ®ðWº+ÛR 2A)?ÎŽ’½Ž2Ĩt°êþà›OY¶Í ×I@G.šya¾ .M-Aü[扉ú ¾£çõUG-GŠ;¸}üžN±ó98GY­´G¸ €€€€€€€€€€€€€€€€€€€€€€€€€€€€€3êò½þȨØ·ý7™ì~1¸nXn$ü§ïŠMñï™_Cc¦Îþ§˜]^ë|#£w÷Áõc°ú2Ó g-h±ûúÕØÌ–Y`îÿtw‹µàóÉZ=òuç:ÄÊ^… 9n­þ¼›Fœä×k9iîÉ>[+)ñ¿Kê‚ÿ³ôcËÒ¥Vz:¯˜Äù”ÿ¯¬ €éOP}ÿ7šÞèíÔ ΂ÿ³ òþ >8âl­_¢r›è$Eéÿ…ÌÇQüCÏË:ROÝäÊVèÞåâQbD «W ›õyŒé2éË%£ÂÆ8ÝqWÕá°þŠ¢7vT’V_”‰šÇ1èuA¬öŽ’Ëc²•ºzÆsD¬#k…`5ÕÒ E=-IAÙH’¥¸ßáN§­ÓÐU&­qgHiKQá`l¬•2rU…Ö ÉÓ¯T•}ìö³úÆÿ¥%¦¾-²³[×вҕ¶Öĵø%&ŠUBðú´Ë˜°ÕJ‚\‡Ðû?Xê´e'É6¸´œ”{Ú1Ճ⦥4Éë Å Má‰*Ô©d¶ ÛÖ5ø»œ•mºßÇÔ(Od²þìÛIËÔÃ%ÏħÌàVIªTg˜V[ÞÛG“ñò}Zéâ®.7|o_y:ËA-.ûÍ•À Ìïo^ñô¹<ï(DQÌ Ú-»2B¢ @$k Å{£[¼‘2Øj`"<…½3i…åìZª”ÔK¡¬ )äju2À†=^<:¾ÐÑÒš‹’õÊÇþ¡¡)=„²ö'[6rZS*b¥-bBˆJÃ:e_máÔuú:QR´ÛõãÏбД­rÆ)óªè bU Í өʵ7oX’ö†—ºZªKõ[øú‘hϺ«ÿñ¼» ‰ê‘QÁ­j’BS°~0ézèk·_Ôšº.H›ËËŸ]LºùSièê5j5(N~µº°Þ3ÔuÕ§/u™*Û;úÓÓ¶»°ˆ³… ¬?4ÕQH *^;õ@=}ñé赞¾Œuïü“[MBtŒ%&zAN‘}ÎÑèðÑʶ 3_˜§é;ÄÎÈ9dh!“`>øÖËèk›6ùgùèM–Š‚-¹ENý¤xº¾³ðÒ«Nóµé­=>í¸&ªËSÆ=# §âÔÔ+Sðå¯.¯(=£Ïi§ õõj^_­nt÷SQ[° Êµ•ÒV_š™òª”î•H:ÑÉ®èw¸üczžÐ„:OÅÚ¯®7­ÌçoWݲ0Á‚âU“©j% .+” ÚÔÁÏOã[­ %O¾ùð¬ËÒj.OƒgC—)i*hfÖMâÊ›P‰K Sbow}‡ß9uúšŠqQí¤Ýý£¬trm˜yò‚Š‹1ªE ž ®¤D¿1 äúöô³žŠ”Ý¿ôrêN‘¤Òf Ü›ŸÝÓ`D]%:Oêt8.ÃÛInÁ¢¿gb Á#­ÄB=ŽKMUŠI‘SS.E:Ô5-g•.@ÝÇHóõ’Ž“”U´°j¹#§Ñäü’š ¼jZ•ÔÕË£Ôš•R‡žË¿º?)/iuíÏuÚœ¶\q±õO¥KÕÑLñOÁpÌVe&©DÊYBÊ&9@Ø’Ûû~Ç×××ÑZºüñUÂÈpTÉN¤ò[¨}ýcëúBR4¹aƒ_ßK†T±LËw%$‹oŒ`I(Ғǯ¤/–7yäŽg4‰…V%¬bÖh×£)(¢³™S2jJ¦«q±òËéæ{’ ãèga²ø” Ø;}¦#u±"°$Á-N€µ‡è Ϻ,Ÿ’Ä*šip¶÷ÆKàâÌ)Ђ¢åî“ê'ó6+°Jʬ6sxSJï"¸:/ÉÝÍ^ –8l:m2>÷±šø¿/îyºÚÁÙÒ ¯(q³þ¾‘úÅfM ME,ítsæH˜æbR}ÀŽž‘™(ËádMÅØ‹\ÙÓU2qRÖµ©jr¢û—„i*H7nÇ ?Ff¨i@7Rì¼jÉoc]Šæ »ƒU˜”…«p‰3UÖÌHìcÍ«Õié§öIîŠNeñŠ]0›#¦@æ!3f#îÒ½¶™¯í4ë³ï÷;éè×(̸ÝN1]:|å©J4ϘTIæ$’×=ãâjK¾NO“ÕK&¶ïÑš0è„5¦ÁƒÆeƒ¤CxL_&P_›/~Ú³èó¡¢þ‡ÎÕùÙgQ,ÁŸ£Ç¤Á—/殆]mLºU6¹)˜ …ÝÇbÆñw.êÉSk@Å@rƒèѲ*\¹J"¢¦M?eO^”Ÿ¶3)(«fS¼£MŠçL¹…85"¢hÛ†¹jIÛö‡xòjõÚZ|ßÐ-7%’|U¨ÄpY¸u1LŠy­¯‚éQe6[n#ãu^Ðz‰Álzá¥ÚÓ9}dÕTM\õ’T¦øt¼|ËÁÕ7±3ÈYã8³¤w!Yº˜OðŽI^çD¼„Õð‹šÀ—¡”¡¦(Ôì_RMŒu{ÙÅüÍ„¢Óm¼DèŒÛæ”饡SƒªD²ãm£;š¦‘ß¾FáJ¢š²@ m¾Ò£ÁÕªVpš_1ÞÆ÷rSÕ=} |Ó™ .Ú2                             júy·é-‡N, O¸ýñÓOæ*ÜòOÊuIV)1õf’Ýw™[I`ë¡ó7êqy¤–w޲>œV (‹Mêíh‘Ý}àΪÁ”‚Ö Om£ÐŽ Œù ”#‰•(Z”ÛÜ›G‹CO^‡s‡mwâšÜé9B>ò¥wDós ¬#Âêªi¦H›6\µ2ÐL•§ˆ\²@zDü¼g=}4Ô•ùÊÞ½lÛÔ‡dc.h©ø½Š¢—4Ñœ-*êyþ`­ÊNÛúþÈéû´$ºˆåɺkÊ^O'U:Ô^í쨮 ÃZp‰Ô8sÌŪræMu)ÈbÅ÷¤º8-e¨±J«óþ‡ªÜ{_ÔÖ© 4Éœ•¹*KßoÝ»ËG+B()(R:DÜQ{¶r÷6÷Enº#ó¤?(ßÝT–t|NwÎXn;Ì´¸lšz)§ÊUg Ai¥ž¬@s{Gå4cµô\›”š}·¾Ë<JO¹EÂUIr6’¡59.« Ãó--z1eÔ.¢e^“<i* PQbýa8=>ª:ºÚW’Jë;S¤K½7ÊÞæÖn;.V7C*“ÂfÖËÁ¥É¨©¨œò–ÊæHP.fv=#ĺ7-¹FI=FÒKla×S³Ô©*kjûõ5^ .‚~O«QŽH]O!—KKR’…’´ê&ä ÃmŸeG[OªQZrÓµ‡Týy9jÔ î_¹Î“‹â)”‰skêfJ–ÿC2jŠoèÿý7á´•Ê1¦ü#Àõ%$?Ä*1,JmlýŒ:xGJ/;‰ÍÎVÄ”æaÒ5뎕O'=-2õ$k¯º º7Vc•¥ŠÐ[r“hoƒ>7þÖ¢8S®eX§’uqTfiO‘Lý7=cæû[EëtÒŠVñ·Õúy(ê+Ø´å\s£Æqlv¾¶b¦Jàû:dÌGN’•ißpìv™×tºÚ°ÒÒÑŽ3i§^—_·©êМc'9¿¡·N`˳!-*øüs:l°©ZehN¶<¯ÑÍãÁø.¦=§G8ÝUaÖöëûàìµ õ£ªŸÝ¬K3`ø…¸ãÍLŒb¯Ä•%(^™¶d¾¢ÉþìÒèõ´zý*W§§›Êåí¹Êz°z2|ºþ§<^'^ª„•ÖO˜ ´j˜¢5 ºÇè½Ì)ªÜð¹ÐµµÓñ*©s'­Ö€b\±õ÷Æ´t£¤»`IJòÁIæÔ.Ö ÇTA«Nâ÷DðE[ 3«º˜›ôÿ®É\4%D‹ÙŒ žG!E((­©¢z…{—¼?Ãdáy~_´Ê “]MQ5–žV&öøÇÂÕéõ§ï±º’[þG»OQTWªeÄ:êZ¼ÓY>ˆ¥R¦LZµb¢µtÚ>‡³ôçžÔÝ%ý>»‹›®Y¢ JT’åEƒóÒ=ÛW©:IXá °UÏ¡Œñcó2R@[ž¤àü•zˆ‚½I¯æoãÑo"L½1Yõ÷Áaš[ÙIùF§ÿ(ÒËqÿxNü²úÆa“*©Wälð UE-gm6ë ¢Æ»Q…Q0j¬vOáÐÃ~ µHG³ÌB\;>­÷Œ'Y7èŽ%¸H¤¿¤T–ä“Ë´‹$\Žû|Yf̦÷gBù9©G¯}#ôn:í2>ß±råùsZ¶£µR£ˆ½RÒoË´~ˆðX•õxv…ªººžN”•®jBÀûŒq–¬!™2¨·±Q̾)àxjJ(ª™€3¨!IëÙ{XGƒ[Úp¨ýþç_pÙϳ?‰˜Þ$µ¦–¢e<¥¿$µ­ ý½cåjûCVxºúá¥Ú²S«q ʹ…u5–J¬T²yµ%'–vQF:‚Šœ—·^ñ†[îÍ"1ñYªTŸ›té~¯Îì·"DÕ,êCv$õ·[˜¾LÐ[†n32µáô%’“,=Æð~KšÉß¾GIç$ùt©N=Ò£çuOqšuèwÄé`Ú€mOßß4ä<\8Œ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ì[xæù¡!!Z œìKé Ê·Áä_”ñ#™«F®!vßÍ3ñƒ®‡ÌïÉÆ¦yß¼tgÓŽÄ”Aæ+¸Kˆ©ñ÷F5^ © ªìÞû˜î¨ã'G¢þBæQÎõ¼P>m_ŸoÒI.N3%ùo·úðÄð¿ùcÉÓ|‡³©ÜÓ|“t'Æ<53²ƒÅr‘·ÐÍŽší{¼œzdÔÒFoú@‹xÿŒ¥I)nÛÿg‘¼téÿ†Œëÿà ½‡x3(Ýåëau¬ÿSݹ‹#Z_9kð±þwă°ú'PÜYP{‘mƒq3Œ ¨¨¨ùPÎÏgã/f¶tŠÍ.xÄWÌ©TƒVÀ¥_Þ‹M<œœšØÎ§Ï˜Ô²x*“(÷IX?óF\°ËïGKÎØ¢t‚ei¾¦Ôê÷ó^ öX+ÔßÃnyÄÔ ò©‚Y¬•?¿Í¼ZÀ÷”CSqÎIXt¤%/«o^h(¥µ2$¼éˆqʦcÙ*vþ´R{Ï%£+æx†!*†jxjT ½lÉr@g}ï¬Y7óÒ1IÔÕìb Í&fÄ%á˜r§Ì'[ü›_Ò6+6ÊtœéW9s <¹fXQ Ö ·ÁPY£.y¢A›± ‚%[ŽoÆ$¢¯&–¢A/8âH! JOªu;Z#ŠhU‚³~&™ºÐ™w/¨…~1qBZ‚TfüQdqD’:jÔÃ[!ïZÁ„¬Ù‰^?½AOûâÙžìY·Á³h4‹›[, r›Z;’ÛŸtJ¬š‹mä»UJ&*ZVTRÜÈ61râm+ÜŽqå­D›¿Â,^BòΉçRŒEtÔr­,åI¶ÀôW¾"ÂɪbKΔ —L¹Nµ¡Žú±r­,D™\½tŸïDà×~DNt¬IÒ%I¾Î’ÿó@)dTg*¾.¥Ê–Ýt¤¿üЖv's!9Þ¬M2Ä™N.ÚKíEk-îdayÒrñË™)òÒoqo6ðØ©¾K¾ Y/¤52u…þʘmàÞ ³*a9€gáÁ6*³4IªŒ”$.q°K÷;‡DO¨o8ÎUÌ ¥Ê\ ½4Vs²IyÖ¶ç‡OmÉìóA*Á{ÉNy©tž8KŸw4)ŽæE?=TðÔž;å.ݼÑkaÜF¬ûPE?“p’þï6ðjÃvÇÑxP&¤*Jz%öþtZð¼\©ŽÊÄj*é&!§ÓèÕ`õ9å»–ñÍø:-’fá!iRBA"îOñ‹¸¶$à¡L©zIËs?WøÀŠëå ¯öÔ· ¤=¿¢ˆ«vUòѵÃKárLöísdƒTbKÒS/BR¤­í0s)»÷‰W¹Ÿmçh2f¨=šêÞ'¡¶©œ:ZGRJJŽÚö^(æ™ a3{'ÌOX‰«3Á²È¸ýf^Ľ¢IAIý"T÷±¨ï®‹ª}<œ‘u¡B勸³‹Î¦àÒI—Ln´%IP±¸!qôu½©)b?¹å]6J~/˜1ŒNbÕWˆÔÌ %¸“–m~çÖ>v§Q9¼³º„c²5®µZžís¼rvÙ¬p9"Ú4õjo»Ý/$¼Ò4½â¤–› T—JK{E¬ Œ/Rˆ’ÅØC eA pSsµ­JÕšŠäºxyâ%^[Â×GÀDâ Ñ­$dõ‡êÇÖé}¦ô´ûZûýN:½?sîCñÏsiú*g¹-!kNçùñÏ[ÚZºŠ–>þ¡hFŠ•n!ˆUÍ×QW>bŽäÌQýææ€~†ã2ÂèX?ÑKð1*ÊŽ÷ò9Qö)é{pÔ[á*>wTø8Î8î;ü¶d»¶„|Ör$ Á¶Œ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€fÍ{ÚÝ" bbàœ>jB­ ‡îÆ:iïe[žFùL7Ï êŠAúÄj™WIâÎÚi'†qº‚8… X¼ugцÙDüE3mÖ,jÌêlfJOR­í¾ÑÙQç“ðz'ä,eí[ÅÒà XçëÏ&6ö9i¯‰²O— üqÄGþîÿøcÉÒºž¾«z5$tñYØý†.ÊÎj-ìeâÙ§œ‰hrÔ¢–HÔÁInÈâÌJ̯™©²ÒsFZÅåáeÚµts¯69|Öß{BšÁR² |»™j2ôü~“ÄçaˆÓª±4³ „:´]`i«o½¡¹*‹äÆNYÌËÁ;+ÄæaÅ*W¶K¦˜e²_Q+fa¤½ìÑ]]-3 Z¾t§KjK÷7DÅÓ%fޱáýƒ\nƾa/°Sîvžéz}þFòs Krrßç´VbŽ%Ÿ¦•ç9ÁS*Ô>µF[Í#Kätˆ'¬û* )ÜøoHàc«I &ÎoÖnj°oü;ɹ§;ãpÜ·…VVÍ\Ä¡S%Ș´Iu$jQBN”IsÑâ7F»mÑ7‰þæü‡ŠûeÁêé\²j&SÍL©¥Ô•-)wТ;åW¸í­ÊšÖMÿÆ1Ý›4—#’³¨]íÒ:,¬ÅQÒ<9%Y²b”K­µè…o º;IRL賜€• ¬ž¾èÂ8§„%AÌÊÚ"¾ Ý<ûå lu*gg·O*#K,©ü(Ü`Ó8t t;î=La£QF=2R–Rt^WÙ=Û´Y ÙUhgò¿mášÍú<‡K$=6øFR½Øç#º+PwíÖ+ÂDú€#g}£¤VJ°8aÍÏhÕQ—Á7‘Þ-rfÇ¥¦Ä½€R{"^)¬+c¸¬À)0ê‘-E¸«’½:€{ǧO¤ÕÔ¤‘ÊZŠ8e÷+øC¨"n3VÛ,¢šgKX…#}ãêi{%o7÷ú¥ÔxGCËY+ÉJh•„ÒNJÀ”W:D²¶,5>ýcè~J1¥Øàµ$å¹ÂTÄ£¯]'´{tz]N+êfZ±GB˾ÐÉ^¬Z©s&’V :ï©èúz^ÊŠiÍýþ‡š]CoáØßxƒáþ^O…ø•m ‘UIÂÑÁ–„ê×5 êd¹³´N»¥ÓŽÅ%EÑÔmäá½8‘^ºqºRº\³×±5´‹?x˺£Q1Tú®_Ö9é>vïÖd’2eÿ&O—Œv’8Ëæ`›(0ëÃ79Žø]C–X{Œ=BÁÞ>GI*¦›r%CO[J±Õ³œ•+= ÖÐúcçpq$O”0oHÃÀ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ™ij#´U¸11oû"a½ÐIÓ¾Ç9VçþRäü÷1çˆH'Ì9¦G×ÑÌlï¦Õœ~yußNÍn¾øÛ>„ÑšlK† ÓÖ,Lê¬RH¤_««¼vOl$¹=ò–•gjаþÍYæ»sÉŽŸÊsÓYdŸ-ðOŽ8‰bÇü 1âé¾Z==Næ/ÈÈøé†Eø¯ëù¼Øë®þŸL×qòðWþ}±„ÛýÎûÿ'“´o¦þ3Cÿµ¯½ŽC«snÛF Þ^—« ®Sú?ÎѪlÖŸÍ’ÙáQOÎØŽ²&=쨎î‚ÛЩø´TsrµÝ]ûò&$Ò7¥üÕèjiÈÖ ºzöŽÒ8¼nzç䩉a4¾TPÔàXÕ Jôÿ·©iR„–Ÿ0Þy/·'Å£Ï<´ÿcѦÓ/ÔèˆÀê¿×‡XÝ}6_¨ÃSóŸÓÉAUMGÐéúU¥ZTÁ7°Œ·m¥¹Z¶®æ3³^rÅjðêy”4øMuTÙr’°¢%pchËîTiU»)ÕÙS-Êù?g,Ó–fÒÍÃqjÜC‚…K*¥6Ÿ‰Âd ( N‘¥ÉÌtŒäåI}ÿ‚v(«òx… úrZÄè'¨ÿí±åeË!¨&²œÜý"R>Ñ{þFão'F˜~ºÆcêm¬œóÇN'§2Iû!VU¼,ö9™Ë“ˆ i£]d„ÏRÙ¸ei w³3ïhªè΢¹dõ¯Õ~%`X¾J¢ð· ­ì.I^&£ÙçÌ%` ¦K%N/WR£GӴΓîUÚeøh1iÙÿ0O̘n^¦Î£+Ôª†E•$™üD™j)_Òqøºƒ¦û5ᨻRõ*O6³F€óüX©Î™ÊO‰’±ÏÉäáuª™óè©öDh…ÆäF½/õ_£ÆšŠJ^¼}ìXw¼3má–=Q+ Í´xn :¯âÓ¦YÊÅUÜ$Ì_ –:\†~­¢K9[ú’8¿…Kå™Ó¯Á¬¿£̨(ö4ªx¡çÊIú6øïåÒbÃwo#Qa5ûžc€9c SÂßaÌv޳8Ãs´ƒ¢BtU}ºÄÝ›y¦`f~|&zCÊÊé¸ëd’ðp<0霵6k Žñ3zÛ#¦øâ9”s¥aS‘WúPJÀ:R¶ò¨~±Þ4Õü'(É­B|±±<ÏŒø·3ÃL¿¨H®oÍåqZ$ÊåA Üå?Æ9iÕ'-‘ÓRå7²æ|™ãÙcð¢Ÿæ©Xqá{I@¨óŠ…ì’<âvß¼b2t¦ÙÚI;›ÀœGÉ&)ÔùÛDêiö¹É+/T²‡LÂêI¿Ã¤jI·Ý iÉ%LÛx…é²_ÉWÃh*©«èdáõ¨•U-bf²¤NYe€X’-Ú4õ—i#¦£<7‚Û4 uš€Þº„uúœžQØ|4Nœ¥^XóœÀHÜ ´ebGY+kèmê(‚-¦Í¿Æ4™ÎÎg*§%½¡lýµ˜Î8:Å|†M˜  „’ßµßðdŒœ£&‚¯7átx¬ïf¡W*]LíIN‰e`)Z•`ÁË›FÖ>ÿÙÕ+=-›¼mÉdê|³á&‡LÄ×J™uXÊé䕨”,¦t…¥Zµ"ZƒSÒ94Ý6mI-ß¼|Ê^$à‘Þ4a“'-< l^U<¢¹$¥2ÒµN¨˜­$ÍQ [~ñ¤©à­ÚÉæïipš ýPàU"§ “_>]$ýiWP˜ ƒ©<¥ÒqnÑ^ø2‘§”JK†Ã8 ^ŸáxTÌî±(KR‹6»§ôjÞ5©Í5k“¡¬éÔ¯S¼csžH§%©”î{¾ñ¨¿ˆ,ä¡| \crÈIP.î7åDez,&lp²}•¨‹¶Ÿ|Uèem‘”ª–%"QtîÚ·‰M6Â|z”›j‰±6ÛxB¸+x8\ùºCÚ÷–­¶YæMŽ ô,ûúE¬úEœž‚:,îG“3 Ãkëgpéhª'(Û襨·Ø=c¶ž”爫9Êj·.ùW¬k2§WÓH ­3:wClOÆ>–²æÕÍÒûô8K¨Kc£e òö(*u?µÌ ¹ž„(oÙ¾øúš=–žjþ´yå­6[))))©øt´ò¤!; $zG±EGdqm¼ýÿé"€µÒÖýñ¢Ýnd`wÅiÑÿ7>ñ÷D–„yûdžFoÅX'þÑœ/¿t~C¬¿|ßÞÿÔúZy‰B*V » ½ñåo“t€,ß•&í¶Þ°£éÕ,k I$ƒ¤·Öé¬ Y›„à˜µ|šL2²i7%TG~‚=}<õjFg4–çCÊþUTѪ~+?‚»h–…MÈ.t}?eÍüïïô<Ò×[Dèw"e¼) Dºu=¦TÊ–¥uë¤w©§Ñéiì¿¡ÂZ²–^ “.ZtÈB…~¨`>Èõ,#šVŘN² ÍÛ¼QvEšÔÕ¦0•?7߯҈ñõÊô™ÛBœ2桌Í:ƒ)·=’#ò1Ê=¯cW3È÷øDyØÔw1æ¦ä¶ý£rީХJÓ¸Øg`Ì„¡ å·Q[µg)|Ö*<É÷ÆL³s˜Ò>j¢Wü4ø<š_-ïäg2P¢š“eb}Ò­³j9Í>Ó¿'Ì[w¾­ÛÒ>aÀ|d@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Ù¿¢W¸Å[ƒ `Ó $,í¿”ÇM?œ#È)%˜fäk'›sÍ3xúÝ6`ß©è‹ø’ô9 ïÒ(³gFËâf¿”.ÚRôôüÞLoCI3¿Æoïc…©\þîâîD°o2ê–¬"½ ’Ÿ£¸ú·;v„•¥f´—Ç”Z¼.¾/\H'‡«W¹[B÷fS¸Ñ[ñnQ˜¬;ªëʘ“¥ƒpk4i)¥•2TtƒÛ¬nXG'¹Ñü1ñ‡4dÌxU,š*ú)Íùž&™“$¥”¥Y` ©öÜ”üFn8[Ø·ŽyÞ¿ÃñqS&8Ùèé×9ÄHJ™K;=ˆ¹xŠ=ª–áê¹;èÆ­ñ—:Õ§\Ú±¦¾Šn=dæT©žfîþ®="û²wšŒ ÄÜß„äšÜ©K‰Î8]gL’¹ÓY–,€ —Òˆ‹Û›C¹Õ)RÊ{«Sö÷ÆŸ–bEÓ +éÒ½-©*«ºo:CÉÑf‚£ÓÕ÷øFbèÛÞÊ޲аYJÉJÇÙ¥q¥±"êHçXBÔ„…)(t’[¶ÐÚ‘5>l;*xïâIÃ%bsª©©Ò”Sªªtõ}) H—ô€'Hm¯÷q·ä{ÉU©ž!ç™Õy¡9‡—‰­eF¢]\а’½zujÕ§UÙâ´°™Þæë4øÕâ&7ƒ¯ ¬ÌØšdM–Q4É­ŸôÉ))"c¬…8%Ü^'b4ç'É¡Éþ!gL­6bð<Ï‹Q‰ºDÔH­š„Ì`@p•mEŸ¼%Ë's[Ù×>gرùE˜±LI(ýªª¹³—gҢϥ/î(ÅlWšÉƒ+ÿ&±{–úqæ1Á"«sµ„é’•)ÁKÚ/4<àÄÆÒN6NYžÛÜCÔ’8"tM™b¬#)vºfõ¤eÓTÎ¥ªMD‚R´;õ Ò5k“œk’ùYã&qªñ>F{:žf-'V‚µM(+„w^¯/¯áíUÚÍ©>îóñwÄ:LÜœÅ+4â««C°™]< º4_ö=âJ)¬"[»²<Ñâ–lÌ8^]RIW£‰*Zæé:T‘¸hÚk-Ö çø½ž§ä1”ª1ªºœ7LÄΩœ¥½Zœ·×WHÅT‘ZÃ)¸#«¤bßN‡0¼n8Cdv? ”ùZ½Wγ,›‘?te|Ù7.¡¹©E”4‚“·~ѵŒzœ'=#Fqª?Ò,‡þyŒ5ñƒ¸¿©„»¡-¾ñµ¹Î8lbÁÚÄ÷Œ5ŒC ×Wºñ©¤Ðß)å$¤w‰–]Ä7¹¹~° :[ê ,QÒ¼)š©ÏPIQo"·ÍZË;M'†tÍ ê (ÎNÂ3èyû›ÏßäE<…Pë)PËkª÷ET¨«æô(_(3$9a©›ù¨Œ­©å6˜Rpô&f°Cù7Üï—¡U8«1/‹:h æChSlûÆ®žL%vnª…Ö·ü?ß*ûiœ.œ½:@/h+MšŸÌÇ»uÚ4—m_X,ÞeÉy‡˜™³4È”Úí»¥MÔÓGÙ½"×Ķ_ìã­7¤vܵ•p,1|J*M+&Êâ/Ó¹=„~O¥ÒÓwx­D-H”úªÒÑÚG=Ý#såÌo¤¨©Ã°þ4™2U>j¸¨R&ă±GŸS©ÓÒ¥7V飥)7Ûà²øI§fyuµÊàRÓ ˆØ+TÄé:l E”o´xúïh­’YÓÉ×C§ïO¸§æšDaÙ†»@dÈŸ2H÷%Dú:3ï‚—“†¬jTEö­8éÄJ}ÁÅãsùY˜îp/Ò‘q .=²mûó®?#Ö$µJ@!ˆ`ý#Èó‚Ýî%À #¯x¼¢þgKð³ÃúNŠ^#‰«\¢ÊXމ;…äGÞ轟 Ç¿PójëI:GSÀ0ÍäÖ¦O>¶./gí.>ÖNi(ü/g~=+ò=ré1w•Á̵ÓaÕö´xë$y¨L_‡xÂR5,pmÿˆ#ËÕÓÓi³¦…÷Z<Ϙ”“ŒNI.–=¹D~:Z=ï ­m ¾ÐÍ`±ßTYŽýc•ÙÕ ºõ»AÚAø'’Ü;–޲Üç=ŇˆdÝã‰TÜ»IRôiÑ(žÊÒLVbuŸ’,%â&…i¹_*Ÿ«ÊÍN¦ÊÌɺ¤zy%Ô?X¡õGÈx<‹æ ±‰@W:™¬ÛÄ ˜òÜm}ã@ S[ï´9ÔÍfÞ2$—p×€Õ¡ô_³Å¥`RN qÔöˆ… %eNž–Ú-p¸HA_1Ø´=@k~wd½â×We±Vû‰À9I@_0Ü´=@ !aLž¶ÞÀÙlU¾Á¡À9I@_0Ü´=@ •ʸ,m¼6’¤S<+4¨0ç¸,m¼Z¿Ò¶®›4N€ò¨ëØ›¶Ð ò¤ëÜ‹¶ð +ý+jé³C€ <ª:ö&í´(<©:÷"í¼( ÿJÚºlÐàO:†§f³m°WÐêâI¢Öv¨ó¤jg{6ñÀyÔ5;5›h=€š¾‡WúM³°G#S;Ù·ˆ¶“Ρ©Ù¬ÛAì–IJXêuA 8¨‚t=âZEûŒU"ZâHvM£qTóô1©±–8³ßTnþÇìz[ä ÏÎÕ£^‘óbË7íÉN}±üÌéFçLÇùfL3¼^Åæÿ¡ewúQæÑTŽÝC¶c|‰þ°‚wúgÿûyÑ­á³*øòi¾\Ó5øýŒ¥W'€ÿÿo&;éߺR|˜ÕUªëƒ‰]Ü–#¬Fëߢ7¹edaá"džãâb¿6¦[<2uâuè㇂£+Ã2•+1ø‰YêÊ·‰tkİI‰L·V‚RöUøÅô$ªìä|)”“=D¶PåÛ§H±tYE¿‰3Â'”m 7Ügµ‰)@ó%L m£-ÖáÑ&)‚®à‹e퓬&S©.TÍx©æ‚Óc?hÊxú—±¯„Üeùu5ÔspÌ>›\ʦukÊJ¶>ãÖ%¹»ÉÜf%ô¥eÀw=â§à­Ô²bâ)*“=;“¦ñxD—©Ã1¼:vŠÍAN¤e8½‡¯¬Gºr-\R0U5:)Ϻ¹r#¡$¤–ïë$ò‹—%Ù%V÷o WÜ)î†‰Òønqé¿‹ÐÓƒ°ãI %+ÞÛE¶ðÇdšÊ2ðI²Æ!-iE%AIjS†[ż<—ÚYôX—R ªŸí)Kƒ§RSgíÛ,®ßú¬KÙËÂ/$xGñO #™ˆýÔA.,J”{ÁïhFöüÊ©)˜©ˆ¶Æñ¤Ç»ÕNCù´Û´f¿©¥jV«lÍ ËC±Ý Õ,Ü/Ýoº˜ŠRE‰¼J²¨·°ùe ‚otl̳§x_O:«1Tâtòøt#N‹ƒ«•I;Ü\vŠÛ¬šËVòt‰«+3N‰kg—¾Þ±”e|4’!œTi’„žTyg7'œ’Õ??ù@1™íÍÿ*"EZEKá6øLǤB–¦%îÛÞ#YYF5:B%\Š}iÕ·h9vÈæ¼#q9zðZ¯Mþ”§HÓÌppºpÔé ëöÄÞV·,ó+Cʵ íÖ5M?^ ÕäꤜB¼=Ï ¾É‘÷=޳/Jþ矬UGlHkÅÜžã´~„ð»/?'ú*:ßäK«K¡)JÒ—;ñPÛ{ãæ{Zzн?µLõt‘Nu# x³]O%U´¦pú#Ä‘M‡üÜ~Œsž"wk¦ûï+ÙÉÉwééñ—|óƒÓÔ¥³‘µðëɸvE‡ÈÅždº9s§Êöy¼ÓHQr-³ZÑç×麩MÉÇ÷_©½=M(¥8¯‰õÔUùÛŸE#ƒ$ÔÍP:‰×Σªû8"Ñú~Ž.:1OÂþ‡ËÖiê6^¯öµ2vZHô¸ŽóùY„³±Â~Pé’ŒÛ\¡7\ÅUÌR¹HnuÚ?#×cW'Òƒn89ƳÐ9þåÍ›í#¨sb­!»uŒ¿,Ü'¡¼Hü‡£Q?î?øiØôUîc^ô>\þy}KZ«ئ=fZòvŸ“ÞEW•ë±I‡IÿÄåêï°°¬ù<Å©&¬Êž½zül#ðÛ>Œ·0AZ]i:Hë“IÛ äÅ›Ì\ ±Ë¶J“;,n tùnûŠÞæU*’´)Ž‚Ù½c¬¥yàç=ìjY˜t´©½Ëj“[…ÎÂgyŠ•:N÷šÁ)RÑ.‚VO”q ̯˜Ñ6b4”MÜ…Cú±‰Ç½EdßÑ3 ‘>°é“-) >à Ù£Ã.Ÿ†fZj»’7ò|\Ë“ ÙºRc¦eÇ$q—OÚûVç5§å™òüOÊÊ›j½J)Ô>Žg—ú‘‡ÓʇbòH}ËJJ•íºA.>ŽeÇ,GÓÈËÓc¿.²¶ßËÛ…3û°÷2îõ'cgÌ­­/ˆ_§ÑLþìO=‘}ܪÍ}W‰x Sí/1; ¿öck§ÎD¡\’Qx–æÏÕ[¿^Ëf1=V_w{Ïñ -J¦TÓ[¢aú¼9‡¯óbþ\vïÐÇW‰™oPüé€Üh™ìCðì¯M.EO‰™kQüéßa¢e¿³Ã6E¦Ÿ&Rsþ[ZQÃÄ5;ÌàÌ·ÃL?+'»bÌñ- É¿”>³Â™nßV"éåL«JF®gŠ9m+#Û¬Ÿ9áLåíõ/z +c²Ý&@|XË*˜¤ª®ÉºOeÏõ"ûŠÏ±yÉ4Ÿ2ÔÅ$"³Z¬TžÀïԉø{#…/Å®…) ­æm_£™aýHŸ†–æ–š|WŠ™PILÃ\Év'…2ÿ؇áeú‡¦–슣Ål³-_ËyJ5'èæ_°òCðürE{à‹ýme¾>ÕÌKiÑ3nï¢/¸[—ݯ#ÖÞ]¿çØ_÷!î=ÞPäxµ—J€5,:-ýˆ±éû/W§‹¾DW‹yp(é©p쉗þÄgÜ%¸÷k‡ÿ¾ÿ[ywÿXêÞEÿrá}øï×ÿ|_‹Yl%-V从Ëb4ºtöØ”³¸Ñâæ]·çØ™ýÈ.›`à•Óâæ]·çØ™ýÈ.›`à•Óâæ]·çØ™ýÈ.›`à•Óâæ]·çØ™ýÈ.›`à•Ó¯òÚT”šŽe; ?¹ôζ4´âÛÈôx¹–LÐ…Õè¯aÿè~ÊÓµd“¼ZÊbkûS‘å&ówú–ŒC§îXbZmÇÆ ²ƒ1F¥Š[W$ÏîF¿ë(ÓÒ¤˜+Åü¬f™ žÃõtÌ÷þ¤UÓ;3î×ouäãVZBF U¤rL±þ¤EÓ²½4&"übÊèúEU76‡Ñ3ûü8ZwÏÉñ+© Rj/ÍÉ3û‘Ç»Í_þø2‹™MRÒÓ¹ƒ3vîú#B³x'º+Å줕¥^Ño*•¢o)í䊺Vñ~£ÝJÒ-å-Rý§JT Ñ4¿ö ºf×raé´é˜Õ1e4/‡íVNÇDÛ·ô"þ£^éóö¼‘¯Æ\°Š”…O`¤jצg}›D_Ãái]äAã&XIRfOÑ©Èå˜uþKAôù KbKñ›+¨¹úBO/,Âý’‡+Ò\1Wã[Ö&‰¯,34̱ìÚ"¾ž¢E¤›¦ÉèRj%§P:’§ccmŒréú={–›´Ô„ Ò‘€)’¤'I×»½ãÓFȲ)ÓÇ$ \÷ƒ[1|£:[¤é¸°¾Ñ)ÙĆÏ.Ÿ7+úÁ_ú•ÒÓ2^•i>¦-à×(¤”OÕmÌ—…*]‡Q÷ĬàµDÔ”aSS/mj½Ï×ü#2j É„­Ñ›Ž`UxUE==RN”š™jqÌ‚àÛmz~¢D\ öuù›Ô„ ¾.LR¥0ëXíã¶ÅI–©AÒž½£kÓ‘TòeÑ”¦åL:–Ú2íǬÐà5‚£r½“îlÅ0˜BÕ­ Õ ì-;5ê§–µ¦bÇ:wWxÌR¡{ØJ¦”ÅÎûÅİ „KœƒåßW§hn•‹äÜ£'Ô¯+©ç» Y—£õŸHùϯÓüCéù_âüÖƒìï{4Ò ÌæS'³GЪË<î8¡&H¸:nKñkµ É-2HÒ­Lñˆ¨»e™jXPK—RH'Ý`z‚´©N„¸&åþ軬—ê`TRÊ3V­.§,\ØDy¯^Øš9a;Ü—ƒu¹{o#UHƒ%H%ÁV ?„¦‚£w”2å&/S.uÞÍ5d% á:‰ Çxðu½Tºh÷öZótuÑÒS—ktk±Œ7æÜV³ZŸÙê%E¼Å$‚w¶ÑêÑÔZºqÔò—îbQí“K;̒²ÐS·hëF6%“M(S›2…€î!–í*X7T³Jeªj&²ÃiåówŒÒºbV÷" )Ξ»ŒVœY®]pGV·–F†}ï´X¬‹¬YAñ÷›B@îÿÕDHb6K]¾¦çR‘@’:¿ï1ÎN™"“Y0´¢­FXÔµ7Ñü;ÆÝå3+ê¡Õ‚Ö#Ì9÷æ„r͵ƒ†JÔ¹IXæ%ù£)^8¤éŽ ‚Æäýñ¥ÇÝLè?'•§çJÕ=¹/ð\}ßb»î_OîyúÌQÛ%²–`M¬~€ñ–Ï 3.ZÍã¨<©•¤Ë¿?:U¸ŸLx}¥Ó>£K±+ûgNŸWÝÎ٬θœ¬S5b8”´hEUdÙèí©eC ïúm7§¥K„Žz­NnK“YºÜîE½Ohîcd*R¥(iS(!¶€mrgÐ%s‘_X¾‰d)JgÔר_`c”æ’¢Á§ß£o— Ü|ž€ðiO’)T›- ÷Ùt?ÀÑCæê¯–Ö$[Xõ™:KÍ8ná~1ƒNª¶§Á“¥AôÍ*7b6/s7¨é§©ÔCQl¯÷GxjÆm>J%LÚJ´TÓ/DÙo¢k¸ccBpS]²ØóE´ìÊÆqlGZ&×Ïã-.Ü© ·`;Ξ”4ïµniÍËsIRÉL¤êIõއ5Åîbø‰UO…øyŠŠÙüóx<1¤M1/³b#ÅÖj%§k'M(Ùæ|h[0€ÚšÝ¬#ò1ÂõGЖ^LYRx¶Ý}"Ý<Úf$â9IæŽ-SiP’É}"Äî`ÕnWå’S-!I$no“oèI&M42Éktdãv*—1+†P‚¾ o)ñZZúQMŠÒñT„i—?Y4€ÀiH»90WÁoÉMaù­Xu-@˜féá6ÍÖûDtžEºÁªQP”R•êF§Û¬ZIØNÆM™1e%JØiÛ¤EИ‰™5¥V#I Ò©î^ëT(8ëq§C°Û´NÄp~®ŽžX½‘& ‰ÚÒ½wH`Xm±U iP’çÏHJS3”lFã¶Ü¶*gÔ™ÅI›Îzé•¥ÚG%ÈÏ¥T  ýX´“mÐkPbðm¡^Ýî9Sç((-o©µX] ¢¢ðŠÝ‚§ÍV½J}mªÛ´HÅGb ™õR´)Ö¯Ax(*íà_‘Š0! -‚­³ÅQWh¨&Mœ­o5õ¶®QvÚ"ŒSÁmxj×1 IW•ÚÛÆ5Tðí[Bµ(6›|NÚvˆÚYFß/Ñ©Ur‚Këdý¤GHSy8ɦÏ{|Šrú°_ þpXÓQP»ØT©G¹|xºÙü]¨÷tªÓ“<ÿã ‘Q1«þ¿ ˆº ½5$ïÔu?7nÇBù`’)ó}Fd©:)pý.nH‰¨è_C yRQeЃÉå±UãYªn$£yÍr;Ñì’í´Ïžm²¬À6}ý#7”w7¹dkÃkA.ü;üLI¾Ôš0±-‹…dŒf·¨-Û•Q8 c¸¼(( Wï/&£ä¦\Ä”%ÝØÓÔ–ŸO9G|Tuéë¿â3|PÔŒm‹ SŽýJcÿXdz%Ý¢¥÷²5ÔâyûEfZˆK(³óûÄ}'Mààß%As”Ã`oü"=ˆÕì>_8!We[Ò,™vÀ“‚ÂmtÄàb™( &ÆßÑ=,ìU€ôï Ñ3!Ë N†`;°H-†¤Oê=cãÉoñMIö,»0«TÏ™©ÍõYW‰ì„ï_ÿöKûÞ§* ÑÀ´¡ZµiTÛGÚÙ`ñ:Ù •1);Çx‹ei7C’J¥\;}Ѫµl'Èöu ¥W/ÌÑQ/ÇMVµ-J³³úEºCèE1`¬[VéìÑ”ër¤“ÌÒ t¥[ú4Z¥‘v¨l«sj¿KDH,—¼L¿‚XOo¦ÿçˆü÷Oÿù=ÿ§ÿÝ=³w¡Ïú”"¹iÒ\ÝRÛGèž0xîÒPgp‰²H:¢Þ0M‘2±~@¦xX~¦D²*šn=ñìÅ©,üɼ=P¯stñ: übú”lÖSý`蔸ÿÒ}r¸Ü©ò4“¤lzA.çËA¨õå-otîÇßÔP¥Ø ÞñWŸ¢3½Ù½Ñ–¯uþÀ€’î^/ooßìJ Á…˼n©ß¡^ ÛvéÚd•7Ÿ,„35Ÿs$fé`ÌÃä¡u&L—©EÀ¼§¿¬¥F[¤^¼/½·0ÑÉZôk˜„»=Š’Xí§Ûi½ŒqÏ ¾ȧÃ2&F•y)$‚Xó-!þèù}KrÔm[E%qïü4“]˜•>TË×/IýT}^‘‡¯8<+ýŠô»òÝ~(bôy3Â*¼­†«Em^sXZg&`± (ãÓ¥¢ÔÜÚ8êÍ8RV·U©­™³ªÓUL¯(ÔT))1Û« Gètmn1VU§¨Üv‰ÝDÈúfÒG Ö=wˆWáZ‘ú#3Zå,Þø%\UQ“ == Ýä,@{ô‹[ø4ˆŒ½+p=üs¦•›R´Ld̽¡šZ¬þ}Ѷª*$â„’@Pè]ßøÆŒÍU‰R¥¢qʪ0·¥õ3ÁŒ]ÛoX¥À1Øž‘n…†Ì‰Èßq Ô¤9ÁRð'Õ¸ë˾7/!wý£÷DßBZÃãêbÝ1\Š¡ÒÍ7±/†-:C˜Êý‰õ-²zEyVG{± ¹‹¸«¥Ë|c8íôÄt€cYɬ¼ I IoHœÑ+„!S¥Ý‡xVÉ„©‰f`ö¾ñrk<ŠþVæ= 7µ±+q m«¹„s±VEµ™.HÙúA*dú¶—û;A=ÐòÌIí·¤.‚Û¶›û¢^s±Rò†ê¬W€¶ßp÷÷÷…•CÞaWC”#¸™¾12ŸÞÅØQʆgë îdÝØƒÈFÝ[ÒË+ÜCt€ûzF”ªï³¢I]öŒ¥ºdXÜK3ºŽÑån½ÕÚ,©«[ ñ°‰Ý=»Ä–Í•ò ,ÅŸxÓËh¯,Pìl:Ærùú‹nÝ¢¤ÞQ+”(°ëÚ#Ë¿%‰`lñµ¿rä_XŽÛß¾ý v Ir6&ðÆè6·( ±{<ìG+Ø [{ž‡Ö.êî±êzúAÞ+b±Yšïoº%gïrXÕ€áïØDímQS#I#gÚŒy.è AK ¼FŸä,aAgmÞ9-ˆRFâ3L –pâÑký(•jÉ‘ÉÜsF–^0LŽ) IaûãirDï ¤ªîm zK` Ü'ÊzÄùi¾ù3j"Çî…vÒ[D s°nÑZÏõ/Ô.ß ƒ¶œXo†ÝÿV4ÐlVIìc9²^EHNÃr"¶Ì¶ÇhAß ´KhÍl! H×ï‹’Ûc¢Q‘ÒÊB¹Ó¨{âÖA,²™kÖŸ),OoHo€ý ¶:[¤”¹ E÷м¤·[—l‹K£Å$ÌMˆRKzº}=#¤nš%Ó¤zŸÂÿhׂJ¥š­3e  nR5>Ÿº8ëh©SYûØôéëö¡¾#xÙ—0¬aLÍs”ßDÓs'¯ ô/´t%wGMmxÕ&y?Ä¿ës'2ª­\Êf°³މ«ŒcHóKQÍÛ9´õ³¥QóÛu’Ç$j7}ŒÅ#mZ¤X²É?6ÕËäæø˜å3¤êE«Â–ùÚ°©:ú*#ô$q‘£ñ{˜qd d­½’a:àÚøŸ¡^¦›ôz]C`ûÇI+ÉÈ•ZfìöÓ¼G3^IDà´’6;Ac&{Rh›¢¬ ‘.dù|1:H,¸.“±·º'©Ñ¯&µs)rá…ûñj¶Òæ±HR˜­¿¬>„¢ë’”UÑÎÕÍìè”mõu‰Úgh:là oñŒ§Fvy(þ1W{.Có(è÷òª-:Á®×tŽu‡NÌä±ó·kEÙ¥±gT%+ÔÃXI-¸…XŠ­‡ÒÎ+œP9œýÑÀW¼¥©Z K„³¿Æ)ª­Ì5ÍQ I;XCÔ+¡5jWù ÛX S£m*a^Z®V­£èíÍ«À‚øŽÕQ1u®w4ÅmSHìê/`*¦¥¨DÔÞ^wîCA;Ê9·Há“j•[‰ÎŸ5m«MÛÑ¿„K´YªŠ$7LÒáÏÖGoŒZ1á¥a2¯Ìÿ[´+&«„:¦a&aúªkAo‚5(…,£×¼-ri;˯+hsDí͹0äIUÓ0€Sï" ø VN£á‡Óà5ƒÍÁ®\¤ú$%,?Æ2°èë'•FòxÒ•X1ÓÜÃÎ9â-zª³:©¦+L©d†nÊPŒ¼:ä´êÍ~´"HýoÖ=½#¥y9Õ…«QS±m v¢:ØY™„ÓÔb5²¨éeñ'Ì"Zàj$€{ à°Fì“6`Ø–^Š\R›Ùg*XZeëJ¬Ié'¨?dMö5Vj¢ͳØÄmIpf™K%žq²»EIMSصgJðîi9Ú¬&É£Z{²Ñ™Rm;+芖”LWf¡úìÏð‹&Þç=öÀ‹”•¤)AHŠMloÉÎüz31$ª[jt?죬"®9-&’7xJ¤Ë¡Hm{Þ㩈ۼ!”RµÏ`CérzÅJªÉi¶lç1Â+4‹r~øÌMJûN!Ä›Ù}GX$œ½«»Ðv’láÎþ±¬²] !z*Båò¶Ïî‹(ånV°dέªœ†›0«¡FÑèÕÕ–¤®Oƒ NÑ¥ª^£.Ú’RDs¦Õ2µ{‚G]ú·¬G‚7À1,ä;¿Â*­ÅÐâ[¡ˆf…X< %LÒI.N– TJDSTêu\»Ä•»6¬—¬©¤RÅ<Ý`½w÷Æôµeü8I«eDéAkp¢æÂñ†ÛÉŸR(;{€‹ˆ:&”´„ Ÿªî;ŧ¹=̘V†[“ÐÃ(¯Š%I+I*o^ÐÙ‘R!ŠÓØ¢‘gq6Œí}â¿Bºàprà Þ%YžÄ´Òå ¥kRH* ÞýVäm±'…Ìš €Hs¦Ý"/ «áÀÄɘ h>¥¢òVì%ot(·¤T¹"cJV*Ç£Å-¡èB™œÄ’Á±¥º õ‰#¯hËOe÷êGb“Ó¦˜$Þ^öD„IÒ “ÐÆ÷µµxC®Ì<ÇsÃúéÓ{^ñ»Ï©l.¥ãhÄk¶ØÙÉ'öDTÚ¶[˜_XQû:ÁcŒU˜F‘ÔuõŠ:"ýÅZô‚GUm>x"Æã `¢=*I¤™¤¶LR!®Aï~Hˆê!Æ‘eor·JùŽ–p@=;C —,HkZþè[[¨XïåéÚú¦ãX;‹лY5~@lì_¤\¬tÄiÒ¢À oM»CIí·Q.RòÚæÝ=!yõ:=#M§Øö=â,e‹§IÔÅM½Åã u_õ‰qJÐo]ÉëÖ+øj‹¶Àö$tÚ3YIò+È5é>X‰7ÇU˜û£rq͇@NÅ;~è$¶–áz‹` ‹‘Ÿ‰“q$7xÓÄ­ºx$BIu% )OÖÂ#M«FÃI–Û{Æï&›ÍŠ[£}¦0þ"o@bRv!â½½CÎE»o†F*yz†ëD»¾Äìb4ø4!Ü:ŽñpÆdêØ³}ø¨¶èF!l6?ºÇ%¼1ÞÏ´7WÍ Å{÷1”¶—‚zŒW7¡=OXU¤]€oH7VËt;¢\>ñ¬Ü¨žEAk¶ÍWÁDÜ9Üýо×H»È þø4—Âö‚† ' ‰v’—$vÕ<ÖéÒëÕ‡°éHZæ€Odán«’7fªj¦“5Wêáž4ët0ò†‚ä'±pý¡ê*²;”¹m­Éœ¬ QÙ˜ˆ·Ã4—¶Àr‘˜}E'èÂXûûÅÈ¥¸$éú[ …½ˆó‚S2IJRApT{÷â‰U¸éSô,„’”jØö‹Á(ÙÓb¨“§BÈ!.öow¾2àÌÙY’z%¢z’“Ít§x²••`Ĭ­Ÿ8™³TV³æd‹Æm³*<j…k𹉠Ìðô:xLlnÞñÞÈÒð"B6xÓ«´Y\¦T5)òùy•±¹ŒI`Æ›JVY¼+c]\´¤…§‡¥÷ÙO^¥‚¢£â 㔀Ry]Go"c3Ú™¸*M3QNÄH=má_')^ÀηQl•É{ù<`²3'‹øV>RfÓÏã}” úd­[¦û¥â<+5µE£å¥W9 `¸>³£ ÁdPKKD¹s&¤%÷-Üß¼f ²ÍN›¶qØÓ»9ŽÚÛ¯O|hÜŒqJ0«ýÞâ0¶gHæ4t‰©ÊA!Zƒò½ MÕ¢ªÙœÛÇ…‘M%SoV\$¾“Ÿa¤&Yî/Kbj|Öû;?HŒæ>†zäVÊ(¹k IØ‚â y `îß*Z4b~dLÔóF ‡á³fupfL!‡+_ߊqm?©ÞoáM Á·ÕÅÊË9ÕdiºÆ­¢ÇÖËö‰$eÊæbão4IW!¹Úiô4ºI°÷ÅwÝ–u–ù4ù¯—.Ô«RA:X“·0Þ5…/‰`įò8fu¬¨^јSttÖÂIu*_êS¶äu‚G$¸!žný ¸ðkú ¤{þè¿C9OX…—hÌ÷TZð4]‘Z©6rgeÅiÅä>ʘÄE3%mkÂ¥®V‰(B± ²Ô[wJmJÞ³â(ÞÍX43É0RRýCY£i[9ºy8.pYVnªwý:ÅÇMf%fΑ_·•Ð0Z+ô<ëÔ…Rç¢ZIZ€º˜GgfÖÇyù:øgâ6ž2îsFXÅæáÜjj½Tø|å)rxˆ˜éti.‘bíën5MˆÆX.ß,Lâ7Š> Rã¸^VÇ4ŠSÕa³R±¦dÕ}DÍ0uïŒã]‹oînJRËG•3Yƒã•˜V!!r*é'®DéKI JÒ¢•\âÊ),±‹+дn5ÛΙá¨|÷6R””ÞrÍôj„åº:9füH2Ò€«)NèêŸxéÓx9¥J@$K. ˜öá»À#›xó¤b´ä¡IG3$î,ˆF餕#{„£BK¨b·ŒÉÓ"IÅIÐf)`’…7ó`𨊬ÚL „VÿS}÷‹ ËÁÂåÃç¹ë.CyG¨ø¼×ßædX1·mâÚ»_è¶HmCâa¾ÛËPz<8&X ƒb#E ÜñŸBn ²™íë‚î‡D24›úmhÑR #K|zÆIÍ.Ä [4"Eœ°÷C `ßWÛÖ)(sr•ÝÎñÈ$Wè rJTC³çh^ d‰ !KP:‹1=}Ñ™¦(A”ÁǾ Ô!°(ºUnS}­¼dDZ‹@™rÈ% r¦ú†ðÙY”1)$ãkôŠhxSK N·Õr"%É2ÅDŇr¦{ß±ôŠ8%3€î[q³À/$S¦KXb›¶àuü ¿`ˆHFŽºŸá”`n{ÄÛsiðƆۻ™Ný ;t.ZyS·W;²D9 úM/ñ?Æ.èâÄöë»ÐAÊ»¾+w„]öˆè!¶Ä´öƒe‘Úã’/Bß°‡8*ÎÀ^Êß»uƒ§q¥…îA;ßqvMZ©kª*”);-´G±±kÃàÕùb7=æ*Ûq~±wn‘8²p"Ó·^±SÉVâKû¢Wß÷4-÷;~ÏHaúÔTÀÜÎwh+ ]žÌ>øRüÙ ¶÷ôü ö¯¿©=Ô4ÜúÃРA}%Åîñ}Lß"gmŠŸ>Kê)w¹ݼf•`Џ{ˆô;Ei¯¼šØíc÷D\.B=ÉÓéë'´H¼º%Ø÷‹½¿%õú…™ûí¸àU]À$ÿ©»L‹ÔRyƒ·¬a;M¢%Œ•5räªX`»úFÞ^I» èOx]ŠÈ=™ˆ÷ÿd /¹7ŠG€#f}þÈœ¨\–ßê6È\昼¿1N’†¾§{ìJå”h;û¾Ø<¥A¡}oü"²´®n»ÆU¼¯!è:wíÚ·ÉFP¤ô}£.ïìlÛf#´j­àÐâ ˜íÓ¬]¿ôez‹ÕZwèÐW‹'‹ t¿Ùgžb‡-`ÿº#®é .\øE¤ësB§ÌNñtÑÔ:DÕJ˜… ó_x»7€Ð“¦³JÔô‚Û„©µ÷=="6ê‰è€£w x¶ÚØ5h@Ïn±^Vx4 B™íéÖ"i¬“nC{ïl2Ã}ËÆ[ÏÐàc¿ßÛª-6 'Þ;Áä49Áµ¢äËfE8B“¡d»õ…ÑŸP—P°å÷ÕÒ'£+"šR©Ä¡<‡`ÖC äj³îÐ^…OÀ€(Ü‹ŸóxR[³` Ó`©3q¼è¢ñ™x&—ÍÜ‹7„ã‰:ªa'›CÿJ5dŽOñH楃¨mÿ"c˳¤9£K%E)K;÷Ñîs–â’9™œu0~¢¼›ßs=fQδyŠƒùE.½¿ÖBv ì£Ö2òˆ›YE¿å#™ð<å_ãø\ÕŠÃ…SʯBÔ‡ö‡˜¹„’YÔ.¢ýá&Ÿ“™1nŸæñ²Pô»‚—~‘’ÿáúµâŠÔÍ- ›»¦"Å#µf «’ÆÀÄCƒxî’ªY$ì7åýð’Åš‹Êg=§,„  ªÒM™ží˜lÄ–Ý‡ï†æcd¸T¤Ôbtô꜉›12ÌÙªÒ”9Q=ê`Í5äë?(¼í†Wdì©’ð‰uxvFª¹éRTW-%¯J’¦) ‚wŒ«–æUy@÷¿x]þFUØ¿xÕå¯fó *VTÅÒ ~…Šºs˜˜Yd‚ÉÛd™awßHÚ#^MOv.yå‰öOÕ}?Ïƹ"õ8ei«¨XÆ ê쌉\’:ÇEèrCÀ’6ôÚ3}Î,àìŸ#Z¥ˆx—ìY¯›ŠÓÌòe•6ZTÓÍİrÞ¢ ãá•g5ñ^#9WKÂŒ¥Q§‡Â2ôéW"_ËmßhËkµ'¹ZàÒÀ KXõx·½¹3ò뫦 JI K¸ý¡UY2u _æLA*}?8Ì:}t§¤eoƒ¬öR7µDpf'f²¿„oÔ³ƒfÐFp­êó׿éÎvŒµ›4šìpyHH¾”…Ö7Š8$c…)R¤(‚“¬n=Ð[GiðÅlïˆç ½”ëóÞ)…ám5´â“¥‰Rµ¢[W¤2IèÁ¶häãèÚ“ò\>Vùã5ø{žé0Œ£â¦9ŠQO£ERæŒvlÕ%j™5%/-I2YºÆ`¢óF¦ß óF=ˆÖbØÅV'ˆTL¨«©š¹Ó§LYR–µ(¨’I$’I.b³)Òör zF£&–:_†ÚUŒÙòÖR¿®‘Ù êcSºÁÖi%ƒ£L Tµ:ʦÔMþØ–¬äÕÊÇÍ)›8Leª‘aeD¿?S›xæqN&¢N· ßdEáPþS{„„¦ŠZJÙžé67‰“Zn‘£,iHW¡ˆéZ9å›Yè#¨_7>–Õ¹eB/94—Âpù)XB–”·RZ*Û&·hcª»¡h¶*t8e}ûÅîF]ŽÒ{œC¶†P¡YÎÑ¢[„ó2Ž–¹xÉL–ƒ1! Zê;%ÉåØ÷ûâ쀡(mL½z\žVˆÌˆ¹a!ÒAæÒOG‡/È @Ì ;“h–D&‹/<¤÷÷E4ÀËåIÖ‚ýhw¿ÞKûa¸”K—ÌJ¡õUpbU༈eÈ r¥i±ðŠó¶â±`d¥7R¼¾f?dVódYt<¦P–F²Gd‘x ­ð9)”¤Ì OMGh]¦E1 ´êî ¾0¥ÁiØÙrJ”Äèwƒ¬¤L•)k–“¨˜Þ 4(”O9R¥íó€‘,Ð §RAèxˆv‡³©“1ÀH±©…ª)¤ØéV•êpÍ@Š’¶e\ÕïÜÂÑ©*J‚I,Î}}Þ°[•!… ¸ÖÎâ×……+o"»m´&…nAìD[á–˜œ%»è.×·H˜ª-ð*%«a-]î IXî üÚ û¡dàw éIL©…wÔé·¤Em„ÀÊèæ?ºÑ¤Np*å$Ì´¹¼?Qx‰:·¹vJ[eÌÕÒÑ{sD¡¼)Ÿ÷jû"xSøjû6x…0Ñ©½Ð *\Á¼µûš-&Å2&”þcµâVBI™f”¯NX¹Ò_„¾ÞS¼A|hÿu0¹o) ÄT©eLo,8*TLÀm.eûÊð2Á2¦@“0¶ü±XÝŠºyéRBäLK§PtâK#d'iQ–RZ VK²ƒ402V,þ[C|“;ŽD™¨˜™¼؃t–0D¶:¤Nœ°¿eRzr €}a^ ô#fês!~ý1Rèh”°ffñk„ZlUI™¿gõwŒ¬`ŠÄ4³Âu ‰ìRb¾«Íi§è$I˜GNS Ê ^GYâü §¿)x›ªØÖ/²Oÿ¹›ýSÂYÎH‘:Ý’cI⊤ÃÙ¦¸< §×Iˆ‰ÝÆšprdM?Ñ1€ŸšIÌܶ¿”Æ»¼ŽæÃÙgõ“7wò˜‰’ÀÓNw&rL,Xiý$ÍÑ1E‚©ç¸< »ôIˆ‚M<àM½›IŠ,OgžTZžnÍtxSTÜMþ©ÿ-¶/³N$54Ñ×Èal–ÀÒÏ*½<Ý¿PÆR¤TÚ@ªJ€?“ÎA¿¬ÞFû%A‘1½R\F]²÷ öJ‚¢òfúò˜Š¢°;©‘CS9` Bì˜l¨ŽU„*é*e¨ê¥šé ¼7&âiγÍoD‚õ êÅU4çdÈ~¡& }ÒÎÓüžh=A…‹ò4ÓN gš=È0ºÈ·¸ yÅ¿6™ýC c>CÙ§‚ÆšiõÐbý wÈžÏ=ÛÙçoú†«(¾Ï<4Ó>0üÌþ`)g“iCtÒbQm€¤¨ÐMmü¦Y'pª¥žE¤Mþ©…1¦–¥­!˜`×re¨úÒ&µ’aŽ ÝàMDÊZ¹’æ¥aAÅöŒÃrݤ‡¨°o^ñS£šÀÅ1 Xô‚«W¹¤Ñ‚ã8Æ R©øN%YC8·ÒRNZÄn’:ö˜v¢¦Œ)º–·˜J¤g·6¿pŸ£ô` b¨üNÇ96Yr[bR§hJ¥À1bÝ»gVð´,`•Ó KL­™1BÊ)b;ˆÂÉÚMé€L LÀ ›Fë9­Î'â=Ê|Û:iAZ”AºÕª¦Xá4`)iS-$•u÷FªÝœód$H ÌÞ±6A"dÚyòçSÍ\¹ˆPRf!D)\FÄE-Þ严u~%P'WÖTUÍJtÔLR”͉ésöÆR[²¦ŒE 8{Z'mÛ4˜! *`}Ö4—+qhé>jÎf… Òä7WG2¼Fí3n]û.z•• +†|ªWXÏ"ùc¤„PXómèÑ¥êZ·Lç>< ŠÄ©æMtžg¥‘+ å³w… DKR){·¬aż’;é”&(R‰<“êgâurèòôê¹äi•¥¥ž®¦°>øÄw¯%{Ê\‚®›Ú‘E@w–e¥·mš4­Œ+–ÄŠËT|RCE¡{„ʃ|!Å$6ÜoäÍ ¦)~ÅF›L±oºªÅ=¬Ÿæ 2 S‡áá2e þÈÖÁ¶H¼¹D) ¤°rxC²"|Q—iTÄáô7ÿ„?!õòv’àaôVÿ„?Õø jòå8æ S·8>¶ŒîÉÚïU—é’ÀÐaåÓÒPßìm¹R`rõ7þ¡Híåá /ßhËÚÉC[¦. #nH–,{m´UÛšYv•´Š&)±2ƒ¿Ù½/,S¦ZµRQj)·Ñ†ýÛÄo*ÁrRÊCEf¦Pݹ/–>nZ¤Ö h©M´±ou¢Šo"¯,Ò-žŠ•/ÚXm¢&ƒæÇËË4ë*P£¤:™ÒeÂf…•è2ÑGNßUFZ_ãh›³T'äÕ"‹{ ¿áýÑ]<²UŒ9fI/GH5Ã>m$V9Y^‘S8Ч¦ú¨„GèLr,¬¹M"Z’(éí¼°ãÝh¸AVÁ/,Ñ€”ª–”¤=´ ýпÀŸ“4¬iiIÜ 9û¢Z²àyËT·ú C¶Àý‘¢2#–)ø ÛÊ?&‹ß“t‰-ÀIK]"Çì‰|•òÝ›U<Ö ¿} ‘kÀ£,Ò *L’_õC|mèJCU–è˧٩Ýõ¸@ü!E¡?%¨‹¨ÓÈoTÂàTez5_%¶<£ðÚ Ô499Z’S"U»¤;}-*ÉzFý—õHü"^IÚ…Z—@<Nzé û¢ÞBV ÊÔE)•$ö:C~è$Ä™–©@#Hìÿº…¤0åªp°8R\õÒ?¶OQ&eºtNA+GS¤?ÂÑv4¢9Yr™KPöy þÊ~è·±+(Ë”cR ‰*mÙ!þ†áÅœ±J¤…ŸÕ#ð…ùƒ¿&©Šm*XUÒ?x&ÀŒ·J’$J#õJCþ膩] 2ä‡Q$^ìR-÷oZB~MS8—(1»¿}¡EíC&åêRÏO+vp] ÓàP~NR”¸“(_MÒ?/RÐ~NÓ%`&D¿VHü"m¢·p kT‰k)åi‡Ù’4†œ¹NHW H×Ð$uøEÃ% ¬·Jl%ʶîº"- V^¦á„pe3îR? ¡°¤*rå8)\µ\aøAù¹j˜©Œ©@’-÷A¹B~LSLZˆ“!«ÊýÐâØ®PÙ™b2B¸2ÉèÉ û¢ò¬ŽNZ’¦ä–ý@ðŒ·y9nHÔeJOd¥!¿tW‡jÜQ–å”2ÞìBw÷Ú¢˜JËÒôRüäÿ„0JT1yvNI–Ÿqð‚Ëɧ`rì”Ë)áÉ$ô`ÿ CP¼!_”%(ð¤œi¸û Ã\Š2ä§mßw`ÍöCÔ´)Ë’RÄK–Kö û¡È¤9YzR”$È b4ï÷CmÇoŠËÒ‹ž°J™´†ýÑj—å%L$Ë.’‘o]¢­‡hÕeé@· ú?á Ñ'e—"JC.Ÿðˆ²@à ’òåQ°û£C´rp A'è%î9oû¶Œ±Û’Uer™(©U+KR‚uhåîÎÑ•©'ó_‘®Ò3‚Êu•±`é½6¤¨Ë‚CU—䨥FJî‘øD¶ÞŠrü«4¤PÇÝh¯c¶É„©!)”~d‹þè`v‚°jT´(«ë(\}ÐÛ ­*9~I A•,3»$?ÆÑ^VvP¹–†°„ É$œ·'ÌS%A=û¢n°k —e8]:Šz6þûE¥tRV Ër’xœ9Dt ðˆ²­†–ã¿'e%LºeÕBÿºÇeì$¼µ,ê:)ÃÚâÃÝh¶(Uå™iP<9%ƒò§÷Úl T'äÄ£²%ì€zmØ VZ–§‡%-rT.}6X¡©Ë(7(–ÛX„E& Ë’åÌ?E%^…?áHvذêä¶ö}Ðxt;œ®•%-.Cìà[ãmáTÇo 2š_™2oÕ¶õÛh­—µ¬¬òÊeû…y•×î†ÄQrzVÊáÉnš†ßÙŒÝn^Üà”Òitž«„jÖÄI< 2‚Y(¥sÔÝhËc¶ÇÊË* áS§ú>-)7“ å„TLÓ8èê«}„C¸S«7R)Ñ'L‰RÂP—°=âpZ_‘£ÇpŠZÐÓå¦`ë`{lãÒ7,†È8w5B&€RC{ùbc`·  (ÑŪ-Ô©?݉NŠ«z2(¼:£©©LºsY6zöØ’ÃÑ/´fsŒ#Ý7H(ßÃ_ üWÃI8tôI­F%(ÌH˜4à¿3ícxΖ®žªrÓiÖ0YÁÇF2ò€Ä«¹at·ü±ÕnF“BÊÈ8Q[ªmP }*O÷aDXرåœÁ’M$²©Š ÇXN­6åÔµ£4Ye`Ù,(ÌÔå-aêcK ŒìkñÊIu”ú&€ ¥i/ÞñVæ’²³S°ù³•;Tô+ÌÒÊ@ÿ–3DIìFœƒ†›ª}Vïu'û°ô*ðÑ"2P¢™µlu%ßÓ–)rMMἪ™s&ÈF#5¥•ÍRè@Ü–M›¹ŽRÕÓƒJRI½²kÝ·²!üƒÂˆN‰Õõ”–?ÙŽ©ø2¹L°²€ó*nAM¿³ žM¦“°ªE…ë©=U¥Iê6ÓaÒØ©öí¹e˜%e=ÊÌDEœÄÅ©–fʘAkÁã`½ ž)”ðúéÈ1*J‹¹–Íï·¤NlF/(ŠNFÃ8|Êžv §ïåŠÞ0‘𵆠žººlßуÜ$”„^FÂÝÊêMÿ³M„•dYYs ™"ªdÃåJt’¯w-àåJÙjÞGÖø}GCR©RjdÍCj–´€ áî {D†²Ôth8µ‰"L/'a²ê™ÊKj)åb¨Ó» ’à¶SJ“MO*ššReK HJ@»7H´‘7 ®…œnGX]d¥s1`˜¢Ï_íj;ß©°~¤¯&©9 Ü®¤v%.Uý] ËȪȘXBJWPån\§oêIJڳa‡øRºù ¨¡Ãqj„jÐW&N¤¾û„oq5zÍ'Z“Š~­#QÒ”²£h|ÿ+$I\ɘ68„!%k˜ºr@Þú6Žqëúi5©ÛᢽMûcV¬‰…¥GY©&Ú´ÜÿV=—N‘ÏbZL‰…ÙZê€ê]6>œ»EO4)r[0\Ád­r@R›TÕ¥:ÎìäÜÆEá/H*QJ]ƒÚ&Èn1Z”4(–WTô*Y/6Š'޳j¥IJeÍBŸéVØ#¬Hü¶7W±¹Áõ™ RF¢A}Ä~¦¨¤ÌUR©l,üT÷3CsòŸ'T¡$8ÒÇ¿:wŒÁàå•ÐEX¤³¹_[˜×ˆ›RO©Ã_¬F©?¤JGm¢xApÌ£E5T)«D±Âã | ÝLðºG/{þǽr°ŠåÏD­)—®XœU0” õ6°õˆåƒ‡ã4Ô\¸N¿?BJœ¦Y—Á"­+X—ĦQRBB[Æ-«¢C¬„“îM?\`‘Yz¼b²°áÃ3W(Nq©’ kÚÑlÏã´ž›Ôá:ÿÁ²° 枪tÊÊIH‘9rŘF¥ì-xZl>¾ QŠO)lÉj’š}:Ó8£«f´;•%Õé÷Æ1ÍßìdaxÚÊY•¦’T¤Ì2õMYÙûAÉ#–·] )öSn¸É‰7 «¦Ê‘'Ú˜”¼„•}‡ùx·ygoÄAAJN¯Îþlª«Ÿ2JЉj):’C¶…æ‡â4û”\·1·³Ÿ¾SЯaÓ¥€Bƒ’C[üï °W¶ô©]dƒþw/­)a¤X_!Û6Øv^ŸY†M¯EmJªQ˜u€’CE{Yóõ}¡ =Ou(»ú±(pÚªÕRS,É’JØé,mÚdÔúèiÎ:rNÝ~þGá Eu9«•:šB3†¡=E'Pöõ‰›G] )¨4Û«Á4ü»ZœR’O–bªuèZJFåËEN¬Ì}£¦á)Ó]µ~sùšü"‚}v#.‰‹S±[€,OðŒ¿SÓ­­7¨ø2qLe$±®²–v¯(“1ÛßoX7o.Ÿ¬Ž»}±i} qP™fǯ_„i¦{ò*lçIqЋD¼çYŠ!@?l^mQ“©fXRBz(übGz%âüæær¤Eµ¢½²*ˆ Tœ^.Ô!)I%¬w1W¨¿•óipyvÚ"Èyv $0Ô÷·Aà-„q¸6¯!à|½ U¹\7SO`ß‘0 9c´ðÅSÚîÂ' œB ’z‚ÞïXm”/‘ˆ[ž 3áQ\ÑsS)‹¨é[Æ[Q¹2¯ûÄzzüü"Šª‹Dš‰rjeÌ‘-B¤ê– 5ÝýcóžÌ–ŸQÖjëBR´Üsòîž>ö=ýD\4£–iúœîISÝ ê/¥y< ¥¸ùd- ‚D*ž \x Iy¤y@ï°‰,‹{±¥&ÂàžÑ²í°õ8°f뜑áPÒu©IO)ïêTí¦Å}EèrgqÒ“8¤=ûD{YnóäDêJÁîÛ˜«8eXÃ'R‚es48ò·X]d‹9c&”‰‰ZKíªH‘S¤Y)¿@:à %{Ø€«Hnìuoî÷CºÙG† $7 Þ ¶e㤩)%Üjï<(@éÖá÷ÿ;ÂÛV[¥0K jqÓq7É’+šÉpwP7ãÅÖEJÀÒà;ÕáêWb®bܤ¤îGAŒ²Z« ”²Hg{îÂy²Ýe™’ç4¥ËP–]˜õ–†Ù±š˜POvŠGäK¢!/AÈHÒ¥•¸KXžcî†åÝü#–‘¥ §tƒå÷Ãl;ŒR‰[ì¯M¢ÖRí1§%)ei 7 É—€ž„˜ ޱWƒKÂd­ 2Ë9ݺD²`¶x1&Dϰ¹s2~—V×ú%·¦ññý½'ƒQ­ñýQêèWýÑîõþ„)¢wå½l™Õ& M_©dè—ÄV”ÀvŽÞÈPü$Ua_«¥lÏTß{¿?±]Ò1I$©!.Êþô·<ù¡)Òóœ¥BÏëüb1º'(]’–Jv'´¡ÈÙ¡Ý@éïÓñмòC9 ¥6Y^±J°ÄI*˜ “Êž¾†#Úˆ¶RÊ PÇV’Ú-‹fV ‡ÎÄqZz),“6be¤—9m¯¼yõõ–Žœµá9(­ÙÐQ†áÙo$âu(¨™6tÓ7 œËI—Ä(rÖ=nÝ#ó¾ÿWªê¡Å%‰,g|_÷õ=ËN:Zri»ÛÐæ¢ZB”¦’˜ýKØùîØI@ )WP|¿z…[’„ê–E´€‰m0­g‘U©KZT)f+†Ò#QH–vÕ·Æ+½ÅݘÆX  ÛL-]¤WœŠ”²ôžaÙ;˜ÍsdÙXdºdT¤Ô¡S$‡Ô™‹YžÛÇ=nþÇîêýv4š´ÙqñCËø$”"†ŸãÏvУӧ°8&>'²:®£ªq”ä»Uí|Ùíê´¡¥ç%pâÔÉÂMOE*URMJ%2åÏ0/µ½ÑôßM7¯ï\®>/ÓÁÁêG¶«$¾$ÖÑb9ƶ¾…"n€4³0BAÛÝöfŒº~š:RÝ_õdê$§73I &ZÃ]-ÿX÷ß0I0ê/å)ï´ …D’ÊÒæñ~£r6±gÞ&,?©:H$õ¯‘¾ÅÃÃÜ­Išp©ò)Õ0b²æªbPãA–@°O©^èø¾Òö„º-E9|Ÿ½ç誗Ôôèh­UKæþÆÓÄ™!A)Ћ¸Sõ‰M³åëôÓÖ×îºUÆ96G1ÒO_ ¤ Lý—Yi˜}_Ë÷Æk'•tz‘…ïR¿©ŠSa8]=1.rý½3–P Y Ǩ½¢É[:ÏJ}DÜ’¯†³ä̇öñ^fÔ ¦§‡u'ô.ýöû¢SßïÿN€Ôí÷`2J¥ùén},Å?¿ýbt„w·–~„´’x³ŠT¦>ðà}H1D rC€_P‚.Ù1Jt€îAwé©=DLÐêSƒÜ¡êÉÁaÊYXl©Ú”•¦f)%ô³úÛx•äù¾ÐèßPâãÁªÃ+%J¬LÊ­3B¼ÚتÃÖ ÑíÕ„œ+K ÌÇ1J*©©4Ôò¤;êJè̇̈́pé45tãÿd¯ó5‰ª–t€R}¢ò{Vöd¡I[éSûŒ<Ê¡¶ÜÝ:ˆ¯zElIZŠ˜;ÿ‰Ú´OÏ&fVÅ©ðìHеJ¿Ò…Ê`Yܱ¹ë”lñuÚÖ‚ìßú8¶l§ªËÄB¦oéf–rÊ]ßnñª<š=´úŽäþ·æ‰çgoŸ*ª©”ž ÉZ\k•éÔUúœ£ìùËJ:o†dσMJ¥­&u’µ:Öw&ÿ|_S/¢ÕÓIG5+1bÂðú z UdÔ¦j–…¤²‹óZ4žv7©ÑêëÉÏR¶®H¾{ÂpùUÓ©ë&LŸVfi‰)JU{±p·+“~çSYÂ-R_­c?Íø|”R!*y|Kž•”²ÖV÷>¦èã©ìíIJR¾]n648µ@ªÄçÏ”T©*˜¥!öJkF·V}žŸO³M)oýÈYΠz|'£ÐdõhaûzEÀT̬¥¡ö¹¡¥ÔI\¹m©*S ’l,c-x<f„µ*Q{;ý ”œk¤¤¡“Ä”fK©—<ÌAC”€×/¼)¼³Æôõue'”škóÿôùÖf@©”tbARÈš‰cŒSv êkõøÂ’D—³¥î;Tø¼B<2ÐáXj)•P·ã)mv'K\XÖãªèõzJámvL¬ËƒÓNŪ(„µ*wL™ºJ-c`}æ9¤Þ ø-Y¨BokÎy ³Œ„⨟Y¡ÒúeH`ˆ, ½Ñª|×öbììÒyûß31ùUyeXr…? Æ[:]Z­Htº¥Ô{Û¿¯Ò²kR…)ìÞ§hÒGÓ|‹5(Jæ.àôˆ¶+ÞÑ ù‚T²YÈû>1h*X6™? ÃñÌ©ž”¡]Ô›X÷>±$ä•hhKWO¶;‰–1êj\3§™Y6TÉü6T™€ÄÞN¸3×h=YÃQ+Jðlêó.$bè2i_AZ’T¶¹ëvŒµÜ’JG­AºÅù!ËxÎ&ž`›>IÕ<Ì\™êN‘-ƒÍÑöŠãm#·U¡9;Ö÷þ Ú Ó„SL¨E!§BÌÅL ^ž¡ü"áž=N‡^J/QÚuæÌìÇCQ…UÓ*j1SW<,((Ö/s{¦fŸDôõc=Õ-ø4të•6^¤,æÜm¼Ÿe`“CËÔ }V„¸#Î(F“rä_¾®ðÙ“' KæX±ïþo öØá˜Í4Œ2¢G¥S¡e ‚öа©ž-}õTé4¿[³w„æÌ/¡¦ —1 ‘0$Ï )#Y+«l:Æ.Ñó5º mmIj_ÓqpŒÁ†SË­’ƒ!Aukžž6€ûÁ:Üu6´§’ud‡4ákÆðîyH8ºô„I¶›ý°ß$}&¬tõÍ×׿ Ä0Ê,vF"jÄÁÍ­æ$ýV Ö ûžÍu©­¡-*ñýHó#MU-Siê(œì™+›1‹³¡ÐiËJã4ÿ±®JA’•$÷ÕüV}nr*œÊ‰sÔ•Â'4 œ• Ýw‹»-ø0—W-:A-Ýã+ȪT"êär´Ô•]“¨^+ðÅö¹J°˜‡îHhrf¼U\£(LB}TCAy4öÙiwÏh»Û&­W˜@7 ½=Ñ6+$§ž…ÌЕ¦¾Rî°dÍC_IvHª› *ظ ‹Xßœà‚ª`BK†¶ñ]5‚½ÌEÕ'mr‚_˜ôõôˆšä¡.¡V ´9;ƒo„,”·³' ¬¦“ŠRϘ²¤¢j°H¸ÑÏ^.zrŒpÚf£%gNñW2åW+á“åÖN›Y*†U2iÄÉEÈBˆ%.H –xü±úN·C^zrIG¹»Îr¶{;GÐêµ4§ÓÍQÊW[*Y%SeÞà)WÙ3æÒäI2ô™ ¾Üп!5vgS-æ)HæÕ§aAlK"^¹ŽT–é{Ä¿ïhŒ¶¦hS+«£¦p—1Ü7ì`¶£(g´ÊRœÍJó+P&Ì]X¢¢Z¢´¹Ü´WËà:¡ëª–°ÝoqèµlY)eæ-:»’-lñcML¡¨k¹èNÑ¢¤ö$—Vƒ5JÐ$“o¬f¹&Öej!:Â’§7½›¸…`©$‚Ä€°mÏ¿ÒCÔj–±`¤‚A=aïb%mñÐPæk+««¤+Á¡ˆ©”Uy©`­7Pû¢¶gÈóU)ˆDĆ7*!ÿé¯c\dh©–í­?­©ÿŒ8¢lÅ5R˜¼Ä¶Ú¥„¥î VÞyÂ+¤M)aKR°¥¸1\³€èɧÔ¢_±‰-ÆÒ1ER“$§N‡¸/x'Y"UH;ÛÒ¨T€¢åÇvˆ·«ßÂpcÔLBH+7?TF–ÄÍ["ãKà %‹»ˆ·›/6)¨H˜¢îTÌñÉ)UOñŒ»ƒã ÄqsŠj’ÜEó¥AO¨ŽãoXù^Ó麎§OÝhöÓߺý*¨õtÚÓ•Îý(×çbN'˜§×J ¥pŒÖÔe•5]µ1»Z=}ƒÐÑŽ›Ý%·šãÐå©>ù¶¶5b`%J*%Ø“¿§øG©³—¡-:¥ª^­AÁa}¤Fü‘( mÉw€ÝþC&‹l,[sýªJS!$q×vЉ±Žš©`†å ÙIÝû²ZÉ"ªA!Õ¬’î²ïp7ɸʽŽK©« \¥$%zªXÔ (rA¬cÅ×tó×ÓíÓyNó·Ñt¦£.ç±aÎY».Ve`¸dšÐ¹•þÚ©³Ó-È().Aó\¾1óº.ƒ©‡Uïõšù{q~o“¾¦¶›Óìïy)&¢R.… ¾ÎGßu»ÁãK$~ÒŽf˜TÏÝV-Üê+J‹tKÂʬzŠÔV Ùž ­YÑð‚©dêNàì ®é–ëcÚC±½Ä±†5uR+J_ÊD*ö4þci—ñÉx5DÚ„ÑÐÖ›iE\½iØ‚áǸG›ªéÿ磦kN}ŽÚOêgf<ó]‹áH£®‘C5AÚ§I3·ÌT{î?MìÝ.ŸWÞi6“ãÑ/Ïêuž¼õ#ÚòW“:S ©ôæô+†y±B*¢Qš VnöжDô“T•J*{9…Ú)°IP©Ïo„ºA¬Œ2yÔ··A´ƒ1§LL¹Š”¥39rm2¹ TÄÇo_tUà—Á·Ê¹ž¿/ÕŠü*¥(š¤h}jp~©„y:΋C«»ÕÛ~?¹×KVZoº&&+Œ.»Ÿ]U53*'ÌTé…*~eNå÷1ßJÒÓZqÂX_‘‰IÉÛäƒÛ%̘”¥r‘Ì ZË1÷öÝ+3ÀÃS'Œ¦ž…½'JƒÞ‹K"®JVT‹¤E¾ ¨ÚS,¥|DpÖEÝã/(ÊP)”Ž£Þ+Ë7|ЦÑpédE–0¶9ïŽÊO´Ó(j êb|û"*Mƃ¿Èß`ÊJpÉ|`¥*ö=.b¬’;’Ž™rì>«ïj3Æs²¼•?QwÓoéˆÌ<–XTee]^Èn¿iŠÞ˜¥FMLþ ¥ÎR›KtøF½ =¨ç¸¦j«EiM.Éúöæp:fŽmªí2Ÿ&$œÕ‹ƒÉ>Ýô§ðŽ”Ö åæ¼ijÄæ»•iGár7H˜f,fúªýßF¶$ÌË”j›H`4"ÿt[…{ ÕŒ…ª­_BðƒH7Á²ËÙ‡¨¬¦Vi3”¯†É f†VÁU¤‹ÎQ­N'ƒÔÍ™Ï>–©TËé«H®ÁÉÚšo ÍDÅKšTŽSÒäË|3Gq5QÓ*|Îc êXžÞ‘vVKÁÎçfœZeI§ð%»¥%¯îŒÇ*ØxXcÆiÆàT¿®„ßîŠò¨Ïs%¦Ì¸ÊBjX ¹ø@Ž÷¬Á‹kKÖs¾?„(ªM ;Æ8ÉÓˆ1»}o÷EK 'äIxþ,HZqQåO 7ø´àwV Í3‹SaÓ±EW{Dš}T“.¢bx²´¤< Ïvý׌¥[VÑ~R BÒb4!ÞÇÖ*IšÁý`Ö·7¾.Ãl”qÚŒ6³Q+Züö³êé ¶$U¶ÊļÅ}jÏÑ¢ÿt‡è9ö&I«ëk‰¿¦Ð¢"df,`$µV ¢ÞDØöÚ'jnÍXŠÇqp½~פ§¯ 'GÝw‹%‚'C˜q©d\Êê8H·ÝÓǺ¶%“âÒЕ&­¥‡o£O/Ýx‰_Ô–èé9:º}ZtOWBÿF¦K;ísqºØè®¬ÜΕ¦ßTuíqEWf5båÊ¥\çb—ãÞÛÀ¯''Ì9§™Š*]þ´·ÕI{ãßîUÈ€cØÐ2檷NúUÃAûš-'hçu°ÿŸ±}ÓˆXy 6û£TÅŽV7‹Í”™f·¾¡ÃO/n‘”©äwZ!ü¢Æ”žjæÒu'è‘¿Ù³’Û™1²\VipÄpÑsöE«T;–\Çñ•b2d®¿ôŠN”𑹠>Ñ$‚|/Ÿ>· Q˜ræj6¹9ûâ`ÜU#!EAvò»méü’ÍvÄ>mÃ×5Ý)ì}="Ue|œÙy—=sU¡*t¡“Ûo¾ rÄVaÆQ-(F!¨3þ…=¶…gc*1ül«—ò§Q<$oÛhÕ^o‘&æx¶ªÛî }‘–’Â-ß³30óÖ:…“ôhÛ슒y/0c’’ŠÖõá£ð‰VÂÆK.UÇñ:z)Õóq4™x²xI]DvpÆöÞ Ý$j?:dé2éê—(§Jƒ2_kAmhThÅZ.JK„ýh©5¹§¹ÏüAÌS…%*´OWÖ`[Êz†ØÆvøˆ¿¡Wü¢Ç…K5®ç†Â,Sk¹‘Öä©ÌXòæZ¾çcÂGáŢo#׎氓\ú¿á"ÿti%ºÃN`ÆÄÍ3+´÷<$~wD¶4æ\wQQ¯¿O¢Gá*T^âz<Ç‹Š„ë¯Ô/ôIßì…6ˆÙÐreuLÚчÖÌö•.‹ÛQ3HN”’C úß:÷&X•/肈¸÷Aø3¶ FÌæ’tWï‚ß&–_¡VÌø”é5Òé)Ä©˜ú.°îhÓ´L·L阅S$¤¯3¿Ëù³N1ÝüÞ (½Ù˜|(^_”|ÃoÌ÷þÜg¼(pH &©kAÌ,Ú¿4¯M·Din$ÿ æ°Jó ¤X~h?¿¿µšIp4øR²€ƒ˜¹Ap=¯õâ{Âv G…3ŠtÊÌÚF·'Ø…õâ÷S¦·#† žuÀñŒ¡šdaÕ¸‡ÎTuS9$KÐ¥,¤#H$– %ýcQjWEìq]Ò"š–O˜4æ¼LÛ^š1Sú¦Y:{°'øGJÃ+Ê7ÞäŠÜ˃KÅ+qg—=—.W³…2”¨\(~±G',1îÉqO…´áÆÜ…7òc·õáï0iC„Iþ«ä—Æ5ŸÙÈoOUv…íFWî`øS‡OÍøýZUWìÔTš5ýWZTÝA Së `/‹,êIðËÔ ¥Û»*ÿÛŒ)Qµ[%ÿV˜A§9;*·ö¡Ýè;ägú±ÂŠNp7åU¿·Xç%JžäJð¿ eÕé´ý¹{ý{Åm½ÂŠŽäKð»ZôüãqЫûðRÈì¤6g„ªO?æüƒT”)R5wSr‹­·mâ9VÈv§ÎJ6š¤ªº“æ›AY3˜» sb¦=íqë#/*°K;\´S V¶Â5¹+'>ñK1Tᵚ–f™³?Þ0°:†Äw;–Ôj)<•OŸqÅS…«±åý ;o´)¾No|’ÉÌXß 2“‹lÖà#ð….KÝàQãEjÑŠ2†ÿ@Âçb);f=pІ&÷Û‚‹Ÿ²¹±y£^cÇ¢]r§#„‹²-:¢ì=—¥X†åÛ„‹ýÑT?PÞ0tŸ±ªÜ@LE\Þ*VÜé›SØN±—Ï× –Õ¡RÖ©*²Ó¸íÔ‰cy¥–:ÃaÜ­4s¿Œ³SL¦Ð9˜o¦ÈûcYq¡üª+cw…’¼6ZÖ¦%îÛÜÆdÚØ”ÜS BR¤­^PávˆGœŸò*£›m.öÄb"{Y>UIMB’ì=äÆžÊÄ]‹™f&V5K,RÜßÈö8Ò —P·±³úZ1-™¹l‡¤ÞÇTmÅG4e¢Zu‘;ÌÈ6Qh-Ñ–©«Àßqá–*sN!‹üӗ锤LÄ}3t”¥Ñ……–Bжèۘ˚X,tÜ•³{œ¾OÒ'dzÜÍ’3wåE•ͪWÍæ›†™rÊÖ~’c–l}VØÃ½~fž•+GŸ*ÂäÕ­Y )÷1¦rI™acçúMAʧ£ãÌ!žÜê©C Åå•rŒVrÙ¶,˜—›::àÜT$‘fwïë>Fø(ž1M#”3r9[ÑQ•”s¹@io)o´Fc*[•±èQ*#`-ï‹u™¢áàvY¦Î~$PeºÌ_æÙUœOνœÌÑ¢R×å;é~±¥uLËŠ´v¹òmÄqñœ‡3àJÃxLCÙ§âH3GÑñGQ§Ì{ÛhÇÃÜkÝ>îÛ4ùÀJËÊÄþnBЩÜ%ÌÉhÛR]÷éR¥l°t©W4ø%áN ]Y‡VøÇÀ­¤˜¹Se~OT©–’AK‰„n ÄaNOhýÔS¦Ïe¡›«ˆš—;KNT‘tLÜ«×ÑâNtª97§§Ü­à‡ÄÏèð¿ ª3ÎOÎ??áôºu«æã#N©©”?I0“r®ŸWÕâ=»eÉ+Lóä¥éI:Y] íºØæÒØÛee«ç$_{| 6#˳¬e­T“£!˜n×1–Õ¯á³)dÐ;_I”/gSIÓ`u|.ˆœQ•r•þœ0 ‹á˜âî@WÝ´¬²Œ‹CK‹æ:|2»öiúµTpŠôiIPåäñŠþŽÜÑèì§òZÃ1ܤ1º_Zž\Ÿi™þÇW"BŽóA,hç-UÝ_wàÜ4w6qﲑ±:z|74|ô'KJ”¯aT$•Š”þAöúF¡ÝY$Ò¼;9ô­Ò„·ÓhÓªÀùzvŽ’tƒ¦­Óê «¤.Œ½Î±áq<|"`K¯é™/æóuŒIÚf’T—–HQT»÷´i²»v`f)êù–zŠØ=7æ¯8Há2´Ì5k÷ŒÇ{ðWqH˜+rlFñ¼Ýœû|4e§Ë¤¯µ¡Á–u/ü!Æ<7ÃpjÊú¾,¼CÃú4<2€vZŸÎ;F#.÷êoWO´O<Ær·†§8OªÕ#Û½‹…¡ü%Lw 'dìß²oº™Ñéö£“òÕÌþVéÊÉʨÚe‰š±šD«Ê'"þš„O¡RÍc)KB0ê½IªZ­„D³“w{™ë+ º] kŪà¢ø×0KÂdè, “¨w²í±DŽ]Þ_‘*¯û¢_{Ðò¢..ðÁšFE W6pB:Žot.·2Ó/^&øYäÜ‹‚æ|DþeŠÈ‘Q òm6Z––NÉ;ð…¦ðiEÖNx¥0cÌñcŠ£Ê)\@:Fc/†Öä¥E›(ºòî.t1/ûF„]ÓghijR®u˶”»=»ÄUY5+o;šõ)IRµÜYÄiæÉJ¬â¹ýzó„énè[ú‰‰©µ•|®F¦Bއ&Â.êù$‘,£Ì°äô^læã)xðÃÜçžê—+*a^ß1 ÄúyR÷ o:“úŠû#2ia’)³eâ—‚Þ"ä|-u¹‹öZ$³«Úd+ªFÈZŽëOÛäÕ£}®/'3êW¦Ñ|°‡ÈZ” ƒt•;zźȒ£¨xw©Y’Ztk ÀÅ´ I¿«vŒ=Ѹ·E½(Ò€IØê±eñ1³4ùÎb—«U³ÊZ‰íÊmèfMÝ#ˆþs1]ÖXúæëd6õº£øº5Ùœ²‹R¢‡ª¥= Iš¹JV:ˆ$zm´k¹<¯¿B;N™Ž«ÊKH!cÛüb5üÁZl ü¤¥IÀ§Ä}8(ÛþðïÓmòfx^ %B8s>—/™ ÞÇhè•ìrmJŠ_ŒSœ)%‰[|4ªvwOQá~7 ¤’§ÿÂDs»ÉÙE%EÌ\„‹¹Úgƒe—°é˜¦-&†B¸S´ËZÙô bC³íºYØÖ²† ©çùß^$‰zÇæËܯæÓæõŒ÷w[HÚŠ‹«(ØÕÊ Bª‘côU(¯õس·HÝ$“½ÌMÞ ¦ lî“þ«1¥ê€Åü¿J>ØÌ^Y×7•“ˆKRSI¬«m­ëb³Hã=Ì,ubV2b÷·7kŽ‘Ò9Á•ñ&f|U†â³T½*_ËlÆlpY¸^(ï SX'a²¥`m †dÎ…Q•2ÞM#ò‹Ó6v­)àÌ.Çö èSÜÛXGhÁ+E{>婹z¶\µMãIšü9š@ÔÁ/g'uGDï&{Uµ ) ÀzÄjˆ³+Wç’ƒ³,%»ÜZV«r¯šÎ VRsflHN™Ÿ?V2Ÿ¦½£¢~LM·"5¤Z¯ÊÇßOƒž#â¢×3:M’,; jŒ·Vn+³K¨Cõ¿º6¶9ÕÙ»‚%äQÝ|#ðf?x9]`×´côj˜µÐû1KÊD”¨Ž"–”yÖ³õÚ3)´è(w+Bx;à6+™¦ã–e¨ù›ÁÓ8VUhLæ\*Z4¢`W•J.k90–¢MEòoOM´ÙdzÕ6‡æüR ªöº “dÈŸ¡IâKJÈJ´ªáÀïêTÌ¥NZTÁ¶{¼tIJƒW“¦øL…Où¶XæWÒòvóuˆäÒli´­ @òÝ=»FKE $hÔ úDJÝì6P|y@M\•™œI©ÔögpˆGb¯–ѺÁ™ÔAŽ¢7VÏs“ÎL¥k ԴЬLW A¬Ï¦ñ»ÉQ™Ùÿ#¦¿§üâ2Ÿ Û®Üå…+æ ¡Êz‰%±#[ ù’ ô:æaº#wjZtñ¹ ~ñÍe£«wLz‰žco„Wƒ+ÐPX¥&ý_´i|Í¢W'±<7¢ÿ[ÿ#Éy7-N|o «=ŸOéxtI—æ^”‡TÄËzˆç)v˻ɺî…_üļ*ð£3ãØ¾!®²~\«Lì;‚‘ÃZ¤¡g鵯YM‡¬fRRj(CMÅ6Ï g ÂvlÄêB4qjæ­ÙÖLz2ßiÉ[Àe‚;IÍ¼Ô ·æRÉšwHê>êFŠ‚t¾%8{옕œoƒp´”Ý]E¡F(3„ŠiV¸!_rã2ÉVé&Pe%:A`YMë ¾v,›¶‡9**k§oX[JÛ%R3° R§ Æ$ât3´N“«J´ƒºJNà‰…q½™ígП³Ö—¼ÆUª>;ÇǺJ+dz{ê=ܳUòÈǰŒ£áv?‹á4â™§Ùô-•e›)&Ê>U‰øÅŠx‹[Uªmrx*)Búüª}š=)·$ÑåÜÞá J²Î12hÖÕ¶®c”iv¬]àësµ¤ª÷–Ú°ÈdÜ‚»jÞË4c;sLò±¤òÛ¨"M7„e#_ ”#nný£mø1<²Z•¡jt‹÷‰|.Nåþy’¥øîƒ5L0;ýbDcR»lë¥}êPçÌ7Æ OǨðún>TªL5Ò¢Q!&çW”ïâáÙvw’Ô<â] ^Ÿ±¼>¾_ºU|ù5 pYbb‚®nÑÞ.ãg–XlÓÓèAvo««×´2Ì££dõ+çÊ ÿôÄ÷„IV‘¤Zj‰™ÈC5ÀõƒÁb«cG9j­®¡)`Ÿè˜¨;Øãr’R¹Š6%DnÙ©fñ½¬v'Ö5~v28¥&þø7Â2Ólö¿†Yº)|€hñj¼/çó½7Ëö‚“æ ?¬ûtŽ}«Þw&z3îûZ?fÚ\ñòÆ1\;ù™àë¦ãÚÞ½)Ê fÐNÝ}#1…I¶^÷Øš¿ž¤õeëäך1«ã.]‡ÌÒf×ÓÓN “®Q,©7ŸH¸¼I+3¤%ØÕ©ùpçêêopÕa²8 ̼_j^ ¯äÓä貓ïÛO«Ç(´é½Žš²Æ9<7nRŸ€GÔáœØä†Ûh[ÜËvu f¢L¼d꘎;õF$¬ÕZEŸV‚x|Àn{Æ·F¤¬ÕæÇF^š–Ô´µ¿¤#.¶$©äáÔv™1ú³DŽfµ2‘(`Êú¿º:zËÁ5"Ä©èR•ÞíÕjÏo|±r†`Ï™&NɸÎ)½»Šx²å¶©’€ý"’wB¶íbßÅ)H÷RŠòÔ¢Ÿ—¾L?7bŸCQ;â"]‹¤ÒÍHº\n“ &»ðoVOµ6¹<;fvÏ9±Ë|ÿBãWÓËÿ˜A^QŽNÖHuIvüéVïaŠÎ‹(Ìž·H 6m½b¿!*9çj&šIMŠT—?ÆdðHüÙ9ü‡PwÜ?¾4©EY¹`xº¶¸³vƒ}»™ÙШ{t’oÎüae¬®ùg”'ä§ášµs7 [§²M¼só5äé=—ÐòUܨô1­×o“>‚ºFÿ¾4¥-òY2Â’2æ.µ]?Cÿ1…;VHFírv:ÝJXBRÍµà›«+kˆÒ t!‡ê¾ñ—ƒ†çæºq<ÖßÐLbUÁ¸|®t°9N·íhÕá˜oÐTç·KFÓîa«{ÑÂkñš]’סKíY¿Ú$"Óª¶øôŽ )jeäê¾}ä“äUˆæ OÃìÍ'5Íâåé~ÉÂ:P4¼ÉÏú0yÂwýÑuÄ–ÃJXvx¶iG™jdkoø8Ö(~—ºFâ2‘ÁÕ|9å̲«KàI¶ãRyÆ$Ÿ§H­™pYJ%•€Êm"x ÞÆ‹>éü—­!,M2ʯ¹Ð¨ÒnèÇù8lže,;¢cÄŽ³Å¬¥)Úñ\Ù•fÿÂUŸõ©–NÀb”¯î⦠ò)r{[å ø_€f ›‹ç9\LJ“ ¡©¥ª •-HF G0UÈ÷ôŽPrV—“¬”][<»ò²ñBŸÅ)ñ*b¢¤¢M<¾)^´"dÅ%NP’L/¶ñ¥•=ìç9)elrÔ$îÖüI:òeÊ燥 Íôœt¸:Þûò+´mo‚-ðtÏ&6SæLÓ(ù‹;s®95áþdZÓ§P½ßÖ*Ù™NöbÊIZÄ™cQéûáÅ…Iø/t!M-~knÑRk!¦•IdŒ¤;«íïÊÿûî°”øÁH÷îðbê'„H¯ˆõÝ7,¡-eÐ:öŽRÞÑÛJ¦TÅ!µß´E&ªžÆŒ¬.•uø¤šyR¦jÑû, ;û£J/äÛÉ–è¼fº”eÌ‘'£F‰õr’©åßQ\²•nà]#c£ÇEIR9ቘ%”xßÀ‰ R’BuiD¾Íw$芬¦ü¢‹`ø2æCÚ¤)#¸Ò»EƒwŸ’IoÉÎV\¨„é»>ÑÒö95VQ¼k 8<;ññWþfòŽùàNõ_ƒðÆ)$…Úá!ã›·¹ÓÂ!S¢ÍáL„Ôfé RôpÊf‹;´Ú9êm”t†øgH£Å8¹Êv0+RG´;§^—Òßç,«¿Cj®™ÌüE¥LŒÅPQ;ˆWQ8‘¥´ó}ñÝZJÎM,´Wb™uÁœTQá–91ù“Àç}žhéʳj6•œU B)¥&Zõ ¸m¯îÌIfÍFaÔp™¢Ye%™®:Æ·g6í/‘ö‘„âSQb®ŸŒØå&èÖ’Í3»¨„‡;@ÒV7·AÚ%ëc®âüjúZ5fL³®ª^¾öÀ7!ü–Ø'xçQ‹Ä¿c»·Š5~>Ï’¹˜l”—™/‹«~WÐbiîMMŽcÊĬ8Pm]þÑna¬Q™ƒ+$„N¤ÿUÄ$’ù‰ðpjù‰›š3L©i`œÃV¢_v\t‹çƒ:Ÿ6w!©XnœÇÝ‹Á‡j× ñ9Ó§(쥨ëª3'êt†`èÔ“ÈX°x4í/åY\^‚ÛÄLÕ‡ù ä¬Äs4ÏUˆ|ӗ𤙕5|)sx¢R¤Î\­µ‡Eõ–fmQÚíF¡}Çwñ¯¢ùBøkŠ`y0ê­Âj&Î4^ȯÎ8R–—×4KÔg n[{ݸÁFþ¦¦Ö¦àÜÑ…Và™†³ Ä¥pªé'®DézÒ´(¥AÁ ±c-œ×ƒP$…0îÑ»o :Øê^ƒ6]„e\KlÞcRÀÓÅÉ=Ž€¢)Æ0-=Ð×µí‰Ýäçž:#óªQ,êO>•|Ò à»|ÛÿSy…’éÓ,'Aá߬GOs?Š£8PSé¬t“²z‰›Î¬“5'Ùú¿8ŒE^ÂiÑ6WZÕ†Ë!KÙýLØ qù‘v8¤éaÞâ.wD—Ë^52Z“4…'™[¥áÚŸ&“ÇÐ@6ÔývÛÖ9ÆÞEØ£±ßpc¥^WÐz™u]MR*)—¢bTSÅßc~D¾Q´Ÿæ Cé'ÉT‰‡„ŽijÝ;[ß¼J[™¼u•©eGu)Ϭhc“;-0Ç©šzö„ »GRðÝm…âÉ™¸Äg$zÙ1•äëKcn•„©I‰Ie™²ã•.ŠZ€a¬8îPoNãž!ÒIÀG ‚T–M:b­N†ã¯hŠ2RË"aŽIQºÅ•fÈÒDÞÑ9T‚œMú!åN‘k¼]™—¾IgÔL©‘ùÄ÷2ü‰Ó»ïq!¾YL…‹ ×ù+Š©#JÇ¿®c*¨:Å@ÑÉ.àî;EÝÑÖ®$j’©L–ønòÈýQÈ|B’©9Žj}mðd¦IÓaSlÓ!´Ûh×£2îò<°.çªaVg$²‚¸š¥#H u_¤L}ùûTô€¤LÔ<®Ãì‚^¥¼d` ZÌÄþ“V§õí䉂 Ì*é›Ó¹‚_ Ídè¹5SÑ$«SáH³oÌ#2£kËUQR΂X8Âö5ÏÔÔæ™àuI*–°}ÚLjðq¹²¸U’F3TÞ¢%üY+| ÊîKž‘sNŒäI$“`vh6’‘ 3‚e½º¦*TJ%›6¡4Üêú9ž‚ìbU‘^È™VîcCƒk“%*vd¦–ίùLN•K&,LécZTÞ›îvtN‘±Kp’¶Õû]ãT®†Í²âü…®‚RöJ_›µÑí*"µ*9ì°K†ÒÛzB?*+t8I<Ö;Z*U¹›¦zͱ‹bÌÊJ¾Ššm=4ý2椥iÒ“©Ã‘érY4…Rë]Üõ‚½˜±"¯-þM2:j¯-RÕ,+²¹lÑ$°oK *AÕCL´¦æZX¿¤EEôbÍÕ¥®Ä¿X¶’4qßi•/3ªhF”¨’ï¹Ô¨7nÙ4ÚV»/æ÷ÅD HømSH},Ù²&Ë›/–dµ$ÚÄuƒ«¬ÎÆ1ÌW£‘K_UÆ‘O«„ 5MÀrä ༭ÂÎÛšý.àÜA~äºØážýÌj;ØÁÕr6‰Rpt«tñµ}íêÛGHª«,óTQ0€X'oHÓ{‘SVÌLÃ)s0™¨ ½´¥ýCÃaúœ%)àÔÍI ³ŽÖŒ¬aÜ¢‰æºXŸ]㤟;˜kÇ bw1ÁpÉž'g¬¯@(°³Dq²&¨ËÀ±ØF9'’Ÿ¦’ì]ÒGcÐÄ«F“ÚŒŒÕUc•²ëk ”$ XKXæñ+ÁoÉ«}S.5dÝ£IW°;Ì ˜n,ý¢5A?þ%妦Á’£~4†—Ü4ÎgþÒI‘¶ÕòP&ªîmþv¯C—m2ã“7LÔÒ]»2Uí“2¿¡Ü¼ šføiƒ)Jbš)Òßð‘xæÕ³ªxÁqn…¢ª&¢¨IY*ªz&ÊXZÀ±Á¼MËò–9™÷2*ÉUvá”®»†fòÆšnÍ­GY+•5gΙ6jST¢Âä—¨¤snÈT¦ZRÛÂÂX³;”'ÃTðPz’nRû“Æ-ØŒš#S_[Q]Rjê®tÍì°nž‚"ÂÁZ¶ì€©) Sº”tê‹êFøfVÆ \¢ïê"K*‚´íŠ©™‹5KWLÃV²¯émRQ$°û‡¬¡RÔæbcKÉË'ñbJ¥ç-FÀÿ}Q™:{›ƒ]­#D¾¤OfŠÒª_Sš")½®ÛúF}MÙc¤Îù¦›"/(ÈÄ´à“* J©82ËÍ2øeZÊuylÎÝwƒKwöƒn¨ÖåŒsËø¨Ä0z¯fªO×Еue7 '²*òŒL^º«Åê1ÙœZŠ©ªŸ:c©j$¨°¶äíÑwÉ N•XÚ|=Œîu/ ̲0ÕL4+ŠëßõºFå~,C ¤t$ì±;ˆËðU‡JµQËÌn­ïÇ‚•VSÍ35«·²:B9T‡ &Ó Sáè–ä;—õ0kÈN¢‘V¹m1 j1+6ÎrÜÈÌÉ@ÉÓÖ ß×#o,Ü—Â&PàÔàÜsÌcMòMBRª6óî>1V0Y`繇+VL«TÊDë ú®0I÷ÆU_rTkS•±¶Ô(¬ÜD~1§‡’e™r–1¨R²H:/é¼FÙ–¸b/*c!Ô(Û™Ÿˆ¾Ø_½G')cFCYüÉüažk”±‚€¡#ûIü`ðÇi—†åœrBƉ:K¾½H:Gvx®¼—´¾eJá8*éDÞ,éë53¥¹”kõ"d¯×c)jA.¥`1-÷D¢Ó5y›—ˆÑ™3õ\)½þ1¥,Q‡œ$Pë2Ž!í 4éÖ\·H³úª"øMe"$åLaS/!´þÒ?»,ŠUK‘Ã*bÊMäÿi?Œ--Ù^ãŽSÅ¿î®7“o¾–äQ±WĈQJ,=SøÅô¶=WDÞy:ÇDêH¾#~¹ 6npL±Xy ž®:ÿH¶ ÖÄ‘`\1‰$XZv^çNLÉ „°>°+H*ÔFá¢×áÛ*™»F&5¢jvVí·¨è#4öD’o%b^SÄ‹ ߯/ãò‰Dÿ’’ãÎw»Z"m»3Úï#“±2 6µ¼·þÔ­V,?$±N]a¹€~[}ñnÉÛÇ*âŠQa©­«”[í‰o‘Ú:VUÄ„ô)*va²y}7Šì´žåË)`õ59WOö‰¢G³¥BtKpEÁ»1õŒÕîi`ÝêQZ›“ø6¨fŒZ¤¡RT7QwâŠÕï±FÌ9RmN$ªŠCç:”‹nI.äÅI%‚_’UÄž]-mÁsöÁ§Á(jòv"•„¤¹PvåþôGoè;[BŸŠ±oþ›j*âÅ.þJb³’ ÅiHúÌ’ß|wC¶›äb2Ž&I Íü߯ݶ·3pl¯ŽST¦m<þľ•iAè{˜&š{ľ`TpÌUˆ¹oªn’5º‰»3ÆìŠÝálg”ò»Xõ‰Æ †èÔf,>]d¤Ë˜,]Ïm¿yLÃX¦sé™/–°‰jÕØ²Cÿj VVÆ·9GR\%þ)þô vŽ9?(J‘wéËoíEÊtŠÒLOÉPL¯¿Õþôdír~*%•2‰b–MÇõ¢wp^Ê yGK²´:[d—ôóBOk´o2Þ\Źj«´SJ˜™æW 'Q Áqn°íîË,cä¼ËJt„Ñ-ÒžÀm ²W†¨iX'b^ÿH©’ù*çN,óP­­I │ïeÛ%Y?/wæýŸïDJ‰H?$1Aæv~_ïEßbvŽüÅ6ÓêîŸïDº£#ñb %¾)þôTø%*°9Cb°žA¹tÿz*w†WµÉ<¼Ÿ‹ËžR¥=K$ÿõF{­ã%íð]²¦YKS?Ä*øÕKÓ£èÀÒÀƒ±bàˆž¥Q7e ¸°Þ5kny!® ]:œ2{DW}£‹g<ÇòtÙµ*ŸI1õ3¡…ìåQ]¦EŒ3 ;(J·cËíFÛiàªèUäüSQ! žÎ›j%®n25yCHr› ˧ûÐßaÙ‘W”q%I—¥;3§ûÑµÚ Ê©6E»º½l¡ÛÁŸ€åœfš¥\p”±ÃTÆAd’:<;°XÅrt½HŒ3 é^µþ’lÆmJ` nŽÝ"(Ò+Ê¢dÝi±'SE¼SÁ¨Í”#¢]9,¥‚þâþ1irG|œþ~L¯Lò$¯T½l,‘ðóFSÞ×þÛàC”±’ü¿Œj6Œ¤Ð'(b 6ÕÝ?Þƒ±›¼¡‰9<7«§ûÑ?0­aä– À”±m?Œ)¼ ù#ˆ6’›Tÿz&í2$îË•êtŠjÙ¼*Uùåi[9Ãog±¥·: ’j*”/êû£:±ÂÂàè^5享' ™K;\ª®+§I4èêT]õGæÿü?íyõýýꚯÎïÑx=ÝoI»y8{Ëc˜™²×ÃRvS?êúŽÑújOùÊÓ*ß‘x sʽIÑsÎdüD„òØ»]?Þ…¼“+$‡&ânÚô.›j'4ˆâÖ,&äüUª^=SýèÐqµhjòŽ(–Ô–Tÿz2³±;-QńС+QÜÉþô]‹îßß%`ÕJÄkêuÏà{2F€4%ÁÅ‹oiUW%‘*I$°v'¼7.H1$•Ñ*Zƒ¡I F…¥±ÉͳL¨ŸZ¹ô*Ô¢µ%‡RIÝ^è7›Dvj2^,­ZSd›Ý?Þ‹k’ÉЗ‹åoŠoý¨«.Û²^,HäÛÕ?ÞŒÚØ+¡FKÅ\j’Îtƒ©7?Ö^0LŽFJÅTéL§ÒXó'ëBÞæ_rɲËÙW§œ¹´Ò´N ¦n¤ïbnâÑ™n^ÊgCʘ}> ‚SaÉüルˆ»§ˆê$YË3ÄJ‘¦Ó^†Ée†µl71wÂ"J4hÒàŸŒäY°.îÏNîÆ•è—cËÖÌ®(«çL*eR“:•z'Jò-±=„W’Uä½áž(cÒ)‚j°.:º/Ú:öŽqƒØéÞïÎWŠ˜°qù0Ï·ç©þäE ä½òJëaGЏ¹KŒ±ÍúÞÚŸîAÃ;Žé,PÑâ¶+¤•e—"Ïí©·ö!ØNö¸þ¶qAÌr݉o剿ö"öXR–Ô9-bàžY~º}µ7þÄNÎe7‹4ùƒÆ3n9'ÆSÀ—"BdI¤t+@ *Jµ¤mD1±TRx#›F<òy’ïTb>j£MvªEÝ+I#ö\ücN¨5O‹áöjÍKù²šÛ¤%o,ñ%£J) ¸'dïëÜüSvYGŠÙ™(V¬¾ê/µË°þ¤NÖö K”8x¯˜Š9²ëŸË¿ö"82÷SROŠ™•nU—t¤uö¹܇kÙ j/3Å|}>n§Ú‘oìEQlþþµ³‡üŸæý_k—ýÈ(¶ËÜ®¨ƒ2g,Å™p)˜%Db£žÜnikÕ¥AIÙ ‹§¡ë§žâ9Ükd`ªyvZX]£mVHÓjÆT?¦gœÄn‰–Ú+xD¼-f¸†RÂ{k“¡ì’ÖìÚ‰ŒÊF£ð²×'Ä\ê™aÁ̇Mßú1;]—»•±1ñ#9¥+ ÃÞe¸g‹+ãõbz²©[¤‰Õâfk ZFå,ßO.ÿØ‹LÅ:¶ÄG‰¹˜Jp®oÕãË¿ÇDZí5+¼±êñC0€ÉÁyUm>ÒŽ__%â%Œ–ÛøŒõš'ÐO¤§Ã}U'Æ–­Aµi)»nÐíðþü©ÃF‡ §²¦*dÞ$ú‰¦tåémSæ-°¿kF”kb4òN² TˆýѤf›ÉAñ-ÌÅÔ™²U¢b ”Îàj¶ã¼%EN™YFHÅ´äò»§ûжFžàrN*Ì>³}]ÿ­í–­‰ùŠ”’ênŸïA\Pª/#bªMƒ'e+–ßÚ‰vè”5Y.„‡»òÜZ [¬}>FĄԥcH7~]¿­ Wh‘Ð2.]^¹•“8µ mfán Áe8#ݹ<•ÔQd+"YK¦fã»^*òP™¯FŸ)FµÜŽuãÌÃ2¾žp:_SÚÈ`±Fþ_„ÛaSDª$êN°]ƒ³\¬çoµ•H–ƒ$ð^äZý¢vç$àÈÌ‚YÈ’Ò”)"îÿ¼Ê•–©Z(ß“ €®gûLV¼ J×ÒW ‚V/ߤG\‡Üˆ„¤6ƒmî7x¤hpFýá±q²€B¬C”ÿ‘}E) Í͹=¢]àscCÜ%@t/Ö.Y4G~!†Ó´-rZ€-Òíx›…K&Ad”|ôR"WcInŸ(UÿtO¨Ùde[,íoßR%‚-3Áõ-Ò#ºÉ®G™i(ZVăÃed[ˆ´¡nBNžÑV2U\î4"Ä¿^ñ2È•ªRÀÒÄÛ¤6Ê ï# —PXÅ㵋ufL€‹…$·~à®Ö" B’V _¤F¯æ¸Ó ”‚A=L]íÒVÆÏITåö02–ãBX»?|O©´³ÉƒNËê^+½Œ¦ª˜Ã%IòµÃÃ}Ê–Gp‘vºuDÜU7CS-͈°sèY2ÙeVÒî}bçaÉ”€¤ÜyÂcp˜Rávx ­ ˜””i@kì|+É}Y ’J˃Á°·´!u$¨X›DÛ%LÆáÞ/ÔnÓh)%÷hŠ"Öã˜HAaÓ¬6Ê'õ„I!$ê:EÆPo ¡ò’C?ÆšÉ0L¤²t$€z®`£…)FÏ`=ÇìŽ:ÝFž„õ/\”Ý%dõ¹g¦œ¡;¨”­rÖ8do©Å›¬rÒëôui©/Õgèt}<ÖZ5$-3”‚Å•¥ÆÆ=˜ÝœŸ¨²¥ó‹ŽU\<dt‘‘©dªúC5C·ÀÕ(K–ORÇ~ñ%m‘eÑ 7}Qd¶BIA™0¤$©J°HÜ“áwŸ.–RD™šÆéÒ\{Äg½,Þ õSL\ÕKD¥©AÂ’^3ï#‰¼µµHtª9óþŽM$ùŠA¸B =hF›ua¯L’OÂ1ÇÃêe…]r”û£ ¨Ñm¥%úŽÉ¥tB(êfÔ™(§š¥}d—Ùö޾ò-w&ßhHÔ Û°-²e§TÇK+A($žý"ñÚ[äB¥èУnͽHåKB’¤$neù'¦DŠ*ºÕ-4ôójgIû½ÑÎz‘ÓÌšFÔ]ö¢JjJª‚&ÒQÔM–9—,m¡-hE¨ÉäŠ2qdò2î18’pʹˆ?ï%e*÷Ž­Ð[Í/Í÷Rkb)˜mg±ªp ©H’ÜU™jd¹`ý£¯½‡wj’ÎÊòNÆóBLÂ+įjMO³ªÂw Z=y™º²/¿ÓrìRWâòeÛˆéô¢jƒl–#¹Ž¹£Œsé˜NN¢ñRUc‘HYR¸GH »õˆÕî1bL ©™N™¨¥œ©jP•¨ ²–Ûæõae¯&»[WDÒ°œAjP$K’V¯¢W ¨ÚÀwŒ>§I5ñ,í•›,a*xA€âµ´üZ<.®©f’¹V gÔ}±^«GEöêM'êÒ"Òœ­ÅYQAU&¨ÓO§™"n¦áÍI ݶ1Ö:pï‹´FšÃC¦áÕ2gJºyœY„#Iu¤Ø:ƒ­ G¾/•ÆK³0lYËœ¬>©Ê Õ%@ÛÝ£šê4œ»T•ï¿îW %mIÀ±5Ì’†Õ(-IRa·¸~+N)¾õKÕmBÌ¡ª¥£•>m,éRúf-%LX±;±‹ m=Fã &×€ã$•‘-S”>”¾‹lûÇ]Œ6žÛŒIRPuù†êèbµàÞ°¶[àzV”’ $›ƒ‡—?ñ‚´Dâ Zw!.Z# Œ,;ÝÏOñŠ+HRÙØúíï^¤ªD¨&ÝØÂ¬m¸à”mqõ­Ôþ¾ ¶ÂLI -%%_º ây&ù•ÉRÙLRðØ4Ýf$Ë:˜éݶ†Åjê…S¨9ûm ðMÝ­‡6•r’é ð-¡ªZF ÎXÅ[à©V¬5It”߬KðEŒŽF…(Sûá$ZwҬ?ª7û!\27cU-*B‰-³¶ñW ¯ j”Ô’û;l"U`IV‘0Nžç¼8+XÀ’ʄճh{#}‘*èeb‹öÄÓj2Êe. f8e(“»‘vŸíNzõ·‡šÝ®R;h5üE¾Àä¦d¬mY~¦j–UK6„¡A3~ ˜Tm+rZû4|iéëÊIôýÊ5”ícš¯çñg±veN¾üú¼ÑSN0 “]?/Î Z¸Ã Ä(¤é$’/·¤z:XIjEiw¬ç»jçó9êR‹n¿"„…‡è,Ñúå6M-@Ùœ¹ï 2×(qPp¥DØû¡èUŒ ¥:t«`­Oü!dJÛ¾éV÷ ¡ô-rJ u'¢Žñw ™¡*Ҧ߹ŒÞ92°ÙÉEB¥iÜÆ5¬“+iù[M\¹ Ô¥,}¡ô‹§ô_d~ÿÁ[ë?ÿgÿî>ßµ“óþÇJ“v w=c÷ùJLYs•¹¿•¾÷Šý ñfD´KX–å@‡pŒ\¼•:È$¥)†mÇx0×,¨ØÌX–KÅ‘®rRJY Ñ÷ƒv‘ŠY*ºv{ÁVÌÐùKm$’.Ð"x-™O7#// ‘0.¬Ô,­.t€@¸½£ãõžÊüN¿¾Oùkó»Î6=Z=G»‡ezšü÷ާ0ârj•KDštÉJTÀ“³žñêöIø]7¦ùwùàå­©ïfšZ“¥‹é¼{žQÏ}‡0RtnþóéðNi ¤)Ìî–¹ßÝt>¢KC0³»úƒëBôó($’®»/ôCåË!E€ 7ŒìF›[‰:@cõ_qÝãN¬7À©—-fìÃÊÝ{Äeæ‡Mq)I ¹m¿„ä«°TBÙ^ˆHp¦¢6Eœ‰.ëRC5¯Ö5%FªÖÍY38ˆK?•-s[31{&5S3‚îÚÂ%[L¸¡¡i tgé,¾lfºQ€.`¬:ô¥zO"ôßg™íWÓþK©ùqâ÷^Ný/¼^ïrÙãq‚ºIR$b>Ôª$*·‚•pÌÎmn×ß½ÛxùßNã'&«¹öÝ]b¾Ñëë¢içlœÆ á|‹J´©&ÅúÇêÓ[£æµ›(»»n`Èð;^©drtH%ÊKÒX°g<=CNìŽh¾k!íÔѹðÌS¯Äœ¿‡Ì•O™¤¶€Ã˜y¿‡Æ5ÓûÏ{4Ü8ù÷ûÿF%Úâ¥Oò1òH¡¨Ê_6b˜MªþR¹íÄN••&çá¿HõõÒÔÓêeÔBê5_š¦gK¶Z}¯KŠUa²r¾)Ò½-é¨Ò¨(¤µÚ<ý,5½þž¶s$›wµÿ¢ÉÁA¶G ¥ëQIózÇîn)¬Ù*´)L@ <Ãcï‚M åXUŠTÀxQ6y.žÕPÕà© ®]4³G[󚔲R”‚‹ïÖÛzÇç}­ék9Á7ÝÌymçï>‡»§”e×òіçaJ¥Ä3ÂÐk«fK 9!i¥X¾ôÇÉê–¢–›P“ìŠxXï^¿'£MÆžR·_‘‰‡ÕàØ6V®•?ª•$c“(áSÐ&h±.ÃK–Ú:jèêõã(Á_»M÷'½ñý‰§¥›{ðhó¬ì~=IU:tÅLöd.œÊR>j%&wuŸ¬Ñôº5ÔCEÅ%\ÝøÏoÿ_ ^Ç+__$øõ¿)rþ!,ÊT„ÓÓLš¡²F¢Hì-Þ9èu+Üjèµñ7/éEœ~8»Å#UŒa²ÔÙSª(¦¢³4Åi*”•§ôŒöõºG‡ðÚÏY8§qÓ¼^Z{£¯|T|³&ž·¤Ï˜¿œ¤®–UARg ¢ÉXº>ßtpzzòé5[‹îrõòܬvª*&ÔSb2(q,.r‡Tq4Pi´éIÕ-6F¥G}ãôÉ„´T´5Wǹy»k;ºXô<½OlŸ|^ËÁOJŠ–A¸ën°x²öCIÕ#R“¨ÕÅä¶žÇ>ñÝ“UO,%a#U››doì>oˆÚád#AJ%Ü—17$v"[pT8Z…™)NÐjŒoc³0|–aÖ6Rv<â"ߥèE•Ê~d”’]ÉëÌcO|ÐØj)m@•ÛDuÁoà¤)N=o ÍT9'Q×Ì:1ƒ½ƒc¥©»Ûïƒd®6 _—·`bØ{QLΕ-dI¼D.•¼[5ÑQÍ”™“¸á€@7±¿¤T—í`€gz1¤‰üÃHo‡4‚wl<çŠ2M5O{ z+%°Fy£föz’×,€Ã×Í…ä&çšV4õ$ÌPûù¶†åîð59ÞœªÔµ%“¾eZ·%à̠βy0êå‘çi ßÓš#ØÚ¬¬6dªºQW"l¹’ײ AbÖh7ðØ¬¡Ó%†tîè}ñ_ƒ>¦³ª—G)Jš½ à–'oÆ[¿%YyÞ—Œ ‰Xõ)Þ…Ú%>Gœí$¥-O9Ë» zÏ’I™ÚG0E%S[KËïõ ¶¦;¼ ùk$”•ÒÔór»š&gz}J¥©¶P>?Zy+‘$¬ï ,‘IX˦X·­lë“qæšJª‰&ÑÕSñ™“e„ËR‰`{ŸOC Æ ÍI¨ܰV­A“Éjˆ*9%÷q¸éoB¬­fLz› A3 Z»%ïëéHü„gt.[¦šqÖGÿtà[±ÉÎI Ùf‡êQÿÝKÎàs° dš K?ÿh•’úˆs¢tÞ–qët÷A²ÛÜCò)Öí/ÿºäŽW±‘‡ç4.hŽ©]B%Ëæ'³jƒð_©mÀ+$âØq¨§: U¡ræ0ZÀ@v!ö…­‘ZøY‘±S¥'õI†îø=YàÓ"Ð;—õŠOÅó-5Zå"\å¨3© °ý¨‰æ‰~eç¤{@P§œT:oý¨©6K¥L’^y”TË‘?Jº¡#WÚ¡:`¬ö*•`YÆ¿µ "|Ï’¸dªžh=FÿÚ[òkeÓT7Ö @ø74+*tl0|åL»ÔÐÕ hó©2ƒvwT(—Ü\Œ´¦aV´¨t$¸0[ʦD­–êé¿ÂÅš¬Ç[+ “Çš¾V»ýK{í r-QQ™ž©Ó=Ag, H6þ´.ÅrÇ'< ¨+6Ý4íý¨/Q|FwK¿³ÌpèßûPÜ6–éKöy€õ/ÿ6Т&Æ4ÞþKÿÍ`–œ剉yHÔ.S·§š¼øe§,ãR19žd™ÔëXÖ•ÎHJ {’ñ,šÝQ¶XK gšw6þÔ8%ù#Vz”—Jé§êVÜ–?Ú‹¾J­l ÏR”£¢š~ޤ [ßÍ ÎÙ™†gzyó‚IQ¥‡êÿZ3&⼕<Û-x^!MŠÒ¦®ˆL@SºÁI¹–ØÅ«*ÎIô¨'ÜD[ζ² I\) Z ± Þl¥âùÖ––©T¨Jæi:TPbä~´K¦MÈŸdDâ(vþ´ldyÎòIL©„*þQaýhËVN縓3Å9&LÐÏ(þöÐC¹^{”Xp'0½’/ý¨%BØŸ—RW³Í.´ j.6-›\¿›©êÔ©À*bBF”‹\ÞÃÖ&ÊØŽQj•Ã2S9 R¤…$Ž£pb¬ä½ ¢JI!ìàDä7LÓã8Œº$)sÔ”¤N¢Ívê`ê*Ù[OËêwɨ$wHþô;‘{XÿËÉÜHœýT‹ÿjõ&^ä²sô„ÍuSÍROì {¹¢4Þvíînó‡8¦aD”bflÔÈÕ¤ Gv2Ïêˆùý³:~‰ËܪºñÇÑ/'}^¢z•ÜìÐþ^HKŽ Æï¤1þÔ}há”:V}—¥…4×îQÿÝd¬Kиeüz—ž)ø3¤M?£*HH›¹:n]šý¢[Xe[`Ú©Œµ­E/fbÊöCa•* ÄlUü`êè"£fÊ,:¡rfŽ,Ò<²Ø”–ßÖ2ðHåÉ~ RÝ©ªC]ßúÑ|0Ö§Ä @J©ç7d#úÛ©Ò*|A’§œKØ­oëoê4øƒ!¯"£^«²C7õ¢­ËbŸ%iqO<9`JͼFe6ePgÙ§ J¥€–!ÁQ>œÐÊÉ«¢å—ëéñl?‹I¢!@©JTs·”?­áW‚Ý#y…å¬ËW%3eá³å;²fI˜ö7¤e·ÁsÊ2©òfg+©e‡ï.cËr[£J-ºfn—3ÖTk(i'§É1rU±ˆ±?lrê44µáÛ¬“_¯õ.œ¥\pfÔáþ#Õ®n!9j[ËY›6y%÷kGt=4Rí‚Æp‘ÑêêK š¹¹5-j˜±NI¹R¸ŽOõw]ª¤rqoq‡$f™:UÁ”²Y‚0Ûú°µµ‘ÅÕšÊÙUXv+óV)C>Ѝ§ŒŸh”P&!ô…#UËXúF•nJ¬¶ !†‘{õ1VP¯/RŠirÕ¡!;»¹û!Åã#rhÆñyæ«¢®Gc&¡2Ö¨1Ô•%û‚ sÔŒgÙ+F¢Þè´'Ä%)uŒ'Š&döâÿÞ y½w?áz}ûÕ²ÛÇÐëï5+7älì>Ε2DÚŠ•"dÓ5rÊç2–lTC]^»ÆãÓh))(«J¶[xú OQªÈ‡.gµLU>yàð”µNú"šÖoM¢û$žwÛ$‡+gŸo5"tÄÏR”£<ªv§;¦{ÿ¾ïK³²—oñ¹ÚÜZ ©Ÿ%“W.³…R|Ó2p_mÙö„´´¤ªqM/AG ÝE2Ç•ŽÄol2Zo&Ÿ ¬©Äq#C†QTÔÌOŸÙå• vpúvv?d.‹´‹^—³šeÍ—*Dút-µ¥)š¶ÙívŽSŒmJ­£K¸Ì›ƒø2[.¢¥GÕsÿâ´4#òÁ/ÉsÔ~I†ø•*•2i±*Ô!; Ψ ß°}O6å8Fþˆ{íEWF2ð,øT´ÉTÔ,3­FpÕñkÇOq¤íI ÜÒM!j2Ö{™5S“=*™7’`˜©Î¤ìB­qa/‡· lcòõ3snÓÜèËY³ ¢ŸU?5(•ªa•K&j‹ü íhë~‹o&&W.¶”­2Õ)@è™*`eË[]*{ˆ¶Ix%Yg C#áDO†Vsni•—P™8-iÒD²9ìn[hç8FO*è±nðh%ø“1E$ Àý=<Ñ{!OÍícÕâDÕK2Ôj’uh/¥û¶­ã*¾ä³·äIIµWŸ¿Ü‰~"­sP¥K¨š¤2R} l6Þ‘¸Æ+ )3!~*Wé×Q\,V¦HìÚöôŽKCM6ûý =FðAþ²æ©$L•5L­@i7õóoíQ¦—ß‚9zЧ‰ƒT©Á_T„›ëEí4£¿ r{¢ã”ó,¼jW "¦WìL°VþPåö¼U³YûM´ÝHR´³§u‹ÅY܉¥¾â„´‚‡W/mþ»vôsï LÊbµLTêàïä‚XÓFçN¬9 R Ýýæ9É[1mEQ†Àê:{ãmdÒÚ†æ}#$ËXQ:¯oÒ ¡y$©E2,²uáR5!¼Ö—s i6Tª‘±˜T©#``’lŠù°æ­Û¬Uœ0ß„¨%‰;½ã-Þåú >ÍmÞ4¡! P`vK–ïlÔæé‹¥Á&̨Mÿšb¦I^Èå3•:¡SIR”|Þø‘yvT±‘¡LS¼[º%!jé´VóF_ƒ7  ¯ÄgT4s'LÑä“-D·vñÕdÏ¡d™Ô³•"¢TÙS¥¨¥H˜’ H±±õ‰f¶ú •=HKð¢3}“fëÇ$%aA Rz+”ý° ·/^2m"’Ì5²UüõF= Û7+Õ¤égõÚØ¡øµZ©2¼û±¸m&+_Õ²‹ éY, êÑVʉ"TÍ"YH¹=NãÝvŒýL‰:—)‰V“±ëòO©¾‘“³lêOk¦Ëx´éjÙh£šQ»X„ĵ³ K”hgë”BBu(o¨\BòWÉQ4 $n‘ 3]Ë%« yØ~•£ËX…µ‰ÔzÄ:G)YœæZ/`öx‹sUD5jáÓ­D(,º-gäãÙÖ­uÜä•Y+RX>£iQ˜ò`ÓÌ.”r¤¦ÖøÝà‰ª`5¡L½Ý»Æwf6¸>bÉ+Ã0šêÔ¥J§µ€mbRqöÅÅ[x`xÞ‚¼S®£”l>hs}Š€ì~È–†ÛšŽ)BÒ ‰C»½Û·¾ x4lrâÿÛt¤-ÞzvÔ-œn_2BJk«´ ­š¥$wh‰VÕ–IÀ–<£¯h¹nŒï¹©ÍóQ'TÛÙŸúÂBMÖN.™ª›PVT¥wsé>JÕD˜,»ƒqÔF“0É)‰3—,)Uì;*æ\RÚhrî+UO7É:ž’b‚˜±¸‚#-¤X§%i9ƒÆpdKùÓÄh“1øF¦h f0ÆÝâîVdÖ¥Esu%õ„62ýMöUšª‰ê’²4-µùK9n¶,pj*V%SZ˜«¯7H®­äUPPiv& [>ñž²b$¦BjËzëú™Š¹d Ó*È ÛH$õ‹‹[™UÒ@V·sc™T’æÎ2åKHš²°”„‚Oýb"7E¦W†Ùú§ N#'#æEÒ”ê Ã'-,îÄxÉ`ßdŠ®)MUAS2’²J©ç!d*\Ô”ÌK ƒµÁ·x©rJdæ¤.ã” ¿¾Š&åÿ#M4$’¹‚®ZMÈK „e®N‹)2õS-(˜Hr°nžÑS5ÎHjžUÊ;´0Ý™|£‰gZ¹•9•H[”¡™>ôˆŽ¥¶æ£˜¶aKRå¡ ý¡¸÷FÝ3nÇ&jøE ¨öˆ7“;3kMãu§Á«æPËóUû:̰çHu€ÛÛßhJ‚W¹Œ«¡]}6_SK%¸“åHZ‘-Ë Jƒ›ñÔ¡¬ÖCJ¨{£ƒ3 ¨X«’téÕtîlb,6ÈðuÌ—J‘]ަ[!2½Ÿ†”Ø%Á{FªŽþ†Ôù&oÓ}ãO™åLíPdeê…•-ô+I®“7Y#Æ*©¦dùËPu)jQQÿ;Æé$¶öoÖ*•:fGj/æm¼.ŒÑ= =Mmdº::y•¦‰r¥ ©KQ,¹$‘hÒÎL×#ñ|7Âk=¡ª¡¨ÆUL¥!Läl à„/’ú˜®.X;Äî-Y`ÈËÖºôQÌPîö4¹É#†u¬Z&ðòϪ–Z²"y5–HP¢’“Ö3ÉÌ<]®R+×L•($ˇ·œþ]VDcs¦RÁE‰ê#*²iåIg¡‹Þÿ˜ŸS? Ã1,Vi§ÃpúªÉ¿©K)K=NÀÇìúœÞä˜v Œ×Õ*žƒ ­«¨Cj—O!j!Ç>Àý/4aÖÓϤ¨4õ2&ÉœåÍI {ƒéSÉUòD•Kg‚ÂVZ¬Ãù§ç¯4’µþvÚ®•Y[÷ˆòò š:)§ (#C]âÙž‰ŠšU/Iu7OQ´Z7±ÀñzµÖbó'¬(•¹,ðŒÉQb¾‚ÂÝþèÕÚ0ò8)×·¤ƒ5‚USÔ¦WÈš$íÄ):_}ýÑvÀ[IN½$‡ºšÑ³U`V¢7¶íÓþ°¿?èWvZœSÒéÜÍBHþ‹±–¨êþhU&2…(¯Ÿ1$»&ßáÞötOZ‚O ká‚T’—X°?Œ^HððC§JÅÆ’Gx¶à€ÖDiøAìUè7ÌT$õ#¤]Œ«Ükê!HPê‘am©jBE’Ìz˜‚©e‘ ¤’²Gn¿¾ÞÈpHÒ¥¤„ènCõŸ°êÑ ¾P‡ˆJ’À6Ú¢º"ÊE/š*¼OÃè‘Âø/•[!å˜@Ágð Ð ëFqJIµ”ƒ^ºiRÒµ+‘LÉUØü ò‰jò{×4“ót‰Y'ðžµa8„à™¡Ð7“.ÛêW¹x⓪•Ùì“æ4xãåO‚ÌÂ|_Å䜛GÐè§§¦àÊC-ô%‡w>§Ö:i¼5³,œå»©‚º·XèqÝ–œ¾¥|Ù…-¦íI,¯/œíëkÁÖ'A›ú)dX…4D±e~Yuéf¥“~–%àœœS0_¬. LõŸ_1Ú2ó,•2ì?Œk“›-L´’6/ Ø=uò7ŸK†ü˜ó–eN†VVPéòe8X²–êÎ:¹ŽSMÉ+=)(·F_…Y’“ÆŸ se&kÊz›Ø0ºÊ‰…I–´JHOÒ,­ˆâ©Vn†2×d°Xµ4íly3I—IÖÑI(T©×% OÖ Qú˜ìpn‡e…Ñ &þЂó ý!Í…“¤ä´âu@z¹¥úm|££x7ë.,÷ûâùÄ"Ùjr‡+Y1V]³œ¶ô8õ|éÕ{s¼eeÚ:j=™*ÉH¯é´ioHÂÎ èFªÄ§S;Ü› E2Õ£Þ~ÑRHùåú¹uO ¬™í:«ñʼnIµjÀúMö·ÄóÉ®öÙê‚J &yßå‹ÖTÖát3q¬“‰¢OLÌ·Rf¥.%¬¿ÙîTtŽ~'ÉÎo 3‡X$±„md徿ÿ#(ŒSdEí±ˆòDèëø*T¬2Jf-* ÔÁFÂæ+u±ÖÕž•jAûýÑ êrÿÕùì à²@-ï]¢Ib‰îÁM”ÂRHn›ÅD–ô=¥ù·õƒô!Û>B¹sÌþ5I¤ÆåÉ&šRjÑ"jPS1iŸ$”¨(†‰9TmšÓ]Ò;M&zϸçÊɸ5^SÀ°Ü*ªu%6‹Ì"žªTªžR™iQ Z’B@Eš9%gdܧGùteüSñV™XÅ_¥«ª MQµ&BÒ©Ó¹Ž  Y ß³GX¾í¶9ÍS£ŠlýOHÕæŽtt/ Ô=† oAÔ‘}“ay*x£ UZ¢`’¥êßãëìnb× û2öåo‹˜R¬ òŽŒ’¬Â²¢¢msüÑ{3Kødcœ Gì×i‡ðì9%Õ¿»Ö2¶2Õ#Ú_'·æ‘½tŒN}¹Ü=X…ZŽVÌ!æ(v øäÚÔ£´"œ æVðÿ'å¿“¦e63ƒfÌöW©¥¨•PPÕ'u%!ŸQÑô‰ÝÝ%V‡gl^lðuÈ;±Ø˜ìðÓf62ð{×#q¿î1eƒ\£%ÌJ«±þŸg`¯qŽmT¨ê÷F|Í%õ¥#nê7äÃ|"¹âPl¯ÈN™h(ŸvÊÚoQdá ½•»¼mzèX2(jŠý[)Ÿ ˆÓOVç^Áѧ.áŸH ,¢ NÇHÞ"ÉSä•A]y‰,çoúÅ~õG!ñ‰Ó˜•`@—ëª3$«%…9Aä©ëÒ0iî/0Z-Ó¥ÿÑÅM‡Vx­>š¿¤©J´°Ÿ)* i3ÍŸm‡ÙVûp4ÒîÉÙ3ÖVÁü-ð‹Ƽ?ÀðœËŒLáñêULšžNJRÊ”¤ºf,\ßO`c’rï4ûcÁ¸eEurªª&Í›=m©KQ$°n·ØG[åœ×© µk“Ñ¢¬µehé^!&~W™n_kaßÍɘç èªJŠ|Ìž¤½ÑQbk±…‡¨¸~#hÒJ̯ŸÕz¥«[Îxç'Ž›A!à¸=H»Wßædt²MÏñÿ¤j;ýýÙêÜç—²ý?ÈS Åå`XÄ&TI «E*8Åè ‹­Ÿ{ï½ãš“z‡D’å=GNN—ÛÖ6÷ûû³5P#nÑ*×ßè(ÎË +¡¹þQ-Û0§ä̰u¯Ô”JÅÁ–’“ˆÎÇ0·‰XE¢lÅs è×aüL4ó°Š} ï³Áb9¥å—Ö÷ÑŽù,jÂr_YIÒ¢ÖíêeRCu­JQ)w@ýÑq±U!Ó¡3RI ¸Á,y±':t”–?tE“OÈç YåQÓ³©Ž $ê7ýñ(‘|œü(Ÿ¨M‡éô"ÉrM3Öôªu€?¥·Æ96wÊTJe)ŸNÁ{«ßÞ$m;CdY|;Àbó8ò×ì²[‰nk…38#qûclª7*:?vXÅpÉlêyr$Φ•®QJ§§HPo3÷Ç Rvþ¿~§jµH䄹’+fÉšŽèZ‚ íÞ:ÝäãT¨‚Ptب§±ÿÖEù(_)¥2ðy…’ ÉOÖÿysÓmQTŽ~ $(›êß§hèqÎÅ+Æi‡òtÜÊ·õW¤‘‡iúÓäøóc„ZþÉ%ÿý’#›ò¶;&©¢ð;€ÎË –ŒÍ†Lœ©i’*劘Y!:Ã’}Ñ̰ÝC¨Ãë±Ir0üÕ6ZÔ´K¥­HC’@ :ÜG8]üKƒ´Ö7(Y÷ Űêáó¥Tʄ̙3‚¥ÌR¬sÌ:¸Ú,²jmEtÝa´Û~â:¸ TÉH(òŽ¿Î6ŒâóþΉ>Û_èá2ÐD Òý[hë~3ÝÑ®ÇΜ2b‘¨¦Öñг<_#’E0Cƒô>ýæÇ).;éAsh‚ÅIêÄD«/sX;fj•„PáTÔÓq:¬2@× ROL²«‚} ÷˜óŽ·;ºY)Þ/aóåH¢©—[6®q4M›0­CÊ ·ýÑÖ [g9]Q@ ¨­>n©;´kÔÏ̼@b2MÊLÄê¨JÝ3„b2М嚎•ócÕe*#•µ÷ïVòftA<Á[9ëF1ýÎâÖ¯ËFR®Îûsª$Õ´t‡Èìєد|e¼QάËËɧŽÑI®š¹T“'¡–”.l,ûÆ“¬¼¦Ë¾ü˜*ð,>~!â…dйÔÒæÏ•óÞ”¢iH*H½ãŸ|•šQRf\ÿþKsAáø·5 o¯áÀ¿õ6ˆæñƒQÒŽížgñƒ ˸z®Âò®*¼K •6bdÔ™òæq&)):K¤$¸ï–æ+%i3K0øÄnò³­ø0’šL8”……q] 9_H×r÷ŽÏ>¥µ%C§fš:(¦ŸAÆáÍÕË9œ3ŸÔ±,>‡_WRSަê¼óf ”éàž>šÉμnYöšQdùüÝlˆ•Œ Òønp3¦._ßï1rX+VDôÉWáìcXjÌl?Órpã²Övsã’ËåÎä9sWÍr ÀIæåO¼ô?B#`¶TRZ÷"-xÜ4`õë¼mÇ]¯¼{2iapEÿ;ÂÞÄyÈâ ¸4‘6Á¡ñ )üžš$$«¡Ò¨2Iðr„Ø)ÅÊ‹7oXÊÇßÞM?A\i»ÿŸ„[扒JEÊMB4( (k ì÷hªëjÎýŠü¦±,?Ü *äÌ2U0úZyS×2J‘Æ\¹FZ”L¹¼ÎɹÚ2¡žç“«—¢Œ¼x¥ñÁŠLµ˜°ÕüóK=åÖH’“!H +\Å)µ,–o]⨨Ê̹·ƒ†¹NßçãIòb‹‡‹Óš)ÖM¹œ1äVÑ„f‹ß‡%32…¼îóÕÚÍ,º7¬‡$wíïŠòZ¼ðse[OuZœöDY7B/6S¥¹w;õL"ð ¾Ð9›,§Ôà8ìœV’E4ù’ŸJ*T‚é).ûÁ¬QpžÇ¤©~Q~üñùE?&.Ÿê(ðÙ ’ytu™«Ëë»ôŒ8¶ªÎñšNÙļuñ#ñ/>ÕfLBD‰v†“%*JÒЊ”Þ@wEvª9JW.â%dŸ2ʽö[Îxä»`*Â$-+Ôš´’T,yÕøÆnÝ£¤_ 蜪–x`h ñVåyÜÂÄ@öy¨Ò¯!¹6…dcŠf$éÇjú:íé¨íwÜ#àŤ;ïÒ:&÷=zDOÀKÁÜ~N8á>x{‹eQ~*â>-fŒ?ÄèihçRÐË¢2é%):Vµ;«¬Ã× ´nìTsœ»ýÿéÏ.moXÙ–Îá²›¤.R}½t;'hÏ&–Ø:-J‚feu/»÷0ú•¬£¬™²•¤€lâ. Ó8F:‚Œp½•ÔæˆÍof£ò´@yRFݽcKâ«2²ì[»û»F{›O&Z£°e•ƒük|5MŠêt=A•a¦¤ÎókÛËøÄì©÷îoº¢ÔFø[ãTÜ£á3“Mžºî™¦V¦Ñ9S cõ»­[îDOôg ÊÅ· Š©¼lgèe`àŒB]ì^Ç}Œiåd’¦v\5ÇÓ*Xæö}¹K¼aæ›:ËtÍŒÐm©a_¯&U/¬·< 8Чoæª Ú1N­œZHÓ1@¨0Q,ñˆï“¬¤H¦RÜ–rÅyú˜XBË&YpÎöWQ6ƒÉé ™ò”Áé²v]¡ÌÙR’³ËÒ©¥aÕRè³ùº–T¥ÍwÕ¨’–ÞÍq»KêtŒ•åÇû_â&ªÌµÒ¥Ë3 Ó-Ò¡¥bÖJo9린a·&S’ :Žýió_ì2Áʽ£‰ö)žíÄiSJÂW±Ø°€‰–$.†JïДˆ—jÑÃ%HÖ, [—0yž‡"ñžZ†`Z®Re‚ão:¢¼?‚4‚Å?³ü#Ÿ¢6Å/±ŒMÁÓ¾L¾)'ÂÜòœutj©Aó$KÕþîbC iÿ¼ï®åÚÈ;,Þ|¢q̧Žâ§¾ ]ÃãPÕ¡s’ VTÀêP%ß`w>f¬ŠT©#’gzì7ÍX† GìtS4päiF–@•6ücIRª Á«`—ÄF¡Ç¨Y:G‡ä{NTH,GµÛ¦ÊŒÖ['òÙÑT”-%ˆ a¼h%Œº^DÐ4°fc¶ÑS·<ÿW,#ZK7÷F^ÇDþ?° |6‚_|™s5™SØ(¦ßlðG”zÃ/<2¥ðJ‹"gœ½ŽV¢™hZ½š’h:d&SŽ$Ïçtëï‡}ÆÔâ£ÚÎgãæið—ÂdIðó.b˜eJ*2bë(饅K`‡”Iw(ô±ô+«—ÐË®QwV’.R~V f<<›h–ïüáŽVI,£¬øRŒ)"a@¯œKvåÚ0D°‹4ÿÓ—Ðî_ŒmU¬äy$“`[ß”F§JyJR^äõ‚È«bN}ebã¯sx&2†£PF¢Ì6 ëà˜QíAR„£úûíÖ&j™U 1¸zC_g‚Üœ˜B \ž‚ Γ¦j”¢‘³‘wT‚UõE©*•âý Ô<ÜFmÇÐÆfó‚Ãæ=m!BÊF’Ÿº9Ë'Uë±!mjHp?oqú°m0 ÁÂ…$Õ3ke)Ë;lGx•o%MGbÑ€x‚dáõR1.:ç-+2¦K¸I ä©ÅßhË…çƒjT³¹KÅj]‰N¬QS&©Eú‚IsöƬÃ| sì\~®¨6èVJ'Ê0£Ù0„)”µM’½Fìe£z5·÷þD£Y_¹Ï•¸èsê?é±Å¶Ýßeñ2è,‘ô޶•Åoá2ñGpù>)'Ã,($ƒ¦–H-ß„ˆå¾QÕl]ìaÖs+«•G‹HŸ>š]D¤­*Z& )*H ÇxÌ•àÜ_nK­>;’ŠJÅчVI¨”D™2¤¦^ u8îößhÇlšÜèæ¯b½ž3Üz¼L!BL¹“  ­ÂTF÷=Ú7Ò9ÊMº4ÝZCç¬_¡>¡ŠÿùCÛý×üâ#Vn8Y8PX2£«PvýñÙgcŒÖmxÒ5aó@)H³ˆÞ,paùò@tÑcaeAC€íÒóc #¤^þaæÛ¶ñ†ÍE;t 8Ù0ØU²õIœ°:¼E.d£ªª'V™²å¡Lê{•©ö Œ;MÑÒÓF³Ä ÔŒrlªZI>ÏC%ôK ÒKé'PÅ¡ÖáÊÓ¢ª¥^웨ŽÑ£5C/ÒœJUÉJÖIìH°ƒÍ"/,Ḩ?•¹¤•«Ò‡»k,H§šFe¹‡TÅwÜFy8‡‹iXÎ$§)ë×Q$¯cz++ć ]ãf„*^ Æñ¥ä©*¶*¦Ì•îÛuƒW‘Ø5SA÷åsÞ QThh v'¥ðŠÚy5kt:HV°•½úu1%\•U£­x97AÂÀšÏµ+”ù÷Œ[”¤ø<õñ::ÎdJ¥á˜rV‚8–PõÒNÞЯûuSÿëýÍJLÀê'gþ]ŸS-WþœëÇP”×S¥ÂÀÔä]ì •£OdmðХРKSîÇÔÄr®  $Š˜‘`×í¬lgf332²T¹|B§u³?8éHIãq¹p(á’ø…æø\ƱA=’6T  •L#¸ú Ä«÷ˆˆ»ÚJx–C[¼Z¤9&—¤té¬DY˜ä1X?Òh¶Lîj3ŒŸkÂ'ÈŸU»–"*X³“bó)ª•)ib H¸x‰f¿1š#Ôn/ü"ú½  ‚}mþ0ÛîC‚-¿ý!ô3Ü3†þ"%àHèzF¾¿÷#'1H©šZZ59÷¤ˆÌŸjfbÓgAðÚšd¬ŸDfJæV¾]_¶¨VçJ¥hÜ„¤\'Xއ "—â• Ÿ)3kCéÛ骼4fŽv†K„§oX‹)欓†¡°`7¥œ˜îLQ&c”$1/–[ÎD)PHQ;B™K”µ­)Hr­¢6–à’™Z¦×rûƶ2ü2åMJè°Šmzêb5fÍûuš¥IVÉ£¡L „%´’^-U2¼2:Ô•S¨)[‚º4E—`äYïU6/2n防~Òo¼_R,Y¤bÁ­ 3~@§™ý`^(-I+­Çº&²ØËvÞ+T[°ï±ýðÆÄ³a—%ãÓ”½!µYì/©´òto‘6¸×UÊOÑ é _ÍaMã äéVYt§BÔµhº<\Ý—ƒ[™$ûN2_›kHAz•3Œ×R®–½tó‡2Zýìð_ öšo#!D9þ¬UFSKaS(”>á;ÂòØïÉP@™16^×íêø|êÂËYeÏ´[¹,Á‡]ÌOr÷^YºËKE"&Ô(]-¥?­¸7ŠýLÝîv $ªŸ æ–ÑÓ³˜Z¦àTƒe÷ˆÏ¡7)¾-á«©ÃÄí/¥·ì{ÅâÑ£™¡ R“¸"ñe“ÜxMÜ/öƸ1|ÙAï …ÖÃåË*J‚S`ߤ2òKo#C€Ûß쉸ÜT¹;{¡°¯çɈ›SKANxË—1K饊AÝ¢ZÜéÖ1h3•ªÄ¸'´GÊÓ²‰KmÏxÕ-̾QÆóÞº\lÎ#P^ß§Ö$›ŽƒÃF“têPÕ•"óHU ³ Á<Ùâ ,nÝa±UÓñx-ŠÞÒ­ö?¾*¥Ž ܶ3°T¡X´®"ô¦÷m¬bY„έáÔÿi§Ä±1+Dº® Z´•$ÿ“W&ŽÏ)3v½!d(7ì÷ŠÙ—•F·5Ò.£Ÿ *B­ß”ˆ$‘$íN¾™Tµó¤ÌC(MPú;Dn™»´¨`‚,ö÷Åia¢ ćgmãQÜ–-Ë5ìàv…+ Šª×¼E½"§à v¿H%xýJn²|ÔHŸ>_éêe*žZu)šûo[-·ƒ²aéPÁ0¹3U©r©eJ]¼ª º}}ñ"”U2¿L!R~kû¡k‚?,çÞ+ás*LéèHúg×Ö܉öµ#œ ‚l6)»ksyº†ýbö®>ƒ˜ùYÈéÞ+µmrKäÒNï¼ZJI‘XõzFn“or] N’IQXÖÉ$ðt&¦£Á$IÅŠvmiQ䤬Ww· vû¢v¶‡zf< Ë×8wý÷í´Ji½^âËKuçIC¢_/Ýx¸'rxùS—åÉ\Gè”lx+ûv‚·ƒM«U¹ÎdÍT8VSíB’L¹³•¡IÒPµ%A”ù†Æ7¦ªñCRMÕ³C5d©Hìoäã|•¿iUW—¦¤sh$'Ô%QZÀjò_¾N™Ã•’eaõ5|*Šv”´pÖX¥á-¼rÛá:]Ò:@Ìx"Эt¨ݯðŒÚ—ÔQ˜0PVð×øD´•î/å ãóßþÿY§¨ž,ˆæŒk>ßdWÑ.ßt["VÐÛ2óƒó»pWº5ž vyñ -PdÊúJzÏh¯¨áðepæ'ʰMÊ[cÖø¶Ø’•DælÒXbŸãR¬#œÛ“tCˆK×)B`²Û“»zÅ¿­šß“Î1A—³>+…â“øB«ƒÂ:TuiLÅ(?¬7ŒOº¶KdÎúŒoš¦Mc“Ó†«ýъ烤d¶[Ьo JÕWe>Ÿ£WǤDÓ—o&{© ›ŽaYDÊÛýaÃUût…®M9PŠÇ°mDš·J¿á®Íðƒ'¼TGùG€«é {¦g ú%ßî‡6VñÛàYyÓ+aˆ›UW‰éE2LÆàÌú·k'ÒµF•Uìqú:ÁŠbøæ(„ýn'QU!O攳©'¾Ç«éTÌIÖéá”Ç¢uOXÒØÂ§g#ñ¦‚bq™UÀòÿÒYx’t– ¦÷E-KI&÷úúĬY®Ö4.î‹‘ ­ËÛär\·r­_É–8 —IKßVý{Åi¥dºÈ)º´U*A* nq`}"ö=ÃÂô:¯„xzÊiU4èE6·Ví«W¬6N‘˜½Ú:v;ˆ®ºE"TŸ¤—¯]÷vnž‘G›¦éýÔ§©wÝ_±­`„9²·£Æ²ÏRtß©ÎÑCŽ@µ'æ?¶­þ؉¤+5CN†§ÏNç©Ö­¾Ø½ÞY ™€áÈÐE?*™†µ~0\Ø«áý$=öÔ«}ðM‘—‡`¸Z¨Ós ¹ÕøÄú5ènå<ÂýGh•‹Eôb’JÊþ²¢ÛoO119FzëX/R`Ô/¡_Ò.Ÿ™_¶m÷ÄÂÁjžV ‡„)"E•ÓR¿=í¡Ko~aÃ×-GÙ´›}u[ï‹ÃðÀpý$mõµ+ñ‹¶H–GLÁpÕk*§r¦c­Vûà¾H˜H%ar'jM;öçU¾ø›¤‹¹³Â(©¨þ’–^I)g&ÏëKýM€„ÎB¯”hI… é e+˜_¤F‡ª5x•™ó™ÉÖ+‘ü+ƒ^p93Òòþu~0àv 9~€¬==ŽÃZ¶ûbÞã¿'ðÑ0M¸ÛZ¿ž…QMX+/a©Ué¯üõmöÂժ[°,;Šì¬ mίÆ"Øaà|¬ DÔ¨S3}jßí†á%tõ´JL©vJF=ƒw±)nÇêJtßö»E¤žCõ"œ„ÌABÃŽÐO7¹©®Ã(ê 3ek Û˜‡ûáJÐjƯØ#€àyy•ñëªÈ¾lqÀ¨¥ê“ÊYù•¾ ¶a4•ÐŠËØqHÌá>^u~0*«±ÊÀ°äÌ3U.ã««ñ…Z3_Ê7æ = Ô‰mÌ«ýð{Nþ†^AMCP‰²¤h2ÝŽ¢w×ÖaïfÒZZ•-nC5·ƒ²·LŒ k_ZMÜ´à›Û1k)Ó2YÖ]¤V+žv‡ÌZç*C’KJßíˆKÀðã,!TÖóyÕöï MØTòÂv‡¬)ìžWÖ«¶ Ѹ^†©$Šf çWãõeúé*‘¨iJ°ûbú‹¡Ãä©TºŠHJyոļR Á·Ã$J£’Q!Jþ«›ï÷EhU`˜Uæeîí×´DÛb¹oEÔäom¡tȰ°jñL6M`i¨â¹r?¤Wðª*i³8›.™ÊzëWãA»/ÃÂBÑMçªß|e¥TÉå08«H¦t+q­Wûâ¼³WÈïÉì-%ÓK¬vÖ¡üaêe=èiÀp¤•d}¯ÄWãxF–rMC‚áèZ€§Ó³j?Æ*\ùÚ™RD©jd§koÔ¯/âµ#I i#§x]}E´G8%r•-®Ä“éÿdHÓÏÃ)çÏTɈâr”nG/Û?B±£ÃI4¶ [Z·í¼-Øäåü4LqL×:­é¼ ÝÀ£Ã R—K¨¹úêü`é‹hI˜µ4º-$&ÿH£¶njð ÀpôSLü¬yÕøÅJÈ™˜NGHR¹t­Â‡1=»˜›¦ÅdêÒîvn°Å’Öâ‚å:TúJbçr¦ªÌ:É2æM!AæE²+nÍdü¿‡®q˜dkQý¥ûã;î«rröV±°;Ž"­÷Á+Šà9{ :~aûjüanÂtþ&åÌ*×ì–Wˆ¯Æ !ñØlÜ p”Ò1ïÄUþø<ä±’ÜE`XQF¤ÐéHëÅUþø¼`‹™º “&ô2´¤î5óÖ+Ù—eèe)ZÈ+æHÝQžD𥤻ùCí—’b°j± 5)i²õ‚g!¾øG.^æ¼¹†é$Ó½¿]_fñs¹S¼°üžÂÃgæê5ªÃí‚3|ŽF…ªIA¤Ô5Ûéo¾%+-µ‘£/ázWLÀ›jübª-F]ÃPëL‡P.9•øÁ]Y<“Ràx\¹Âr©f­A\EXïÞ%ð…›ÙaIJéN‘ï‚ú¯rdê)Ruƒ/NìÇ¿øDy3Í!—})Š©n7(iwmá¶YZ¼ š0•(7aÐoˆî& '\ê*Üv‹X#ʶ"‘ÎTyTv¡xö’R©h/µ¡|±ì‘)u)Få[Fo‚n†¤€§J¶KEÍÙ§ÝF#N‰ëi—#¬,˜£Uù1…ñÙù‡Mjü`’f»’M¡èË\ÉŒŠvÏU¾ø”m¬Ë¸_T|FÜqï‹ÚÛÈm¶ ËxaÕI¤ÄU¾ø:Íào JÈ4º’m[ý±\Ñl–›ÂÓ5Å3Yµ«ñ„¶É7Fê’DŠ9Ï%Ú·'Ñþè•Ê YS…*ý5zE— Ã!¯–&Ë·2[Hõiæàt5ʦSºÚüæÃ¾ðc ØÑ—°Æ Òû޵_ï«rþ­!tÎÌZ¾ÍþøÊU€ß¨«ËxRòM!AÀâ+ñŠ®¨6ù¬¿‡)’© a̯Æ´²‡«¡™, Ó°Vüçñ‚«ÀI^ †…ÐÑ2L®NÇQ=ý}`•gÌùkJ—¨›ÓÞ/Û$+™ªŸ†>¯N÷Œã4V”ÌS ‘Vµ&¦V¶Øj#·céK,‘i5D)À°ãÃzWHvNµ[õ*Çĉa‚©*Ì.çZ»{âî”SØUZ#üžÃ“.Y25$;s(,¾lpÀðýk*’ú›W2¯÷Á.ݰ[¶/Ìt8Òá:•¿Û Í’«(É¢ÁhdÌ M;}"yÏOŒ IäÛºt#U…ˆ‚L·šrHæIæ&ÇøEYÀ~ˆÀÅiSX…¡cPᔬ}¯ûâ/!£Y+Ñ- Sjq­[÷Þ ÝØKÀ‰À°Õ ; Z›Z¿'ÚDóçØŸgrCyÕ·mâ_,´/Ì´&Ÿ`éNµ[ï‹’¤4`´ZÁ2X³>£oMâ'jˆÒª'‘ƒQ„ªSÿHþ1^0F’[¼2†‡ Ëê*åñSPü).G•ln=ïxËOsåêëëkuëEÕnð÷XÃ.9kÀ³ Åg³LO•\e©¹G« ÊÙùο®êú=owßkè—Ÿ’‡˜0¥á5êÃÖ½K”Úƒ38¹ï ¼³õÝW¯IjÅUÿc”øê²kä/¨s:ôú#¤n+­W&Ór‘©jó_Ô´e¯&c¶ i÷!aÊvøM¦ˆ–HóyZ²|’ àjÒ®üã¤D©°ê¨f\\R–EßúÆ7”é¼úŠÇAUÉ­ò( }O«£mdDò"\t¸‰É•°àë=É1y4¶%rRÌÄr¿HY0 LÇ)%Ž˜môªÈÂJA$YØÁ#D‰Kyo©>^“{ì)A pÛ?XrTÐàΓÌth46v€i, ¦1ب䥥‚¥\«VÐò‚¾ Ò2~†`4X¦5‹û8®’™ò%û:•¬ ºTYµ Àίiëõ³Ñéá}Ž›µý×4{¿ F2Ô{™Yc%a¸¶d¬—#|"›G³Ù•}I-ÈTæ ÷íë=«­ÓèAËN§+Ů𭋥ÒFsm<.Hðœ&æJì?¨à{/ú5>¤“Ñ^èéÕûV´#« ®ÿ-r‰¥Òün2Å‹ðþŽª³]~Š\GŽÇ„O†=TåËöŽór‚Ôï†a\ï–(Úè“qIáßìW³æ†àØd©Ò+±Oª›†®…-ÌI³ºÍmvÖ¢øxxõ³†¶Œ#K’®%„‚t¾ñõÓ£Éõ©I@J¡º-;º¥\W&Ãh­5‚ZJ‘Ä9Ы%;˜nì¿QòŒ´*—¨Ÿªíé`g’Mir’­ƒí É+‰¤w÷Cê_ì—0'N”}kïb'v4#D ;'ÝøAçaR€Aêbßì"6ÌÚ¢]•áX&X±7 ¥¡DYýE2Êy݇–‘JR³­›)ábé ½!Z@é©ýbVh›Ðô)D$ipÛ¼V‹|¦YZ «HVö‰U¹)Ûa/«HèYâ¥lª­‚…(aÚ (Ž©!ËŽ»cdV­Ù#!sô§nñm2_‘³&+ŒT„±;„w¢Ö{DR”RvNÇ´E¶Älˆ…*`J‡'X«,GˆÖf}ýc¢:Ò–«¸»­¼ãlìw›‡bIdѨ¥UKg}£ècc‡£LBºuﱂ<ŽHDÅ3©=bµŠàÓ’ü‰&(2P év1ks‘Š—¥ +KZ*¤Éït¤\XÌJÎHöÆÃŸ£GJ¯wƒòZnÓ&–D—dõ1k…æÑ•—åaó1yhħ{=2ŸTÝ*V›°¹»GŸ©–²ÒoA\¸Ûû›‚]éIà›1ËÓŠO“ƒÏãÒ<5éRz²¯»Ã§z’Ó^õSûð5Sµ”` ²•V´z˾ ÓYO¡nê`› D¾H­åŽP*dnǾ-=è¾ RágO^ïŠ%ª,þe‰yš¶¶Bë=”SÒ®¤«‡«PIHmÃy·ô“í~¾]#5 îio[ߣðzz^›ß7ÂJ;‘¤Uæ*œ&Ö©tJªÕÁ#R‚´èº½×xòOÛOB:ò‡ó(¼ú]íûcÒ©MÅ<Ñ J¥E1™‰b<üãì:x%\íµ•ïüc£ö¬¦ÚÒ…ã»zÇèet¹¹:ãó632N1äa”ù‡ˆ¾©R}‘cJui!ʯ#í}uïe¥Í/‰xú?û;³ôÈØ|¤ÒÏ—ŽqeN®E{2†•›·›·ýcZ^ÖÖr”u4騹n¶_—IU+͜唿'pÉ•U¯1U†T™µ´y#*vXp*|4~'PóÕå—¡v¹é¶Í±gÆêµz§.Í…ôþãñ ¦ÃçVKÆxàéà~n´ñ.Êëfõ‚ÎäÑëú]U¦ô©ó”ë+3Ê„¢¡öÅŽçÙJÅn&´“©šÝ¡¶K–‡[­ß¬D›Ø–¹"ÐÓ¢ô«n’I&G¤é m][xJƒoqee`s»z<B¶'§Fµ ‰W)Ü´fm¥T!Â:vsðÿÁfÔÑË•ÇB4´ýJN—cåÔ]Ý£ò>ÏöƯW÷J¤ïÿcéëôËIµ¹•r%%nSŸŠ"Úç"µT©O§JBŸÍ{Ÿ¾7Õ{fZ}BÑríønêóuàiôªZ}É^J6q¡—E‹Ì¦—#‚™d¦b5?0$ÿýAÔ=möï×δ;%F¤0äò01íùŽD‚jŠ~çïéÚf†½ù¬6*þã&ex6¹O F)ŽK¦\Þ€¹³4¾‰z€*g°; Ç‹®ê_O¥ßrx_^º:}ò©ll³ €‚šl#âV ÁN%ðV8ˆ¸â:‹-ËN›©ê»µ£Pí¶íoãÛŽ³„¨¼Ù°Ì6ƒ À(±Jšî$¥Í—*¡% +)*Pp¢ûtåéý§«ÔêêhÅe&ã¶Û.?©ÓS§ZqŒÉsUËÔÕ¸ NºŒQõ-¡cD¹¤Ž¥‹ì}ÑŽÚ=T£«©ª±§j±—Ëü£Réà»c™Wî74äI8nt°ÄOö‰5FTµ/IN•)e%-©Í†ïé=¬õº]My,ÆñôWàίKÙ«^ôV«p%ëY‚Ò©Õ&¦l”†ýB®çö{ÇÓWÙÒǪ’Ý'ú×ù8{·ï=Úõý‹t¼«–ëjça}nºÁ§DÞÁǶ£bY,ëxøòö—U£©ª°÷Û¶oö=+§ÓÂý‘ÑåL’m\x•õø«ç-<ÂÀ±pFÛFåí¡ÊZðù1[g¸Ž”qóB‡ˆS&šté©#Mþøýœœ’œÕíjˆŠF¢•Lm;[xÜnȼ¢Ñ”ð|9X F;‹h“+NšndñE™&ÌXí«êµ¥­ø~Ÿ~^<^ÌõéiEAÎFR²öWcø¦]Ç—Eìü1ÂXÓ­ZO˜ß¯CYÔijèhëªrî½¸ÊØ×¹ƒŒ¥Â£e—²n =8$Éóžmoè4¯é4?Ö ³oN£Ú]FŸ½_ü{|bÿ,ßìtÒé¡8żݘضƒá¸½·à^ΙÜN%µ)ZçîàýÑßG«ÔÖÒ“ÓÕ´«5½úq[ÔÒŒµ¿ÃÊyy’²šU/ ž‡G:Öx¼Dºz¸cÙÞ<ÚÑêå£7ržÛpóÁÒZZq“\"*,¹–ñÜ3Ÿ„Köi“*›)æ+L°¢“uèmx³ö‡UÓêêéêË»¶-§…šOcÑÓÔŠqYfÉ9Fj™C£D‘@f‰®²óµ³6®×}£’ö¶»écª·îIíµ_ƒo¦‚Ÿo§îsœÃF)1êÊY%Ñ.jä¿ Q§éõ¦”g.Rg†qQ—j0%FîSd«×´wx9lË7‡X>13©ÄUªž†Šej¥1n“ÃpAK‚y®Ý£ãûS¬—OîôôßÅ)%ô»Ï­x==6”uœ¶HÍT¼™Šb8]=°ÔM©•)rx³WÊK–>Îo«éã9jK¹(¶%Ÿ¡ºÓÔiAVcv¿¥ŒÑ6Z©_  Ð5ù—¯o3ŽXùÛmôñjU6ÕãŠúVç£ðu7àÇÈù7ªÆñøŠ5PÊŸ2’XuýРFÊu0}ìc¯´½¥­§CKæiIí•›YX³4e)9¬pG)á“<@Æ0ÌBÚdJ§UI+ˆ¤ñ`J ‚áÆ?uÞÓÔG¥«¥.ÖÜSuuŒâ¿¡tzdµdšµL“;åŒ"—&¯8Í5)­4²ÿ9TÝcAP;°séÒ3ìïhêêu~åê÷ǶöªÊ^ ¯¡¥Þ£NüÙÍ´þv4Ýœ+ß«Rm9«ÊØ´âTâ§&RN’¯£øˆm¹íxŽ“´|^›UiõZ“˯Ï¿Á~Ìõ ÍåâoúËoº3+?;ÿâNÿ~»¶ãôE_ÅÙuyšo n´%´ò³:RðGè}‡§(t±O×ú³ˆxÖæ¦˜$0:œ|1Ú}¶©SÜÜá*l6Z%‡gqÚæ1+$6(—(pÔŸ£Pñ¤ÞÈÌW#3€˜rŒµ(°.Ãúb3‹ á¢<±1G@ê]Ï~cqíT#c1@'Vã¬Mþ¥«É„ºÙI˜B×vÐjˆÚ±%WS&f ¶ ØÆäð;½G ù £Ä»–±ÛìV(Ä$2~–à‚yOá\•É=ÅV#O¬#ÝÝá°Kµ‘⾕d«Siº¬n;í à_‚ZZêeP§IVÌw‡Ðª™°Ì´–q÷AZBÞÂ!"䆻| u’:µðÈ \‡x5‚ðaüå&LÝ+›¦îyOá ±Ýè]×â.‰`TX^5‡qÑC%2d/Œ´Ø d§®”îñð£ìÝM Yjtó§7oý_©ì}Tg«¡éñRŽ“ ¬¤Â0ÿbö­Ï­ô—dzŸ¶9¯b)Î3×—wmÖ+£5øÅµ Y9ñ‚œãsqa‡é«žÜeñO;'Jm¡ƒÂ9¯`ÿÖ´e;ŠôóŸ&—[îþM(&fš|G2~%µËæ—©Ð@ºâú~Èúºýz2ÒÐ}­ÖwçÔòÇ©ø»¦¬ÌÌ^!áµ™eX=³J[kcÊ1iî!Ĩˆ ö†_^CøBìËn8%´ÌÒÛXþ°šÍ‹'¥#J'2¿šo÷CÐw'¹µ“1¥!P½‹ìÞø$ž¤¯q¾ÒA=/×`›m1ÊSLÕ©ÈúÍÅS5uXŒ©JK¯K½›oº Èmr†œV™ËM·m'ðƒØÍª¡N/K¡¸·ï¤ÛîƒÎKqxµ*Â[Ý ¾è®ÞQT¹b”¤ë˜ìÚNßdOB)ùâôïy®ß²n>È2÷+2i+ij•É1”NXÚ|‚Z„À ¬C oëJ®‹j­‹9?C¥œ%V÷Æo“5sÊ$¤›}_tj‹èŒ ˜<¥èTÍ..ßîƒÉ.·¬R”¤+1·)°û ¤®‡?çjPè5ùNÿd9#iªE«3朽W‘0ü>Rt×JT²¥ºü¢Y3o¢éuôº½IÉüüo®ÇªzšoME,•DbÔ‹SLšÉÛÊo÷GØÛcÍhŠR%@™ÚŸÌ4ŸÂ®¼ ÆV … LŠ„ë”­`ob#NÖhÒX2‚©Ë«¨Œ*ºdÆãV ©J ²íÍ]dÍÖQ‰_P”¸ZØû·…:³J’1†+L¥i–®nìîý­+¥ç³;'ð…ÖCkƒa—óMŒHŸWô’%êy|ÃS¤ÀqxᯠËMÇMÓòtƒ‹•UŽÇq|£S†Iö:%iáÉÔµè°ê\¹øÄétõc¦¡ªû¥ËÚË«©?Q¬­#¨¸>‡ðCÜæšD”˜"Î:ïa¤Ûîƒd¼Ò6rƧ*ÉíÓx´‹Y¢I*@ä }ðjWeà´xq˜©rÝ]jêé¸Òê©&Së#@QO@ ¶˜ù>Õèu:¸Aiºq’¥žž›Yi·|¢%g¬>‡Ä'R#RgÐL¤B\ŠQ²˜¦ìÛG'ìÝMHEj¼©'ù/ÌÒ׌-®U Ç|C§Ärö†ªS®’|™Ó&j<Å –Ógx×Kì¿w«©¨Ý÷&«Ñþd—R§iü@¦“˜Ž&‰:H¡öTD¹Õ«W—î‰?e÷hû–ñݵy‰©_¥ Œxˆq,¸(jŽª„WûT©Ûh@I ʼnw1­dçÖzšxN5ùÞû’}Sœ;“]su>96‚jÇ tô2énuéw;wWAÑ>–2‹wÝ'/׃Úªuè¨Ñ£§BXM³þ©ü#ßgžÕ[,Ùc7ÑÐÐû,ª~$Ù¿¦V²‰)¶Ÿ^‘œì™Õû>]Tû¥:KlŒoÂçSNð?gÄ&3Ïö•+KõY­K•ƒŸOÐušRÔ¸.)sëw¹YT”­+'«<š>Ì·¯"r‚làn;Å3%½ JÜEÆâ ½˜Õj$Lf#dÅU°¾H*g„ë&áMx¯á¢ÛTb#“ÇJS7]4›·Â2Õ#7•Hž‘ ‰‰S”z¿“W€Ýå—ÓâYDZzŒJ£-~s7Kþ{2ìz$ „|ÙOI¤´£­…ÿÕ“èêuZZ“r­È©|FÁZ8 ~í²_¶!>Ô´pÆK–w»ÇIû3]õˆÓÕ§ÛOáO›½ÿcê ¢àãÍ•|Áa¸¨Ã©½†)c#Z–Êr_Q±á_¦†¦”;ueÜüÕ]]HÊWF¬Z‹ˆË§^ܧ¯]£²Øæäl©¦¢t°© Ö–ÒìÌ~0ú–’Ü ¤’ì­?i‰vOFeà˜Âð\B]J¤ëB€DÙz›ˆ‡¥Ø³¶ãhóõ]7¿ÓíNŸÃ:éËÝ˹lgbï-ÈÄ)&Ñ` òëVµ{TÅjct]-»^>l}ŸÔJ2޶­Ü\v_ÙžÄB-8ªÍŽÆßM¢ô´ã º³É©>ù÷.MlÀ¤Í*ݺÇ[ųž,µœ(°Œ2¦‡ öê9ú5Iâ”yI;¥$îAøGÎëz kj-])öÉsWû3ѧ® œf­~†]‰XdšÚ±:‡CU£‰KÅPò‹si}ï]_e)iÆ•J7N¼ï‹üǪŒ[u‡Á5O‰´Sq*Ygz}mGÅ7Ô?_Cïº4½˜ãöΧ*ø«Ç¥ÖØýÇâbÚMa9“Ä,6ºƒ ¡¡¥ö:j/ ^µ/ô„r—ÜßxëÒû9éËRz²îs«Åmù“S©RI%…ýǧÄÔÕS‹-Š­(ÑSPRÓaT~Å&Dá3…Ä+Ô—$¥ÔޤïÒ9Ä©JZšÒî“Uu_žÿ¤ ‰©¼\›=)¢«Uh©HµÓ°—äþÔf>ÄÒŒûïŠüüïûÆË·ÒÍF)?Ûq šù©ÒgÎTí.ìåÛï³¥È(.Y˹÷…'P¥ŸÒ5èGu‚L4ÍËØŒÙ²’Ò×$È-üòɮşOKÇ‹­ècÔÁ)=¯F¶:hë=;kg¸µÞ&ÑO'§öIR«“XS¬¯\ÑmÊ,öô´y£ìè¶Þ¬»›]»VêàŠ0ò2\¯¤T)31N*nÿAZ¼j-µi·¹“"£äê“Í/Œ½zàñ2ÉqJŒŸ<6È“òž2”Ò¼*§•†M§Ó8hš©jšN©ŠÔY:Eƒzô…Óí-*îüŠÆE–dËÄi µI§«›&HfÒ”°¾ÝãIrÌáá¦Bœ)ltù[øÂÍzÑYñ½X~©œib¿µƒ ÙÌ5SjU>g1QÔ~%Ú2ž ßÂzHáXþÔZ£=Ì•3Óq,>¯4NÔÝ„ñ”¹j™ #h´-ò5s’´ªfD¶»íÚ )al,‘3eüU¥ßbþh%J—[Á¼ÃééN]®®¦Gª“‡¢c’Ú”ÆÆÛ@&ÚmII&œ«È×vh‹9fÛk,ˆ-O[ÅJÆ?#žx£^¹u"D»%[žöIíRiW&pS¥|$êG0w¿›ð(®·Á•ôoÁm®Ð¬Yžæ˜²ÂðÇê>IlùϳU/ë%Ò³©ßraÚ’-½Ä*C…0Õ¤Üí \¹“R eM$J~fQ‡{š:&K£“O:Eet"l„Èš‡%ÖX•9øX@ê¾[E¤&aAË C–Œ^oœ¥*T~Àaè‰lã™–½u¸ÔŪÉJŠ}5ýñRtbB‰L…ÉæZu$êﱂø¶{}Ñ–ù™‰<6 K»žñ¨®½ÅÐ’€¥LÓ«Óx‰Y†™`j S,3%·‹àVi‰`¤)KÒ¤²} ¾]EªÐ+d¼…>¤êWcÔ_v‚V[qgPÉ’ªipA5O2Nêag$í[¬½Í‰—©`=ŽÆ5&î™%Ê¿ˆUâ ZÒyÒÍëtþ0U²Ç') 3Ô©«V²¦æfvŒÆ*)P“¬¦ì†í}¢£É¤Í²y–­Óú¿ŒUê‹n†Í˜ €á±Jt›õ‚FlbTÊqм\=Ëb…!Ji¾§%âXºØ³e2j´Ì’4TSLö„ι²[•·»ÄwQxgV &u<ÙƒR×%*R»¸¼8.ÁÀ’²(í13T]Îgâö#15i AÒ ‚¨uÚ,»’Ye>RÂÛ삦¬™Ý{Rþ­’|hÍyŠ•«HÉ?o¤dŒZŠ…¦ÞB7ÅA+"™4¨¤µú«¼\ ™5$ÄêÂú¼JA»:NBL´Ï¦™#’Uf®"7}šçü#-ðn+*Ë]RG)ne<_TÔ̪‰,»}"ÃXž‡Ò9N FÍBNìæX$£"ŒH\Ýe,îIÈõ:kOQÁp}-9w$èÌT°´nûâ¯rÏáT6r–H,X°£N6ÄžS ’vï;„ò$ÖД³“Ò*ÜÏ •:éʯÏ4ø¹Œ'jÕnÒõÝÞ$Ÿó—OyÃ|4ÉtôâT¼ÊvO´M½ÿo‹ÁÚ1YfròP”²ØFŸh›wþ”O‰ÔJ’hAÊ7@Â[O˜{DßïD¹/‹È¥Èéy)9@Â\„¸Oo÷¢;«{ äl©wû‘Ç›Ê?­xJ^T4ä,¡1L¬+Z_~<Ð÷š+“xØYÌ<_ɸVLñ:†v/MY‡Ë›2K©O1sTIu(’XFàíS3(¤¬Å˜ ÃQgé/%’¯â%jéiR‰\Šš ×p«ÆšUlË~¹áHˉÉ4Õ\Zª©2çÍW`r¤$”ÛöŽ.Vðu„R‰nFZÀÒ”„Q0‚8‹ÛÞñ©·¾ —°MEèìÍúEòý÷…±Ùº0%ˆ¢°ÇÒ+íß»ô ’Û‘ß2áéJ¦±ØkUþøÎ朰5aΕÒ:kWãiµF;¹Eå•0qá5va£“ÂĨx|Ú–I:ZÊNŸ+‹ƒ6¹ÜÔ•Ý/©JQÓ-S4“´wK4qqí•Nåå'J Õ«2š«4Þàx~nÏ8ŒÜZ›‹OMÂÐj ªZÞé î‘›õ7ž^NóM“ò¼¥iNa¸ãLþôsnÎÏvLœ±€¦XJ(§Èx«åïÖ¡Å'ÚØ¿ì|<³Ÿ¤ÿ˜B_1ò}ŸüMWÿìÿsJN¡pvŠ}W†Ñμq™1u”ʘ¶W5ÛшM5fט”aèZ­©ÿy‰N[U*ºùŸî?C Y±EY.Bؤój ó†Žkè%µŒÊŽ0Ig¡vÒ1¹<੤MŽ(# š¢@¯Úâ&Y™lr Miª!ŽÃ{F—k–MMª³ÓŸ/õ™•lÉ…Õ¢P歷ҋ¤IÛvÏ3È$©·»F¼xØõÏÈkÀz|jŽvfÎ8*&áu4ÊE4©“j%LQP’´¬iÒ 4•ßíŒjjv¬^ Œ:§›Ä× bkTË[r&`ú ¶¼a÷'lè”\W’?–†93Ü6Š^0É8¤Î&¹+æL˜†2›R«:VH¶×„'Üý ((¬žr ´¯(âÆZ‚GкNçœÄ²Å*gS’ hÒ¿¯{Ž—ˆ«f÷ÂpÇêõ+²o¹È|O˜(Tž¶øò¦3+NË Û4hm!ƒ{ã[³qÉÒåÇKAïƒ,½üžðŒ¿xG„f?göZ™¨”ƒQ<Ë@Z¦! • 11«£J­&v¹'YXVqÆqlÅ' FT¦¦ŸWM5uu—1)^¤„L (ˆ«‹úÆ=âKE¤û½9çá‡'9â2p=‚]LÄS„¯Pá…«K/f»˜é Q9ÏwFºZRyU»;mï‰õ#V¬éMÀ¤’ BjRßÕLšuØìµÔ–C‡*vƒ­Y5¸¶[ªk(KY'£i0[ä’ðÎ+$ƒ‰ÍÕpVI=7ˆÞMÍ|(‘GéØ(·º5'±Í¯”À.hIºLB[Øô7ÉßÂ&~M> çôá²òò¼žÓW6BæsÌ’tžT–^‡æíÔ´INñ¤4ñÜÌßü6ðÞ«!ÎÍVà2äÈÓÆ¥N*¹µTÄ!,Kë;‹^3§+TË8Æ®'šWÄÖx…ÕÖ:^m¥Wƒ; ˜¥T£îlÿ *‘ØðRêW¼£~±˜¯k©Y›2Åkê–hÕ¬Y•²9׌Ê>Í)Ü¿ïDGê?œçôÀ™AïßÖ*Áfé’´€OÆf)¯érýV}¡‘™e&n®'iC´µó˜'¬kb/S±øíàöC˜òJò~.VŽÈ F”N3‰2z—¹:™Òå>èÌ%»fõR\•ß•ÖIÊyeü ¢•#^OQ\dÔÌX bЉÈP(Hm K–R·ïRí¦‰¥ç“°Ñø-àÖd Âð<…[KZªjêê„¡õ·UÑ$m¹‡7–ÿ#³Ó‹;“0 riéu{r$ÔTÍ_2¥&]”TÔ®¡ýZ8ÆjRÁÛSG¶4Š¿Ê¿Â|§‘¼)¤ÅðÜ&TŠéØ¢)LÙu3—ôfLÅ1 S3 ]ž6æ¤þZíV7'RjÖíÚ6Ú»87œl–­¼¾!Nþˈ&YÒ¼9I™ƒâjQý£4ê¦"ã³U„ne*æ±7]lfŠêRhe›‹w²ïáR$rèçô*RV*ÒûEUE™±¥™©Â” í““ô=òFðw ñ-WWVQÒMT©“%K3êg …Ê"Èþy‰¨é&tÑÓî²<ù÷Æ|Í—±<6AÃèT‰\YÓÑ/Z'¥JÀsbY÷ˆõ"•›Ž’“§ÁÊ~QyN—$øWÐ yH•ªÒ¦©iIV†u]ùcWyG=MèçR”á…]Ê£NÌ¿†Š`›’qt]¾…Áþ|aá›Ó»hëµÅS+LÙª+½¶ªøhÓæŒvRî OÖC²Uáœ_ÄU™ÖrIt -ýDÆf¾,qaRd¿˜uWfŽÑÊT!Õ+JŠÁ.Í¥ºwŒå"ò>!ŸsõZÃ¥KÕS­¸åa Ó-kæ)!h9Rî5÷J޵â®HÈþcXþFÀ&Ñ|ÇÀö¹Óê&¨LãÍJÃu¬e‚í¿XË´÷Á·V‘çZ¥.IÔI»ü#¢Å£KHtOÒ•—pÑäËØé%&nn¥ Ru+@†±¼fO“ªT•x.Kd¨Ê9-ÔÐ&Ø5yÉa9b±Ws%`zr˜©[ß“N½Ç`gÌrzþŽ?Kìá?¯ø<]Véo¸í´}…iYä~ÔrÎÐN°8¶!$)˜÷x»,l°C2ƒÖýLyÐ6í8Yؾ(Þä2™é Òtó¸ïȨòëüÉÒÝ“•aèZQ1lF–{m“ëjZî¾ð}*Zi2ERghò/k§µ TÅ®bÔ Å5ûÅFVÙR‘,ìv‹orÓÜI@pBVux;»Bó‚‘€^<áéQ¸Ÿþî`ëc “Ö’‹K[‚Öxó½ÏM-‡ ”¬ ­$'e ƒÅ—‚7y6yg™ŒÕ™F®’rÿõ™…œ˜_oÝ ìXÙ•&Öq̹g ÃrHŸ.J&Õ¥S¤MZ’ü2IÝ™Ãí‹•´ÍµLç Üp’ÄÒ1-íJžaÕÌ Ã õ‹oŽ•»9¿ÊMæŒ EIPM;1Ù:æ[ßbù¾Ò—7H’:ÁÅ”?f$N P±2ÔG_­)¯ÿhô—…ê ðÿXØÑÉ?ü4Ç#e€6h°xoM†Tæ ŒZ}4ºt#Š ùÚPRl ‹³Ú1&ÖQ´£tËöW—1êÊÜŽ‚¥I“-rÌÕ(ð”Ä&Ê $‹¿º0ã(¾û:¦¶9Žh¥§¢Ç*©)’™3æK(–L7ޱw—¹ÆwyØÖ¤¸v#ßГɣñÌq>O¹šRy½•@ÕÞ9¬;5—¹È¤-ƒpîýcÒòqm#½E4Ž (~0’·f|Œù,LÄ1Òû;¾Óc3ùZ7RG¡”à‚à'«Ç6iõ%Œ¡U,³¢åÚl¥…å©5è—[\uk•J<Ä]C¡:Çtïá7Û³¹…âÞ‡aK£¨ÃéÓ"\íz†µ[HêOsÒ{Ù­Em$Qfd‚÷¸ôެåÉ›€™iÅéul& oµÄfIðj,âYÂR¥çLÆãè—ŒÔÍ ±QYë™ïf®¡Œ•“±AÐäüœ =7åX&­½úÌe·tnØÌM‰#Ö-ª1€wp›­Ú,^~÷-y.Ù7üÿS?Äé²^a›K9RæKŸ/ œP¹e”Äw§(§Dq“xG¡>Y974b¾dJ|3+ã•4Ø&™è§£š³)I•4)* àìñËMüM&ª©dò¦eÀ±ì¿Q.ŸÁ± .jЙUÔË–¥$’€P‹ú¯zf+4ÍjJtw1VõÁsgPðžA›ži¥°W™Ò7?F­£Z¥ë4£Lìy…©°êC:_‘a•r:HÌþj>7³éêj>Wîh ¨Z!õ^Ø9·ŽÉX©§I 6§}‘N©•µJÎ_P—‡&Z)ÀûÌbYy3‰d{4„¹è:Æþ„[fÍjɲu‹o^q¼eWs¡, Ë!'–F¦/¤üÆ5’î²?0‚p©È/Ëʯx‰|’_±È)”Ó‹?Þ"Ae1%ƒÓ_/9ÒçÐa³¥¤Zd¤¹Úqh­÷<yžYÒ§rïÓ¤TíW‚<ž½ÿFžlÌxŸˆµx!bU˜}6 ³&’}TÅÉ•¦m:S¥²H€ÂÀ´qÔÃgMJéœoå™qüCÆlÉ„Wã8…E6/T$Ǫ̀Z¥ËÓ>jRÉ%ƒE†ÑÓM%3m·g'CZÅãwhĬôWúO‘U¬¨§>Kt¾ÃØEÚ1+o…v²³’Hö¼P_ù\ÒÞ>豪À‹7«I ˸ßÝnZä øÒšQr4~åÂQu‚Ed HºB‰ C´Há^îáÀ}šhÈKn÷ýñ¯¡d{;ä‘2~Fv©Ç2½F`¨þMM]S)Räé™6RÝ%!it±»µ£Ž¤öt¢ªìã_)¼«œeTœ×šóÞWÆê*7¦ÂñI³Õ+H—.ÉXt¸Òw»Ñ´Õ×þ’u¾çrnz´nïÃÎ &\@VRÅ”þ^ †÷YŠHòu©Aå¥ÕbîÆÂ0¶É» AÕ1+YMÝãWB°qï4þSNÔ’ÃK[nTÆ&«-ðh¥›i7"6ü£2òHRÒµ&ýñL—“¾[ü¦ñ? ¢™‰Ëé¥TÊQR¹Ü>±5E*b€S‚mhÌ!™&{8狞ò~'á&köZ¼/›&F#Q]%2ª&JA§JU0)EeEzˆ €öÚ<ÉSîû¿ðzÜ”“Šg…3np\Õˆa ¨EJé*&Sñd/Rf)+)Ô’ÁÒYÁhõ_“ÊÕBµ¢ ®Ïë /À¡%’EH·ôS·¤e«x:C(¶ÔpÔ§I$ƒ¦.Û–«Ôg4åÚ±ÞJØ昼Y™lq$ésR‡Õ¨»í¼gœ›’±äÞÅÎÍÒ ÐÅ–¦Pg©‹¾I\³Ø~OÀ¼Qù&QøKš0œ# ×ô5õ¨“*nºÅMØjR™ßÊ‘мqš}ØÙ”“‡ª(×ÂÜ xCˆÔãž#J©ÆÕÂàáx>0…%m8k”¤%E’° Þ§hè¥Ý²¢8(¦›<û1e@ jîw1¤qFV ¤âr‚Ê´ßoqН‚oƒ²áSÑS0KÒyX³wŒ¬aìt½ÌϬà›í«cïŠÃOƒøÐT‡å<Ïýˆ=ŠŸÆP¤Hk$w‰ß’K?RU*ÝKFÌeî>’tÉÄÔ#fŒ¯R=¨öïÉ›Äl“ŽøKS±,*V'•§"}º™ÒDÕ&šžY–&(¨ó67Ù¯gwKcѧ$ãž'øý›'ç/q¼nmJ§È™Y?Ù]d„É3–¤'r•°-Ú:Å4¨Ä»E08ólzF̼ì[ü2Ú°¥@4•õþlfEŠygR¢Ôpº  Rx[«¨h/%¬ ºÖ• 9bwW¨âŽ3⋜ØTRή߶¨Í`ºxLÒ ­* 0/hÒ~L´žX©r²T êç¼Gµ‘íƒÖ_  ÉY’‚«1`Ø]tùRéÆ)V‰h+R$„’åô¸éØÇ=NÓF•¦v/³äÞf]~dñÃ)˜YmrðüaçyTŸ2“ðxç7Ý”™Ö4Z£Á^'ÖaU™öº£RU¥¤ÓmÁÚ= Ò¶p’[¢¼ŸK¿x¾žίáh€.dÕ'W´:»jÜÆ[Tèµð— !j\Ç÷ ŒW¶ òñ± Ïoù3P—N–þ²cF&í`â”àËZõ€vÚ3 mQÒo¹*2×Ì ÉBf/¡Æ¾J¨—'§âML´ó:æ)‚yO^AVìöÇŠþ5å\?Æú|&«Âñ¬«_«Û“*¢\éiÑ!*–À¯‡úCõ¸µÄpPj*KsÕ-L×{¯ô‰æ¡ˆxc‡aù{1aXŒÁˆÊœ¤QÕʘ@áO²¨ûDkNåñ3­U&xÀòŽ»ÇMÎ+&÷"…LÅ„ )\"yE÷Z²-ðtŸ ¤å¼MkéˆÍCuÕ¥1•Wƒ´­5Få*[‚­[¬XzF6M¶9ÿŽ2šIê4í¶Ë‰-¬‘ÃLçÔs–I0IµÄ!±&²Ì‰%)šáDv¿ïQÌõïÈc5á™sÁ|ÃYW‹RÒÔHS=×=)RôÈ’CA.S÷F%•Gm[n^mÊØ%XÆpì_5¸þ)I6±~Ñ-Ó.xÔ°¢"à;’;¼pi[¥ÁÛ¹-Ÿ'¾Zuôµž9c £©•>R¦ÎeÉXP?œM6";Ãdp’M¶r#2äµ»ˆÜv3Ûf÷ ˜ù?° üæ1-°X¼ÙÛ1cÛ¥+kiJ†Öë/á4Ö70Ò“ÁRõ0µ‰¹ƒðþþ£ÔâYðÿ儿7åßo"a©±cò³‘›è,’•ÛÞcw›9Idb‹Áÿ|L²z#½|†ñÚ ?TO>’V!Ëì«©RGû¹ÁlIcÓãõ’¯&ôšR²Åâö|FònV^« Àðügoi¢Ã¥p×+R•§Š‚  é.—Ü›Š=Ó¶toà¯'˜V²wb>¯¤uNŽ[’ÑM ™p]¬xU™hêy)ayª‰’€¯˜¥ôý±¿¬anª‹iý'1 ½›¬kŒ¹4ùáJNX®}ôLo^C‘‹òi UY?úÂÉô´»Gé=¿ê_ðxº¬4βv,ÝÞ>ÆçŒ@À9g6s‚¶#’XXƒpzˆ5{¼ƒ‚­D‘},vŠ·¦Zt=„D¯èÝdgü¤¦àjß§)>²]ŒÚÃHåÔ%KÔ%)k nP\–ïë1¬þø>¦•v+=ŠJ†½]“Ò8,:4¬ˆ:”é>ƒøE"$2ÊÔû˜žJ×|»’“t'm]b[yE.§OT\À·ïoäæ“N‘‹=g$•#P²OëuŽRY£Ò©n<¥E€Io ôd’'Ï’¤ÍBæ%î‚_ãfãä#£ÖÏ™3Âd-eKZ˜8¹'¬sKâ¦ö:K9ªí)ƒ>¦/æÂ:-ŽOzUõ‡,[÷DlÒÇßÞNyò“åÍ.ZJrï<ËXÜ 'ð”™®²²Á$¹l#¥ìqiûÅô©i²É'cæŠò›"Ééo ‹øu‚›^†Fßû´Ç¢,.øfã$`ªÇ1äR”! .bb¨Ö7¼G±¬ÝQÓëpzœU6\“F™ÊF™•3Òu±K©p“VZî|¶Øä¸ú*eâS“VeªwakCó)î\ÜÞ;mƒ“W³0À,KlÂViüe àfÿ%ÛÿÒ×Í“RÊtÎ7,Sä…vé~‘éÝäç+³:©¦mºß¤Y3W‚‘ê´âXèp’Ÿg}[í61%[ýý Ç÷ùž‹ įÒãHÌ÷Çßú45úJ&Ì[ücª9¯/ïýœ ;‚3…c·éW·óÏß“7»L$ß°&-Ú£,D«LÇìzFS¡X= á¯Ê¯:`X •éð,³6’ŽLŠMŸK4Ì(BR€¢DÐ50ݷ馥—÷þ)ɳå/ãÖgÉ9+(b8v€ÔLŰº*ÉȪ‘1A*š‰…A L ‘¤3¿]ã0¹~få'¿¡äo¼Pƃ~¼æS$YÖä°¥¸pwÞ"ÚA“¤uaê­ŽSâ½9ùõJ d­¹’6d¦$ª­’²®…†~±y¤AÍnÏañ±™…×bŒÌ:²¦šaN’ªyŠI#³Ž–(É4¼W‘Vª™U³åԮ랉Š %Ë©ÝÞñipª&L¨˜j&TL›=jÔ¹‹[©ÍÉ'}úÂÂw¸’‰….R®îOXzs¢xzòð©(Pbæ¥@~É ¸ôõ…+;F’-Š ¨»(9÷ÿŒG¹ Äž>Pžb³)C›¶“¡Ä«¤ªN)Q/J‡:®E·é•1»¸«›8ûýc]¸²1C¸ wû¡¿ÐŸS7 Äñ:h™‡b5T“:.Då%]zƒê~ؾ¦7$Å1ŒS^¼Kª­™úõ3Tµ}¤ú²%!Ü`éQb«Ò5„[Kèlrõ:gârÒ­Wt½ÍŽÑ‹¥F[ÁÖrµBjý¢d² ¾]Žï £¥R¶læ †IRXuÃßÓ-¤ì¤ø·F©ô)š„™/¸sºa%ŒÂ9œŸ-ͽc7Iv£rô½œîý#^„¤9>` >‘Z»#ØšU]U<¥Ë“U:\µ¸RP²}Þˆnn®îýI…þ¥æö‰\ ,¿ ‘.ªdâ”JZ-*6gK$þ— ³ªaä+¤×1Jú$_km VZ¶nâÙ.òro)×/Dí**Èë©F$ëwô+²ç«‚?tE÷ X·p­JÝÙáM1\ÒUUÓÌ+¦ª› ›}ȳ¤[Id>~#ˆMO¯©X ÕÞbª[r>†+]¬F„i/Bß"¤ó=›÷DÙSÜ`êž! Ÿ€QÎR“1>ѪX,Sæ#Pééxm¢«íL¸q´‚×¹ºð­ne’šœi K©œ6üÂ2ó“-^Ç Ÿ&lŠ…É˜Aß³ÄT£v·î¡«¯HÒx³K ·¸#õ`ÕÇ¥X$›>| Ù˘¿ÖZ‰ƒkro’Jšêª¢E\ùÀ\ “ 툶#N²c’]ÎÎÑwtZàÞäI©“ˆTO*Rºu)Ágb W\‘a#™ª›•k§)@¥xœÉ ̧B~èÄVpu‘¹›ÌT­^QøFšX3E#Æ5ÏÂÓ5.8dîQ\•d—MÕ Ìcå•òÉJ€Ö4àçFU+‰RS®ž—«“!d딉ÊX!ˆ  ˆ`ÖQ:ó`<óî$S#J¤#Ú–ÒŠ|ºCò·FÚ¹˜Uõµ•õ*ª­©™Q9Gšlõ•(—ss}É‹…U‚/T°!†úFñ.šeªvop}2òf.PLÞ€­ÔË.Ýã2ot‚½ÎÑ_6bV•ê*QÝÎñRð eù\üv†ûòiù8ÿ‰Ô†Ng\å )[|Y „Ý"AÕ£F‰œªµºŽñc„‘^_½¬*ðf&FWYCXŠšéÔ“úgJšR àƒqèHøÁ»ÁoÀ¸¶)‰bÕщbu“ÿï*f©j É'`>Èz¶71, C³vÚ;eØ’‘)+ ¾£d·Â5Y3#©äUfÊD'B•ó§ÜaϾ9ÖN‘ª.N¢åE†ý?ëÉ›¬š?Ö–*´)Ïw&ÕQ¨ ÑɧþÊ©Q%ÌõíÔ´¸ý'²ýoëþTurX‚Ľ˜m]až;ÀÕÌnŸ´h Mƒžb6#¨…@˜»€JI¾Í´Kûûà«v !Íúµ¢­òM‘½ÈùE!ÿkþS}•ѵº³—al‰+ó"am!6#wxü‡ZïYµ·ú>¦ŸÈ“cІàOXó¸ÑÑ·¸Å¡…¬ú¾o„Itè¡s ÷Ûh+H«À’ÔAÌžãøÁ¢YLÃåŠoðÚ‰šeÊWÖlÐ5ÌMDš%ogªhתnÝ=/å™YèºKÃR`=áÀÙÛ D¨‘¨'«B¸"ògR½8g²ŠÚŽ ?¢TÅ6Ììíµ ‘[Ê0‹³’:ÂfðI 1 …K´G‘¶mò™\œ°JtL ™ìr&). sŽšnÑe…E.yìNöoã#±ÂòRüX¦3(©æ‚IDĬö}ÐÙY“ОÏDïðTËRTC '¯ 1Éù;Ã+–†:v³ï5»&¡«¬¢œfÑUN§˜F’¹+)$vqÒ¹»2ÕŽãÅ<ØÖ#~†¥wûâR.L*™Ó§«\â¥)É*S’IêLikr$‚劯Ò\ÿ+%Òø ˜=h—Äöf ,KT#g÷ÄTݰñðœšRJeiM½°Ž×äç7nŒjÞi*)NÍÊE¢ñD¿&É\¦—3âòh䢞ž]UJÖ™RÐJRN,ƒ˜ÒxhqF­(öˆ©"0Ô›$žŽ"·j¨dè¾%róšÒÄ m­¶…3ÆÞÍç5,£§¥Ö­(*ب°Ž~§ž[`I$ä-îƒ+äs_ÃϦ7 j²¡ ²&’Á±Á‰ùªVž7]·Üï àÊYiiúˆŠê‘$¬ƒ5§FN—&Z v$Üóˆ-ò%N6;*)'/Ê ïî󾌉ÖLùÀ®BÁís—cež Ž9•¤ÕU:ZŽÄ0NÃ{BüŸø˜ðy —„æLC–IR‘MY2XQµÙ vdKr«[Ê›æÎ™…\½q»þíDϑΌ ³Ž2{jÄ&ÛÖ f…ÛÃr3ZæœÑ‹>–$VÌæ=Ïq*À§¹°ÜȤ¨MÌX’$éö¹ŒOÙ´i%a¬R!§Ê؄ڱ>¢»Š¡rµÍQZC½‰19'nK^]Ã$á´j•(•“1s&6µ(€÷k‹C}Ím¹°ÔKfµ¡êEœÜÁK.²œË˜’GºÆÆ.áÛ)•9*RªT¹kX ^¢XÓ– ¦÷Mä®bµM¥îÊÝ‹¸v1y)˜½s&¥!š÷ÿ– ÂЊȆå3…ü¤«í~XÍã+Á!ȲBmP±ïXþìYlJb ‹()#Ž¿ëîÃ#µÝL'K2J*ªf&O×—!l&nÎ X±† W¹*a!\¨{iZ.È­[¡'°[mשŒ¬<‘meo5`Ò1b©s†¹å°WN¬{F–Ù'%häq¤(LV½ÿûbVIL‘9’¥I^«V#ú°úb«$¬¢j‘ïSþ®Ð§c·!ÉkMÔ´—F—'¯,*ÂC¥ä²Æ` £ê›¿õa¸í¡%äÅ…¾©dl=}y`^ÔÝ–œ©ƒüÜ®<éÊ›7‡Âõ:,\± ËHÜî’X•?Ý6EV‚ºe¡%$}ÐÛ!¯%'1e$VÕq¥«„£ba¹=·¼1v‚Id×þDLK$OI'ö¿ûa¸¤ò;òh§Gõ÷aô#K‘ÉɳAIB”‡}]_ú0jßo¯I›¦M»(ÿv.ä¨üˆ^·—R= _ÿlgmÈ¢žäØfR™OWÆ“Rͱ×Ì,Ý£Y[—·Ï¦¦Ãh%ÑS)JL·i‹#Zœ“r7Þ%ã%¼™3*ê¾àïò‹Î ~7%54âLÀ–ëöƒ¤eD¥LÉr *DÙ€Ÿ*JƒËbËmî"2T¾"uÔ)‹ê!vônX‹ ô2L¡2õJa»¬?Ö*ÿ¡œ±S‘ÐI>ТUßþXzrrD‚ÓÍaûAÇöbìè1¿‘ ’õ]ö+݆FkçÊ´´‹G¢¥råLÓ)+*XfÔÛ¡ˆT©d´û@`„¥(r¥‚{ECê"æyHRµ~°6xl(ÐfÜ&›!3µ¸¾ Ì ï±ïqô+c#Ê3TBÀgÖ.«´U’æ…uT,†Ù+»ÿWh×?vQßh$Ô¨ 6uõþ¬gìŸPFBu. ·ÖeýŸVÊ=ü„ @ÕPIêR¿þØV~è¢ÉÈ’W1Iö•„†c¬}ü±«Í‘[-ÙO“„ •j©¨ŸT¶Òµ,+C8:KÆc¾Bá›™“Òú€·HÛà!ÆäǨQ2J ÓÑ¢îEà§ãYJ–¶§Ú5*Z›AìoH*ÀâxÈi «‰ûS-ÿ,iF7\ ¬…-:Tš¥ébWÿÛûm®Èj KT«¹Rì³qL¢+!¤jÑ1´¸:úÿV2•î̦ùy AP© 0'RÿûbÒüËu¹“‡äm$…×ÎBUep¦³¤î<±*ðU¾ ÆKO…`Òé)‚´ËbIgS$,Îm`]ìeò‚ê:­Ò4gcW˜©%WR®Lä­ˆ;Ãüb`QI©ÈéUQT™ºv S]úrÁÆ– t²!¨P¾¥õþ¬)rQÇ /†â©%ALÁ{ÿf"u°ä„`Ì•íïåÚ¦Œñ¿sJOç ¿íÿöÅIZeõòhÔ}¥ZúöþÌO9¦n²þM¥¥á*º|ɲÐÿB…ï¸)¿C Yk9eÊlÅ- –¶ÏâÃ|ÖV™ú„f¸%x+9·.ÈÅÔDÒB“åZYÆÝXöŠé¢} êr´š‚ÿ[Ríéõa¹«±ÇÃù¥%~×)@Ä?݉ŠDUÀ# ,kž¦»ó[þX¹d»ØY9j‡ò†'bV[ãËŒ k‚g¤¬­ÿ³¦U”É©2Á9 D÷"`Ý]?« ²U—©€JÁÖª“:lú•¤£\Å8JK ,¸°‚Y³N«ì:IÒC’׊e3CâŸÉJ­ Ã^ûùòfàõ,úeË.?Gì‡ZmúÿƒÃÕìužÍ‚ 7húýÙõ<ª8±š KiSg"еcê;…4¥ì³AÉ]Ù•ÁR¦k »\AInZ‰lX¡W»x©ÛÁ$Ì”• Ë%Ò›§ì˜ójüŒérŒ4êO«Í¹&á£ò}oñš_x>œ1§êI5´¡°kÇ›/'G’5+RK)‡Rûû£[`Ï¢¨'ˆ’›o¶Â3š4ü¢9%–êp; ‡¾4ý h³ísÕ6ZŒº„yV‚Ú]¶,ûFdÎyy-ˆYÒž@“£ Y• §ÿª#ŠÙmÞ …x—µòHÁÛ© ow4ei¢÷6³¸ïõ¸A©ð¦êÈ÷óAAnK–Ähñ<(+\œ"Þ^YÛtúÑ{ äÖÃUâ&x3µðð  t´íÿ­ÁÝ*¡²óö{TÆ Ã“}Þp>ï4~eMÕ˜JÄq gç¬b²mUZ‘Á TÅ*\´jÔÉÕpÄ–¾Æ*ŠXDr¼±áEk),ïü#UJÌÖ0k3+)Õ!`()Ókãð9–1LÕ—)½“ Ä ©õr¢¢lÎD°$`Ã๽ÍÇå¦y(µ]5×±™;oëD÷qëÿ£sÎåzUY 1~I“¯ïæ‰Ø‹o†"óvw]¾p@K»‰³œzo´U;ŸæF¼ÙJŠ{ñæþ1Ÿ#¹î1Y“:LJˆÆg$†òÔM÷õ •nEWóÎ.8Xî9ˆUÓ}jUT­RWÛRTà±Q±lVü›"´ñfßh´aî@¤:O1$ýW¿Æ5¾ à®HÃ+0üÄ1l2¦m4ï¬%¬¥*åÒH½‰ë¤Âøv-²sÆs°ãR:?YSnýù¢(ª5Ý$­Š3¦tÒj)9¾¶¹®úQ;.›ãÀv­^~YgB =ªšý—5¿æ‡o/ïè0ód+Î̦bt´»m6m½×‚…,‹mڼלҠø“‡ÜN›¾/j¬ŽæÂ^?›ªf*\Ìv®Jºéꦅ%úö‡f0;dš›B­ST¹ª$Ì›5N¹Šê¥¤îLkµ¡º°Yqu_`Ç÷úEH‹,ªg «MŒ(™€ËXV ©l~¬{Äi]=…Ó4?êê˜(i¨º\oëËÒdExsLÚ½¦sÊçw,;S*¶'úº¤ÒVjg„ôÓýXv«ÀÈ’ü;¦w]DðÇ8þìbŽ—áå(Z¸“êt‘m Ý…-‘/É‘KáÅÕšŠ 6ó¥ÿå‹‹²ú—L¿€Pa2*E8\åLÓĨŸ¤Ì íÌî×é[¦96€²’TgøEQË L°@#VÄìc(«|œÛÇ×F%%JHÔÉ—¶ÈG5dKØ`NºreL'¸J¬.`š[™‚2e2žÆ×VÑøV37„þG£J@7Ü~؈±‚OleWù†QIï¾ÞcÊ•nl›O+“ïŠVF©eJ%[th«1°«BI{:Ì_²£o†åÌj²•5Ø5|ÉJ‹E:ÊMœ\XòÏ­éàÜg4šõGE¡6®(J,ª¬I# «Q($©rT–,I8chÔº½8)Êi'³mWäÌ­6åId”åÜm5"˜`õ¼bŸÑšuêgg¶xÏãºwîõ^mzSºh‡Á±<4"e~ULA:§ÉRCö¸ô1½.¯GUÔ$ŸÑ¦IéÎ;£'LÞPå_cG¢ŽkÉ2[ÌUµ‹Aø…»ô/ot+ãb:›\ÜÍëà¤aÌ:À¸h|µ Aúu~¾èŒ£§­3–N’5u"Â+ËÁ—¾HÝÖÀ ì"}Kô5 z‘rÚ(‚]A™ž ÉžrO¨"YR,W´â¶Cõ¸,{7ðˆ—,’lÎ#X|"Þ ˆV”Z´ÐõW”"%#B’íµ_tÄo‘8ió8Ô.Â*|ð< @8I=_´E€¬jÂ@,RoõºzA²r7@(å±w¶ÿnkaS'‘Ý »]}=ð!9ЉiS¤8õü!’ú°€&>£¤‡°àýFâMY2ÈCûõˆ¼ 1ô!I!VέÞ%Öãšcè(UU].šB2lÂ%¡)TI`Àož¤tâå-·*MºFá9/1*a”¬ÔäŠy޳5í>—·»Þ*ú¯òuzŸüL* ·ŒU•ª—«Re7I”¢û9Ò:ϬÑÓĦ³¶U™Zr{"Uåli€¡8]o´Lý¾Ýl°g,!·§–›ÔïT¹µE÷3XíɦT–s«HÞ=I¦s«Ü$É S»Ë"&D´r¤¨~`wøÁ+Ø«…ZSÅ$3õmS+ †I™1:‰)=÷‰MíD §@j½^ðnÝ¡hb¤€ä1=Ò5tJ¥‘É”‚ C¼e·Ák$²åËài$…kqþ{E²z ™@Y·=?º±¦P36:ö†v.7$Q K¤‹òúûàJÆ@¥•Vº‹t…–¹b(ƒä/«aØ~0ºÙ ™¬—#MÁïYb„$LJ”‘ÊÖh¹¢Ñ,á)JÖ„i:v!ž!=HÒÎÄ(¾Þø ‡4•(¸I¼,¾¢Že¥(J}5 àÌðè%% é Õ±"м¶Í=É£H¹gp ÷3ºtI%¥(DîûE òGPS1=ÑvòF 4(ìÎ6‚u‚¾,DÈÖN·¿X©Ñø ^’…‹õm Y´I0}3t ÚØŒËQAÔ4·xœ`n²*ÐÈN§P!€¼RJd2[@wÙCaRs‚fcuٞлÁvØE¡|@Êõå6nÞøÑ4%L·Hu‚Oë½#6Âd3d¤3pžR‘ûâ·À×f–pð°KM)bBÊP•çb"9RÀ7Y¯h”©²ëh¥Ô‹±[ÙØvõGÖ.¡Î¿•µ_Oìvž“ÓI¾rh8`JPpTûuvø9s| ¹ ƒ¨{ÒŒNìà•’T% T/ÛÒRñ’RÈ^«)=Ü{à«’?R ´(²’:7H<"ìKGCY\±MGK6¢z¶D”(µöØƦ¼4—tÚIy,"ÛI"CƒbB\…ÌêЙú¸DIP4ï¦×n­×U£m)¬o•¯‹*„Õ6·2ir¾9U%S$á5ª@kK³ü#ëúhIFsKóF¡£7²5Ë”©jáÎ ANâe·L_r¸³>IhðúÚ“ª’štÐ?U¤}‚/qÆzÚz<—æ98F$¥pQAPJl e)Òýíh&¼™üN’]Îk>£ŽˆI˜^Žz4'R’e¨[m½`™¥ÔiI*’ýE”T¤‡d±³÷‹y:ß‚M\úT rž†%rUh ÇËJI ¾ÏübîÉÅ32Ztµ»u÷A·¹^AìeÔv=ýðTž­ÆM$Í Mжq]°ÈU¨Î%ƒÇá™W³$–p5un±.Ö 4n± §Qà(Æj)¦"náHX(ei»†Oxði{KCW_ðÐvÿ/äë.žjíÄr¶/G—iñÕÒ¬ÐOÕ¥a äei:‹0sµâéûKC[Yôéå}9WŒs5:Á‘+!ã1ºŒ5j§”©xÓ§‰Rµ'Ru6}ƒîcŒ½³¢´ãª“}×IUºÞ³š7øY¦áµüÅ—jðºQVºš:ªU¬KDÚe•X›n†;t½t:‰½5šW•F54\2¶5”É mÔ7ï1ô8ì<+Ùíº¢'ÁwÀ"aíéÚ49dµƒ»|?ð¦X0¡YŠ`¿:ŒG ¤§3¸ªçói ìÛ¸ÇËê}© _pá):¼+ôòz4úw(÷ZY ‘’±*ª:éôu4uRéLĬӭJÕ¤9)dí³{â?jéFq„¢Ó•oÿ0ºWNIÝÐäzÙóiQ6¿¥ãÉFS4¥Ô­’9|þ‘_kié§%:té^Üï·¨‡NäÒo|™kðæµ„ª3‹á'*h(¨'Bµ(ipÜÇíÈv=G§*ãìÛéZ•&‡â>VR蜜W ¨’j…"•O<¨KW]GM€ÄÓöæœßo»’•weoôÉeѸ¤íoD(È8ÒqT‰R‰:k&‰ v:ôìzwqÿæô;qn^1J¾ ~wáy4@Ëb%q ¥næ>øúµ[žwiz$„%&껞‘pEáì–£(]d €éî/”sï” ^M’çUϹ#ò¢-‰²éH¡Ó}ÎñZ½ËîvgÓÌJ¤·);oóKs;äfn9BV¢\¿»Î"Ac—ÊE•V‚HKo«þcËm‘<[6Œ õïo“^ˆ…j6I$>íT­“ui&§Úµà €ê#œÕ*ä©g8Á9Uxz¨¨æQÒ%RÕ .iw*JlA ÞÑùšzüJ×´çšO–{ç)%X_©b «Ãés-2d©²*$eÉË©›H”¤®bUδʉ؛ìñóçM^ŸMG1z‰%/„ý=éÒíî“ÙöçêU².a¤¯ÎµRj±iÒdáÊY5kz‚ÁµÛcûãëûC¤ÔÓ飦ä¶Ú¨óèê'7MãÉ]ñ§Åk&ʦ©Äæ%Ê”ŠÅ‚ Uå›^ßú¾Ìée£)F+é¿ y÷ZM•™Ku’ÂzÇÖÜñß ˜Ÿ£IaÌ@0äµ`¤1;ýÝ¢'à—äeI!#bxlTì‡X/¨;††Â!j6,[`v‹¸YMÔ«•8éÒ"ô.VXN$L)!.zÄ~âˆDÝH3K‘k8" féNã¾Ð¢'K$¨œ¥9Ò›îâ"¦Z{# <°ö[¿R§y%GK%n‘#Áé‰J´”‚ö‚x ˜¢5¬”•›iÛLX“¹oä8¤ 2œolK§L'ÎYš– u0£h`˜ Sƒ}ÿÏx¯|Ñë$Ø0x<ì%¦sÌoè=Þ°ú ‘8HRXÝ»ÃÑg#T:$'ÕâY/³8‰Am"à¶—ÔÆµ;Ùø÷ƒõ)ºðù@gœn¦öé -¿é´x}§ÿé5ý—ýÓ§iê¥êuºÍD¯ý€TbÆrfÎ@J–8V èþŸº?/fÊÏZG)?\סõVª÷¼òaM—WS‘ñ <*b(«dðøÓPJÞc¦é¹`û÷Žë_N=Luu£qwKzÆw9$ýÓQa‘¨ñœ+ļV3\+¦ŸhÐ¥MZÿÝr¦î>ÈžÐ×éõºeÓǵ|<%Ï¡t#5¯7{ÿCœæÌ±Wƒ‰“gM¤Ò¢OOAÞ?OÑûGO©jNþýO¦‹‹¶h$¤,ò’÷ÇÑ^§Ê’¡¡m¤0-´Kåî)š T¢.¦mC‘.b’¤€O¤Hå½½†…–Hë- °Å ¨qÞ.Ä{XÔ-IN´6ž‰?Æ+ÃÈ®ñ«B÷¶Ñ3¸lrf½ÒU`Åâ·E[dI…AAH6>g€ÂVǰZ#ìoÆ%ÖX¡ÒØ‚ä’Àˆ=ÃDj  »E§Eè¨q"Íh‹z%­˜¨^¥ÁÂáøÆ–I¶Y!l¨“¿Â3ä©ò†‰ˆÛ¹Þä]Š&$ì wë/e‚½ zõK4‚`Ôê ¶ Ñ*fh•³¨õ‚ijí¹šaÛ¨;DîªQ‰RHúGqÕ1^I¡èZV“0êõog/aV¯¤L´½¿[¬Dò^,lò œzŽ‘RÍ2ü®Ÿ"È'¡L£Õâ)*L‹"KQQ)<ÇvVÑr9¢=d,»·»ÝëïDÈ$s«N°„Ò$tp’¥j+S[§ýb¬ìM°1 *œ æÀÖÅÂV7Q)!w)V¿€‹È«.f¥(‡e8hW%b…‘0î›Á;%c#¥Ìý ðëö(êP &ú‰pD}ÔÏ"V,µ•T»–=>k6Ë%J‚¤<°ÍÞ *Èèv­D»øŠò¾£R²¹@RûéWe*eÃÀi¿ùÊÃ¥d¯ˆÚ·´¥Ççÿü@¿ü¾oéýQíès®¾ø:PU#G€`séõU¯Ú=ši@Ò†%Jrn‚?;ÕÇSEkuÃÜ¿e_ì÷éTÔ`ÖsC) DÌ>š†}DÚI5pæáë)œ¦.u“c}½ Žº“ÔŸS¦­ªÄ²¼m÷“ž›i(<}IŸd"‡6UÐKRæ"^*˜\—BMþØý‡³õž¶ŒgU¾ßV|Þ¢5©Fã%¢¦¯,ÖSáóxU<šf-D71&âûá´V³fÞ2ÍþA¯ÁhñäÔãtS*iç—.Z|ª‚­¹óý¥¡Ôj÷§•?«^<tgɽEh³gUüé€Í¯Àe£ÂR L”ær“Ì”ºK¤€}Ñò}ŸZZ¾ë_âÔÞ÷[ÖÎûf¥í<#œ¥IC‚oHý3ô>|`Ik}X††ä»fZe¤Ët† wÞ%Ѫå#†¶é¥Û¼^,žjД]™/aÔ´Ó²ÌI`lÛÈži„Å’†°&Î7ˆé;-Q‘ ËÅidÓÍ2ç.j%¢`Q*$\m~±Ë^qZr”•ªx7mVöt wÂpܹ; Ũ=¿\µKM\ÉIYK¤¥ÂÔu`OÅãóº/Q«­}9véáÒmsy[mƒÜõ" ã5lçgdô]Óé§¾O¾Âs¾”ûšÐkq_ÊeËå§•;¾ð“ø»^ìµË#Yh#PØ´ZÅ™ÇjLµ%j»¿‹(Ô¼³ÌÊ¿,Ešc|›<³Bq,jM Tfêæ'fI?Â<ýV³ÒÒ–¢âéAjI’§Ë‹IJ¥<¬T&·…¥Ó/…'Bx‡@év½‹˜üN—CÕôY'Ùw½»Ævº¿'×–¦ž½é«É^Fh¤¥Éyk Ä$Ψ ™í^Õ,¤)Ùz‘¤Û³¿Â>‚ötçÕkêhº’í¯Ó7Jö8ië¯uËl›|n®l¯1ï›Ó.b¦û>™5`™+iCÎír=Z<]6šÿÑž«®Þì­ó.?¹ÓVoßÊ1ôßm¹4~)ûN•CWK.Mt¹î©t(™.•‘¤‹þ¯ßbêO[ªoMÜ+y|Û«¾>ž”c©qQík?±Í$iSZÎýcõï.—‹ÈLJ’RIwtT™kÀé¡)g}!â/B""Y•»Œ+I>N¥áäãQᙡ‘EC>oΊSèÖš|ßíÁ#­ÍÍ£"¿9ÉÄr¾'@Œ>E$Ïl›S-tÒ‚m¡†£«Í{û£ž‡³ž‡U YIÉ8¨åß?M‹.£ÞEƹ±µù×Ú|mÄJ’ ·YSn›ŽÛF]/ lÚPxƒ˜¨$M•H®¥“-IdÅÓéiôÚz²Nk++èmj´¨ÇËOA-Æt¨º9‰þŒvpŽÞ3ù¿ióŽ)%*Ó#™.­Iþì%§Ýƒ*m 37bJR7e+œiæe£qI,n÷2pÌÇŒO¨áÓPñ¢Ú8¨þ¤A¼•;ÁmËX‡Î”s2O|‰†LÉz”ö˜G&¶f|Ä*\Í+ÒÍéÞ(ú¼z´RÓ™Šgí¼;¨¤Uç T¤H“ʉ…Ž¡pªamÛ¬’'7bkRH¦dÆ´ófg¹5D¨ÍxˆC¦ŽÉÿˆŸÂØîd‹Ì¸K¥ÖއZCýÐXضȕ™qELIMÿ7û¡uhÊšjY‹®e>–úšÓÍñkA'Ç»ß&ÃÌUžedÚ.-,¦â¯ˆ—,,ÎoÚ#.s‚ µ$¼³¹ïd¾€…ޏúÝáyÉd²Vóv5+ s,q ÙvêǼG…“-ìÍãXŠŒšYUÓ©VýŶŒjjGMwMÐOÁ´Jón²”Ñ:Sr¾$«tyÿ£ÛÞåû2¥–*·4ê˜1Aß‹.àt.¯IóýJ ÐÅb‰Xs(­”8Òì;í÷F—S¦Þš¬1ˆÄ3 -I¢â²xˆû"½xÅÔ™ZÙ£~`ÆdÌJfÓpˆ_ë ¹í´tŒÔ°™ VÅ«*ëÅ!OÂ+‘íæëÁ À{Ìmù4•#x@êï|‡”A^Ò©·{êø4_©|QGÌ9´ÑâU<®! ¿3u=ǤGk0ióy!I§çÕ©Zy{}X5X|§:bHž³¼Õs­7=~¬c·DrðKIŸqyÌé2t/¡Ô’ÿÙŒÏEj*‘µ©ÛŸþ]âê© ’ëýmIµ›m1¯všhôé°«ñ«˜ƒ6V·v:?úc:ZJ*¢ûÇœ’`ùŸ­ªM==K}2ø©˜¹Ú:å£ Ó-˜oÏX,šérøs©å;ée½»E¶òkbi¨)%®íBÆjQM()g}ývŠ®òGà¥Öç9ÆjĉRY•¨_àSw^Û6'å•o%4Ì”»bÿÙ…½ÌÞ2s•rÈ)‘¡]õÿÓ*x ùç*ô¬ €.5&ç¿–#ȱ³szÜ6:ÝÝ6ôòŦU½Ž9Ò¸!•#m•¨oßË ðEè5YÏRÒöbK¦ÿÙ‚¾ßRªI±UqS1ňØrØV âÆ7ò×Ô£ªí{'û±^Ÿ–˜Ž°°“³¦ãú±-¬Ç/à‰Žz°R]²ØÒ“«Fƒýdc¦\í 6[é.žWú±ÎZ0”^0E&•¢z±ÚZeH§%¯tòbýQW¤Óœû§¯RûÉGcòêµd=-Îüãû±è¦–Æe|²JO1 #’‡Q­?ÝŠâÚª9½4*3ö#.`XËwÉÜF#Mã‚=8µ\#"—Ä,au"bi^kùµ¢áöò÷‹ÛŒ ¡‚ã”3N=5tÕ´ü*ÙrŒý:Áú ÃU€“mâ);¦jŒUDÜÚ_;»Üžþ‘® aš?HVS¬XC}îÿ°¨«*™}ù3ê8-QüUüyeÇé}Ž«OÁàêèê êõØúû·äòl&¶o¬u7ºË˜¨Ò5kßß \ÞìPà£o0ô‰¾K^$»±eማ̒ ¼Í%@3êÿ”Ç dãUV¨å˜c&Žre©åÖ¶Þå­êßýíóþ¯qHlÞi›éýUG±_žd&^”X„]°šy²äi,¥mÿÈhõRŸŒ]ÂNÊörÅÕ‡¥"Z8“ÕåK¶½žìÁ…¡ó4\0Ïó}U¹“çû4õ¾¹ze)˜–¸Smû×ä^Ù´d§Ã<ÔP„ J×Ò82ÿ¿Î>CÓ—#æøi™ˆB%â·epeó|5Z"Ô\–ZmcÁú´ÍIý¤ÁØý ½ÿ­ø¶^ɼ æµË%uÌ52~Š]ý|ðïKb{¹,"?õi›ÀÒŠJÕdè•qßÍyeì{Ù‰]„f,½4XþìéR¥Tñ¥«‰vJ gbo4ð„ ð"¥?1¸íëLÍ-¹5™Ž­4*¨]´¢}'øEL‹bƒæìÓ%u¸u¬„LâJ:ňSp¡hŽK“}®E…~ç@tn£ÌôW=¼ÑŽõ¹ømœÉKem´«ëEïTU§%°ãáÆsJN³ß–VÿÖŒ©Øp“ÜIžg5JQâêf¶™WþÔU5aéÉn%W‡yÕ,ZÉÜ4ßÚ‚Ÿ‚v=ÍvgÀs¶VÂ׋bx_´aÒ‹7%:„‹$’]Jª^ ¡wfTĤ‚lcF^ :Õ„ÓKX;ŒWvV6X¤Ç³67:‹¥Öš}ªöCºîý¿ÙÂ]V0Œ´äÌtJæÌZlÄ{"-ý¨ÄVÒý¿ÙXê»q§&ã‰B1ýiÔ ÊoëF—²?ûgéþÉø§Â$““qaR ÜsŠø~ÌÁûê‰ÿoæý¿ØüSXí ¼›­DKÇô —J=•£¥õF—²sJ_·û¬kÔÙ30%ŒË¤ý‰þÔI{#µ7þßì««iUSœ[ Ǫ²þ8U(ÑétóºužT¸ ÇÉêzq*gªZ‹¹-ŒðHUŽÑå+W“U¦Y$;}ñR¶+†s¯” ¼ZBSåæaÚÈ‹¦îŠ›yfv)ÔYË÷Ät·G(™rÊô©k2ZÛÄUŠ6ýFæ’¥dy+ZYJÕgÿˆ"Z‘e6 ¥d»ÿXÆÔl‘àÌėãZ÷f·{Â,<r¦lÉÕ R¹SÞÑ‹]Ö‚T‚LÅA>a¥ã«I< F¶&§R’­(-¨i>èÎç2UK˜úT_U%ÛÝêË 6§%:—æÑ¸û"ß N)@dòX§¾ ÞàÛe £óý XûD»HBX =ËÎQ ¶,êåU\åén¤‹ÆpnìÛ¬8:tŸ~ñW©wVŠŠÓ—+  [Ù¡ #4¾ÓI¨Çk*'#Z©(—U-.C©*I"¾ËÖMÆ*+—_©³¬ñ4SÏŸKOY§ÖRepå›`å/h×ĺ=)¥Ü¶¯s’øœLOWµý ¡©¶ú‘E¥¥·Ô~&ç¥U+t¡ôÌàI³ØÛDF«c  ÑQiGVcSøœÑ2Sã\4J}'Ù¥/¿Ô¼澋JMÚÜ“ ñ78Ë®‘ÄÅ5J•«J8ƒ8/}­ìĺ Ö¢·ú›ßpÚL;0æ|>ŠW˜{.™z‰nTÉ}ÉŒúz Ijè)K-ÿ“r„”Q«~£ã¤Ò=·ñ`)!K{׋¾ Õ£–x•=JÌKùvôåLfT‰Ûg@Àñšì­à6]‚TûEw3@^½&Ê ;6ñùýnž=W´uU¥ýÑèï”tî<•„x­žÈBUŽ1ÕÌ¿f“·»D{ß²ºmûwþN^ÿR÷>,gÉsIN;©”éW²ÉþäOø®•¬Ç÷䫨šäúÞÏúÁùó—V²=šEÕßÉþ¥¯—÷俉Õòñs?qÖ¯žÿH Höi=¡û#¥¥ðíêÿÈüN¢[—/3f9œòædÂó=O¶I£Áê«©ù”¥'X)V6¾ÑóºÞ‡K£ÔÒÖÐTÜâŸÑç“®ž¬µbÔøF‹*™T²µ2ŒÄot~™og¬_©i©”¤³‡vëËÔÕæ“À˕ɔ ÿÑ0JÞÎ/>aŸU5`ج¸øÆU)d•ÚÎVÀñlW‰óU¡$«é–ŸÌGqxÜÂVÆÎÂñAZ¬>d–©ÔG Rzown†*yÁ} Äå¼wX&—›ë håíÖñàI`ÅÂð|_\Ùt”¼Y‰m\éwmϤ]ì%³1+hçÑL™OS!¦%¾°åëÓ}á³²eàÏÊ3Öqºp•}/3[öL;mÓÜèy&X—MV‰gJF‹w¹ŒÉÞY¨x6óS-lZvýŸÆ/¡µ•L¡øµR© L§ó½½Ú`Óq³ e EE$à°—ƒRK’EÂzÆ›¥r#õ z\tè"+’Àí¼†¯Æ%ÿÚú‹¨²#­¸#Ø€z^-ìÅrÀìfˆ›·[ÿb¯A_JIФ“¶2*ˆ Ûgˆ‚ž`ý=ÑS´ì¨ œ‹“f…Þ<r@Õ`-ë<ÿbm°%NY>^°»ÜW,p,@”Ä–Í2W‘©PÊcÖÑ©IÛÁZ°e>ýbo…±} ÐYØõâI÷s€Õ œmÓm–‡ôŽ“¨Ÿ„g‡‚p0(„°Ú-´‘ åÑëû -KTFš2’ݵÜôéR •I ,,o;Øb¸7ìZ ”¼~ãÐÙeE6c£rÏ9 {BÑb•`Ä–³ü­‹YÿÛ3­ýÆcó?¡¤l$Ì! »¸)þl[à’ãÁJñ’räárЕ:”@6èÊ‹„©òZG9§éx-‹3"Y –;†1læ•’h\í%(p¾ð§ÈäM5‰Òß®KHRf¤jVÃ}¢†«tF…$Y­Ò¬5äÞál¬›Œ[p:yyÏÛåX³Q¬—uU$i–¿*U€ëÖ5žnÌi‹"g !‚w´L^LG Î7âíy¥rÔ où säÜU¦ÍM2@pLi5Fe“ È›¡@K¹Ø¾Ñ[Wƒš²¥+R·=a‹¦(hp]âm:RË0S%V% ÃTKN°‚4+›[;n"ï–8£¦øvs„©Â^½8rí§7õŒJö:§Š²Ú¶RÖ§InÛ×‚ÚØÐøˆ¤œ«T„©À’¾Ÿ°¨«,Í$/É© `u¹œ¦ôå—xý/²„þ¿àðõ.ÙÕˆ$Åãëß—Õ}¡­Dãpb½‘ Š€±cnþ±sýÆO8¹m'Ðĵ¹^VIeôêÁž2ëbG.Ñ»Èÿþc§k6§õå1ËWäf—ÌŽU…iU•t¶”¶÷/ë3¬ßÞÇÖŠ}¨Y¡”µyvæ:à²VÇLQã%Ï*·ˆ– wm‘)KúçIoNѬ,’³”K(ÉÐáxËò:²‡Í™?ĺk¢•U2§rÁëJT¦RJB~¨xå&é#¬Uà—Z‘¢kó)Þ2°ðUñ|,ÊÂè*ë«…&#\ù¿¢F ƒ››lñq'’+Ù›Ù¹1J¢J¥b‘ĘrìÏÖ…ÁZ»5Rej|µIŸ5 &”¿ΨP’ƒ¤¤-´LݺÅÎÄß?‘IùCKâax<ó/éS&RKîdF´ÝݲÏálsÚ¤€°t)<¤;¹§ƒƒKvR|_œ©x&„¯PZ´›léToùLÖU£¼x-2ü1ÁR€É4R up‘[¼b·îÁp&ÌöxÜq*p÷³tdl"X,ò¹é}ŒÁFÞ”•º‹zÃr¦•ˆ%„j̤كâ*ßq¹%VW‘¼Í9'~‘ˆ­ðtm9Fx@”›¹ècÒžNR¾ë0³*×/š°X†Ñý`ñÕò¢š7Ÿ$•eê¹ÎË™£W«*lb[›Š£¶D:Ö\’‰„“8'‘;—èË|.HT ,{ÆŒáJ§2šlô!åÊmjqg,"Y\hŠ)¡5¥¢¡(ÿ¹PW»¬s“\`¥GèF/™é€·å RßâÍÒ¬ú'W‚iåzԤ¤k $(ùRaŸã:ɶ„Ÿ‹Oõ=’¿î¯Oî6³øÙN¤©:H`9ž?N|úà‘Gë€Ögýžð.6h –”’É,uw>è#IK‹Fî;À-¬D¤'”†çtÀ6ö%–A%†Å‰õ€ºÂ+~*/Ùüc¥œ¨sê¾ÿB#ó^ÔIö®sý¡¡RfÉi–t¡ZÂvS3ÇÈ´Ñé’m¶Æ•,%¼Ätï 'ó:9×Ê”ãÒVÞf?ÑD!O[#i‚ª\‰\Cb°ÏÝŒGLÌŠÉ&­6%”w0í¿¡n†f½jÉhVžPúCíÎÃwÉ—”™Qæ9gSÙ¿hÂ^¥Ö œaÆ1†ÍoˆƒÜËØã/ô®N¨Ì¼8%<ÊÔHm¢ÁºÂ1ºÁè¿‘YÀçᙟ9b4žÙWƒáuut´üE¡¦If!ZmÜ1^ï F⋦­³¡øMâï1lÇ“snªŽ› ©L®8ͤ¦Z?F”i¹¿XŠ |Q4§ÝjEÆŸ&d¿õ?(â©ÒªìQXn1ç)]?Qd«ßæ w1™7ßðý¢Á%læ+¬¥''üpl"dŸÏ)q) ÝG™ ¦š—g 9OxÔ2ÝlfPQŽÙ<Ñ“JŽfÃПýjY÷s Ç\ZTt¨°qœ\ „ÕÎuúêhÂn[m™©0w TVO©Eñ€…PË ³(éeF½K ðbx,ıTþhœÇâˆÄZY~O/[ÝIÇÎJæ,1Z—7Vÿi…Ý´vŽÆÇ `ssk¥Â3„gëæ`téB•Ü~¯xÓ£S®´4Ü÷£Ó?‘˜ä¿ÌžÏù¿ó×úú¿Y÷õŒ÷Ÿ›]|Ö«Õ\ÿƒÌ™ï—³EF=z¦IÓÎÂî„«`OëwEàý>†ªÔ‡|r\…42´·VÚÉÒŽ·âΑœózÔ[O±ÿȘÂ<^Ìÿô«ï–le“órîíöÆ¢ólú/tH¨(!m³ZŠ#ÁÈóëþSLÕwfôåLMRg%ç4*Iù:å h?ñίÎCoBÿä5{¿ú×ÿòv-(¥ëýMÇ€f²e<¬-5Y”±QŠ{`´ž-ÕÂU¹yl.túǛںšq›Z³Ç ¹¯(½=ì‘·ÌYO'flÛˆÖ ®L7 ›7™¢o5Lµ“0³†ó}Wžé˜÷Mµth”ší–浊ï‹,$x³âÉk+fª,Á£¯ö¿h¨öY‰¢­2ÓÊQ¤2I3(Ïè'ªÔS‘‡ãVrÌþø1•§ä d¦®öÏk¨Ó-zøsÐË5*!ŠÖ,Ûߤ)IÔˆßbø wŽHü°ù=elãšä¾e©ö½Sµy´Ô¢X´¶@äJFß|n8n+bOâ›”ׄþe¬Qø^%ó6,—ÑAÁªí–Ò)e)Ò•z»tŒBmÕ–qŒS£†dâ=޹Oo£ýæ5sÆÞZT¥„èÖ¿ÖvhÛvhæÞ0)§–Že'WîDYml–»“)Ò9¥…¨sDM(Ñ™áÒä ;ÅíËô6(`]ºöŒ¶š³64ÚýŒT¯†­·G.ñ/öI!Mªï³o_ØwÛþÈÍ@"n£ªì/ê-ˆQtˆxh¢¥Ë¥Øn`ÞHüˆRÊo 9BÀ1*³ÄmT„é*P÷BÑŸQÂl7¾ñ«¢‚”lÁ‡AV²D„¶‘ðŠá”qå ƒn†%¦©“qèÏ.Ý^ áiîÐ~@ª6!Œ8F’Ä^   Ü9aÞY‡:œ›ôq‹Ø›”ífKí/âb…I*~¢ß¡66YI%Y—K[,ŸëÖ)³Øëù NYÅÀ8ÌáðÒ˜»²¦°e¤ Ò\‡ü#WF³vÊ3 £’îG{.12E|EB@’•(½‚7t’D“wH–RÙ`¶ÅýñL5G¨>M~4â9;ó…Òd/QÅÕí?:¦S´ùJê¿Æ18ÛûØë§6•$_—ò–ÆO0ðŸQ)áÿÛÈß¿è¢->>ëÁÓÞ>WþœÇåã.!›ò#ƒUd/šÄôII©ùÕ3xzg%~P€îÍ¿WE(ü¦fí\5’u‚ÌzVôsUEƒiY/Z”å\Ÿ¶`òÒB/z;F(•žõ n¦÷B;dÓm7Á­HQš ¹NǼ*Èü®N/žt×7O*,Ç¿ ‰96jâ̤9/«¬i>Ôa´™Õ|ð[0ø™=g _ šSq&²—ÖÖ+I7–bNJ*¤!¦å”z«+ü²] Œj¿çz‘´Þ Ù-sÑ3›bÃÖ8=zÙ–ËUò/Í&Rôcš ´§Ùe–ïþþ7ï“ÉÈÕæï’NcËy7Ǫq~4œ:Žubåû<±©2ÐVC‰Çp;t_z›3-'Vy² ‘T¤‘t’;%ã©ËƒªxpùEL©bÿ0¤+ùº’ñÍå›M-Ë]B–ΔžVôíõ%æÙ ÏÁ#,Õ„_D¿ùUYÀ~¤¿&¢>i¨a ñ•êö—¤öB­&ýÁáêVÈêCëØsëbø‰äxù.”é êä¿ß¶° SË6Ôʯ›ï÷&%÷ë§ãÚ&Ù[ ýG$(ÌÞÍ·¬;¹AdÞdbùŠCmÍÿ*£Ï®ª4ÍÅÛÁÊ0Æö$”ÛW^ìL~C¬§­&¾ð}M<Å0…$m¼pHÞù¤Ø¥6O®ïü™»BÌ X¯s½ÛXâ5J!ib: ­RñŒJ[y°É²Áþ’o†ÖyzÔšŒ¿û#AŒ8½R]ÚrÃüLiªÁÙ;DT³¦SÏLé*Ò´ìYâUîS°Èñªzr‡m>¼X¼ÖóöѧËÅå2=S’Oàu÷w¹Çª§L¨œ©³•©jܶñZUGÓ#–t-,—øµÜIJuÒš|Óš©Ð†–}“B_öLgâ‘åö|ž§N¥-ÿÙº–Uìò\²N­>·‚Áí–rPM9P OŒ)'“UvŽOâ®cœ¡`­,¢˜JÝ^L,²áš‘3ÿÃÎX˜”h¸w×ùÈû>.…~?U<íýóOÝÆýM6Pñ37å¬"Nƒâ\ y!A àÊS(¨ù’Næ=W²º~ªNZªÿ_òs†¼àª,13mMdéø¦¥VR.ŠwÐJæ–²êM·éX‘öOM£ò´Ö_˜zÓwor*O³%7Íê—XÓ(-×ʔyCi¿Åãsöf„û­o~yüÂÕ’ªàÊÍ'fÍh«a~MFn%yn®V½å,émÆ“Ö'Ô̯w±Å&Š™’ÁvY?~Ñ#óÝYÔ<+ñËÄ…‚« ËØÇ³R]\/g¦V”¥ÝrÔv@‰-4ØS’Ř>%ø»ž3Ò”¬Ë‹{jU)2›% „¨¬D'bw‚Œ`¶399n`c^$æ¬O"a™Jª¿^ CÅàÓð¥†âLÌæÜŸ²5Ûr·¹[mS,^øéâIÀÆ …c<<;þçÙäæR·T²|Ê'xRß’Fm`Ñø«â†pÏØÄºülj{LÙoÃúIÒéH>D%ü‰ˆ –ÁÍÉdÖåBª¿;ÓΪƽZŽ¥–ÛÝ{[3M—¯í†U™jp4s7ª£·†oó72”/go­Þ5W°óg=ñ… 52¨'SßÑ0º¢Xùû‰Í)†­@j“·êþ‡ï‰î£½÷²¢›ã/Ê/8çì§]—ñ9zhêÄ´¨<£dL–RNébÆîÁ}ã”{[8±Ôt‡m½!Ý_äÆ+%‡Ò2f0e'Qú¿í˜Ô“¼’+9;V;¥Ó%ò¥šûXB7Ûe‰®I%`>’7LNTèâùé*¦`@Ы0ݹYaÛ5 §f¹)J†¡t'HAbë&.±É›†WÔPUŠŠišž¬B:Xµfv™ØrŸÊsÄÜ+ 8en-íôCi< t5Ê·‰ÜƒðŒ{¨·i}ìÙɦc¸ÔÕ.ß°ŸÂ6“tb¯UÆ'6I”º­HX)W"n »EÝ»-nÙ„A*Mì"&‘TuO •(æš~!ö @ókLfIòm]`·ÎAÒ£¦Ï³õïÀ4yÈ効{}ÔÿÐ1bfT‡|›Káui òÏZvì%Çé½’¿êÏŸðx:´’:‘/ÊntýÑõ*U‘IV—k0Æ.xÈ%!CbïÜ÷‰Í÷e~ÖU§U÷Û¤r(t² Ý&À1°Íc`°ÍæH!9ŠJ”l5Êc޶aƒQW#“`«A—4§ZTÚf;5ËÚ?!Õ¯ûïþ§•"U•§˜òƒñhóªfêž$ ‰9‚ý`ò‚ÚÁ SU¥Jôí´Uã‚y"Y:n„õ:^0ïdElçx’x>+PÌ;/‰nÍ&55‘cÜzÞŒ'B ¿NñÊxy:&¯aë *Ò€ýŒgl³K?Cu•1ãã&¶L¾0ë-Û_)±fx5qílE»TZN|Ãå¥uò°Ž!1%ûB‹wò·›¤c·x7ÝobŠÖ®»ŸS1.¹ËTÂeOñ¥äÃÆQ•ùÒé%·ØÁÑÅ?åÿ6á XÖD•Ž–eÚ5{•×m#œNbµÓÌá>‘¸œ_‚‹ãRV¬R‡ýàø+´n°ÑÚ³¾ø ¿ °R 颓èxH´rgUUH· ã,Ò|1É`MýÐbë(Üa¹Ÿ¡Áæá²*´ÓÍ):±NÈ}„$”·E‹íxf¢|é“”ó¨ï´Uµyv21óš”|*ÇP‘¨~nÿ³ô£íŒ:NÙ¸ºG™0jå=Z;¨æ<ÛfŸ4J?2Ï7•Çnajöº£}ò8:²õr)•ÃaÝÕ69ISÁ¨;mðw" âÖ#4t´í³>n$¹Ø$¬.zx’ä?NÜ=JÔ«wõÚ#EŒ³l×FŒ7yfv‰M£¡ª‘$sOÑÏn]%ökïKfmÍ[5åNQwëÚ/2÷øŒœ5øÇ©Ó…³£Ï©˜‹fÔ%|Ã1Ö`ñÖ?5³3k¹W‚º´ 2OùxÛÜÃwe'"(f9Ò—7ïôâ>³-ê¿§ø8ê|Ÿ™ï•ʯ¯È˜¼6›Ž>i§•1ZÒ–ú;ïïÇMiéëNZ›Ûý,ë&å£àÆ£Ç$àyJ]JBSQ‰Š¤_• C-Nvm‡ÀƵzw¯©ß²µùqþÌGSÝǵ­ßÛ4Þ$M¡ÿ[ù-T3–R(BÇÈ')·¾Í®…KðzÉîû¿¡W{È~Q(øíˆ*Iâ)I˜¸u‹ èӔº-?J¿ÐBikKóþ¦Ë:aøº1¼*ª§ öi“1SøéV¡¨“Ê ‹^9ôsƒŒÔeü¯ûÙu;­Zä™y›/ÿ­j:/˜5Ô„L»ÚÖ4°˜ÿFÌ]ÛéåÓëG¥–¤§KÅ/NM­H½U?ü¤R„|¢PgÌã?Lßú4¶Ú1ÔM¥ŒþyùåO8*D…¢}Þ±áxÁ¤•ãaŠS!É·ëD ›e Çå,crRʽOmÙ(‚|•G ›,,¬Ñ¥K‰üL%‡B1Mdri ¾¯¾ Ã#ò&s×ùTÛ°m¹Äf)]–UÑL#æyG^’—koÌcM%–f;Z¹ER Üvƒjò[MÇ0eÚÄ×™´èâ…l§ èLYEY›¥LÖNTú]L´Üý°M}C’Œ˜HM3é?®þØ&g(pÁ± “±¶ŸÆ#h˜äA„â Y‘`XI·ßaT>VX¥%²·g^ûýпBæ²l0 &¾V+&zäêL©Éš¤ó1¼MÑ+P*Š‚ª¢¥-6ª¥s’—ò¥@-¾ÑrµÊØÎSÙ¯ßÒ+d«4™Î5Ô*’£r-öüb&ÞÅkÁIÀ©q|0&ª–›‹) HÖ‘­!@”¹vvÞ%aœµ µ#L²ª¿©2e^DâN˜­Fo΋ ¹° ^U¡ª¤¾<.(lºì¾Šž*<:ú5¸ùá}¿Y¾0°´µûkÞgÍ!Q‰`r À¼‹ÛLïÉý»í'ºY§×–=ç삞¿—7Zò'¿Ý|è°ÿøÄnñEžŽ´¶Ô¯É O‰áÔÓÍDŒ“¢pòÿ´”_§QÚ5ÞñÁ%¡«+]ôŸ¢!™óîbŸ‹ÔVÉzš¾©º‘É¢ÂÁp‘Ú%;ÁêÑÒŽ’ì†ÅÒ­¥ÏD¤yÚ)ÙÖûÓ–J5&÷bûÁÛ²»ŽJ†wÀæ×,®BuMNÉpn簈ߓ¾Éy4`x ðŠœ?Ûp©ŒÔÜYhfQW˜¯1}úGÎêúkÍjr¾ü!¬â»x7ŠÍÚ™s2­RξaÛËI{5§óo…ŽS§½‹àqÎÓ7ðéô‡ÿ¶ €þŒEì­Uÿó?oöG­þ$•”+-þ®\ªßöÁþìi{;Ym©û/òO}¯1áN%ÍðãPPº>xUý£_€ê8Õý—ù SOÿîcãyštÌv—ò§Í*© §ùø›ªR’R¤s t¸½£Z^Ïššž¬û«Ò³ù2=Tþª(aõÞ×"mTe¦‘N™`k y€‹Ø¾ß G×å3|YfšR½Ëµ›¸Šó±b÷³“Ƥ›-#HÒ@û"U“-œ»4eÚÙŒÙò$ë–§Q:€¹$õ0yØzÑ‚â†PRiìm?Œ[\™µyƒb:Ä¡#˜ßÌŸÆ%_Ð]äqÁq&)ö[ ùÓøÂó~ Ü÷3Ĩ™HgæOãÎ O;æ|IKT´Óó ùӸĵdÛsi”©ñ ?§ÄK­µ2u¤;‚7øÅÛj‹þK A€ÊMZ4U-ø‰pt²‹mcb"+;6“ÁµYJ% *`¯=·í ³ Á[ÎxiÄ)„µ–)Øö¸õôŠß’ñ±ÏƒâRf™bC…þÒnß‹ ¼”GóN!Â+öw—ßZm÷Ål¹¿Qß3b\DƒOuyyÓøÆVØ%ã•âj kïçOãa‘J†|͈ë(ö~f:l>Ø?%îäbICš}¹¼éü`êL½ÖƧÄÕ,«Ùœ¹ÓøÄx+’LhÂ1à}m>dØý±§M–Ç ¡Hîwâ&ÿ|JŽäîB [µ. Ÿ:l~Ø%Œ—¹ 8&&& bˆN¶ÖŸÆ2â‰ÝÈ/ĵ„oÚmiûw…rÇr«âzŒ´Òóí­;}±¤¯}¿¹{–ãååü[‚²)™Æ´þ0XkÐw+¬#ã*P¦ç=5§ñˆ“I0¶L&`ø’¬Òéþšo÷Æ“O ݄âˆN³LÒÇ]iüc1·¹0þ¢#Å ®FãZÓW~¥u¿‘¿3âHA*¦aÔëOã ]Äw&ð9X&(ž_eÒz iübvâ—æ0òÅ›R?¯?Œ+»6ÐÔ`xЏcÙõ>žtþ1;]1{‚ðLL© Òó/ntôøÅ¤Þ’àS€âbg 4¼Ìç;}°I7œäòÇ JI4¬›ó§ñŠò©“ºÌü·…btõ©šŠ-k±’8‰Î4õýðjÕåO(ÓMÃ2ÜÊzä4ú‰æµwªR@"Ö7ÿt¬“!i9“ׯ¤]ÈÝìWsÞªê%ìà|ïëñLÌ®Îq?Å$Î)ö{já¤ëMýwˆ—Ó‚âee"žÎÇ7?li×!ºÜ ‰,šk$éó§¶#òK­Æ§ÄÈ-Lä)::ýŠÚ¬'УììçZl~ØlмF ˆ“Ã4®±ÓZÓ•¯AÖÇATÖ&¶›žKš|B¦³áÌ[n1þì}Où]«þ¿àãøv… Òz¿ýéþìOù]?×ü Åû I£bú‡Ò*çú±µto/úÿ‚{‰ !áªÿÑ®úHÖ«f5/jèÅS×ü Çÿ†›{?/}jßú±Ÿùm?×üÜI­ŒÜ3ÄùS¸Ô˜G yí>‡t6ÄÇ=_iiö´³÷ô:ǧ•Öæƒ§¨¤ÁäI«^º«ˆX \Ä­·hüö¤û¤ÙìùU2e-*_)¿Ö¼K¥è]ÛC¥ž‰‡_H;d’‰3têpŸMâ:*«C¤¨¦N–Òÿ=É~J†p¢žkäâtrx“äjÐ@> nm³Æ¥½gWÁ¼_ÃJ e³LWˆ¥u=‘îŽ=ƒ~óg¯Åœ¾™…&^‘Ô:ÿ¹È÷¸¦‰Џ¸‰L›úË·ö"88°æÞXÔø¯Ì$!´ÝA×öù"ö´²¦n†/Åœ¼9U¸·×þäkÝÐzŠî‰ÖÆ_–F¨jWŸn£ÉŒdí´¦0WsÖnªÎXíbh½‡ £§D©*âñg!D¤¶ éW[‹ÓeslÔÏ!s5¨ê$ßßXTbóûóF¼K 2’=9H¾7X2Õ`±xE⬽–å`øÍƒN‰S¸© JR,”–v&æ9´Û³jM*.Åœ´®º?ñ ŸêDí*Ô[1SâÖZÉúÆÚ~“íòC³#Þ*+ÅL²²Æk2u¦e½<‘–¤–õªBLñW.%íú¿¤æþÅ¢¨¾M=T÷ýkeÓ'ZK·›ô–íõ"Õ:f\ÖèÖg¾zÈõX ‡ñY£Tþ+pôL ªHwb7ŸwœÛMòV]2䥘ßãVw9<æðaW!3© Ò:zÞ.ù#Ř~fÙ+¬—2‹CQ£Jø€p´…tbTå_Ì“¢¯…äéÃÅœ¿{_úÜŒ¨»k“NXXým`«÷¯ûQ—€õ/dça6cJ^¡rî{ˆÛðÈýJFMÕ/ÆI`¤ÞœaKÙOþüxþèóuÃüÎíOjP@`ÎýÃo¨g‚É¡¤zí}ER‚YÎå„ 5Jߣ^&âÚ1Ø Ùþ½ËÝC¸…~ [Ý#6i<_™3ýmaó4qvûÉOOº?5í$é5÷±ôô0š5 J‰l®{Ù¼¿Œ|‹ÉÝ7vù Â^•ì€ñ¥kX¤PüZ†b‡AÔ÷ý”Dß©]¦Ó J†)D0.ǽÌfO%Œ-ZO©JuýH­ø3ÅÎ@ ’›w¯8ŒE;É©,Y‘ÉF$-ì7<Æ7»d4n¦ÈS(žf·[BÖä^* ,¹EKº—… •Á`ʨ2שGC¡”,®‡x¶É·c¥Í•5E¥LZ52G^þè6BIj(žÀ›¤#JyzÄywzŸƒ9ßõzÅâ†IiÕ>b–eÒTÌ)IR´K%‡Rb¦¹*o“s–éç×­R¤H˜¥¥Di.»{â6Uƒ.©*–½ %†Aî:DyÕÙ Ró Ë0LiR"v©ŒŸÎ•Î{vˆêËx1!‹”» Þ*C5ly’U¤:_ß´EîźÁŽ™Å'f1oÈ~‚"Z‚ÅÀGh”šÎã»À«ƒkž»¥’ìÀKnFpvhœ_"Ìê#ÃPR)êçÝM••5HŠ êì"îľ-¬JP–Ö^ßl0…Y éÄŹ°$¼UˆŸ‘S ðÔ —!™ChÍ[  U­´²* $À·R@°s•‡`d©)òÙ¾øRàÖâ"I ’¯ ÈXÜ)D°ßá ð+fK”e„Y…‰õnÉ\‹5B[ð—k]Ÿ¼>£,orÈWkúŽÐܫɎ´“Ö½âz *!Ê@±¸¾/ wÀÔÓJÊzØÞ+x#Mˆ™* YRmh‰ÒEyV5Ô&,û˜Ä¬ ǪT×WFf~‘¥[‘. Šjp*AtÛ«íh‘ ÚfL‡2R£Õï¯cT8J™÷…ã+bÖ -,X¤ílšù·ÜÅ2WÌì™úD‹¯È_"pɘ¤èQvéhàž¬IR⥤‚v~°•, ït92l  Ip!Ž õR”É`—¸0´÷'¨érÌàlzÁ¿&¯À¦P·+Y¯Ú&Lçx Þ]BðXÈÍd8=^²¥Š€êt—f‚a*J ”Ü¥¾ä+ á ãH†7"µ¸â„”¦^“`ß 7eÈ"O8 Á=úDËØ«BX»ÑpîuÀœ7S›ô;ÃuHŠì`HC óuƒv²7Êh¸-ËâEN“Hq”,°Î:ö‰è_DJ%•­œ¸‹³'6†%RN¡î'¤)'eO·(@”Ä’:´6Ê%~£K¤ßxŽ8 »Cd·•&êfëïŠòÇ£RÁ{ÃѧY'¥tH ÷ˆœÑ§àÔ n!ï¬ÌS JL¾]þ·¨ë lG[,.ZHãaÒ »ì@dIÓÃ:“pK´ ²>0t—Âà‘µ¸¥)ÒAIÔÿt‚« ’ÒÐÚ´wë à‰[È %” ïï‡ô*u¸à–BRJúzD¬Ù8£'!Gm Àïx·ÏÛ»ÌÒ¢¥(Ð à±±•n˜’´®kŽOÖ*û )VLz‰IPIÐoõzÅõä^/õ1øK[$V;Dß<©ˆPJ´€Éàïp½G­ XJN‹0‹Í “xäx–­IXò—·X–«!?Øq(TÎ&“ϸ;Ú-pÂÂ¡Ò e­z¸&&ûC6ShrPÿÐæ‘ M¼¬Aê}#+ Úäk–ޤ$Œ^2kÔÙ *[ j$X³ínee䄤€†þèZ’$óªak¤¦'вÎG€Qm@³úC;¢'ð×ÝŒ›N¡7Z[Jy›«÷'E^S…&b”R¢÷°†ø Y“(±Ð}‘"Ý‹ ¾{*™ŒDù"´J§)ÀÕ¹0i]ðU†2XfZ”’Õ{Åo8%È–Rµ) 'IuDt¡)å#Adðßrw^Æ4Äq‰jIë¼VêF±v2Z V‚êÚ%y%×Ð%KSé@p:%šf³bË”•©:urb%H–îÅ\´¸–RIwÕÓÝï ¡@‡vh”†kO%a|Ä1/þø?AlÉ"bP®ªao«ä‘v<i!$ ",’Ý䊩 T”é ASõŠªËI3rAP[?b:®™W i,Ä9w÷D⊛ŠúŒÔ©¤î4±‰DV°*¥êF=T¼‹k" A ¨;v…-¸o…áºJt“Ù¡°¹+²I äP,OF,1yÆÆDâ“1s.[OñŒð‚Ûâ1Ðt‹ôõ‰ ›äÆ™!œ ú›ÃŠ‘Ùs‘¨‡¤6m’L–IyN㩈•S+´©¹gB”2ºÁR$[Y`B¡0 “é\„ö¡‹–Dó¨;t=b´DÚTŒŠmA)"ö`zÄúšmâÉ –›¸aÒ)”1jçR” Á"·ÁLÃÂi¼X“>iDÀ”êUyÎ×ëCÙ±Ö¿½ÑÇZûh픫B©e(c¿FÕ9¬dšR’¥•8pä Æö%¤ Ë¢5)È ?k@·À«)pλÀ—òT’H\Ü>ð.SÁ^ñzj|a—2‘bz)ߌ%¦Õ%-¶ÑùŸjI4—ßÐéÖf¬”qž‡q3)”óÜÆN#J«3ØïÛ$V°·(þ=)IÍI©€°ˆ:#_ ´Ã4K @R›{¤ØÜÆW±c°Ô/”°>‡©'œ’ì~ræÉÒô¨}Aî9Äe<».\R!É$üÄ›¤iv'ùÆ7±˜ºÉ»*Z¥+W£o ÈX1±:UO§\‰ZB–×VÁˆ1ņ¯#ò^²Tð£ÂÕÿ­6׃-;Á¾Ãéª)eKAL¥0˜M Ùv3J怒’ÃIx$-¡ák%*à \ z÷бe³g–±Dá“«LÊ)s½¢™ròÜ$©¯½£5k³aë)èqyõuiœ„*Z’$JœcÒÑi©5=5„éÈI\Ò¤¤‹€I¹õ‰m*BYÉŒXÆúv;{âìÔDåD‚A [NÐDª“¥:À¿OúÃÔ¸´!ˆçÝd<ªD3e„³|DU—eÃxØlÔ1!"ìDMÐpÐ,z«ðFÞâ¸N_‹ÏÐ(æu¬:$ífT- !$%m§býâ2p;P–¤„”Ù“WAæ3’«vh/$[z’ iœ©é8± ”@dµþ°¼.°%Pw S»š'« r9EÃ}7*e¦ÒÀ  K) MÛüˆ?B±ÚœŽgåïÒ5‚) fÝûÁº*ÈÎÎ^I n#}nÏÚ&ì¡2Q*Jå‚F®S×ÖBl52Âu;•_ð‡¨v*K§J‘¾ÖÚ¤ÙУ(¤¢çu$Zò_AË–@KJtŽâðFsA-#†ìäþ¶ñ^åÛ(T$ wÜânÇô !iAÊFÑmîTü’̘kåÝúC`—’*¹D²@n‰‚°±”C-„­i~î ßÃc4Ƽ+–t¬)ì)*[ÍC¥%!Ø´Mòm‚%$¨©VcnÐc| •¬’ÌÍþ1vȬ¥¤Ë,“km¼l, ”C¦á qh1È‹–I%/¨ÒR«IPaͽÿéË@t\²HmÆðYàM)Q6Ûв…$ªÊé ˜õ%¡<Ä9^ò©Zù@ƒ à™B- ©C—•›µáÍ ÆD( Z– @ïÛßml Eź¶ß»º.Û œ V,…vJv›•ÕRڈбV@ˆœ°,$w´e>C`¢7Ý=þL¿$'JÉM¯’¶ÅöuiI?Ý:õay2¥}UèÄoP›än†Yûêê}!cК\ ÉIqOX=ÃÚ‰… Xóy½;<,Uì4s5 )ìa‡²Àä©$ìàÛ¯¤]‚X¹ÔMU„Z#õIA[i¾îÑ =†ðÒ•¥ýâ ™{’•±¤Zá_çxn„(”“w`ûü"_%§v: PO»ïÚ¡òS¬•i ÝDÞ¶0) iSõT7Á=DHæS“ß¡…ÞQð'2¦¡jpKÚ$8¡:yRS1{,_COz¢\²½ÃÝïƒMZ"ÆâSH J¦±Ò6x¯;ËN¥`| t‰…°{w 2RIpÉPéÐÅyÈÈŒÉ.„Ûh‹$y¢zdêKê@åfQýÑ þaòQ®v’£m˜õ‰tÍ)eî—Ò_¼(ÎF(#&ÍbÝG¬Eä’ :“²lÂÑ¢ÒÜYiJV‹%‹TM÷qÚR&¨}ÜßoúÅŒRRI"ã¨çh^h'B‰z”4€Ý?ÎñJA4²Ã‚Ê2Ý:ŽÚb+¢?å:S©Z5t*‹Uô'#f$ Á ý«4GáãqRÄ–õ…Ìiù„h¼Ë‘²{Æw¤[ÜrÛ†¤s–gîbÕ™Û"LJŸQ¿}==ÐT^p!AB” ?±õawB–èr@I+O—«zÄ2Ôt}‰þ0TÖCÎF­'Xc1} ò-±ÉH2ÔX¿O¤¼¨ºyc©™‡~𲬲ia+Aâ, {›’:Ï8%ÞÁ)@ Å•©ñ‹èVˆ§©Ç Rµ7Fì"¬|ŽRR,Ÿk?¬D9å€k’:ÿ„W€"P›i·3zÂ%XË”ñH ³ô¾è¤o P‚¢•1ªwøÄõ+ÆHË%ÇÖB.°ÂË$! ¡ÐĬ™ÛZt,¤º„-Sf–ôÅB‚‚yHWKZ4÷'Æt%*òÝÂwø_êW½ W”¥)ÕÝMh˶r5Ó ®î6x­Ûbí¦Œ„ΗÃá§W¨°‰JÊ–QŒ! Q#wƒË¦Kjã©®gê}ðo$Û‘¤Ø_¤m—}Ç©J rÁÒÞÿX¼Ñ_9ÔH$¶® ö÷ARܘY58Ö &ª© ˜fËXPP›-‚…ÍÁoŒj2qv˜j÷Ut eÉÌÁ@š²þèõG­Ö_ÌÿVsZ0Ý’%5öÿmãNÚjUsë]v²¿‹÷cÜAŠ™x’Áÿnc .ÿÊTÄFW[¬¿™þ¬- Q.µZRœw@ïTC˜±ëõ“nÿ©=ÌgJ®äÿocÀ8ª-ü~·ÿ'û•hžÊ£®TÔ§ò‹JíVb>¿]ªR« N+ƒi†ËM4ÕÌMDÙÓÖÚçÌ[Ì[lêܰ´yfå<ÉÙ´»PòABf0 .ç Šñ†iÕRÈ¥xôIÌr‡gÛ*6ˆÖIÂ6˜IJ¨’L°G@…Ì%&#p•*0åNÒÚ„Í>@ ¨÷x®'4èÌÍrÊ2QÙO±ùÆñ•–k=¦>EV¬Rt¤‚îZǘÅfbEªO²pÙZÎê Þ/!cè@°x‰ÒvÜuˆ²f¥3F´»ÅX*ø]™)ad¹çú@œŠd†Ónöÿ;AYjßÐ^ÒêwÝ„ Ûd²e%ƒ¥"ý¶÷Áø+#Ô´ðÉN ­6ë똶0(­7Ü)ÉëÿH»©ØÙŠPJˆáž—íÚ¾Äl Ã~èÉV¾M+0Õmž]òC¯RK]¶â·[+â!AA‰o.ñœØ¬`j¹ˆ@.N硃¬–ë X êé6ÈýGiÐ̧XØ›ökU²úT°„Õ;÷…ÙІ)t)=ìÐAa×$€&÷ëN•%CÌI`b­Ø^ ÷ »ƒÚ".‚úµtnÑ9//PJC9;‘Ò)”‚Y%Ò®‡¯Q”–ZRÊ:>©†Ñ}A¤‚ıkÄÜz3 ”¤%D «QH6~íÞœ• ¼Æ›¬>‚OÅ׸m6†âí€*%›ìøÅCŠ&”¢•t#¨=b*¬…½  Xñv 8.åÙº7Hœ0²,Ñ¥Eˆ-¨Èô…ËQIæ=DRºÜU“¨@ô?Æ%rІ¢±1k'&<ä¨($=ŽÆ%4¨né’Å J °¯FEȪ$ÊÑ©!]Œ¡xWø,ÝÄPèBÁˆ}D»žú‹<áÝÙØmè8±I&àzŠ– ü‰,2VúTîÝÄ]· c]€å'o„gÔ7¡$¨‹'ÓÒ+RdËF´Y’ÅÿÎðyäc:F‘ªïhU; €Kõ€¼Ú(!JA³\õ‚Ë#ÏÄ"R‹÷êaeÀ€¡æÛSìbÒx.,zž¥öLDeå¨r ÝJÜA$Š‚BÒ€¯2En=СK`k*Iއ§¾-íLeÖRG)û¾”­Y§[²EHR `myÊÂ>!S>‡xžh—‹ i*r.Ûi[EoÈæ*mA6½¢n¬ §ú¡Ëu…QùE’”¾ä«¿á ǨÐ+Hê%âo²Ç¹o ÚÖûâý ÀLA`Î].`7ÜaÚäÁ¯ Ñ©!îC¹îÞÜÎhRRé mÚ¶-$„ò"+±°JÓ°Þ*Ê šÙŒ!¬’}@Ü{¢-í…ÂärŠD ¹‰Ž€AxÝ ¡§j*÷…àl2hZ®ŪÃ*XÈ©Ôe\m¨ïƒ)ò<s):Kì{Å®XªÜ“JåÓ 'R]Ü/ßo’¶ìI¬RU¤("Þ±7x »\ûÃ}´"KL)Òú‡Qh±še‚ AvoH?BåÔ•¥ÂA :w0k€:r, ˜ž›ÿÖo^t¦ZTT[q¿¤S ²S3V¾I#¬e”-Dé))OQû£FwUpèIÚ€¸ÿ„€úHpv=DK'ÔžMÕ«Hfbë௧JT¾"µ~è¯lרèÛHPýÐ~ÚÂp ,ˆŽñV—€–VVê u‰²#ÆG%<éS¿`wø3Oš Xé_s´EêOF$Ĩ…„¨tm&*¤ªë˜Ràu¼6V/„ZB%ìÖ…++ÞÅ%I.ä÷IþÜ‹(@—A[,^ÿ„/€:W0&Ì6ü"1A-Á:” %ìo_QT€obÅà˜ÚØŠ!7Ò@=„7&ùjØ”…¶‘p`‘lE¨¨r‚ÄiøÅJˆ ,³3;ÄÝšiç Q³0Ñ»EãФ²˜îF‘§võˆg ˜èdé7êàó’â†kJYFãªz}‘if†ÀçJ’BŠÎïn^lP–F’mûýÐæ‘=Bk…«G”7¼{¡YȬ¡%ê -Nz½Œ^leüLtÄ$ íÑýñ9-ÑÔ”:AÓÕ"£ a«B¥ÍrR¢>Èqc{–R\úÃâ Z R«>›EQÂcÔ|´“«Pú¤Â³AˆPT«‘d½ûAàbò'0HƒÔ°ÝźBHr7'qœ Ñ¥Eƒj ó¼Z(ÔK#Q `|ßçxrDÚ±ÉJÂ,ÎÚ˜õ÷Azö¡«@^—JÅœ¸³ö‚/håµïפ.²Ì¯$”èH˜&’§M˜î`ß‚µŠ'L¦r5tíüí ©*”P€­=_x^åx’>‘µhKm ¼º)?(­TùI~dÿ6_X©¬•Wm3a…-HÃÐX—{v¹ŒJ]¬Î{Uª?å)øþèÚÜæ·7™§ÿÉ ÿ?\D_1Ö>Ø4ßÒÿ™Q<ˆlX;ƧóÖÌD*WÃ÷E‡Gº"§þN¿qŽ\æë§ÿv#|¢½Ðä~”ÿ26¶dò=[ˆÁ‡º6T"ilÌtïÿ‰È[’JÝ~óÀ{¯ôgùñ[T{ÄXòg–:§ôGÝn<ý z_Ò&2·#ùGHý0òË=„‘údücS{œÖ̃ÿJ?ç¤Uɯå'VãÝ—úaüØoÌÓùE¤§±WÉù’ •…³#§ò/ùÆ$·EþP¤^Ä_'æ þR?›üb/”²àTûâCq.±y+Ø‚OéSÿ½-ÙðdÕ~‘Q!óå1å~…?=ØÔ­ÌXü¬Ì÷3Ï/ãrkùBèðŒÈi‡ûä|cOf4ÈOé'ÿF4qÌt­¥üc1ØÌ¹³Î˜Ý[±ó<òþ1W&”–‹ëÿ4ÂFõ~tÍð„vdþaSÖ5þyõ¥ƒ?äTì}ñÊj<“ÿÿ8ÉŸòü8±Ü’#åøÅ–ß™ÐEy Eò‘ì1>Sîb?+"?Éæ:7üÈÚØ™_Z1àĹÓ¯áû¢¿”ÓÝ ú(±ÜÌxéeüc sSØ}/èt|š#_éQñ‚Øâ¶d’?@ŸŒ'ÁØËÄü©øÆ93=ŒyþI?é¦8—ä5>cžÁnÇÓ£Þ#§ƒÜž£Ê=ððt‡È2O“ÿ/,æ·dóFŸçˆˆ±ùY5?òÊç§÷Äá–?ØŽ·ùDïÿH?¾4¿±”Šg_̈þS a²ÿ@}ñ¥ÁÖ?3ú GéG¾æüˆö2©|ªþqŒH-†ËóLøE{#Ê/ûÙ_pÍC`§ý,Ï„%²ØJäæÜ̹Ê—ðýÐ*4÷CÕõ¾ Ë‘)¼†Üé/™Œ“úu|"½Žqà‘?WãG‹þTVinɇèüãæ¾fC'ôkþq‹.ŸÊ"?N™ ÇådŸÝˆ?À“¿Að„w+Ù Gèæ^Á#ÊŸFžÈAü©_Ì?¾1È[1Oò„ÿ4~øßì„ÿÒ~Æü‹QúYGfj{KòÙ‰ìOÿ¥óÒ/“?Ê(ÿqý(Kq¨4ùWðòŽšŸ1éÊÄüãüö‰ü¬ÆŸÊ1>yŸGq§º"Ÿúe|!Ã,6!¥ý ~1·º4H¢Ãåéëÿ»‰þLÇ‘ƒeîã2ù‹«²#—çGÂ$·DþQé×ï1|˜†ã§í/Ü"p¾¥ÿ"w-™ÐyþQ/ù¢$NKv*ÿFŸ[š[‘t>øÔö,y´ÌÖ}_ŒbG=0¤Ý_Ûù˜ÔKú ßÑýñ¹n¯Ï”‡ÿ™?ÏêË?òœõ>vl0Ïä£üõ1×WçgDÿÙtiemu-3.03-nogdb+dfsg/skins/ti92_fr.map000066400000000000000000000035651220314353500177030ustar00rootroot00000000000000Model: TI92 // French mapping // Alphabetical PCKEY_A:TIKEY_A PCKEY_B:TIKEY_B PCKEY_C:TIKEY_C PCKEY_D:TIKEY_D PCKEY_E:TIKEY_E PCKEY_F:TIKEY_F PCKEY_G:TIKEY_G PCKEY_H:TIKEY_H PCKEY_I:TIKEY_I PCKEY_J:TIKEY_J PCKEY_K:TIKEY_K PCKEY_L:TIKEY_L PCKEY_M:TIKEY_M PCKEY_N:TIKEY_N PCKEY_O:TIKEY_O PCKEY_P:TIKEY_P PCKEY_Q:TIKEY_Q PCKEY_R:TIKEY_R PCKEY_S:TIKEY_S PCKEY_T:TIKEY_T PCKEY_U:TIKEY_U PCKEY_V:TIKEY_V PCKEY_W:TIKEY_W PCKEY_X:TIKEY_X PCKEY_Y:TIKEY_Y PCKEY_Z:TIKEY_Z // Numerical PCKEY_NUMPAD0:TIKEY_0 PCKEY_NUMPAD1:TIKEY_1 PCKEY_NUMPAD2:TIKEY_2 PCKEY_NUMPAD3:TIKEY_3 PCKEY_NUMPAD4:TIKEY_4 PCKEY_NUMPAD5:TIKEY_5 PCKEY_NUMPAD6:TIKEY_6 PCKEY_NUMPAD7:TIKEY_7 PCKEY_NUMPAD8:TIKEY_8 PCKEY_NUMPAD9:TIKEY_9 // Arrows PCKEY_UP:TIKEY_UP PCKEY_DOWN:TIKEY_DOWN PCKEY_RIGHT:TIKEY_RIGHT PCKEY_LEFT:TIKEY_LEFT // Functions PCKEY_F1:TIKEY_F1 PCKEY_F2:TIKEY_F2 PCKEY_F3:TIKEY_F3 PCKEY_F4:TIKEY_F4 PCKEY_F5:TIKEY_F5 PCKEY_F6:TIKEY_F6 PCKEY_F7:TIKEY_F7 PCKEY_F8:TIKEY_F8 // Standard PCKEY_RETURN:TIKEY_ENTER1 PCKEY_SHIFT_L:TIKEY_SHIFT PCKEY_SHIFT_R:TIKEY_SHIFT PCKEY_CONTROL_L:TIKEY_DIAMOND PCKEY_CONTROL_R:TIKEY_DIAMOND PCKEY_MENU:TIKEY_2ND PCKEY_SPACE:TIKEY_SPACE PCKEY_ESCAPE:TIKEY_ESCAPE PCKEY_BACK:TIKEY_BACKSPACE PCKEY_5:TIKEY_PALEFT PCKEY_OEM_4:TIKEY_PARIGHT PCKEY_DECIMAL:TIKEY_PERIOD PCKEY_OEM_COMMA:TIKEY_COMMA PCKEY_ADD:TIKEY_PLUS PCKEY_MULTIPLY:TIKEY_MULTIPLY PCKEY_DIVIDE:TIKEY_DIVIDE PCKEY_SUBTRACT:TIKEY_MINUS PCKEY_OEM_2:TIKEY_DIVIDE PCKEY_6:TIKEY_NEGATE PCKEY_OEM_PLUS:TIKEY_EQUALS // Specific PCKEY_F9:TIKEY_APPS PCKEY_OEM_PERIOD:TIKEY_THETA PCKEY_TAB:TIKEY_STORE PCKEY_CAPITAL:TIKEY_HAND PCKEY_NEXT:TIKEY_MODE PCKEY_8:TIKEY_LN PCKEY_INSERT:TIKEY_SIN PCKEY_HOME:TIKEY_COS PCKEY_PRIOR:TIKEY_TAN PCKEY_DELETE:TIKEY_CLEAR PCKEY_OEM_SCROLL:TIKEY_ON PCKEY_SEPARATOR:TIKEY_ENTER2 // For fun PCKEY_OEM102:TIKEY_0,TIKEY_2NDtiemu-3.03-nogdb+dfsg/skins/v200plt.skn000066400000000000000000001567171220314353500176620ustar00rootroot00000000000000TiEmu v2.00¾ºíþx#Voyage 200 PLT skin for TiEmu v2.00 Julien BLACHEÌàÏ1."V200PLTrUÖP-0USo5•MŸ4ÃMË5òMû4 M*4PNV3Nˆ4­M·4ÛNHdhvvc—v¥cÅvÔcóuc!u1dPu`duc¯v½cÝuíc vc†™†°˜¾…ߘì„ ˜…;˜I„i™w…™™©…ǘՅö™w©—º¦¨Å»Ô¨ôº§!»1¨P»_¨€ºŽ¨¯º¼¨Ý»K©iºJÊiÜwʗܦÊÅÜÔÊôÝÉÝɮݼÊÝÝê¨ ÞJ<lIJl”<“¨;¼Ò<çH¨lèxÌÉæyj’¿hÖGÁb§À¿û;Jûjwûš¦ûÈ#;8I#j8w#™8§$È8I:fGJkfuJ™f¥HÉ_r<ŽGqkŽuršŽ¤rȇ›;¶F›k¸s𙏦šÇ¯Å;ÞFÃißvÃ—ß¤ÄÆáÿØÿàJFIFHHÿáExifMM*ÿÛC  !"$"$ÿÛCÿÀ "ÿÄ ÿÄe "2BRbr!‚’¢²Ò#13“”$6ACQTUVt³Â%&45DEFSacdqsuƒ„Ñâ'7‘£ðe´ÁÃÓò…¤¡±8•áÿÄÿÄ(2"Q!1ABaR3#qÿÚ ?¹hBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4üžtÚÇØº•ƒ0óÕŠ³Ö€x±ßtøDt*ƒ¬ vãŒO(›j å& Ù„VyǼJá—Œ“)UwJTQÞ’Èùb“Óa}ÚÇÊ ùÆU*ƒ§´v£-Ã"Þ7È’Æ£'îé>I’í±úËàú1á?wFùQIðŒ»£|¨¯==û„ºsþS„”3_Ò9f>Eß%½7ë.ú)á*ÝѾTQá:wÝñ>XWÎÏ;ºSóÉyÓ_¶îœÿžIÓ~—}ð­3ï„?—ç…i}!ü¸ÿšùÜSÐ$E1ÿ$Éc)ÎýØÿvòN›ôÜ}ð½+ïŒ/—ç†)_| üàWÎÞ˜í¥ôãþy#¦;˜Jc¾y'Mún>ˆør÷ÖÎCüÑázGßh?9i|îé.‘Ónùä‚dYe;ò„³¦ý.ú#áºGßX?8i¤}öƒó‘ö—ÎݱýÚïœKͱ[wIt»W§Oú]ôOÔ¾°>ræQþúÀùÈšùÜ/ë—:»Éàæ–áyIÓ~›¢ž£ýõƒóö–ëf.ƒñŽ æù:7]Ò\·¼¨æ¹÷-áÞN˜»éòá뜾nŽ–óIpG¼¼¹½%p¾çWy:oÓqô‹h×\|ä»>Êßž¾o‘,ÛW<’K¹¢»ßÜ{IÓ~—}é1¾ékÏž™î¶>PWÎAÒ6ݵs/i(I²ý²çœ7éwÑž› îØÿ*)>÷to•ó Hm?¦\ó’HÃFó®y$7éwÑ Àû¾/ËŠG…iš?taü¸¯[A¶Ý»Ù»HmÐø÷<ä鋾иb•÷ÆËŠO†©|àüà=¥óºöôg].ÕÉW…¹_rîñ'Mú]ô?Ô¾°>ræ¼ðíïÅ;ç!þkçáy{ûÜãÚ^‰µ¤ò¾ïg2tߦãèo‡h~)ÿ:óI÷ABûõMùÐ{Kç¾Õ­âuß9yµkGÙÜífN›ô»èWº ߪo΃üמè¨)¿;ó_=¶hû;žr÷jţﮔ·¦.ú÷r›ó ÿ4{¡ }û¦üì=¥óæö-"\ó’Dã_ñ®ÝÞN›ôÜ}÷E@ûùKùà{I^èh?):i|ùÚ1×.Öd{Áe¼®âÌ7éwÐot4¿”¿´t4¿tß´¾|Ž˜Ú â'tQ-çÉYÓ}÷AAûõMùÐ{I%ˆh\ß³Tßœ‡´¾|8q‹­jÅtR!¸²­éÇÑ8uJdËŠد۽²tJÕ±ÒÑöV¼õóŸkGyÎÖT«ãi+m+:cqô[¥Dû¥”ž›î¸ß*+çXœn×2÷k„”ôÅßD¼!GíÈß*)>§}ÝåE|ïÚÆÐz5ÜW-鋾‡xV›£÷F'ËŠóÂÔ¿¾þ\}¥óЋ¤·‰+m5·fí'L]ôÃt}º°~ræQþû@ùÈšùó¶‹oÖ£mÒ¸ŠÔ鋾‚xz‡£÷bŸó ö‘î‚…÷î›ó ÿ5ó쟇 ~È\;ÈÛøFç-N˜»èºßÊ_΃ÚGº,=÷ö—óÀÿ5óø^‡u¤N\½mè$9ˆ–tå—ûÝ&ûÿKùàš=Òá¿Â WÏÿ5AvÔý#uÅ™z/S³|`Ú9eø÷M†¿i_<i'N)Ã>GHùë^Ò¡;Jv¶ç":qm¢tå—ïÝNü"¤|õ¯iyî« èøq-#ç­{J‚í©Z³8r•në¾jtå—çÝfç·Ý-çÍ{H÷Y…t~ùhß>kÚT NŽ[ÂEä J‹féeì§NY}½Öá?Âj7Ïšö‘î· þÒ>xÒ¡wQn´…Ï1z>,Ö9æ­é‹/ŸºÜ+øKHùà{I:1†Óðb:O΃ÚTCš‡»³"»°½¢Ü9Jî­¤1eî÷a…t~øé?:iyîÏ ~S>r*ˆˆQ­´„®.Ê E„KÍÝN˜²÷{³ÂŸ„4ÏœŠO»l#øGKùȪ'ÍEáóQ²£oZ^jtØ*ËÙîÛþÒþr+ÏvøCGò⨭”[Gã<Ô¢ >kn/%:h–^Ÿw8CðŽ›òúÜ|K@ȼÕrš@_ž’æ¨^ÎÕ/5ÝK)š1eö÷CAÑð×)¿:iè°÷ßê_ÏüÕ ÙQnÞ/5{²¡öº¤1eð÷O†´~øi?<i'ÝFÑûã¤|ù¿iQb‹hï\)$ÍáÌ^jtÅ—ÇN+º>KFùó^Òð±~Ñðâz'ÏÚö•(ô>±$l(¼DCä¬é‹/» %øQDùû^ÒèÓ§Á¨Gé&F–ßÁ{‰üÅ|ýèô¾4¼Ôà é•M1¨áZü¸rCtZt†îð§NY{¡Hk|±4ðÑ ‹Y÷§·FU¿[›¬¦îuÂQª‚…€B€B€FŸ i´¾Ð ¦ª1kõídȤ6è”0ì@t‘‰zB>J‡ˆ¹ÈWcLéøÒ»0FݽFC¶õn2\^µ} ¾.RäòË··W·QÔ§2î¤sðªü¹——È>"’+²Ò»¼Ä½µ7q+#÷ŽôÔ…[äÇÚI÷xp…[Ìi^ R­´Sw±QñÀ¸þë‡U¼Áö’ýÂk‹ÜuWÌi]ÔyI»‰X©à=`é¨Êµ£Øiàõ…§÷™Vù1ö•Ýñ G´›²+"÷¬K®,WóÚ^ŽÖà]_Ìi]ñ»¬HÍÖS»"±Rp·ê2­æ´–:¾Ö6ÞuSÍi]ÌÝeï”›²+&-^ëNŸ¨ê—£í$ý5½îB¡oÚËí+·˜·‘Ì)»"±RO¡æ±ïÔ…BÞè¥}µ‰wÔ•CÑWdte@©Ý‘X©8êëX×]îJw¢•ô9Ö1ÔœïE]o)+Ÿ‡2­ÙŠ”ý õ‘¤¾¥fùÂ‚ÕÆ²7}ÉÍó…]o~Eb¤ÿCMd‘ýIÍó…«Meo—”rævûW#ÊMùŠ’} õ‘˜G Ëó…/èc¬¢ýéÉóÅ]±^ ×o&ìŠÅIV:ɾßrrsv…,u]¬½?½7òÿ**íÝdX›²+$-Wk7N_roåþTR¾…šÍËú’åGÚWfÞd¯ÙŠ’Ž«µ£oÔ”›{.´“ô0Öˆ—Ô„²òÃÚWq&Þe[²+'oUšÑü—oõ¡í%«5¤;¸:m¿Ö‡´®ÀˆÚ½ wdV*Mô(Ö§à\¿•iBi[õ/Ïi]»P6ñ&ìŠEIU:ÒÓûÌ›o|=¤} 5¢Epàé~x{Jî!7dR*L:¦Ö€æ÷!'Ïi'èQ­¾¤%ùáí+·ÝÞJMÙŠ‘©µ¥ø%&Þø{HoTúÒ/Þ‹ÿ*Ò»£ ’¹º¤›²+#úëDKêIÿ•iª}i]õ*øÿz*îÝdv“ve"¤Eª]h·aW~TW…ªmhïMß%ÑWzâòQå&ìŠEH¾„ºÑm®ü¨®}[ãÚ8µ /4@wˆ3+Ûü‚0´†àê’­Ùx>w· Löd.6`Y„ÆÒ–ü¹Fål5É©ª.(§;P¥00j­\BMÿeTÙ¥Ó¦H§Î œ¨îØcoí—™dÊ5+œˆs ‹x·­$‘ÝÐuÕ//æ¿9,LKxmí\’MÈ<Û¾mÈæb‘ºîÉ%[Ÿ{1 ¸rå♲Ú)B‹{º‹‡HhîÊ_0o\6õ[+®@è^rQ[q[¼ßUíËiq z¾rO9[•w”´dÝ_$‘jH—7Wª•ÚX1nÛ•(|d)_¤Ýq Sd6vRüIùG„…{xÚYsu–…ùKÁÝò‘Î9„}$ž°ˆ ]¼B‹¸­^fë/rñ[½rƼˤǭ½+ˆ»D[ÉVæ£p 9¸r¤Ü6æó’®Ì%³±ÝÊ"ƒTƒ˜‡2TWŽø“N— ÊVÛÖ줄J•UøOÓ1,6saº‰ ½˜~xÕ(4ꨣ2+R4Ú¼tþ«çýP‹Ü¸ð«Ïª—…ýYáwAÍ£Á1Gþ"ÐŽŸÿ•äþˆû.'R…ÁABB!ïGý hÒƒæî&oÕ@†Ò‰T¯%Î- Ë­!·Z¬x|5+ò䛼üᘳp¯¥.RäAhÍ• ®Ò½+®.Ï G90sÜžZ™ ±_ÖE ¦ö‘öæó£ÂBÐÚ^PˆùI™ãRÏ%ðçÖK$7ŒW»¿§3‹#Éh‡FTŒËÕâñ:½%­P›Ÿ¤Ô%±ÒuÓ´D»ËepñÖ‡Šð•B0D™˜ÑÄ7X\&=¡,È+¼=jâ¨zØÆUÚ†§ Ý{M]•‚´w³Ú9zÊpÀ8ùŒI\­açá”*­Á”$à»w[Ãí ¬³5\þ¬æBjvÒgäuèM¶:Ó èl@”—ÉgWUª%R^8ªÉ÷š¤R­Æ›Fbbéõn½¥‹ú¤ŒI¬ ”LGŠxFsîÍ'úŒtZÌ»9Vå?Yx.e'Âc\a¦EuÛÀíhJÑÌVÚV‘ZKCS*Ru“‚jQ ¾üH]?¥:ÚÆ´<âQî©h•ì7^§Ö(8ЬnÓ ŸÊº3DG”@¯âËw”ŒM^êpðµP}Ê»Õ8Ù†[¬ Ãqnî’]kÐèìGv§Sb0J˜ºâ¼ræxsov”=‡p®(gEÕ£ôVÛØO¾UYÑ‹1÷Ѹn¾ë¬jÞ¨®l¼=¤á|2-Ókб6Žü$G &&ˆˆ‹¹Ä„@ îö\¨&ŒuŠ˜Â”hµ7â9,$Lb ‹Gm¤éZ%ÚËj.' Ji×bUã> Nè’.¶Âê•ÙSO[ÔºåoSM)5!¨À•%˜ä6…†&í·åI4cêÒ½(¥6BS+N•b˜ñ † o´øÛ–ûl×e/%Ôæ±pKM<éâ8–0V™Ød<[¶Ža˼9FÜËë?WÂÃ/–*ƒ²|H€­<Öˆ‘îí¤%rajÇ b\=KÄVãV\ »Jw¡Æ«Düy%ïLXé–‘f´s-JÖÆ5*6¯`ÓIúLºv‘ d‹”f„@ÈNëH€‡-ÉÜ%öqnxg˜Ž„Á.I\-0BD'pð‰U–Ÿ‰¨3ØœüJ¬g€7L+­Ø âGÕÉ™D4:+¥Á¬08&{~Ã1iM2Ô¨öÅ}€u¢Ú•ã¯Ýí-,A«L^X‡;J'Ÿ\Š4ú˜‘ØDÓ˜ 6³ZDé­fÝꢴKk2üv¯°.ÊŒš ®`÷(å[¥Œ0ƈoJð¼M‹¼é‰]d‹­ÙiC°ð®,Š0ÕL©ø™†¡ajlG˜mÕö ˆØtv£pÛä­øº´Äñ“8²žDÐMÄ;zÅ:A ¤ÀN'Ú|-+H­´s\V’©³p,ΑѱBãs¤W ¶ðæâÌ9SŠ‹W§Ö!tÊl‘}›ˆ.´‡0ï ¤£ ØB¡QÃÚÃ¥T)•"j­]J1€¾` À‹­\VÜ$]dêÕ LO œ%B`´L@xõ†æ“SWø&£¬ ‹J4èÅPcôØÒKa ÄJï$®õQ)së=ÚÞ9÷'Q‰žvJb]9òu¬»ÀWð§><‘R¦ÓeUãW: 0×½FèÂ{wxGzìÅh®.­èµèuc“ZÂôŠ@ƒ´q%¦f[Ýѵtñ4—¢±‘[pæ+PoNÍ…÷²’»ÚÓv¨ð¹áÍ*GRú•¸nõ•áÔËUxY§H¼Áø»@%ùËÍý ‰à„!y”„ „ „ ùã­ŒºÒÅßÛS?.I¸ZnÊœZÚÿzxÃûjgåÍ6øG6eô2ø¹K‘.o\±–”¼ÚV-Ò"%L+žì¶åë)c’ùók.(‰ÝPú-‰D‡O”¥^Læ:5¥²âbP˜Êç›Å¹|–§í#‹u^E„fŘZâÖ,LFmúœÖÌ‘eÙvVÆ!׈(4¬CK:efžÄè†BDÓ¡pÝÖ[°`„8QâFcdË-4;‚#hš"©4½ek?Î1ƒV­JÓÏ£FÎd ÿ0†:V‡õÌev–q¯üXG欖8DÇ0]í›…ÀHÙP•!éæile§@óéÒ[ôžŸEašäp ΋Žy„·J<KOÛÝYh2Øy^QmÎ /5+f}RóUç×&.k—÷r=”ž¸ùþ#ù’=”´ aåyöGÕsÍA4{¶š¨•AírFdiøáý:OŸ˜’\ßÓÌ+>€×úYÇúGùÒZ°ò¼ÂÓRóR…—sZæª+±×ÜøÛÿÚIØkƒî|sçJY¬Ñl<¯`²å¿^jNȺ„¨§FÖÿÜøçå%¤ômnü=ùÒÓXÃÊ÷ìÊÝÒ·º‚Þ̨CÖæŸÚxãΔ¼è:Úû‡yÒ–Ú°ò¾e£*ó‡ÚT%èÚÛlJ;+¹·tJ-;ËÀ­w ÂÓLÇ:,øo ~?èûihÃÊüù¨ò…P‚…­a}4üo§àÑ»/N) ÁÖ©é=:)xÛF.lÁ+G>Ÿ·£ø’Ð-‡•ûËÙ^Ú=aó•ð~µÈ4‰S±Ÿ™)'ÁZÒûÕŒüÉ hÃÊý\7[pùÉYt彿9P?kKïF/ù) ÏëCï6/ù) uú-‡•þËÖo7i*æË-íùËçùQõœ_¸˜»ä¤$xYßx±gÈHYhÃËè ínÞßž6ø\o7m|ýð²ôþàâÏÃúÊÑÏúŸÅ? úÝcþ‹aåôt·§uÆÊîÒöà¤MÝÚ%óçÀZȺïsØ£æòJ¬r,Øs|ÚBkô[/ ÷q·ç%ºx„¼¥óÓÀÆüÄÿ6‚ÃÚÆ·êk—øi ¤?Ñl<¾†ÛÚ9{Íví«ç¹íaiÌXS‘~-!çu…§÷§ˆ~k!4‡ú-‡—Ðí‘iáJ°º¤Kç¹íbh}Éâÿ !y§kOÁ„±ðò“H¢ø>‰lœ·wu#eÅh¯Þæ±ï7Ôu{NŸÅe/GkF¨êÿÍd&ÿEð}!ÿìµj Õ)Ò)µ~$€&Ÿh÷LKzåóçÜæ?üÄ7”½?¬ýèbøG”šCýÁ0݆`x>ƒ>-Äd Ú7[´º{V4Æ·wxWι´=b±‰Œ!ˆÈ‡à‹+N9¾ÒÉ…¬G#9„1‚ ѧN‚+FSH¢ø/®"ÃC¾×)T¹Î€Xõ¤B=åХŢÒ!`A…­ÖY´|þ=ô~ô+þ?æò’¼¬õ)_ñ7”šCýÁô'¤Åû¥•ïI‡vil|¨¯­Òµ…¦>“‰tsiæ(Rùÿ£›í,ƒIÖ&у±'?EºbIúßüÓH¥[/¢"ãV¶ënwLI.Þeóušî.¥ž—Ý¥Öv#ºüïÈ´iæÓqiÓ—ÇöÕ“äé®É•‡àÐq+ç-©d E–çÆ´éPw­vè—Y4ÿ-Xä/KG1õP  ­Ü³‹ôÇ ùªÈªßË(o©aA,£l‹‹Ì]2ù`Iޏn˺²qo¤v¸‹ª–#Â\Y—¹Å”tö‹º%f\¹Šâµ\:.á·¬œ«£ÆÄøŒ˜–W2ӢеÖ+H®/$Q†ï=¹»W,WŽa.×iY—5{†­µºd,¼EIi¹«¬?¤¿càø0öUíÍÇz*雈JÝÛ‡‰(Ln¸¼Õa‹Vô¶$ïA T-¬ªöd6‘õ³ïzîÏ9fF.‘î4¨xªF©®É§Íétè¯Äcbè‹'}¤C½ÆWu­ºÎ9ƒùRcR$í¦œ›ÌH@ƒ·†ã¹ZÏpØ'@ˆŽ£Z?ÍCÙX‹`¿ÁZG“ =•ËiKñLj^ ²15ЩÍD+­+ˆ.¸½%Ì->uÊï=«ü¤ráŠNn¬PWuý„ àÜyÐi“p¥El5uÖ\D$Û‡ÒWØË Õ ,Yn»ª³e.¯š±¸¾jè=Þ"Ì9’„íòV.bÑäåJçñï Ø»¥ÃnUë}ž.Êt`_ÆN‹”èÄÄ!,ò^ÊßtzÞJš°Î£päkRŸ©;½²€¹Ë61*®[¢[½UàðÝo¹Üƒ¡·Sí" ‹ÒYK `ÊŒ|Øz–ëEÄ9¼ÕøxmT̼ÛW™w®V—jGÕn*yI¤=Öh®4”5¬mRâªê ìÉÙÞí,–æ·{‰arí9GyJ©âÂãÂ\ÂzâÿzØ·ûfWåI4¼kèC‹”¹pï,E¦áËÞI"/I$J˜Põ…IÜšîú)S2å²Wä”h ¤®N:lÖ•+6÷Hü‘)ÍâܾKf’²,kıζ½b»‰uÕ¦’r ¡'bBiÝ#vÈLMÜÜú9ù‰Î~n} Õö…XqæŽnQn«½•Ç0dý“U›‘MbŸNŒÔhÌ€lt4G×[hBùš„,„„„„„„„„„„„„„„„„„„„„4èÓ£NŽ}~Ú„uÏ… á™°ñ]†`‰¸-<ÃZ4htKC†Ú7 ïWÅðéSrŒ¹HhÓî6y´@tü<ßbuvÈ–8O 2±ÆØ,£znhK²…Š.›¢µÚYW±ôB­ü³?^áQâ!‘ùŠÈ*áË+-G —bWæ.™|°%ì€Hs]æ¥óÚ9‹7u<èæ³t‹u{œžHw!zÔôäÖ7bWˆ¾ìÿØLiA“1]å'ß&ª ©_û >Ø&\qX‰ÒÂ15µmÂ1jñ´­"+Dw®\ßt4âŠREÇ-!¶ÌÃhú£•oÈŠ.ÏfY:à“[¡–Û¼¡\©r­4ÝÏ‘Š9拵iœ½¶“ÁX¶àÔš•#£Xû_c¢9€®Ì6Ü*¾k˜„¦áË¿žúâ¬:p10å¸ûï¼@-^í¹@Já^µÍnšŽí53ò¢¸çÛLŒŠëކ{ŸCnaf9û>–]jŒXUf% .ëWyYÞEîæGj|Yx3Þ¬´î[ËÕïÛ^/3 UW–Ñ’cG6<óÃáþ­Å&(×”nŽ|Ïãáê8ºdãÿ¦ Êç‚ÆCÓô›=ÁõVU‚ŽrþH}U”wW¹ô‚®œ² ôË fWæ+*¹rÈý‘Âý‘‘ù‹¶_"^ÈÍܹmÞJæèæJ"ËÙ^s•ÿĽ®,2!wS—“íb%/ÊnI[l‘vÞÉ·&ëÂ6æ»2á΄øH0Ý&$éo(ÇÉø»-¼ÔÚ0ën‰n•× ´T•6ƒŒ1œö­¾#»q-ç5…‹Œm(ù˼¦>ydxZÚ¥R5£~d–†Î,ÅÝYõ•Wb£ˆ)PÚ÷Â…Ò|G†óM©UüY?):Üa.ªLÃHˆœuÓÌf{ÄJ'™)Éyytg‘¤l!Vƒ‘~ŽmZ<_ÏßõÕ\9H­ôU¦äg£ý™jsþ¹/6{¾ZfªT©ôÆúŒèК"´MçD‹«™a[£=(c5U„ãÄÖÞÁ|H¬ëwWX Õä» ›.„ù:z:I0Ep¤"]e«a ÕF£R:>,ø"Ãå·'I÷FË.Ü¢@Y³ ó;Tš­2®Ñ»L¨FšV2bb%Õʪç+­7k"öK_•uYÌ>³™M…€­¢âCotmU•Àÿ´˜?ÙM~UÕy\“$HÞèܲ ÷ Ä%pöwVÅ.,º­Z%2žÖÖ\§vMk­Ý^×&AñÜ’æŽV¯Wº™Â´ªK^Œ5iÆ#µ7H„G²"<+ƒ®mLÒ™Ãò«ØU¢ŒìP'_uÂ@9ŠÕË~6«k%_™Maâ÷Æ„‹­j×x†fß}²ì:BºÄW[i]qe^»;x»J«÷4…ª€ZœáËäŽj†ŸŒ©Í!þ¼–Èø‡w‹¬‹‡.eµ‹,Ôè;B÷×ÝríÛŒ–ÔXmG ›lG­jÌ9ExOÂ- 8dB"¼DYDR±`´­ËrñƳZ¬&¬u=L ©˜¡±5Ð(ÿbk³Ú.Òrã-MaZÅ-ѤDM@D‰£gp»$*7cbª®ØÖßI0­™QŸ§TdA–'˜2hĸHI!íflË¨Í nÃ…ojìÛªôêƒMÚ«ÂÅÿ„Çü˜ª,æÔûªójkO>©°·öTÉŠóCbw¡^g@„!„!(F”6q%¥ˆjwí“/IsJÛ³e[õÌÕ¹¿×Ÿ¬´Ší+èG‹„¹VèIJ$’TÒ›R Þ¿œ˜ÿÐ5§ö È‡YÔOÆ‹òF§3‹cÉq8’IrU«Ä²x•gÖn‹yCF.´úoÿØ+0>5Zµ :tò‡‹ mæé´í?ðÐC¥nqdý“Z…òŸ4!@!X!!!!!!!!!!!!!!!!!!!òˆÑv`~ÜöýG£®Pz9ðT_í&½S]ryàé—Ï„§þ°‹ýPú«cºµé߬#ÿT>ªÌ½¯¢W¬«‡,Kz~͘zGæ+Q,kLYÝ/%+d;£ê®ØášáˆA!þõ¯ml·ƒ13ÅkT«º¶ÉkÛNÐÛs,¤ÆQ·{ÒN¡Õî3"¸(o‘uEÖ½µÂœÔšl÷©U6‰5¡ÌË£i[ÖÒ1È4cvaÞV“‘¯û°ïJ×%Xê“Gm¹…YÞFßî¼ò„¸g«-7¤ø’’m^GA䪥ÊëýäB·ïP~TÕ¯øOåqþòâ Ãû¹®¹\“@áä¶©’m ª®+©âÃh0c°EÂE˜½T1 ²]­#ø ±«BœCžd§]"ò­UvÍ•b˜¦¦wÆÕ°@Ü–Œè\Ó @BK‹ˆ«q(PÚ7s=!Ðb0ủw[ÒV ÖÝÙ^O×gÏÙÑÊùPÈŠæ6‹É+V'oYQ†>±1º5Æß,— ÌúKÝ—ÅÆBá·{*MœÄ(Ê7¢‚¸r®Œ"òÐ+£ÙéšÃñ‹tç÷D‹óW<´vSƒSííµ»‡Ä¸ Ó·ÈÿR‰ñ"¸Qmë-Ö]-Õ¨$"·[ĹX7Ưő³”ˆo”yL–𯻗!Ê‚„Ý7įFmš£Yí²†÷樟Ÿ«¸•”åA ¹:¹‹.Ѿ<á·ºB^ʬí–MìÃÙ^œ©Z)“{Ù³+¥ÉñÍ®§0á|6ÃTº>zÃqe%q¹4ú˜ vZ!ô”gñ"’Є/3 B€B€ZUy}“2m·ôf Û~Ý£rÝ\li¦Ü[/µN‘ù2Aó¢ çHŸ!ûm½Ó;w·‰a^åÒDD[Ä‚ñ/¥.äAhÌZ3,¥jAw‘¡>õþóèn™ÿ´i…ãO½Eé³Y4OLJÔ59œYKŽ\Hñ¤ý¤¯…x]IñªÛ­1æå OZU?O¦*Éq*á­?ÿÈJxèᓟÏXü²|S*…ò_4!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@(ë”0Lm:~ø·ê‘TuÊ F8"?7ßýS]ry༾X,%7MÔèåÖ`=U°µieú[­°TVÂö¾‘J·òÂÍVÃWnÚÿª*Ç*ãË5[eËkþ¨®¹\“—Gôtå^¹xP%pÙWµÌ9âÍ™85Cú¤‰PÚ!eN„‹‡(®ÖØv— íê~{”ÙeÆ&ÊDyBb&=›TɱK.` Ó!,ö¬G˜1G1{étVå §G Õã>ÐîØc²!·Hs.#˜Ò¼à”¶ò™†Â/ioQñ]B;âã©ì´Ó ˆm".²çÞ®ÓöƒBpÚbsrc“[Q6€Ë-ÖîÛr9F{γiB$Y`Ým·fS½(ÃfCÂhZ´Dn»(¨” •¬è€Ó–Ê ^!Ãq-¾YóèfN¸â–_)YîGen¬Cñ§ýrUrFx!S÷#¼OF•A~K È‹(ýè‹1×)Ï"²ˆI½³¤%ÝBò:ªo+ <úЋ»oƒ×%j¦Jb3ã®6ØŽñ*e¯ŒFÆ#Ö\é0ßmøñÀ#î]ïIwÊäœx£Ú—Ä µ¼’ßmÝPSÄxļâUVgÄ«ȶ§~ªÑÜp~•˜Vd³.™þÉË>5H¨:ø”qúdy Ó±øX"ËwœJZl†ÑZ’#5 ‡Û-á![-èÊ"6Šóc/‡EÖÕ¿DÜFWoTßÝï&ãvù˳¬§¶úÁ¯:9„§º^’âfË—*öG‹œ½ÙD9Ã2÷7xW…hî‘,¢9n..ÑŒ7 eN-HÛôb¢w_õEpœÐZZ+sw—WTn“ZâÃ¥»qºp¨ÌâEo‹I(Vqjs5ÙŠ«”÷IŠ(¾L;£x_uL5Î6ÜCwUkÑiiPÆ->3m49ˆGˆ‹x‹´¼±Y“ÊYá WØ[ÎÎjß4•`gÆ6ŠyXTÄ#Q( æb#aèç()»¬]²¸¦N”%¦“ mÝ%où,9~¥hý“wG¦J¡RËž¡»xU¶ä \ú˜§èêÉG¦§?‰¶„!y„„lk:{tÝ^צ>$MD´ŒÙ†ßÎNtÄ×ñY©¼L_Ìÿ8R"‚õ–Z2¤Š ¼¾‹‹Ëy··’I(‡²I$´”óÔ®›u“Büx=CLÂáµ;õ3þñ¨‡ªJs8²<—;‰Bðº…\u®<¡)…Ö~åXå\uµâå JÍöh•Xü²|S"…ò_4!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@!@(ë”ÔLoíýCR*Žù@ýEFþÐoÔquÉÿ¦ Ëå‚ÀÒô‚áòêŠØøVµö&¹¾–TVÊö¾‘J¹rÂÓlü;oÃᄄ««Ÿ,/ÙL9vl®úªò¹@ß[*SgÌWeI-$6’Pžõ¢9—½É•Á¸2Ú¸¯5:Ò™M’ãNÚcÂKµÀ+›¼’‡,±1»v¼¡%èâLh%–cBºÕ×[j@³½•EB"âìz%hUÅ±ì‘ ÄË&R™%÷dË1›¦D_ýVÖÊÝá´’ÛgœwVÔ$HmÌ´›nT:UiÒ߇( +Ì¥þ¥Òq®nêÚ¡Çmú´V  ¹‚ënIFÅŠ~·u‘­“u6$öžk7£jÞxk@†Ò™{ ~ÒÍCƒªÕAñ¦axƒëçß.×Çîö“µèbÓôØ”øØ 8bé“Í ¥w[1]ok2mFIÆuEØ‹ã\DÑ1S®IOxÈ$¸QÛ½ïtDxT‡RœÝ_Ööôª#NÂ}¡©ñ„.»´˜»!·³nd¬b«Yá" ¹„““Px¤°–³ši×E¸UAÙñŽêoŽl·p®mJHÊÙZBW fë,Ì¢EôJ+ã%€u²«^©Æ¥ReT&:-³¢2".¨ªu‚uÓ0Ô©òXn¤ €då¥oijcÍdâìqaÔœn6ëŠ;%˜ûÅÕ^]©YÖÆåJaN¨È™÷C¤d\Y‰ æÞ%ˆtu¼¥µë‹“'W-¶öw–Aá+­X„ó[Â²Ž‘¶ÞCÒ¸­·*óÌV> ÔrÖšœ—TK*÷)\´ª‘›’Á eîð©Ì¢Ew#¸/´¶BBC”…d'›ŽÑºë‚ØÜD\"ª& Ö¾/ÂÑžè·TŽkDéZB=åŸkKb˜½‰ºl#L+ˆü¥æÛ[CY˜”±V7›UÚí#ß°ÙhwWsæX[Ïü–ÎksôÆ5C¥Ax–7pu•¡äy ÜÕ”ˆäá³=Ý=[³*½AÏ[lVK‘þ¢kMQõ…rÏölSâ…ätBB>rš¨ø?Su¡³iÒ„#ï[mŽè©?GÀ¡þW%f¦%s}ÙG¤¶<…,Ë¡ÙI¢¹} äŽÊ ízÈí- Ý!µ;u?§ý¢QHˆ¿_µùÉ¢Iת=6kˆE÷{_œ¦^Ì%ÓûhIøQÚ^'R•uÖö?Gú(ðèz7Ë ±W*ë­ñ·_ôBÓÄì/Ë Ü~Y>)Bù/š„ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ uÊ ê*7öƒ~£ŠEQ×(¨ØÚ-úŽ.¹<ðtÊç‚ÀÒba[÷8z¢¶~ÒÖ£þÅÄäÕ²½¯£'‚«‡,Ù|;ÝuXÿ®°?eðýÝGUår>¨(´\6’@ˆ‰fYr‰yH´mÝÞ̽îA³¸DPô n6Û»vâÞX^¸zëW{V¥Ò¤ø´.<.ƒA“6îè©”‡ l||¢H-q8ØùJ`z%rÅ& ¶Bò½‚Etã·^©ŽÅ’ÜS¶ÇMŒ…襊 ’•Fóvs ÌÜ‘Ò"M8. q\­ Š“Ç°všá:#qEÌ#Ö¶Õkêj^?haÃj!L‡µ|m1-ëRÊ5.çK‹3 H M›MÂG»é-2;Ëor°<–puì?îºt6¥Ô$ è\1Àrä»t»I<ÊÅ5B劄Êâj…qnÆ»Í]RÖ<ÃC2‡‡e›M Bd%u½\¤®IF—éf<Á^XÚk5æ á¿&í©mKtÊLŠdju2Ê0•Ånîñâ7¦Ñ+Ç:½ A’Á1& GÚ,¤Ó¬ z*¤ëÛ Ó°¾>‘”ÖÊ­í5vP»xG²¯/7KFV¦kšGHÚV¬%£.b$f´H’„zÙ—aí­å$¬¼"±õVÅU± 6ŒöSäDb[¢[ÊGO áªæ$"*]B´‰ "ò“¾¥µ FÚ¶?ÊÉV£Ði¸rƒ›L`XŽÀˆïmmÍvUæ–|¬ºªSz‡Ö1~Ó§z`¥ýuˆúΞ]ÙCì«Y¥I±%§Hr‰f9>:-–…ÒÝ ÆâòTï̪¤HÔα"¢‹ŸÕ>$™Ø“Öpü®‰Z§É„én‹¡½å+à'ΛÖÃTüS‚ê'0ÙL¬;n`1²’¨çÊÞ¥TeÍóݺ(Ù[n_5z:s—”² »Â+Ò‚D«™e+müÔ–øºÂ—wTm%CsøåÅnNb¹<:)8šŽáœ£ú-UƇš}·[ÙS÷#gm­bˆßÄÙ®Yü[—B¼NBBèøË>c¬jâ Vܵ©SÆýÛÖÚñ£àUã–ëÀ8J‚Åã´)ÆVñ[³%päITÛÜYzÙRGvä»{KÜâÅå/ z]äŽó–„©Ñª›tcÊ/ãìzɬ]áNmVŸ6:¢•¿·Øõ”ËÙ‘äºÜ(Gè^\¼NïUy×ûÿ ÿ[ò¬*¯šäÓͯÌ?§OÃÿÌ ßŒQ>)qBùOš„ „,„„„„„„„„„„„„„„„„„„„Žõÿõ ûI¿QÅ"(ï_ÿQÐÿ´Còn.™<ð^_,š%àØŸÔª+akÓtþ–Åþ =QY®^çÒ‘\ä*¸rÀÍVù¸V=WX>Ã¥Ø5y\‰{ ÂÓÄ\]”e¸ns K6\ËÞäÄåÖ‘[—‡´ª &£*¤Mmú<Á2jënÊ›.h÷¡ó—"<ª½{²éD$.ükGºJ3â×D"Ö£Y.xHDo9DîÍ—2p³‹Ú—2šãôV‰¨MˆÆAºDvÝoeWAÆøŸGîsrÎÞ°q@f{r玌´–Ú›‹¨?ÒeS˜'ˆ „²‰\9I@¼£% eÂ"´¾‘"·«™4âëO7‘ˆ¬7æ®CÒêSç»U¬J)3Ÿß",¢=QU’”„â÷¢Íè«UÉ_A} éýóõ•T™§Þ‹.è«aÉ_Eš¥¦ö¯õÉNi¨„9Åyªü¨‹ŸYø›_œ­AiÞUS•Ñ6ÛH¾‘cwÊW•É8ñEãp†òòÛ‹yx$Z7·V^b.êö áE`n|š%R jÝ"âèqZ¶Ä9­ïn¤<Ș–U2¢.~«õEÅ´òX˜Àº@7´%º]TùyÆá´‡¬¾s²ÜÊlΓH˜ü·®híO¼3®½`ÐìjI·RdzùIy%•+.2Z-`jÒ™ŠŸ„iÓi!Þ‘ ËoÐñ,Ú¹ÕÕ# ?·“R¨žô¹ey÷Gª¡<¦g}5‡Ý»°B“Rå+Wy¿Òú ¦[¤é¬¬½”´Dè…׈ö”Y¯MiÓpæ•J§Ëaú´ÆÉ gzÑ,¤Enꮸ›Z˜ÿ‰6ýO ³ül¾’jYy“¯‘:éo•Ä^R¸å&Å7—­—ÒY‡Çq\’!né,ƒ£0¯JŽoÍJ.®êHîÚ^rS™‡7¬¨e¢Ÿé“\D§~HF,ãüDÁºN– j^›gµß4òdx™×;Í^‘ýËžwÅl„/  B€B€Ðªç.ý1ÃM$ùzB­©´g›Øî“O+lG[9¥^W$ãì„{«Òñ!rú;i^“w:Ç@]eßÕɈãJN]ÙÌ~PW—c˜®˜îí³-ÞØ©—³cÉx‡t{¨òRnæG>êñ:•Î*¿k£G6½°ÉuŽ/þaµ?¨]w¼°ŸhØÿÌ6·”OŠWB¾Kæ„!!!!!!!!!!!!!!!!!!!!!ò€úއý¢“qHŠ8å §›DÓÿˆ‡äÜ]2y༾X,<­¦Å´¾ÀªÍÏä­ZhóS¢ÿPªØµ{ŸH¯…WXEÍWãÖiÕc»VªÛË ßaÌß`t½!W•È—²´º¶¥[½—1n¯x6—$–N%ïrÚ+{KX´îŠÙøDGþÅc #»ÞÐ`Ù•Û™—J©?6$gaË`¥ˆ¬aëU¯æd4îÊí‘\"BÓlb ¸Íäñ´BÕ¢D6å!"ò®J¦Æýr•઼Šq¾Û®°vÞVe©³s-¤]«VM©›„fN8e¼E½ç,þ÷nq$k‘(9š%l¹.øµKLþ÷×%U*Zd^ʵܗGŸT´¯ï}r\3UªÓ±×…'V‚±§º.Ä‹‰ÐÊB.“Ve¸¸®ÝIsb÷]¤ÃðÍJ×Ú7=»¢,Èm=â+³[º¥Nnêó´¸YÐÇÁ­T£bÚ”iÕ* l†\01´HHmí\* åI¦Ýh€cóÕ«!Ҫܩ²ë8x¾cÖ5y\“$VÝÚrÝjÈ%Ÿ¬K„ 7WyKÔìÌkD åB£àØOæ`E«ÍÑëoeé–db„`'qp’²ê±…ÉÊøU/æ£í$~‡zEßUS~j>Ò趪çn\£”–7sUcÿC­"áýVM¸š´’\ž)½Š¦—ø`MØ2²Wd:¢½ÛÝ!bÿCÝð¢oÍ(¹=Ñm»ÝDï›nÀ¬•ÐZËì¥ó ±¡ú‹Å‰gwväùEü#¨|{)»Õ^réÊ6ŠHÚ$\DYs)ö¹Éñ ¥¼í¾ëòÀn¤4"%æªþðiFâMºÑ ò¨Ê2c0—W‰xZEc¼tñn¥ž}ë»ÊÂâ—4¦‹´*ZÔ,¡‡¯JIÓ­yÀ¢A"À»W\¤M[½ÑµË„#¾PwIsÌâØ®ê…átBB%SNWò[s[»6ÜÒÕ9+Kt®=årÕå&wë³Û†ÐÿÒüå×#’qâŽýd—Ö7‹/i{œØ‰'ŠïU+‹²‘Ï—²°º˜4„q,ëFSW| ®O”º¸OHŽ ‰qn¾½ñ\åűä¼ßWÀ‡4g.òÔ| ׆Žmw`òëù†Ôô }xÝôhÁ%Ö6ÿó ªÃŽ(Ÿ¢„!|§ÍBBBBBBBBBBBBBBBBBBBBBG¡tsฟÚ!ù7Ž£žPšy°\Oíü›‹®Oý0^_, .H±ÇªÐŠÈÏÄ^Jçí}'½Ýå[¹biýPaÁáèÎú¬‚­œ±4݈ðÐî—EÖy\“&^1³«ÞbÒ;¹—…ÚáJ»¶Ü½è ˆ…­ÕÕÀð©õ(óåΈԲö@.ÂnÊ+öï«·«ý)¨~=ù‚§äG¢‘ˆ†¦¸\#Ñ@®ôWZ ‚v‘azA ·tÞ[¸t:n*ƒ2 á7¢"2´ŽÜ½TøÂµÜ=M¦G¢Ê•ÓcÂûÍG! ´F»Cº¦r©ç“…p“Ù_ÂTK¸„¡ŠŠu©J§áì~túSñF@²$V´WZVõENpä7.­*Xn¾ù˜ðå"P¦¾ŒOYÍf²˜7yâ·ê|™•ˆòw•°ä²?ì–•ýïåITÚ€‘G"j9'ÌaýVA`\Ø7Z1»0•äKžkb–Éx½æâó(ꪜ©4Û­/ÿǬjÔÈtZ"!U”eI‰úÒ•Ñœ:‡áViÇñ7v„Ä„IÒ+{Û·,ó°UKV–ÜK§ñ!s6Ô†ß6Õ•œ#Hj¢"Ú¹, ¢HódôH–úgÎK(éí-qÒ"°Ýj„·#å"T{\8Þ·m¹g¿ë’¹Óª±©°ž™%öڎЙ™Z""©%r`Ô«“ª$!*K¯7Ý""]r&ì¶âÞYˆ­ÝHÅ½è¥ Ú-ÌKÖǶ§e>WDĸr¡u¤š,½áM2.{mÊíL2 m>H–`t ï)Lˆ¾…èBТÉéÔx3 O>—£6îŸ(D–úùî¡BB|ÿ×<÷jZÚÄÓéäÕ 9mU_ÒÓh‘Á£BùÙŽ$±?b ÑœÚ2ýVC VÜé’ï‘ÉÏ3ÙÈô{Ë ›«)ḭyzÜ^”†Û’rùÊ]u–ݹªÍTĽ!Z_^å»G"¢Vø‡2™qly/«Ÿb=dŽëÞ'K¼^²ñxÝGƒuðÚÛÀ®hû GÿØaNJׯŸö§€y‡ÅÒ÷ØU‡Ê'Å"¡_%óB„„„„„„„„„„„„„„„„„„„„„Ž9BýDFþÐoÔqHê8åõÏãíú¦ºäÿÓåòÁ`Ûñ´Õ^ wGº¼¹{_H±"U³–~©°Ðÿ5ÖdUjåãĸhmñô9”×+’qâ…î¸W™m+‹…'Ÿ/½åºÔžkrð¯k™NZCè–e©†ë…†ê2úKN»E¥hp­²„­pD‹5«Yè÷‘\7™E¶w‡XôqͰ›òK3zÍ£‘.7ä“[¢4DYr¤ô6÷¶}Õ=ÂE§ë¦›­›têƒÇÂ"éLJ•Bur¿.½P»k*Ñ2¸€…zõ4ã±×!iñ¸¸„JÕà…ÅÝUQëÀÑR¸w­] XãZ®¯q²c6ûôɌ˂6—XnZveÞ,½å‹gϘ³v­Y(ØŒ–&›ÊO˜ÌT`øˆãz«qÎQ¸@äryvF)û*³`Ö‰/:0Ý»”Tì¶É·rb|£aúeClbBõ­öºÞŠ„„Ÿrç%ºOÈuÍ«îžñ™o-שrcÂfcŒÇF,:\vïz±ssŽ[‹ÉWº²Mw‚à&÷–ÞÅUìRyÚ{Ž;ÜÇkhÝÖXÈCFkRv\ã»q,–]ˆÊ©fŸÊ[ #.‹4»®‰.ä~QÔ«=þ•RèÜ ‚Ž·\ɾÛ-?±™ÊDB"DD]\ÙRÕiÑ…j”6(ÔѩɌÙÇ”é“"Ñ×!ÚG—) [m¥º]”W+ièdÓãFj¤à Ƹ!-®a´K„ºËxGb:·“*ßÍ[‘ð>wyúØÿŠüÕ6MLÚ…D¦C…šlF˜¹n¸ï"ì­&ÌwHm£ÖRÄVá9A–¡_l¿¯üÕãŠ0áŒa"†2Ü–Ð4Ô†12¸m;rÜ$)f¹åo7n!+—¬›[Q'Dˆ³ˆ­bp@-ò“ƒ ÐaÕháQ¨Jl‚+Œà€ˆ æ"""U`é‘T£•^Q1W¤·˜1¤@!EpÛµ–b²á»6lËÊ•f†tj€·2š2öMìÁ´¥>#›)¢Ñ]Ãn`"·2Ðo a¢Þ~»äÊaoÇÀ˜Mâ·¦WÛ/ÆZ/ÌSfTÌZ9TذM†›ï¾ýÀ7¶Ý—w„V‡8ÿè¥Øº¢Ã2ĉª½u²!ÊDmæ(ž¹Ov‹‰jTWßmò„þËmm·‰•¼;Ée0‘Ë•vpmEˆ¢ ™n6ÜQ|ABc²»6RÛ¨In47_!¸@H‹´´œ+OvڌɮHu¡2ä pîÂJ¬pk˜^[CO©ì…ÙÓ]™°11!jÑÛ‡¼k—ˆ«4941•La¦ª&²£ì†Ö†Â ½’ºîÉ%³ƒ°áÛtšÈÿ‰etaêë H!¨×D‹ùPöTÙ51*ÓÊ{àë­6ÞÊ3MŽmÁò­Z͈é¶Û¸­+9©Ê3ÑL¡×êÍ=mÀOZcwhTBΗ3 [x´võ„ˆ ÕK)›˜tÚB[Ý”¾q¤6õ—>¥+£±sb7‘ˆˆ–è‘¿œŸ±pµ!¨àÜÇç>í¹Œ³7u,4p½``Gª´Sh_€è1¡¢¶çJÑ‹U‚§QŠàIqñ1À¹ËtÅ ô„“œ+†ŽÛŠ­äÊ]ˆ:¿Â²ríjãþ),šü¢Âts[m«Ñ1ºÛ”«ZÕMš4‰4©Ó›”ÓDa¶rð+xIDPÞ£´è¢b&>R)˜·’‡…xáU%¿IPËuÖæºåÖ£èÚSfµÙ¹qÅv0ÎpšÑ|]•HµÜ‘d“úŸd ö¼çšõKó” ^F2´ž¬Â/°Toæïû*z^)ûºÇÙê…B¯J€Sõ=ФÝu5Öm»›ãFÏÏTK «ÁÊ}öÙÔ…xMÑlØhÓ§x¶íåÑÿ ¨øéÝ^¬g9’[»Ë\²áX‹yzô¸…'…)Íí䟭•P6ì¤]ü¿“AÝh¥ëymúYßÉ’™2+úYŠîÑzÉ+ÈåÎÀö[’üKÂî.Pî¾´Œy«²ÿÄ4ýVÀ¢}}èÅãpD©ÎE§O6/kÇ¥V(—ÍBù/š„ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ kÊ;O6¯›ü}¾4Ô”£~QC~`9ù®¨4?óкesÁÓ+ž çÆx½bXËBS…ŸÊI-9WÐ}oš«O,ýUáÂáèr=f•–¹VžWŸUxª1_õ^W$ãÅ y*ßksq,~N^¡Ëo{…{\ÉsÄîÜœZ­úœ–]içê‚nÈÌð£ âF°û²àÔÞŠë»vºÒ·2œy5:êÞJ•ZDipöäL°é‰L:D6“¢$%m· É݃†ü! Y&E:µ#C· Ú•ÅÙ"ÍÊ}‡´fé.uwVÓ:ÅÃ@àÜù[ÑD£ÜØÉhª‹>Îv"»Á2‡ù"õT© m…z¬ª¢ú£ô'˜Íq…©ÅAÇPBœÓQr4††ÂË”­Uö>Å&5cWæAƒ E9µ@Œˆ­|ÚÜVŠq3DÃà3F#¬ÔeR¾ÑhH/°»7\•xoaÁ·é’óWJ²0ã'q>D=Õëc$÷Ri†ªÓB GÌZêܪ+6íå— N‘ùSR¼írQÙ¤˜ÒvLÒ@mËwYD±t8 {á\Eq™vˆ®/Yk•Àø‘»ö˸©ÍÉCõ¦œu‹˜·j&á$î¦ãúQÇ6ëDLmâHò$—p|J h%ZÄí@ Š{Eï˜ïæNY¨.´|?$›iÓ±ØNï°]ž°¨5`aà¶ç\óV´ðÄ{n'H‡²¶Xw62íKµ‚³N.¬cõUZ¤Ý¦ú€ÞÊ“qf¶¡ÔpüŠe3¥*Pl¶¦9@K‰GQ@[hÀ¿fšÛˆ}$¼·[´¼$eê _Ú]<.EÓ³E™rKHîþjèa×l«µ›{*+ ÈÂP…GÓ¹þañôôꬶŸUI’Æ&¶jðH¿]SŠÏéö•¯Óð/o%Ç‹Ô! „ ƒyf¹¤5S9÷êÍý7ÿŠž×ì«EË‘Òfjì¦üƒóD=¥WI{r89LŽ!^¼Â+Þ|¶Žd ºJÕÕŒEnò²Ú+!k‰b-9”…óóÜ\KÎox‘wðú„¼»­ºƒø©Ô;ê5}éåu69uš™jQtÝC„Cšæ½´¼N¯TQÊ6+š(ôZÓa¤†™;A»Ïð‚çÑ£IyZJËV© -JÔù ±ß„„“ tÅ&å*cUdiìéѳи<Úyù´iÑÏ̶TORÕf>ÂÕe`HéÃ"ç2çñsxĹÇN:>¾[GÚйšaòŠÐ>'ã’Ð\Ùû|ú4üWÖм˜ÿ,µôy%üøübšÐ¡]yDè-îGæÑ§ŸÆü~-ß‹ÿŠô#rŠ-:z1èççñƒ.ƒG‰´Çù30:iyÁ4¡C:å£F:F²Ï°“¥ŽQ>ˆ_Ñ¡aOM3§—œB-°åÏͳ‹Ïý {Ñ”VŸ±Æÿõý„é¦tÒó‚iB…Î?(½Qýoe”VŽzŒ\ßÇØ[ÓKÎO/8&„(WaÊ7›õ¬ñFËè¥ic”fúb3§OÚÑ¢7²³¦™ÓKÎ ¡ ØòŠû™67²½ØrŠÓâØÇѧø´Eûз¦—œš^pMP·GåϧFÊ>Ž},‘¿çð}¿PÆå£IŒiÑÍÍ£F–ãiø4óiñhÑÏη¤ÌÓVtòLèP¹1Ê'NŽ}œqñóx†?×ÑÍÏ»õ´¯4³Ê#AhÓ¥¶|Z> ”~bÓ£G7ÚúúSäÌÇ NžI¥ ¹CØ™ÑvŽLx¼Z4x²ý¾t°Ê @tin)éçÓãÒÛtéþ/ :Y<“*<9BéÑϧD=~ÖÍŸe$bò‡Ó§rɳì§K6ôÒó‚cB‡z'(‹´è²6<Üû6}”®‡ÊÇããø=íŸe:Y4¼à˜¡þ…ÊÛ¯ý6}•ãùChÑÏ£ éñsø¯agM3§—œ O@ÖÖ˜EhôÆ‹²EizÊøhø“?’â„.JBT®Zò_,oB†NžÈ)ÛQ ²ÜN‘[äš«ùu¸TÁÊÚ{òµÅ*+§£HB†ÃMhæß§GüÏJ‡‹{J÷dÿÍÊd–ž¨¯3urõ‘ÄV¬d{Öªc«O¤II—Ph›²;í2@E˜‰Û­·Í]p’Œ§YQŒCN2 ÙOÞ-"áͺ[«G–*b€£C–ìI–ßd=¨¢Vï u‹2é¸þ°Ýu£(•K€®ýgmÅm¹òçËÖ¹;Yêçα…Äc1‡a:dÓV‰  îðî’nðº=fÔ$êœXéês±Ÿ§Ôº! €Ã´n»tG¬šñHJKWnßi~r*+Ñ„Ì^”—Gà8mù‚ºI•¨º™UuUD3øØìtGGªmd/U=W‰Ô”%$¢BPùȵ{j˜Rmâúë%©%—2)çi+ÛWˆ"Ôq ‚ËÙB$Z„!su’—¼Û¨íZƒËP½µyjöAèèGÀÞKµ?ìR­Ê‚ÐHEöòöÕåËÑ@eñÚŽêPõEú"E¨B>©_i%ã@¬¿éE¨æí¹£˜R·w—¿ Å<µÝT#Ä€µ›r¯xmóP:x…é/nÌ´„²²Ž„s]º•jU¨ GyÕïÀY;(Z‹PyÂW*ÏÊØÿV êûÕöU˜øETÞSUFçë@Øh„†``³qf/Î]r¹ñF¢]”¡¶áX¸†Þ$¾{®»‰zÜÊp­òWKÑ­·*d™ŽDŠÓ»&ö-‰—fá\‡‹!— sê¯Ç†^íNwÖS.Z5¼Þ £éÞ¬Õ‡û¦=…»PÞÞÄ5‘»ù³ÊèòxU©±)ØR‚bÀôÙ rvìÖ]hŠKµ‘5aꢋ$râʰ÷¢±ì¨óQÝÃxšU ù-É& ©6íZ-Ò!á,¤*s é"%kªáÖt‹~á`}d³MwŽàÌ7.¾ãX¤5S“Uv#O‘ ÇhH¬ëáL!åwñ'¶ú‹¥P’å Sx"˜eib:ÿ…it"êÞÿ瘝=è ·ÙÞOÄ8Ñ¡PdÆ`Z9Tàuñ"¸†ï4Tȉ¢Þ§aÈ(ضNÔ·o†6Ü¢ú„ytÚ¤ÚT¢l¤Ct˜2hr‘öU–¢‰Z*»ã‚ÿh5ïÇ Õ£:HÇŠn–këS¢—„ú{.Ô«O4ó¢&MG`HBîÉ•^"芕â‰tVªUo,t¦ð51Ò͈çøQö–ì}ZÒž!ÅÓD»PÅv(ì¶õF;‘ &C¼"EšÔôÄÔšm»L‚û²Ð Ä}kVKÁ#S¦pÝv™‹ Ù7OE.©(Ñ“#lH²—+AMnÀìÛùª¯ ÂEÞ% ']7YDŸ}Ñi¡.±ªÂQy;Cz›Ú–*šÜ¢ ŒYŒÜ«Í7ꪉoß=qWêŽx á™)E±Š.NT_Âú§ÈÂç'j0Ûn-ª÷ {+»­¬lQ~n‘ˆ®0§©í]eÙ²’ɪÜ^U&ãÐJ]`¢Å)u·kn\Ý¥Õ×Uv™•îO#“*]#I—-€ÚŒy ‹¶ðÜ* æ2Þy ËâÝhýUG¤ôǺ·®ÙVùL‰råGZâHönÊ_Ú]˜]ÞªC—¥Ä(æòG´‚çÊÆäŽ>‰:ìÍIh®É úïa²û`:WÏE})Û˜-Ì¯Ö —Óp…"]×ma´~ˆ¯'ô..Ú…ÁAB Ê{óõÁˆÝ}ËÉ©DÀø¹²†Q4S.”àÖ5Dê¸ò½QtDNDçL„G.òn–ïi} ¾.R÷ ‹™* =.­!|¾]Û³$‘vWK†ÛA©ù¢JdE-¸ñèm¬PÊ"+e¶*$к,I ëÚV®Æ®é­T«¦ì–¶ìÅh ë ØÇ՗θq©ò‰¶cåŽd>u¤²ß 7âÊ•@˜“–é(Ï\ÆéؼjšÙĪ5¶ ¹Dø…L0Ý“]¥È‚û¤ü¸÷H`Ï1ñk­ç&Ö0¤{¤À²à¶7M§JŒ\VŽð¤Œ“±ÉǫaÇÎј=5‹ºùEÑõ ÊSá*5€kÒèµè•ež;¢èÛÅnðyCpùªéáºÌ.Pu f;Ä]aZø›†ŸLÃÝ9éBg²Ž`Õ¢6õ»Ëk%0±hº3?HÄÌÛçJ;}—R“‹°½eÑbŸZŒOíÍ;椺4<\ÔüK6‚P\`á°Óבå;ø|›WJ½†ðÆ'†Pêô¨‰}r HK²C˜IN6ˆÕ/ñ25~u  ¬`:¬çg:Éä:YŽ9ÝhfÌVÛm×'›Î @NZ#¼´dyæ#°NÉ}¦šç];EsÄt¥ºlâ(ÝtKÊ·ÒXè0cUk•V›}ÓϺ8õGµÚ\ÊÖ;¥aÏl£uᘠl„û$9–Æ6ö_t@äÓ«qxž¦:^ ’Û¥ÕiQ"¦Ô£KÒ#qGïÞ áò…j`\.±ˆ&Ðjô£MŽÐº!¦P¿xoe«¹Œ0µÓÈ$Ge©íÒuÚÆ>KÉ»2ž#ô{I­«¼A&·I”ÅA­•J—(áL¸®"0ËypÃi[Ú]ê¤Þ‡ Ý·hbB 7[q[jÔ³L—tÆ£YÓ\ñÄ”ó+cC«Ëí³N|ÇζՖŸˆ„/˜‹³mÍ Ã?“ÕÈ® R‘Q©1N 95˜Dè ÛR3ÝÜʶ¾ê–*¥2_NF«SÇøYtçÚòˆm]3éõÚÓç15¡âdĽUµ«ü`Æ&¤£Œ1¤4é³%›®°Ä·n·2ák_ 5à×q~à×)¿MGlGLÖÄs4|$%Ö!+TúÛAÛø›ñ®>®1ˆðÍ>´Àˆ„ÆÛD®°‹…e­I0aÆdôÃÙ Žðe,µ-é!Æ;dËi²á³-W+lZÜ´‘ë3ÈVå>>•æÄIÑ ïÜgÞ$Û¦ë6ŠDÚĘαOŽÕâégÍ”Eme/e;E]¦Ý%Çáe»é¦ÔwâLŽ/Å}·Ú-Ó¹u°ÝzŸ^¡D©®E˜Ðº"cÂJ=Ö•4pSº1Þæj 5Q€ÖF Á~ްݤ<8’›u…—AæÖÊà1¸Iqk’J}Hh,:MËm$ÃxFëD|¬ËRé½V¦2d%'hCÂБ—¢µK–Z uÑ.0Š>ÒÇTªÓp¶‘R66Qâ€Ü-Ä[¢µ!ë:3/ˆtЇH˜G°hš ˆFÜÛý¥µ—ÂtôpÐ%1×éåu¿N°M”VÛé.°›n±¡ÖŒ]„À®ÏYw¶ÐêöRšmÆŒs4è‰(¦­ ^ãè,A|¼‰_0äY!¾#p‹CÂ%šå!ñÕí%Ú$Ehõ®+mIºÑÌ›’´·ˆjR#® >¢$!û`íÌ$•ª7b:G†±UfŒ%ö vðóI,ÐáŒÁ8ÞM®K }j½lž+:@Žé‡XKÑY¥ašl¬[7É(Òd:ÓA]`K£ð’èc,‡±\}…fžÓÄ;§ºB]’L"Ô¼èY0þ<¯ÓÙádݼÎWT9ð-v›P—:´ÕIÙ¥{®œk"á¸î,½Q]U¬Ì?†"™Îª´2nàw:eÕÆúbYž÷SÖE]Æx…‘²äæÁzžÁØr@Î(ÎÕ&‰\2&ç´»#º))¨šmeªEV¿\aÈÒë“Îh²[À%ºœ¸ø' Ó§æ”Ñ  ºD%u©Ãb «„”††ÇÔ:øl˜œÓudÂt­u¢êeÃ…§Åª» ø.Tçºéô™o ®°†ìÃjécMWa\Pbüè;)a¹&9XèyC™5\Ôýf5¡JÖ}¶‡td¾pªŒª xNô7'4åï“Ä-ɦ®á¸­ÌÖ&³ÑI—‡ðÓ¥V­Ì`#ÆÏeÙn.ªæ3©Gå•{Vf³¼M Ú%æ§ö ÀØk ‰x"˜ÛNÚNÜEå$¥B5S@ `UQ]!†kÞÞ%£¬©“)#OÄ DvX@~÷Ú ÄMZBVö¸¼”øX$Gmà&Ü €¸T†½Ðq54Ž‘Uaû†ÛDó v‡y7‡Ñ}Ë…!ñvÌÏÜy­-îÒ^(Ôæ«M:„a“IšEq=ì"óWuCˆÚ÷¸Úê [¶˜ œª2©¡çƒÊ&Ã1)EP­XN™ïyÉ“­ wîθ,'uJD÷@%:ÐÜ 5vb"[ ê5‰N‰WñU^¤M_`’‘°~ áX‹On0ññ”’¨êÓÙ(´Øñ‹6É¡4T}+Oá,dÕz[N¹G‘£Ê0 ¶•Â}ÜÅr’íZU¦0LIi·-á!¹HdצQ±¶‘™WŒãR„}ô ì· f%rñ&2œÍ6˜ì1ìµÓØ\cw /*Ú“Ãfºc³i 1GHÍZ%©êÑe`ÖD:· éÔÐû÷EO¡ÒÚ•6Ûi€Ú¼îbµ0¯µ5‰BbŽ.9D ¾RäÍ!!;m»OÔNÓ _®Uj•sÖ¼îRóT¥C£Ó¨Ð‚2 Q#€å‚ÕÎRˆÙrë ÝåGÄí`üUP¦âz4)òvÑežà™o eJ¥m«‹ˆ°å+B8u8mÉdÆÒˆjch±`Òl’Ñ#Êé›+¡iRòoÊÂ2ÃøN B4h„ë˜KnÀ´6Øvéq\¶Ô>)“˜z½Y¢ðQ䕞j@ê“:v¿¬JÞËŠËD¼åÒ34>ªØÎ•B†Rju6"49®3õzÊ6¤Õj:×ÖŹ$–0þ0’ðÛÒ ·mòSЇ©,%PÌ«”Úì¡Ì'9ò!»»º¤èqˆÀ4à ´ÐŽP´TJQø ‘ãh­ÿR‰i8ºÄ #2‚2¥Ðd»•£¿1 Ü%r—KEÙWaz> ŠQª´ö%´Ci^7Ȇ†2¦DÅS(®œ–… ò}Öˆ‹ßD†Ñ¶Õ•šca‹cÖu¾ /G‚ÈÝïD[åÞÝÆsR4ødE‡1nŒÛ¤‘´>IeC:¢­=–f°k.5Õh@ εt¼MJ¶8¦P┚MˆÀ#Æ{ÝÞ±&¦ª|'‹uƒXÖD¸ŽF§ÈŒ©ÂîW x­í-ú¦0t¡: ÜºÌÑ+…Úƒäy»ªKe±d¶¶ÀFÑÝÎUøÜHÉI¤J`s´B9­¹Fš¿Æ°Y†Ö¬:0ªÐƒac¹Eñ ë)mÀ#i&ž0À{µ:{n— ŽSë\‘áU)0긭ªÔÂiöš‹±Šë„¯ºì«‹„ð¬š6+j®u6'm&„…×ÄÊìä]^ÊYj†\3¶‹ë1„ ö¢>rËTõwŠÚž8«:ÏU¡»Ñ]/ ¼E¬ŠF†NLœ$én2Öc2ꈬZ™¦Ô¤ÔëÕV ‰µÉç<£–óB[£æ¬¸OUøÕ\—4lK=©úIå1øÐ"œ¹µ8 Äë§hŠå->ªfcëcX´¬K÷Û_«>Ñb fïTS'Yšû¥S£œCPšW K1÷¦»CÖUʵX©WªTêó—-òÎgÄ«/*RîÅ2•Eb¡.¯T‘Sœù;*C„n‘o×Ï ÅwXn$±,»¹W­Í“7¯[â^èÜ9W­Ü%vU +Ô±ZW¹{«)—¥ræAªT]}Æb´VÚÖR"S&·…¢Ý]J„àz—M‚ —Ò w»ÄFD¹îA¤þ´}ÂíI%¨äzg 7üIûIÜÆõÍ€æY›Ð6ÛvnÉ.+lÓ4?q1&Þ+&­Øúv2 2tDDÀÈsX[·v•Xo¹ K…jå¾Ô¹¶ äÒØ™ÉϾ1Ëq–Lƒ/yL¼Ô3`&²SŠ.ŽÔCx‚ìÖù+±‹ª´Ú‘Än”Û­GŽ"&À5¼D[¢šò"у(Æ©ySËÙZ¯5Májo•8u›ñ—U-±W&0MÝ–Ötb<¢ïJ#´»B[¶ È=7¶îÌžhˆÝÒ·‰Td6Ì;©%Ž¥/¢Ã7K1åXh°‘¥UdÉt‹t;T´íÁuzeùÌ]'X6D 1á<ÝR\öki·nÐmVn‰Åê®SÑh¡¹iŒ%¨ótÁÝ/ç„É«¢F"#–Þ”JâÞ\x±âºVÄ91¤oî‘T®[±^Ú´%Ù¹,¦Ý¼ÛÖ’9‹{f^jÅ £Y§Ò¶¤×L” ‘èÞ-ëUÈ¡êsW,Òc‹¸q‰.ˆZNºEq(–mHÅXdU©á…Z3ŒTÝbQˆÚ$Y|¢âî¦á^c›hBJáÈÕFªÁÐh°¼3Ì#q\^’ÔXêµÒu¶0½4ì+LD®´»Y”ïáࢢ9x–a!òRn»ÿªµ«Tx^àÊCTÙ­0N°ó9m!³u•Us#¤$[¥mÊã™bQ¨/QF]#˜W—óÝrôtÛ™tË%Ëîd±¹W •Ç!­ë‡‰YîFÒïÀÕhE§4ze슫”!¨õ†Õa¹ȶn(‚Wx‰§sy«†oÅeP„/"†F\¦'³SUÝ¥÷Jlc…º8ˆ‡ÙRnB\±%°Ö©z!¹k²'5`óo[uËcÈSo‚Ô’Ë™(‡´’½îO=¯"8½¼+`r–‘An¥XÐ(ãk9mhu,dÖ´~ëÍóÖ՜㺒^%5m˜zMkïÄ¿”[ÏBÆ,Ò¢ìšÂ;m{…kø“•ÊÛQð48n ò#½qîWÍJ“™NªÑ¡2£6HœžŽÄq;ϵÕã­jöUšôΘÓá€"†á¼ŠÒoÉ[Z¹!M_¬É¦›³¶D ø]äæâN |Z<­„å³Mb[P™™òÍxp÷—–s”d#¬IJj• cm]qà·jD…Ýž²æ²ûñÎàt…KŒÑ°ÕJ?F~ªä·c“]*M£vðš¢7­Ðû£–Ñ2D—|©Þ!ë‡u©ŒèPê®8ÀýŠO¿‡¥ºŸý}â_¹8jžû-¼ci” âÓ–ÝÜ˱ª á)Ô«†ùZvÛz£ÖUL %áåþQ,3ïëÉfo”M¶ß…Û.ì¢öTZFäàÁ§EÛÉnµ]hX'Ã=¥xpyJeÇ K&åÆÜ/çJÿJÄ\¢í+G µóâö?ˆ)ÔÆ`32 Ëž|®6nZ»‡.eÁJ£— a©i'âåqfÂmù3‹ÙJý ~ ߥEº½‡ä>aYb1lK¤?`›[¤ÛÛ¤)ÏO‡ôM‘sÒ¯ ¬®‰\D"WnîŠã)F2ÓBÒ;[åÀ•Ç„¼Ùßè^þˆÖÈG ¥Ö©Ûÿ´š‘h˜Dé¢TÇè!ÐÛ‡„æX æáÚ[â+Q˜8Aá}øa@n FïH Ód—WaŸw«ÖSx’Ò=K”lmõ"?ÿ³/þ$’åÝÙ0“võ¼&_üI™&vˆíLÂÜBøÆ)žþ9I«.Þ"ÝìÜ£©[7ÍÆ›Ù ZÂ=UÚŸÁi,]~ɘ.¹¾ø5¾MJ2³½kKè‰bñÂemÙ¾œÿBi`aA¦ÐZ‡& ÑBîs "ë×fMœ6í«ŠªjMÂcn&qF[¶0'Ã}¿›Ä«3.1ެŒ¥ò”œåÐ۰·Tç[ê‚GèŒrë}ɱóòÿâMÖi¸$ ¡¿2„ü‡o¹á"„¬Ê;ånnõË^9êçD3–Ó ‰S˜(æËÖ‘J;‡8 ù¸º«Ï|?Ëm#µ¾QMˆûî»3 ØI.Q£v\*Ý¥üð½„Åp0Âé-5Ñ:s®„r,‚|"Eu×öTx:hG |’À(–-÷Ì3›³'ý)Or‰Š"$Ö".ÓÿéQî­ášF –ÔÈlI©˜º@FD7e%ÁÁ3 Æ•7§F‚ètS0é!p‰ðˆæU™Æ:‘”’èòŠÁ–íü`½”ŸÑ{ÞåÚ»„zI.<ˆº¾• ôºCo;®·-‡g{¬´h´ì(íT*tgìÚŒ¢¸Œ­Ê_é^mÜ4âÛHæ.Q½\2Õü_L’Irrܸa«»O’Žq$º;t:œXS]‘Ó„t´öVÝwœ™VÛÝ]áÊ:è˧Òå é5µ.Ý»·¥jÅú"ŸËú˜Œ%ýy(¿ ÖiôÜ9U‡2(Î)¢ ÓGö"5©‚eAŠ!E¨…Ž×ú@^÷UK.1ޏ’_.QOÚ6a¨ÙºÏ’õ¾Q’n-¦‰ÙµóMzl¼ 2hÓj-SÚ">—ÓA¡‡7Ä[oU+FÀó£¾Ô…5‡mh…ÑbÒ,åví£º¼÷Ã_\iÅÊ%ÜÖáˆ×v¤š@ò‰™mÞæ!v¾™5k@è%6(ÐN3‘Äm÷–-ò„nó“5±sp¯F^\eYy'_Ñ3‡ B!ët“I.QU ²áz•(ý•eÑÞï$Òî²Ý¨›’Nߢ.¦;¸f–CøÓ¾Ê?Dm_Nî¤üñßaA<â%”mô’Ä›Óý>²lÅ›˜§aåQ®s ÓùúÝ=Û$±¹Ê6§h‹x^–'ÄE=òÉ(šÐ”ZfÖ͹q-]taê7ašå:”TiµfäÓï¸BÞ!»2iaÙÐéõèòª-È€W:°Ìz·,šÊų±Ž *„Ë[e ÙEdFÑi¡ÝÂV=*mÃýxÕ½e¹ 9£Žk—5·6N‹½UÓƒ•€»zÕ±¸gêæƒøû^²úâ§5ip¯²ŽK#Ίb܆ ]h»B§ìÊ:+fX®Fš2€m2„‰rÍrãÄäåáwñ 6b X 3£Ü q êÙäû¦p“Æëš©œ’éå.ëßeqžå…Ü;ɪ…Ýnб}ð‡R¥Öýoþ¥=Ú ‚¨bJ™Ý» ßP•/".±)kÁª­E715­2Ãyà8…C‚<ÿ÷¼ºåÅ(­Í”mGµvTosŽê>Ø c¤º¾jÅÏÏhî÷’Æíî#j“¤tT@‹¬§ŽHSvÄ®Áá‘ KÇÙ/õ( Ÿ§éÀ.Òš9+šê »~žïæ®yœ[ÀB¼nƒëªÿËkOê“ø÷æ«õÔËgGê‘øÿæªËä*Ao$ø’‰$¼KÞäWÁÖIòQÞAiZÀ=d‚Ò”)%Ĥa#Íhñ). Ãý§$”ç^ "í$mQ›ÅÌaÞS„vˆKxÕX×¢ÌweŸR|÷­È‹ÕY¦jê‹Ñne6¥‹v÷È5JX\‘«jœj-Þé"O‹Eï¤×g²²Ì‰RªóðÌi;R˜%ÞâºîÎX÷)–Âï4ûcá°ˆ _ºÒꨒ;…¤¾ 2.êŸ3hòD½Uû¤K/ç'ë*L*[C.«¢û¢C¼¤ßqøbí˜Ã–é]oë¢Ì£* sbŠoõâ¦2ÞÊ\YIlG4°Aº¨^ÖgGníÀ=¤¡‹¯‚*´7:=%܃Ö.ªœ°«ŽTªüTFÓq E©“»·†Q»Ñ\Y· Ñ¥Ä™š­Y’N»o Y|åú­ bL‡µ ÐF\ipÚÚäëgÙ´”kÒu€ríá1â6á*ÐÜ?¬ÉBÔûz]ÑVƒ›À‹WÄfУ´Ñ¤^R}–£m´‡2ÿ<ÚLUûªxzщInḩ5¢êîŸ=~©>ÑZ`rˆKÊZ®`ì4ÓäÃô7Ùt2œÇĽu0G‡·Õ¥|Y›ï®ø<­·½””s &<. ‚W»½åv–G³0ýDƒU£±&3Ç'`ûDùº%Úó g6e³"ôTƒ­ë}ÅÇçÕF÷äV“¿W4Šeh¦»S_i‚€ì"ídì,+„øh®|ùÿi6õ>C¥Š¨]öP/E>ù·VÇŠšå«Êp±·,#P­ºý¬‹mó–€á|/÷˜¾tï´§(õ™³#;%ùЩ,BÚÚÓ A˜»VõTLæ›Ìœ-â+”Ç2¨ÓZªu¹On”.7dköFwXcÚMò;tS›\Ö•f…ÙŠi¢ñ{Å«XuoC¢Ôè'Q©Æ)fn_hˆŠs·„°¼ƒ í ²ˆíH®\]QéÁaÙ}ßY:¯Ù˜“dBCºB[©õS^ÁŽÉ:þu¦‡xˆŽÕ£ á[ÄNŽ6‘Z^úJFÆÒdŽ Âíô—Jø¦ng,Ù¸ºÉŽ#ŸÊY,Ò(›AjŒªTˆ®Eh„š¿zÒ­\¹6m®Ö³?ÞEKˆlh½Ü©fŽyxVÛµ‰ƒá|9¦‰ÙpÞ’ó­ ‘¤9‰oEÁøzYpðó ä"é^²^!,?ñ`õWw Õ¤Vâ̘„í á1,¤$¶^Ê7ýÉPúL<]NÝ©ÛwUy a9¦q¦DèÚÓ¤$ÖOÍiJn5D0ü¶bûè…ÛÆyˆ“R—hÔ™êܲ=É’ dÈy¢"p˜t€ˆ¸­%”Ok1–áÛº!wVâX¤[áJ†_ÛŽúÉ1Ïô柛öÈow–Û´û&†p®eléùñœ“ÍÚÞY}ÈaÊ춰ӄËVÞèÉvÐô–ñ|Zvá˜îÊÕõz,6Ü“,Ÿhö- ΊÉJ­ª-]Õ¸–œD {g›ÊY ‘%¥]÷P$¥Ú}“SxG2À QŸ}ÑÆS¼ÒXÇ a˜ÃθfVˆŒçÊâó—aÍÅ»ƒÚÚâÚSvþژ˷R¦¤ì+†c>l?‡œhÀ­ 9N‰ yË…0ÞcΩҢ; \Û|y:7fR° ÆW:ÒI4ñ`Ý‚+£Ö†K~¢*Žíí u³.® ‡³Š£Óe“‚Í„nXV‘[¸QJèáÕ´}UÝÕi~¯ñcY)J`üFŽùX¤’L| †¥]Ñ0Ô×Äw¬|ÉtÞ+„‹‰>ñ!VYÃÔ Ã[véåHÎ&ñ?Åu«%&ÕHÂXU—ɧ(o¶C¼&ù &γ¨j%.›Y¢‹ìòz<˜Æwd…M:ÒÒÕɂ߅ŠÓ–ï]v[»V¨‡[™°\!Þý3U-èÃ$^.N [Òiø†©/¤éEŠ";&ŠÛÈ»I±½'–¤K銿h^2"y½‚08eðlÒÿK ` .àmZ Õ:âù®ääÿ§ÕX¢a\:칓Xk;»(â>ÿ›t»*%-T(X;_š›:ÑÞ¶q¦ž>¡CÕH^ }÷ ÍhŒA\mï ÜB¤ÊÔ‘R•(٠ É…­Ï×ø¶Oî÷–°Ò{ÆÕ¹We<œwjÑìÝë p ¶[İ ¥—2ÙFÈ߆CÞÅÖÜÒéN¢bØpú\ºa0Î_}=Ñ»uf 6‘œžX¡êœ5¦«ŽK— hZèd$wkª<+*YŒ9|{â!Õ ««‘l±«(è»/ul2=RÞÝ´‰Tb5jáݸWês­>NÆtš"ò…8Ü»þò¥ÒÜj5J;æ>ô‰‘õId¢XÜç­[˜Zx{W$ÛU=æ›(½•6½Œð‘±,›§ºDë¡4š ´]<7pŠÕ‘!¼Ó¯°ì¸R%:òY ¬ÏoxVè›"8ôé.:%%Ûƒ¨#jê6ŽQ´z·'n&ÄÊ•"Dh°Å‡Ž¦r2‰f r‘\I´Ûcfk|äŒUf¤¦ÅÁ1á\a¥ËŽwC7K…9ÊYè/ƃ[‰*OÅ4虈ŠÉG¸±µ²­i+v[B¹D’J%_IZLlÊëwINPñ¾MÝ“‘|öαu®Û–Þ©MÆX~#Ô±)α$¥ÄÑoÜ=lÖÛrÝÄAœà¹$ˆŒKwvÕÔæÝ[•g“W—%¡µ§_3 ‡„‹*@‡8¤b£— êî³_†Ì±qˆ?vÃly·ª+ Þ©'8`ØW©$D$B7ïï'7ÐjXJ™MT¨•:iZl¯m+{³9§ˆí"â†Ø–k²+«m!!âºâ]+-dnEÕé nF­R]·ÈëRžÕæ@vµKm¢Ĉ²õ“ΗUÁ MŒ8±9 "`Á¢!oW0­YUL1:H“±TbñJ(‹QLD€­ÞóVR(´ÍÁÕ,à+|9Iì‰fäׯb£†ÝÒɇÙ|njC'p¤?‚ŒiüXDÑ;x{ÁÜe¢7vSwZXª›[§R©P]!s¼-X&VÛ”VÊ1¯¢£)jÒ¾ÒIݽ•jæì{u,´£ÝH¶ì£•(n´ºÝäbéúa¡íꕹ=½±×3ùVÌ7eD¬åõ”Ÿ¨?÷ãB·¬^ªœÎ-Šï!^GŠå«¢ìL.¬ÿÍSÙ(s•Û ;©©Ž@F˜´‹GFuPä)iseI»(’n^ç'™‡-¾r8n-ä"ѺåL£™c-âʲ\’ZHÕ”C—y<¨øþ4x ±SŒøºÐÚFp’j9¢á´V-˜©«lâë6‘Ý«ÎhúÀ$$¶$k^Ÿ$m“*¤èõNâQ–Ä.JGª•ıçXÖ4g¢›¨Ï“Ä6‰Ú"™0Ú6šÎBFDF}â[-²!™(­µ*5IÇcHjSÑ^)ïXÔýôÈrZwŠÑ¸S5Á^"iPþoYôÀ`˜¨ DWeJ{YÔ§Î÷ús§»q…Ê=èâ<(ØvR²…2IŒÛ«+l€•ÉÜŸ•RªJªÎøçËwª<"±NpÙùËh‡™%Á#wªö–80Þ°†›Mf J ®lÑu®!]?¢u+î9žjc!Â9‘°ÛEMdXøsYô×Nã‹9Âë­YšÈZ&é”÷öźNåM!`tÿ¥-–[»u+"ÌpÁÁ'ýñ×HŒûËÁtHM¢÷Ð+ƒ«p®œVºDÆX¼[LBâݸ‰HΠ1H8a1 ƒ&ÐÆ±Ó=Ò;‡x zâU_Mnç Ÿ­n8…B•'n;Ä„–ÛzÔ§¶{VáÔ.°å$ÇØ¶Ei#¢ú”ÖJ±êö´é®Ç áõŒn%¥;XÎ<ɵL¦ÉŒHDÝÊ#wkt`Ì){>b.!JȱÚ +­ÞÒ±NÙ}©1ˆohÄÂíÛ…;p] ŠÔ‰[Qšù0AIvâ·-ý]äå,HÚ›CQ—8HˆMè‚B´núc6÷•å*”l›VNE?Zñ(µP¦KmÑÖ ÂK`u¯J5A²Ò´‡ÍLG#7 ‹0—W´‘Ñ2åôTÖJÖ'ÃÚѤ8w¹qqܸø›•jštÚ|gØeü¯ºî\½QMñŒ:8sv“¸ÌuÁö¾ç´n·dYR²ù,n¶ˆˆ¯)u)4*ãUVÚÛp˜q’Ì:s åRQªX~›9ùN”©[ñÀÆáí¿º*'*ᩳ:Ó¤ij×bKlº¶-ˆzà!¿TŒ¼-—’—PÁøU™UQteÄjšo¿n[håKuGEHîí¸„z© _ÙG´gÓ$:oº]t·ˆÆâ$ÜÅ‘ÜF1Øi‚jµ´÷Œ×'£vs Ì"#º>RºÉ6¬KÂøü/TyÒ·Žý·Ù¼6§>“‡á™•hEÁ'Ú!¸.Ê%™6§ LtÛ°Œˆm’Q##àu©C0ÌÄ‘ò¥k^‘.;L>sI¦2´‚£²Œ·wz«ÎˆQJȱòæ±hd9IVÄÙ¯VŸ¯ÔZ–ë[Xx³q.hÆlJâµl6FßE;†BÓk}Þ%Êd«Í07Üj#Eo½¤d·¥x€²æ\ü3§$ëI9KCõºåŠ¿R"ügý+Qêm0K)T>uþ•Õ§Ó§UjÑéÔö ùR Zhˆ‰HzÆÀøVƒ«•zl™2j¡P(#÷¢tFã°z£»ä¤¥ËFw{¢&`Sö£sõ&»A'wÑ](ämÈ8ξ/l­!vÝñ-Ò\þ%³OÓæEü~r®>ÍoÈ{dÑe´xW*›ÃRæJ}¨÷ei’·/ylÕŽØFW ¶’džϚ– NRÐãË”ZW*…þ3ý+IÈííSçßéOýKáÚn*Ö zU]‚~0뮀„VÂ7#[Ôúm+£Æ‰*Øeâ2!v\¢t_ÍÂ*e[TJ@‹SªŒ·Lß¼.í ß§¼á‰6コ@væ…sY/} ë®·I™_ב*ŠYjRº4StDrŽQZôÚh¾ÑI¨Ë–F\ ‚+_~³%ÒŽD1íH÷KÔã )ºU-G"CÒš?âIHú¡ÁLbª¤ª…T‰º%,6Ór‘õ@{É¿¬ŠJƒˆéT7iä; ’+‡eÙ.%=¶ÑUƺ›ðc”9RF@ âÓÇxõ{$ºpßÛ0'Ö»«•ItÁ!.%³Mýfn[VÄu(pÊ­Š©T1|š²E£1ÞV¢¦õrÔ6›vŠãä#˜ÎI\J°jçÇ­<9øà«¾Þ†ú(ã™.æÄÂ-Oê×ð|¾ri©ýZ‘ ¸|­üdÖ,TÆ´³ ¨5ZCû½àbâòéà0Åìµ#Ýlè2Lˆv,´x®Q¢luªÎ©K¢Ã~ èì Bù¼$$«“Ôêƒ1BKðd¶ÉqìŠß9\\l赃ën [ô›¾ª§ô:¼ÊlöÜ!,¦Ñf!µu˶‰“Ÿð$•×vWKEj%n\fÖDîê‰ Â>’æ’ê‡uZ벯.âúËÛ³e@¶Hº@fâ'r}Ñ~¼è½’2ôT_ÆøfâRÇ&6ŠN¼iù·tùû¢§3‹b»B…Ð(—•“Dî¥j–ð¾ÁÔ-(ÿ”9š–¨qNé.f¡“Ãnž Í¡#ÈPrÓ•"ä]• ´ð¯ äYU'‹uyvmÒI»_‰yrI"ܼW ]Þö¼$Œ©7 R÷(ï/z©.Y&ØJ«ÓZ¨èÑvëĈˆzÙVïÐñÎÙæ>@—w—>¦T^±'F£¿[¬Ç¦±öRÎ]Qâ%*Gc«Â/Ýæ¿¨%ž>¬]xöcˆ# Q¹‚Íé)çXz|Œn•·\V¢™:ìýƒ öfªµ†H–A!ÝN<†=Ñ„‡Ý˜0£°v]mÄDš¹¶YT©ÒýMJüp½QKwfsV´Ñýñ¿wâ±})ú2Ž#wÊŒ*@Ã0ªâ4ç\´$>Eå'¯J~~&•‡(¬R µɦšy"~ÝìË%&Õ7«¨:LD± ÜEr¦v(¤?‡qÔ‰.´ý .´èn˜ç)z@ro-Àd%oyFºà¸q¤B»zœ>²ÖHÜ»˜HÈ“¿à¯R©ËªŒ&Ÿ"ÙµyŽ[“"fžfºÊ[ÕïÔU'„vEë[¸«žæ­àðâW|¨£í$9«¸ÜX¡ÒïEÿR–µ[4ìP-Li§Α^7áf[tZ%1š&"–55"jX ïEvöaY¹Ý£j†YÕ£´Ö&̲<·v­$Åx‹>E>]£"¤Ë¶[‡óTÌÉ}0åb/«ZÿãÇꊦI®ó Ø•ßœŸT[¿2RfbÐÐØŒ3vÛºÅx¨Þ°CÑË2°XÇþ¨=U–õ*g¹«8±{Þ¦ÿ*ÄZµkAeÅnÛûCÿºžÅ›2îbqcàÚ¶Ø‘ Ÿ']¶Ò;K*ÛE­êÑ׈‚6(„ã¶äa˜ VëÊÔÄmÒÐn´èºÓ¤Ó¡uÖ•ªi‹â˜×xT)*ïU‡„ª/úË@ô‹-»1š¤z¯}è`rñ,HÆCq41Lí.õÊ4˜_LGþ}e`ËNE6*c¹ªáßtBêý"CùÉC§Ú! ÅÍdÝ!`ÆßILº·¥Æ©xh$´Ó„0Hš#ÍaÜ9—7l€ Ã‚-”,¯É-÷ÏÙYhËTEZÁU¦)êlW›«V¯u“# ën,ÝÔÎŽè¼À8Þá¦9EÍFªþ"ÿª úGìd_ê‡Õ[ÖIЊËóê,Ó¡ˆ”©` n÷“èuWP!,KMl¾Öȉ2ðI»úWxýRScÆVŠÛX0ËUÓ4ÕE?ä c-\Nl„‡A/î KxF I«ÎÊ`\(ôãu«¸NäÔsƲ";ÄØ6§B¤UÉÐêot™h‹tŠî߸tåê©+©·Ö&²ùb£|ym̪#%¹»«%¶i$w­ÙRÈ{^J Y[žJÐÃ& Rszò]7KÎ\YPÜÐù>ÄÙöEOj|TåO ÖZ¬ÑßÓXºÇl¶îÉeOœi­-SAÃÂõÕcgQÓÐZ -ÛmîÒ‡ºM@2–ÍÄ´Ãû~q{+%YKS¹²²ÃÒFû®‰\6ˆŽ^­ËQ¶dºV¸æÌ{+«–Û [¹o!¯XÚé†C˜F޲ŇLzMŽð¤·$ãio®1Fu—IØŽ“wo n§jr‰Û†ÃP‡ɪ1€‡kO#î— rë;Qj¸R‹„0Ó"¦ÒÈéU«¦]‘,¢¢ò“PÑ”›l’EÙF_ßœ²ZJZ·ºº6„¬1.+–Ì´Þ廿Fµ#Å7ßÌDG„EtÙ ¤$]‘[9؃Ai„Y{Kz ¢ä{.‰ ]ÕÈm™PËOFw/T…-Y´RÆ­ñ‹‡+x_Úå6¯mÏB!Z!ï-mcH8–=‘HbKTª3Äc”w:éñÊ]CtÚî Ncœ=åž–Õ¿Z¶›sdæÓªºD‚+B]Q¡! Ž‘yElXÂÜéTºÌ*¼×ßCŸ‰XÊ(l8t–†§[­ÎÕÃwyWb4‘dwmVJ“l²å¯Ü§x§|Ùbú<`Ÿág|ÙVò`4\×,.SCX§ ck–™ZÃR¨ø}©$R†Ç^tm+T=3òåQXq÷Kt ‰j¶"DT‡©¼2œj°F å=ë@¶¡˜ˆ8„z¼)9mÃ\Xkâfj>7ê÷aâ"bB$""7š¹|Öܦ }‚XÂXQ?\vp­tfl;³ù* çò“#7 ÇPŽE½¤®l£vêô¸DWQäpº@fS$Æo×>Ó@åj¾ª‰ ¿w²©Ë‘„`{XU¹D%sPréï®yœ[Kl„!xÝmk*µ\]¦°7;"  ÏõíNU­0t¹ æ´hñ˜Žø$GÌßBèW ;M®T)¯®Å’lõHH…hsuWº.OÁ2&e¹wªñ"™Þ$M—g*AF?º_ËÛ%ÅPq R T µ°q©íl-ÞÒæÈ¨EŠÑ:ì–„G¬JØ~ÙÏ%µI¢?U¨Ç§ÆÚÉyó'JÒ$ûím×§…[Tªq„¶N»”ºËŸ;Ii §U:éø&§2d¨´çàËèm^î–]+†Á+w–éjê¼pÙ“´‚,˜ ¤DeH/²õG†åUíM¢uÐë´ú­9™lJk0 ÂG˜JÝÕצԠÄFû& ÉÓËè¨ E9½§ºVÞmÉ=†÷|òR豸‹ølâíz$fbµ°a–‹(•™pjØ‚›I„ëïÉg(ˆ‰ÜDV¨?  ÙœwÏ$¶à4%q ÖõŠäîItûº(Ü;äG›ªDD¶é3‚—ˆiõîÙ0ø‘—ex:8’\hLzËkÚ&¦gCÐ:Ô¶nÞNx¹†¨‘©Ri”™ÌÇ20'ˆî.µ¦"J³ø1«½ìI±ì¹j<ÝÛÎyä±K^ÄNÖ¦Œ™Òc\ ÓMdÝÁÖ…za™¦ÝmÙ­+­Ì£N€KãóÉlÅ€Óe´l3u·–¥‘½!Þ]lTJÅDsš}‚ ‹vë„¿5sHmÑÕµkHŒ·i€—XRQ€Ô é †SzéÕ1HThÔúc®Ä  ‹D%˜®.%]<ßÐ{¤“àáÑÄïž°O>f)Œyê?Öµv%MÊm*‹åòtÌwG*d4KyÇ<å»#L…¢;ÛË{€ZHZê§Ž©ëÐa³.™2Km:OíBü¢YSP´dZOC-"Þ$”dY=E­Ä‹)™qª ­˜Ô“™bà ÕüK*ŸÝvæ¶Û­Ug ‚Êãžz:m÷|òY_-²v•U‚N›§1""2ΣuXb¹Š¶ñ\j£Nf`;(šÈï3Òl¼{·ñV'‹Wj H؃ d 22o,Ùˆˆ•hðoU×üòGƒ¿•Ï%Âr‘W§ÀújL¶„Z͘”9µé3%Ì+dIuðÉUªÝ5±Ì[G;äDºôØŽKŸ o:b€‘–nÎñ+’NUHˆ §-Ü!%9Ók”êŒ6Ÿ1§†ííÕÖ 4ÄùPÛp&®0 ,¥nén®/‚ÛºæÉÆû‡jšÈ²ÊÐñCˆXƒN•F6Âò;lIÄX¡ŠÜ(C-†Ætp°å‹¿<7YVâ€æ‚ø÷üòGCsî—þT–U¶Køš»C|–ö®Æ6šÌDD*)§¶LÅhm!)b‹ÃÌáŽé\º´ø}!©N¦&¼AҴͺ=¥±ËÔ9­Rñ}6t’µt„Ë«pÚ¦ÈóáÈ`]möÈHzÊ•^¸\«O¡8Ȉƒï¶=Q2OX‹3…q 6’¦F)mM°!iѹqëRèÏH)Œ;›s ®ÞW(£IûªOÊ’èSðõj|9"”·YŽ7:[]Ü·z«-„}d£çX•Xa†]¦ ¢R¥XÕ¸”~ÏjÔ䇫ŒKnÔ`í/+6¤íÙ®¶îµÄ)%ƒñ$m6ö N…ùšH®/$KÍSè%Å9xD–^n~%ئáJôÆØ1†HDèSÊD7unH¡áúÅoö* M¸¬mô­W¹,rHGMÙ­%ªZVìÆÝ1èµ³y¢ 0.ÈŠÕ&‹ý;YHí¸‰SN\4 ÅJµ°è"íÎí­ ÝâÿRsÔœÃúpÅK£$jùYkîÙlÇw%»Ý[I0 ›‡Ã3­/äk”hš -^¡wõ¤l†ô f»yg·.õ·UÏf3nº"U©-ñ ;}Ëfº7F’-íš,Ä¥Ä$>J¨¦ÀLBþé’|م٫µ2K´’ ÃlMˆÑÀJL‚¶ÛLJÓ,×]v^ªa¼è2ÕÎ9hܹ°ÂeH‰ò˜0c–ç½^D‰õJ®;ƒ¶°NÒŠNÚûÔpÛôR2µ×dÞáX182«NveàÄÛÉiãŒD >И˜ˆ‘wJÕ” l³bîìÅ®ãî×»­ÑE ¥b€˜$ný2«öŒVnÅ;jÝPŽ¥(š›tÈ7DnÝÊÍK™2—0%Óä»@–Sh­%1ë;S4ª—_ Õå—Bß&ÒÉo\¡ü?MV¢cég2Ý".6Œ¢©E—UkÓª„År¢ìטËqÂ9D²® é{K¥‰Ÿj}f\¸×lMßz»zÑÊ+”$:.˺ª1¬F[»)mÝç,YmìðåKcjÚùTUŒäEŸÝ5W´Ó>vŸýqg+— µü‹©Ú#jÚlÒÒ?MÏÓÍÍØÿ5Ë:]­ŠyB¼ŽBŸZð§»LÖæ#ŠèÚe8ŸéçY2ËB˜y^Ó­×¥–‘Ó¢|FŸ''æ(x»«Ù—ÅÊ\‡¢½ìÚ¼á^æÊºëP‚Þ¸w…&ëK6ò0eç¹ ³%ò1÷mÞÙ4GjÅ ¼DW+É— ÃÄ8y –ë­2ÃDé %i“¤9‹ÉS)U±Š¿x6¯½àЇÈ÷Áµ½S¾@•ç{Wxa– ×Ju€7Ÿô®.  àìLÄ£ŠÄæú;¶Zoï .[­ª™x6¯÷¢w{`KY"æ[½ÊíãlJ¤á÷ª´Ò}·â¤w Ù…SLl"Ö>­Ì6ùDUeæX”\òÒ;źº5XsâÔéÐf¸ë.‹Cp—¤+šF;V®Ì7ŽU;½-ÖŒšh‰¶€­WfUÎÄ¡ãŽMP_‰°•Òíf1g>×ebSh†ÒhrÛrË}YUmªOk"¡P¦M`]27L£€‘ÞJ×fÂ¥—­ÖSÛ’r“RŒý®4ìSÈcw ¯4Ò÷‹xDˆGÎ%­m–Ëh‘]—.lËoÀuí#pÐê„énƒBDEäŠè{žÄ¢9pýRßÅOÙ]O¼àVj®øEâHå-ò+v®yÉb¨wÜæ#/Ü•¿‹²s‡OîCä X¢¢Ó)t¸Rñ Vkr¦µ¶b4f¯!Ý"+¸“]ç-îÁ×I«ŠÂ,¤C¶2³j„¦D•M‘°¨E~#ÖÜ è[põ…&ÁÒúî}פa§\+ŒEö.â·y2œ2®¹e™VÌ8§·òÌwÅ#µnûžÄvÛî~¥òžZŸãXfS­•¦sŒH‡{(Š~áÐ*•r%>UAÖè´N Û«mèUøˆå¡Ô¾@’Fƒ_/ܗȰTz ¹8‚u:¡1،ӅӔ÷PCÚ+We>Ó¾öû–‰e"Yb¨#0´à“fi¤Õ%–ÁâÞ]h}êD6ˆºÃB#ÅjáLvÆ·’ßa» BX éòäY–ˆ…fðEs/é Sä JX&Sìá Km6% &[ˆ†â$íÁð%âóT¯8Åàe~õ¶Û«mé©TVkÕ%ò¨u+ `cn€ ¢+AÊM\v‘R ÄDÁZ"¬^ ¢t>Õj]×Ù)=Ö‰¢ºÞ²âQçÉ ‹7:D$V—¤eb¨ "à‰ ¤6å$¢ÑÅjI{ÕV¤ÐÛhÎ|@z¹ÐÙ_Rˆ× ÉhJîð¬±^æû4м€X¤TŸ„Â1ù«ß׃÷¿Vù™û*orlH[|›Ý-ÔáÃøn¥\Ójqªd/0îɨÅuÏö‰]½jZ¥U¼©î* [ægì¬s!Ô¡Ç)3)UÌŽñ»Ñò­µOr Ìg ³Z)…ïòŽ>Ë0Ûh‰]w”µ)ó=´g]Ú2ë$˜HmK@â@BVÛÙµ,´kzËŸGýdQ¸xm¸­]: mq]¢ 9€$%šìÉo’¥Œ ™€“гƒÖ.—w*Ï=zŸ2<È”j³r10"€îðîð©ÌªU mnˆõt.ÔzÉ`°ÄÃS"jûI›Êñ­¹,U\$F­8ñºí*¬á™™n"/%kÊâì†T91¯+Dž`ÀKÎcë”J½+ Óë’j%lÒ´Y¸® „ˆnòFåë:[ïêʶÓçµ°Ö¯ÌBWŽêÛzF6ßšì¨áÛnâሖNáN UØäH†í”c!ì–\Þ’ÙH«—Ð*|ãm*¡›«ÖÌ_ E‹*3t©d„@î‚DCi]”¸TÞõJv‘·¤¸>RèR銕;ÂE8˜ŠNìÌ‹9õÔ¦ÅUÍÈu+‹ô² 76%ã—3#`ûn4í·:‘ œjQ‡1ØÒ]q·˜2·Hr¦>º)r…-Ñ$Od.ñX@YRÅLkÛ­·¬œÔh Í: ¿Èöñ­»¥^6æâÝÊ›·äÍÕ̧ŽGôzdي中¿.; ÃZLn°m"+}9½Ñ"Ždbu *dz ”û-!Œï¼ù2ñZ³&Æz ‘,+-Ð…¢‚îpÙD%—ˆsw•Ïrcš7rui¹1Þ·¢¼¾žU9‰±U5¦›§á p¢Çkd!Ðß!.¸Àˆ‡Œ­¸»+‡ñ+´Öi¨d²é\bëy7p«Ä3Ð]nÉ*ÃʇL£ë•P¥En0Õ ›²´IÐ1ÍoZÒ/5\+ìš¢Š”Ž‘)çÄ[©ÚhÝUÏÃd]íâtýe¸ðsE!ÝÊ´°ÉÈ›,¥µ<¾RôÇ“6σDBÝåmÄVˆ§&µ0SX}23U¦*Ã6ËZ D‹‡1\›R›1eO]wU©•Y¸diS–ðìX®“E¸cuÃÞIkb(ëàÒÌÙ–Š‹Îo\ê,)qÎù/Q$…Ös¡~ª9‚Y+¸E`¬fŠí¥ÂK% ®¦²=õVÇ™ðìá¸zHš®W< @ˆ¤tR|®êˆŠíkCEÂQ(•et*ôúËôgº10ciq ]ÖYuGFÃUlV.bʼm*íÌ$:!Ò³e"ô—ší¨L«bfªÕh’ã“[(q)oíZ„À[hw½•÷lcÚcEÓd†ˆJÒÊ—MÓÌ'oðçùBXÛÊèõ®%í7IDEÆf^qر‡B7q¬·Šñk/Ys+ß%Õ1õ—a»]—zåQäIÕÁtÌ=Uðâ:ôš]„"ÐdžO‘‘onîð¬ÚÚÁN`\P7=§c¦´ˆJën]T±Q1ê­+Ð)2„ *$7o\"CÙHåX ×1ûµ ž’= • n±×Æëˆ.áÝQ+]]µ0¢ÚïõG—ÉY©£ô›7mú«Si²iÒ+~(‡Î·I¨àÙè­Iï¨]<úç¢eßP•Û-.  xmÝòWÏüˆK ãZe|˜'ZŠï¾€ïÚJÙQu〦RÚqÊÓ »®•¤=åÃ2=ËŠ=×V°±—bSÚÃUjXǪˆŒ‚;FU·dò“p)©bHr߇¥Ñ‰£´BAf4ÝŘßUøˆà•J½Î…(e1köÚb·ÜÖ¶/ßÙ¾1+Ú›:Þ?öU‰{PÉUYXޝ&àò“l[mÙ4B=kw”»® lÐ*˜^^ >S]˜"¼ìÞQZ ÍѹtËË$_dŽ>µ¨¹mÝUÕ[27wW£m· Y43í¼ÜœiƒKÔý«m7Ú)Þ2"õmTeÍáGŒ#˜ÈGÎ_FpÜ/aÊm3˜G¢ÅidDW ù|..¢…æPB‚³òÝ¡sÓ¨X¦Þ8¯¹Ï›6`õMUòÝWË”-Ý©«1vDvºS’o6ŸFíñT3…zò%Û£œÂ3\­™{º¥áv–>|ûË!\±8% ‘¤Ê´šVo‘ÌøÁK(®:غlˆ‘oºEošJ²Œ-J¦Ô«4—IÊUAØ×ÖŽíË–dlØÉôŒ´´Aid‡Šš¨T Æ™0ˆH„„Uf¦Ì¬ÒòÓj°Á¼+sÝ.*ûåÿMg(襚ŕútÌ*Õ3ÂjóFVÔ$ºÕ› ·0ŠfGt”Ó…hˆ•ÅÙPǺLT;Õúk Šzhl¥ÔÜ&xG-ÉÁ‰ÇEê¥Að+…ÙŽ˜ñf%æÔcÔa>vˆ„?4ÅzË"Ø‹M†Q¨”È¼Ñ ¢¶QíM“¸˜;q‰ fæ¦â&©˜>ÄÂ,†NÞ>ª©°ë˜š[*äMQ –_tø«tª æë0*eÜ¥˜ÆØŽ%oìÚtEÒªºè2"YÙª¢d<ÓXªÙ¤è´>X¨ÿÝV*âœßÉ Õ•.§St¨Ë'Ä á m•W·A‰»€-»6ée]½XÈiœsi•·Å18W°çï9k½ýØÎ8ÛÀW b˜¬™³'nÆ Óè1é§*LN‹$!h/@\ÕÌ«Sx‡èµ’DChÚMfI{âæŒ›rP‰‰fi1õ÷Re¬N:RUAñ9›¤=â¹0µ½ < Eˆ$$~'H|”×,C‹Ì„ Ò¸·}ã2çÊéÒftš‹;"ÛDŒrug/D•—apõU†äc–‡ˆ·zpzм¹âcŠâV‘ü†âa|M$³N!î´*3[üñ Ös6êbEÖŒWáQg?LqˆµI"о'²/¼òå¶áXËX/˜4ûT=¤C*F×¥ÚŽÃ+mí çÉGàªõËÇŠ°§öt\íÍgYIƒ8¨¢]4]1•º !ØÞ+Ämë&'+£¿áR!´Š”ùZ\>ú «ÜϪpKH®#Ñ䯔OÄ+H‹0–é'ð-wš—¦QLdæ J¡ mv1t’:cå»˼•Óm–ˆÆë­Ínõ©ÛŠ¡á6h,–r3¢oˆºr Æpå-àÜ·´*k"ÈütJx­&Å¡ë]q.ŒVE°ÇÊ%°á[ ³wUTb™IÏ”ÝíÚ¹L„ÈCEƈ·™Èž’×(à­-ä”~Ug/–SŠç“jÆS ·XsÑN*f³]DQ¸e¸@żW2‹†×¹çHŽÒé6‘WeÙˆ‘yJk"Æk`ûÅs‚-‡yua´GÉKŽÓwˆîŠÞm°µTb›8•& ÖˆmÊB´#é¨CËnÔ|Ôç{CZˆR"Ç SböÙ½ÑuÒ´G´]‘J÷*ÎOwNôgxR]=ØÄ¦Q \èŠìƘiöaE8†Ë¥c² æ„_ÙŠÒt–ž"§áxÔ:ÃTó¦¸LFѦ‰ÜOˆ^"7e"""»²šI6Š+‹×çòˆî€®§0¤7mËm°¸nHÅ­'£Ý¼6¬} ¢¸‰±óWEàÞO¬7†XjŽRZ‚NœÁéÆé Â$FÞ¶èð¤£6ÕF¾k{d>jð`5£ìcæ©z `ÀjƘ§OR .(¤, wv¢VöIazF*]ÊŸIu÷Î(δ,Ù ¢W÷H‡»h¦Úm$^Ë"ÐÚ""—w?”º€ã=W‘ÐXm¨ [&€z£”K´EmÄKšB\"Šdæ-"½-ÁJ-È1‰eÝÊWTxKªÒCyHná@îÔí±¶ðý3K{F†P:ï7P3¢+èü ¥r* ôÜYYĮТíßš>’¶Ü+É.åÇ‹Ô! ’‚„$6Û­iiÁ"C§G=ÚÎÍcaçp®<­P‡(…«ÆÒ6·€¼¡´—Ñ‚U––2:~6†Ì 0¥Û£›ˆ‰²í}}ð×*U’qâ­#v”sóf^7¥{qiá^·)ñæ¹"Õ—…æF°õ…c#|!ñ-‡ˆDw¸T‡«šN Ó©Q¦Ê|̈ÞÍh‰Z#è©“\\#‹éTºm>$“–ÁÓ§”ÑèÎ ²®È~o¤ºïk>Miö¢6Ó,QJ#M]—nCnlÛƒšÔá*áÃÔþ×½,#FÙKÜäêÜÉlSLüÉá2cÒ\6ï|ÈÈoÝKnÓ´®ÊJc‡EÂdbÛ¸^žà–[„mQ6&*Ôˆ7 Fh·D‡u× È^²×pÚÌãcÙ"Y$;hÚÊ×”K«‡ãFŸŠ)ôùctw]÷ÑÞ+}biz½ÃçK&M>šÆÕ±;F(Z7nŽeq½0d¥û«;GÙ[ó…V…oÏjW˜jßÖ´ýÛ¿Yµ»ÖÝÝI]a­.ì†%4ŒxzW+Ûšw`«“dYJíî%˜FÞê–5͆贬/V&©›N²Di1˜ˆ„¸JÕ6áijâQùŠ¿K WnŽöUÓÁu¸”:ðÔŸŒûB-¥q´`>‘-ÝZÁ§Õ+’Ê¥&„V„šiÜÀDEmÅÖî©ÁT,¸^‰ÍÖ"¦Ê©«‰1í"»Kv?V§ØBq†9‰ £°Ù;œJÑ!+H®Ê›8ê©H«âIµziË!šù¾c!± ‹(¤W)0©´[‹õ5Hï¤Á)ºMÀ5H! n!†nÝK‚oHï»Ë9Z:ä§Ñ u*šÔd¬IFÑ;s [ÖMÊË’ÀrÀ´H„{ımë6#ÞRV¦it‰”¹µ:¬6¦»Ò‰€†áÊ=¢%!7JÃZpé¥þ}”±UuÚ±×9z/0<Ö›v÷•>-ê7ä+À˜Wï?äP­å%¢p½õ¿l+`°N©4ì7ðÕ$n´Á·xItl„‡vëW¥¤m,¤µâŸ0›d᎘\E˜­+s-Šx ºÝ6žw R%;nõ¤Y½’ݬ«£u¥ÝI+.á9  ²Ð¶Þ¡ˆÛš‘yËRpöÜ%BòaŠ›) e´¸‡í¥¶A»•LeHÃú 6¢ø1\aQ¨!jµthPj„_aèÁaoˆ•»Ã™,UÚ6ðù«{Ïb™R9R[2k¢ÈhD:ÆÁ€úF+˜Ë—…×ovWOćXÅmAœÙ;¦ ójëo!´D{¹•JI­ÉÚ£ɨ•A¶œ‰8j"èH°HN(ml¶{{¶õS¥6”x½Ú„AwÁå;néÞv_vn¶U(ÂýJÁó‹ÚX\ÃxGðb¥í)—tUµaãÌ8ÌŠ–ÞIK)NÊv3®Æ´X!±®µ¶ÝæŠhâj…*¯M„Qe]..Ü 6EiÞù˜•Ý!ó,=„ÿ ú^ÒjëJ‰C¥ShµŠ-<`ºü‰% "°ÆË®·„—(åau šækÉSÏ$6[ b6š:„=a&@Ï;EÝS÷#‘»b!ÿÄÇò«7‹b”¢àºHìÄbã,€•ÂAaù+ØøN†Ä§µ±ŠÔWb6É\cåZœE”’ A.v“MÁ”Ø<.4Й]h•·õwÍP÷, CábêÒŸü¨+[«ç,,Ø¿ öiOþTR2î>¨h]æjîÒÑÒjO’z4P"Ä."![4Ç"ì­:’â/Yzmlj–éS@â®KùX\‡ie­K"ä9uw…fcla ÆaÒ‰×K¡ÌD»šÂÁxH1f ­N©SZžTù]-±m+Lmà+RѵOTs‡@ˆÖlîÊN°6yKz ‡îu§Çg!§,·vW0n"Ͷ›;êsHŒn#Þì}†ô§öm8ehĹÐY•R »³ '˜/*äšáþ—;mÙ€½Uµíд~Çù©kKCŽÊ}›µéÞŠÒÕr3ƒ»Y“ó`ö–ì8“ªÂ>3²å;”d̲ݔG²$µê*ٮéD~$¦·Úx x³ Å<»ŒØ©íÝ ÃÖ­Ú÷HwIt È ,­–C…hÓî ¬ÚEuãë/hwh„×T³zI ª”¶áÃ7w·rõ‰jÉ*Hm%ÕF!ë@ÕÖ­lE§#AÂN‡¬ºZu㚣®˜ˆñ£é%­ ’ƒm¶×ù®äb¸­­9ódêÄX2µM®N¦FŒýK¡;±}èí»h‘“rÒ¦ájœß €Q…Ùû'€„!ºß:壋d˜ÑNgNnkMíÆË ­ÚÔlË@]”…q‡IhbPð”gnóIt"‡½ Å”ElGSÒçbvkCTð.(‘IžÞA"&át8HSe½"\Kè´õEÇô=0jM[ 9ôÇ‘£y²ÿ%Gõ+ظôœWl÷§„röIzróÒe|¼V¯Ea»‰fHr’îæÃ#p­)jÏǃa\¤è—žJ0{0®†ŵ,=â7dǺá+HnÞS(¶+E¨ÄM†spe Í«®›ÞÕ£—ÉÍç.Èâ !"|a6b;»)¢ÙnÔòd„‡º«¡k:N‘´©õV/¢C¤_±šÍ"½Rk#ï£ÞQ&:Ó~²+$ÄœºE¬‰{+cSL·Hu5o}ùOL–{Y•ÆKP' ¸Ú¹1<2%w¿»ë\©Ü€¼?5<ðε±Clv‚BÐh+´ ú_Í—· ÉUíu°~›q¥(ˆ­©œí+hÞ‰20Ìvà‹Dé°ÐÜée·{t³*ná>Ì“Âm朼 xI;ézÙÅP"Œm‘ðOz+Ó—:cê™åÞ+2ƒ(ØyÈdÓn”PŽÐ‘‘e´„„²ö®òVÃ4‰=#3q›˜Rº@—¾[ÂÚ«ÇÑ—$¿Å>Œ˜œ~ÀÿÏMØ9lÉ r„6ƉˆÄ­Í¡ÞPRkÐc;‡]v¦à”\’ZŽ'³Ùå¸mß»)[uÊ­SçΣԴN§˜‰îžéU9GY5 ßEó] OÔºô]•=Ù5^ŒQß#˜É°FR†û·­!,¹m"ʹØve=­?-±r+ñ‰€vb2,žm¤¡/¢DÎØW>TQôG”C–ŒWnætUv²Îž¹‹ž>®!}ÒôSÂ-‚Ú¬Tª5é¡2u­‹ï ‰]mÜKÀ6Ûšä«=RÔš4¸;AFQ;mÜ$#ì§§„?”P^ÅÖŸÚFuÆOˆ€­%¹õÆîê¯ùy“Z‰ÀjEü"÷ÂEÖP£uìFßíás¼ 0âœFÄÞI*´DËáBë/ ¥ÚQã àïF`¼¤±Æu};Ôöüô´Yê–¼$]dxC´¢Æ•!Þ§ž—îÖwÞÏM-Õ*xD­ÞG„K¬¢¡ÆÓ>öúh÷m;†š?*–‰ê•F¢Wo#Â%ÖQAcZžœ£MoåR V´îÁ`|²KDõK~þQyá"ë(€±n ÓºÔFüâXœÄ˜˜ÿl´ßu¤´OTÉá"ë,‘ë£Ý»‡⸸T"U\FîõUÁîŠÂàÎ’_NN“$8€),kØzEÑÚŽ`32©ËoèÆ_ÇÕ%Œ@D-ÊKNV‡DÚuƒ&Þh„ÀÇ„…d¢¥‚ºáOì3Z(t¬6§ÁÖçN¼ƒ6íÖª×Xõ6X¥Ò…×GxÁܤ³}Ÿ-ê3¿**eÜ&¼}<§Ê´¯D«Úi³agguGúÀÓþϫݨÂ>˜¦§Ñß¼®yNŠåb OPÄ1z1Ñ"\b%q»¢«ë¦™t{«·ªÛ}Û»ø™úÀ¸Â"±A™*‘Yj¥s†R-áê¦p§ÙI.¼tS³Àñ¦µü)H1+·m¶ÔÂÖñóaZHÝû«wý"Z¬V4îÓ$ùD+ˆ+Rñ†\|Eˆì]²k{1qÔ´Hnh¿ï*Ÿ9ÉkE#F'^éÂvöI¡ÍP00ZIt:­k ÕÆ«A˜äI¥néT‡‰Fdlد’ÄæœÖªÛ‡yBT#4-×({sçc·y$»Nrˆ¤Ü4:•þJçV§2Ó™WNV“Žh‘›1#‹J!;xn<¾ªÒÄÚø¯NhÚ¡Óš€$6íž+Ì{ª/‘"TÉL™%Ù2Ÿ+ÝxÊâ2]#—ë«,×™v˜äWfZ˜|Ç¢ˆ— ¬K¢à^’á”91䓱œÜ$¯ŒµbPÔ®*§àü§S: Ç|€n â]MaV0VÃp­`«½*¦SåK& ¡!óoaÌ¡ñ—3FówIyÒ$éý¨^p¬•mfFÍ’·BÉNÚT·!´Ê]ÑZbÌÉÂÐõ‡1.¤6[e­Ýhåͼ·“ZUÀ-0·«m«v–bpBÒ» ¯d3µjÒ)qÙfd"÷|©%« ëÂuùØWDÄÑaÉpȈ4<$@W  v–qˆgbÜM/TÛ`eÌ´ŒYDDw‹²›¥:QoE"î¯D“Ê1œï [ j|6Y1mÐ2á+–Z8Û «‹-‚µ.Fý¢[—a–ì)9b8øƒ+l—UÑ"ó—j0 Í‰9±8¯ƒâ%ÄBW-*“øaµsYÓ: ìþ4{Ë8‰6f´qTJÝZ^«Í¤Ä©NviGK1ù+ k"µú.ÛÝ´mU; צaLWÃl8äWµu»P!´…Z<#® ]„ÕµV¢H!ÌÌ‚°Ä— rSj¯ÚµlªºÑO(ÆëbÛ»«•iý]¶°Ã•&jS:YdÌ%·mômN¯tô2ÑpÕàÛøÈ{KF¡pÌ '$×©íˆæøñ"óE=Yc_Y”¦°ö¢ªtÑp\´ƒ=¶“¤O‰\]¥Z#è¸nR®¹µÃ?C¹È7‰¿ ²íHwD{*,nݺå²E–aÝXœ!Б*C`<7w–£}.|†£DtÊЈ‰T¤ ”øÆ`qÓ!ÄJëòjÕXàl7¦«Wgôúx—yþÀOi7¹7ê5¼: bœYiW-GŒy†?h»JÃ}eäÍ̲ã„.JBBBË‰Š°íÒœ¦V¡5.9Žéü#üz vÑÌ‚ k?“uf”nÔ0“åR‰½ÑÏ+£í("©OªÑæZŒ7â:H WÓneÃÄX_âl¬Ò"Mí8Þ‹´ÅtŽl¢š¾mœ¹…`DñÊïb.N§šré¥ü‘Ü>’dÎä ÁiÓÑq5£Â&Òë¼UTºA—[ÍmÜê’²S¹)×Ý:"סº7t®LŽKXØ>*u5Ï.Ô݉TÛΑzÕ²ßÅ™J²98ë!¯‹‚ßÐè®|@ëAœÃ@qÎከæE5GüâB@:SµíRk">ö¨tnZR5oÙøÌ+TòX[¹†í€‹²ºOaL\ÏÆaúÿ†%ªåµñ´Š€÷£nD¬˜E¬×,­†\¢7,G©2$.C’ßy¢‹lþà!.êÛEÍÒ|¥¼‘²Z0®á^ŒÎÒÛD¬›Ø£b+Lµ8wm[hŽ[zÉb|ž%®3ª½éÍ—Ym¢28ÒDZJémi@ÉhI;Nâv=žÊ›VN’Öðšô_í| Ò´„Q¶jååí—y…x-Ž‘¹z.µnREíó]vdcªÇa[²‰†‘Þ^\ÝÛȲÑhݺ–&$;ȸm¶ä²äYÙKD·’·nÌ!¹$ZYFÛmÞ^•º x‰*0¶""á$[ÍÿÕeñ!.$«F죕dæÞ»{*ð€xˆnJ„5zVÚ"%›¶–#q—UݼEÚAŒ®ÌE»ÚXù‹NòÏÍŸw0 ´ Å`é‰nåY„GG[»)B#¦áݨÕÙçݹd›.eƒ-Â9PY{*ª<æËë$óð­Ó—*IhA«±Í”VBdwˆwVl¥vkr ˆ2æSVY®1Ûê¬Â~jÊ;;x|ä´AmʪÖ‹„­òD"yI,M­iU!!Ó“²®êÎN6C½™$¡íä¨Ä!›(¬¢ÖòC¥t–ìË@@E•cØ—V哦0;ÅrIJÖF±7è¯:>l–Sá/E9â"óVE¡YÄw®Z¥=<+Ï4»ÉÚ6ìËi]o ų!óV»• Ó‘á·u-±±Öœe¾¨U¨¯J¢}T´Fø…¶¥Ø<+š3_,¢Ùy©C"q‰lØt» IxÒu‹bÄ+±Yt½îŸ,»­Øf…ŠŸøª IÎìbY¹‹zz«Ý›CÕ[¬àÌpñ{Ö«•ß͉m³«ma½»…êŸ$B£r%d剀ÞCíœqu?¬ÙGkX^mÝRʺ êZÎþ÷œo¾è­Þ‰YD;÷-71¥i•äç¬÷7©Œ7ÞtVä~LúÄ;vDóªe™Õ}- r—¤½1´f¶âS´~J¸Ð¾6«K(–û<“ñ |m~÷@“r%POÅ`)NºVÊÒÑy'DªâWL¸–­(`ÝFà 4bû4¡› w]“s–iUBÕþ©qÆ4x 9Æ" Òdd·i[mNê_`†a€Ô«#|§Gs²Â¥j;BÓ `#Í @mг.RÌ”ýd! @„!„!„!„!„!Žd!„!„!„!Žd!=‹_Á‡š‘¦4m? f‹Èг¡6Eùé7é‘-?\š®æÃŽ|eš_ÓWi³0 ”¿…éE£ø£é\÷µI«w‡ß0,¿ºO¤ ÏRZ­{{ÁòH‡Õ%Ï•ÉóUo»´=¥Ÿ­ÌÓæ?œ¥„ †žäת×~ }@;“ i9ɃV9F¶ßvw´*rBXW×¹+`S2&ªµ–LJFÐJßEk¹ÉC Áˆjã䂱HUy Þ|“0ç*ªy€%§/’m?FŸ¥ñl›”Œ>Ò³ˆKÈU§9%//øÆÿRÕs’lž ^ו•¯BnHT×9&Tôh÷¼[ú ‚\÷9*b•èüd$®:9ÓrLÑM‹’¶1ÊÕ7ÒXK’Î9Ñ»U¥—”Jç!næ-® V\—u…£vu$¿½%­+“F²>a*{½ u]Ô-Ý’j£EÉËYû!~°9ÉßZC»MŒ_âE^ÞâG?ñ&ìŠÅCÿCÖµGvÇÎE µ­‘ø(léþ‰"¯Ÿ?ñ#Ÿø“vEb¡%¨MmïxKüH{KUíIkU—H :ZmátI}çþ%ânȬ_>‹RúÖÑûÕ’]ÓŸ Öµ¿æ—”>Òú…»²+ϠªI´“ôÖ·àeSɳÚ_B›²+Ï? þµô—Ô][ÍiyôÖ°ÔM[Éö—ÐÔ&ìŠÅóÔuA­^o¨Ú¿˜+ß öµÿª¾h¯¡(MÙ‹çÖLë_OÄ*^´–:•Ö¾ŸÞ”ï(‡Ú_@›²+oQº×?ÞËãýàŠÎ:‡Ö¶ŸÞóžS⯺vEb¡£ÉûZ‡ãð+cÞ|VÄ~NºÒyÍPc7ÏÄOªõó¯?à³vEb¤£É›Y§ã2¥ø•™¾L:ÄÓñ“)Aý꺈MÉŠ™%œr[õj^(–Ã|•1y|f §tI\^ts©¼Šà¨LòQÄ?eıºÚé3É6Iéhß'VÃF_Ó,ÿÍlÅäýªÆtÜXh_ÑÕuóö”®„´„pÞ£õR>¢iÿñÒz9l3©ÍXµð`ºOüZçOô%¤Œê¯W-n`Ê8ÿ‡¹ย[ 'F¾Ü0/XS8íá¬8Þæ¥v{+8Ñi£%*÷c‡ù.Ši:îÁ£ú° :FƒF…‘<^¡<òW¨BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBÿÙtiemu-3.03-nogdb+dfsg/src/000077500000000000000000000000001220314353500153555ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/Makefile.in000066400000000000000000000253511220314353500174300ustar00rootroot00000000000000## Process this file with autoconf to produce Makefile @SET_MAKE@ CC = @CC@ CPP = @CPP@ CXX = @CXX@ CFLAGS = @CFLAGS@ @TICONV_CFLAGS@ @TICABLES_CFLAGS@ @TIFILES_CFLAGS@ @TICALCS_CFLAGS@ @GLIB_CFLAGS@ @GTK_CFLAGS@ @GLADE_CFLAGS@ @SDL_CFLAGS@ @INCINTL@ LDFLAGS = @LDFLAGS@ @TICONV_LIBS@ @TICABLES_LIBS@ @TIFILES_LIBS@ @TICALCS_LIBS@ @GLIB_LIBS@ @GTK_LIBS@ @GLADE_LIBS@ @LIBZ@ @SDL_LIBS@ $(extra_ldflags) CXXFLAGS = @CXXFLAGS@ @TICABLES_CFLAGS@ @TIFILES_CFLAGS@ @TICALCS_CFLAGS@ @GLIB_CFLAGS@ @GTK_CFLAGS@ @GLADE_CFLAGS@ MOC = @MOC@ DCOPIDL = @DCOPIDL@ DCOPIDL2CPP = @DCOPIDL2CPP@ RC ?= windres kde = @kde@ dbus = @dbus@ #DESTDIR = ifneq (,$(findstring NO_GDB,$(CFLAGS))) ifneq (,$(findstring __IPAQ__,$(CFLAGS))) LDFLAGS += @LIBINTL@ else LDFLAGS += @LTLIBINTL@ endif endif ifneq (,$(findstring __WIN32__,$(CFLAGS))) RESFILE = tiemu-rc.o LDFLAGS += -lcomdlg32 -lole32 -loleaut32 -luuid -lstdc++ EXEEXT = .exe win32_OBJ = ipc/com/oleaut.o ipc/com/oleaut_i.o ipc/com/registry.o else RESFILE = EXEEXT = endif INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ sysconfdir = @sysconfdir@ .SUFFIXES: .o .c .cpp .h .m .i .S .rc .res .NOTPARALLEL: ifeq ($(kde), yes) kdeincludes = @all_includes@ kdelibraries = @LIB_KDECORE@ @LIB_KDEUI@ @LIB_KIO@ @LIB_QT@ @KDE_LDFLAGS@ @QT_LDFLAGS@ @X_LDFLAGS@ kde_OBJ = kde/kde.o kde/kde-private.o ipc/dcop/dcop.o ipc/dcop/dcop-private.o ipc/dcop/dcop_skel.o kdeprivsources = kde/kde-private.cpp ipc/dcop/dcop-private.cpp ipc/dcop/dcop.kidl ipc/dcop/dcop_skel.cpp kde/kde-private.cpp: kde/kde-private.h $(MOC) kde/kde-private.h -o kde/kde-private.cpp ipc/dcop/dcop-private.cpp: ipc/dcop/dcop.h $(MOC) ipc/dcop/dcop.h -o ipc/dcop/dcop-private.cpp ipc/dcop/dcop.kidl: ipc/dcop/dcop.h $(DCOPIDL) ipc/dcop/dcop.h > ipc/dcop/dcop.kidl ipc/dcop/dcop_skel.cpp: ipc/dcop/dcop.kidl $(DCOPIDL2CPP) --no-stub ipc/dcop/dcop.kidl FINALLINKCC = $(CXX) else FINALLINKCC = $(CC) endif DEFS=@DEFS@ \ -DSHARE_DIR=\"${prefix}/share/tiemu\" \ -DLOCALEDIR=\"${prefix}/share/locale\" # -DSHARE_DIR=\"$(pkgdatadir)\" \ # -DLOCALEDIR=\"$(datadir)/locale\" INCLUDES = \ -I@top_srcdir@ -I$(includedir) \ -DPREFIX=\"${prefix}\" -I. \ -I./core -I./core/uae -I./core/ti_hw -I./core/ti_sw -I./core/dbg \ -I./sound -I./gui -I./gui/calc -I./gui/debugger \ -I./ipc/dcop -I./ipc/dbus -I./ipc/com \ -I./kde \ -I./misc ifeq ($(dbus), yes) LDFLAGS += @DBUS_GLIB_LIBS@ dbus_OBJ = ipc/dbus/dbus_ipc.o ipc/dbus/dbus_glue.h: ipc/dbus/dbus_ipc.xml dbus-binding-tool --mode=glib-server --output=ipc/dbus/dbus_glue.h --prefix=tiemudbus ipc/dbus/dbus_ipc.xml ipc/dbus/dbus_ipc.o: ipc/dbus/dbus_ipc.c ipc/dbus/dbus_ipc.h ipc/dbus/dbus_glue.h $(CC) $(INCLUDES) $(DEFS) -c $(CFLAGS) @DBUS_GLIB_CFLAGS@ ipc/dbus/dbus_ipc.c -o ipc/dbus/dbus_ipc.o endif # source files to build core_uae_OBJ = \ core/uae/cpuemu1.o core/uae/cpuemu2.o \ core/uae/cpuemu3.o core/uae/cpuemu4.o \ core/uae/cpuemu5.o core/uae/cpuemu6.o \ core/uae/cpuemu7.o core/uae/cpuemu8.o \ core/uae/cpudefs.o core/uae/cpustbl.o \ core/uae/readcpu.o core/uae/fpp.o \ core/uae/missing.o ifneq (,$(findstring NO_GDB,$(CFLAGS))) core_uae_xmalloc_OBJ = core/uae/xmalloc.o else core_uae_xmalloc_OBJ = endif core_tihw_OBJ = \ core/ti_hw/dbus.o \ core/ti_hw/flash.o \ core/ti_hw/gscales.o \ core/ti_hw/hw.o \ core/ti_hw/hwprot.o \ core/ti_hw/kbd.o \ core/ti_hw/m68k.o \ core/ti_hw/mem.o \ core/ti_hw/mem89.o \ core/ti_hw/mem89tm.o \ core/ti_hw/mem92.o \ core/ti_hw/mem92p.o \ core/ti_hw/memv2.o \ core/ti_hw/ports.o \ core/ti_hw/rtc_hw3.o \ core/ti_hw/tichars.o core_tisw_OBJ = \ core/ti_sw/er_codes.o \ core/ti_sw/handles.o \ core/ti_sw/iodefs.o \ core/ti_sw/mem_map.o \ core/ti_sw/registers.o \ core/ti_sw/romcalls.o \ core/ti_sw/timem.o \ core/ti_sw/vat.o core_OBJ = \ core/error.o \ core/engine.o \ core/images.o \ core/interface.o \ core/state.o \ core/type2str.o \ core/hwpm.o core_dbg_OBJ = \ core/dbg/bkpts.o \ core/dbg/debug.o \ core/dbg/disasm.o \ core/dbg/fpudasm.o \ core/dbg/gdbcall.o ifneq (,$(findstring NO_SOUND,$(CFLAGS))) sound_OBJ = else sound_OBJ = \ sound/audio.o \ sound/stream.o endif misc_OBJ = \ misc/cmdline.o \ misc/files.o \ misc/paths.o \ misc/logging.o \ misc/rcfile.o \ misc/screenshot.o \ misc/tie_error.o gui_calc_OBJ = \ gui/calc/calc.o \ gui/calc/dnd.o \ gui/calc/keymap.o \ gui/calc/keyboard.o \ gui/calc/keynames.o \ gui/calc/keypress.o \ gui/calc/popup.o \ gui/calc/screen.o \ gui/calc/skinkeys.o \ gui/calc/skinops.o gui_debugger_OBJ = \ gui/debugger/dbg_all.o \ gui/debugger/dbg_wnds.o \ gui/debugger/dbg_dock.o \ gui/debugger/dbg_bkpts.o \ gui/debugger/dbg_bits.o \ gui/debugger/dbg_cause.o \ gui/debugger/dbg_code.o \ gui/debugger/dbg_data.o \ gui/debugger/dbg_entry.o \ gui/debugger/dbg_heap.o \ gui/debugger/dbg_iop.o \ gui/debugger/dbg_mem.o \ gui/debugger/dbg_pclog.o \ gui/debugger/dbg_regs.o \ gui/debugger/dbg_romcall.o \ gui/debugger/dbg_stack.o \ gui/debugger/dbg_vectors.o gui_logger_OBJ = \ gui/logger/log_link.o gui_OBJ = \ gui/about.o \ gui/device.o \ gui/dboxes.o \ gui/filesel.o \ gui/fs_misc.o \ gui/infos.o \ gui/main.o \ gui/manpage.o \ gui/pbars.o \ gui/quicksend.o \ gui/refresh.o \ gui/release.o \ gui/romversion.o \ gui/scroptions.o \ gui/splash.o \ gui/support.o \ gui/tsource.o \ gui/wizard.o core_gdb_DEP = \ gdb/gdb/libgdb.ldflags \ gdb/sim/m68k/libsim.a \ gdb/bfd/libbfd.a \ gdb/readline/libreadline.a \ gdb/opcodes/libopcodes.a \ gdb/libiberty/libiberty.a ifneq (,$(findstring NO_GDB,$(CFLAGS))) libgdb_A = else libgdb_A = gdb/gdb/libgdb.a endif tiemu_OBJ = core/uae/newcpu.o \ $(core_uae_OBJ) $(core_uae_xmalloc_OBJ) \ $(core_OBJ) $(core_tihw_OBJ) $(core_tisw_OBJ) \ $(core_dbg_OBJ) \ $(sound_OBJ) \ $(misc_OBJ) \ $(gui_OBJ) $(gui_calc_OBJ) $(gui_debugger_OBJ) $(gui_logger_OBJ) \ $(kde_OBJ) $(dbus_OBJ) $(win32_OBJ) \ $(libgdb_A) #rules: all: uae gdbtk tiemu$(EXEEXT) uae: cd core/uae && $(MAKE) CC="$(CC)" CFLAGS="$(CFLAGS)" gen cd core/uae && $(MAKE) CC="$(CC)" CFLAGS="$(CFLAGS)" all gdbtk: ifeq (,$(findstring NO_GDB,$(CFLAGS))) cd gdb && $(MAKE) endif ifneq (,$(findstring __WIN32__,$(CFLAGS))) ifneq (,$(findstring NO_GDB,$(CFLAGS))) tiemu.exe: $(tiemu_OBJ) $(RESFILE) else tiemu.exe: $(tiemu_OBJ) $(core_gdb_DEP) $(RESFILE) endif else ifneq (,$(findstring NO_GDB,$(CFLAGS))) tiemu: $(tiemu_OBJ) else tiemu: $(tiemu_OBJ) $(core_gdb_DEP) endif endif ifneq (,$(findstring NO_GDB,$(CFLAGS))) ifneq (,$(findstring __IPAQ__,$(CFLAGS))) $(FINALLINKCC) $(uae_OBJ) $(tiemu_OBJ) -o tiemu \ $(LDFLAGS) $(CFLAGS) $(kdelibraries) \ -Wl,--rpath,"$(prefix)/lib" else ../libtool --mode=link $(FINALLINKCC) $(uae_OBJ) $(tiemu_OBJ) $(RESFILE) \ -o tiemu$(EXEEXT) $(LDFLAGS) $(CFLAGS) $(kdelibraries) endif else # Force static linking for TCL-related stuff on OS X. ifneq (,$(findstring __MACOSX__,$(CFLAGS))) sed gdb/gdb/libgdb.ldflags.tmp -e 's,-L\([^ ]*\) -l\(tcl[0-9.]*\),\1/lib\2.a,g' -e 's,-L\([^ ]*\) -l\(tk[0-9.]*\),\1/lib\2.a,g' -e 's,-L\([^ ]*\) -l\(itcl[0-9.]*\),\1/lib\2.a,g' -e 's,-L\([^ ]*\) -l\(itk[0-9.]*\),\1/lib\2.a,g' mv -f gdb/gdb/libgdb.ldflags.tmp gdb/gdb/libgdb.ldflags endif ifneq (,$(findstring __IPAQ__,$(CFLAGS))) $(FINALLINKCC) $(uae_OBJ) $(tiemu_OBJ) -o tiemu \ `sed /dev/null dos2unix: dos2unix lowercase uppercase install: tiemu$(EXEEXT) @$(INSTALL) -d $(DESTDIR)${prefix}/bin $(INSTALL) -m755 tiemu$(EXEEXT) $(DESTDIR)${prefix}/bin/ ifneq (,$(findstring __WIN32__,$(CFLAGS))) $(INSTALL) -m755 ipc/com/tiemups.dll $(DESTDIR)${prefix}/bin/ $(INSTALL) -m755 ipc/com/oleaut.tlb $(DESTDIR)${prefix}/bin/tiemu.tlb endif ifeq (,$(findstring NO_GDB,$(CFLAGS))) cd gdb/tcl && $(MAKE) install INSTALL_ROOT="$(DESTDIR)" cd gdb/tk && $(MAKE) install INSTALL_ROOT="$(DESTDIR)" cd gdb/itcl && $(MAKE) install DESTDIR="$(DESTDIR)" cd gdb/libgui && $(MAKE) install DESTDIR="$(DESTDIR)" cd gdb/gdb && $(MAKE) install-gdbtk DESTDIR="$(DESTDIR)" endif install-without-tcl-tk: tiemu$(EXEEXT) @$(INSTALL) -d $(DESTDIR)$(prefix)/bin $(INSTALL) -m755 tiemu$(EXEEXT) $(DESTDIR)${prefix}/bin/ ifneq (,$(findstring __WIN32__,$(CFLAGS))) $(INSTALL) -m755 ipc/com/tiemups.dll $(DESTDIR)${prefix}/bin/ $(INSTALL) -m755 ipc/com/oleaut.tlb $(DESTDIR)${prefix}/bin/tiemu.tlb endif ifeq (,$(findstring NO_GDB,$(CFLAGS))) cd gdb/itcl && $(MAKE) install DESTDIR="$(DESTDIR)" cd gdb/libgui && $(MAKE) install DESTDIR="$(DESTDIR)" cd gdb/gdb && $(MAKE) install-gdbtk DESTDIR="$(DESTDIR)" endif install-without-tcl-tk-itcl: tiemu$(EXEEXT) @$(INSTALL) -d $(DESTDIR)$(prefix)/bin $(INSTALL) -m755 tiemu$(EXEEXT) $(DESTDIR)${prefix}/bin/ ifneq (,$(findstring __WIN32__,$(CFLAGS))) $(INSTALL) -m755 ipc/com/tiemups.dll $(DESTDIR)${prefix}/bin/ $(INSTALL) -m755 ipc/com/oleaut.tlb $(DESTDIR)${prefix}/bin/tiemu.tlb endif ifeq (,$(findstring NO_GDB,$(CFLAGS))) cd gdb/libgui && $(MAKE) install DESTDIR="$(DESTDIR)" cd gdb/gdb && $(MAKE) install-gdbtk DESTDIR="$(DESTDIR)" endif regsvr: ifeq ($(OSTYPE),msys) $(DESTDIR)${prefix}/bin/tiemu -RegServer regsvr32 //s $(DESTDIR)${prefix}/bin/tiemups.dll else echo "Error: This target is for native MSYS compilations only!" exit 1 endif uninstall: rm -f ${prefix}/bin/tiemu$(EXEEXT) tiemu-3.03-nogdb+dfsg/src/core/000077500000000000000000000000001220314353500163055ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/core/dbg/000077500000000000000000000000001220314353500170415ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/core/dbg/bkpts.c000066400000000000000000000444071220314353500203410ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: bkpts.c 2770 2008-03-16 17:42:13Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * Copyright (c) 2007, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Breakpoints management Note: addresses are 24 bits but arguments are 32 bits. The MSB is used to store extra informations and save speed for comparison. Searching does not take into account the MSB (24 bits). */ #include #include #include #include #include "intl.h" #include "ti68k_int.h" #include "ti68k_err.h" #include "dbg_bkpts.h" #include "handles.h" /* Add */ int ti68k_bkpt_add_address(uint32_t address) { bkpts.code = g_list_append(bkpts.code, GINT_TO_POINTER(address)); return g_list_length(bkpts.code) - 1; } int ti68k_bkpt_add_access(uint32_t address, int mode) { if((mode & BK_READ) && (mode & BK_BYTE)) bkpts.mem_rb = g_list_append(bkpts.mem_rb, GINT_TO_POINTER(address)); else if((mode & BK_READ) && (mode & BK_WORD)) bkpts.mem_rw = g_list_append(bkpts.mem_rw, GINT_TO_POINTER(address)); else if((mode & BK_READ) && (mode & BK_LONG)) bkpts.mem_rl = g_list_append(bkpts.mem_rl, GINT_TO_POINTER(address)); if((mode & BK_WRITE) && (mode & BK_BYTE)) bkpts.mem_wb = g_list_append(bkpts.mem_wb, GINT_TO_POINTER(address)); else if((mode & BK_WRITE) && (mode & BK_WORD)) bkpts.mem_ww = g_list_append(bkpts.mem_ww, GINT_TO_POINTER(address)); else if((mode & BK_WRITE) && (mode & BK_LONG)) bkpts.mem_wl = g_list_append(bkpts.mem_wl, GINT_TO_POINTER(address)); return -1; } int ti68k_bkpt_add_range(uint32_t addressMin, uint32_t addressMax, int mode) { if(mode & BK_READ) { ADDR_RANGE *s = g_malloc(sizeof(ADDR_RANGE)); s->val1 = addressMin; s->val2 = addressMax; bkpts.mem_rng_r = g_list_append(bkpts.mem_rng_r, s); //return g_list_length(bkpts.mem_rng_r) - 1; } if(mode & BK_WRITE) { ADDR_RANGE *s = g_malloc(sizeof(ADDR_RANGE)); s->val1 = addressMin; s->val2 = addressMax; bkpts.mem_rng_w = g_list_append(bkpts.mem_rng_w, s); //return g_list_length(bkpts.mem_rng_w) - 1; } return g_list_length(bkpts.mem_rng_r) - 1; } int ti68k_bkpt_add_exception(uint32_t number) { bkpts.exception = g_list_append(bkpts.exception, GINT_TO_POINTER(number)); return g_list_length(bkpts.exception)-1; } static int ti68k_bkpt_add_pgmentry_offset(uint16_t handle, uint16_t offset) { bkpts.pgmentry = g_list_append(bkpts.pgmentry, GINT_TO_POINTER(((uint32_t)handle << 16) + (uint32_t)offset)); return g_list_length(bkpts.pgmentry)-1; } static uint16_t compute_pgmentry_offset(uint16_t handle) { uint32_t ptr = heap_deref(handle); uint16_t fsize = mem_rd_word(ptr); unsigned char tag = mem_rd_byte(ptr + fsize + 1); switch (tag) { case 0xF3: /* ASM_TAG: nostub or kernel program */ if (mem_rd_long(ptr+6) == 0x36386B50) /* kernel program */ return mem_rd_word(ptr+14) + 2; /* offset to _main */ else /* nostub program (or kernel library, but it makes no sense to put a program entry breakpoint on a library) */ return 2; case 0xDC: /* FUNC_TAG: Fargo or TI-BASIC program */ if (mem_rd_word(ptr+2) == 0x0032 && mem_rd_long(ptr+4) == 0x45584520 && mem_rd_long(ptr+8) == 0x4150504C) /* Fargo II program */ { uint16_t export_table_offset = mem_rd_word(ptr+20); return mem_rd_word(ptr+export_table_offset+2); /* offset to _main */ } else if (mem_rd_long(ptr+2) == 0x00503130) /* Fargo I program */ return mem_rd_word(ptr+16) + 2; /* offset to _main */ else /* Fargo library or TI-BASIC, it makes no sense to put a program entry breakpoint here... */ return 2; default: /* unknown file, we should give some kind of error here... */ return 2; } } int ti68k_bkpt_add_pgmentry(uint16_t handle) { return ti68k_bkpt_add_pgmentry_offset(handle, compute_pgmentry_offset(handle)); } int ti68k_bkpt_add_bits(uint32_t address, uint8_t checks, uint8_t states) { ADDR_BIT *s = g_malloc(sizeof(ADDR_BIT)); s->addr = address; s->checks = checks; s->states = states; bkpts.bits = g_list_append(bkpts.bits, s); return g_list_length(bkpts.bits) - 1; } /* Delete */ static gint compare_func(gconstpointer a, gconstpointer b) { ADDR_RANGE *sa = (ADDR_RANGE *)a; ADDR_RANGE *sb = (ADDR_RANGE *)b; return !((BKPT_ADDR(sa->val1) == BKPT_ADDR(sb->val1)) && (BKPT_ADDR(sa->val2) == BKPT_ADDR(sb->val2))); } static gint compare_func2(gconstpointer a, gconstpointer b) { uint32_t aa = GPOINTER_TO_INT(a); uint32_t bb = GPOINTER_TO_INT(b); return !(BKPT_ADDR(aa) == BKPT_ADDR(bb)); } static gint compare_func3(gconstpointer a, gconstpointer b) { uint32_t aa = GPOINTER_TO_INT(a); uint32_t bb = GPOINTER_TO_INT(b); return !(BKPT_ADDR(aa)>>16 == BKPT_ADDR(bb)>>16); } static gint compare_func4(gconstpointer a, gconstpointer b) { ADDR_BIT *sa = (ADDR_BIT *)a; ADDR_BIT *sb = (ADDR_BIT *)b; return !(BKPT_ADDR(sa->addr) == BKPT_ADDR(sb->addr)); } int ti68k_bkpt_del_address(uint32_t address) { GList *elt = g_list_find_custom(bkpts.code, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) bkpts.code = g_list_delete_link(bkpts.code, elt); else return -1; return 0; } int ti68k_bkpt_del_access(uint32_t address, int mode) { if((mode & BK_READ) && (mode & BK_BYTE)) { GList *elt = g_list_find_custom(bkpts.mem_rb, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) bkpts.mem_rb = g_list_delete_link(bkpts.mem_rb, elt); else return -1; } if((mode & BK_READ) && (mode & BK_WORD)) { GList *elt = g_list_find_custom(bkpts.mem_rw, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) bkpts.mem_rw = g_list_delete_link(bkpts.mem_rw, elt); else return -1; } if((mode & BK_READ) && (mode & BK_LONG)) { GList *elt = g_list_find_custom(bkpts.mem_rl, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) bkpts.mem_rl = g_list_delete_link(bkpts.mem_rl, elt); else return -1; } if((mode & BK_WRITE) && (mode & BK_BYTE)) { GList *elt = g_list_find_custom(bkpts.mem_wb, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) bkpts.mem_wb = g_list_delete_link(bkpts.mem_wb, elt); else return -1; } if((mode & BK_WRITE) && (mode & BK_WORD)) { GList *elt = g_list_find_custom(bkpts.mem_ww, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) bkpts.mem_ww = g_list_delete_link(bkpts.mem_ww, elt); else return -1; } if((mode & BK_WRITE) && (mode & BK_LONG)) { GList *elt = g_list_find_custom(bkpts.mem_wl, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) bkpts.mem_wl = g_list_delete_link(bkpts.mem_wl, elt); else return -1; } return 0; } int ti68k_bkpt_del_range(uint32_t min, uint32_t max, int mode) { ADDR_RANGE s; GList *elt = NULL; s.val1 = min; s.val2 = max; if (mode & BK_READ) { elt = g_list_find_custom(bkpts.mem_rng_r, &s, compare_func); if(elt != NULL) bkpts.mem_rng_r = g_list_delete_link(bkpts.mem_rng_r, elt); else return -1; } if (mode & BK_WRITE) { elt = g_list_find_custom(bkpts.mem_rng_w, &s, compare_func); if(elt != NULL) bkpts.mem_rng_w = g_list_delete_link(bkpts.mem_rng_w, elt); else return -1; } return 0; } int ti68k_bkpt_del_exception(uint32_t number) { GList *elt = g_list_find_custom(bkpts.exception, GINT_TO_POINTER(number), compare_func2); if(elt != NULL) bkpts.exception = g_list_delete_link(bkpts.exception, elt); else return -1; return 0; } int ti68k_bkpt_del_pgmentry(uint16_t handle) { GList *elt = g_list_find_custom(bkpts.pgmentry, GINT_TO_POINTER((uint32_t)handle << 16), compare_func3); if(elt != NULL) bkpts.pgmentry = g_list_delete_link(bkpts.pgmentry, elt); else return -1; return 0; } int ti68k_bkpt_del_bits(uint32_t address) { ADDR_BIT s; GList *elt = NULL; s.addr = address; elt = g_list_find_custom(bkpts.bits, &s, compare_func4); if(elt != NULL) bkpts.bits = g_list_delete_link(bkpts.bits, elt); else return -1; return 0; } /* Set */ int ti68k_bkpt_set_address(uint32_t address, uint32_t new_address) { GList *elt = g_list_find_custom(bkpts.code, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) elt->data = GINT_TO_POINTER(new_address); else return -1; return 0; } int ti68k_bkpt_set_access(uint32_t address, int mode, uint32_t new_address) { if((mode & BK_READ) && (mode & BK_BYTE)) { GList *elt = g_list_find_custom(bkpts.mem_rb, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) elt->data = GINT_TO_POINTER(new_address); else return -1; } else if((mode & BK_READ) && (mode & BK_WORD)) { GList *elt = g_list_find_custom(bkpts.mem_rw, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) elt->data = GINT_TO_POINTER(new_address); else return -1; } else if((mode & BK_READ) && (mode & BK_LONG)) { GList *elt = g_list_find_custom(bkpts.mem_rl, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) elt->data = GINT_TO_POINTER(new_address); else return -1; } if((mode & BK_WRITE) && (mode & BK_BYTE)) { GList *elt = g_list_find_custom(bkpts.mem_wb, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) elt->data = GINT_TO_POINTER(new_address); else return -1; } else if((mode & BK_WRITE) && (mode & BK_WORD)) { GList *elt = g_list_find_custom(bkpts.mem_ww, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) elt->data = GINT_TO_POINTER(new_address); else return -1; } else if((mode & BK_WRITE) && (mode & BK_LONG)) { GList *elt = g_list_find_custom(bkpts.mem_wl, GINT_TO_POINTER(address), compare_func2); if(elt != NULL) elt->data = GINT_TO_POINTER(new_address); else return -1; } return 0; } int ti68k_bkpt_set_range(uint32_t min, uint32_t max, int mode, uint32_t new_min, uint32_t new_max) { ADDR_RANGE s, *p; GList *elt = NULL; s.val1 = min; s.val2 = max; if (mode & BK_READ) { elt = g_list_find_custom(bkpts.mem_rng_r, &s, compare_func); if(elt == NULL) return -1; p = elt->data; p->val1 = new_min; p->val2 = new_max; } if (mode & BK_WRITE) { elt = g_list_find_custom(bkpts.mem_rng_w, &s, compare_func); if(elt == NULL) return -1; p = elt->data; p->val1 = new_min; p->val2 = new_max; } return 0; } int ti68k_bkpt_set_exception(uint32_t number, uint32_t new_n) { GList *elt = g_list_find_custom(bkpts.exception, GINT_TO_POINTER(number), compare_func2); if(elt != NULL) elt->data = GINT_TO_POINTER(new_n); else return -1; return 0; } int ti68k_bkpt_set_pgmentry(uint16_t handle, uint16_t new_h) { GList *elt = g_list_find_custom(bkpts.pgmentry, GINT_TO_POINTER((uint32_t)handle << 16), compare_func2); if(elt != NULL) elt->data = GINT_TO_POINTER(((uint32_t)new_h << 16) + (uint32_t)compute_pgmentry_offset(new_h)); else return -1; return 0; } int ti68k_bkpt_set_bits(uint32_t old_address, uint32_t address) { ADDR_BIT s, *p; GList *elt = NULL; s.addr = old_address; elt = g_list_find_custom(bkpts.bits, &s, compare_func4); if(elt == NULL) return -1; p = elt->data; p->addr = address; return 0; } /* Get */ int ti68k_bkpt_get_address(unsigned int id, uint32_t *address) { if((id+1) > g_list_length(bkpts.code)) return -1; *address = GPOINTER_TO_INT(g_list_nth(bkpts.code, id)->data); return 0; } int ti68k_bkpt_get_access(unsigned int id, uint32_t *address, int mode) { if((mode & BK_READ) && (mode & BK_BYTE)) { if((id+1) > g_list_length(bkpts.mem_rb)) return -1; *address = GPOINTER_TO_INT(g_list_nth(bkpts.mem_rb, id)->data); } else if((mode & BK_READ) && (mode & BK_WORD)) { if((id+1) > g_list_length(bkpts.mem_rw)) return -1; *address = GPOINTER_TO_INT(g_list_nth(bkpts.mem_rw, id)->data); } else if((mode & BK_READ) && (mode & BK_LONG)) { if((id+1) > g_list_length(bkpts.mem_rl)) return -1; *address = GPOINTER_TO_INT(g_list_nth(bkpts.mem_rl, id)->data); } if((mode & BK_WRITE) && (mode & BK_BYTE)) { if((id+1) > g_list_length(bkpts.mem_wb)) return -1; *address = GPOINTER_TO_INT(g_list_nth(bkpts.mem_wb, id)->data); } else if((mode & BK_WRITE) && (mode & BK_WORD)) { if((id+1) > g_list_length(bkpts.mem_wl)) return -1; *address = GPOINTER_TO_INT(g_list_nth(bkpts.mem_ww, id)->data); } else if((mode & BK_WRITE) && (mode & BK_LONG)) { if((id+1) > g_list_length(bkpts.mem_wl)) return -1; *address = GPOINTER_TO_INT(g_list_nth(bkpts.mem_wl, id)->data); } return 0; } int ti68k_bkpt_get_range(unsigned int id, uint32_t *min, uint32_t *max, int mode) { if(mode & BK_READ) { ADDR_RANGE *s; if((id+1) > g_list_length(bkpts.mem_rng_r)) return -1; s = g_list_nth(bkpts.mem_rng_r, id)->data; *min = s->val1; *max = s->val2; } if(mode & BK_WRITE) { ADDR_RANGE *s; if((id+1) > g_list_length(bkpts.mem_rng_w)) return -1; s = g_list_nth(bkpts.mem_rng_w, id)->data; *min = s->val1; *max = s->val2; } return 0; } int ti68k_bkpt_get_exception(unsigned int id, uint32_t *number) { if((id+1) > g_list_length(bkpts.exception)) return -1; *number = GPOINTER_TO_INT(g_list_nth(bkpts.exception, id)->data); return 0; } int ti68k_bkpt_get_pgmentry(unsigned int id, uint16_t *handle) { if((id+1) > g_list_length(bkpts.pgmentry)) return -1; *handle = GPOINTER_TO_INT(g_list_nth(bkpts.pgmentry, id)->data) >> 16; return 0; } int ti68k_bkpt_get_pgmentry_offset(unsigned int id, uint16_t *handle, uint16_t *offset) { uint32_t data; if((id+1) > g_list_length(bkpts.pgmentry)) return -1; data = GPOINTER_TO_INT(g_list_nth(bkpts.pgmentry, id)->data); *handle = (uint16_t)(data >> 16); *offset = (uint16_t)(data & 0xffff); return 0; } int ti68k_bkpt_get_bits(unsigned int id, uint32_t *address, uint8_t *checks, uint8_t *states) { ADDR_BIT *s; if((id+1) > g_list_length(bkpts.bits)) return -1; s = g_list_nth(bkpts.bits, id)->data; *address = s->addr; *checks = s->checks; *states = s->states; return 0; } /* Clear */ void ti68k_bkpt_clear_address(void) { g_list_free(bkpts.code); bkpts.code = NULL; } void ti68k_bkpt_clear_access(void) { g_list_free(bkpts.mem_rb); bkpts.mem_rb = NULL; g_list_free(bkpts.mem_rw); bkpts.mem_rw = NULL; g_list_free(bkpts.mem_rl); bkpts.mem_rl = NULL; g_list_free(bkpts.mem_wb); bkpts.mem_wb = NULL; g_list_free(bkpts.mem_ww); bkpts.mem_ww = NULL; g_list_free(bkpts.mem_wl); bkpts.mem_wl = NULL; } void ti68k_bkpt_clear_range(void) { GList *l; l = bkpts.mem_rng_r; while(l != NULL) { g_free(l->data); l = g_list_next(l); } g_list_free(bkpts.mem_rng_r); bkpts.mem_rng_r = NULL; l = bkpts.mem_rng_w; while(l != NULL) { g_free(l->data); l = g_list_next(l); } g_list_free(bkpts.mem_rng_w); bkpts.mem_rng_w = NULL; } void ti68k_bkpt_clear_exception(void) { g_list_free(bkpts.exception); bkpts.exception = NULL; } void ti68k_bkpt_clear_pgmentry(void) { g_list_free(bkpts.pgmentry); bkpts.pgmentry = NULL; } void ti68k_bkpt_clear_bits(void) { GList *l; for(l = bkpts.bits; l; l = g_list_next(l)) g_free(l->data); g_list_free(bkpts.bits); bkpts.bits = NULL; } /* Others */ void ti68k_bkpt_set_cause(int type, int mode, int id) { bkpts.type = type; bkpts.mode = mode; bkpts.id = id; } void ti68k_bkpt_get_cause(int *type, int *mode, int *id) { *type = bkpts.type; *mode = bkpts.mode; *id = bkpts.id; } void ti68k_bkpt_clear_all(void) { ti68k_bkpt_clear_address(); ti68k_bkpt_clear_access(); ti68k_bkpt_clear_range(); ti68k_bkpt_clear_exception(); ti68k_bkpt_clear_pgmentry(); ti68k_bkpt_clear_bits(); ti68k_bkpt_set_cause(0, 0, 0); } enum target_hw_bp_type { hw_write = 0, /* Common (write) HW watchpoint */ hw_read = 1, /* Read HW watchpoint */ hw_access = 2, /* Access (read or write) HW watchpoint */ }; /* Wrappers for GDB use */ int ti68k_bkpt_add_watchpoint(uint32_t address, uint32_t len, int type) { switch (type) { case hw_write: ti68k_bkpt_add_range(address, address + len - 1, BK_WRITE); dbgbkpts_refresh_window(); return 0; case hw_read: ti68k_bkpt_add_range(address, address + len - 1, BK_READ); dbgbkpts_refresh_window(); return 0; case hw_access: ti68k_bkpt_add_range(address, address + len - 1, BK_READ | BK_WRITE); dbgbkpts_refresh_window(); return 0; default: dbgbkpts_refresh_window(); return 1; } } int ti68k_bkpt_del_watchpoint(uint32_t address, uint32_t len, int type) { switch (type) { case hw_write: ti68k_bkpt_del_range(address, address + len - 1, BK_WRITE); dbgbkpts_refresh_window(); return 0; case hw_read: ti68k_bkpt_del_range(address, address + len - 1, BK_READ); dbgbkpts_refresh_window(); return 0; case hw_access: ti68k_bkpt_del_range(address, address + len - 1, BK_READ | BK_WRITE); dbgbkpts_refresh_window(); return 0; default: return 1; } } int ti68k_bkpt_stopped_by_watchpoint(void) { return (bkpts.type == BK_TYPE_ACCESS) || (bkpts.type == BK_TYPE_RANGE); } int ti68k_bkpt_stopped_data_address(uint32_t *address) { uint32_t max; switch(bkpts.type) { case BK_TYPE_ACCESS: ti68k_bkpt_get_access(bkpts.id, address, bkpts.mode); return 1; case BK_TYPE_RANGE: ti68k_bkpt_get_range(bkpts.id, address, &max, bkpts.mode); return 1; default: return 0; } } tiemu-3.03-nogdb+dfsg/src/core/dbg/bkpts.h000066400000000000000000000124131220314353500203360ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: bkpts.h 2689 2007-11-30 03:58:24Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * Copyright (c) 2007, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Breakpoint definitions */ #ifndef __TI68K_BKPTS__ #define __TI68K_BKPTS__ #include /* Macros: addresses are 24-bits. We use the MSB to encode bkpt state (enabled/disabled or temporary). This is more efficient than complex structures. */ #define BKPT_MASK 0xc0000000 #define BKPT_ADDR(addr) ((addr) & ~BKPT_MASK) #define BKPT_INFO(addr) ((addr) & BKPT_MASK) #define BKPT_ENABLE_BIT 31 #define BKPT_TMP_BIT 30 #define BKPT_ENABLE_MASK (1 << BKPT_ENABLE_BIT) #define BKPT_ENABLE(addr) ((addr) &= ~BKPT_ENABLE_MASK) #define BKPT_DISABLE(addr) ((addr) |= BKPT_ENABLE_MASK) #define BKPT_IS_ENABLED(addr) (!((addr) & BKPT_ENABLE_MASK)) #define BKPT_TMP_MASK (1 << BKPT_TMP_BIT) #define BKPT_NOTMP(addr) ((addr) &= ~BKPT_TMP_MASK) #define BKPT_TMP(addr) ((addr) |= BKPT_TMPSK) #define BKPT_IS_TMP(addr) (((addr) & BKPT_TMP_MASK)) /* Types */ typedef struct { uint32_t val1; uint32_t val2; } ADDR_RANGE; typedef struct { uint32_t addr; uint8_t checks; uint8_t states; } ADDR_BIT; /* Constants */ // Breakpoints mode (ti68k_bkpt_set_[access|access_range]) #define BK_BYTE 1 #define BK_WORD 2 #define BK_LONG 4 #define BK_READ 16 #define BK_WRITE 32 #define BK_RW (BK_READ | BK_WRITE) #define BK_READ_BYTE (BK_READ | BK_BYTE) #define BK_READ_WORD (BK_READ | BK_WORD) #define BK_READ_LONG (BK_READ | BK_LONG) #define BK_WRITE_BYTE (BK_WRITE | BK_BYTE) #define BK_WRITE_WORD (BK_WRITE | BK_WORD) #define BK_WRITE_LONG (BK_WRITE | BK_LONG) #define BK_RW_BYTE (BK_READ_BYTE | BK_WRITE_BYTE) #define BK_RW_WORD (BK_READ_WORD | BK_WRITE_WORD) #define BK_RW_LONG (BK_READ_LONG | BK_WRITE_LONG) // Breakpoints type typedef enum { BK_TYPE_ACCESS=1, BK_TYPE_RANGE, BK_TYPE_CODE, BK_TYPE_EXCEPTION, BK_TYPE_PGMENTRY, BK_TYPE_PROTECT, BK_TYPE_BIT, } Ti68kBkptType; // Breakpoints cause (ti68k_bkpt_get_cause()) typedef enum { BK_CAUSE_ACCESS=1, BK_CAUSE_RANGE, BK_CAUSE_ADDRESS, BK_CAUSE_EXCEPTION, BK_CAUSE_PGMENTRY, BK_CAUSE_PROTECT, BK_CAUSE_BIT, } Ti68kBkptCause; #define DBG_BREAK 1 // user breakpoint #define DBG_TRACE 2 // trace (T) #define DBG_HWPV 3 // hardware protection violation /* Functions */ int ti68k_bkpt_add_address(uint32_t address); int ti68k_bkpt_add_access(uint32_t address, int mode); int ti68k_bkpt_add_range(uint32_t min, uint32_t max, int mode); int ti68k_bkpt_add_exception(uint32_t n); int ti68k_bkpt_add_pgmentry(uint16_t handle); int ti68k_bkpt_add_bits(uint32_t address, uint8_t checks, uint8_t states); int ti68k_bkpt_del_address(uint32_t address); int ti68k_bkpt_del_access(uint32_t address, int mode); int ti68k_bkpt_del_range(uint32_t min, uint32_t max, int mode); int ti68k_bkpt_del_exception(uint32_t n); int ti68k_bkpt_del_pgmentry(uint16_t handle); int ti68k_bkpt_del_bits(uint32_t address); int ti68k_bkpt_set_address(uint32_t address, uint32_t new_address); int ti68k_bkpt_set_access(uint32_t address, int mode, uint32_t new_address); int ti68k_bkpt_set_range(uint32_t min, uint32_t max, int mode, uint32_t new_min, uint32_t new_max); int ti68k_bkpt_set_exception(uint32_t n, uint32_t new_n); int ti68k_bkpt_set_pgmentry(uint16_t handle, uint16_t new_handle); int ti68k_bkpt_set_bits(uint32_t old_address, uint32_t address); int ti68k_bkpt_set_bits_ex(uint32_t old_address, uint32_t address, uint8_t checks, uint8_t states); int ti68k_bkpt_get_address(unsigned int idx, uint32_t *address); int ti68k_bkpt_get_access(unsigned int idx, uint32_t *address, int mode); int ti68k_bkpt_get_range(unsigned int idx, uint32_t *min, uint32_t *max, int mode); int ti68k_bkpt_get_exception(unsigned int idx, uint32_t *n); int ti68k_bkpt_get_pgmentry(unsigned int idx, uint16_t *handle); int ti68k_bkpt_get_pgmentry_offset(unsigned int idx, uint16_t *handle, uint16_t *offset); int ti68k_bkpt_get_bits(unsigned int idx, uint32_t *address, uint8_t *checks, uint8_t *states); void ti68k_bkpt_clear_address(void); void ti68k_bkpt_clear_access(void); void ti68k_bkpt_clear_range(void); void ti68k_bkpt_clear_exception(void); void ti68k_bkpt_clear_pgmentry(void); void ti68k_bkpt_clear_bits(void); void ti68k_bkpt_set_cause(int type, int mode, int id); void ti68k_bkpt_get_cause(int *type, int *id, int *mode); #endif tiemu-3.03-nogdb+dfsg/src/core/dbg/debug.c000066400000000000000000000134141220314353500202760ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: debug.c 2792 2008-05-26 16:48:30Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Debug: debugging functions */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "libuae.h" #include "m68k.h" #include "romcalls.h" #include "debug.h" #include "ti68k_def.h" #include "ti68k_err.h" /* Flushes GDB's register cache */ extern void registers_changed(void); /* Flushes GDB's frame cache */ extern void reinit_frame_cache(void); /* Refreshes Insight */ extern void gdbtk_update(void); int ti68k_debug_get_pc(void) { return m68k_getpc(); } int ti68k_debug_get_old_pc(void) { return logger.pclog_buf[(logger.pclog_ptr + logger.pclog_size-1) % logger.pclog_size]; } int ti68k_debug_break(void) { regs.spcflags |= SPCFLAG_BRK; return 0; } int ti68k_debug_trace(void) { // Set up an internal trap (DBTRACE) which will // launch/refresh the debugger when encountered regs.spcflags |= SPCFLAG_DBTRACE; return 0; } int ti68k_debug_step(void) { regs.spcflags |= SPCFLAG_DBSKIP; return ti68k_debug_do_instructions(1); } static const uint16_t rets[] = { 0x4e77, // RTR 0x4e75, // RTS 0x4e74, // RTD 0x4e73, // RTE 0x4e72, // STOP }; static inline int is_ret_inst(uint16_t inst) { int i; for(i = 0; i < sizeof(rets) / sizeof(uint16_t); i++) if(curriword() == rets[i]) return !0; return 0; } static inline int is_bsr_inst(uint16_t ci) { int t1, t2, t3, t4, t5; t1 = ((ci >> 6) == (0x4e80 >> 6)); /* jsr */ t2 = ((ci >> 8) == (0x61ff >> 8)); /* bsr */ t3 = (ci >= 0xf800 && ci <= 0xffee); /* fline */ t4 = (ci == 0xfff0) || (ci == 0xfff2) || ((ci & 0xf000) == 0x5000) && ((ci & 0x00f8) == 0x00c8); /* dbcc */ t5 = ((ci >> 4) == (0x4e40 >> 4)); /* trap */ //printf("<%i %i %i %i %i>\n", ret1, ret2, ret3, ret4, ret5); return t1 || t2 || t3 || t4 || t5; } int ti68k_step_over_noflush(void) { uint32_t curr_pc, next_pc; gchar *output; // get current PC and next PC curr_pc = m68k_getpc(); next_pc = curr_pc + ti68k_debug_disassemble(curr_pc, &output); //printf("$%06x => $%06x %04x <%s>\n", curr_pc, next_pc, curriword(), output); g_free(output); // check current instruction if(!is_bsr_inst((uint16_t)curriword())) { ti68k_debug_step(); return 0; } // run emulation until address after instruction is reached hw_m68k_run(1, 0); // FIXME: While _bcd_math also exists on the TI-92, we can't easily find it. // romcalls_get_symbol_address definitely won't work on the TI-92. if(tihw.calc_type != TI92) { uint32_t bcd_math_pc; // _bcd_math returns to pc + 2 rather than pc // This works only for jsr calls. F-Line calls are handled in the disassembler. romcalls_get_symbol_address(0xb5, &bcd_math_pc); if (m68k_getpc() == bcd_math_pc) next_pc += 2; } while ((next_pc != m68k_getpc()) && !(regs.spcflags & SPCFLAG_BRK)) { hw_m68k_run(1, 0); // force GUI refresh in order to be able to cancel operation while(gtk_events_pending()) gtk_main_iteration_do(FALSE); } if(regs.spcflags & SPCFLAG_BRK) regs.spcflags &= ~SPCFLAG_BRK; return 0; } int ti68k_debug_step_over(void) { int result = ti68k_step_over_noflush(); #ifndef NO_GDB registers_changed(); reinit_frame_cache(); gdbtk_update(); #endif return result; } int ti68k_debug_step_out(void) { uint32_t curr_pc, next_pc; gchar *output; //int i; // get current PC and next PC curr_pc = m68k_getpc(); next_pc = curr_pc + ti68k_debug_disassemble(curr_pc, &output); //printf("$%06x => $%06x <%s>\n", curr_pc, next_pc, output); g_free(output); // run emulation until address is reached do { hw_m68k_run(1, 0); //printf("$%06x: %06x\n", m68k_getpc(), curriword()); if(is_ret_inst((uint16_t)curriword())) { hw_m68k_run(1, 0); #ifndef NO_GDB registers_changed(); reinit_frame_cache(); gdbtk_update(); #endif return 0; } } while(1); return 0; } int ti68k_debug_skip(uint32_t next_pc) { // run emulation until address is reached do { ti68k_debug_step(); /* // too far: stop if(m68k_getpc() > next_pc) break; // jump back: stop if(next_pc - m68k_getpc() > 0x80) break; */ // force GUI refresh in order to be able to cancel operation while(gtk_events_pending()) gtk_main_iteration_do(FALSE); } while ((next_pc != m68k_getpc()) && !(regs.spcflags & SPCFLAG_BRK)); if(regs.spcflags & SPCFLAG_BRK) regs.spcflags &= ~SPCFLAG_BRK; return 0; } int ti68k_debug_do_instructions(int n) { int result = hw_m68k_run(n, 0); #ifndef NO_GDB registers_changed(); reinit_frame_cache(); gdbtk_update(); #endif return result; } // Used to read/modify/write memory directly from debugger uint8_t* ti68k_get_real_address(uint32_t addr) { return hw_get_real_address(addr); } int ti68k_debug_is_supervisor(void) { return regs.s; } tiemu-3.03-nogdb+dfsg/src/core/dbg/debug.h000066400000000000000000000027671220314353500203140ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: debug.h 2603 2007-07-14 17:09:56Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_DBG__ #define __TI68K_DBG__ int ti68k_debug_get_pc(void); int ti68k_debug_get_old_pc(void); uint32_t ti68k_debug_disassemble(uint32_t addr, char **line); int ti68k_debug_break(void); int ti68k_debug_trace(void); int ti68k_debug_step(void); int ti68k_debug_step_over(void); int ti68k_debug_step_out(void); int ti68k_debug_skip(uint32_t next_pc); int ti68k_debug_do_instructions(int n); int ti68k_debug_is_supervisor(void); #endif tiemu-3.03-nogdb+dfsg/src/core/dbg/disasm.c000066400000000000000000000235441220314353500204750ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: disasm.c 2841 2009-05-15 15:26:47Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "ti68k_int.h" /* ti68k_debug_disassemble is a wrapper around the GDB or UAE disassembler, so we can use the GDB disassembler in GDB-enabled builds and the UAE one in non-GDB builds. The abstraction also allows plugging in any other disassembler instead at any moment. */ #ifndef NO_GDB /* GDB enabled: use the GDB disassembler */ #include "../../gdb/include/dis-asm.h" struct gdbarch; struct ui_file; struct disassemble_info gdb_disassemble_info (struct gdbarch *gdbarch, struct ui_file *file); int print_insn_m68k (bfd_vma memaddr, disassemble_info *info); uint32_t ti68k_debug_disassemble(uint32_t addr, char **line) { static struct disassemble_info di; static char *output = NULL; uint32_t offset; gchar **split; gchar *p; if (!output) { di = gdb_disassemble_info (NULL, NULL); output = di.stream; } *output = 0; offset = print_insn_m68k(addr, &di); split = g_strsplit(output, " ", 2); if(split[1]) for(p = split[1]; *p == ' '; p++); else p = ""; *line = g_strdup_printf("%06x: %s %s", addr, split[0] ? split[0] : "", p); g_strfreev(split); return offset; } #else extern int m68k_disasm (char *output, uint32_t addr); static const char* instr[] = { "ORSR", /* ORI #,SR */ "ANDSR", /* ANDI #,SR */ "EORSR", /* EORI #,SR */ "MVSR2", /* MOVE SR, */ "MV2SR", /* MOVE ,SR */ "MVR2USP.L", /* MOVE An,USP */ "MVUSP2R.L", /* MOVE USP,An */ "MVMLE", /* MOVEM , */ "MVMEL", /* MOVEM , */ "MVPMR", /* MOVEP ,<(d16,Ay)>*/ "MVPRM", /* MOVEP , */ "TRAP.L", /* TRAP # */ "RESET.L", "NOP.L", "STOP.L", "RTE.L", "RTS.L", "JMP.L", "LEA.L", "BTST", /* do nothing */ "BT", /* BRA */ NULL }; static int match_opcode(const char *opcode) { int i; if(opcode == NULL) return -1; for(i = 0; instr[i] != NULL; i++) { if(!strncmp(opcode, (char *)instr[i], strlen(instr[i]))) return i; } return -1; } // testing patterns: 0x55, 0xAA, 0x02, 0xF5, 0x5F, 0xFA, 0xAF static gchar* create_reg_list(uint8_t value, char name) { gchar *str = g_strdup(""); gchar *str2; int i; int pre_bit = 0; int cur_bit; int start = -1; int end = -1; for(i = 0; i < 8; i++, value >>= 1) { cur_bit = value & 1; if(pre_bit == 0 && cur_bit == 1) start = i; if(pre_bit == 1 && cur_bit == 0) end = i-1; if(start == end && start != -1) { str2 = g_strdup_printf("%s%c%i/", str, name, i-1); g_free(str); str = str2; end = start = -1; } else if(end > start) { str2 = g_strdup_printf("%s%c%i-%c%i/", str, name, start, name, end); g_free(str); str = str2; end = start = -1; } pre_bit = cur_bit; } if((end=i-1) > (start+1) && start != -1) { str2 = g_strdup_printf("%s%c%i-%i", str, name, start, end); g_free(str); str = str2; } else if(start > 0 && end > 0) { str2 = g_strdup_printf("%s%c%i", str, name, start); g_free(str); str = str2; } else str[strlen(str) - 1] = '\0'; return str; } static gchar* create_rev_reg_list(uint8_t value, char name) { gchar *str = g_strdup(""); gchar *str2; int i; int pre_bit = 0; int cur_bit; int start = -1; int end = -1; for(i = 0; i < 8; i++, value <<= 1) { cur_bit = (value & (1 << 7)) >> 7; if(pre_bit == 0 && cur_bit == 1) start = i; if(pre_bit == 1 && cur_bit == 0) end = i-1; if(start == end && start != -1) { str2 = g_strdup_printf("%s%c%i/", str, name, i-1); g_free(str); str = str2; end = start = -1; } else if(end > start) { str2 = g_strdup_printf("%s%c%i-%c%i/", str, name, start, name, end); g_free(str); str = str2; end = start = -1; } pre_bit = cur_bit; } if((end=i-1) > (start+1) && start != -1) { str2 = g_strdup_printf("%s%c%i-%i", str, name, start, end); g_free(str); str = str2; } else if(start > 0 && end > 0) { str2 = g_strdup_printf("%s%c%i", str, name, start); g_free(str); str = str2; } else str[strlen(str) - 1] = '\0'; return str; } static gchar* create_reg_lists(uint16_t value) { gchar *a, *d; gchar *str; a = create_reg_list(MSB(value), 'A'); d = create_reg_list(LSB(value), 'D'); return str = g_strconcat(a, "/", d, NULL); } static char* create_rev_reg_lists(uint16_t value) { gchar *a, *d; gchar *str; d = create_rev_reg_list(MSB(value), 'D'); a = create_rev_reg_list(LSB(value), 'A'); return str = g_strconcat(d, "/", a, NULL); } // do the same work as m68k_disasm but some instructions dis-assembled by the // UAE engine use a weird/wrong naming scheme so we remap them here rather than // touching the newcpu.c & table68k files because this file may be updated when // upgrading the UAE engine. int m68k_dasm(char **line, uint32_t addr) { char output[1024]; int offset; gchar** split; int idx; // get UAE disassembly offset = m68k_disasm(output, addr); // split string into address, opcode and operand split = g_strsplit(output, " ", 3); // search for opcode to rewrite idx = match_opcode(split[1]); if(idx != -1) { gchar *tmp; switch(idx) { case 0: /* ORI to SR #,SR */ { char c = split[1][5]; g_free(split[1]); split[1] = g_strdup_printf("ORI.%c", c); tmp = g_strconcat(split[2], ",SR", NULL); g_free(split[2]); split[2] = tmp; } break; case 1: /* ANDI to SR #,SR */ { char c = split[1][6]; g_free(split[1]); split[1] = g_strdup_printf("ANDI.%c", c); tmp = g_strconcat(split[2], ",SR", NULL); g_free(split[2]); split[2] = tmp; } break; case 2: /* EORI to SR #,SR */ { char c = split[1][6]; g_free(split[1]); split[1] = g_strdup_printf("EORI.%c", c); tmp = g_strconcat(split[2], ",SR", NULL); g_free(split[2]); split[2] = tmp; } break; case 3: /* MOVE from SR: SR, */ { char c = split[1][6]; g_free(split[1]); split[1] = g_strdup_printf("MOVE.%c", c); tmp = g_strconcat("SR,", split[2], NULL); g_free(split[2]); split[2] = tmp; } break; case 4: /* MOVE to SR: ,SR */ { char c = split[1][6]; g_free(split[1]); split[1] = g_strdup_printf("MOVE.%c", c); tmp = g_strconcat(split[2], ",SR", NULL); g_free(split[2]); split[2] = tmp; } break; case 5: /* MOVE An,USP */ g_free(split[1]); split[1] = g_strdup("MOVE"); tmp = g_strconcat(split[2], ",USP", NULL); g_free(split[2]); split[2] = tmp; break; case 6: /* MOVE USP,An */ g_free(split[1]); split[1] = g_strdup("MOVE"); tmp = g_strconcat("USP,", split[2], NULL); g_free(split[2]); split[2] = tmp; break; case 7: /* MOVEM , */ { char c = split[1][6]; char *p, *q; gchar *tmp; uint16_t mask; g_free(split[1]); split[1] = g_strdup_printf("MOVEM.%c", c); p = split[2]; q = strchr(split[2], ','); q++; sscanf(p, "#$%" SCNx16, &mask); if(q[0] != '-') tmp = g_strdup_printf("%s,%s", q, create_reg_lists(mask)); else tmp = g_strdup_printf("%s,%s", q, create_rev_reg_lists(mask)); g_free(split[2]); split[2] = tmp; } break; case 8: /* MOVEM , */ { char c = split[1][6]; char *p, *q; gchar *tmp; uint16_t mask; g_free(split[1]); split[1] = g_strdup_printf("MOVEM.%c", c); p = split[2]; q = strchr(split[2], ','); q++; sscanf(p, "#$%" SCNx16, &mask); if(q[0] != '-') tmp = g_strdup_printf("%s,%s", create_reg_lists(mask), q); else tmp = g_strdup_printf("%s,%s", q, create_rev_reg_lists(mask)); g_free(split[2]); split[2] = tmp; } break; case 9: /* MOVEP ,<(d16,Ay)> */ case 10: /* MOVEP <(d16,Ay)>, */ { char c = split[1][6]; g_free(split[1]); split[1] = g_strdup_printf("MOVEP.%c", c); } break; case 11: /* TRAP # */ case 12: /* RESET.L */ case 13: /* NOP.L */ case 14: /* STOP.L */ case 15: /* RTE.L */ case 16: /* RTS.L */ case 17: /* JMP.L */ case 18: /* LEA.L */ { char *p = strchr(split[1], '.'); if(p) *p = '\0'; } break; case 20: /* BRA */ g_free(split[1]); split[1] = g_strdup("BRA"); break; case 19: /* BTST */ default: break; } } // search for [value] and reject it at end of line if(strchr(split[2], '[')) { char *p = strchr(split[2], '['); char *q = strrchr(split[2], ']'); char tmp[256]; p--; q++; strncpy(tmp, p, q - p); tmp[q-p] = '\0'; strcpy(p, q); strcat(split[2], tmp); } *line = g_strdup_printf("%s %s %s", split[0] ? split[0] : "", split[1] ? split[1] : "", split[2] ? split[2] : ""); g_strfreev(split); return offset; } uint32_t ti68k_debug_disassemble(uint32_t addr, char **line) { uint32_t offset; offset = m68k_dasm(line, addr); return offset; } #endif tiemu-3.03-nogdb+dfsg/src/core/dbg/fpudasm.c000066400000000000000000000164021220314353500206470ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: fpudasm.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* A pseudo-FPU disassembler. Many informations comes from the TI's BCD artihmetic package: */ #include #include #include typedef struct { uint16_t code; char* name; } TUPLE; // 6 chars max TUPLE operators[9] = { { 0x0000, "FCMP" }, { 0x1000, "FADD" }, { 0x2000, "FDIV" }, { 0x3000, "FMUL" }, { 0x4000, "FSUB" }, { 0x5000, "FINTRZ" }, { 0x6000, "FMOVE" }, { 0x7000, "FNEG" }, { 0x8000, "FTST" }, }; // 7 chars max TUPLE sizes[6] = { { 0x0000, "BYTE"}, { 0x0200, "WORD"}, { 0x0400, "LONG"}, { 0x0600, "SINGLE"}, { 0x0800, "DOUBLE"}, { 0x0a00, "UNSGNED"}, }; // 11 chars max TUPLE srcs[21] = { { 0x0000, "FP0"}, { 0x0010, "FP1"}, { 0x0020, "FP2"}, { 0x0030, "FP3"}, { 0x0040, "FP4"}, { 0x0050, "FP5"}, { 0x0060, "FP6"}, { 0x0070, "FP7"}, { 0x0080, "D0"}, { 0x0090, "D1"}, { 0x00a0, "D2"}, { 0x00b0, "D3"}, { 0x00c0, "D4"}, { 0x00d0, "D5"}, { 0x00e0, "D6"}, { 0x00f0, "D7"}, { 0x0100, "IMMED_LONG"}, { 0x0110, "IMMED_SHORT"}, { 0x0120, "FRAME_OFF"}, { 0x0130, "EFFECT_ADDR"}, { 0x0140, "IMMED_ZERO"}, }; // 11 chars max TUPLE dsts[11] = { { 0x0000, "R0"}, { 0x0001, "R1"}, { 0x0002, "R2"}, { 0x0003, "R3"}, { 0x0004, "R4"}, { 0x0005, "R5"}, { 0x0006, "R6"}, { 0x0007, "R7"}, { 0x0008, "FRAME_OFF"}, { 0x0009, "EFFECT_ADDR"}, { 0x000a, "RETURN_REG"}, }; #define GET_OPERATOR(x) ((x) & 0xf000) #define GET_SIZE(x) ((x) & 0x0e00) #define GET_SRC(x) ((x) & 0x01f0) #define GET_DST(x) ((x) & 0x000f) /* ; BCD arithmetic package *************************************************************************** * OPERATOR / OPERAND WORD * * * * | 15| 14| 13| 12| 11| 10| 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * * +---------------+-----------+-------------------+---------------+ * * | OPERATOR | SIZE | SRC OPERAND | DEST OPERAND | * * +---------------+-----------+-------------------+---------------+ * * FCMP 0 BYTE 0 FP0 0 R0 (FP or D) 0 * * FADD 1 WORD 1 | | * * FDIV 2 LONG 2 FP7 7 R7 (FP or D) 7 * * FMUL 3 SINGLE 3 D0 8 FRAME_OFF 8 * * FSUB 4 DOUBLE 4 | EFFECT_ADDR 9 * * FINTRZ 5 UNSGNED 5 D7 15 RETURN_REG 10 * * FMOVE 6 IMMED_LONG 16 * * FNEG 7 IMMED_SHORT 17 * * FTST 8 FRAME_OFF 18 * * EFFECT_ADDR 19 * * IMMED_ZERO 20 * *************************************************************************** bcdCmp = 0x0000 bcdAdd = 0x1000 bcdDiv = 0x2000 bcdMul = 0x3000 bcdSub = 0x4000 bcdIntz = 0x5000 bcdMove = 0x6000 bcdNeg = 0x7000 bcdTst = 0x8000 bcdByte = 0x0000 bcdWord = 0x0200 bcdLong = 0x0400 bcdSingle = 0x0600 bcdDouble = 0x0800 bcdUnsigned = 0x0A00 ; Source operand bcdFP0 = 0x0000 bcdFP1 = 0x0010 bcdFP2 = 0x0020 bcdFP3 = 0x0030 bcdFP4 = 0x0040 bcdFP5 = 0x0050 bcdFP6 = 0x0060 bcdFP7 = 0x0070 bcdD0 = 0x0080 bcdD1 = 0x0090 bcdD2 = 0x00A0 bcdD3 = 0x00B0 bcdD4 = 0x00C0 bcdD5 = 0x00D0 bcdD6 = 0x00E0 bcdD7 = 0x00F0 bcdLongImm = 0x0100 bcdShortImm = 0x0110 bcdFrameSrc = 0x0120 bcdAbsSrc = 0x0130 bcdZeroImm = 0x0140 ; Destination operand bcdR0 = 0x0000 bcdR1 = 0x0001 bcdR2 = 0x0002 bcdR3 = 0x0003 bcdR4 = 0x0004 bcdR5 = 0x0005 bcdR6 = 0x0006 bcdR7 = 0x0007 bcdFrameDest = 0x0008 bcdAbsDest = 0x0009 bcdRetReg = 0x000A */ /* Input: FPU opcode in 'code' Output: FPU disassembled in 'buf'. sizeof(buf) >= 6+1+7+1+11+1+11 = 38 */ int DasmFPU(uint16_t code, char *buf) { int operator = GET_OPERATOR(code); int size = GET_SIZE(code); int src = GET_SRC(code); int dst = GET_DST(code); int idx[4] = { 0 }; int i; int j = 0; for(i = 0; i < sizeof(operators) / sizeof(TUPLE); i++) { if(operators[i].code == operator) { idx[j++] = i; break; } } for(i = 0; i < sizeof(sizes) / sizeof(TUPLE); i++) { if(sizes[i].code == size) { idx[j++] = i; break; } } for(i = 0; i < sizeof(srcs) / sizeof(TUPLE); i++) { if(srcs[i].code == src) { idx[j++] = i; break; } } for(i = 0; i < sizeof(dsts) / sizeof(TUPLE); i++) { if(dsts[i].code == dst) { idx[j++] = i; break; } } sprintf(buf, "%s.%s %s,%s", operators[idx[0]].name, sizes[idx[1]].name, srcs[idx[2]].name, dsts[idx[3]].name); return 0; } /* Et sinon, il y a un autre cas particulier bizarre, je ne sais pas s'il vaut le coup de le traîter, mais _bcd_math est un ROM_CALL qui s'appelle comme ça: - n'importe quelle méthode d'appel d'un ROM_CALL (jsr, F-Line etc.) - 2 octets: opcode FPU et le ROM_CALL saute ces 2 octets en retournant, donc retourne à next_pc+2. Si tu veux gérer ça, tu devrais regarder le target du jsr ou F-Line et comparer avec l'adresse de _bcd_math. Précisions: - la "FPU" est purement émulée en logiciel par _bcd_math, et les opcodes ne correspondent à aucune FPU réelle - Pour le F-Line, tu peux comparer l'opcode avec 0xF8B5, mais pour les appels par jsr, tu n'as pas d'autre choix que de tester le target du saut pour savoir si on saute vers _bcd_math ou aillers Il y en a un dans TIGCCLIB: __floatunssibf: link.w %a6,#-36 pea.l 8(%a6) move.l 0xC8,%a0 move.l 0xB5*4(%a0),%a0 // _bcd_math jsr (%a0) .word 0x6B30 // bcdMove | bcdUnsigned | bcdAbsSrc | bcdR0 move.l -10(%a6),%d0 move.l -6(%a6),%d1 move.w -2(%a6),%d2 unlk %a6 rts Le .word 0x6B30 est le code de la pseudo-FPU dont je parle. Et ce n'est pas exécuté par le processeur, _bcd_math rajoute 2 octets à l'adresse de retour. */ tiemu-3.03-nogdb+dfsg/src/core/dbg/gdbcall.c000066400000000000000000000046421220314353500206030ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: gdbcall.c 2211 2006-08-16 20:02:42Z kevinkofler $ */ /* TiEmu - a TI emulator * * This file Copyright (c) 2005, Kevin Kofler * * 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. */ /* Gdbcall: GDB interfacing functions */ #ifndef NO_GDB #include "gdbcall.h" #include #include /* These come from GDB's exceptions.h, which I don't want to include, because it pulls in ui-out.h, which in turn won't compile without many other headers from directories not even in our include path. */ #define RETURN_MASK_ALL -2 typedef int return_mask; typedef void (catch_command_errors_ftype) (char *, int); extern int catch_command_errors (catch_command_errors_ftype *func, char *command, int from_tty, return_mask); struct ui_file; struct cmd_list_element; #include "../gdb/gdb/top.h" /* This is for Insight. */ extern int No_Update; static void gdbcall_exec_command(char *command_str) { No_Update = 0; /* Tell Insight to refresh itself. */ catch_command_errors (execute_command, command_str, 0, RETURN_MASK_ALL); } void gdbcall_run(void) { char command[4]="run"; gdbcall_exec_command(command); } void gdbcall_continue(void) { char command[2]="c"; gdbcall_exec_command(command); } void gdb_add_symbol_file(const char *filename, unsigned address) { char command[(strlen(filename) << 1) + 28], *p=command+17; const char *q=filename; strcpy(command, "add-symbol-file \""); while (*q) { if (*q == '\\' || *q == '\'' || *q == '\"') *(p++)='\\'; *(p++)=*(q++); } sprintf(p, "\" %u", address); gdbcall_exec_command(command); } void gdb_hbreak(const char *funcname) { char command[strlen(funcname) + 8]; sprintf(command, "hbreak %s", funcname); gdbcall_exec_command(command); } #endif tiemu-3.03-nogdb+dfsg/src/core/dbg/gdbcall.h000066400000000000000000000021301220314353500205760ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: gdbcall.h 2155 2006-07-20 19:53:06Z kevinkofler $ */ /* TiEmu - a TI emulator * * This file Copyright (c) 2005-2006, Kevin Kofler * * 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. */ /* Gdbcall: GDB interfacing functions */ void gdbcall_run(void); void gdbcall_continue(void); void gdb_add_symbol_file(const char *filename, unsigned address); void gdb_hbreak(const char *funcname); tiemu-3.03-nogdb+dfsg/src/core/engine.c000066400000000000000000000073321220314353500177230ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: engine.c 2686 2007-11-30 01:24:44Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Run engine from GTK main loop at regular interval. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "intl.h" #include "ti68k_def.h" #include "ti68k_int.h" #include "m68k.h" #include "engine.h" #include "dbg_all.h" #include "logging.h" #include "tsource.h" void sim_exception(int which); #ifndef SIGTRAP /* WARNING: This MUST match the definitions in GDB and sim. */ #define SIGTRAP 5 #endif /* The TI92/89 should approximately execute NUM_CYCLES_PER_LOOP_HW[12] in ENGINE_TIME_LIMIT milliseconds (10.000.000 or 12.000.000 cycles/s). If you think this values are a bit too big, you can slow down the emulator by changing them */ #define NUM_CYCLES_PER_LOOP_HW1 300000 // 300000 cycles in 30ms #define NUM_CYCLES_PER_LOOP_HW2 360000 // 360000 cycles in 30ms #define NUM_CYCLES_PER_LOOP_HW4 480000 // 480000 cycles in 30ms #define MIN_INSTRUCTIONS_PER_CYCLE 4 // instructions take at least 4 cycles static int cpu_cycles = NUM_CYCLES_PER_LOOP_HW2; static guint tid = 0; // returns the instruction rate (default or custom value) int engine_num_cycles_per_loop(void) { if(params.cpu_rate != -1) return params.cpu_rate; else if (tihw.hw_type == HW1) return NUM_CYCLES_PER_LOOP_HW1; else if (tihw.hw_type <= HW3) return NUM_CYCLES_PER_LOOP_HW2; else return NUM_CYCLES_PER_LOOP_HW4; } // function called by g_timeout_add_full/g_idle_add_full static gboolean engine_func(gint *data) { gint res; // set instruction rate cpu_cycles = engine_num_cycles_per_loop(); // run emulation core res = hw_m68k_run(cpu_cycles / MIN_INSTRUCTIONS_PER_CYCLE, cpu_cycles); // a bkpt has been encountered ? If yes, stop engine if(res) { if (!dbg_on) gtk_debugger_enter(GPOINTER_TO_INT(res)); #ifndef NO_GDB sim_exception(bkpts.type ? ((bkpts.type == BK_CAUSE_EXCEPTION || bkpts.type == BK_CAUSE_PROTECT) ? SIGSEGV : SIGTRAP) : SIGINT); #endif tid = 0; // reset source id, we're stopping the engine return FALSE; // stop engine ! } return TRUE; } // start emulation engine void engine_start(void) { if(params.restricted) tid = g_timeout2_add_full(G_PRIORITY_DEFAULT_IDLE, ENGINE_TIME_LIMIT, (GSourceFunc)engine_func, NULL, NULL); else tid = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, (GSourceFunc)engine_func, NULL, NULL); } // stop it void engine_stop(void) { if(tid) { g_source_remove(tid); // and reset source id tid = 0; } } // state of engine int engine_is_stopped() { return !tid; } // state of engine int engine_is_running(void) { return tid; } tiemu-3.03-nogdb+dfsg/src/core/engine.h000066400000000000000000000026651220314353500177340ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: engine.h 2556 2007-06-24 05:05:05Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006-2007 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __ENGINE_H__ #define __ENGINE_H__ #define ENGINE_TIME_LIMIT 30 // 30 ms #ifdef __cplusplus extern "C" { #endif int engine_num_cycles_per_loop(void); void engine_calibrate(void); void engine_start(void); void engine_stop(void); int engine_is_stopped(void); int engine_is_running(void); #ifdef __cplusplus } #endif #endif tiemu-3.03-nogdb+dfsg/src/core/error.c000066400000000000000000000063221220314353500176050ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: error.c 2378 2007-02-26 18:07:09Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Transcoding of error codes into message strings */ #include #include #include #include "intl.h" #include "ti68k_err.h" /* This function put in err_msg the error message corresponding to the error code. If the error code has been handled, the function returns 0 else it propagates the error code by returning it. */ int ti68k_error_get(int err_num, char **error_msg) { switch(err_num) { case ERR_NONE: *error_msg = g_strdup(_("No error.")); break; case ERR_CANT_OPEN: *error_msg = g_strdup(_("Can not open file.")); break; case ERR_CANT_OPEN_STATE: *error_msg = g_strdup(_("Can not open state image: file is corrupted or missing.")); break; case ERR_REVISION_MATCH: *error_msg = g_strdup(_("Can not open state image: revision changed. You have to recreate the state image.")); break; case ERR_HEADER_MATCH: *error_msg = g_strdup(_("Can not open state image: state image header does not match ROM image header: have you changed/updated your ROM image?")); break; case ERR_STATE_MATCH: *error_msg = g_strdup(_("Can not open state image: this state image is not targetted for your current emulator image (calculator model and/or OS version must match!). Choose another image before.")); break; case ERR_INVALID_IMAGE: *error_msg = g_strdup(_("Invalid emulator image. File is corrupted or revision changed.")); break; case ERR_INVALID_UPGRADE: *error_msg = g_strdup(_("Invalid FLASH upgrade.")); break; case ERR_INVALID_ROM: *error_msg = g_strdup(_("Invalid ROM dump.")); break; case ERR_NO_IMAGE: *error_msg = g_strdup(_("No image.")); break; case ERR_INVALID_ROM_SIZE: *error_msg = g_strdup(_("ROM dump has a weird size.")); break; case ERR_NOT_TI_FILE: *error_msg = g_strdup(_("This is not recognized as a TI file.")); break; case ERR_CANT_OPEN_DIR: *error_msg = g_strdup(_("Can't parse folder.")); break; case ERR_CANT_UPGRADE: *error_msg = g_strdup(_("Can't upgrade calculator.")); break; default: *error_msg = g_strdup(_("Error code not found in the list.\nThis is a bug. Please report it.")); return err_num; } return 0; } tiemu-3.03-nogdb+dfsg/src/core/hwpm.c000066400000000000000000000131401220314353500174230ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: hwpm.c 2752 2007-12-30 22:23:54Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* This module manages Hardware Parameter Block. This is a 'C' structure like this: typedef struct { unsigned short len; // length of parameter block unsigned long hardwareID; // 1 = TI-92 Plus, 3 = TI-89 unsigned long hardwareRevision; // hardware revision number unsigned long bootMajor; // boot code version number unsigned long bootRevision; // boot code revision number unsigned long bootBuild; // boot code build number unsigned long gateArray; // gate array version number unsigned long physDisplayBitsWide; // display width unsigned long physDisplayBitsTall; // display height unsigned long LCDBitsWide; // visible display width unsigned long LCDBitsTall; // visible display height } HARDWARE_PARM_BLOCK; */ #include #include #include //memset #include "intl.h" #include "hwpm.h" #include "timem.h" #include "ti68k_def.h" #include "logging.h" /* -- */ void ti68k_display_hw_param_block(HW_PARM_BLOCK *s) { int i = 0; tiemu_info(_("Hardware Parameters Block:")); tiemu_info(_(" length : %i"), s->len); if(s->len > 2+(4*i++)) tiemu_info(" hardwareID : %i", s->hardwareID); if(s->len > 2+(4*i++)) tiemu_info(" hardwareRevision : %i", s->hardwareRevision); if(s->len > 2+(4*i++)) tiemu_info(" bootMajor : %i", s->bootMajor); if(s->len > 2+(4*i++)) tiemu_info(" bootRevision : %i", s->bootRevision); if(s->len > 2+(4*i++)) tiemu_info(" bootBuild : %i", s->bootBuild); if(s->len > 2+(4*i++)) tiemu_info(" gateArray : %i", s->gateArray); if(s->len > 2+(4*i++)) tiemu_info(" physDisplayBitsWide : %i", s->physDisplayBitsWide & 0xff); if(s->len > 2+(4*i++)) tiemu_info(" physDisplayBitsTall : %i", s->physDisplayBitsTall & 0xff); if(s->len > 2+(4*i++)) tiemu_info(" LCDBitsWide : %i", s->LCDBitsWide & 0xff); if(s->len > 2+(4*i++)) tiemu_info(" LCDBitsTall : %i", s->LCDBitsTall & 0xff); } /* Read hardware parameter block from image. */ int ti68k_get_hw_param_block(uint8_t *rom_data, uint8_t rom_base, HW_PARM_BLOCK *s) { int i = 0; uint32_t addr; addr = rd_long(&rom_data[0x104]); addr &= 0x000fffff; memset(s, 0, sizeof(HW_PARM_BLOCK)); s->len = rd_word(&(rom_data[addr+0])); if(s->len > 2+(4*i++)) s->hardwareID = rd_long(&(rom_data[addr+2])); if(s->len > 2+(4*i++)) s->hardwareRevision = rd_long(&(rom_data[addr+6])); if(s->len > 2+(4*i++)) s->bootMajor = rd_long(&(rom_data[addr+10])); if(s->len > 2+(4*i++)) s->bootRevision = rd_long(&(rom_data[addr+14])); if(s->len > 2+(4*i++)) s->bootBuild = rd_long(&(rom_data[addr+18])); if(s->len > 2+(4*i++)) s->gateArray = rd_long(&(rom_data[addr+22])); if(s->len > 2+(4*i++)) s->physDisplayBitsWide = rd_long(&(rom_data[addr+26])); if(s->len > 2+(4*i++)) s->physDisplayBitsTall = rd_long(&(rom_data[addr+30])); if(s->len > 2+(4*i++)) s->LCDBitsWide = rd_long(&(rom_data[addr+34])); if(s->len > 2+(4*i++)) s->LCDBitsTall = rd_long(&(rom_data[addr+38])); if((s->hardwareID == HWID_V200) && (rom_base == 0x40)) { tiemu_info(_("Detected V200 patched ROM (ExtendeD): emulated as TI92+ by changing the hwID from 8 to 1.")); s->hardwareID = HWID_TI92P; } if((s->hardwareID == HWID_TI89T) && (rom_base == 0x20)) { tiemu_info(_("Detected TI89 Titanium patched ROM (ExtendeD): emulated as TI89 by changing the hwID from 9 to 3.")); s->hardwareID = HWID_TI89; } return 0; } /* Write hardware parameter block into image. */ int ti68k_put_hw_param_block(uint8_t *rom_data, uint8_t rom_base, const HW_PARM_BLOCK *s) { int i = 0; uint32_t addr = 0x108; wr_long(&rom_data[0x104], (rom_base << 16) || addr); wr_word(&(rom_data[addr+0]), s->len); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+2]), s->hardwareID); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+6]), s->hardwareRevision); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+10]), s->bootMajor); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+14]), s->bootRevision); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+18]), s->bootBuild); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+22]), s->gateArray); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+26]), s->physDisplayBitsWide); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+30]), s->physDisplayBitsTall); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+34]), s->LCDBitsWide); if(s->len > 2+(4*i++)) wr_long(&(rom_data[addr+38]), s->LCDBitsTall); return 0; } tiemu-3.03-nogdb+dfsg/src/core/hwpm.h000066400000000000000000000046131220314353500174350ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: hwpm.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_HWPM__ #define __TI68K_HWPM__ #include /* Definitions */ // Hardware parameter block from TIGCC documentation // Exists only on FLASH calculators typedef struct { uint16_t len; /* length of parameter block */ uint32_t hardwareID; /* 1 = TI-92 Plus, 3 = TI-89 */ uint32_t hardwareRevision; /* hardware revision number */ uint32_t bootMajor; /* boot code version number */ uint32_t bootRevision; /* boot code revision number */ uint32_t bootBuild; /* boot code build number */ uint32_t gateArray; /* gate array version number */ uint32_t physDisplayBitsWide; /* display width */ uint32_t physDisplayBitsTall; /* display height */ uint32_t LCDBitsWide; /* visible display width */ uint32_t LCDBitsTall; /* visible display height */ } HW_PARM_BLOCK; // Possible values if hardwareID field #define HWID_TI92P 1 #define HWID_TI89 3 #define HWID_V200 8 #define HWID_TI89T 9 /* Functions */ void ti68k_display_hw_param_block(HW_PARM_BLOCK *s); int ti68k_get_hw_param_block(uint8_t *rom_data, uint8_t rom_base, HW_PARM_BLOCK *block); int ti68k_put_hw_param_block(uint8_t *rom_data, uint8_t rom_base, const HW_PARM_BLOCK *s); #endif tiemu-3.03-nogdb+dfsg/src/core/images.c000066400000000000000000000706671220314353500177360ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: images.c 2821 2009-05-04 20:06:12Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* This module handles loading of images or upgrades. Images can be: - ROM dump - FLASH upgrade as a ROM dump Note:0x12000 is the beginning of the system privileged part. */ #include #include #include #include #include #include #include #include #include #include #include "libuae.h" #include "intl.h" #include "ti68k_int.h" #include "ti68k_err.h" #include "ti68k_def.h" #include "images.h" #include "hwpm.h" #include "logging.h" #define is_num(c) isdigit(c) #define is_alnum(c) isalnum(c) #define SPP 0x12000 // system privileged part #define BO 0x88 // offset from SPP to boot IMG_INFO img_infos; int img_loaded = 0; int img_changed = 0; static int get_rom_version(char *ptr, int size, char *version); /* Utility functions */ int ti68k_is_a_rom_file(const char *filename) { char *ext; ext = strrchr(filename, '.'); if(ext == NULL) return 0; else if(!strcasecmp(ext, ".rom")) return !0; return 0; } int ti68k_is_a_tib_file(const char *filename) { return tifiles_file_is_os(filename); } int ti68k_is_a_img_file(const char *filename) { char *ext; ext = strrchr(filename, '.'); if(ext == NULL) return 0; else if(!strcasecmp(ext, ".img")) return !0; return 0; } int ti68k_is_a_sav_file(const char *filename) { char *ext; ext = strrchr(filename, '.'); if(ext == NULL) return 0; else if(!strcasecmp(ext, ".sav")) return !0; return 0; } /* Display information */ void ti68k_display_rom_infos(IMG_INFO *s) { tiemu_info(_("ROM information:")); tiemu_info(_(" Calculator : %s"), ti68k_calctype_to_string(s->calc_type)); tiemu_info(_(" Firmware : %s"), s->version); tiemu_info(_(" Memory type : %s"), ti68k_romtype_to_string(s->flash)); tiemu_info(_(" Memory size : %iMB (%i bytes)"), s->size >> 20, s->size); tiemu_info(_(" ROM base : %02x"), s->rom_base & 0xff); tiemu_info(_(" Hardware : %i"), s->hw_type); } void ti68k_display_tib_infos(IMG_INFO *s) { tiemu_info(_("TIB information:")); tiemu_info(_(" Calculator : %s"), ti68k_calctype_to_string(s->calc_type)); tiemu_info(_(" Firmware : %s"), s->version); tiemu_info(_(" Memory type : %s"), ti68k_romtype_to_string(s->flash)); tiemu_info(_(" Memory size : %iMB (%i bytes)"), s->size >> 20, s->size); tiemu_info(_(" ROM base : %02x"), s->rom_base & 0xff); } void ti68k_display_img_infos(IMG_INFO *s) { tiemu_info(_("Image information:")); tiemu_info(_(" Calculator : %s"), ti68k_calctype_to_string(s->calc_type)); tiemu_info(_(" Firmware : %s"), s->version); tiemu_info(_(" Memory type : %s"), ti68k_romtype_to_string(s->flash)); tiemu_info(_(" Memory size : %iMB (%i bytes)"), s->size >> 20, s->size); tiemu_info(_(" ROM base : %02x"), s->rom_base & 0xff); tiemu_info(_(" Hardware : %i"), s->hw_type); tiemu_info(_(" Has boot : %s"), s->has_boot ? _("yes") : _("no")); } /* Get some information on the ROM dump: - size - ROM base address - FLASH/EPROM - os version - calc type Note: if the data field is NULL, memory is allocated. Otherwise, data is overwritten. Thanks to Kevin for HW2 detection code. */ int ti68k_get_rom_infos(const char *filename, IMG_INFO *rom, int preload) { FILE *file; HW_PARM_BLOCK hwblock; // No filename, exits if(!strcmp(g_basename(filename), "")) return ERR_CANT_OPEN; // Open file file = fopen(filename, "rb"); if(file == NULL) { tiemu_info(_("Unable to open this file: <%s>"), filename); return ERR_CANT_OPEN; } // Retrieve ROM size fseek(file, 0, SEEK_END); rom->size = ftell(file); fseek(file, 0, SEEK_SET); if(rom->size < 256) return ERR_INVALID_ROM_SIZE; if (rom->size == 8*MB) { // TiLP used to dump 8 MB images for HW4, try to load them anyway. tiemu_info(_("Warning: truncating 8 MB image to 4 MB: <%s>"), filename); rom->size = 4*MB; } if (rom->size > 4*MB) return ERR_INVALID_ROM_SIZE; if(rom->data == NULL) rom->data = malloc(rom->size + 4); if(rom->data == NULL) return ERR_MALLOC; memset(rom->data, 0xff, rom->size); if (fread(rom->data, 1, rom->size, file) < (size_t)rom->size) { tiemu_info(_("Failed to read from file: <%s>"), filename); fclose(file); return ERR_CANT_OPEN; } if (fclose(file)) { tiemu_info(_("Failed to close file: <%s>"), filename); return ERR_CANT_OPEN; } rom->has_boot = 1; rom->rom_base = rom->data[0x05] & 0xf0; rom->flash = (rom->data[0x65] & 0x0f) ? 0 : FLASH_ROM; get_rom_version(rom->data, rom->size, rom->version); if(!rom->flash) { rom->calc_type = TI92; rom->hw_type = HW1; } else { // Get hw param block to determine calc type & hw type if(ti68k_get_hw_param_block((uint8_t*)rom->data, rom->rom_base, &hwblock) == -1) return ERR_INVALID_ROM; ti68k_display_hw_param_block(&hwblock); switch(hwblock.hardwareID) { case HWID_TI92P: rom->calc_type = TI92p; break; case HWID_TI89: rom->calc_type = TI89; break; case HWID_V200: rom->calc_type = V200; break; case HWID_TI89T: rom->calc_type = TI89t; break; default: break; } if(rom->flash) { if(hwblock.len < 24) rom->hw_type = HW1; else rom->hw_type = (char)hwblock.gateArray; } } if(!preload) free(rom->data); return 0; } /* Get some information on the FLASH upgrade: - size - ROM base address - os version - calc type */ int ti68k_get_tib_infos(const char *filename, IMG_INFO *tib, int preload) { FlashContent *content; FlashContent *ptr; int nheaders = 0; int i; // No filename, exits if(!strcmp(g_basename(filename), "")) return ERR_CANT_OPEN; // Check valid file if(!tifiles_file_is_ti(filename)) return ERR_NOT_TI_FILE; if(!tifiles_file_is_os(filename)) return ERR_INVALID_UPGRADE; // Load file content = tifiles_content_create_flash(CALC_TI89); if(tifiles_file_read_flash(filename, content) != 0) return ERR_INVALID_UPGRADE; // count headers for (ptr = content; ptr != NULL; ptr = ptr->next) nheaders++; // keep the last one (data) for (i = 0, ptr = content; i < nheaders - 1; i++) ptr = ptr->next; // Load TIB into memory and relocate at SPP if(tib->data == NULL) tib->data = malloc(SPP + ptr->data_length + 4); if(tib->data == NULL) return ERR_MALLOC; memset(tib->data + SPP, 0xff, ptr->data_length); memcpy(tib->data + SPP, ptr->data_part, ptr->data_length); // Update current rom infos tib->rom_base = tib->data[BO+5 + SPP] & 0xf0; // libtifiles can't distinguish TI89/TI89t and 92+/V200. We need to look. switch(ptr->device_type & 0xff) { case DEVICE_TYPE_89: // can be a Titanium, too switch(tib->rom_base & 0xff) { case 0x20: tib->calc_type = TI89; break; case 0x80: tib->calc_type = TI89t; break; default: return ERR_INVALID_UPGRADE; } break; case DEVICE_TYPE_92P: switch(tib->rom_base & 0xff) { case 0x20: tib->calc_type = V200; break; case 0x40: tib->calc_type = TI92p; break; default: return ERR_INVALID_UPGRADE; } break; default: tiemu_info("TIB problem: %02x!\n", 0xff & ptr->device_type); return ERR_INVALID_UPGRADE; break; } tib->flash = FLASH_ROM; tib->has_boot = 0; tib->size = ptr->data_length + SPP; get_rom_version(tib->data, tib->size, tib->version); tifiles_content_delete_flash(content); if(!preload) free(tib->data); return 0; } /* Try to get some information on the ROM dump: - size - ROM base address - FLASH/EPROM - soft version - calc type */ int ti68k_get_img_infos(const char *filename, IMG_INFO *ri) { FILE *f; IMG_INFO32 ri32; IMG_INFO64 ri64; // No filename, exits if(!strcmp(g_basename(filename), "")) return ERR_CANT_OPEN; // Check file if(!ti68k_is_a_img_file(filename)) { tiemu_warning("Images must have '.img' extension (%s).\n", filename); return ERR_CANT_OPEN; } // Open dest file f = fopen(filename, "rb"); if(f == NULL) { tiemu_warning("Unable to open this file: <%s>\n", filename); return ERR_CANT_OPEN; } // Read header if (fread(&ri32, sizeof(IMG_INFO32), 1, f) < 1) { tiemu_warning("Failed to read from file: <%s>\n", filename); fclose(f); return ERR_CANT_OPEN; } *ri = ri32; // below is patch from Lionel if(strcmp(ri->signature, IMG_SIGN) || ri->size > 4*MB || ri->calc_type > CALC_MAX || ri->header_size == 0 || ri->hw_type > 4 || ri->rom_base == 0) { // In addition to plain invalid files, this may happen if the image was // created on a 64-bit platform with TIEmu <= 3.03. // Try to read an IMG_INFO structure as it used to be written by those // 64-bit platforms. fseek(f, 0, SEEK_SET); if (fread(&ri64, sizeof(IMG_INFO64), 1, f) < 1) { tiemu_warning("Failed to read from file: <%s>\n", filename); fclose(f); return ERR_CANT_OPEN; } else { memcpy(ri->signature, &(ri64.signature), sizeof(ri64.signature)); ri->revision = (int32_t)(ri64.revision); ri->header_size = (int32_t)(ri64.header_size); ri->calc_type = ri64.calc_type; memcpy(ri->version, &(ri64.version), sizeof(ri64.version)); ri->flash = ri64.flash; ri->has_boot = ri64.has_boot; ri->size = (int32_t)(ri64.size); ri->hw_type = ri64.hw_type; ri->rom_base = ri64.rom_base; if(strcmp(ri->signature, IMG_SIGN) || ri->size > 4*MB || ri->calc_type > CALC_MAX || ri->header_size == 0 || ri->hw_type > 4 || ri->rom_base == 0) { // Nope, it still doesn't seem to be a TIEmu image. tiemu_warning("Bad image: <%s>\n", filename); return ERR_INVALID_UPGRADE; } else { tiemu_info("Found a reasonably valid 64-bit IMG_INFO in <%s>\n", filename); } } } // Close file if (fclose(f)) { tiemu_warning("Failed to close file: <%s>\n", filename); return ERR_CANT_OPEN; } return 0; } /* Convert a romdump into an image. This kind of image is complete (boot & certificate). */ int ti68k_convert_rom_to_image(const char *srcname, const char *dirname, char **dstname) { FILE *f; int err; IMG_INFO img; char *ext; gchar *basename; *dstname = NULL; // No filename, exits if(!strcmp(g_basename(srcname), "")) return ERR_CANT_OPEN; // Preload romdump memset(&img, 0, sizeof(IMG_INFO)); err = ti68k_get_rom_infos(srcname, &img, !0); if(err) { free(img.data); tiemu_info(_("Unable to get information on ROM dump: %s"), srcname); return err; } ti68k_display_rom_infos(&img); // Create destination file basename = g_path_get_basename(srcname); ext = strrchr(basename, '.'); *ext='\0'; strcat(basename, ".img"); *dstname = g_strconcat(dirname, basename, NULL); g_free(basename); // Open dest file f = fopen(*dstname, "wb"); if(f == NULL) { tiemu_warning("Unable to open this file: <%s>\n", *dstname); return ERR_CANT_OPEN; } // Some V200 and TI89 Titanium ROMs are half the size if((img.size < 4*MB) && (img.calc_type == V200 || img.calc_type == TI89t)) { img.size = 4*MB; img.data = realloc(img.data, 4*MB + 4); tiemu_info(_("Completing image to 4 MB!")); memset(img.data + 2*MB, 0xff, 2*MB); } // Fill header strcpy(img.signature, IMG_SIGN); img.header_size = sizeof(IMG_INFO); img.revision = IMG_REV; // Write file if (fwrite(&img, 1, sizeof(IMG_INFO), f) < (size_t)sizeof(IMG_INFO) || fwrite(img.data, sizeof(char), img.size, f) < (size_t)img.size) { tiemu_warning("Failed to write to file: <%s>\n", *dstname); fclose(f); return ERR_CANT_OPEN; } // Close file if (fclose(f)) { tiemu_warning("Failed to close file: <%s>\n", *dstname); return ERR_CANT_OPEN; } return 0; } /* Convert an upgrade into an image. The image has neither boot block nor certificate. */ int ti68k_convert_tib_to_image(const char *srcname, const char *dirname, char **dstname, int hw_type) { FILE *f; int err; IMG_INFO img; char *ext; gchar *basename; int i, j; int num_blocks, last_block; int real_size; HW_PARM_BLOCK hwpb; *dstname = NULL; // No filename, exits if(!strcmp(g_basename(srcname), "")) return ERR_CANT_OPEN; // Preload upgrade memset(&img, 0, sizeof(IMG_INFO)); err = ti68k_get_tib_infos(srcname, &img, !0); if(err) { free(img.data); tiemu_info(_("Unable to get information on FLASH upgrade: <%s>"), srcname); return err; } ti68k_display_tib_infos(&img); // Create destination file basename = g_path_get_basename(srcname); ext = strrchr(basename, '.'); *ext='\0'; strcat(basename, ".img"); *dstname = g_strconcat(dirname, basename, NULL); g_free(basename); // Open dest file f = fopen(*dstname, "wb"); if(f == NULL) { tiemu_warning("Unable to open this file: <%s>\n", *dstname); return ERR_CANT_OPEN; } // Fill header strcpy(img.signature, IMG_SIGN); img.header_size = sizeof(IMG_INFO); img.revision = IMG_REV; real_size = img.size - SPP; img.size = ti68k_get_rom_size(img.calc_type); img.hw_type = hw_type; if(hw_type == -1) { if(img.calc_type == TI89t) img.hw_type = HW3; //default else if(img.calc_type == TI89 || img.calc_type == TI92p || img.calc_type == V200) img.hw_type = HW2; // default } // Write header if (fwrite(&img, 1, sizeof(IMG_INFO), f) < sizeof(IMG_INFO)) { tiemu_warning("Failed to write to file: <%s>\n", *dstname); fclose(f); return ERR_CANT_OPEN; } // Write boot block memcpy(img.data, &img.data[SPP + BO], 256); if (fwrite(img.data, 1, 256, f) < 256) { tiemu_warning("Failed to write to file: <%s>\n", *dstname); fclose(f); return ERR_CANT_OPEN; } // Write hardware param block // fill structure hwpb.len = 24; switch(img.calc_type) { case TI89: hwpb.hardwareID = HWID_TI89; hwpb.hardwareRevision = img.hw_type - 1; break; case TI92p: hwpb.hardwareID = HWID_TI92P; hwpb.hardwareRevision = img.hw_type - 1; break; case V200: hwpb.hardwareID = HWID_V200; hwpb.hardwareRevision = 2; break; case TI89t: hwpb.hardwareID = HWID_TI89T; hwpb.hardwareRevision = 2; break; } hwpb.bootMajor = hwpb.bootRevision = hwpb.bootBuild = 1; hwpb.gateArray = img.hw_type; ti68k_put_hw_param_block((uint8_t *)img.data, img.rom_base, &hwpb); // write filler if (fputc(0xfe, f) < 0 || fputc(0xed, f) < 0 || fputc(0xba, f) < 0 || fputc(0xbe, f) < 0 //fwrite(&hwpb, 1hwpb.len+2, f); // write address (pointer) || fputc(0x00, f) < 0 || fputc(img.rom_base, f) < 0 || fputc(0x01, f) < 0 || fputc(0x08, f) < 0 // write structure || fputc(MSB(hwpb.len), f) < 0 || fputc(LSB(hwpb.len), f) < 0 || fputc(MSB(MSW(hwpb.hardwareID)), f) < 0 || fputc(LSB(MSW(hwpb.hardwareID)), f) < 0 || fputc(MSB(LSW(hwpb.hardwareID)), f) < 0 || fputc(LSB(LSW(hwpb.hardwareID)), f) < 0 || fputc(MSB(MSW(hwpb.hardwareRevision)), f) < 0 || fputc(LSB(MSW(hwpb.hardwareRevision)), f) < 0 || fputc(MSB(LSW(hwpb.hardwareRevision)), f) < 0 || fputc(LSB(LSW(hwpb.hardwareRevision)), f) < 0 || fputc(MSB(MSW(hwpb.bootMajor)), f) < 0 || fputc(LSB(MSW(hwpb.bootMajor)), f) < 0 || fputc(MSB(LSW(hwpb.bootMajor)), f) < 0 || fputc(LSB(LSW(hwpb.bootMajor)), f) < 0 || fputc(MSB(MSW(hwpb.hardwareRevision)), f) < 0 || fputc(LSB(MSW(hwpb.hardwareRevision)), f) < 0 || fputc(MSB(LSW(hwpb.hardwareRevision)), f) < 0 || fputc(LSB(LSW(hwpb.hardwareRevision)), f) < 0 || fputc(MSB(MSW(hwpb.bootBuild)), f) < 0 || fputc(LSB(MSW(hwpb.bootBuild)), f) < 0 || fputc(MSB(LSW(hwpb.bootBuild)), f) < 0 || fputc(LSB(LSW(hwpb.bootBuild)), f) < 0 || fputc(MSB(MSW(hwpb.gateArray)), f) < 0 || fputc(LSB(MSW(hwpb.gateArray)), f) < 0 || fputc(MSB(LSW(hwpb.gateArray)), f) < 0 || fputc(LSB(LSW(hwpb.gateArray)), f) < 0) { tiemu_warning("Failed to write to file: <%s>\n", *dstname); fclose(f); return ERR_CANT_OPEN; } // Fill with 0xff up-to System Part for(i = 0x108 + hwpb.len+2; i < SPP; i++) if (fputc(0xff, f) < 0) { tiemu_warning("Failed to write to file: <%s>\n", *dstname); fclose(f); return ERR_CANT_OPEN; } // Copy FLASH upgrade at 0x12000 (SPP) num_blocks = real_size / 65536; for(i = 0; i < num_blocks; i++ ) { tiemu_info("."); fflush(stdout); if (fwrite(&img.data[65536 * i + SPP], sizeof(char), 65536, f) < 65536) { tiemu_warning("Failed to write to file: <%s>\n", *dstname); fclose(f); return ERR_CANT_OPEN; } } last_block = real_size % 65536; if (fwrite(&img.data[65536 * i + SPP], sizeof(char), last_block, f) < (size_t)last_block) { tiemu_warning("Failed to write to file: <%s>\n", *dstname); fclose(f); return ERR_CANT_OPEN; } tiemu_info(""); tiemu_info("Completing to %iMB size\n", img.size >> 20); for(j = SPP + real_size; j < img.size; j++) if (fputc(0xff, f) < 0) { tiemu_warning("Failed to write to file: <%s>\n", *dstname); fclose(f); return ERR_CANT_OPEN; } // Close file if (fclose(f)) { tiemu_warning("Failed to close file: <%s>\n", *dstname); return ERR_CANT_OPEN; } return 0; } /* Convert an romdump into image and replace SPP by upgrade. The resulting image has boot block. */ int ti68k_merge_rom_and_tib_to_image(const char *srcname1, const char *srcname2, const char *dirname, char **dstname) { FILE *f; int err; IMG_INFO img; char *ext; gchar *basename; int real_size; *dstname = NULL; // No filename, exits if(!strcmp(g_basename(srcname1), "")) return ERR_CANT_OPEN; if(!strcmp(g_basename(srcname2), "")) return ERR_CANT_OPEN; // Preload romdump memset(&img, 0, sizeof(IMG_INFO)); err = ti68k_get_rom_infos(srcname1, &img, !0); if(err) { free(img.data); tiemu_info(_("Unable to get information on ROM dump: %s"), srcname1); return err; } ti68k_display_rom_infos(&img); // Save size real_size = img.size; // Load upgrade err = ti68k_get_tib_infos(srcname2, &img, !0); if(err) { free(img.data); tiemu_info(_("Unable to get information on ROM dump: %s"), srcname2); return err; } ti68k_display_tib_infos(&img); // Create destination file basename = g_path_get_basename(srcname1); ext = strrchr(basename, '.'); *ext='\0'; strcat(basename, ".img"); *dstname = g_strconcat(dirname, basename, NULL); g_free(basename); // Restore size img.size = real_size; // Open dest file f = fopen(*dstname, "wb"); if(f == NULL) { tiemu_warning("Unable to open this file: <%s>\n", *dstname); return ERR_CANT_OPEN; } // Fill header strcpy(img.signature, IMG_SIGN); img.header_size = sizeof(IMG_INFO); img.revision = IMG_REV; img.has_boot = 1; // Write file if (fwrite(&img, 1, sizeof(IMG_INFO), f) < sizeof(IMG_INFO) || fwrite(img.data, sizeof(char), img.size, f) < (size_t)img.size) { tiemu_warning("Failed to write to file: <%s>\n", *dstname); fclose(f); return ERR_CANT_OPEN; } // Close file if (fclose(f)) { tiemu_warning("Failed to close file: <%s>\n", *dstname); return ERR_CANT_OPEN; } return 0; } /* This function loads an image. */ int ti68k_load_image(const char *filename) { IMG_INFO *img = &img_infos; FILE *f; int err; // Clear infos memset(img, 0, sizeof(IMG_INFO)); // No filename, exits if(!strcmp(g_basename(filename), "")) return ERR_CANT_OPEN; // Load infos err = ti68k_get_img_infos(filename, img); if(err) { tiemu_info(_("Unable to get information on image: %s"), filename); return err; } ti68k_display_img_infos(img); // Open file f = fopen(filename, "rb"); if(f == NULL) { tiemu_warning("Unable to open this file: <%s>\n", filename); return ERR_CANT_OPEN; } // Read pure data if (fseek(f, img->header_size, SEEK_SET)) { tiemu_warning("Failed to read from file: <%s>\n", filename); fclose(f); return ERR_CANT_OPEN; } img->data = malloc(img->size + 4); if(img->data == NULL) return ERR_MALLOC; if (fread(img->data, 1, img->size, f) < (size_t)img->size) { tiemu_warning("Failed to read from file: <%s>\n", filename); fclose(f); return ERR_CANT_OPEN; } #if 1 { HW_PARM_BLOCK hwblock; ti68k_get_hw_param_block((uint8_t *)img->data, img->rom_base, &hwblock); ti68k_display_hw_param_block(&hwblock); } #endif if (fclose(f)) { tiemu_warning("Failed to close file: <%s>\n", filename); return ERR_CANT_OPEN; } img_loaded = 1; img_changed = 1; return 0; } /* Load a FLASH upgrade (.tib/.9xu/.89u). Note: an image must have been loaded before calling this function. */ int ti68k_load_upgrade(const char *filename) { IMG_INFO tib; int err; IMG_INFO *img = &img_infos; if(!img_loaded) return -1; // No filename, exits if(!strcmp(g_basename(filename), "")) return 0; //ERR_CANT_OPEN; memset(&tib, 0, sizeof(IMG_INFO)); err = ti68k_get_tib_infos(filename, &tib, !0); if(err) { free(img->data); tiemu_info(_("Unable to get information on FLASH upgrade: <%s>"), filename); return err; } ti68k_display_tib_infos(&tib); // Allow upgrade ? if(tib.calc_type != img->calc_type) { free(tib.data); return ERR_CANT_UPGRADE; } tib.has_boot = 1; // still bootable memset(tihw.rom+SPP, 0xff, tihw.rom_size-SPP); // clear FLASH memcpy(tihw.rom+SPP, tib.data+SPP, tib.size-SPP); free(tib.data); strcpy(tihw.rom_version, tib.version); img_loaded = 2; img_changed = 2; return 0; } /* Unload an image (free memory). */ int ti68k_unload_image_or_upgrade(void) { IMG_INFO *img = &img_infos; if(!img_loaded) return -1; img->data = NULL; img_loaded = 0; return 0; } /* Search for ROM dumps or FLASH upgrades in a given directory and converts them into images (note: original file is deleted !). */ int ti68k_scan_files(const char *src_dir, const char *dst_dir, int erase) { GDir *dir; GError *error = NULL; G_CONST_RETURN gchar *dirent; gchar *path; int ret; gchar *dstname; // Search for files and convert them dir = g_dir_open(src_dir, 0, &error); if (dir == NULL) { tiemu_warning(_("Opendir error")); return ERR_CANT_OPEN_DIR; } while ((dirent = g_dir_read_name(dir)) != NULL) { if (dirent[0] == '.') continue; path = g_strconcat(src_dir, dirent, NULL); if(ti68k_is_a_rom_file(path)) { ret = ti68k_convert_rom_to_image(path, dst_dir, &dstname); if(ret) { g_free(dstname); g_free(path); return ret; } if(erase) unlink(path); g_free(dstname); } if(ti68k_is_a_tib_file(path)) { ret = ti68k_convert_tib_to_image(path, dst_dir, &dstname, -1); if(ret) { g_free(dstname); g_free(path); return ret; } if(erase) unlink(path); g_free(dstname); } g_free(path); } g_dir_close(dir); return 0; } /* Scan images in a given directory and write list into img_list.txt. */ int ti68k_scan_images(const char *dirname, const char *filename) { FILE *file; IMG_INFO img; GDir *dir; GError *error = NULL; G_CONST_RETURN gchar *dirent; gchar *path, *str; int ret; struct stat f_info; char *line[7]; tiemu_info(_("Scanning images/upgrades... ")); // Create file (and overwrite) file = fopen(filename, "wt"); if(file == NULL) { tiemu_warning(_("Unable to open this file: <%s>"), filename); return ERR_CANT_OPEN; } // List all files available in the directory dir = g_dir_open(dirname, 0, &error); if (dir == NULL) { tiemu_warning(_("Opendir error")); return ERR_CANT_OPEN_DIR; } while ((dirent = g_dir_read_name(dir)) != NULL) { if (dirent[0] == '.') continue; path = g_strconcat(dirname, dirent, NULL); ret = stat(path, &f_info); if(ret == -1) { tiemu_warning(_("Can not stat: <%s>"), dirent); perror("stat: "); } else { if(ti68k_is_a_img_file(path)) { memset(&img, 0, sizeof(IMG_INFO)); ret = ti68k_get_img_infos(path, &img); if(ret) { tiemu_warning(_("Can not get ROM/update info: <%s>"), path); break; } } else continue; str = g_strdup_printf("%iKB", (int)(img.size >> 10)); line[0] = (char *)dirent; line[1] = (char *)ti68k_calctype_to_string(img.calc_type); line[2] = img.version; line[3] = (char *)ti68k_romtype_to_string(img.flash); line[4] = str; line[5] = img.has_boot ? _("yes") : _("no"); line[6] = (char *)ti68k_hwtype_to_string(img.hw_type); fprintf(file, "%s,%s,%s,%s,%s,%s,%s\n", line[0], line[1], line[2], line[3], line[4], line[5], line[6]); g_free(str); } g_free(path); } // Close g_dir_close(dir); fclose(file); tiemu_info(_("Done.")); return 0; } /* Search the version string in the ROM Arguments: - ptr: a ROM or update image - size: the size of the buffer - version: the returned string version */ static int get_rom_version(char *ptr, int size, char *version) { int i; strcpy(version, "?.??"); for (i = SPP; i < size-16; i += 2) { if (is_num(ptr[i])&&(ptr[i+1]=='.') && is_num(ptr[i+2]) && (ptr[i+3]==0)&&is_alnum(ptr[i+4]) && is_alnum(ptr[i+5]) && (ptr[i+6]=='/')&&is_alnum(ptr[i+7]) && is_alnum(ptr[i+8]) && (ptr[i+9]=='/')&&is_alnum(ptr[i+10]) && is_alnum(ptr[i+11])) break; if (is_num(ptr[i]) && (ptr[i+1]=='.') && is_num(ptr[i+2]) && is_num(ptr[i+3]) && (ptr[i+4]==0) && is_alnum(ptr[i+5]) && is_alnum(ptr[i+6]) && (ptr[i+7]=='/') && is_alnum(ptr[i+8]) && is_alnum(ptr[i+9]) && (ptr[i+10]=='/') && is_alnum(ptr[i+11]) && is_alnum(ptr[i+12])) break; if (is_num(ptr[i]) && (ptr[i+1]=='.') && is_num(ptr[i+2]) && (ptr[i+3]==0) && is_alnum(ptr[i+4]) && is_alnum(ptr[i+5]) && is_alnum(ptr[i+6]) && is_alnum(ptr[i+7]) && is_alnum(ptr[i+8]) && is_alnum(ptr[i+9]) && is_alnum(ptr[i+10]) && is_alnum(ptr[i+11])) break; if (is_num(ptr[i]) && (ptr[i+1]=='.') && is_num(ptr[i+2]) && is_alnum(ptr[i+3]) && (ptr[i+4]==0) && is_alnum(ptr[i+5]) && is_alnum(ptr[i+6]) && is_alnum(ptr[i+7]) && is_alnum(ptr[i+8]) && is_alnum(ptr[i+9]) && is_alnum(ptr[i+10]) && is_alnum(ptr[i+11])) break; } if (i < size-16) { int n; for(n = i; n < i+16; n++) { if (ptr[n]==0) { strcpy(version, ptr+i); (version)[n-i]=0; return 0; } } } return 0; } /* Returns the first found image */ int ti68k_find_image(const char *dirname, char **dst_name) { GDir *dir; GError *error = NULL; G_CONST_RETURN gchar *dirent; int ret = 0; char *filename; if(dst_name != NULL) *dst_name = NULL; // Search for *.img files and convert them dir = g_dir_open(dirname, 0, &error); if (dir == NULL) { tiemu_warning(_("Opendir error")); return ERR_CANT_OPEN_DIR; } filename = NULL; while ((dirent = g_dir_read_name(dir)) != NULL) { if (dirent[0] == '.') continue; if(!ti68k_is_a_img_file(dirent)) continue; filename = g_strconcat(dirname, dirent, NULL); ret = !0; break; } g_dir_close(dir); if(dst_name != NULL) *dst_name = filename; return ret; } tiemu-3.03-nogdb+dfsg/src/core/images.h000066400000000000000000000077061220314353500177350ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: images.h 2821 2009-05-04 20:06:12Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_IMAGES__ #define __TI68K_IMAGES__ #include /* Definitions */ #define IMG_SIGN "TiEmu img v2.00" #define IMG_REV 2 // increase this number when changing the structure below // Please update the docs/TiEmu_img_format.txt documentation when making changes // on the structure below // If this structure is modified, the SAV_REVISION number (state.c) // has to be incremented. typedef struct { char signature[16]; // "TiEmu img v2.00" (dc) int32_t revision; // structure revision (compatibility) int32_t header_size; // size of this structure and offset to pure data (dc) char calc_type; // calculator type char version[5]; // firmware revision char flash; // EPROM or FLASH char has_boot; // FLASH upgrade does not have boot int32_t size; // size of pure data char hw_type; // hw1 or hw2 uint8_t rom_base; // ROM base address (MSB) char fill[0x40-42]; // round up struct to 0x40 bytes char* data; // pure data (temporary use, 8 bytes) } IMG_INFO32; // dc = don't care for rom/tib typedef struct { char signature[16]; // "TiEmu img v2.00" (dc) int64_t revision; // structure revision (compatibility) int64_t header_size; // size of this structure and offset to pure data (dc) char calc_type; // calculator type char version[5]; // firmware revision char flash; // EPROM or FLASH char has_boot; // FLASH upgrade does not have boot int64_t size; // size of pure data char hw_type; // hw1 or hw2 uint8_t rom_base; // ROM base address (MSB) char fill[0x40-42]; // round up struct to 0x40 bytes char* data; // pure data (temporary use, 8 bytes) } IMG_INFO64; // dc = don't care for rom/tib #define IMG_INFO IMG_INFO32 extern int img_loaded; extern IMG_INFO img_infos; /* Functions */ int ti68k_is_a_rom_file(const char *filename); int ti68k_is_a_tib_file(const char *filename); int ti68k_is_a_img_file(const char *filename); void ti68k_display_rom_infos(IMG_INFO *rom); void ti68k_display_tib_infos(IMG_INFO *tib); void ti68k_display_img_infos(IMG_INFO *img); int ti68k_get_rom_infos(const char *filename, IMG_INFO *rom, int preload); int ti68k_get_tib_infos(const char *filename, IMG_INFO *tib, int preload); int ti68k_get_img_infos(const char *filename, IMG_INFO *img); int ti68k_convert_rom_to_image(const char *src, const char *dirname, char **dst); int ti68k_convert_tib_to_image(const char *src, const char *dirname, char **dst, int hw_type); int ti68k_merge_rom_and_tib_to_image(const char *srcname1, const char *srcname2, const char *dirname, char **dstname); int ti68k_load_image(const char *filename); int ti68k_load_upgrade(const char *filename); int ti68k_unload_image_or_upgrade(void); int ti68k_scan_files(const char *src_dir, const char *dst_dir, int erase); int ti68k_scan_images(const char *dirname, const char *filename); int ti68k_find_image(const char *dirname, char **filename); #endif tiemu-3.03-nogdb+dfsg/src/core/interface.c000066400000000000000000000156051220314353500204200ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: interface.c 2792 2008-05-26 16:48:30Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Interface: exported & misc routines */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #ifdef __MINGW32__ #include #endif #include "libuae.h" #include "hw.h" #include "m68k.h" #include "dbus.h" #include "logging.h" #ifndef NO_SOUND #include "audio.h" #endif #include "ti68k_int.h" #include "ti68k_err.h" #include "mem_size.h" #include "romcalls.h" #include "iodefs.h" #include "mem_map.h" /**********************/ /* Internal variables */ /**********************/ Ti68kParameters params = { 0 }; Ti68kHardware tihw = { 0 }; Ti68kLinkPort linkp = { 0 }; Ti68kBreakpoints bkpts = { 0 }; Ti68kLogging logger = { 0 }; /***********************************/ /* Entry points for initialization */ /***********************************/ /* Initialization order (checked by the runlevel): - load the default config - load a ROM (init ROM) - init the lib (init HW, UAE, HID) - reset the lib */ static int is_win_9x(void) { #ifdef __WIN32__ OSVERSIONINFO os; memset(&os, 0, sizeof(OSVERSIONINFO)); os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&os); return (os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS); #else return 0; #endif } /* This should be the FIRST function to call (unless the 'params' structure has been properly initialized. */ int ti68k_config_load_default(void) { params.restricted = 1; params.cpu_rate = -1; params.hw_rate = -1; params.lcd_rate = -1; params.hw_protect = 1; params.recv_file = 1; #ifndef NO_SOUND audio_disable(); #endif linkp.cable_delay = DFLT_DELAY; linkp.cable_timeout = is_win_9x() ? 600 : DFLT_TIMEOUT; linkp.cable_port = PORT_1; linkp.cable_model = CABLE_ILP; linkp.calc_model = ti68k_calc_to_libti_calc(); return 0; } /* This should be the SECOND function to call. Load a ROM image (images.c). */ int ti68k_load_image(const char *filename); /* This is the THIRD function to call for completely initializing the emulation engine. */ int ti68k_init(void) { // init libs ticables_library_init(); tifiles_library_init(); ticalcs_library_init(); // check if image has been loaded if(img_loaded == 0) return ERR_NO_IMAGE; // set calc type and init hardware memset(&tihw, 0, sizeof(Ti68kHardware)); tihw.calc_type = img_infos.calc_type; TRY(hw_init()); return 0; } /* This should be the FOURTH function to call. It simply resets the hardware engine. */ int ti68k_reset(void) { hw_reset(); return 0; } /* Close the library by exiting the emulation engine (free ressources). */ int ti68k_exit(void) { TRY(hw_exit()); ticables_library_exit(); tifiles_library_exit(); ticalcs_library_exit(); return 0; } unsigned int ti68k_get_cycle_count(int reset, unsigned int *diff) { static unsigned int old_cnt = 0; unsigned int new_cnt; new_cnt = hw_m68k_get_cycle_count(reset); if(diff != NULL) *diff = new_cnt - old_cnt; old_cnt = new_cnt; return new_cnt; } /******************/ /* Link functions */ /******************/ int ti68k_linkport_send_file(const char *filename) { return send_ti_file(filename); } int ti68k_linkport_unconfigure(void) { return hw_dbus_exit(); } int ti68k_linkport_reconfigure(void) { return hw_dbus_init(); } int ti68k_calc_to_libti_calc() { switch(tihw.calc_type) { case TI89: return CALC_TI89; break; case TI89t: return CALC_TI89T; break; case TI92: return CALC_TI92; break; case TI92p: return CALC_TI92P; break; case V200: return CALC_V200; break; default: return CALC_NONE; break; } return CALC_NONE; } /******************/ /* Misc functions */ /******************/ const int ti_rom_base[] = { ROM_BASE_TI92_I, ROM_BASE_TI89, ROM_BASE_TI92P, ROM_BASE_V200, ROM_BASE_TI89T }; const int ti_rom_sizes[] = { ROM_SIZE_TI92_I, ROM_SIZE_TI89, ROM_SIZE_TI92P, ROM_SIZE_V200, ROM_SIZE_TI89T }; const int ti_ram_sizes[] = {RAM_SIZE_TI92_II, RAM_SIZE_TI89, RAM_SIZE_TI92P, RAM_SIZE_V200, RAM_SIZE_TI89T }; const int ti_io_sizes[] = { IO1_SIZE_TI92_I, IO1_SIZE_TI89, IO1_SIZE_TI92P, IO1_SIZE_V200, IO1_SIZE_TI89T }; const int ti_io2_sizes[] = { IO2_SIZE_TI92_I, IO2_SIZE_TI89, IO2_SIZE_TI92P, IO2_SIZE_V200, IO2_SIZE_TI89T }; const int ti_io3_sizes[] = { IO3_SIZE_TI92_I, IO3_SIZE_TI89, IO3_SIZE_TI92P, IO3_SIZE_V200, IO3_SIZE_TI89T }; static int log_b2(int i) { int j, v; for(j = 0, v = i; v != 0; v >>= 1, j++); return j-1; } int ti68k_get_rom_size(int calc_type) { if(calc_type > CALC_MAX) { tiemu_error(_("Bad argument!")); exit(0); } return ti_rom_sizes[log_b2(calc_type)]; } int ti68k_get_ram_size(int calc_type) { if(calc_type > CALC_MAX) { tiemu_error(_("Bad argument!")); exit(0); } return ti_ram_sizes[log_b2(calc_type)]; } int ti68k_get_io_size(int calc_type) { if(calc_type > CALC_MAX) { tiemu_error(_("Bad argument!")); exit(0); } return ti_io_sizes[log_b2(calc_type)]; } int ti68k_get_io2_size(int calc_type) { if(calc_type > CALC_MAX) { tiemu_error(_("Bad argument!")); exit(0); } return ti_io2_sizes[log_b2(calc_type)]; } int ti68k_get_io3_size(int calc_type) { if(calc_type > CALC_MAX) { tiemu_error(_("Bad argument!")); exit(0); } return ti_io3_sizes[log_b2(calc_type)]; } /********/ /* Misc */ /********/ void ti68k_unprotect_64KB_range(uint32_t addr) { unsigned blockid = addr >> 12, i; for (i = blockid; i <= blockid + 16 && i < 64; i++) tihw.ram_exec[i] = 0; } int ti68k_debug_load_symbols(const char *path) { if(!strcmp(path, "")) return 0; return romcalls_load(path); } int ti68k_debug_load_iodefs(const char *path) { if(!strcmp(path, "")) return 0; return iodefs_load(path); } int ti68k_debug_load_memmap(const char *path) { if(!strcmp(path, "")) return 0; return memmap_load(path); } tiemu-3.03-nogdb+dfsg/src/core/mem_size.h000066400000000000000000000044541220314353500202750ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: mem_size.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2002, Romain Lievin, Julien Blache * Copyright (c) 2003-2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_MEMSIZE__ #define __TI68K_MEMSIZE__ /* Size of some common memory devices. 0 means not supported & used by the hand-held. */ #define RAM_SIZE_TI92_I (128*KB) #define RAM_SIZE_TI92_II (256*KB) #define RAM_SIZE_TI89 (256*KB) #define RAM_SIZE_TI92P (256*KB) #define RAM_SIZE_V200 (256*KB) #define RAM_SIZE_TI89T (256*KB) #define ROM_SIZE_TI92_I (1*MB) #define ROM_SIZE_TI92_II (2*MB) #define ROM_SIZE_TI89 (2*MB) #define ROM_SIZE_TI92P (2*MB) #define ROM_SIZE_V200 (4*MB) #define ROM_SIZE_TI89T (4*MB) #define ROM_BASE_TI92_I (0) // 0x200000 or 0x400000 #define ROM_BASE_TI92_II 0x400000 #define ROM_BASE_TI89 0x200000 #define ROM_BASE_TI92P 0x400000 #define ROM_BASE_V200 0x200000 #define ROM_BASE_TI89T 0x800000 #define IO1_SIZE_TI92_I 32 #define IO1_SIZE_TI92_II 32 #define IO1_SIZE_TI89 32 #define IO1_SIZE_TI92P 32 #define IO1_SIZE_V200 32 #define IO1_SIZE_TI89T 32 #define IO2_SIZE_TI92_I 0 #define IO2_SIZE_TI92_II 0 #define IO2_SIZE_TI89 32 #define IO2_SIZE_TI92P 32 #define IO2_SIZE_V200 32 #define IO2_SIZE_TI89T 256 // seems to be 128 instead of 64 ?! #define IO3_SIZE_TI92_I 0 #define IO3_SIZE_TI92_II 0 #define IO3_SIZE_TI89 0 #define IO3_SIZE_TI92P 0 #define IO3_SIZE_V200 0 #define IO3_SIZE_TI89T 256 #endif tiemu-3.03-nogdb+dfsg/src/core/state.c000066400000000000000000000253001220314353500175710ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: state.c 2601 2007-07-14 08:49:30Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin * Copyright (c) 2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* State images */ #ifdef HAVE_CONFIG_H # include #endif #include #include "libuae.h" #include "ti68k_int.h" #include "ti68k_err.h" #include "flash.h" #include "logging.h" #include "rtc_hw3.h" #define SAV_REVISION 21 // Current revision #define SAV_MINI 20 // Minimum supported revision int ti68k_state_parse(const char *filename, char **rom_file, char **tib_file) { FILE *f; IMG_INFO img; SAV_INFO sav; long pos, len; int ret = 0; // No filename, exits if(!strcmp(filename, "")) return 0; // Open file f = fopen(filename, "rb"); if(f == NULL) return ERR_CANT_OPEN_STATE; // Load ROM image header fread(&img, 1, sizeof(IMG_INFO), f); // Determine state image revision for backwards compatibility and load pos = ftell(f); fread(&sav.revision, sizeof(sav.revision), 1, f); fread(&sav.size, sizeof(sav.revision), 1, f); fseek(f, pos, SEEK_SET); fread(&sav, 1, sav.size, f); if(sav.revision < SAV_MINI) { ret = -2; goto ti68k_state_parse_exit; } ret = fseek(f, sav.str_offset, SEEK_SET); fread(&len, 1, sizeof(long), f); *rom_file = (char *)g_malloc(len); fread(*rom_file, 1, len, f); fread(&len, 1, sizeof(long), f); *tib_file = (char *)g_malloc(len); fread(*tib_file, 1, len, f); if(strcmp(params.rom_file, *rom_file) || strcmp(params.tib_file, *tib_file)) { ret = -2; goto ti68k_state_parse_exit; } ti68k_state_parse_exit: fclose(f); return ret; } static int load_bkpt(FILE *f, GList **l) { int ret; int i; long n, v; ret = fread(&n, sizeof(n), 1, f); for(i = 0; i < n; i++) { ret = fread(&v, sizeof(v), 1, f); *l = g_list_append(*l, GINT_TO_POINTER(v)); } return ret; } static int load_bkpt2(FILE *f, GList **l) { int ret; int i; long n; ret = fread(&n, sizeof(n), 1, f); for(i = 0; i < n; i++) { ADDR_RANGE *s = g_malloc(sizeof(ADDR_RANGE)); ret = fread(s, sizeof(ADDR_RANGE), 1, f); *l = g_list_append(*l, s); } return ret; } static int load_bkpt3(FILE *f, GList **l) { int ret; int i; long n; ret = fread(&n, sizeof(n), 1, f); for(i = 0; i < n; i++) { ADDR_BIT *s = g_malloc(sizeof(ADDR_BIT)); ret = fread(s, sizeof(ADDR_BIT), 1, f); *l = g_list_append(*l, s); } return ret; } /* Must be done between init_hardware and M68000_run. Typically called after initLib68k. This function (re)load the state of the calculator. It automagically determine the state file format. Return an error code if an error occured, 0 otherwise */ int ti68k_state_load(const char *filename) { FILE *f; IMG_INFO img; SAV_INFO sav; Ti68kHardware thw; int ret; long pos; int i; gchar *rf=NULL, *tf=NULL; // No filename, exits if(!strcmp(filename, "")) return 0; // Open file tiemu_info(_("loading state image: %s"), g_basename(filename)); f = fopen(filename, "rb"); if(f == NULL) return ERR_CANT_OPEN_STATE; // Load ROM image header fread(&img, 1, sizeof(IMG_INFO), f); // Determine state image revision and load state image header pos = ftell(f); fread(&sav.revision, sizeof(sav.revision), 1, f); fread(&sav.size, sizeof(sav.revision), 1, f); fseek(f, pos, SEEK_SET); fread(&sav, 1, sav.size, f); if(sav.revision < SAV_MINI) { fclose(f); return ERR_REVISION_MATCH; } // Does not accept state image different of emulator image if(ti68k_state_parse(filename, &rf, &tf) < 0) { if (rf) g_free(rf); if (tf) g_free(tf); return ERR_STATE_MATCH; } if (rf) g_free(rf); if (tf) g_free(tf); // Compare image infos with current image if(memcmp(&img, &img_infos, sizeof(IMG_INFO) - sizeof(char *))) return ERR_HEADER_MATCH; // Load internal hardware (registers and special flags) ret = fseek(f, sav.regs_offset, SEEK_SET); fread(®s, sizeof(regs), 1, f); // Load I/O ports state ret = fseek(f, sav.io_offset, SEEK_SET); fread(tihw.io , tihw.io_size, 1, f); fread(tihw.io2, tihw.io2_size, 1, f); fread(tihw.io3, tihw.io3_size, 1, f); // Load RAM content ret = fseek(f, sav.ram_offset, SEEK_SET); fread(tihw.ram, tihw.ram_size, 1, f); // Load extra infos ret = fseek(f, sav.misc_offset, SEEK_SET); fread(&thw, sizeof(Ti68kHardware), 1, f); tihw.on_off = thw.on_off; tihw.lcd_adr = thw.lcd_adr; tihw.contrast = thw.contrast; tihw.protect = thw.protect; tihw.archive_limit = thw.archive_limit; memcpy(tihw.ram_exec, thw.ram_exec, sizeof(tihw.ram_exec)); tihw.rtc3_beg = thw.rtc3_beg; tihw.rtc3_load = thw.rtc3_load; rtc3_state_load(); // Load modified FLASH segments ret = fseek(f, sav.rom_offset, SEEK_SET); for(i=0; i= 21) load_bkpt3(f, &bkpts.bits); // Update UAE structures m68k_setpc(m68k_getpc()); MakeFromSR(); fclose(f); // Update SAV file to latest revision if(sav.revision < SAV_REVISION) { ti68k_state_save(filename); } return 0; } static void save_bkpt(FILE *f, GList *l) { int i; long n, v; n = g_list_length(l); fwrite(&n, sizeof(n), 1, f); for(i = 0; i < n; i++) { v = GPOINTER_TO_INT(g_list_nth(l, i)->data); fwrite(&v, sizeof(v), 1, f); } } static void save_bkpt2(FILE *f, GList *l) { int i; long n; n = g_list_length(l); fwrite(&n, sizeof(n), 1, f); for(i = 0; i < n; i++) { ADDR_RANGE *s = g_list_nth(l, i)->data; fwrite(s, sizeof(ADDR_RANGE), 1, f); } } static void save_bkpt3(FILE *f, GList *l) { int i; long n; n = g_list_length(l); fwrite(&n, sizeof(n), 1, f); for(i = 0; i < n; i++) { ADDR_BIT *s = g_list_nth(l, i)->data; fwrite(s, sizeof(ADDR_BIT), 1, f); } } /* This function saves the state of the calculator. Can be called at any time. Return an error code if an error occured, 0 otherwise */ int ti68k_state_save(const char *filename) { FILE *f; IMG_INFO *img = &img_infos; SAV_INFO sav; int i; long len; long bkpts_size; if(!strlen(filename)) return ERR_CANT_OPEN_STATE; // Open file tiemu_info(_("saving state image (TiEmu v2.00 format): %s"), filename); f = fopen(filename, "wb"); if(f == NULL) return ERR_CANT_OPEN_STATE; // Save current image infos fwrite(img, 1, sizeof(IMG_INFO), f); // Fill state image infos sav.revision = SAV_REVISION; sav.size = sizeof(SAV_INFO); sav.regs_offset = sizeof(IMG_INFO) + sizeof(SAV_INFO); sav.io_offset = sav.regs_offset + sizeof(regs); sav.ram_offset = sav.io_offset + tihw.io_size + tihw.io2_size + tihw.io3_size; sav.misc_offset = sav.ram_offset + tihw.ram_size; sav.rom_offset = sav.misc_offset + sizeof(Ti68kHardware); sav.bkpts_offset = sav.rom_offset + wsm.nblocks*sizeof(int) + hw_flash_nblocks()*65536; bkpts_size = g_list_length(bkpts.code) * sizeof(long) + sizeof(long) + g_list_length(bkpts.exception) * sizeof(long) + sizeof(long) + g_list_length(bkpts.pgmentry) * sizeof(long) + sizeof(long) + g_list_length(bkpts.mem_rb) * sizeof(long) + sizeof(long) + g_list_length(bkpts.mem_rw) * sizeof(long) + sizeof(long) + g_list_length(bkpts.mem_rl) * sizeof(long) + sizeof(long) + g_list_length(bkpts.mem_wb) * sizeof(long) + sizeof(long) + g_list_length(bkpts.mem_ww) * sizeof(long) + sizeof(long) + g_list_length(bkpts.mem_wl) * sizeof(long) + sizeof(long) + g_list_length(bkpts.mem_rng_r) * sizeof(ADDR_RANGE) + sizeof(long) + g_list_length(bkpts.mem_rng_w) * sizeof(ADDR_RANGE) + sizeof(long) + g_list_length(bkpts.bits) * sizeof(ADDR_BIT) + sizeof(long) ; sav.str_offset = sav.bkpts_offset + bkpts_size; fwrite(&sav, 1, sizeof(SAV_INFO), f); // Update UAE structures MakeSR(); m68k_setpc(m68k_getpc()); // Save registers and special flags fwrite(®s, sizeof(regs), 1, f); // Save I/O ports state fwrite(tihw.io , tihw.io_size, 1, f); fwrite(tihw.io2, tihw.io2_size, 1, f); fwrite(tihw.io3, tihw.io3_size, 1, f); // Save RAM content fwrite(tihw.ram, tihw.ram_size, 1, f); // Save misc informations rtc3_state_save(); fwrite(&tihw, sizeof(Ti68kHardware), 1, f); // Save modified FLASH segments for(i=0; i #endif #ifdef __cplusplus extern "C" { #endif #include #include #include "tilibs.h" #include "mem_size.h" #include "rtc_hw3.h" #include "macros.h" /* Equivalences */ #ifdef __WIN32__ # define strcasecmp _stricmp #endif /* Constants */ #define MAXCHARS 256 #define TI92 (1 << 0) #define TI89 (1 << 1) #define TI92p (1 << 2) #define V200 (1 << 3) #define TI89t (1 << 4) #define CALC_MAX TI89t #define EXTERNAL 0 #define INTERNAL 1 #define EPROM_ROM 0 #define FLASH_ROM 2 #define KB (1024) #define MB (1024*KB) #define HW1 1 #define HW2 2 #define HW3 3 #define HW4 4 #define LCDMEM_W 240 // LCD _memory_ width #define LCDMEM_H 128 // LCD _memory_ height /* Structures */ typedef struct { char *rom_file; char *tib_file; char *sav_file; int restricted; // CPU rate of a real calc int cpu_rate; // OSC1 int hw_rate; // OSC2 int lcd_rate; // synched OSC2 (hw1) or OSC3 (hw2) int hw_protect; // HW protection int recv_file; // receive file enabled/disabled } Ti68kParameters; // If this structure is modified, the SAV_REVISION number (state.c) // has to be incremented. typedef struct { // misc (non hardware pseudo-constants) int calc_type; int ram_size; // RAM size int rom_size; // ROM size int io_size; // HWx io size int io2_size; // HW2 io size int io3_size; // HW3 io size uint32_t rom_base; // ROM base address int rom_flash; // ROM type char rom_version[5]; // ROM/AMS version int hw_type; // HW1/2/3/4 int ti92v1; // ROM v1.x(y) int ti92v2; // ROM v2.x int lcd_w; // LCD physical width int lcd_h; // LCD physical height // keyboard int on_key; // lcd uint32_t lcd_adr; // LCD address (as $4c00) char* lcd_ptr; // direct pointer to LCD in PC RAM int contrast; int log_w; // LCD logical width int log_h; // LCD logical height int on_off; unsigned long lcd_tick;// used by grayscales // memory uint8_t* rom; // ROM uint8_t* ram; // RAM uint8_t* io; // HW1/2/3 i/o ports uint8_t* io2; // HW2/3 i/o ports uint8_t* io3; // HW3 i/o ports uint8_t* unused; // unused uint32_t initial_ssp;// SSP at vector #0 uint32_t initial_pc; // PC at vector #1 // timer uint8_t timer_value;// Current timer value uint8_t timer_init; // Value to reload // rtc (hw2) uint8_t rtc_value; // RTC value // rtc (hw3) TTIME rtc3_ref; // time reference TTIME rtc3_beg; // time value when TTIME rtc3_load; // clock is load // protection int protect; // hw protection state uint32_t archive_limit; // archive memory limit int ram_exec[64]; // RAM page execution protection bitmask } Ti68kHardware; typedef struct { // Memory GList *mem_rb; // read byte GList *mem_rw; GList *mem_rl; GList *mem_wb; // write byte GList *mem_ww; GList *mem_wl; GList *mem_rng_r; // mem range GList *mem_rng_w; // Code GList *code; // Exceptions GList *exception; // Program entry GList *pgmentry; // Bits GList *bits; // Breakpoint cause int type; // Ti68kBkptType int mode; // Ti68kBkptMode int id; } Ti68kBreakpoints; typedef DeviceOptions Ti68kLinkPort; typedef struct { // PC int pclog_size; uint32_t* pclog_buf; int pclog_ptr; // Link int link_size; // buffer size uint16_t* link_buf; // buffer (LSB is data, MSB is S/R action) int link_ptr; // buffer index int link_mask; // actions (1: S, 2: R) } Ti68kLogging; /* Externs */ extern Ti68kParameters params; extern Ti68kHardware tihw; extern Ti68kLinkPort linkp; extern Ti68kBreakpoints bkpts; extern Ti68kLogging logger; /* Misc */ #ifndef TRY #define TRY(x) { int aaa_; if((aaa_ = (x))) return aaa_; } #endif #ifdef __cplusplus } #endif #endif tiemu-3.03-nogdb+dfsg/src/core/ti68k_err.h000066400000000000000000000032131220314353500202720ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: ti68k_err.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2002, Romain Lievin, Julien Blache * Copyright (c) 2003-2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_ERRCODES__ #define __TI68K_ERRCODES__ /* Error codes ERR_... */ /* Error codes must begin at 768 up to 1023 */ // New codes #define ERR_NONE 0 #define ERR_CANT_OPEN 768 #define ERR_INVALID_IMAGE 770 #define ERR_INVALID_UPGRADE 771 #define ERR_NO_IMAGE 772 #define ERR_INVALID_ROM_SIZE 774 #define ERR_NOT_TI_FILE 775 #define ERR_MALLOC 776 #define ERR_CANT_OPEN_DIR 777 #define ERR_CANT_UPGRADE 778 #define ERR_INVALID_ROM 779 #define ERR_CANT_OPEN_STATE 780 #define ERR_REVISION_MATCH 781 #define ERR_HEADER_MATCH 782 #define ERR_STATE_MATCH 783 #endif tiemu-3.03-nogdb+dfsg/src/core/ti68k_int.h000066400000000000000000000050441220314353500203000ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: ti68k_int.h 2433 2007-04-13 19:03:45Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_INTF__ #define __TI68K_INTF__ #include "ti68k_def.h" G_BEGIN_DECLS #include "tilibs.h" /*************/ /* Functions */ /*************/ //Note: [ti68k]_[group]_[short_or_long_name] // Initialization int ti68k_config_load_default(void); int ti68k_init(void); int ti68k_reset(void); int ti68k_exit(void); unsigned int ti68k_get_cycle_count(int reset, unsigned int *diff); // Link int ti68k_linkport_ready(void); int ti68k_linkport_send_file(const char *filename); int ti68k_linkport_unconfigure(void); int ti68k_linkport_reconfigure(void); int ti68k_calc_to_libti_calc(void); // Keyboard void ti68k_kbd_set_key(int key, int active); int ti68k_kbd_is_key_pressed(int key); int ti68k_kbd_push_chars(const char *chars); // Misc int ti68k_get_rom_size(int calc_type); int ti68k_get_ram_size(int calc_type); int ti68k_get_io_size(int calc_type); int ti68k_get_io2_size(int calc_type); int ti68k_get_io3_size(int calc_type); uint8_t* ti68k_get_real_address(uint32_t addr); // HW protection for the debugger void ti68k_unprotect_64KB_range(uint32_t addr); // Others #include "bkpts.h" #include "images.h" #include "registers.h" #include "state.h" #include "type2str.h" #include "debug.h" #include "timem.h" #include "vat.h" // Errors int ti68k_error_get(int err_num, char **error_msg); // Misc int ti68k_debug_load_symbols(const char *path); int ti68k_debug_load_iodefs(const char *path); int ti68k_debug_load_memmap(const char *path); G_END_DECLS #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/000077500000000000000000000000001220314353500174175ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/core/ti_hw/bits.h000066400000000000000000000030571220314353500205360ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __BITS__ #define __BITS__ #define bit_get(v,b) (((v) & (1 << (b))) >> (b)) #define bit_set(v,b) v |= (1 << (b)); #define bit_clr(v,b) v &= ~(1 << (b)); #define bit_tst(v,b) ((v) & (1 << b)) #define bit_chg(v,b,s) { \ if(s) \ { bit_set(v,b); } \ else \ { bit_clr(v,b); } \ } #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/dbus.c000066400000000000000000000336631220314353500205330ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbus.c 2839 2009-05-08 19:50:07Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Linkport management (D-bus serial input/output) */ #include #include #include #include #include #include "libuae.h" #include "ports.h" #include "dbus.h" #include "m68k.h" #include "engine.h" #include "gettimeofday.h" #include "tilibs.h" #include "ti68k_err.h" #include "ti68k_def.h" #include "ti68k_int.h" #include "tie_error.h" CableHandle* cable_handle = NULL; CalcHandle* calc_handle = NULL; /* Linkport (lp) / directfile (df) / void (vd) mappers */ void (*hw_dbus_reinit) (void); void (*hw_dbus_putbyte) (uint8_t arg); // TI -> outside uint8_t (*hw_dbus_getbyte) (void); // outside -> TI int (*hw_dbus_checkread) (void); static void lp_reinit (void); static void lp_putbyte (uint8_t arg); static uint8_t lp_getbyte (void); static int lp_checkread(void); static void df_reinit (void); static void df_putbyte (uint8_t arg); static uint8_t df_getbyte (void); static int df_checkread(void); static void vd_reinit (void); static void vd_putbyte (uint8_t arg); static uint8_t vd_getbyte (void); static int vd_checkread(void); static void map_dbus_to_cable(void) { hw_dbus_reinit = lp_reinit; hw_dbus_putbyte = lp_putbyte; hw_dbus_getbyte = lp_getbyte; hw_dbus_checkread = lp_checkread; } static void map_dbus_to_file(void) { hw_dbus_reinit = df_reinit; hw_dbus_putbyte = df_putbyte; hw_dbus_getbyte = df_getbyte; hw_dbus_checkread = df_checkread; } static void map_dbus_to_void(void) { hw_dbus_reinit = vd_reinit; hw_dbus_putbyte = vd_putbyte; hw_dbus_getbyte = vd_getbyte; hw_dbus_checkread = vd_checkread; } /* D-bus management (HW linkport) */ static int dbus_set = 0; int ilp_reset(CableHandle *h); int ilp_send(CableHandle *h, uint8_t *data, uint32_t len); int ilp_recv(CableHandle *h, uint8_t *data, uint32_t len); int hw_dbus_init(void) { int err; // exit has to be called before init if(dbus_set) return 0; // don't let linkport function pointers uninitialized map_dbus_to_void(); // set cable cable_handle = ticables_handle_new(linkp.cable_model, linkp.cable_port); if(cable_handle == NULL) { tiemu_err(0, "Can't set cable"); return -1; } ticables_options_set_timeout(cable_handle, linkp.cable_timeout); ticables_options_set_delay(cable_handle, linkp.cable_delay); // set calc linkp.calc_model = ti68k_calc_to_libti_calc(); calc_handle = ticalcs_handle_new(linkp.calc_model); if(calc_handle == NULL) { tiemu_err(0, "Can't set cable"); return -1; } // attach cable to calc (open cable) err = ticalcs_cable_attach(calc_handle, cable_handle); if(err) { ticalcs_handle_del(calc_handle); ticables_handle_del(cable_handle); tiemu_err(err, NULL); return -1; } // customize cable by overriding some methods if(linkp.cable_model == CABLE_ILP) { cable_handle->cable->reset = ilp_reset; cable_handle->cable->send = ilp_send; cable_handle->cable->recv = ilp_recv; } // and set pointers if(linkp.cable_model == CABLE_ILP) map_dbus_to_file(); // set mappers to internal file loader else map_dbus_to_cable(); // set mappers to external link cable dbus_set = !0; return 0; } int hw_dbus_reset(void) { // has to be init'ed first if(!dbus_set) return 0; hw_dbus_reinit(); return 0; } int hw_dbus_exit(void) { int err; // init has to be called before exit if(!dbus_set) return 0; // don't let linkport function pointers uninitialized map_dbus_to_void(); // detach cable from calc (close cable) err = (calc_handle ? ticalcs_cable_detach(calc_handle) : 0); if(err) { tiemu_err(err, NULL); return -1; } // delete calc & cable handles if (calc_handle) ticalcs_handle_del(calc_handle); if (cable_handle) ticables_handle_del(cable_handle); dbus_set = 0; return 0; } /* Void cable access */ static void vd_reinit (void) {}; static void vd_putbyte (uint8_t arg) {}; static uint8_t vd_getbyte (void) { return 0; }; static int vd_checkread(void) { return 0; }; /* Link cable access */ static int avail = 0; static void lp_reinit(void) { int err; avail = 0; err = ticables_cable_reset(cable_handle); if(err) tiemu_err(err, NULL); } static void lp_putbyte(uint8_t arg) { int err; err = ticables_cable_put(cable_handle, arg); if(err) { io_bit_set(0x0d,7); // error printf("lp_putbyte error !\n"); return; } io_bit_set(0x0d,6); // tx reg empty io_bit_set(0x0d,2); // link activity } static uint8_t lp_getbyte(void) { int err; uint8_t arg; if(!avail) { io_bit_set(0x0d,7); printf("lp_getbyte (byte lost) !\n"); } err = ticables_cable_get(cable_handle, &arg); if(err) { io_bit_set(0x0d,7); // error printf("lp_getbyte error !\n"); return 0x00; } avail = 0; return arg; } static int lp_checkread(void) { int err = 0; CableStatus status = 0; if(avail) return 0; err = ticables_cable_check(cable_handle, &status); if(err) { io_bit_set(0x0d,7); // error printf("lp_checkread error !\n"); return 0x00; } if(status & STATUS_RX) { io_bit_set(0x0d,5); // rx reg full io_bit_set(0x0d,2); // link activity avail = !0; } return avail; } /* Link file access */ static int sip = 0; // sending in progress static int rip = 0; // receive in progress int t2f_data; // ti => file data int t2f_flag; // data available int f2t_data; // file => ti data int f2t_flag; // data available int recfile_flag; // receive file at end of instruction void df_reinit(void) { t2f_flag = f2t_flag = 0; } void df_putbyte(uint8_t arg) { t2f_data = arg; t2f_flag = 1; if(!sip) { if(params.recv_file) recfile_flag = 1; else io_bit_set(0x0d,7); // SLE=1: error } } uint8_t df_getbyte(void) { f2t_flag = 0; return f2t_data; } int df_checkread(void) { if(f2t_flag) { io_bit_set(0x0d,5); // rx reg full } return f2t_flag; } /* Internal link port emulation for direct sending/receiving files. The code below is not very obvious at first glance. This is the reason why I am explaining the idea and mechanisms. The idea is to use TiLP's libticalcs since libticalcs contains all the code needed for communicating with a TI (software protocol, file handling). The libticalcs is built on libticables, a library which handles link cables (hardware protocol). In fact, I simply reimplement the basic functions of libticables usually used by libticalcs for sending/receiving data. These functions exchange bytes with the linkport at HW level (ports.c). The libticalcs provides the abstraction we need for this. Wonderful, isn't it ?! Take a look at the 'TiLP framework' power ;-) */ /* libticables functions (link API) */ int ilp_reset(CableHandle *h) { return t2f_flag = f2t_flag = 0; } int ilp_send(CableHandle *h, uint8_t *data, uint32_t len) { unsigned int i; tiTIME clk; for(i = 0; i < len; i++) { f2t_data = data[i]; f2t_flag = 1; io_bit_set(0x0d,5); // SRX=1 (rx reg is full) hw_m68k_irq(4); // this turbo-boost transfer ! TO_START(clk); while(f2t_flag) { hw_m68k_run(1, 0); if(TO_ELAPSED(clk, linkp.cable_timeout)) return ERROR_WRITE_TIMEOUT; }; } return 0; } int ilp_recv(CableHandle *h, uint8_t *data, uint32_t len) { unsigned int i; tiTIME clk; for(i = 0; i < len; i++) { TO_START(clk); while(!t2f_flag) { hw_m68k_run(1, 0); if(TO_ELAPSED(clk, linkp.cable_timeout)) return ERROR_WRITE_TIMEOUT; }; data[i] = t2f_data; t2f_flag = 0; io_bit_set(0x0d,6); // STX=1 (tx reg is empty) hw_m68k_irq(4); // this turbo-boost transfer (30% faster) } return 0; } static int do_cpu(int duration) // thenth of seconds { tiTIME clk; TO_START(clk); while(1) { hw_m68k_run(1, 0); if(TO_ELAPSED(clk, duration)) return !0;; }; return 0; } int send_ti_file(const char *filename) { gint ok = 0; int ret; struct timeval start, finish; double duration; // Check for TI file if(!tifiles_file_is_ti(filename)) return ERR_NOT_TI_FILE; if(((tifiles_file_get_model(filename) == CALC_TI92)) || (tifiles_file_get_model(filename) == CALC_TI89) || (tifiles_file_get_model(filename) == CALC_TI89T) || (tifiles_file_get_model(filename) == CALC_TI92P) || (tifiles_file_get_model(filename) == CALC_V200) || (tifiles_file_is_tigroup(filename)) ) { ok = 1; } else return ERR_NOT_TI_FILE; // Use direct file loading gettimeofday(&start, NULL); sip = 1; // Check whether calc is ready... Otherwise, goes to HOME. ret = ticalcs_calc_isready(calc_handle); if(ret == 257) /* ERR_NOT_READY = 257 */ { switch(tihw.calc_type) { case TI89: case TI89t: ret = ticalcs_calc_send_key(calc_handle, 277); break; case TI92: case TI92p: case V200: ret = ticalcs_calc_send_key(calc_handle, 8273); break; default: break; } do_cpu(5); if(ret) { sip = 0; goto send_ti_file_exit; } } // FLASH APP file ? if(tifiles_file_is_app(filename)) { // increase timeout due to excessive time for last ACK linkp.cable_timeout *= 10; ret = ticalcs_calc_send_app2(calc_handle, filename); linkp.cable_timeout /= 10; } // FLASH OS file ? if(tifiles_file_test(filename, TIFILE_OS, calc_handle->model)) { ret = ticalcs_calc_send_app2(calc_handle, filename); } // Group file ? else if(tifiles_file_is_group(filename)) { ret = ticalcs_calc_send_var2(calc_handle, MODE_NORMAL, filename); } // Backup file ? else if(tifiles_file_is_backup(filename)) { ret = ticalcs_calc_send_backup2(calc_handle, filename); } // Single file else if(tifiles_file_is_single(filename)) { ret = ticalcs_calc_send_var2(calc_handle, MODE_NORMAL, filename); } // TiGroup file else if(tifiles_file_is_tigroup(filename)) { // increase timeout due to excessive time for last ACK (file may contains apps) linkp.cable_timeout *= 10; ret = ticalcs_calc_send_tigroup2(calc_handle, filename, TIG_ALL); linkp.cable_timeout /= 10; } // Restore link cable use sip = 0; gettimeofday(&finish, NULL); duration = (double)(finish.tv_sec - start.tv_sec) + (double)(finish.tv_usec - start.tv_usec) / 1000000.; printf("Duration: %2.1lf seconds.\n", duration); // Transfer aborted ? Set hw link error send_ti_file_exit: if(ret) { tiemu_err(ret, NULL); io_bit_set(0x0d,7); // SLE=1 df_reinit(); } return 0; } int ti68k_linkport_ready(void) { int ret; int pedrom; // Some OS versions lock up if they get a readiness probe too early in the boot cycle. hw_m68k_run(1250000,5000000); // Hack: PedroM doesn't like resetting the link flag here, so handle it specially. // Test this now because this might not be set yet if the OS hasn't booted up yet. pedrom = (mem_rd_word(0x32) == (('R'<<8)+'O')); // Block sending and receiving. if (sip || rip) return 0; sip = 1; ret = ticalcs_calc_isready(calc_handle); if(ret) { if (!pedrom) io_bit_set(0x0d,7); // SLE=1 df_reinit(); // Try getting the calculator ready. // FIXME: This won't work immediately, it will at first return FALSE a few times and you'll have to retry. // However, it should be enough for KTIGCC to work. engine_stop(); hw_m68k_irq(6); while (ti68k_debug_is_supervisor()) hw_m68k_run(1,0); engine_start(); ti68k_kbd_push_chars("\f"); hw_m68k_run(1250000,5000000); ret = ticalcs_calc_isready(calc_handle); } if(ret) { if (!pedrom) io_bit_set(0x0d,7); // SLE=1 df_reinit(); } sip = 0; return !ret; } int display_recv_files_dbox(const char *src, const char *dst); int recfile(void) { int ret; char src_fn[1024]; char dst_fn[1024]; VarEntry *ve; recfile_flag = 0; // Make this function not re-entrant if(rip) return 0; else rip = 1; // Some models and AMS versions send an RDY packet when entering in // the VAR-Link menu or just before sending variable. We skip it ! if(t2f_data == 0x89 && tihw.calc_type != TI92) { uint8_t arg[4]; int i; ilp_recv(cable_handle, arg, 4); for(i = 0; i < 4; i++) printf("purging <%02x>\n", arg[i]); if(tihw.calc_type != TI89t) goto recfile_end; } // Receive variable in non-silent mode strcpy(src_fn, g_get_tmp_dir()); strcat(src_fn, G_DIR_SEPARATOR_S); strcat(src_fn, "file.rec"); ret = ticalcs_calc_recv_var_ns2(calc_handle, MODE_NORMAL, src_fn, &ve); // Check for error if(ret) { io_bit_set(0x0d,7); // SLE=1 t2f_flag = f2t_flag = 0; tiemu_err(ret, NULL); goto recfile_end; } // Construct filename strcpy(dst_fn, g_get_tmp_dir()); strcat(dst_fn, G_DIR_SEPARATOR_S); if(ve) { char *basename; //single basename = ticonv_varname_to_filename(calc_handle->model, ve->name, ve->type); strcat(dst_fn, basename); strcat(dst_fn, "."); strcat(dst_fn, tifiles_vartype2fext(calc_handle->model, ve->type)); tifiles_ve_delete(ve); } else { // group strcat(dst_fn, "group."); strcat(dst_fn, tifiles_fext_of_group(linkp.calc_model)); } // Open a box display_recv_files_dbox(src_fn, dst_fn); // end recfile_end: rip = 0; return 0; } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/dbus.h000066400000000000000000000030461220314353500205300ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_DBUS__ #define __TI68K_DBUS__ #include "tilibs.h" int hw_dbus_init(void); int hw_dbus_reset(void); int hw_dbus_exit(void); extern void (*hw_dbus_reinit) (void); extern void (*hw_dbus_putbyte) (uint8_t arg); extern uint8_t (*hw_dbus_getbyte) (void); extern int (*hw_dbus_checkread) (void); int send_ti_file(const char *filename); int recfile(void); /* Variables */ extern CableHandle* cable_handle; extern CalcHandle* calc_handle; extern int recfile_flag; #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/flash.c000066400000000000000000000171221220314353500206630ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: flash.c 2372 2007-02-25 21:43:23Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* FLASH algorithm management: - Sharp's LH28F160S3T: TI89/TI92+ - Sharp's LH28F320BF: V200/TI89 Titanium */ #include #include #include #include //memset #include "mem.h" #include "ti68k_def.h" #include "flash.h" #include "logging.h" FLASH_WSM wsm; int hw_flash_init(void) { memset(&wsm, 0, sizeof(FLASH_WSM)); wsm.nblocks = tihw.rom_size >> 16; wsm.changed = calloc(wsm.nblocks, sizeof(int)); wsm.write_phase = 0x50; return 0; } int hw_flash_reset(void) { return 0; } int hw_flash_exit(void) { if(wsm.changed != NULL) free(wsm.changed); wsm.changed = NULL; return 0; } int hw_flash_nblocks(void) { int i, n = 0; for(i = 0; i < wsm.nblocks; i++) if(wsm.changed[i]) n++; return n; } /* Read a byte from a Sharp FLASH memory. */ uint8_t FlashReadByte(uint32_t addr) { if (wsm.write_phase == 0x90) { switch(addr & 0xffff) { case 0: return (tihw.calc_type == V200 || tihw.calc_type == TI89t) ? 0xb0 : 0x89; // manufacturer code case 1: return 0x00; case 2: return 0xb5; // device code case 3: return 0x00; default: return 0xff; } } return get_b(tihw.rom, addr, tihw.rom_size - 1) | wsm.ret_or; } uint16_t FlashReadWord(uint32_t addr) { if (wsm.write_phase == 0x90) { switch(addr & 0xffff) { case 0: return (tihw.calc_type == V200 || tihw.calc_type == TI89t) ? 0xb0 : 0x89; // manufacturer code case 2: return 0x00b5; // device code default: return 0xffff; } } return get_w(tihw.rom, addr, tihw.rom_size - 1) | wsm.ret_or; } uint32_t FlashReadLong(uint32_t addr) { return (FlashReadWord(addr) << 16) | FlashReadWord(addr+2); } /* Write a byte to a Sharp FLASH memory */ void FlashWriteByte(uint32_t addr, uint8_t v) { //int i; uint8_t *rom = tihw.rom; if(tihw.calc_type == TI92) return; if(tihw.protect) return; addr -= tihw.rom_base; addr &= tihw.rom_size - 1; // Write State Machine (WSM, Sharp's data sheet) if (wsm.write_ready) { if(rom[addr] != v) wsm.changed[addr>>16] = !0; rom[addr] &= v; /* can't set bits from 0 to 1 with a write! */ wsm.write_ready--; wsm.ret_or = 0xffffffff; } else if (v == 0x50) { // clear status register wsm.write_phase = 0x50; } else if (v == 0x10) { //byte write setup/confirm if (wsm.write_phase == 0x50) { wsm.write_phase = 0x51; } else if (wsm.write_phase == 0x51) { wsm.write_ready = 2; wsm.write_phase = 0x50; } } else if (v == 0x20) { // block erase setup/confirm if (wsm.write_phase == 0x50) { wsm.write_phase = 0x20; } } else if (v == 0xd0) { // confirm and block erase if (wsm.write_phase == 0x20) { wsm.write_phase = 0xd0; wsm.ret_or = 0xffffffff; wsm.erase = 0xffffffff; wsm.erase_phase = 0; memset(&rom[addr & 0xff0000], 0xff, 64*KB); wsm.changed[addr>>16] = !0; //printf("%i erased\n", addr>>16); } } else if (v == 0xff) { // read array/reset if (wsm.write_phase == 0x50) { wsm.write_ready = 0; wsm.ret_or = 0; } } else if (v == 0x90) { // read identifier codes wsm.write_phase = 0x90; } } void FlashWriteWord(uint32_t addr, uint16_t data) { // roms: fix me... FlashWriteByte(addr+0,MSB(data)); FlashWriteByte(addr+1,LSB(data)); } void FlashWriteLong(uint32_t addr, uint32_t data) { FlashWriteWord(addr+0,(uint16_t)((data>>16)&0xffff)); FlashWriteWord(addr+2,(uint16_t)((data>> 0)&0xffff)); } /* Search for a vector table and get SSP & PC values. This is needed by m68k_reset() for booting. */ void find_ssp_and_pc(uint32_t *ssp, uint32_t *pc) { int vt = 0x000000; // vector table // find PC reset vector if(tihw.rom_flash) { // FLASH (TI89, TI92+, V200, ...) for (vt = 0x12000; vt < tihw.rom_size; vt++) { uint8_t *rom = tihw.rom + vt; if(rom[0] == 0xcc && rom[1] == 0xcc && rom[2] == 0xcc && rom[3] == 0xcc) { vt += 4; break; } } *ssp = tihw.rom[vt+3] | (tihw.rom[vt+2]<<8) | (tihw.rom[vt+1]<<16) | (tihw.rom[vt]<<24); vt += 4; // skip SP *pc = tihw.rom[vt+3] | (tihw.rom[vt+2]<<8) | (tihw.rom[vt+1]<<16) | (tihw.rom[vt]<<24); } else { // EPROM (TI92) vt = 0; *ssp = tihw.rom[vt+3] | (tihw.rom[vt+2]<<8) | (tihw.rom[vt+1]<<16) | (tihw.rom[vt]<<24); vt += 4; // skip SP *pc = tihw.rom[vt+3] | (tihw.rom[vt+2]<<8) | (tihw.rom[vt+1]<<16) | (tihw.rom[vt]<<24); } tiemu_info(_("found SSP=$%06x and PC=$%06x at offset 0x%x"), *ssp, *pc, vt - 0x12000); } /* #if 0 #define printd printf #else #define printd #endif void FlashWriteWord(uint32_t addr, uint16_t data) { uint8_t *rom = tihw.rom; if(tihw.calc_type == TI92) return; if(tihw.protect) return; addr -= tihw.rom_base; addr &= tihw.rom_size - 1; if((addr & 0x1fff) == 0x1000) printf("WW: $%06x: %04x ($%06x)\n", addr+ti_rom_base[log_b2(tihw.calc_type)], data, m68k_getpc()); // Write State Machine (WSM, Sharp's data sheet) switch(data & 0xff) { case FCD_SETUP_BYTE_WRITE: //0x10: byte write setup/confirm printd("FCD_SETUP_BYTE_WRITE: $%06x\n", m68k_getpc()); wsm.cmd = 0x10; wsm.write = 1; break; default: printd("FCD_BYTE_WRITE: %04x at $%06x\n", data, m68k_getpc()); if(wsm.write) { wsm.cmd = 0xff; rom[addr+0] = MSB(data); rom[addr+1] = LSB(data); wsm.write = 0; wsm.ret_or = 0xffffffff; } break; case FCD_SETUP_BLCK_ERASE: //0x20: block erase setup/confirm printd("FCD_SETUP_BLCK_ERASE: $%06x\n", m68k_getpc()); wsm.cmd = 0x20; wsm.erase = 1; break; case FCD_CONFIRM_BLK_ERASE: //0xd0: confirm and block erase if(wsm.cmd == 0x20) { printd("FCD_CONFIRM_BLK_ERASE: $%06x\n", m68k_getpc()); wsm.cmd = 0xd0; memset(&rom[addr & 0xff0000], 0xff, 64*KB); wsm.erase = 0; wsm.ret_or = 0xffffffff; } break; case FCD_CLEAR_STATUS: //0x50: clear status register printd("FCD_CLEAR_STATUS: $%06x\n", m68k_getpc()); wsm.cmd = 0x50; wsm.write = 0; wsm.erase = 0; wsm.ret_or = 0; break; case FCD_READ_ID_CODES: //0x90: read identifier codes printd("FCD_READ_ID_CODES: $%06x\n", m68k_getpc()); wsm.cmd = 0x90; break; case FCD_READ_OR_RESET: //0xff: read array/reset printd("FCD_READ_OR_RESET: $%06x\n", m68k_getpc()); if(wsm.erase || wsm.write) break; wsm.cmd = 0xff; wsm.write = 0; wsm.erase = 0; wsm.ret_or = 0; break; } } */ tiemu-3.03-nogdb+dfsg/src/core/ti_hw/flash.h000066400000000000000000000042171220314353500206710ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_FLASH__ #define __TI68K_FLASH__ #include "stdint.h" /* Types */ typedef struct { int cmd; // FLASH command (CUI) int ret_or; // status flag int write; // write in progress int erase; // erase in progress int *changed; // 64KB blocks changed int nblocks; // number of blocks int write_ready; // will be removed later int write_phase; int erase_phase; } FLASH_WSM; extern FLASH_WSM wsm; /* Functions */ int hw_flash_init(void); int hw_flash_reset(void); int hw_flash_exit(void); int hw_flash_nblocks(void); uint8_t FlashReadByte(uint32_t addr); uint16_t FlashReadWord(uint32_t addr); uint32_t FlashReadLong(uint32_t addr); void FlashWriteByte(uint32_t addr, uint8_t v); void FlashWriteWord(uint32_t addr, uint16_t v); void FlashWriteLong(uint32_t addr, uint32_t v); void find_ssp_and_pc(uint32_t *ssp, uint32_t *pc); /* Command definitions */ #define FCD_SETUP_BYTE_WRITE 0x10 #define FCD_SETUP_BLCK_ERASE 0x20 #define FCD_CONFIRM_BLK_ERASE 0xd0 #define FCD_CLEAR_STATUS 0x50 #define FCD_READ_ID_CODES 0x90 #define FCD_READ_OR_RESET 0xff #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/gscales.c000066400000000000000000000272311220314353500212110ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: gscales.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2002, Romain Lievin, Julien Blache * Copyright (c) 2003-2004, Romain Liévin * Copyright (c) 2005-2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Gray-scale detection and management. Rewritten by K. Kofler. */ #include #include #include #include #include "libuae.h" #include "mem.h" #include "ports.h" #include "dbus.h" #include "kbd.h" #include "m68k.h" #include "images.h" #include "ti68k_def.h" #define BUFSIZE 16 // store 16 plane addresses #define UPDATE_PLANES 16 // must be a multiple of BUFSIZE uint32_t lcd_planes[5]; uint8_t *lcd_planebufs[3]; int lcd_changed = 0; int ngc = 1; /* Grayscale management (common) */ static void process_address(uint32_t plane_addr) { static uint32_t lcd_addrs[BUFSIZE]; static uint8_t lcd_buffers[BUFSIZE*3][3840]; static int lcd_cumulative_tickcounts[BUFSIZE]; static int lcd_last_plane_count; static uint32_t lcd_last_planes[3]; int lcd_exptime[3] = {0, 0, 0}; int lcd_apparitions[3] = {0, 0, 0}; int lcd_first_apparition[3] = {0, 0, 0}; int cycle_start = 0, cycle_end; // cycle = [cycle_start, cycle_end[ (semi-open interval) static int cnt; static int already_reset; uint32_t tmp; // Detect plane switches and sync on them if (!already_reset) { switch (lcd_last_plane_count) { case 2: if (plane_addr == lcd_last_planes[1]) break; // We have a third plane we haven't had before. Try resetting. if (ngc <= 4) { cnt += BUFSIZE - (cnt % BUFSIZE); already_reset = 1; break; } case 1: if (plane_addr == lcd_last_planes[0]) break; case 0: lcd_last_planes[lcd_last_plane_count++] = plane_addr; break; default: if (plane_addr == lcd_last_planes[0] || plane_addr == lcd_last_planes[1] || plane_addr == lcd_last_planes[2]) break; // We have a 4th plane, reset the buffer. cnt += BUFSIZE - (cnt % BUFSIZE); already_reset = 1; } } lcd_addrs[cnt % BUFSIZE] = plane_addr; memcpy(lcd_buffers[cnt % (BUFSIZE * 3)], &tihw.ram[plane_addr], 3840); if (plane_addr == lcd_planes[0]) { lcd_planebufs[0] = lcd_buffers[cnt % (BUFSIZE * 3)]; lcd_changed = 1; } else if (ngc > 1 && plane_addr == lcd_planes[1]) { lcd_planebufs[1] = lcd_buffers[cnt % (BUFSIZE * 3)]; lcd_changed = 1; } else if (ngc > 4 && plane_addr == lcd_planes[2]) { lcd_planebufs[2] = lcd_buffers[cnt % (BUFSIZE * 3)]; lcd_changed = 1; } lcd_cumulative_tickcounts[cnt++ % BUFSIZE] = tihw.lcd_tick; if(!(cnt % UPDATE_PLANES)) { int np, i, buffer_offset, ngp=1; #if 0 static int old_ngp=1; #endif /* 0 */ already_reset = 0; lcd_last_plane_count = 0; cycle_end = BUFSIZE - 1; // -1 because we'll need to read // up to cycle_end for the // exposition times // get address of plane #0 np = 1; lcd_planes[0] = lcd_planes[1] = lcd_planes[2] = lcd_planes[3] = lcd_planes[4] = lcd_addrs[0]; // get address of plane #1 for(i = 1; i < BUFSIZE; i++) { if(lcd_addrs[i] != lcd_planes[0]) { lcd_planes[1] = lcd_addrs[i]; np++; break; } } // get address of plane #2 for(i = 1; i < BUFSIZE; i++) { if((lcd_addrs[i] != lcd_planes[0]) && (lcd_addrs[i] != lcd_planes[1])) { lcd_planes[2] = lcd_addrs[i]; np++; break; } } // get address of plane #3 (plane-switching) for(i = 1; i < BUFSIZE; i++) { if((lcd_addrs[i] != lcd_planes[0]) && (lcd_addrs[i] != lcd_planes[1]) && (lcd_addrs[i] != lcd_planes[2])) { // plane-switching: set plane switch as last possible end of cycle cycle_end = i; lcd_planes[3] = lcd_addrs[i]; np++; break; } } // get address of plane #4 (plane-switching) for(i = 1; i < BUFSIZE; i++) { if((lcd_addrs[i] != lcd_planes[0]) && (lcd_addrs[i] != lcd_planes[1]) && (lcd_addrs[i] != lcd_planes[2]) && (lcd_addrs[i] != lcd_planes[3])) { lcd_planes[4] = lcd_addrs[i]; np++; break; } } // ignore plane #5 (can be produced by plane-switching, but we don't need it) if (np < 4) ngp = np; else if (np == 4) { ngp = 2; // plane-switching: set plane switch as last possible end of cycle for(i = 1; i < BUFSIZE; i++) { if(lcd_addrs[i] == lcd_planes[2]) { cycle_end = i; break; } } // reset plane 2 lcd_planes[2] = lcd_planes[0]; } else ngp = 3; // search for a full cycle // Use the fact that if there are only 2 planes, plane 2 is the same as plane 0. if (ngp >= 2) { // skip the first plane (not a complete exposition) for (i = 0; lcd_addrs[i] == lcd_addrs[0]; i++); for (; i <= cycle_end; i++) { // only count an apparition if the plane has actually changed if (lcd_addrs[i] == lcd_planes[0] && lcd_addrs[i-1] != lcd_planes[0]) if (!(lcd_apparitions[0]++)) lcd_first_apparition[0] = i; if (lcd_addrs[i] == lcd_planes[1] && lcd_addrs[i-1] != lcd_planes[1]) if (!(lcd_apparitions[1]++)) lcd_first_apparition[1] = i; if (lcd_addrs[i] == lcd_planes[2] && lcd_addrs[i-1] != lcd_planes[2]) if (!(lcd_apparitions[2]++)) lcd_first_apparition[2] = i; // stop (WITHOUT incrementing i) if all planes appeared at least twice if (lcd_apparitions[0] >= 2 && lcd_apparitions[1] >= 2 && lcd_apparitions[2] >= 2) break; } if (i > cycle_end) { // printf("Warning: no full grayscale cycle found (BUFSIZE too small?)\n"); cycle_start = 0; } else { if (lcd_addrs[i] == lcd_planes[0]) cycle_start = lcd_first_apparition[0]; else if (lcd_addrs[i] == lcd_planes[1]) cycle_start = lcd_first_apparition[1]; else if (lcd_addrs[i] == lcd_planes[2]) cycle_start = lcd_first_apparition[2]; cycle_end = i; } // compute exposure time of plane #0 within the cycle for(i = cycle_start; i < cycle_end; i++) { if(lcd_addrs[i] == lcd_planes[0]) lcd_exptime[0] += (lcd_cumulative_tickcounts[i+1] - lcd_cumulative_tickcounts[i]); } // compute exposure time of plane #1 within the cycle for(i = cycle_start; i < cycle_end; i++) { if(lcd_addrs[i] == lcd_planes[1]) lcd_exptime[1] += (lcd_cumulative_tickcounts[i+1] - lcd_cumulative_tickcounts[i]); } // compute exposure time of plane #2 within the cycle for(i = cycle_start; i < cycle_end; i++) { if(lcd_addrs[i] == lcd_planes[2]) lcd_exptime[2] += (lcd_cumulative_tickcounts[i+1] - lcd_cumulative_tickcounts[i]); } // sort plane addresses by exposition times if(lcd_exptime[0] < lcd_exptime[1]) { tmp = lcd_planes[0]; lcd_planes[0] = lcd_planes[1]; lcd_planes[1] = tmp; tmp = lcd_exptime[0]; lcd_exptime[0] = lcd_exptime[1]; lcd_exptime[1] = tmp; } if((ngp >= 3) && (lcd_exptime[0] < lcd_exptime[2])) { tmp = lcd_planes[0]; lcd_planes[0] = lcd_planes[2]; lcd_planes[2] = tmp; tmp = lcd_exptime[0]; lcd_exptime[0] = lcd_exptime[2]; lcd_exptime[2] = tmp; } if((ngp >= 3) && (lcd_exptime[1] < lcd_exptime[2])) { tmp = lcd_planes[1]; lcd_planes[1] = lcd_planes[2]; lcd_planes[2] = tmp; tmp = lcd_exptime[1]; lcd_exptime[1] = lcd_exptime[2]; lcd_exptime[2] = tmp; } } #if 0 if(old_ngp != ngp) printf("Detected %i planes !\n", ngp); old_ngp = ngp; #endif /* 0 */ // now, determine number of grayscales (kevin) if(ngp == 1) ngc = 1; else if(ngp == 2) ngc = 3; else if(ngp == 3) { // check using fast integer computation and no possible divisions by 0 // whether lcd_exptime[0] / lcd_exptime[2] > 3.5 = 7/2 if (lcd_exptime[0] * 2 > lcd_exptime[2] * 7) ngc = 8; else ngc = 7; } // set the pointers to the plane buffers switch ((cnt / BUFSIZE) % 3) { case 1: buffer_offset = 0; break; case 2: buffer_offset = BUFSIZE; break; default: buffer_offset = 2 * BUFSIZE; break; } for (i = BUFSIZE - 1; i >= 0; i--) { if (lcd_addrs[i] == lcd_planes[0]) { lcd_planebufs[0] = lcd_buffers[i + buffer_offset]; break; } } if (ngp >= 2) { for (i = BUFSIZE - 1; i >= 0; i--) { if (lcd_addrs[i] == lcd_planes[1]) { lcd_planebufs[1] = lcd_buffers[i + buffer_offset]; break; } } } if (ngp >= 3) { for (i = BUFSIZE - 1; i >= 0; i--) { if (lcd_addrs[i] == lcd_planes[2]) { lcd_planebufs[2] = lcd_buffers[i + buffer_offset]; break; } } } lcd_changed = 1; #if 0 for (i=cycle_start; i>8); printf("\n"); printf("%i (%i): %06x-%06x-%06x (%i-%i-%i)\n", ngp, ngc, lcd_planes[0], lcd_planes[1], lcd_planes[2], lcd_exptime[0]>>4, lcd_exptime[1]>>4, lcd_exptime[2]>>4 ); #endif } } /* HW1 grayscale management */ void lcd_hook_hw1(void) { process_address(tihw.lcd_adr); } /* HW2 grayscale management */ void lcd_hook_hw2(int refresh) { static int dead_cnt = 0; #ifdef _MSC_VER #pragma warning( push ) #pragma warning( disable : 4305 ) #endif static const char d0d7a2a6_moveml_d0d7a2a6_a1[6] = {0x7c,0xff,0x48,0xd1,0x7c,0xff}; static const char d1d7a2a6_moveml_d1d7a2a6_a1[6] = {0x7c,0xfe,0x48,0xd1,0x7c,0xfe}; static const char d0d7a2a7_moveml_d0d7a2a7_a1[6] = {0xfc,0xff,0x48,0xd1,0xfc,0xff}; #ifdef _MSC_VER #pragma warning( pop ) #endif // if refresh from GTK (calc.c), set 1 plane, read directly from LCD_MEM if(refresh) { if(++dead_cnt < 5) return; lcd_planes[0] = tihw.lcd_adr; lcd_planebufs[0] = &tihw.ram[tihw.lcd_adr]; ngc = 1; lcd_changed = 1; } // if refresh from CPU loop (m68k.c), search for opcode signature: else { unsigned char *pc_p = regs.pc_p; if (*(pc_p++) == 0x4c && *(pc_p++) == 0xd8) // search for the movem (%a0)+,... instruction { if(!memcmp(pc_p, d0d7a2a6_moveml_d0d7a2a6_a1, 6) || !memcmp(pc_p, d0d7a2a7_moveml_d0d7a2a7_a1, 6)) { uint32_t a0 = m68k_areg(regs,0)-0xa00; uint32_t a1 = m68k_areg(regs,1)-0xa00; if(a1 == 0x4c0c) a0 -= 12; else if(a1 != 0x4c00) return; process_address(a0); dead_cnt = 0; } else if (!memcmp(pc_p, d1d7a2a6_moveml_d1d7a2a6_a1, 6)) { uint32_t a0 = m68k_areg(regs,0); uint32_t a1 = m68k_areg(regs,1); if(a1 != 0x4c00) return; process_address(a0); dead_cnt = 0; } } } } // opcode signature: // TIGCC grayscale lib and most others: // movem.l (%a0)+,%d0-%d7/%a2-%a6 ; (%a1)==0x4c00+0xa00 => plane:=-0xa00(%a0) // graphlib-titanik and graphlib-iceberg: // movem.l (%a0)+,%d0-%d7/%a2-%a6 ; (%a1)==0x4c00+0xa00+12 => plane:=-0xa00-12(%a0) // Patrick Davidson's gray.asm: // movem.l (%a0)+,%d1-%d7/%a2-%a6 ; (%a1)==0x4c00 => plane:=(%a0) // Grib: // movem.l (%a0)+,%d0-%d7/%a2-%a7 ; (%a1)==0x4c00+0xa00 => plane:=-0xa00(%a0) tiemu-3.03-nogdb+dfsg/src/core/ti_hw/gscales.h000066400000000000000000000021761220314353500212170ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: hw.h 1455 2005-05-31 18:38:03Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2005, Romain Lievin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_GSCALES__ #define __TI68K_GSCALES__ void lcd_hook_hw1(void); void lcd_hook_hw2(int refresh); extern uint32_t lcd_planes[]; extern uint8_t *lcd_planebufs[]; extern int lcd_changed; extern int ngc; #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/hw.c000066400000000000000000000171571220314353500202140ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: hw.c 2749 2007-12-30 17:55:13Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2002, Romain Lievin, Julien Blache * Copyright (c) 2003-2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* TI's ASIC management: glue logic for screen, keyboard, linkport, timers. */ #include #include #include #include "libuae.h" #include "mem.h" #include "ports.h" #include "dbus.h" #include "kbd.h" #include "hwprot.h" #include "flash.h" #include "m68k.h" #include "images.h" #include "ti68k_def.h" #include "gettimeofday.h" #include "gscales.h" // This is the ratio OSC1/(OSC2/2^5). We express everything else in fractions of OSC2/2^5. // On HW1, AI3 is triggered every ~10/7 of a second. #define HW1_RATE 427 // 10MHz / (2^19*(10/7)/2^5) #define HW2_RATE 732 // 12MHz / (2^19/2^5) #define HW4_RATE 977 // 16MHz / (2^19/2^5) // Timer masks at 2^5, 2^9, 2^12, 2^18 (port $600015) const unsigned int timer_masks[4] = {0, 15, 127, 8191}; unsigned int timer_mask = 15; unsigned int cycle_instr = HW1_RATE; unsigned int cycle_count = 0; void set_prescaler(int i) { timer_mask = timer_masks[i]; } /* Init hardware... A ROM image must have been loaded before calling this function. */ int hw_init(void) { IMG_INFO *img = &img_infos; // Get infos from image tihw.calc_type = img_infos.calc_type; tihw.rom_base = img->rom_base << 16; tihw.rom_flash = img->flash; strcpy(tihw.rom_version, img->version); tihw.hw_type = img->hw_type; tihw.ti92v1 = (tihw.calc_type == TI92) && (strcmp(tihw.rom_version, "2.0") < 0); tihw.ti92v2 = (tihw.calc_type == TI92) && (strcmp(tihw.rom_version, "2.0") >= 0); switch(tihw.calc_type) { case TI89: case TI89t: tihw.log_w = tihw.lcd_w = 160; tihw.log_h = tihw.lcd_h = 100; break; case TI92: case TI92p: case V200: tihw.log_w = tihw.lcd_w = 240; tihw.log_h = tihw.lcd_h = 128; break; default: return -1; break; } // Do sub-initializations. TRY(hw_mem_init()); TRY(hw_flash_init()); TRY(hw_io_init()); TRY(hw_hwp_init()); TRY(hw_dbus_init()); TRY(hw_kbd_init()); TRY(hw_m68k_init()); // Set hardware update rate (dependant from io[0x15]) if(params.hw_rate != -1) cycle_instr = params.hw_rate; else if(tihw.hw_type == HW1) cycle_instr = HW1_RATE; else if(tihw.hw_type <= HW3) cycle_instr = HW2_RATE; else cycle_instr = HW4_RATE; return 0; } int hw_reset(void) { TRY(hw_mem_reset()); TRY(hw_flash_reset()); TRY(hw_io_reset()); TRY(hw_hwp_reset()); TRY(hw_kbd_reset()); TRY(hw_dbus_reset()); TRY(hw_m68k_reset()); return 0; } int hw_exit(void) { TRY(hw_m68k_exit()); TRY(hw_dbus_exit()); TRY(hw_kbd_exit()); TRY(hw_io_exit()); TRY(hw_flash_exit()); TRY(hw_mem_exit()); TRY(hw_hwp_exit()); return 0; } G_LOCK_DEFINE(lcd_flag); volatile int lcd_flag = !0; /* This function is called by do_cycles to regularly updates the hardware. Rate is the same as the timer tick rate. */ void hw_update(void) { static unsigned int timer; //time_t curr_clock; // OSC2 enable (bit clear means oscillator stopped!) int osc2_enabled = io_bit_tst(0x15,1); timer++; if (osc2_enabled) { // Increment timer if(!(timer & timer_mask) && io_bit_tst(0x15,3)) { if (tihw.timer_value == 0x00) tihw.timer_value = tihw.io[0x17]; else tihw.timer_value++; } } // Increment HW2 RTC timer every 8192 seconds if ((tihw.hw_type >= HW2) && io2_bit_tst(0x1f, 2) && io2_bit_tst(0x1f, 1)) { static struct timeval ref = {0, 0}; struct timeval tmp = {0, 0}; gettimeofday(&tmp, NULL); // Check if 8192 seconds elapsed, avoiding 32-bit overflow if((unsigned)(tmp.tv_sec-ref.tv_sec)*500000u + ((unsigned)(tmp.tv_usec-ref.tv_usec)>>1u) >= 4096000000u) { gettimeofday(&ref, NULL); tihw.rtc_value++; } } // Toggles every FS (every time the LCD restarts at line 0) -> 90 Hz ~ timer/192 // Don't use the actual LCD count (and use 192 rather than 182) to keep exposure // times consistent if(!(timer % 192) && tihw.hw_type >= HW2) tihw.io2[0x1d] ^= 0x80; /* Auto-int management */ if (osc2_enabled) { // Auto-int 1: 1/2^6 of timer rate // Triggered at a fixed rate: OSC2/2^11 = (OSC2/2^5)/2^6 if(!(timer & 63)) { if(!io_bit_tst(0x15,7)) if((tihw.hw_type == HW1) || !(io2_bit_tst(0x1f, 2) && !io2_bit_tst(0x1f, 1))) hw_m68k_irq(1); } // Auto-int 2: keyboard scan // see keyboard.c } if(osc2_enabled || tihw.hw_type == HW2) { // Auto-int 3: disabled by default by AMS // When enabled, it is triggered at a fixed rate: OSC2/2^19 = 1/16384 of timer rate = 1Hz if(!(timer & 16383)) { if(!io_bit_tst(0x15,7) && io_bit_tst(0x15,2)) if((tihw.hw_type == HW1) || !(io2_bit_tst(0x1f, 2) && !io2_bit_tst(0x1f, 1))) hw_m68k_irq(3); } } // DBus: External link activity ? /* if(!ticables_cable_get_d0(cable_handle) || !ticables_cable_get_d1(cable_handle)) { io_bit_set(0x0d,3); //SA io_bit_set(0x0d,2); //EA } */ // DBUS enabled ? if(!io_bit_tst(0x0c,6)) { // Check for data arrival (link cable) hw_dbus_checkread(); // Auto-int 4: triggered by linkport (error, link act, txbuf empty or rxbuf full) if((io_bit_tst(0x0c,3) && io_bit_tst(0x0d,7)) || (io_bit_tst(0x0c,2) && io_bit_tst(0x0d,3)) || (io_bit_tst(0x0c,1) && io_bit_tst(0x0d,6)) || (io_bit_tst(0x0c,0) && io_bit_tst(0x0d,5))) { hw_m68k_irq(4); } } if (osc2_enabled) { // Auto-int 5: triggered by the programmable timer. // The default rate is OSC2/(K*2^9), where K=79 for HW1 and K=53 for HW2 // Make sure AI5 is triggered only if the timer was actually incremented. if(!(timer & timer_mask) && io_bit_tst(0x15,3) && tihw.timer_value == 0) { if(!io_bit_tst(0x15,7)) if((tihw.hw_type == HW1) || !(io2_bit_tst(0x1f, 2) && !io2_bit_tst(0x1f, 1))) hw_m68k_irq(5); } } // Auto-int 6: triggered when [ON] is pressed. // see keyboard.c // Auto-int 7: "vector table write protection" & "stack overflow" // see memory.c /* Hardware refresh */ // Update keyboard (~600Hz). Not related to timer but as a convenience if(!(timer & 127)) // 31 and 63 don't work, 127 and 255 are ok hw_kbd_update(); // Update LCD (HW1: every 256th timer tick, HW2: unrelated) if((tihw.hw_type == HW1) && !(timer & 255)) { G_LOCK(lcd_flag); lcd_flag = !0; G_UNLOCK(lcd_flag); lcd_hook_hw1(); } } /* This function is used to regularly update the hardware from CPU loop. Note that CPU is running against OSC1 (HW1 @10Mhz, HW2 @12MHz) while hardware is synched against OSC2 (HW1 @700kHz, HW2 @~520 kHz). OSC2 is the timing base for the timers, the link I/O hardware and (HW1 only) the LCD controller. These 2 oscillators are independants. See hw.h for inline definition. */ /* static void INLINE do_cycles(void); */ tiemu-3.03-nogdb+dfsg/src/core/ti_hw/hw.h000066400000000000000000000030521220314353500202060ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2005, Christian Walther (patches for Mac OS-X port) * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_HARDWARE__ #define __TI68K_HARDWARE__ int hw_init(void); int hw_reset(void); int hw_exit(void); int hw_update(void); extern unsigned int cycle_instr; extern unsigned int cycle_count; #ifdef __WIN32__ #define INLINE __inline #else #define INLINE __inline #endif static void INLINE do_cycles(void) { if(cycle_count >= cycle_instr) { hw_update(); cycle_count -= cycle_instr; } } #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/hwprot.c000066400000000000000000000241221220314353500211070ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: hwprot.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Memory management: TI89/92+/V200/Titanium FLASH with Hardware Protection */ #include #include #include #include "libuae.h" #include "ports.h" #include "mem.h" #include "mem89.h" #include "hwprot.h" #include "ti68k_def.h" #include "ti68k_int.h" static uint32_t ba; // FLASH ROM base address (shortcut) static int access1; // protection access authorization (hw1) static int access2; // protection access authorization (hw2) static int crash; // access counter before crashing static int arch_mem_crash; // same #define IN_BOUNDS2(a,v,b) (((v) >= ((a)+ba)) && ((v) <= ((b)+ba))) #define HWP int hw_hwp_init(void) { tihw.protect = 0; ba = tihw.rom_base - 0x200000; access1 = access2 = crash = arch_mem_crash = 0; if (tihw.hw_type >= HW2) tihw.io2[0x13] = 0x18; return 0; } int hw_hwp_reset(void) { return 0; } int hw_hwp_exit(void) { return 0; } static void freeze_calc(void) { access1 = access2 = crash = 0; m68k_setstopped(1); } // note: "if(!(adr & 1))" is used to avoid multiple increment when reading/writing words. // This don't work for longs but I don't think protection is accessed by longs. /* Check whether instruction fetch is allowed at adr. The returned value can be used by breakpoints to determine the origin of violation. */ int hwp_fetch(uint32_t adr) { // protections (hw1) if(tihw.hw_type == HW1) { if(IN_BOUNDS2(0x390000+tihw.archive_limit*0x10000, adr, 0x3fffff)) // archive memory limit (hw1) { // three consecutive access to any adress >=$390000+limit*$10000 and <$400000 crashes the calc if(!(adr & 1)) arch_mem_crash++; if((tihw.hw_type == HW1) && (arch_mem_crash >= 4)) { freeze_calc(); return 1; } } } // protections (hw2) else { if(IN_BOUNDS(0x000000, adr, 0x03ffff)) // RAM page execution protection { if(tihw.ram_exec[adr >> 12]) { freeze_calc(); return 2; } } else if(IN_BOUNDS(0x040000, adr, 0x1fffff)) // RAM page execution protection { if(io2_bit_tst(6, 7)) { freeze_calc(); return 2; } } else if(IN_BOUNDS2(0x210000, adr, 0x1fffff + tihw.rom_size)) // FLASH page execution protection { if(adr >= (0x210000+ba + (uint32_t)tihw.io2[0x13]*0x10000)) { //printf(">> $%06x-%06x ", adr, 0x210000+ba + (uint32_t)tihw.io2[0x13]*0x10000); freeze_calc(); return 3; } } } return 0; } uint8_t hwp_get_byte(uint32_t adr) { #ifdef HWP // stealth I/O if(IN_BOUNDS(0x040000, adr, 0x07ffff)) // archive memory limit bit 0 (hw1) { if(!tihw.protect && (tihw.hw_type == HW1)) bit_clr(tihw.archive_limit, 0); } else if(IN_BOUNDS(0x080000, adr, 0x0bffff)) // archive memory limit bit 1 (hw1) { if(!tihw.protect && (tihw.hw_type == HW1)) bit_clr(tihw.archive_limit, 1); } else if(IN_BOUNDS(0x0c0000, adr, 0x0fffff)) // archive memory limit bit 2 (hw1) { if(!tihw.protect && (tihw.hw_type == HW1)) bit_clr(tihw.archive_limit, 2); } else if(IN_BOUNDS(0x180000, adr, 0x1bffff)) // screen power control { //tihw.on_off = 0; } else if(IN_BOUNDS(0x1c0000, adr, 0x1fffff)) // protection enable { // FIXME: >=7 is probably too lax, but the actual number can vary a lot due to the prefetch. // I guess we should check instructions rather than access counts on HW2. if((access1 >= 3) || (++access2 >= 7)) { tihw.protect = !0; access1 = access2 = 0; } else if(tihw.hw_type == HW1) { // any four consecutive access to $1c0000-1fffff crashes a HW1 calc if(!(adr & 1)) crash++; if(crash >= 4) { freeze_calc(); } } } else if(IN_BOUNDS2(0x200000, adr, 0x20ffff)) // protection access authorization { if(tihw.hw_type == HW1) if(!(adr & 1)) access1++; if(tihw.hw_type != HW1) if(!(adr & 1)) access2++; } else if(IN_BOUNDS2(0x210000, adr, 0x211fff)) // certificate (read protected) { if(tihw.protect) return 0x14; } else if(IN_BOUNDS2(0x212000, adr, 0x217fff)) // protection access authorization { if(tihw.hw_type == HW1) if(!(adr & 1)) access1++; if(tihw.hw_type != HW1) if(!(adr & 1)) access2++; } else if(IN_BOUNDS2(0x218000, adr, 0x219fff)) // read protected { if(tihw.protect) return 0x14; } else if(IN_BOUNDS2(0x21a000, adr, 0x21ffff)) // protection access authorization { if(tihw.hw_type == HW1) if(!(adr & 1)) access1++; if(tihw.hw_type != HW1) if(!(adr & 1)) access2++; } else { access1 = access2 = 0; crash = arch_mem_crash = 0; } #endif // memory return mem_get_byte_ptr(adr); } uint16_t hwp_get_word(uint32_t adr) { // We can't implement this in terms of hwp_get_byte, because the FlashROM // hardware behaves differently for byte and word reads (see flash.c). #ifdef HWP // stealth I/O if(IN_BOUNDS(0x040000, adr, 0x07ffff)) // archive memory limit bit 0 (hw1) { if(!tihw.protect && (tihw.hw_type == HW1)) bit_clr(tihw.archive_limit, 0); } else if(IN_BOUNDS(0x080000, adr, 0x0bffff)) // archive memory limit bit 1 (hw1) { if(!tihw.protect && (tihw.hw_type == HW1)) bit_clr(tihw.archive_limit, 1); } else if(IN_BOUNDS(0x0c0000, adr, 0x0fffff)) // archive memory limit bit 2 (hw1) { if(!tihw.protect && (tihw.hw_type == HW1)) bit_clr(tihw.archive_limit, 2); } else if(IN_BOUNDS(0x180000, adr, 0x1bffff)) // screen power control { //tihw.on_off = 0; } else if(IN_BOUNDS(0x1c0000, adr, 0x1fffff)) // protection enable { access2 += 2; // FIXME: >=7 is probably too lax, but the actual number can vary a lot due to the prefetch. // I guess we should check instructions rather than access counts on HW2. if((access1 >= 3) || (access2 >= 7)) { tihw.protect = !0; access1 = access2 = 0; } else if(tihw.hw_type == HW1) { // any four consecutive access to $1c0000-1fffff crashes a HW1 calc crash++; if(crash >= 4) { freeze_calc(); } } } else if(IN_BOUNDS2(0x200000, adr, 0x20ffff)) // protection access authorization { if(tihw.hw_type == HW1) access1++; else access2++; } else if(IN_BOUNDS2(0x210000, adr, 0x211fff)) // certificate (read protected) { if(tihw.protect) return 0x1414; } else if(IN_BOUNDS2(0x212000, adr, 0x217fff)) // protection access authorization { if(tihw.hw_type == HW1) access1++; else access2++; } else if(IN_BOUNDS2(0x218000, adr, 0x219fff)) // read protected { if(tihw.protect) return 0x1414; } else if(IN_BOUNDS2(0x21a000, adr, 0x21ffff)) // protection access authorization { if(tihw.hw_type == HW1) access1++; else access2++; } else { access1 = access2 = 0; crash = arch_mem_crash = 0; } #endif // memory return mem_get_word_ptr(adr); } uint32_t hwp_get_long(uint32_t adr) { return (hwp_get_word(adr+0) << 16) | hwp_get_word(adr+2); } void hwp_put_byte(uint32_t adr, uint8_t arg) { #ifdef HWP // stealth I/O if(IN_BOUNDS(0x040000, adr, 0x07ffff)) // archive memory limit bit 0 (hw1) { if(!tihw.protect && (tihw.hw_type == HW1)) bit_set(tihw.archive_limit, 0); } else if(IN_BOUNDS(0x080000, adr, 0x0bffff)) // archive memory limit bit 1 (hw1) { if(!tihw.protect && (tihw.hw_type == HW1)) bit_set(tihw.archive_limit, 1); } else if(IN_BOUNDS(0x0c0000, adr, 0x0fffff)) // archive memory limit bit 2 (hw1) { if(!tihw.protect && (tihw.hw_type == HW1)) bit_set(tihw.archive_limit, 2); } else if(IN_BOUNDS(0x180000, adr, 0x1bffff)) // screen power control { //tihw.on_off = !0; } else if(IN_BOUNDS(0x1c0000, adr, 0x1fffff)) // protection disable { // FIXME: >=7 is probably too lax, but the actual number can vary a lot due to the prefetch. // I guess we should check instructions rather than access counts on HW2. if((access1 >= 3) || (++access2 >= 7)) { tihw.protect = 0; access1 = access2 = 0; } else if(tihw.hw_type == HW1) { // any four consecutive accesses to $1c0000-1fffff crash an HW1 calc if(!(adr & 1)) crash++; if(crash >= 4) { freeze_calc(); } } } else if(IN_BOUNDS2(0x200000, adr, 0x20ffff)) // protection access authorization { if(tihw.hw_type == HW1) if(!(adr & 1)) access1++; if(tihw.hw_type != HW1) if(!(adr & 1)) access2++; // don't write on boot code return; } else if(IN_BOUNDS2(0x210000, adr, 0x211fff)) // certificate (read protected) { } else if(IN_BOUNDS2(0x212000, adr, 0x217fff)) // protection access authorization { if(tihw.hw_type == HW1) if(!(adr & 1)) access1++; if(tihw.hw_type != HW1) if(!(adr & 1)) access2++; } else if(IN_BOUNDS2(0x218000, adr, 0x219fff)) // read protected { } else if(IN_BOUNDS2(0x21a000, adr, 0x21ffff)) // protection access authorization { if(tihw.hw_type == HW1) if(!(adr & 1)) access1++; if(tihw.hw_type != HW1) if(!(adr & 1)) access2++; } else { access1= access2 = 0; crash = arch_mem_crash = 0; } #endif // memory mem_put_byte_ptr(adr, arg); return; } void hwp_put_word(uint32_t adr, uint16_t arg) { hwp_put_byte(adr+0, MSB(arg)); hwp_put_byte(adr+1, LSB(arg)); } void hwp_put_long(uint32_t adr, uint32_t arg) { hwp_put_word(adr+0, MSW(arg)); hwp_put_word(adr+2, LSW(arg)); } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/hwprot.h000066400000000000000000000030021220314353500211060ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_HWPROTECT__ #define __TI68K_HWPROTECT__ #include "stdint.h" /* Functions */ int hw_hwp_init(void); int hw_hwp_reset(void); int hw_hwp_exit(void); int hwp_fetch(uint32_t adr); uint8_t hwp_get_byte(uint32_t addr); uint16_t hwp_get_word(uint32_t addr); uint32_t hwp_get_long(uint32_t addr); void hwp_put_long(uint32_t addr, uint32_t arg); void hwp_put_word(uint32_t addr, uint16_t arg); void hwp_put_byte(uint32_t addr, uint8_t arg); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/kbd.c000066400000000000000000000164751220314353500203400ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: kbd.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Keyboard management */ #include #include #include #include "libuae.h" #include "keydefs.h" #include "ti68k_def.h" #include "m68k.h" #include "bits.h" #include "ports.h" #include "tichars.h" static TiKey key_states[NB_MAX_KEYS]; static int *key_row; static int key_change; static int on_change; static int *key_buffer; static int *key_buffer_ptr; static int key_buffer_state; int keyRow92[10][8] = { {TIKEY_DOWN, TIKEY_RIGHT, TIKEY_UP, TIKEY_LEFT, TIKEY_HAND, TIKEY_SHIFT, TIKEY_DIAMOND, TIKEY_2ND}, {TIKEY_3, TIKEY_2, TIKEY_1, TIKEY_F8, TIKEY_W, TIKEY_S, TIKEY_Z, TIKEY_VOID}, {TIKEY_6, TIKEY_5, TIKEY_4, TIKEY_F3, TIKEY_E, TIKEY_D, TIKEY_X, TIKEY_VOID}, {TIKEY_9, TIKEY_8, TIKEY_7, TIKEY_F7, TIKEY_R, TIKEY_F, TIKEY_C, TIKEY_STORE}, {TIKEY_COMMA, TIKEY_PARIGHT, TIKEY_PALEFT, TIKEY_F2, TIKEY_T, TIKEY_G, TIKEY_V, TIKEY_SPACE}, {TIKEY_TAN, TIKEY_COS, TIKEY_SIN, TIKEY_F6, TIKEY_Y, TIKEY_H, TIKEY_B, TIKEY_DIVIDE}, {TIKEY_P, TIKEY_ENTER2, TIKEY_LN, TIKEY_F1, TIKEY_U, TIKEY_J, TIKEY_N, TIKEY_POWER}, {TIKEY_MULTIPLY, TIKEY_APPS, TIKEY_CLEAR, TIKEY_F5, TIKEY_I, TIKEY_K, TIKEY_M, TIKEY_EQUALS}, {TIKEY_NU, TIKEY_ESCAPE, TIKEY_MODE, TIKEY_PLUS, TIKEY_O, TIKEY_L, TIKEY_THETA, TIKEY_BACKSPACE}, {TIKEY_NEGATE, TIKEY_PERIOD, TIKEY_0, TIKEY_F4, TIKEY_Q, TIKEY_A, TIKEY_ENTER1, TIKEY_MINUS} }; int keyRow89[10][8] = { {TIKEY_ALPHA, TIKEY_DIAMOND, TIKEY_SHIFT, TIKEY_2ND, TIKEY_RIGHT, TIKEY_DOWN, TIKEY_LEFT, TIKEY_UP}, {TIKEY_F5, TIKEY_CLEAR, TIKEY_POWER, TIKEY_DIVIDE, TIKEY_MULTIPLY, TIKEY_MINUS, TIKEY_PLUS, TIKEY_ENTER1}, {TIKEY_F4, TIKEY_BACKSPACE, TIKEY_T, TIKEY_COMMA, TIKEY_9, TIKEY_6, TIKEY_3, TIKEY_NEGATE}, {TIKEY_F3, TIKEY_CATALOG, TIKEY_Z, TIKEY_PARIGHT, TIKEY_8, TIKEY_5, TIKEY_2, TIKEY_PERIOD}, {TIKEY_F2, TIKEY_MODE, TIKEY_Y, TIKEY_PALEFT, TIKEY_7, TIKEY_4, TIKEY_1, TIKEY_0}, {TIKEY_F1, TIKEY_HOME, TIKEY_X, TIKEY_EQUALS, TIKEY_PIPE, TIKEY_EE, TIKEY_STORE, TIKEY_APPS}, {TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_ESCAPE}, {TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID}, {TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID}, {TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID, TIKEY_VOID} }; int keyRowV200[10][8] = { {TIKEY_DOWN, TIKEY_RIGHT, TIKEY_UP, TIKEY_LEFT, TIKEY_HAND, TIKEY_SHIFT, TIKEY_DIAMOND, TIKEY_2ND}, {TIKEY_3, TIKEY_2, TIKEY_1, TIKEY_F8, TIKEY_W, TIKEY_S, TIKEY_Z, TIKEY_NU}, {TIKEY_6, TIKEY_5, TIKEY_4, TIKEY_F3, TIKEY_E, TIKEY_D, TIKEY_X, TIKEY_NU}, {TIKEY_9, TIKEY_8, TIKEY_7, TIKEY_F7, TIKEY_R, TIKEY_F, TIKEY_C, TIKEY_STORE}, {TIKEY_COMMA, TIKEY_PARIGHT, TIKEY_PALEFT, TIKEY_F2, TIKEY_T, TIKEY_G, TIKEY_V, TIKEY_SPACE}, {TIKEY_TAN, TIKEY_COS, TIKEY_SIN, TIKEY_F6, TIKEY_Y, TIKEY_H, TIKEY_B, TIKEY_DIVIDE}, {TIKEY_P, TIKEY_ENTER2, TIKEY_LN, TIKEY_F1, TIKEY_U, TIKEY_J, TIKEY_N, TIKEY_POWER}, {TIKEY_MULTIPLY, TIKEY_APPS, TIKEY_CLEAR, TIKEY_F5, TIKEY_I, TIKEY_K, TIKEY_M, TIKEY_EQUALS}, {TIKEY_NU, TIKEY_ESCAPE, TIKEY_MODE, TIKEY_PLUS, TIKEY_O, TIKEY_L, TIKEY_THETA, TIKEY_BACKSPACE}, {TIKEY_NEGATE, TIKEY_PERIOD, TIKEY_0, TIKEY_F4, TIKEY_Q, TIKEY_A, TIKEY_ENTER1, TIKEY_MINUS} }; int hw_kbd_init(void) { int i; key_change = 0; on_change = 0; tihw.on_key = 0; switch(tihw.calc_type) { case TI89: case TI89t: key_row = (int*)keyRow89; break; case TI92: case TI92p: key_row = (int*)keyRow92; break; case V200: key_row = (int*)keyRowV200; default: break; } for(i = 0; i < MAX_TIKEYS; i++) key_states[i] = 0; return 0; } int hw_kbd_reset(void) { return 0; } int hw_kbd_exit(void) { key_row = NULL; return 0; } void ti68k_kbd_set_key(int key, int active) { if(key == TIKEY_ALPHA) { if(active) { key_states[key]++; key_change = !0; } else key_states[key]--; } else if(key == TIKEY_ON) { tihw.on_key = active; if(active) on_change = !0; } else { key_states[key] = active; if(active) key_change = !0; } } int ti68k_kbd_is_key_pressed(int key) { return key_states[key]; } int hw_kbd_update(void) // ~600Hz { // Push the keys we have been asked to push by ti68k_kbd_push_chars. if (key_buffer) { int key = *key_buffer_ptr; if (key == -1) { free(key_buffer); key_buffer = NULL; key_buffer_ptr = NULL; key_buffer_state = 0; } else if (key == TIKEY_VOID) // give the calculator some time to react { if (++key_buffer_state == 30) { key_buffer_state = 0; key_buffer_ptr++; } } else { switch (key_buffer_state++) { case 0: ti68k_kbd_set_key(key,TRUE); break; case 7: ti68k_kbd_set_key(key,FALSE); break; case 16: key_buffer_state = 0; key_buffer_ptr++; break; default: break; } } } if(key_change) { // Auto-Int 2 is triggered when the first unmasked key is pressed. Keeping the key // pressed, or pressing another one without releasing the first key, will not generate // additional interrupts. if((tihw.hw_type == HW1) || !(io2_bit_tst(0x1f, 2) && !io2_bit_tst(0x1f, 1))) hw_m68k_irq(2); key_change = 0; } if((on_change == 1) && tihw.on_key) { // Auto-Int 6 triggered when [ON] is pressed. hw_m68k_irq(6); on_change = 0; } return 0; } static uint8_t get_rowmask(uint8_t r) { uint8_t rc = 0; int i; int *row = key_row + (r << 3); for(i=0; i<8; i++) { rc |= (key_states[row[i]] & 1) << (7-i); } return rc; } uint8_t hw_kbd_read_cols(void) { static uint8_t i; static uint8_t arg; static uint16_t mask; mask = (((uint16_t)tihw.io[0x18]) << 8) | tihw.io[0x19]; for(i = 0, arg = 0; i < 10; i++) { if(!(mask & (1< #include "libuae.h" #include "ti68k_def.h" #include "ti68k_err.h" #include "mem.h" #include "hw.h" #include "hwprot.h" #include "bkpts.h" #include "images.h" #include "handles.h" #include "flash.h" #include "dbus.h" #include "gscales.h" #ifndef NO_SOUND #include "ports.h" #include "stream.h" #include "engine.h" #include "gettimeofday.h" #endif int pending_ints; int hw_m68k_init(void) { // init breakpoints ti68k_bkpt_clear_address(); ti68k_bkpt_clear_exception(); ti68k_bkpt_clear_pgmentry(); bkpts.mode = bkpts.type = bkpts.id = 0; // set trap on illegal instruction ti68k_bkpt_add_exception(4); // init instruction logging logger.pclog_size = 11; logger.pclog_buf = (uint32_t *)malloc(logger.pclog_size * sizeof(uint32_t)); if(logger.pclog_buf == NULL) return ERR_MALLOC; logger.pclog_ptr = 0; init_m68k(); return 0; } int hw_m68k_reset(void) { // retrieve SSP & PC values for boot find_ssp_and_pc(&tihw.initial_ssp, &tihw.initial_pc); // and reset m68k_reset(); pending_ints = 0; return 0; } int hw_m68k_exit(void) { ti68k_bkpt_clear_address(); ti68k_bkpt_clear_exception(); free(logger.pclog_buf); return 0; } // UAE does not implement interrupt priority and pending interrupts // I re-implement it as replacement of Interrupt() void Interrupt2(int nr) { if((nr > regs.intmask) || (nr == 7)) { Interrupt(nr); pending_ints &= ~(1 << nr); // clr pending int } } void hw_m68k_irq(int n) { set_special(SPCFLAG_INT); currIntLev = n; // unused, used for compat with old Interrupt() pending_ints |= (1 << n); // set pending int } // parse pending ints for one to raise (up to low prority order) #define GET_INT_LVL(level) \ { \ int mask = 0x80; \ for (level = 7; level; level--, mask >>= 1) \ if (pending_ints & mask) \ break; \ } /* Replace UAE's M68000_run() */ /* Returns cycle count. */ static unsigned int cycles = 0; unsigned int hw_m68k_get_cycle_count(int reset) { if(reset) cycles = 0; return cycles; } /* Do 'n' instructions (up to 'maxcycles', unless set to 0). Returned value: - 1 if breakpoint has been encountered, - 2 if trace, - 0 otherwise. */ int hw_m68k_run(int n, unsigned maxcycles) { int i=n; GList *l = NULL; unsigned int cycles_at_start = cycles; #ifndef NO_SOUND static unsigned int cycles_sound_441 = 0; static struct timeval last_sound_event = {0, 0}; static unsigned int usecs_sound_441 = 0; #endif for(i = 0; i < n && (!maxcycles || cycles - cycles_at_start < maxcycles); i++) { uae_u32 opcode; unsigned int insn_cycles; #ifndef NO_SOUND unsigned cutoff; int low_power_mode = 0; #endif // refresh hardware do_cycles(); // OSC1 stopped ? Refresh hardware and wake-up on interrupt. No opcode execution. if ((regs.spcflags & SPCFLAG_STOP)) { if(pending_ints) { int level; GET_INT_LVL(level); // wake-up on int level 6 (ON key) or level 1..5 if ((pending_ints & (tihw.io[5] << 1)) || (level == 6)) { Interrupt2(level); regs.stopped = 0; regs.spcflags &= ~SPCFLAG_STOP; } } cycles += 4; // cycle count for hw_m68k_run loop cycle_count += 4; // cycle count for hw.c timers tihw.lcd_tick += 4; // used by grayscale for time plane exposure #ifdef NO_SOUND continue; #else low_power_mode = 1; insn_cycles = 4; goto check_sound; #endif } // search for code breakpoint if(((l = bkpts.code) != NULL) && !(regs.spcflags & SPCFLAG_DBSKIP) && !(regs.spcflags & SPCFLAG_BRK)) { bkpts.id = 0; while(l) { if(BKPT_ADDR(GPOINTER_TO_INT(l->data)) == (int)m68k_getpc()) { if(BKPT_IS_TMP(GPOINTER_TO_INT(l->data))) bkpts.code = g_list_remove(bkpts.code, l->data); bkpts.type = BK_TYPE_CODE; //regs.spcflags |= SPCFLAG_BRK; return 1; } bkpts.id++; l = g_list_next(l); } } // search for pgrm entry breakpoint if((bkpts.pgmentry != NULL) && !(regs.spcflags & SPCFLAG_DBSKIP) && !(regs.spcflags & SPCFLAG_BRK)) { uint16_t handle = GPOINTER_TO_INT(bkpts.pgmentry->data) >> 16; uint16_t offset = GPOINTER_TO_INT(bkpts.pgmentry->data) & 0xffff; bkpts.id = 0; if(heap_deref(handle)+offset == (int)m68k_getpc()) { bkpts.type = BK_TYPE_PGMENTRY; return DBG_BREAK; } } // store PC in the log buffer if(logger.pclog_size > 1) { logger.pclog_buf[logger.pclog_ptr++] = m68k_getpc(); if (logger.pclog_ptr >= logger.pclog_size) logger.pclog_ptr = 0; } // hardware protection if(params.hw_protect) { if((bkpts.id = hwp_fetch(m68k_getpc()))) { bkpts.type = BK_TYPE_PROTECT; return DBG_HWPV; } } // search for next opcode and execute it opcode = get_iword_prefetch (0); insn_cycles = (*cpufunctbl[opcode])(opcode) * 2; // increments PC automatically now cycles += insn_cycles; // cycle count for hw_m68k_run loop cycle_count += insn_cycles; // cycle count for hw.c timers tihw.lcd_tick += insn_cycles; // used by grayscale for time plane exposure // HW2/3 grayscales management lcd_hook_hw2(0); #ifndef NO_SOUND // Sound emulation check_sound: if (audio_isactive) { cycles_sound_441 += insn_cycles * 441; cutoff = params.restricted // num_cycles_per_loop / (ENGINE_TIME_LIMIT * (44100/441) / 1000) ? (unsigned) engine_num_cycles_per_loop() / ((unsigned) ENGINE_TIME_LIMIT / 10u) // check every 100 cycles : 44100u; if (cycles_sound_441 >= cutoff) { // keep excess cycles so we don't accumulate delays cycles_sound_441 -= cutoff; if (params.restricted || !last_sound_event.tv_sec) { // for seamless switching to !params.restricted // or when we don't have a last_sound_event yet gettimeofday(&last_sound_event, NULL); usecs_sound_441 = 0u; } else { static struct timeval this_sound_event = {0, 0}; gettimeofday(&this_sound_event, NULL); usecs_sound_441 += (this_sound_event.tv_sec - last_sound_event.tv_sec) * 441000000u + (this_sound_event.tv_usec - last_sound_event.tv_usec) * 441u; last_sound_event = this_sound_event; if (usecs_sound_441 < 10000u) goto skip_sound_processing; // keep excess usecs so we don't accumulate delays usecs_sound_441 -= 10000u; } // push amplitudes now // We should do this only if(io_bit_tst(0x0c,6)) // (direct access), but unfortunately Nebulus // doesn't bother setting that mode. // bit 1 = left channel, bit 0 = right channel // value 1 = low, value 0 = high stream_push_amplitudes((char)(io_bit_tst(0x0e,1) ? 0 : 127), (char)(io_bit_tst(0x0e,0) ? 0 : 127)); } skip_sound_processing: ; } else { cycles_sound_441 = 0u; last_sound_event.tv_sec = last_sound_event.tv_usec = 0; usecs_sound_441 = 0u; } if (low_power_mode) continue; #endif #ifndef NO_GDB extern void sim_trace_one(int); if (trace) sim_trace_one(m68k_getpc()); #endif if (recfile_flag) recfile(); // process (pending) interrupts if(pending_ints) { int level; GET_INT_LVL(level); Interrupt2 (level); regs.stopped = 0; //regs.spcflags &= ~SPCFLAG_STOP; } // management of special flags if(regs.spcflags) { if(regs.spcflags & SPCFLAG_ADRERR) { Exception(3,0); unset_special(SPCFLAG_ADRERR); } if (regs.spcflags & SPCFLAG_DOTRACE) { Exception(9,0); } if (regs.spcflags & SPCFLAG_TRACE) { unset_special(SPCFLAG_TRACE); } if (regs.spcflags & SPCFLAG_BRK) { unset_special(SPCFLAG_BRK); return DBG_BREAK; } if(regs.spcflags & SPCFLAG_DBTRACE) { unset_special(SPCFLAG_DBTRACE); return DBG_TRACE; } if(regs.spcflags & SPCFLAG_DBSKIP) { unset_special(SPCFLAG_DBSKIP); } } } return 0; } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/m68k.h000066400000000000000000000026251220314353500203620ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_M68K__ #define __TI68K_M68K__ #ifdef __cplusplus extern "C" { #endif int hw_m68k_init(void); int hw_m68k_reset(void); int hw_m68k_exit(void); int hw_m68k_run(int ninsts, unsigned int maxcycles); unsigned int hw_m68k_get_cycle_count(int); void hw_m68k_irq(int n); #ifdef __cplusplus } #endif #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/macros.h000066400000000000000000000027041220314353500210570ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: macros.h 2450 2006-06-07 20:03:00Z roms $ */ /* libtifiles - Ti File Format library, a part of the TiLP project * Copyright (C) 1999-2006 Romain Lievin * * 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. */ #ifndef __TIEMU_MACROS__ #define __TIEMU_MACROS__ #include // extract a word from a longword # define LSW(l) (uint16_t) ((l) & 0x0000FFFF) # define MSW(l) (uint16_t)(((l) & 0xFFFF0000) >> 16) // extract a byte from a word # define LSB(w) (uint8_t) ((w) & 0x00FF) # define MSB(w) (uint8_t)(((w) & 0xFF00) >> 8) // extract a nibble from a byte # define LSN(b) ((b) & 0x0F) # define MSN(b) (((b) & 0xF0) >> 4) // convert 2 nibbles into a BCD byte # define BCD(b) (10*MSN(b)+LSN(b)) #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem.c000066400000000000000000000301641220314353500203450ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: mem.c 2601 2007-07-14 08:49:30Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * Copyright (c) 2007, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Memory management: RAM, PROM/FLASH, I/O ports and bkpts */ #include #include #include #include #include "libuae.h" #include "ports.h" #include "hw.h" #include "mem.h" #include "images.h" #include "bkpts.h" #include "m68k.h" #include "ti68k_def.h" #include "ti68k_int.h" #include "mem89.h" #include "mem92.h" #include "mem92p.h" #include "mem89tm.h" #include "memv2.h" #include "hwprot.h" static IMG_INFO *img = &img_infos; // 000000-0fffff : RAM (128 or 256 KB) // 100000-1fffff : // 200000-2fffff : internal ROM (TI92, TI89, V200) or unused // 300000-3fffff : idem // 400000-4fffff : external ROM (TI92, TI92-II, TI92+) or unused // 500000-5fffff : idem // 600000-6fffff : memory mapped I/O (all HW) // 700000-7fffff : memory mapped I/O (HW2, HW3) // 800000-8fffff : ROM (TI89 Titanium) or unused // 900000-9fffff : idem // a00000-afffff : idem // b00000-bfffff : idem // c00000-cfffff : unused // d00000-dfffff : ... // e00000-efffff : ... // d00000-ffffff : unused static GETBYTE_FUNC get_byte_ptr; // set on memXX.c or hwprot.c static GETWORD_FUNC get_word_ptr; static GETLONG_FUNC get_long_ptr; static PUTBYTE_FUNC put_byte_ptr; static PUTWORD_FUNC put_word_ptr; static PUTLONG_FUNC put_long_ptr; GETBYTE_FUNC mem_get_byte_ptr; // set by memXX.c:tiXX_mem_init GETWORD_FUNC mem_get_word_ptr; GETLONG_FUNC mem_get_long_ptr; PUTBYTE_FUNC mem_put_byte_ptr; PUTWORD_FUNC mem_put_word_ptr; PUTLONG_FUNC mem_put_long_ptr; REALADR_FUNC mem_get_real_addr_ptr; /* Mem init/exit */ int hw_mem_init(void) { // get memory sizes if(tihw.ti92v2) { // TI92 II is same as TI92+ in memory size tihw.rom_size = ti68k_get_rom_size(TI92p); tihw.ram_size = ti68k_get_ram_size(TI92p); tihw.io_size = ti68k_get_io_size(TI92p); } else { tihw.rom_size = ti68k_get_rom_size(tihw.calc_type); tihw.ram_size = ti68k_get_ram_size(tihw.calc_type); tihw.io_size = ti68k_get_io_size(tihw.calc_type); tihw.io2_size = ti68k_get_io2_size(tihw.calc_type); tihw.io3_size = ti68k_get_io3_size(tihw.calc_type); } // clear breakpoints ti68k_bkpt_clear_access(); ti68k_bkpt_clear_range(); // allocate mem tihw.ram = malloc(tihw.ram_size); tihw.rom = malloc(tihw.rom_size); tihw.io = malloc(tihw.io_size); tihw.io2 = malloc(tihw.io2_size); tihw.io3 = malloc(tihw.io3_size); tihw.unused = malloc(16); // clear RAM/ROM/IO memset(tihw.ram, 0x00, tihw.ram_size); memset(tihw.io , 0x00, tihw.io_size); memset(tihw.io2, 0x00, tihw.io2_size); memset(tihw.io2, 0x00, tihw.io3_size); memset(tihw.rom, 0xff, tihw.rom_size); memset(tihw.unused, 0x14, 16); // set banks and mappers on per calc basis switch(tihw.calc_type) { case TI92: ti92_mem_init(); break; case TI92p: ti92p_mem_init(); break; case TI89: ti89_mem_init(); break; case V200: v200_mem_init(); break; case TI89t: ti89t_mem_init(); break; default: break; } // blit ROM memcpy(tihw.rom, img->data, img->size); free(img->data); if(!tihw.ram || !tihw.rom || !tihw.io || !tihw.io2) return -1; // set memory mappers for hw protection if(params.hw_protect && (tihw.calc_type != TI92)) { get_byte_ptr = hwp_get_byte; get_word_ptr = hwp_get_word; get_long_ptr = hwp_get_long; put_byte_ptr = hwp_put_byte; put_word_ptr = hwp_put_word; put_long_ptr = hwp_put_long; } else { get_byte_ptr = mem_get_byte_ptr; get_word_ptr = mem_get_word_ptr; get_long_ptr = mem_get_long_ptr; put_byte_ptr = mem_put_byte_ptr; put_word_ptr = mem_put_word_ptr; put_long_ptr = mem_put_long_ptr; } return 0; } int hw_mem_reset(void) { return 0; } int hw_mem_exit(void) { // free memory if(tihw.ram) free(tihw.ram); tihw.ram=NULL; if(tihw.rom) free(tihw.rom); tihw.rom = NULL; if(tihw.io) free(tihw.io); tihw.io = NULL; if(tihw.io2) free(tihw.io2); tihw.io2 = NULL; if(tihw.io3) free(tihw.io3); tihw.io3 = NULL; // clear breakpoints ti68k_bkpt_clear_access(); ti68k_bkpt_clear_range(); return 0; } uint8_t* hw_get_real_address(uint32_t adr) { return mem_get_real_addr_ptr(adr); } uint32_t hw_get_long(uint32_t adr) { GList* l; adr &= 0xFFFFFF; if (bkpts.mem_rl && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_rl, bkpts.id = 0; l; l = l->next, bkpts.id++) { if ((uint32_t)GPOINTER_TO_INT(l->data) == adr) { bkpts.type = BK_TYPE_ACCESS; bkpts.mode = BK_READ_LONG; regs.spcflags |= SPCFLAG_BRK; break; } } } if (bkpts.mem_rng_r && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_rng_r, bkpts.id = 0; l; l = l->next, bkpts.id++) { ADDR_RANGE *r = l->data; if (((adr+3) >= r->val1) && (adr <= r->val2)) { bkpts.type = BK_TYPE_RANGE; bkpts.mode = BK_READ_LONG; regs.spcflags |= SPCFLAG_BRK; break; } } } // Odd address: exception ! if(adr & 1) { regs.spcflags |= SPCFLAG_ADRERR; return 0; } return get_long_ptr(adr); } uint16_t hw_get_word(uint32_t adr) { GList* l; adr &= 0xFFFFFF; if (bkpts.mem_rw && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_rw, bkpts.id = 0; l; l = l->next, bkpts.id++) { if ((uint32_t)GPOINTER_TO_INT(l->data) == adr) { bkpts.type = BK_TYPE_ACCESS; bkpts.mode = BK_READ_WORD; regs.spcflags |= SPCFLAG_BRK; break; } } } if (bkpts.mem_rng_r && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_rng_r, bkpts.id = 0; l; l = l->next, bkpts.id++) { ADDR_RANGE *r = l->data; if (((adr+1) >= r->val1) && (adr <= r->val2)) { bkpts.type = BK_TYPE_RANGE; bkpts.mode = BK_READ_WORD; regs.spcflags |= SPCFLAG_BRK; break; } } } // Odd address: exception ! if(adr & 1) { regs.spcflags |= SPCFLAG_ADRERR; return 0; } return get_word_ptr(adr); } uint8_t hw_get_byte(uint32_t adr) { GList* l; adr &= 0xFFFFFF; if (bkpts.mem_rb && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_rb, bkpts.id = 0; l; l = l->next, bkpts.id++) { if ((uint32_t)GPOINTER_TO_INT(l->data) == adr) { bkpts.type = BK_TYPE_ACCESS; bkpts.mode = BK_READ_BYTE; regs.spcflags |= SPCFLAG_BRK; break; } } } if (bkpts.mem_rng_r && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_rng_r, bkpts.id = 0; l; l = l->next, bkpts.id++) { ADDR_RANGE *r = l->data; if ((adr >= r->val1) && (adr <= r->val2)) { bkpts.type = BK_TYPE_RANGE; bkpts.mode = BK_READ_BYTE; regs.spcflags |= SPCFLAG_BRK; break; } } } return get_byte_ptr(adr); } uint8_t hw_get_byte_noexcept(uint32_t adr) { adr &= 0xFFFFFF; return get_byte_ptr(adr); } void hw_put_long(uint32_t adr, uint32_t arg) { GList* l; adr &= 0xFFFFFF; if (bkpts.mem_wl && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_wl, bkpts.id = 0; l; l = l->next, bkpts.id++) { if ((uint32_t)GPOINTER_TO_INT(l->data) == adr) { bkpts.type = BK_TYPE_ACCESS; bkpts.mode = BK_WRITE_LONG; regs.spcflags |= SPCFLAG_BRK; break; } } } if (bkpts.mem_rng_w && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_rng_w, bkpts.id = 0; l; l = l->next, bkpts.id++) { ADDR_RANGE *r = l->data; if (((adr+3) >= r->val1) && (adr <= r->val2)) { bkpts.type = BK_TYPE_RANGE; bkpts.mode = BK_WRITE_LONG; regs.spcflags |= SPCFLAG_BRK; break; } } } // Odd address: exception ! if(adr & 1) { regs.spcflags |= SPCFLAG_ADRERR; return; } // Protected memory violation. Triggered when memory below [$000120] is // written while bit 2 of [$600001] is set if((adr < 0x120) && io_bit_tst(0x01,2)) hw_m68k_irq(7); else put_long_ptr(adr, arg); } void hw_put_word(uint32_t adr, uint16_t arg) { GList* l; adr &= 0xFFFFFF; if (bkpts.mem_ww && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_ww, bkpts.id = 0; l; l = l->next, bkpts.id++) { if ((uint32_t)GPOINTER_TO_INT(l->data) == adr) { bkpts.type = BK_TYPE_ACCESS; bkpts.mode = BK_WRITE_WORD; regs.spcflags |= SPCFLAG_BRK; break; } } } if (bkpts.mem_rng_w && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_rng_w, bkpts.id = 0; l; l = l->next, bkpts.id++) { ADDR_RANGE *r = l->data; if (((adr+1) >= r->val1) && (adr <= r->val2)) { bkpts.type = BK_TYPE_RANGE; bkpts.mode = BK_WRITE_WORD; regs.spcflags |= SPCFLAG_BRK; break; } } } // Odd address: exception ! if(adr & 1) { regs.spcflags |= SPCFLAG_ADRERR; return; } // Protected memory violation. Triggered when memory below [$000120] is // written while bit 2 of [$600001] is set if((adr < 0x120) && io_bit_tst(0x01,2)) hw_m68k_irq(7); else put_word_ptr(adr, arg); } void hw_put_byte(uint32_t adr, uint8_t arg) { GList* l; adr &= 0xFFFFFF; if (bkpts.mem_wb && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_wb, bkpts.id = 0; l; l = l->next, bkpts.id++) { if ((uint32_t)GPOINTER_TO_INT(l->data) == adr) { bkpts.type = BK_TYPE_ACCESS; bkpts.mode = BK_WRITE_BYTE; regs.spcflags |= SPCFLAG_BRK; break; } } } if (bkpts.mem_rng_w && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.mem_rng_w, bkpts.id = 0; l; l = l->next, bkpts.id++) { ADDR_RANGE *r = l->data; if ((adr >= r->val1) && (adr <= r->val2)) { bkpts.type = BK_TYPE_RANGE; bkpts.mode = BK_WRITE_BYTE; regs.spcflags |= SPCFLAG_BRK; break; } } } if (bkpts.bits && !(regs.spcflags & SPCFLAG_BRK)) { for(l = bkpts.bits, bkpts.id = 0; l != NULL; l = l->next, bkpts.id++) { ADDR_BIT *s = l->data; if((adr == s->addr) & ((arg & s->checks) == (s->states & s->checks))) { bkpts.type = BK_TYPE_BIT; bkpts.mode = BK_WRITE_BYTE; regs.spcflags |= SPCFLAG_BRK; break; } } } // Protected memory violation. Triggered when memory below [$000120] is // written while bit 2 of [$600001] is set if((adr < 0x120) && io_bit_tst(0x01,2)) hw_m68k_irq(7); else put_byte_ptr(adr, arg); } void hw_put_byte_noexcept(uint32_t adr, uint8_t arg) { adr &= 0xFFFFFF; put_byte_ptr(adr, arg); } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem.h000066400000000000000000000061771220314353500203610ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_MEMORY__ #define __TI68K_MEMORY__ #include "stdint.h" /* Typedefs */ typedef uint8_t (*GETBYTE_FUNC) (uint32_t); typedef uint16_t (*GETWORD_FUNC) (uint32_t); typedef uint32_t (*GETLONG_FUNC) (uint32_t); typedef void (*PUTBYTE_FUNC) (uint32_t, uint8_t ); typedef void (*PUTWORD_FUNC) (uint32_t, uint16_t); typedef void (*PUTLONG_FUNC) (uint32_t, uint32_t); typedef uint8_t* (*REALADR_FUNC) (uint32_t addr); extern GETBYTE_FUNC mem_get_byte_ptr; extern GETWORD_FUNC mem_get_word_ptr; extern GETLONG_FUNC mem_get_long_ptr; extern PUTBYTE_FUNC mem_put_byte_ptr; extern PUTWORD_FUNC mem_put_word_ptr; extern PUTLONG_FUNC mem_put_long_ptr; extern REALADR_FUNC mem_get_real_addr_ptr; /* Functions */ int hw_mem_init(void); int hw_mem_reset(void); int hw_mem_exit(void); // defs similar to UAE's memory.h (interface) extern uint8_t hw_get_byte_noexcept(uint32_t addr); extern uint8_t hw_get_byte(uint32_t addr); extern uint16_t hw_get_word(uint32_t addr); extern uint32_t hw_get_long(uint32_t addr); extern void hw_put_byte_noexcept(uint32_t addr, uint8_t arg); extern void hw_put_byte(uint32_t addr, uint8_t arg); extern void hw_put_word(uint32_t addr, uint16_t arg); extern void hw_put_long(uint32_t addr, uint32_t arg); extern uint8_t* hw_get_real_address(uint32_t addr); /* Useful macros for memory access */ #define IN_BOUNDS(a,v,b) (((v) >= (a)) && ((v) <= (b))) #define IN_RANGE(v,b,r) (((v) >= (b)) && ((v) <= ((b) + ((r)-1)))) #define put_b(ptr,adr,mask,arg) { ptr[(adr) & (mask)] = (arg); } #define put_w(ptr,adr,mask,arg) { put_b(ptr,adr,mask,(uint8_t )((arg) >> 8)); put_b(ptr,(adr)+1,mask,(uint8_t )((arg) & 0x00ff)); } #define put_l(ptr,adr,mask,arg) { put_w(ptr,adr,mask,(uint16_t)((arg) >> 16)); put_w(ptr,(adr)+2,mask,(uint16_t)((arg) & 0xffff)); } #define get_b(ptr,adr,mask) (ptr[(adr) & (mask)]) #define get_w(ptr,adr,mask) ((uint16_t) ((get_b(ptr,adr,mask) << 8) | get_b(ptr,(adr)+1,mask))) #define get_l(ptr,adr,mask) ((uint32_t) ((get_w(ptr,adr,mask) << 16) | get_w(ptr,(adr)+2,mask))) #define get_p(ptr,adr,mask) ((ptr) + ((adr) & (mask))) #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem89.c000066400000000000000000000133531220314353500205270ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: mem89.c 2428 2007-04-04 17:05:38Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Memory management: TI89 FLASH without Hardware Protection. Some values may be hard-coded for performance reasons ! */ #include #include #include #include "libuae.h" #include "ports.h" #include "hw.h" #include "mem.h" #include "mem89.h" #include "images.h" #include "bkpts.h" #include "m68k.h" #include "ti68k_def.h" #include "ti68k_int.h" #include "flash.h" // 000000-0fffff : RAM (256 KB) // 100000-1fffff : // 200000-2fffff : internal FLASH (2 MB) // 300000-3fffff : // 400000-4fffff : // 500000-5fffff : // 600000-6fffff : memory mapped I/O (all HW) // 700000-7fffff : memory mapped I/O (HW2, HW3) // 800000-8fffff : unused // 900000-9fffff : ... // a00000-afffff : // b00000-bfffff : // c00000-cfffff : // d00000-dfffff : // e00000-efffff : ... // d00000-ffffff : unused int ti89_mem_init(void) { // set mappers mem_get_byte_ptr = ti89_get_byte; mem_get_word_ptr = ti89_get_word; mem_get_long_ptr = ti89_get_long; mem_put_byte_ptr = ti89_put_byte; mem_put_word_ptr = ti89_put_word; mem_put_long_ptr = ti89_put_long; mem_get_real_addr_ptr = ti89_get_real_addr; return 0; } uint8_t* ti89_get_real_addr(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_p(tihw.ram, adr, RAM_SIZE_TI89 - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_p(tihw.rom, adr, ROM_SIZE_TI89 - 1); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return get_p(tihw.io, adr, IO1_SIZE_TI89 - 1); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89)) { return get_p(tihw.io2, adr, IO2_SIZE_TI89 - 1); } return tihw.unused; } uint32_t ti89_get_long(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_l(tihw.ram, adr, RAM_SIZE_TI89 - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_l(tihw.rom, adr, ROM_SIZE_TI89 - 1) | wsm.ret_or; } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_long(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89)) { return io2_get_long(adr); } return 0x14141414; } uint16_t ti89_get_word(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_w(tihw.ram, adr, RAM_SIZE_TI89 - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_w(tihw.rom, adr, ROM_SIZE_TI89 - 1) | wsm.ret_or; } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_word(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89)) { return io2_get_word(adr); } return 0x1414; } uint8_t ti89_get_byte(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_b(tihw.ram, adr, RAM_SIZE_TI89 - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_b(tihw.rom, adr, ROM_SIZE_TI89 - 1) | wsm.ret_or; } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_byte(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89)) { return io2_get_byte(adr); } return 0x14; } void ti89_put_long(uint32_t adr, uint32_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_l(tihw.ram, adr, RAM_SIZE_TI89 - 1, arg); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { FlashWriteLong(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_long(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89)) { io2_put_long(adr, arg); } return; } void ti89_put_word(uint32_t adr, uint16_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_w(tihw.ram, adr, RAM_SIZE_TI89 - 1, arg); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { FlashWriteWord(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_word(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89)) { io2_put_word(adr, arg); } return; } void ti89_put_byte(uint32_t adr, uint8_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_b(tihw.ram, adr, RAM_SIZE_TI89 - 1, arg); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { FlashWriteByte(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_byte(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89)) { io2_put_byte(adr, arg); } return; } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem89.h000066400000000000000000000027421220314353500205340ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_MEM89__ #define __TI68K_MEM89__ #include "stdint.h" /* Functions */ int ti89_mem_init(void); uint8_t ti89_get_byte(uint32_t addr); uint16_t ti89_get_word(uint32_t addr); uint32_t ti89_get_long(uint32_t addr); void ti89_put_long(uint32_t addr, uint32_t arg); void ti89_put_word(uint32_t addr, uint16_t arg); void ti89_put_byte(uint32_t addr, uint8_t arg); uint8_t* ti89_get_real_addr(uint32_t addr); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem89tm.c000066400000000000000000000161001220314353500210610ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: mem89tm.c 2428 2007-04-04 17:05:38Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Memory management: TI89 Titanium without any HW protection Some values may be hard-coded for performance reasons ! */ #include #include #include #include "libuae.h" #include "ports.h" #include "hw.h" #include "mem.h" #include "mem89tm.h" #include "images.h" #include "bkpts.h" #include "m68k.h" #include "ti68k_def.h" #include "ti68k_int.h" #include "flash.h" // 000000-03ffff : RAM (256 KB) // 100000-1fffff : unused // 200000-2fffff : mirror of 0x000000 // 300000-3fffff : unused // 400000-4fffff : mirror of 0x000000 // 500000-5fffff : unused // 600000-6fffff : memory mapped I/O (all HW) // 700000-7fffff : memory mapped I/O (HW2, HW3), non ghost'ed // 800000-8fffff : FLASH (4 MB) // 900000-9fffff : // a00000-afffff : // b00000-bfffff : // c00000-cfffff : unused // d00000-dfffff : ... // e00000-efffff : ... // d00000-ffffff : unused int ti89t_mem_init(void) { // set mappers mem_get_byte_ptr = ti89t_get_byte; mem_get_word_ptr = ti89t_get_word; mem_get_long_ptr = ti89t_get_long; mem_put_byte_ptr = ti89t_put_byte; mem_put_word_ptr = ti89t_put_word; mem_put_long_ptr = ti89t_put_long; mem_get_real_addr_ptr = ti89t_get_real_addr; return 0; } uint8_t* ti89t_get_real_addr(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x03ffff) || IN_BOUNDS(0x200000, adr, 0x23ffff) || IN_BOUNDS(0x400000, adr, 0x43ffff)) { return get_p(tihw.ram, adr, 0x03ffff); } // FLASH access else if(IN_BOUNDS(0x800000, adr, 0xbfffff)) { return get_p(tihw.rom, adr, ROM_SIZE_TI89T - 1); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return get_p(tihw.io, adr, IO1_SIZE_TI89T - 1); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89T)) { return get_p(tihw.io2, adr, IO2_SIZE_TI89T - 1); } // memory-mapped I/O (hw3) else if(IN_RANGE(adr, 0x710000, IO3_SIZE_TI89T)) { return get_p(tihw.io3, adr, IO3_SIZE_TI89T - 1); } return tihw.unused; } uint32_t ti89t_get_long(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x03ffff) || IN_BOUNDS(0x200000, adr, 0x23ffff) || IN_BOUNDS(0x400000, adr, 0x43ffff)) { return get_l(tihw.ram, adr, 0x03ffff); } // FLASH access else if(IN_BOUNDS(0x800000, adr, 0xbfffff)) { // use FlashReadLong due to Epson Device ID return FlashReadLong(adr); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_long(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89T)) { return io2_get_long(adr); } // memory-mapped I/O (hw3) else if(IN_RANGE(adr, 0x710000, IO3_SIZE_TI89T)) { return io3_get_long(adr); } return 0x14141414; } uint16_t ti89t_get_word(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x03ffff) || IN_BOUNDS(0x200000, adr, 0x23ffff) || IN_BOUNDS(0x400000, adr, 0x43ffff)) { return get_w(tihw.ram, adr, 0x03ffff); } // FLASH access else if(IN_BOUNDS(0x800000, adr, 0xbfffff)) { return FlashReadWord(adr); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_word(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89T)) { return io2_get_word(adr); } // memory-mapped I/O (hw3) else if(IN_RANGE(adr, 0x710000, IO3_SIZE_TI89T)) { return io3_get_word(adr); } return 0x1414; } uint8_t ti89t_get_byte(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x03ffff) || IN_BOUNDS(0x200000, adr, 0x23ffff) || IN_BOUNDS(0x400000, adr, 0x43ffff)) { return get_b(tihw.ram, adr, 0x03ffff); } // FLASH access else if(IN_BOUNDS(0x800000, adr, 0xbfffff)) { return FlashReadByte(adr); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_byte(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89T)) { return io2_get_byte(adr); } // memory-mapped I/O (hw3) else if(IN_RANGE(adr, 0x710000, IO3_SIZE_TI89T)) { return io3_get_byte(adr); } return 0x14; } void ti89t_put_long(uint32_t adr, uint32_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x03ffff) || IN_BOUNDS(0x200000, adr, 0x23ffff) || IN_BOUNDS(0x400000, adr, 0x43ffff)) { put_l(tihw.ram, adr, 0x03ffff, arg); } // FLASH access else if(IN_BOUNDS(0x800000, adr, 0xbfffff)) { FlashWriteLong(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_long(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89T)) { io2_put_long(adr, arg); } // memory-mapped I/O (hw3) else if(IN_RANGE(adr, 0x710000, IO3_SIZE_TI89T)) { io3_put_long(adr, arg); } return; } void ti89t_put_word(uint32_t adr, uint16_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x03ffff) || IN_BOUNDS(0x200000, adr, 0x23ffff) || IN_BOUNDS(0x400000, adr, 0x43ffff)) { put_w(tihw.ram, adr, 0x03ffff, arg); } // FLASH access else if(IN_BOUNDS(0x800000, adr, 0xbfffff)) { FlashWriteWord(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_word(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89T)) { io2_put_word(adr, arg); } // memory-mapped I/O (hw3) else if(IN_RANGE(adr, 0x710000, IO3_SIZE_TI89T)) { io3_put_word(adr, arg); } return; } void ti89t_put_byte(uint32_t adr, uint8_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x03ffff) || IN_BOUNDS(0x200000, adr, 0x23ffff) || IN_BOUNDS(0x400000, adr, 0x43ffff)) { put_b(tihw.ram, adr, 0x03ffff, arg); } // FLASH access else if(IN_BOUNDS(0x800000, adr, 0xbfffff)) { FlashWriteByte(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_byte(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI89T)) { io2_put_byte(adr, arg); } // memory-mapped I/O (hw3) else if(IN_RANGE(adr, 0x710000, IO3_SIZE_TI89T)) { io3_put_byte(adr, arg); } return; } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem89tm.h000066400000000000000000000027541220314353500211000ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_MEM89T__ #define __TI68K_MEM89T__ #include "stdint.h" /* Functions */ int ti89t_mem_init(void); uint8_t ti89t_get_byte(uint32_t addr); uint16_t ti89t_get_word(uint32_t addr); uint32_t ti89t_get_long(uint32_t addr); void ti89t_put_long(uint32_t addr, uint32_t arg); void ti89t_put_word(uint32_t addr, uint16_t arg); void ti89t_put_byte(uint32_t addr, uint8_t arg); uint8_t* ti89t_get_real_addr(uint32_t addr); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem92.c000066400000000000000000000113321220314353500205140ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: mem92.c 2428 2007-04-04 17:05:38Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Memory management: TI92 ROM v1.x & v2.x Some values may be hard-coded for performance reasons ! */ #include #include #include #include "libuae.h" #include "ports.h" #include "hw.h" #include "mem.h" #include "mem92.h" #include "flash.h" #include "images.h" #include "bkpts.h" #include "m68k.h" #include "ti68k_def.h" #include "ti68k_int.h" // 000000-1fffff : RAM (128 or 256 KB) // 200000-3fffff : internal ROM or unused (1.x: 1 MB) // 400000-5fffff : external ROM or unused (1.x: 1 MB or 2.x: 2 MB) // 600000-6fffff : memory mapped I/O // 700000-ffffff : unused int ti92_mem_init(void) { // set mappers mem_get_byte_ptr = ti92_get_byte; mem_get_word_ptr = ti92_get_word; mem_get_long_ptr = ti92_get_long; mem_put_byte_ptr = ti92_put_byte; mem_put_word_ptr = ti92_put_word; mem_put_long_ptr = ti92_put_long; mem_get_real_addr_ptr = ti92_get_real_addr; return 0; } uint8_t* ti92_get_real_addr(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_p(tihw.ram, adr, tihw.ram_size - 1); } // PROM access else if(IN_RANGE(adr, tihw.rom_base, 2*MB)) { return get_p(tihw.rom, adr, tihw.rom_size - 1); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return get_p(tihw.io, adr, 32 - 1); } return tihw.unused; } uint32_t ti92_get_long(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_l(tihw.ram, adr, tihw.ram_size - 1); } // PROM access else if(IN_RANGE(adr, tihw.rom_base, 2*MB)) { return get_l(tihw.rom, adr, tihw.rom_size - 1); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_long(adr); } return 0x14141414; } uint16_t ti92_get_word(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_w(tihw.ram, adr, tihw.ram_size - 1); } // PROM access else if(IN_RANGE(adr, tihw.rom_base, 2*MB)) { return get_w(tihw.rom, adr, tihw.rom_size - 1); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_word(adr); } return 0x1414; } uint8_t ti92_get_byte(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_b(tihw.ram, adr, tihw.ram_size - 1); } // PROM access else if(IN_RANGE(adr, tihw.rom_base, 2*MB)) { return get_b(tihw.rom, adr, tihw.rom_size - 1); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_byte(adr); } return 0x14; } void ti92_put_long(uint32_t adr, uint32_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_l(tihw.ram, adr, tihw.ram_size - 1, arg); } // PROM access else if(IN_RANGE(adr, tihw.rom_base, 2*MB)) { put_l(tihw.rom, adr, tihw.rom_size - 1, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_long(adr, arg); } } void ti92_put_word(uint32_t adr, uint16_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_w(tihw.ram, adr, tihw.ram_size - 1, arg); } // PROM access else if(IN_RANGE(adr, tihw.rom_base, 2*MB)) { put_w(tihw.rom, adr, tihw.rom_size - 1, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_word(adr, arg); } } void ti92_put_byte(uint32_t adr, uint8_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_b(tihw.ram, adr, tihw.ram_size - 1, arg); } // PROM access else if(IN_RANGE(adr, tihw.rom_base, 2*MB)) { put_b(tihw.rom, adr, tihw.rom_size - 1, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_byte(adr, arg); } } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem92.h000066400000000000000000000027421220314353500205260ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_MEM92__ #define __TI68K_MEM92__ #include "stdint.h" /* Functions */ int ti92_mem_init(void); uint8_t ti92_get_byte(uint32_t addr); uint16_t ti92_get_word(uint32_t addr); uint32_t ti92_get_long(uint32_t addr); void ti92_put_long(uint32_t addr, uint32_t arg); void ti92_put_word(uint32_t addr, uint16_t arg); void ti92_put_byte(uint32_t addr, uint8_t arg); uint8_t* ti92_get_real_addr(uint32_t addr); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem92p.c000066400000000000000000000134251220314353500207010ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: mem92p.c 2428 2007-04-04 17:05:38Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Memory management: TI92+ FLASH without Hardware Protection Some values may be hard-coded for performance reasons ! */ #include #include #include #include "libuae.h" #include "ports.h" #include "hw.h" #include "mem.h" #include "mem92p.h" #include "images.h" #include "bkpts.h" #include "m68k.h" #include "ti68k_def.h" #include "ti68k_int.h" #include "flash.h" // 000000-0fffff : RAM (256 KB) // 100000-1fffff : // 200000-2fffff : mirror of FLASH (HW2) // 300000-3fffff : // 400000-4fffff : external FLASH (2 MB) // 500000-5fffff : // 600000-6fffff : memory mapped I/O (all HW) // 700000-7fffff : memory mapped I/O (HW2) // 800000-8fffff : unused // 900000-9fffff : ... // a00000-afffff : // b00000-bfffff : // c00000-cfffff : // d00000-dfffff : // e00000-efffff : ... // d00000-ffffff : unused int ti92p_mem_init(void) { // set mappers mem_get_byte_ptr = ti92p_get_byte; mem_get_word_ptr = ti92p_get_word; mem_get_long_ptr = ti92p_get_long; mem_put_byte_ptr = ti92p_put_byte; mem_put_word_ptr = ti92p_put_word; mem_put_long_ptr = ti92p_put_long; mem_get_real_addr_ptr = ti92p_get_real_addr; return 0; } uint8_t* ti92p_get_real_addr(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_p(tihw.ram, adr, RAM_SIZE_TI92P - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_p(tihw.rom, adr, ROM_SIZE_TI92P - 1); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return get_p(tihw.io, adr, IO1_SIZE_TI92P - 1); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI92P)) { return get_p(tihw.io2, adr, IO2_SIZE_TI92P - 1); } return tihw.unused; } uint32_t ti92p_get_long(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_l(tihw.ram, adr, RAM_SIZE_TI92P - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_l(tihw.rom, adr, ROM_SIZE_TI92P - 1) | wsm.ret_or; } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_long(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI92P)) { return io2_get_long(adr); } return 0x14141414; } uint16_t ti92p_get_word(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_w(tihw.ram, adr, RAM_SIZE_TI92P - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_w(tihw.rom, adr, ROM_SIZE_TI92P - 1) | wsm.ret_or; } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_word(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI92P)) { return io2_get_word(adr); } return 0x1414; } uint8_t ti92p_get_byte(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_b(tihw.ram, adr, RAM_SIZE_TI92P - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_b(tihw.rom, adr, ROM_SIZE_TI92P - 1) | wsm.ret_or; } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_byte(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI92P)) { return io2_get_byte(adr); } return 0x14; } void ti92p_put_long(uint32_t adr, uint32_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_l(tihw.ram, adr, RAM_SIZE_TI92P - 1, arg); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { FlashWriteLong(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_long(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI92P)) { io2_put_long(adr, arg); } return; } void ti92p_put_word(uint32_t adr, uint16_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_w(tihw.ram, adr, RAM_SIZE_TI92P - 1, arg); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { FlashWriteWord(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_word(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI92P)) { io2_put_word(adr, arg); } return; } void ti92p_put_byte(uint32_t adr, uint8_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_b(tihw.ram, adr, RAM_SIZE_TI92P - 1, arg); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { FlashWriteByte(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_byte(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_TI92P)) { io2_put_byte(adr, arg); } return; } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/mem92p.h000066400000000000000000000027541220314353500207110ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_MEM92p__ #define __TI68K_MEM92p__ #include "stdint.h" /* Functions */ int ti92p_mem_init(void); uint8_t ti92p_get_byte(uint32_t addr); uint16_t ti92p_get_word(uint32_t addr); uint32_t ti92p_get_long(uint32_t addr); void ti92p_put_long(uint32_t addr, uint32_t arg); void ti92p_put_word(uint32_t addr, uint16_t arg); void ti92p_put_byte(uint32_t addr, uint8_t arg); uint8_t* ti92p_get_real_addr(uint32_t addr); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/memv2.c000066400000000000000000000133731220314353500206200ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: memv2.c 2428 2007-04-04 17:05:38Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Memory management: V200 FLASH without Hardware Protection Some values may be hard-coded for performance reasons ! */ #include #include #include #include "libuae.h" #include "ports.h" #include "hw.h" #include "mem.h" #include "memv2.h" #include "images.h" #include "bkpts.h" #include "m68k.h" #include "ti68k_def.h" #include "ti68k_int.h" #include "flash.h" // 000000-0fffff : RAM (256 KB) // 100000-1fffff : // 200000-2fffff : internal FLASH (4 MB) // 300000-3fffff : // 400000-4fffff : // 500000-5fffff : // 600000-6fffff : memory mapped I/O (all HW) // 700000-7fffff : memory mapped I/O (HW2, HW3) // 800000-8fffff : unused // 900000-9fffff : ... // a00000-afffff : // b00000-bfffff : // c00000-cfffff : // d00000-dfffff : // e00000-efffff : ... // d00000-ffffff : unused int v200_mem_init(void) { // set mappers mem_get_byte_ptr = v200_get_byte; mem_get_word_ptr = v200_get_word; mem_get_long_ptr = v200_get_long; mem_put_byte_ptr = v200_put_byte; mem_put_word_ptr = v200_put_word; mem_put_long_ptr = v200_put_long; mem_get_real_addr_ptr = v200_get_real_addr; return 0; } uint8_t* v200_get_real_addr(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_p(tihw.ram, adr, RAM_SIZE_V200 - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_p(tihw.rom, adr-0x200000, ROM_SIZE_V200 - 1); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return get_p(tihw.io, adr, IO1_SIZE_V200 - 1); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_V200)) { return get_p(tihw.io2, adr, IO2_SIZE_V200 - 1); } return tihw.unused; } uint32_t v200_get_long(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_l(tihw.ram, adr, RAM_SIZE_V200 - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_l(tihw.rom, adr-0x200000, ROM_SIZE_V200 - 1) | wsm.ret_or; } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_long(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_V200)) { return io2_get_long(adr); } return 0x14141414; } uint16_t v200_get_word(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_w(tihw.ram, adr, RAM_SIZE_V200 - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_w(tihw.rom, adr-0x200000, ROM_SIZE_V200 - 1) | wsm.ret_or; } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_word(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_V200)) { return io2_get_word(adr); } return 0x1414; } uint8_t v200_get_byte(uint32_t adr) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { return get_b(tihw.ram, adr, RAM_SIZE_V200 - 1); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { return get_b(tihw.rom, adr-0x200000, ROM_SIZE_V200 - 1) | wsm.ret_or; } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { return io_get_byte(adr); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_V200)) { return io2_get_byte(adr); } return 0x14; } void v200_put_long(uint32_t adr, uint32_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_l(tihw.ram, adr, RAM_SIZE_V200 - 1, arg); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { FlashWriteLong(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_long(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_V200)) { io2_put_long(adr, arg); } return; } void v200_put_word(uint32_t adr, uint16_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_w(tihw.ram, adr, RAM_SIZE_V200 - 1, arg); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { FlashWriteWord(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_word(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_V200)) { io2_put_word(adr, arg); } return; } void v200_put_byte(uint32_t adr, uint8_t arg) { // RAM access if(IN_BOUNDS(0x000000, adr, 0x1fffff)) { put_b(tihw.ram, adr, RAM_SIZE_V200 - 1, arg); } // FLASH access else if(IN_BOUNDS(0x200000, adr, 0x5fffff)) { FlashWriteByte(adr, arg); } // memory-mapped I/O else if(IN_BOUNDS(0x600000, adr, 0x6fffff)) { io_put_byte(adr, arg); } // memory-mapped I/O (hw2) else if(IN_RANGE(adr, 0x700000, IO2_SIZE_V200)) { io2_put_byte(adr, arg); } return; } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/memv2.h000066400000000000000000000027421220314353500206230ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_MEMv2__ #define __TI68K_MEMv2__ #include "stdint.h" /* Functions */ int v200_mem_init(void); uint8_t v200_get_byte(uint32_t addr); uint16_t v200_get_word(uint32_t addr); uint32_t v200_get_long(uint32_t addr); void v200_put_long(uint32_t addr, uint32_t arg); void v200_put_word(uint32_t addr, uint16_t arg); void v200_put_byte(uint32_t addr, uint8_t arg); uint8_t* v200_get_real_addr(uint32_t addr); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/ports.c000066400000000000000000000407571220314353500207470ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: ports.c 2781 2008-05-25 12:38:25Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2002, Romain Lievin, Julien Blache * Copyright (c) 2003-2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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 WARRAN7TY; 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* TI's ASIC management: memory mapped I/O ports */ #include #include #include #include #include #include "libuae.h" #include "mem.h" #include "kbd.h" #include "dbus.h" #include "ports.h" #include "m68k.h" #include "ti68k_def.h" #include "rtc_hw3.h" int hw_io_init(void) { // clear hw registers memset(tihw.io, 0x00, tihw.io_size); memset(tihw.io2, 0x00, tihw.io2_size); memset(tihw.io3, 0x00, tihw.io3_size); // set LCD base address if(tihw.hw_type > HW1) tihw.lcd_adr = 0x4c00; // set LCD on if(tihw.hw_type > HW1) tihw.io2[0x1d] = 2; // computes reference rtc3_init(); return 0; } int hw_io_reset(void) { return 0; } int hw_io_exit(void) { return 0; } void set_prescaler(int); void io_put_byte(uint32_t addr, uint8_t arg) { addr &= 31; //tihw.io_size-1; switch(addr) { case 0x00: // rw <76...2..> // %5: bit 0 of contrast (TI92) if(tihw.calc_type == TI92) bit_chg(tihw.contrast,0,bit_get(arg,5)); break; case 0x01: // rw <.....2.0> // %0 clr: interleave RAM (allows use of 256K of RAM) if(tihw.hw_type == 1) tihw.ram_size = bit_tst(arg, 0) ? 128*KB : 256*KB; // %2 set: protected memory violation triggered when memory below [$000120] is written break; case 0x02: // ?? break; case 0x03: // -w <.654.210> // Bus waitstates break; case 0x04: break; case 0x05: // -w <...43210> // turn off OSC1 (CPU), wake on int level 6 (ON key) and int level [5..1] m68k_setstopped(1); break; case 0x06: case 0x07: case 0x08: case 0x09: case 0x0a: case 0x0b: break; case 0x0c: // rw <765.3210> // %[3:0]: Trigger interrupt level 4 on error, activity, tx empty, rx full // see hardware.c // %6: link disable (usually reset link port or direct access to wires) if(bit_tst(arg,6) && bit_tst(arg,5)) { hw_dbus_reset(); tihw.io[0x0d] = 0x40; } break; case 0x0d: // r- <76543210> break; case 0x0e: // rw <....3210> // set red/white wires (if direct access) if(io_bit_tst(0x0c,6)) { ticables_cable_set_d0(cable_handle, !bit_get(arg,0)); ticables_cable_set_d1(cable_handle, !bit_get(arg,1)); } break; case 0x0f: // rw <76543210> // write a byte to the transmit buffer (1 byte buffer) io_bit_clr(0x0d, 0); // STX=0 (tx reg is full) hw_dbus_putbyte(arg); if(logger.link_buf && logger.link_mask & 1) logger.link_buf[logger.link_ptr++ % logger.link_size] = (uint16_t)(arg | (1 << 8)); break; case 0x10: // -w <76543210> (hw1) // address of LCD memory divided by 8 (msb) if(tihw.hw_type == HW1) tihw.lcd_adr = ((arg << 8) | tihw.io[0x11]) << 3; break; case 0x11: // -w <76543210> (hw1) // address of LCD memory divided by 8 (lsb) if(tihw.hw_type == HW1) tihw.lcd_adr = ((tihw.io[0x10] << 8) | arg) << 3; break; case 0x12: // -w <76543210> // LCD logical width = (64-n)*2 bytes = (64-n)*16 pixels <=> n = 64-w/16 tihw.log_w = (64 - arg) * 16; break; case 0x13: // -w <..543210> // LCD logical height = (256-n) <=> n = 256-h tihw.log_h = 0x100 - arg; break; case 0x14: break; case 0x15: // rw <7.6543210> // %7 set: Master disable timer interrupts (level 1, 3 and 5) // see hardware.c // %[5-4]: Increment rate of $600017 (prescaler) set_prescaler((arg >> 4) & 3); // %3 set: Enable incrementing of $600017 // see hardware.c // %2 set: Trigger interrupt level 3 at OSC2/2^19 (~1 Hz on HW2) // see hardware.c // %1 set: OSC2 (and OSC3?) enable (bit clear means oscillator stopped!) // see hardware.c // %0 set: LCD controller DMA enable else LCD blank ("white") // could be implemented but redundant with tihw.on_off break; case 0x16: break; case 0x17: // rw <76543210> // programmable rate generator tihw.timer_value = arg; // reset timer break; case 0x18: // rw <......10> // keyboard row mask (see keyboard.c) break; case 0x19: // rw <76543210> // keyboard row mask (see keyboard.c) break; case 0x1a: // r- <......10> // ON key status (see keyboard.c) // Write any value to $60001A to acknowledge this interrupt (AutoInt6) break; case 0x1b: // r- <76543210> // keyboard column status (see keyboard.c) // Write any value to $60001B to acknowledge this interrupt (AutoInt2) break; case 0x1c: // -w <..5432..> // %[5-2] set: LCD RS (row sync) frequency, OSC2/((16-n)*8) // %1111 turns off the RS completely (used when LCD is off) tihw.on_off = ((arg & 0x3c) == 0x3c) ? 0 : 1; break; case 0x1d: // -w <7..43210> // %[3-0]: contrast if(tihw.calc_type == TI92) { // %[3-0]: bits <4321.> of contrast static int avg = 0; avg = (avg + arg)/2; // filter value tihw.contrast = (tihw.contrast & 1) | ((avg & 15) << 1); } else { // %[4/3-0]: LCD contrast bits 4/3-0 (bit 4/3 is msb on HW2/HW1) tihw.contrast = arg & (io2_bit_tst(0x1f,0) ? 0x1f : 0x0f); if(tihw.calc_type == TI89 || tihw.calc_type == TI89t) { if(tihw.hw_type == HW1) tihw.contrast = 31 - 2*tihw.contrast; else tihw.contrast = 31 - tihw.contrast; } } break; case 0x1e: break; case 0x1f: break; } tihw.io[addr] = arg; } void io_put_word(uint32_t addr, uint16_t arg) { io_put_byte(addr, MSB(arg)); io_put_byte(addr+1, LSB(arg)); } void io_put_long(uint32_t addr, uint32_t arg) { io_put_word(addr, MSW(arg)); io_put_word(addr+2, LSW(arg)); } uint8_t io_get_byte(uint32_t addr) { int v; addr &= 31; //tihw.io_size-1; v = tihw.io[addr]; switch(addr) { case 0x00: // rw <76...2..> // %0: bits <....0> of contrast if(tihw.calc_type == TI92) v = ((tihw.contrast & 1) << 5); // %2: Battery voltage level is *above* the trig level v |= 4; // %[7-6]: keep clear break; case 0x01: // rw <.....2.0> break; case 0x02: break; case 0x03: // -w <.654.210> break; case 0x04: // ?? break; case 0x05: // -w <...43210> break; case 0x06: // ?? case 0x07: case 0x08: case 0x09: case 0x0a: case 0x0b: return 0x14; case 0x0c: // rw <765.3210> // linkport status // see hardware.c or dbus.c break; case 0x0d: // r- <76543210> // reading the DBus status register resets that register (as specified by TI) // but don't touch the SLE bit tihw.io[0x0d] = (v & 0x80) | 0x40; break; case 0x0e: // rw <....3210> // %[2-3]: read red/white wires if raw access if(io_bit_tst(0x0c,6)) { v |= ticables_cable_get_d1(cable_handle); v |= ticables_cable_get_d0(cable_handle); } break; case 0x0f: // rw <76543210> // read one byte from receive (incoming) buffer v = hw_dbus_getbyte(); io_bit_clr(0x0d, 5); // SRX=0 (rx reg is empty) if(logger.link_buf && logger.link_mask & 2) logger.link_buf[logger.link_ptr++ % logger.link_size] = (uint16_t)(v | (2 << 8)); break; case 0x10: // -w <76543210> (hw1) return 0x14; case 0x11: // -w <76543210> (hw1) return 0x14; case 0x12: // -w <76543210> return 0x14; case 0x13: // -w <..543210> return 0x14; case 0x14: // ?? break; case 0x15: // rw <7.6543210> break; case 0x16: // ?? break; case 0x17: // rw <76543210> // Programmable rate generator return tihw.timer_value; case 0x18: // rw <76543210> break; case 0x19: // rw <......10> break; case 0x1a: // rw <......10> // ON key status (0=down, 1=up) bit_chg(v,1,!tihw.on_key); break; case 0x1b: // r- <76543210> // keyboard column status v = hw_kbd_read_cols(); case 0x1c: // -w <..5432..> break; case 0x1d: // -w <7..43210> break; case 0x1e: // ?? return 0x14; case 0x1f: // ?? return 0x14; default: return 0x14; } return v; } uint16_t io_get_word(uint32_t addr) { return (((uint16_t)io_get_byte(addr))<<8) | io_get_byte(addr+1); } uint32_t io_get_long(uint32_t addr) { return (((uint32_t)io_get_word(addr))<<16) | io_get_word(addr+2); } /** HW2 **/ void io2_put_byte(uint32_t addr, uint8_t arg) { int i; addr &= 63; //tihw.io2_size-1; switch(addr) { case 0x00: // rw <76543210> case 0x08: if(tihw.protect) return; for(i = 0; i < 8; i++) // this is the fastest method (an easier method will use 64 bit integer) tihw.ram_exec[8+i] = arg & (1 << i); break; case 0x01: // rw <76543210> case 0x09: if(tihw.protect) return; for(i = 0; i < 8; i++) tihw.ram_exec[0+i] = arg & (1 << i); break; case 0x02: // rw <76543210> case 0x0a: if(tihw.protect) return; for(i = 0; i < 8; i++) tihw.ram_exec[24+i] = arg & (1 << i); break; case 0x03: // rw <76543210> case 0x0b: if(tihw.protect) return; for(i = 0; i < 8; i++) tihw.ram_exec[16+i] = arg & (1 << i); break; case 0x04: // rw <76543210> case 0x0c: if(tihw.protect) return; for(i = 0; i < 8; i++) tihw.ram_exec[40+i] = arg & (1 << i); break; case 0x05: // rw <76543210> case 0x0d: if(tihw.protect) return; for(i = 0; i < 8; i++) tihw.ram_exec[32+i] = arg & (1 << i); break; case 0x06: // rw <76543210> case 0x0e: if(tihw.protect) return; for(i = 0; i < 8; i++) tihw.ram_exec[56+i] = arg & (1 << i); case 0x07: // rw <76543210> case 0x0f: if(tihw.protect) return; for(i = 0; i < 8; i++) tihw.ram_exec[48+i] = arg & (1 << i); break; case 0x11: // -w <76543210> break; case 0x12: // rw <..543210> if(tihw.protect) return; arg &= 0x3f; break; case 0x13: break; case 0x14: // rw <76543210> // RTC, incremented every 2^13 seconds. The whole word must be read: // reading the port byte by byte can return wrong value tihw.rtc_value = (tihw.io2[0x14] << 8) | tihw.io2[0x15]; break; case 0x15: // rw <76543210> tihw.rtc_value = (tihw.io2[0x14] << 8) | tihw.io2[0x15]; break; case 0x17: // rw <......10> // Display memory snoop range tihw.lcd_adr = 0x4c00 + 0x1000*(arg&3); break; case 0x1d: // rw <7...3210> // %1: Screen enable (clear this bit to shut down LCD) tihw.on_off = bit_tst(arg,1) ? 1 : 0; break; case 0x1f: // rw <.....210> if(!tihw.protect) tihw.io2[addr] = arg; else return; // %0 set: use 5 contrast bits (default for AMS). // %[2:1] // %2 set: activates the incrementation of $700014.w break; } tihw.io2[addr] = arg; } void io2_put_word(uint32_t addr, uint16_t arg) { io2_put_byte(addr, MSB(arg)); io2_put_byte(addr+1, LSB(arg)); } void io2_put_long(uint32_t addr, uint32_t arg) { io2_put_word(addr, MSW(arg)); io2_put_word(addr+2, LSW(arg)); } uint8_t io2_get_byte(uint32_t addr) { int v; addr &= 63; //tihw.io2_size-1; v = tihw.io2[addr]; switch(addr) { case 0x00: case 0x08: break; case 0x01: case 0x09: break; case 0x02: case 0x0a: break; case 0x03: case 0x0b: break; case 0x04: case 0x0c: break; case 0x05: case 0x0d: break; case 0x06: case 0x0e: break; case 0x07: case 0x0f: break; case 0x11: break; case 0x12: break; case 0x13: break; case 0x14: // rw <7...3210> // RTC hw2 incremented every 2^13 seconds. The whole word must // be read: reading the port byte per byte can return wrong value. return MSB(tihw.rtc_value); break; case 0x15: return LSB(tihw.rtc_value); break; case 0x17: break; case 0x1d: break; case 0x1f: break; } return v; } uint16_t io2_get_word(uint32_t addr) { return (((uint16_t)io2_get_byte(addr))<<8) | io2_get_byte(addr+1); } uint32_t io2_get_long(uint32_t addr) { return (((uint32_t)io2_get_word(addr))<<16) | io2_get_word(addr+2); } /** HW3 **/ void io3_put_byte(uint32_t addr, uint8_t arg) { addr &= 255; //tihw.io3_size-1; switch(addr) { case 0x00: // rw <76543210> break; case 0x40: case 0x41: case 0x42: case 0x43: // rw <76543210> // RTC hw3: seconds since January 1st, 1997 00:00:00 (loading register) break; case 0x44: // rw <....3210> // RTC hw3: 1/16th of seconds, upper digit is always 0 (loading register) arg &= 0x0f; break; case 0x45: // ro <....3210> // RTC hw3: 1/16th of seconds, upper digit is always 0 (counting register) arg &= 0x0f; return; case 0x46: case 0x47: case 0x48: case 0x49: // ro <76543210> // RTC hw3: seconds since January 1st, 1997 00:00:00 (counting register) return; case 0x5f: // ro & rw <......10> // RTC hw3 control register // bit 0 means clock enabled ($710040 is set to 0 when disabled), // bit 1 changing from 0 to 1 loads $710040:44 to $710045-49 and set the clock arg &= 0x03; arg |= 0x80; if(!bit_tst(arg,0)) { // RTC is disabled tihw.io3[0x40] = tihw.io3[0x41] = tihw.io3[0x42] = tihw.io3[0x43] = 0; memcpy(&tihw.rtc3_beg, &tihw.rtc3_ref, sizeof(TTIME)); } else if(!bit_tst(arg,1)) { // RTC reload tihw.io3[0x46] = tihw.io3[0x40]; tihw.io3[0x47] = tihw.io3[0x41]; tihw.io3[0x48] = tihw.io3[0x42]; tihw.io3[0x49] = tihw.io3[0x43]; tihw.io3[0x45] = tihw.io3[0x44]; tihw.rtc3_load.s = (tihw.io3[0x46] << 24) | (tihw.io3[0x47] << 16) | (tihw.io3[0x48] << 8) | tihw.io3[0x49]; tihw.rtc3_load.ms = (125 * tihw.io3[0x45]) >> 1; rtc3_get_time(&tihw.rtc3_beg); } break; } tihw.io3[addr] = arg; } void io3_put_word(uint32_t addr, uint16_t arg) { io3_put_byte(addr, MSB(arg)); io3_put_byte(addr+1, LSB(arg)); } void io3_put_long(uint32_t addr, uint32_t arg) { io3_put_word(addr, MSW(arg)); io3_put_word(addr+2, LSW(arg)); } uint8_t io3_get_byte(uint32_t addr) { int v; addr &= 255; //tihw.io3_size-1; v = tihw.io3[addr]; switch(addr) { case 0x00: break; case 0x40: case 0x41: case 0x42: case 0x43: // rw <76543210> // RTC hw3: seconds since January 1st, 1997 00:00:00 (loading register) break; case 0x44: // rw <....3210> // RTC hw3: 1/16th of seconds, upper digit is always 0 (loading register) v &= 0x0f; break; case 0x45: // ro <....3210> // RTC hw3: 1/16th of seconds, upper digit is always 0 (counting register) // beware: this function may be non portable but an equivalent exists for Linux case 0x46: // ro <76543210> case 0x47: case 0x48: case 0x49: // RTC hw3: seconds since January 1st, 1997 00:00:00 (counting register) rtc3_state_save(); break; case 0x5f: // rw <......10> // RTC hw3 control register break; } return v; } uint16_t io3_get_word(uint32_t addr) { return (((uint16_t)io3_get_byte(addr))<<8) | io3_get_byte(addr+1); } uint32_t io3_get_long(uint32_t addr) { return (((uint32_t)io3_get_word(addr))<<16) | io3_get_word(addr+2); } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/ports.h000066400000000000000000000055331220314353500207450ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 245 2004-05-23 20:45:43Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_IO__ #define __TI68K_IO__ #include #include "bits.h" int hw_io_init(void); int hw_io_reset(void); int hw_io_exit(void); extern uint8_t io_get_byte(uint32_t addr); extern uint16_t io_get_word(uint32_t addr); extern uint32_t io_get_long(uint32_t addr); extern void io_put_long(uint32_t addr, uint32_t arg); extern void io_put_word(uint32_t addr, uint16_t arg); extern void io_put_byte(uint32_t addr, uint8_t arg); #define io_bit_get(a,b) bit_get(tihw.io[a],b) #define io_bit_set(a,b) bit_set(tihw.io[a],b) #define io_bit_clr(a,b) bit_clr(tihw.io[a],b) #define io_bit_tst(a,b) bit_tst(tihw.io[a],b) #define io_bit_chg(a,b,s) bit_chg(tihw.io[a],b,s) // --- extern uint8_t io2_get_byte(uint32_t addr); extern uint16_t io2_get_word(uint32_t addr); extern uint32_t io2_get_long(uint32_t addr); extern void io2_put_long(uint32_t addr, uint32_t arg); extern void io2_put_word(uint32_t addr, uint16_t arg); extern void io2_put_byte(uint32_t addr, uint8_t arg); #define io2_bit_get(a,b) bit_get(tihw.io2[a],b) #define io2_bit_set(a,b) bit_set(tihw.io2[a],b) #define io2_bit_clr(a,b) bit_clr(tihw.io2[a],b) #define io2_bit_tst(a,b) bit_tst(tihw.io2[a],b) #define io2_bit_chg(a,b,s) bit_chg(tihw.io2[a],b,s) // --- extern uint8_t io3_get_byte(uint32_t addr); extern uint16_t io3_get_word(uint32_t addr); extern uint32_t io3_get_long(uint32_t addr); extern void io3_put_long(uint32_t addr, uint32_t arg); extern void io3_put_word(uint32_t addr, uint16_t arg); extern void io3_put_byte(uint32_t addr, uint8_t arg); #define io3_bit_get(a,b) bit_get(tihw.io3[a],b) #define io3_bit_set(a,b) bit_set(tihw.io3[a],b) #define io3_bit_clr(a,b) bit_clr(tihw.io3[a],b) #define io3_bit_tst(a,b) bit_tst(tihw.io3[a],b) #define io3_bit_chg(a,b,s) bit_chg(tihw.io3[a],b,s) #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/rtc_hw3.c000066400000000000000000000110031220314353500211270ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: rtc_hw3.c 2559 2007-06-24 17:33:54Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2002, Romain Lievin, Julien Blache * Copyright (c) 2003-2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* TI's HW3 RTC helpers. */ #include #include #include #include #include "libuae.h" #include "mem.h" #include "ports.h" #include "images.h" #include "ti68k_def.h" #include "rtc_hw3.h" #include "gettimeofday.h" int rtc3_init(void) { struct tm ref; time_t now; if(tihw.hw_type < HW3) return 0; // Computes pseudo-constant (difference between PC ref and TI ref) because: // - TI counts seconds since January 1st, 1997 00:00:00 // - PC counts seconds since January 1st, 1970 00:00:00 time(&now); memcpy(&ref, localtime(&now), sizeof(struct tm)); // get tm_isdst field (DST status) ref.tm_year = 1997 - 1900; ref.tm_mon = 0; ref.tm_yday = 0; ref.tm_mday = 1; ref.tm_wday = 3; ref.tm_hour = 0; ref.tm_min = 0; ref.tm_sec = 0; tihw.rtc3_beg.s = tihw.rtc3_ref.s = mktime(&ref); tihw.rtc3_beg.ms = tihw.rtc3_ref.ms = 0; //printf("<<%s>>\n", asctime(&ref)); tihw.io3[0x5f] = 0x80; return 0; } int rtc3_reset(void) { return 0; } int rtc3_exit(void) { return 0; } // return seconds and milli-seconds // FIXME: kill this stupid wrapper which loses precision and use gettimeofday // and struct timeval directly instead // Problem: We'll have to bump the savefile revision if we do that. :-( void rtc3_get_time(TTIME* tt) { struct timeval tp; gettimeofday(&tp, NULL); tt->s = tp.tv_sec; tt->ms = tp.tv_usec/1000; } // tt = t2 - t1 and take care of reporting milli-seconds void rtc3_diff_time(TTIME* t2, TTIME* t1, TTIME* tt) { tt->s = (time_t)difftime(t2->s, t1->s); tt->ms = t2->ms - t1->ms; if(tt->ms < 0) { tt->ms += 1000; tt->s--; } } // tt = t2 + t1 and take care of reporting milli-seconds void rtc3_add_time(TTIME* t2, TTIME* t1, TTIME* tt) { tt->ms = t1->ms + t2->ms; tt->s = t1->s + t2->s; if(tt->ms > 1000) { tt->ms -= 1000; tt->s++; } } // Call it before ti68k_state_save to update registers with current clock // so that clock is correcly saved int rtc3_state_save(void) { TTIME rtc3_cur; TTIME d, a; if(tihw.hw_type < HW3) return 0; // get time and computes time elapsed since reload (cur - beg + load) rtc3_get_time(&rtc3_cur); rtc3_diff_time(&rtc3_cur, &tihw.rtc3_beg, &d); rtc3_add_time(&d, &tihw.rtc3_load, &a); // 1/16th of seconds tihw.io3[0x45] = (a.ms+a.ms) / 125; // seconds since January 1st, 1997 00:00:00 tihw.io3[0x46] = MSB(MSW(a.s)); tihw.io3[0x47] = LSB(MSW(a.s)); tihw.io3[0x48] = MSB(LSW(a.s)); tihw.io3[0x49] = LSB(LSW(a.s)); //printf("%i.%i\n", tihw.io3[0x49], tihw.io3[0x45]); /* rtc3_diff_time(&rtc3_cur, &tihw.rtc3_beg, &r); printf("%i.%i - %i.%i = %i.%i\n", rtc3_cur.s, rtc3_cur.ms, tihw.rtc3_beg.s, tihw.rtc3_beg.ms, r.s, r.ms); */ /* rtc3_add_time(&rtc3_cur, &tihw.rtc3_beg, &r); printf("%i.%i - %i.%i = %i.%i\n", rtc3_cur.s, rtc3_cur.ms, tihw.rtc3_beg.s, tihw.rtc3_beg.ms, r.s, r.ms); */ return 0; } // Call it after ti68k_state_load to update current clock so that the calc always // display the right time even if calc has been shudown. int rtc3_state_load(void) { TTIME rtc3_cur; if(tihw.hw_type < HW3) return 0; // clock disabled ? if(!io3_bit_tst(0x5f,0)) return 0; // update current time rtc3_get_time(&rtc3_cur); return 0; } // When compiling without GDB, build the Win32 implementation of gettimeofday // here to avoid the makefile hackery. GDB-enabled builds build it as part of // libiberty. #if defined(_WIN32) && defined(NO_GDB) && !defined(_MSC_VER) #include "../../misc/gettimeofday_win32_impl.h" #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/rtc_hw3.h000066400000000000000000000026711220314353500211470ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: hw.h 1455 2005-05-31 18:38:03Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2005, Christian Walther (patches for Mac OS-X port) * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_RTC3__ #define __TI68K_RTC3__ #include typedef struct { time_t s; int ms; } TTIME; int rtc3_init(void); int rtc3_reset(void); int rtc3_exit(void); int rtc3_state_save(void); int rtc3_state_load(void); void rtc3_get_time(TTIME* tt); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/tichars.c000066400000000000000000000322731220314353500212270ustar00rootroot00000000000000/* TiEmu - a TI calculator emulator * * Character to key conversion routine * Copyright (c) 2006 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include "keydefs.h" static const int keys[256][5]={ {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {TIKEY_ENTER1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_ESCAPE,TIKEY_DIAMOND,TIKEY_Q,TIKEY_VOID}, {TIKEY_CLEAR,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_2,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_3,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_4,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_5,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_6,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_7,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_8,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_9,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_A,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_B,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_C,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_D,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_E,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_2,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_3,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_4,-1}, {TIKEY_SPACE,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_2,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_3,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_4,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_5,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_6,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_7,-1}, {TIKEY_PALEFT,-1,-1,-1,-1}, {TIKEY_PARIGHT,-1,-1,-1,-1}, {TIKEY_MULTIPLY,-1,-1,-1,-1}, {TIKEY_PLUS,-1,-1,-1,-1}, {TIKEY_COMMA,-1,-1,-1,-1}, {TIKEY_MINUS,-1,-1,-1,-1}, {TIKEY_PERIOD,-1,-1,-1,-1}, {TIKEY_DIVIDE,-1,-1,-1,-1}, {TIKEY_0,-1,-1,-1,-1}, {TIKEY_1,-1,-1,-1,-1}, {TIKEY_2,-1,-1,-1,-1}, {TIKEY_3,-1,-1,-1,-1}, {TIKEY_4,-1,-1,-1,-1}, {TIKEY_5,-1,-1,-1,-1}, {TIKEY_6,-1,-1,-1,-1}, {TIKEY_7,-1,-1,-1,-1}, {TIKEY_8,-1,-1,-1,-1}, {TIKEY_9,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_THETA,-1,-1,-1}, {TIKEY_2ND,TIKEY_M,-1,-1,-1}, {TIKEY_2ND,TIKEY_0,-1,-1,-1}, {TIKEY_EQUALS,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_PERIOD,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_8,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_9,-1}, {TIKEY_SHIFT,TIKEY_A,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_B,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_C,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_D,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_E,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_F,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_G,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_H,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_I,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_J,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_K,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_L,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_M,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_N,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_O,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_P,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_Q,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_R,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_S,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_T,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_U,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_V,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_W,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_X,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_Y,-1,-1,-1}, {TIKEY_SHIFT,TIKEY_Z,-1,-1,-1}, {TIKEY_2ND,TIKEY_COMMA,-1,-1,-1}, {TIKEY_2ND,TIKEY_EQUALS,-1,-1,-1}, {TIKEY_2ND,TIKEY_DIVIDE,-1,-1,-1}, {TIKEY_POWER,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_A,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_B,-1}, {TIKEY_A,-1,-1,-1,-1}, {TIKEY_B,-1,-1,-1,-1}, {TIKEY_C,-1,-1,-1,-1}, {TIKEY_D,-1,-1,-1,-1}, {TIKEY_E,-1,-1,-1,-1}, {TIKEY_F,-1,-1,-1,-1}, {TIKEY_G,-1,-1,-1,-1}, {TIKEY_H,-1,-1,-1,-1}, {TIKEY_I,-1,-1,-1,-1}, {TIKEY_J,-1,-1,-1,-1}, {TIKEY_K,-1,-1,-1,-1}, {TIKEY_L,-1,-1,-1,-1}, {TIKEY_M,-1,-1,-1,-1}, {TIKEY_N,-1,-1,-1,-1}, {TIKEY_O,-1,-1,-1,-1}, {TIKEY_P,-1,-1,-1,-1}, {TIKEY_Q,-1,-1,-1,-1}, {TIKEY_R,-1,-1,-1,-1}, {TIKEY_S,-1,-1,-1,-1}, {TIKEY_T,-1,-1,-1,-1}, {TIKEY_U,-1,-1,-1,-1}, {TIKEY_V,-1,-1,-1,-1}, {TIKEY_W,-1,-1,-1,-1}, {TIKEY_X,-1,-1,-1,-1}, {TIKEY_Y,-1,-1,-1,-1}, {TIKEY_Z,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_PALEFT,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_C,-1}, {TIKEY_2ND,TIKEY_PARIGHT,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_D,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_4,TIKEY_F,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_2,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_3,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_4,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_5,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_6,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_7,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_8,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_9,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_A,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_C,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_D,-1}, {TIKEY_2ND,TIKEY_POWER,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_F,-1}, {TIKEY_DIAMOND,TIKEY_G,TIKEY_SHIFT,TIKEY_S,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_G,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_H,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_I,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_J,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_K,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_L,-1}, {TIKEY_2ND,TIKEY_1,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_5,-1}, {TIKEY_2ND,TIKEY_I,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_6,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_9,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_A,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_B,-1}, {TIKEY_DIAMOND,TIKEY_0,-1,-1,-1}, {TIKEY_DIAMOND,TIKEY_EQUALS,-1,-1,-1}, {TIKEY_DIAMOND,TIKEY_PERIOD,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_8,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_E,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_F,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_G,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_H,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_I,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_J,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_K,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_L,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_F,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_M,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_F}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_Q,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_G,-1}, {TIKEY_NEGATE,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_N,-1}, {-1,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_7,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_N,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_I,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_J,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_K,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_1,TIKEY_B,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_O,-1}, {-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_H,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_D}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_R,-1}, {TIKEY_2ND,TIKEY_8,TIKEY_BACKSPACE,-1,-1}, {TIKEY_2ND,TIKEY_7,TIKEY_BACKSPACE,-1,-1}, {TIKEY_2ND,TIKEY_J,-1,-1,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_3,TIKEY_P,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_3}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_5}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_7}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_9}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_B}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_D}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_2,TIKEY_1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_2,TIKEY_3}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_2,TIKEY_5}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_2,TIKEY_7}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_3,TIKEY_1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_3,TIKEY_3}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_3,TIKEY_5}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_3,TIKEY_7}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_3}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_5}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_3}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_5}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_7}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_9}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_L,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_B}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_5,TIKEY_1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_5,TIKEY_3}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_5,TIKEY_5}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_5,TIKEY_7}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_A}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_8}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_7}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_2}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_4}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_6}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_8}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_A}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_C}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_1,TIKEY_E}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_2}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_2,TIKEY_2}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_2,TIKEY_4}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_2,TIKEY_6}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_2,TIKEY_8}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_3,TIKEY_2}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_3,TIKEY_4}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_3,TIKEY_6}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_3,TIKEY_8}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_4}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_6}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_2}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_4}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_6}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_8}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_A}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_2,TIKEY_M,-1}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_4,TIKEY_C}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_5,TIKEY_2}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_5,TIKEY_4}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_5,TIKEY_6}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_5,TIKEY_8}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_B}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_9}, {TIKEY_2ND,TIKEY_PLUS,TIKEY_5,TIKEY_6,TIKEY_C} }; static const int keys89_12[5]={TIKEY_2ND,TIKEY_ESCAPE,TIKEY_HOME,TIKEY_VOID,-1}; static const int keys89_58[3]={TIKEY_2ND,TIKEY_4,-1}; static const int keys89_59[3]={TIKEY_2ND,TIKEY_9,-1}; static const int keys89_92[3]={TIKEY_2ND,TIKEY_2,-1}; static const int keys89_142[5]={TIKEY_DIAMOND,TIKEY_PALEFT,TIKEY_SHIFT,TIKEY_3,-1}; static const int keys89_149[2]={TIKEY_EE,-1}; static const int keys89_151[3]={TIKEY_2ND,TIKEY_CATALOG,-1}; static const int keys89_190[3]={TIKEY_DIAMOND,TIKEY_CATALOG,-1}; int *chars_to_keys(const char *chars, int ti89) { int *buffer, *q, i, shift=0; const unsigned char *p; const int *row; buffer=malloc((strlen(chars)*6+1)*sizeof(int)); if (!buffer) return NULL; q=buffer; for (p=(const unsigned char *)chars; *p; p++) { row=keys[*p]; if (ti89) { switch (*p) { case 12: // Form Feed => QUIT + HOME row=keys89_12; break; case 58: // : row=keys89_58; break; case 59: // ; row=keys89_59; break; case 92: // backslash row=keys89_92; break; case 142: // SIGMA row=keys89_142; break; case 149: // EE row=keys89_149; break; case 151: // imaginary i row=keys89_151; break; case 190: // infinity row=keys89_190; break; default: break; } } for (i=0; i<5; i++) { if (row[i]==-1) break; if (ti89) { switch (row[i]) { #define ALPHA(letter,key89) case TIKEY_ ## letter: \ if (!shift) \ *(q++)=TIKEY_ALPHA; \ *(q++)=TIKEY_ ## key89; \ shift=0; \ break; ALPHA(A,EQUALS) ALPHA(B,PALEFT) ALPHA(C,PARIGHT) ALPHA(D,COMMA) ALPHA(E,DIVIDE) ALPHA(F,PIPE) ALPHA(G,7) ALPHA(H,8) ALPHA(I,9) ALPHA(J,MULTIPLY) ALPHA(K,EE) ALPHA(L,4) ALPHA(M,5) ALPHA(N,6) ALPHA(O,MINUS) ALPHA(P,STORE) ALPHA(Q,1) ALPHA(R,2) ALPHA(S,3) ALPHA(U,PLUS) ALPHA(V,0) ALPHA(W,PERIOD) ALPHA(SPACE,NEGATE) case TIKEY_SHIFT: *(q++)=TIKEY_SHIFT; shift=1; break; default: *(q++)=row[i]; shift=0; break; } } else { *(q++)=row[i]; } } } *q=-1; return buffer; } tiemu-3.03-nogdb+dfsg/src/core/ti_hw/tichars.h000066400000000000000000000017371220314353500212350ustar00rootroot00000000000000/* TiEmu - a TI calculator emulator * * Character to key conversion routine * Copyright (c) 2006 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef TICHARS_H #define TICHARS_H #include G_BEGIN_DECLS int *chars_to_keys(const char *chars, int ti89); G_END_DECLS #endif tiemu-3.03-nogdb+dfsg/src/core/ti_hw/tilibs.h000066400000000000000000000022431220314353500210570ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: tilibs.h 2222 2006-09-21 16:35:18Z kevinkofler $ */ /* tilp - Ti Linking Program * Copyright (C) 1999-2004 Romain Lievin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* This file includes libtifiles, libticables & libticalcs headers and some other needed headers. */ #ifndef TILIBS_H #define TILIBS_H #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #endif tiemu-3.03-nogdb+dfsg/src/core/ti_sw/000077500000000000000000000000001220314353500174325ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/core/ti_sw/er_codes.c000066400000000000000000000125751220314353500213730ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: er_codes.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2005, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* ER_throw support */ #include #include /* This table is converted and hand-edited from the TIGCC error.h. */ static struct {unsigned int id; const char *name;} erthrow_table[] = { {0, "ER_OK"}, {1, "ER_EXIT"}, {2, "ER_STOP"}, {3, "ER_OFF"}, {4, "ER_PRGM_STOP"}, {9, "ER_NO_MSG"}, {10, "ER_FUNC_DID_NOT_RETURN_VALUE"}, {20, "ER_TEST_NOT_TRUE_OR_FALSE"}, {30, "ER_ARG_CANNOT_BE_FOLDER"}, {40, "ER_ARGUMENT"}, {50, "ER_ARG_MISMATCH"}, {60, "ER_EXPECTED_BOOL_OR_AGG"}, {70, "ER_ARG_MUST_BE_DECIMAL"}, {80, "ER_ARG_MUST_BE_LABEL"}, {90, "ER_ARGUMENT_MUST_BE_LIST"}, {100, "ER_ARG_MUST_BE_MATRIX"}, {110, "ER_ARG_MUST_BE_PIC"}, {120, "ER_ARG_MUST_BE_PIC_OR_STR"}, {130, "ER_ARG_MUST_BE_STRING"}, {140, "ER_EXPECTED_VAR"}, {150, "ER_ARG_MUST_BE_EMPTY_FOLDER"}, {160, "ER_EXPECTED_ALGEBRAIC"}, {161, "ER_ASAP_TOO_LONG"}, {163, "ER_ATTRIBUTE_NOT_FOUND"}, {165, "ER_BATT_LOW"}, {170, "ER_BOUND"}, {180, "ER_BREAK"}, {185, "ER_CHECKSUM"}, {190, "ER_CIRCULAR_DEFINITION"}, {200, "ER_INVALID_SUCH_THAT"}, {210, "ER_DATATYPE"}, {220, "ER_DEPENDENT_LIMIT"}, {225, "ER_DIFF_EQ_SETUP"}, {230, "ER_DIMENSION"}, {240, "ER_NON_CONFORMING_LISTS"}, {250, "ER_DIVBY0"}, {260, "ER_DOMAIN"}, {270, "ER_DUPLICATE_VAR_NAME"}, {280, "ER_ELSE_WITHOUT_IF"}, {290, "ER_ENDTRY_WITHOUT_ELSE"}, {295, "ER_EXCESSIVE_ITERATION"}, {300, "ER_EXPECTED_2OR3_ELEMENTS"}, {305, "ER_EXPIRED"}, {307, "ER_APP_EXT_NOT_FOUND"}, {308, "ER_APP_NOT_FOUND"}, {310, "ER_INVALID_NSOLVE_ARG1"}, {320, "ER_INVALID_SOLVE_ARG1"}, {330, "ER_FOLDER"}, {335, "ER_FUNCS_IN_DIFF_EQ"}, {345, "ER_INCONSISTENT_UNITS"}, {350, "ER_INVALID_SUBSCRIPT"}, {360, "ER_INVALID_INDIR_STRING"}, {380, "ER_INVALID_ANS"}, {390, "ER_ILLEGAL_ASSIGNMENT"}, {400, "ER_ILLEGAL_ASSIGNMENT_VALUE"}, {405, "ER_INVALID_AXES"}, {410, "ER_ILLEGAL_COMMAND"}, {420, "ER_INVALID_FOLDER_NAME"}, {430, "ER_GRAPH_MODE"}, {435, "ER_INVALID_GUESS"}, {440, "ER_INVALID_IMPLIED_MULT"}, {450, "ER_ILLEGAL_IN_FUNC"}, {460, "ER_ILLEGAL_IN_CUSTOM"}, {470, "ER_ILLEGAL_IN_DIALOG"}, {480, "ER_ILLEGAL_IN_TOOLBAR"}, {490, "ER_CANNOT_EXIT_FROM_TRY"}, {500, "ER_INVALID_LABEL"}, {510, "ER_INVALID_LIST_OR_MATRIX"}, {520, "ER_INVAL_OUTSIDE_TB_CM"}, {530, "ER_INVAL_OUTSIDE_DG_TB_CM"}, {540, "ER_INVALID_OUTSIDE_DIALOG"}, {550, "ER_MUST_BE_IN_PRGM_OR_FUNC"}, {560, "ER_EXIT_NOT_IN_LOOP"}, {570, "ER_INVALID_PATHNAME"}, {575, "ER_INVALID_POLAR_COMPLEX"}, {580, "ER_ILLEGAL_PRGM_REF"}, {590, "ER_INVALID_SYNTAX_BLOCK"}, {600, "ER_INVALID_TABLE"}, {605, "ER_INVALID_USE_OF_UNITS"}, {610, "ER_INVALID_LOCAL_DECLARATION"}, {620, "ER_EXPECTED_VAR_OR_FUNC"}, {630, "ER_INVALID_VAR_REF"}, {640, "ER_INVALID_VECTOR_SYNTAX"}, {650, "ER_LINK_IO"}, {665, "ER_MAT_NOT_DIAGONALIZABLE"}, {670, "ER_MEMORY"}, {673, "ER_STACK_VIO"}, {680, "ER_EXPECTED_LPAR"}, {690, "ER_EXPECTED_RPAR"}, {700, "ER_EXPECTED_DOUBLE_QUOTE"}, {710, "ER_EXPECTED_RIGHT_BRACKET"}, {720, "ER_EXPECTED_RIGHT_BRACE"}, {730, "ER_INVALID_BLOCK_STRUCTURE"}, {740, "ER_MISSING_THEN"}, {750, "ER_NOT_FUNC_OR_PRGM"}, {765, "ER_NO_FUNCS_SEL"}, {780, "ER_NO_SOLUTION"}, {790, "ER_NON_ALGEBRAIC_VARIABLE"}, {800, "ER_UNREAL_RESULT"}, {810, "ER_MEMORY_DML"}, {830, "ER_OVERFLOW"}, {840, "ER_STAT_PLOT"}, {850, "ER_PRGM_NOT_FOUND"}, {860, "ER_RECURSION_TOO_DEEP"}, {870, "ER_RESERVED"}, {875, "ER_ROM_ROUTINE_NOT_AVAILABLE"}, {880, "ER_SEQUENCE_SETUP"}, {885, "ER_SIGNATURE_ERR"}, {890, "ER_SINGULARMAT"}, {895, "ER_SLOPE_FIELD_FUNCS"}, {900, "ER_EMPTY_GROUP_NOT_VALID"}, {910, "ER_SYNTAX"}, {930, "ER_TOO_FEW_ARGS"}, {940, "ER_TOO_MANY_ARGS"}, {950, "ER_TOO_MANY_SUBSCRIPTS"}, {955, "ER_TOO_MANY_UNDEFINED"}, {960, "ER_UNDEFINED_VAR"}, {965, "ER_UNLICENSED"}, {970, "ER_VAR_IN_USE"}, {980, "ER_PROTECTED"}, {990, "ER_NAME_TOO_LONG"}, {1000, "ER_RANGE"}, {1010, "ER_ZOOM"}, {1020, "ER_ILLEGAL_TAG"}, {1030, "ER_MEM_VIO"}, {2048, NULL} }; const char* ercodes_get_name(unsigned id) { if(id >= 2048) return "Unknown ERROR code"; else { unsigned n = sizeof(erthrow_table)/sizeof(*erthrow_table), lb = 0, ub = n-1; while (lb < ub - 1) { unsigned mid = (lb + ub) >> 1; if (erthrow_table[mid].id <= id) lb = mid; else ub = mid; } if (id != erthrow_table[lb].id) { static char buffer[100]; sprintf(buffer, "%s + %u", erthrow_table[lb].name, id - erthrow_table[lb].id); return buffer; } else return erthrow_table[lb].name; } } tiemu-3.03-nogdb+dfsg/src/core/ti_sw/handles.c000066400000000000000000000103441220314353500212160ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: handles.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Handles/Heap access: $5D42 is a pointer on the Handles[] array. An handle is an index in this array which poins on a memory allocatedblock : Handles[0] => block 0 Handles[1] => block 1 .... The first word just before the beginning of the block is the block size. - HeapAlloc: | size | block | | HeapDeref --+ - HeapAllocPtr: --+ | | size | handle | block | | HeapDeref --+ - PedRom: | size.l | handle | block | | HeapDeref --+ */ #include #include "handles.h" #include "romcalls.h" #include "ti68k_def.h" #include "ti68k_int.h" static int pedrom = 0; /* Retrieve address of heap (pointed by $5D42 on TI92). */ void heap_get_addr(uint32_t *base) { pedrom = (mem_rd_word(0x32) == (('R'<<8)+'O')); if(pedrom && mem_rd_word(0x30)<=0x0080) // PedroM <=0.80 { uint32_t ptr = 0x5d58; // fixed by PPhD for AMS1 compat *base = mem_rd_long(ptr); } else if(tihw.ti92v2) // TI-92 II { uint32_t ptr = 0x4720 + 0x1902; //tios::main_lcd equ tios::globals+$0000 *base = mem_rd_long(ptr); } else if(tihw.ti92v1) // TI-92 I { uint32_t ptr = 0x4440 + 0x1902; //and tios::heap equ tios::globals+$1902 *base = mem_rd_long(ptr); } else { uint32_t b, size, addr, ptr; romcalls_get_table_infos(&b, &size); if(size < 0x441 && !pedrom) // AMS 1 { romcalls_get_symbol_address(0x96, &addr); // tios::HeapDeref (#0x096) ptr = mem_rd_word(addr + 8); // MOVEA.W $7592,A0 *base = mem_rd_long(ptr); } else // AMS 2, PedroM >=0.81 { romcalls_get_symbol_address(0x441, &addr); // tios::HeapTable (#0x441) *base = addr; } } } /* Get address of an allocated block (like HeapDeref) */ uint32_t heap_deref(int handle) { uint32_t base; heap_get_addr(&base); return mem_rd_long(base + 4*handle); } void heap_get_block_addr(int handle, uint32_t *addr) { *addr = heap_deref(handle); } /* Get size of an allocated block (like HeapSize) */ uint16_t heap_size(int handle) { uint32_t base; uint32_t addr; uint16_t size; heap_get_addr(&base); addr = mem_rd_long(base + 4*handle); if(!pedrom) { size = mem_rd_word(addr - 2); size &= ~(1 << 16); // remove lock size <<= 1; // size is twice size -= 2; } else if(addr >= tihw.rom_base) // archived file on PedroM - use file size { size = mem_rd_word(addr); size += 2; } else { size = (uint16_t)mem_rd_long(addr - 6); size -= 6; } return size; } void heap_get_block_size(int handle, uint16_t *size) { *size = heap_size(handle); } /* Given an handle, retrieve block size and block address */ void heap_get_block_addr_and_size(int handle, uint32_t *addr, uint16_t *size) { *addr = heap_deref(handle); *size = heap_size(handle); } /* Walk in the heap to search for a block address. */ void heap_search_for_address(uint32_t address, int *handle) { uint32_t base; int i; heap_get_addr(&base); for(i = 1; i < HEAP_MAX_SIZE; i++) { uint32_t addr = mem_rd_long(base + 4*i); uint16_t size = mem_rd_word(addr - 2); if (addr && (address >= addr) && (address < addr+size)) *handle = i; } *handle = -1; } //#define HeapDeref(handle) HeapTable[handle] //#define HeapSize(handle) ((short*)HeapDeref(handle))[-1]<<1; tiemu-3.03-nogdb+dfsg/src/core/ti_sw/handles.h000066400000000000000000000030041220314353500212160ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: handles.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __HANDLES__ #define __HANDLES__ #include void heap_get_addr(uint32_t *base); void heap_get_block_addr(int handle, uint32_t *addr); void heap_get_block_size(int handle, uint16_t *size); void heap_get_block_addr_and_size(int handle, uint32_t *addr, uint16_t *size); void heap_search_for_address(uint32_t address, int *handle); // aliases uint32_t heap_deref(int handle); uint16_t heap_size(int handle); #define HEAP_MAX_SIZE 2000 #endif tiemu-3.03-nogdb+dfsg/src/core/ti_sw/iodefs.c000066400000000000000000000145211220314353500210520ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: iodefs.c 2372 2007-02-25 21:43:23Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* IO ports definitions loader/parser. */ #include #include #include #include #include #include "ti68k_int.h" #include "iodefs.h" #include "logging.h" GNode* tree = NULL; extern int img_changed; static const char* iodefs_calc2str(int calc_type) { switch(calc_type) { case TI89: return "ti89"; case TI92: return "ti92"; case TI92p: return "ti92p"; case V200: return "v200"; case TI89t: return "ti89t"; default: return "none"; } return ""; } static const char* iodefs_get_filename() { static char s[256] = ""; sprintf(s, "iodefs_%s_hw%i.txt", iodefs_calc2str(tihw.calc_type), tihw.hw_type); return s; } // get section name [section] static char* get_section(char *s) { char *b, *e; b = strchr(s, '['); e = strrchr(s, ']'); if(!b ||!e) { fprintf(stdout, "Missing '[' or ']' token in section name!\n"); return NULL; } b++; *e = '\0'; return b; } static char* get_name(char *s) { char *t; while(*s == ' ') s++; t = strchr(s, '\t'); if(t) *t = '\0'; return s; } // convert "ro", "wo", "rw" into value static int get_type(const char* s) { while(*s == ' ') s++; if(s[0] == 'r' && s[1] == 'o') return IO_RO; else if(s[0] == 'w' && s[1] == 'o') return IO_WO; else if(s[0] == 'r' && s[1] == 'w') return IO_RW; return 0; } // parse <..5.....> entry and returns number of available bits static int get_bits(const char *s, IO_DEF* t) { char *b, *e; int i, j, nbits = 8 * t->size; int all; while(*s == ' ') s++; b = strchr(s, '<'); e = strrchr(s, '>'); if(!b ||!e) { fprintf(stdout, "Missing '<' or '>' token !\n"); return -1; } b++; e--; all = !strncmp(b, "all", 3); if((e - b + 1) != nbits && !all) { fprintf(stdout, "Number of bits does not match size !\n"); return -1; } memset(t->bits, 0, nbits); for(i = 0, j = 0; i < nbits; i++) { if(b[i] == '.') { } else if(isdigit(b[i]) || all) { t->bits[j++] = nbits - i - 1; } else { fprintf(stdout, "Wrong character in bit sequence (digit or '.') !\n"); return -1; } } t->nbits = j; return 0; } static int get_bit_names(char *s, IO_DEF *t) { int i; gchar **split; if(s == NULL) return 0; while(*s == ' ') s++; split = g_strsplit(s, ",", t->nbits); if(split[0] == NULL) return 0; for(i = 0; i < t->nbits; i++) { if(split[i] != NULL) t->bit_name[i] = strdup(split[i]); } return 0; } // get bit string <76543210> static char* get_bit_str(char *s) { char *b, *e; b = strchr(s, '<'); e = strrchr(s, '>'); if(!b ||!e) { fprintf(stdout, "Missing '<' or '>' token in bit mask !\n"); return NULL; } *++e = '\0'; return b; } /* Unload information on I/O ports (free resources). */ static gboolean free_node(GNode *node, gpointer data) { if (node) if(node->data) free(node->data); return FALSE; } int iodefs_unload(void) { if(tree != NULL) { g_node_traverse(tree, G_IN_ORDER, G_TRAVERSE_ALL, -1, free_node, NULL); g_node_destroy(tree); tree = NULL; } return 0; } /* Load information on I/O ports. Return value: 0 if successful -1 if error -2 if no image -4 if already loaded File naming scheme : "iodefs_model.txt" => iodefs_89.txt */ int iodefs_load(const char* path) { FILE *f; gchar *filename; int n; char line[1024]; GNode* parent = NULL; GNode* node; static int calc_type = 0; static int hw_type = 0; if(!img_loaded) return -2; if(calc_type != tihw.calc_type || hw_type != tihw.hw_type) { calc_type = tihw.calc_type; hw_type = tihw.hw_type; } else return -4; if(tree) iodefs_unload(); filename = g_strconcat(path, iodefs_get_filename(), NULL); f = fopen(filename, "rb"); if(f == NULL) { g_free(filename); return -1; } tree = g_node_new(NULL); for(n = 0; !feof(f);) { gchar **split; IO_DEF *s; if (!fgets(line, sizeof(line), f)) break; /* An empty string means end of file. Don't clobber other stack variables with the underflow. */ if (!*line) break; line[strlen(line) - 2] = '\0'; if(feof(f)) break; if(line[0] == ';') continue; else if(line[0] == '[') { char *name = get_section(line); if(name == NULL) return -1; s = (IO_DEF*)calloc(1, sizeof(IO_DEF)); s->name = strdup(name); parent = g_node_new(s); g_node_append(tree, parent); continue; } else if(line[0] == '#') { } else if(line[0] != '$') continue; split = g_strsplit(line, "|", 6); if(!split[0] || !split[1] || !split[2] || !split[3] || !split[4] ) { fprintf(stderr, "Error at line %i: malformed line !\n", n); return -1; } s = (IO_DEF*)calloc(1, sizeof(IO_DEF)); sscanf(split[0], "$%06x", &s->addr); sscanf(split[1], "%i", &s->size); s->type = get_type(split[2]); s->bit_str = strdup(get_bit_str(split[3])); if(get_bits(split[3], s) == -1) return -1; s->all_bits = (s->nbits == (8 * s->size)); s->name = strdup(get_name(split[4])); if(get_bit_names(split[5], s) == -1) return -1; if(parent == NULL) { fprintf(stderr, "Error at line %i: no section defined !\n", n); return -1; } node = g_node_new(s); g_node_append(parent, node); n++; } g_free(filename); fclose(f); tiemu_info(_("loading I/O defs: %s (%i entries)"), iodefs_get_filename(), n); return 0; } GNode* iodefs_tree(void) { return tree; } tiemu-3.03-nogdb+dfsg/src/core/ti_sw/iodefs.h000066400000000000000000000033761220314353500210650ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: iodefs.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Breakpoint definitions */ #ifndef __IODEFS_H__ #define __IODEFS_H__ #include #include #include /* Types */ typedef enum { IO_RO = 1, IO_WO = 2, IO_RW = 3, } IO_ACC; typedef struct { uint32_t addr; // $600000 int size; // 1, 2, 4 bytes int type; // ro, wo, rw char* bit_str; // <..5...1.> int bits[32]; // bit number like 1,5 int nbits; // number of bits usable int all_bits; // set to 1 if all bits are used char* bit_name[32];// name of each bit (like SLE) char* name; // "Constrast and battery status" } IO_DEF; /* Functions */ int iodefs_load(const char *path); int iodefs_unload(void); GNode* iodefs_tree(void); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_sw/mem_map.c000066400000000000000000000066531220314353500212230ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: iodefs.c 2372 2007-02-25 21:43:23Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2007, Romain Liévin * * 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., 51 Franklin Sarrayt - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Memory Maps loader/parser. */ #include #include #include #include #include #include "ti68k_int.h" #include "mem_map.h" #include "logging.h" MEM_MAP** array = NULL; extern int img_changed; static const char* memmap_calc2str(int calc_type) { switch(calc_type) { case TI89: return "ti89"; case TI92: return "ti92"; case TI92p: return "ti92p"; case V200: return "v200"; case TI89t: return "ti89t"; default: return "none"; } return ""; } static const char* memmap_get_filename() { static char s[256] = ""; sprintf(s, "memmap_%s_hw%i.txt", memmap_calc2str(tihw.calc_type), tihw.hw_type); return s; } int memmap_unload(void) { if(array != NULL) { MEM_MAP **ptr; for(ptr = array; *ptr; ptr++) g_free(*ptr); g_free(array); array = NULL; } return 0; } /* Load information on I/O ports. Return value: 0 if successful -1 if error -2 if no image -4 if already loaded File naming scheme : "memmap_model.txt" => memmap_89.txt */ int memmap_load(const char* path) { FILE *f; gchar *filename; char line[1024]; int n; static int calc_type = 0; static int hw_type = 0; if(!img_loaded) return -2; if(calc_type != tihw.calc_type || hw_type != tihw.hw_type) { calc_type = tihw.calc_type; hw_type = tihw.hw_type; } else return -4; if(array) memmap_unload(); filename = g_strconcat(path, memmap_get_filename(), NULL); f = fopen(filename, "rb"); if(f == NULL) { g_free(filename); return -1; } for(n = 0; !feof(f);) { gchar **split; MEM_MAP *s; guint32 tmp; if (!fgets(line, sizeof(line), f)) break; if (!*line) break; line[strlen(line) - 2] = '\0'; if(line[0] == ';') continue; if(strlen(line) < 2) continue; if(feof(f)) break; split = g_strsplit_set(line, "-:", 3); if(!split[0] || !split[1] || !split[2]) { fprintf(stderr, "Error at line %i: malformed line !\n", n); return -1; } array = g_realloc(array, (n+2) * sizeof(MEM_MAP *)); s = g_new0(MEM_MAP, 1); sscanf(split[0], "%06x", &s->addr); sscanf(split[1], "%06x", &tmp); s->size = tmp - s->addr + 1; s->name = strdup(split[2]); g_strfreev(split); array[n++] = s; array[n] = NULL; } g_free(filename); fclose(f); tiemu_info(_("loading memory map: %s"), memmap_get_filename()); return 0; } MEM_MAP** memmap_array(void) { return array; } tiemu-3.03-nogdb+dfsg/src/core/ti_sw/mem_map.h000066400000000000000000000027561220314353500212300ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: iodefs.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Breakpoint definitions */ #ifndef __MEMMAP_H__ #define __MEMMAP_H__ #include #include #include /* Types */ typedef struct { uint32_t addr; // $200000 uint32_t size; // 1 MB char* name; // "FLASH" } MEM_MAP; /* Functions */ int memmap_load(const char *path); int memmap_unload(void); MEM_MAP** memmap_array(void); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_sw/registers.c000066400000000000000000000157771220314353500216260ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: registers.c 2603 2007-07-14 17:09:56Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Registers access/manipulation */ #ifdef HAVE_CONFIG_H # include #endif #include #include "libuae.h" #include "ti68k_int.h" #include "ti68k_def.h" #include "bits.h" /* Flushes GDB's register cache */ extern void registers_changed(void); /* Flushes GDB's frame cache */ extern void reinit_frame_cache(void); /* Refreshes Insight */ extern void gdbtk_update(void); // SR bits set/get modifiers #define SR_get_T(sr) bit_get(sr, 15) #define SR_get_S(sr) bit_get(sr, 13) #define SR_get_I(sr) (((sr) >> 8) & 7) #define SR_get_X(sr) bit_get(sr, 4) #define SR_get_N(sr) bit_get(sr, 3) #define SR_get_Z(sr) bit_get(sr, 2) #define SR_get_V(sr) bit_get(sr, 1) #define SR_get_C(sr) bit_get(sr, 0) #define SR_chg_T(sr, s) bit_chg(sr, 15, s); #define SR_chg_S(sr, s) bit_chg(sr, 13, s) #define SR_chg_I(sr, v) { sr &= ~(7 << 8); sr |= (v << 8); } #define SR_chg_X(sr, s) bit_chg(sr, 4, s) #define SR_chg_N(sr, s) bit_chg(sr, 3, s) #define SR_chg_Z(sr, s) bit_chg(sr, 2, s) #define SR_chg_V(sr, s) bit_chg(sr, 1, s) #define SR_chg_C(sr, s) bit_chg(sr, 0, s) // Previous state to detect change static uint32_t old_d[8]; static uint32_t old_a[8]; static uint32_t old_sp, old_usp, old_ssp; static uint32_t old_pc; static uint16_t old_sr; static char old_sf[32]; static char old_uf[32]; void ti68k_register_set_data(int n, uint32_t val) { if (n>=0 && n<8) m68k_dreg(regs,n) = val; #ifndef NO_GDB registers_changed (); gdbtk_update(); #endif } void ti68k_register_set_addr(int n, uint32_t val) { if (n>=0 && n<8) m68k_areg(regs,n) = val; #ifndef NO_GDB registers_changed (); gdbtk_update(); #endif } void ti68k_register_set_sp(uint32_t val) { m68k_areg(regs,7) = val; #ifndef NO_GDB registers_changed (); reinit_frame_cache (); gdbtk_update(); #endif } void ti68k_register_set_usp(uint32_t val) { if(!regs.s) m68k_areg(regs,7) = val; else regs.usp = val; #ifndef NO_GDB registers_changed (); reinit_frame_cache (); gdbtk_update(); #endif } void ti68k_register_set_ssp(uint32_t val) { if(regs.s) m68k_areg(regs,7) = val; else regs.isp = val; #ifndef NO_GDB registers_changed (); reinit_frame_cache (); gdbtk_update(); #endif } void ti68k_register_set_pc(uint32_t val) { m68k_setpc(val); fill_prefetch_slow (); /* Force reloading the prefetch. */ #ifndef NO_GDB registers_changed (); reinit_frame_cache (); gdbtk_update(); #endif } void ti68k_register_set_sr(uint32_t val) { regs.sr = (int)val; MakeFromSR(); #ifndef NO_GDB registers_changed (); gdbtk_update(); #endif } void ti68k_register_set_flag(uint8_t flag) { //TODO /* T 0 S 0 0 I2 I1 I0 0 0 0 X N Z V C */ #ifndef NO_GDB registers_changed (); gdbtk_update(); #endif } int ti68k_register_set_flags(const char *sf, const char *uf) { /* SR: T 0 S 0 0 I2 I1 I0 0 0 0 X N Z V C */ int t, s, i, x, n, z, v, c; int nargs; MakeSR(); if(sf != NULL) { nargs = sscanf(sf, "T=%d S=%d I=%d", &t, &s, &i); if(nargs < 3) return 0; if((i < 0) || (i > 7)) return 0; SR_chg_T(regs.sr, 1); SR_chg_T(regs.sr, t); SR_chg_S(regs.sr, s); SR_chg_I(regs.sr, i); } if(uf != NULL) { nargs = sscanf(uf, "X=%d N=%d \nZ=%d V=%d C=%d", &x, &n, &z, &v, &c); if(nargs < 5) return 0; SR_chg_X(regs.sr, x); SR_chg_N(regs.sr, n); SR_chg_Z(regs.sr, z); SR_chg_V(regs.sr, v); SR_chg_C(regs.sr, c); } MakeFromSR(); #ifndef NO_GDB registers_changed (); gdbtk_update(); #endif return !0; } int ti68k_register_get_data(int n, uint32_t *val) { int c = 0; if (n>=0 && n<8) *val = m68k_dreg(regs,n); if(m68k_dreg(regs,n) != old_d[n]) c = !0; old_d[n] = m68k_dreg(regs,n); return c; } int ti68k_register_get_addr(int n, uint32_t *val) { int c = 0; if (n>=0 && n<8) *val = m68k_areg(regs,n); if(m68k_areg(regs,n) != old_a[n]) c = !0; old_a[n] = m68k_areg(regs,n); return c; } int ti68k_register_get_sp(uint32_t *val) { int c = 0; *val = m68k_areg(regs,7); if(m68k_areg(regs,7) != old_sp) c = !0; old_sp = m68k_areg(regs,7); return c; } int ti68k_register_get_usp(uint32_t *val) { int c = 0; uae_u32 *reg; if(!regs.s) reg = &m68k_areg(regs,7); else reg = ®s.usp; *val = *reg; if(*reg != old_usp) c = !0; old_usp = *reg; return c; } int ti68k_register_get_ssp(uint32_t *val) { int c = 0; uae_u32 *reg; if(regs.s) reg = &m68k_areg(regs,7); else reg = ®s.isp; *val = *reg; if(*reg != old_ssp) c = !0; old_ssp = *reg; return c; } int ti68k_register_get_pc(uint32_t *val) { int c = 0; *val = m68k_getpc(); if(*val != old_pc) c = !0; old_pc = regs.pc; return c; } int ti68k_register_get_sr(uint32_t *val) { int c =0; MakeSR(); *val = regs.sr; if(regs.sr != old_sr) c = !0; old_sr = regs.sr; return c; } const char *ti68k_register_get_flag(void) { static char str[64]; /* T 0 S 0 0 I2 I1 I0 0 0 0 X N Z V C */ MakeSR(); printf("T=%d S=%d I=%d | X=%d N=%d\nZ=%d V=%d C=%d\n", SR_get_T(regs.sr), SR_get_S(regs.sr), SR_get_I(regs.sr), SR_get_X(regs.sr), SR_get_N(regs.sr), SR_get_Z(regs.sr), SR_get_V(regs.sr), SR_get_C(regs.sr) ); return str; } int ti68k_register_get_flags(char *sf, char *uf) { int c =0; /* SR: T 0 S 0 0 I2 I1 I0 0 0 0 X N Z V C */ MakeSR(); sprintf(sf, "T=%d S=%d I=%d", SR_get_T(regs.sr), SR_get_S(regs.sr), SR_get_I(regs.sr)); sprintf(uf, "X=%d N=%d \nZ=%d V=%d C=%d", /* %dSPC\n: SPC is important ! */ SR_get_X(regs.sr), SR_get_N(regs.sr), SR_get_Z(regs.sr), SR_get_V(regs.sr), SR_get_C(regs.sr)); if(strcmp(sf, old_sf) || strcmp(uf, old_uf)) c = !0; strcpy(old_sf, sf); strcpy(old_uf, uf); return c; } tiemu-3.03-nogdb+dfsg/src/core/ti_sw/registers.h000066400000000000000000000042071220314353500216150ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: registers.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_REGS__ #define __TI68K_REGS__ typedef enum { REG_D0, REG_D1, REG_D2, REG_D3, REG_D4, REG_D5, REG_D6, REG_D7, } Ti68kDataRegister; typedef enum { REG_A0, REG_A1, REG_A2, REG_A3, REG_A4, REG_A5, REG_A6, REG_A7, } Ti68kAddrRegister; void ti68k_register_set_data(int n, uint32_t val); void ti68k_register_set_addr(int n, uint32_t val); void ti68k_register_set_sp(uint32_t val); void ti68k_register_set_usp(uint32_t val); void ti68k_register_set_ssp(uint32_t val); void ti68k_register_set_pc(uint32_t val); void ti68k_register_set_sr(uint32_t val); void ti68k_register_set_flag(uint8_t flag); int ti68k_register_set_flags(const char *sf, const char *uf); int ti68k_register_get_data(int n, uint32_t *val); int ti68k_register_get_addr(int n, uint32_t *val); int ti68k_register_get_sp(uint32_t *val); int ti68k_register_get_usp(uint32_t *val); int ti68k_register_get_ssp(uint32_t *val); int ti68k_register_get_pc(uint32_t *val); int ti68k_register_get_sr(uint32_t *val); const char *ti68k_register_get_flag(void); int ti68k_register_get_flags(char *sf, char *uf); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_sw/romcalls.c000066400000000000000000000172311220314353500214160ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: romcalls.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Symbols (ROM calls address and names) */ #include #include #include #include #include "romcalls.h" #include "images.h" #include "ti68k_def.h" #include "timem.h" extern int img_changed; // set if image modified static int loaded = 0; // loaded static ROM_CALL table[NMAX_ROMCALLS]; // list by id static GList *list = NULL; // sorted list (by id, addr or name) /* =========== */ /* Retrieve base address of ROM calls table and size. */ void romcalls_get_table_infos(uint32_t *base, uint32_t *size) { *base = *size = 0; if(tihw.calc_type == TI92) return; *base = rd_long(&tihw.rom[0x12000 + 0x88 + 0xC8]); *size = rd_long(&tihw.rom[((*base-4) & 0x0fffff)]); } /* Given a ROM call ID, retrieve address of ROM call. */ void romcalls_get_symbol_address(int id, uint32_t *addr) { uint32_t base; base = rd_long(&tihw.rom[0x12000 + 0x88 + 0xC8]); *addr = rd_long(&tihw.rom[(base & 0x0fffff) + 4*id]); } /* =========== */ /* Load a list of ROM calls symbols (addr & id), TIGCC formatted. */ static void load_tigcc_file_type(FILE *f) // os.h TIGCC file: ".set acos, 0xF5" { char buf[256]; char *name, *p; int n; int number; while(!feof(f)) { if (!fgets(buf, sizeof(buf), f)) break; // no '.set' ? if(*buf != '.') continue; // get function name name = strdup(buf+5); p = strchr(name, ','); if(p == NULL) continue; else *p++ = '\0'; // get function number n = sscanf(p, "%x", &number); if((n < 1) || (number > 0x7ff)) { free(name); continue; } // and store table[number].name = name; table[number].id = number; } } /* Load a list of ROM calls symbols (addr & id), tthdex formatted. */ static void load_lionel_file_type(FILE *f) // Lionel Debroux formatted file: 2E:ScrToHome { char str[256]; int number; while(!feof(f)) { gchar **array; // get line if (!fgets(str, sizeof(str), f) || feof(f)) break; for (number = strlen(str) - 1; str[number] == '\n' || str[number] == '\r'; number--) str[number] = '\0'; if(!strchr(str, ':')) continue; // split array = g_strsplit(str, ":", 2); if(!array[0] || !array[1]) { g_strfreev(array); continue; } // get values and store sscanf(array[0], "%x", &number); table[number].name = strdup(array[1]); table[number].id = number; g_strfreev(array); } } /* Load ROM calls (id & addr) from file. Don't touch addr field. */ static int load_from_file(const char *filename) { FILE *f; char tmp[32]; printf("Loading ROM calls from file <%s>... ", filename); memset(table, 0, sizeof(table)); f = fopen(filename, "rt"); if(f == NULL || !fgets(tmp, sizeof(tmp), f) || !fgets(tmp, sizeof(tmp), f)) { printf("Failed to open <%s> with error %s (%d)\n", filename, strerror(errno), errno); return -1; } rewind(f); if(!strncmp(tmp, ".set", strlen(".set"))) load_tigcc_file_type(f); else load_lionel_file_type(f); fclose(f); printf("Done !\n"); return 0; } /* Fill the addr field from ROM calls located in FLASH. Don't touch other fields ! And construct list from ROM call table. */ static int merge_from_flash(void) { uint32_t addr; int size; int i; if(list != NULL) { g_list_free(list); list = NULL; } romcalls_get_table_infos(&addr, (uint32_t *)&size); if(size == 0) return -1; printf("Parsing ROM calls from flash memory (%i entries at $%06x)... ", size, addr); for(i = 0; i < size; i++) { if(table[i].name == NULL) table[i].name = strdup("unknown"); table[i].addr = rd_long(&tihw.rom[(addr & 0x0fffff) + (i << 2)]); list = g_list_append (list, &table[i]); } //list = g_list_reverse(list); printf("Done !\n"); return 0; } /* Load ROM calls from file and FLASH and merge. Return value: 0 if successful -1 if error -2 if no image -3 if TI92 -4 if already loaded */ int romcalls_load(const char* filename) { IMG_INFO *img = &img_infos; // check whether parsing is possible if(!img_loaded) return -2; if(img->calc_type == TI92) return -3; // check for reload if(!img_changed) return -4; else img_changed = 0; if(load_from_file(filename)) return -1; if(merge_from_flash()) return -1; loaded = !0; return 0; } int romcalls_is_loaded(void) { return loaded; } /* =========== */ // negative value if a < b; zero if a = b; positive value if a > b static gint compare_func_by_id(gconstpointer a, gconstpointer b) { ROM_CALL *aa = (ROM_CALL *)a; ROM_CALL *bb = (ROM_CALL *)b; if(aa->id == bb->id) return 0; else if(aa->id > bb->id) return 1; else return -1; } GList* romcalls_sort_by_id(void) { return g_list_sort(list, compare_func_by_id); } // negative value if a < b; zero if a = b; positive value if a > b static gint compare_func_by_addr(gconstpointer a, gconstpointer b) { ROM_CALL *aa = (ROM_CALL *)a; ROM_CALL *bb = (ROM_CALL *)b; if(aa->addr == bb->addr) return 0; else if(aa->addr > bb->addr) return 1; else return -1; } GList* romcalls_sort_by_addr(void) { return list = g_list_sort(list, compare_func_by_addr); } // negative value if a < b; zero if a = b; positive value if a > b static gint compare_func_by_name(gconstpointer a, gconstpointer b) { ROM_CALL *aa = (ROM_CALL *)a; ROM_CALL *bb = (ROM_CALL *)b; return strcmp(aa->name, bb->name); } GList* romcalls_sort_by_name(void) { return list = g_list_sort(list, compare_func_by_name); } // negative value if a < b; zero if a = b; positive value if a > b static gint compare_func_by_iname(gconstpointer a, gconstpointer b) { ROM_CALL *aa = (ROM_CALL *)a; ROM_CALL *bb = (ROM_CALL *)b; return g_ascii_strcasecmp(aa->name, bb->name); } GList* romcalls_sort_by_iname(void) { return list = g_list_sort(list, compare_func_by_iname); } /* =========== */ // cache last search (disasm) static int last_id = 0; // returns id or -1 int romcalls_is_addr(uint32_t addr) { int i; if(!loaded) return -1; for(i = 0; i < (int)g_list_length(list); i++) { if(addr == table[i].addr) return last_id = i; } return -1; } // returns id or -1 int romcalls_is_name(const char *name) { int i; if(!loaded) return -1; for(i = 0; i < (int)g_list_length(list); i++) { if(!strcmp(name, table[i].name)) return i; } return -1; } const char* romcalls_get_name(int id) { if(!loaded) return "not loaded"; return table[id].name; } uint32_t romcalls_get_addr(int id) { return table[id].addr; } tiemu-3.03-nogdb+dfsg/src/core/ti_sw/romcalls.h000066400000000000000000000042301220314353500214160ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: romcalls.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Breakpoint definitions */ #ifndef __ROMCALLS__ #define __ROMCALLS__ #include #include #ifndef FLOATFORMAT_H /* Don't include glib.h when included from GDB. */ #include #endif #define NMAX_ROMCALLS 0x800 /* Types */ typedef struct { int id; uint32_t addr; char* name; } ROM_CALL; /* Functions */ void romcalls_get_table_infos(uint32_t *base, uint32_t *size); void romcalls_get_symbol_address(int id, uint32_t *addr); int romcalls_load(const char* filename); int romcalls_is_loaded(void); #ifndef FLOATFORMAT_H GList* romcalls_sort_by_id(void); GList* romcalls_sort_by_addr(void); GList* romcalls_sort_by_name(void); GList* romcalls_sort_by_iname(void); #endif int romcalls_is_addr(uint32_t addr); int romcalls_is_name(const char *name); const char* romcalls_get_name(int id); uint32_t romcalls_get_addr(int id); const char* ercodes_get_name(unsigned id); #define ROMCALL_ID(elt) (((ROM_CALL *)(elt->data))->id) #define ROMCALL_NAME(elt) (((ROM_CALL *)(elt->data))->name) #define ROMCALL_ADDR(elt) (((ROM_CALL *)(elt->data))->addr) #endif tiemu-3.03-nogdb+dfsg/src/core/ti_sw/timem.c000066400000000000000000000036371220314353500207220ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: timem.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Memory access (take care of little/big endian issues) */ #include #include #include "timem.h" #include "mem.h" /* General functions (not related to TI memory) */ uint16_t rd_word(uint8_t *p) { uint16_t *p16 = (uint16_t *)p; return GUINT16_FROM_BE(*p16); } uint32_t rd_long(uint8_t *p) { uint32_t *p32 = (uint32_t *)p; return GUINT32_FROM_BE(*p32); } void wr_word(uint8_t *p, uint16_t d) { uint16_t *p16 = (uint16_t *)p; *p16 = GUINT16_TO_BE(d); } void wr_long(uint8_t *p, uint32_t d) { uint32_t *p32 = (uint32_t *)p; *p32 = GUINT32_TO_BE(d); } /* Memory access functions (TI memory) */ void mem_rd_block(uint32_t a, uint8_t *d, uint16_t len) { int i; for(i = 0; i < len; i++) d[i] = mem_rd_byte(a+i); } void mem_wr_block(uint32_t a, uint8_t *d, uint16_t len) { int i; for(i = 0; i < len; i++) mem_wr_byte(a+i, d[i]); } tiemu-3.03-nogdb+dfsg/src/core/ti_sw/timem.h000066400000000000000000000031521220314353500207170ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: romcalls.h 864 2005-02-22 09:54:05Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TIMEM__ #define __TIMEM__ #include "mem.h" /* Functions */ uint16_t rd_word(uint8_t *p); uint32_t rd_long(uint8_t *p); void wr_word(uint8_t *p, uint16_t d); void wr_long(uint8_t *p, uint32_t d); #define mem_rd_byte mem_get_byte_ptr #define mem_rd_word mem_get_word_ptr #define mem_rd_long mem_get_long_ptr #define mem_wr_byte mem_put_byte_ptr #define mem_wr_word mem_put_word_ptr #define mem_wr_long mem_put_long_ptr void mem_rd_block(uint32_t a, uint8_t *d, uint16_t len); void mem_wr_block(uint32_t a, uint8_t *d, uint16_t len); #endif tiemu-3.03-nogdb+dfsg/src/core/ti_sw/vat.c000066400000000000000000000265031220314353500203760ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: vat.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Variable Allocation Table access routines */ #include #include #include #include "ti68k_def.h" #include "ti68k_int.h" #include "handles.h" #include "vat.h" typedef struct { char name[8]; uint16_t compat; union { uint16_t flags_n; struct { uint16_t busy : 1, local : 1, flag1_5 : 1, flag1_4 : 1, collapsed : 1, twin : 1, archived : 1, in_view : 1; uint16_t folder : 1, overwritten : 1, checked : 1, hidden : 1, locked : 1, statvar : 1, graph_ref_1 : 1, graph_ref_0 : 1; } bits; } flags; uint16_t handle; } TI89_SYM_ENTRY; typedef struct { uint16_t folder; uint16_t offset; } TI89_HSym; /* "a" To "z", "A" To "Z", Chr(128), Chr(129), Chr(130), Chr(131), Chr(132), Chr(133), Chr(134), Chr(135), Chr(136), Chr(137), Chr(138), Chr(139), Chr(141), Chr(142), Chr(143), Chr(144), Chr(145), Chr(146), Chr(147), Chr(148), "À" To "Ö", "Ø" To "ö", "ø" To "ÿ", "_", Chr(154), Chr(155), Chr(178), "\" and "0" To "9" (apart from first position) */ static int valid_chars[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x00 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x20 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 0x80 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xa0 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 0xc0 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 0xe0 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, }; #define is_allowed_char(x) (valid_chars[(x) & 0xff]) //#define is_alnum(c) isalnum((char)(c)) // Return TRUE if there is a NULL terminated string starting at *mem. static int is_varname(uint8_t *mem) { int i=0; //printf("%i %i %i %02x\n", is_alnum(mem[i]) ? 1 : 0, is_allowed_char(mem[i]), mem[i], mem[i]); // The VAT can contain names starting with a number, they are hidden in Var-Link. if(!is_allowed_char(mem[0])) return 0; for(i=1; i<8; i++) if(!is_allowed_char(mem[i]) && mem[i]) return 0; return !0; } static int get_folder_list_handle(void) { int h, i; // search for memory blocks which have a string at [5] for(h = 1; h < HEAP_MAX_SIZE; h++) { uint32_t addr; uint16_t size; heap_get_block_addr_and_size(h, &addr, &size); if(is_varname(ti68k_get_real_address(addr + 4))) { // next, be sure we have found the folder list by comparing the number of (possible) // folders with the number of identified folders int nfolders = mem_rd_word(addr+2); // The folder list always contains at least the main folder. if(nfolders == 0) continue; for(i = 0; i < nfolders; i++) if(!is_varname(ti68k_get_real_address(addr + 4 + i*sizeof(TI89_SYM_ENTRY)))) break; // not valid, so try the next handle if(i < nfolders) continue; printf("handle $%i, #folders = %i\n", h, nfolders); return h; } } return -1; } static int parse_vat_89(GNode *node_top) { uint32_t fa, va, pa; uint16_t fs, vs, ps; int nfolders, nvars; int i, j; VatSymEntry *vse; GNode *node_fol, *node_var; int handle = 0x08; if(tihw.calc_type == TI92) return -1; // handle: names and handles of all folders (including "main") if(strcmp(img_infos.version, "2.00") >= 0) handle = get_folder_list_handle(); // AMS2 (dynamic) else handle = 0x08; // AMS1 (static) if(handle == -1) return -1; else heap_get_block_addr_and_size(handle, &fa, &fs); // skip maximum number of folders before handle #$B needs to be resized // and actual number of folders nfolders = mem_rd_word(fa+2); fa += 4; // now, we read a list of SYM_ENTRY structs (list of folders) for(i=0; iname, se.name); vse->handle = se.handle; g_node_append(node_top, node_fol = g_node_new(vse)); // handle xxxx: names and handles of all variables heap_get_block_addr_and_size(se.handle, &va, &vs); // skip max num and actual num of vars nvars = mem_rd_word(va+2); va += 4; for(j=0; jname, se.name); vse->handle = se.handle; g_node_append(node_fol, node_var = g_node_new(vse)); // handle: variable content heap_get_block_addr_and_size(se.handle, &pa, &ps); } } return 0; } /* An excellent doc on VAT: http://doors.ticalc.org/tips.htm#VAT */ typedef struct { char name[9]; uint8_t state; uint16_t handle; } TI92_SYM_ENTRY; // tested: OK. static int parse_vat_92(GNode *node_top) { uint32_t fa, va, pa; uint16_t fs, vs, ps; int nfolders, nvars; int i, j; VatSymEntry *vse; GNode *node_fol, *node_var; if(tihw.calc_type != TI92) return -1; // handle 000B: names and handles of all folders (including "main") heap_get_block_addr_and_size(0xb, &fa, &fs); // skip maximum number of folders before handle #$B needs to be resized // and actual number of folders nfolders = mem_rd_word(fa+2); fa += 4; // now, we read a list of SYM_ENTRY structs (list of folders) for(i=0; iname, se.name); vse->handle = se.handle; g_node_append(node_top, node_fol = g_node_new(vse)); // handle xxxx: names and handles of all variables heap_get_block_addr_and_size(se.handle, &va, &vs); // skip max num and actual num of vars nvars = mem_rd_word(va+2); va += 4; for(j=0; jname, se.name); vse->handle = se.handle; g_node_append(node_fol, node_var = g_node_new(vse)); // handle: variable content heap_get_block_addr_and_size(se.handle, &pa, &ps); } } return 0; } /* Allocate and create a tree */ int vat_parse(GNode **tree) { VatSymEntry *vse; if(tree == NULL) return -1; vse = g_malloc0(sizeof(VatSymEntry)); strcpy(vse->name, "home"); *tree = g_node_new(vse); if(tihw.calc_type == TI92) parse_vat_92(*tree); else parse_vat_89(*tree); return 0; } static int sym_find_handle_89(const char *dirname, const char *filename) { uint32_t fa, va; uint16_t fs, vs; int nfolders, nvars; int i, j; int handle = 0x08; if(tihw.calc_type == TI92) return -1; // handle: names and handles of all folders (including "main") if(strcmp(img_infos.version, "2.00") >= 0) handle = get_folder_list_handle(); // AMS2 (dynamic) else handle = 0x08; // AMS1 (static) if(handle == -1) return 0; else heap_get_block_addr_and_size(handle, &fa, &fs); // skip maximum number of folders before handle #$B needs to be resized // and actual number of folders nfolders = mem_rd_word(fa+2); fa += 4; // now, we read a list of SYM_ENTRY structs (list of folders) for(i=0; idata); return FALSE; } /* Free a previously allocated tree */ int vat_free(GNode **tree) { if (*tree != NULL) { g_node_traverse(*tree, G_IN_ORDER, G_TRAVERSE_ALL, -1, free_vse, NULL); g_node_destroy(*tree); *tree = NULL; } return 0; } tiemu-3.03-nogdb+dfsg/src/core/ti_sw/vat.h000066400000000000000000000025001220314353500203720ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: vat.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __VAT__ #define __VAT__ /* Definitions */ typedef struct { char name[9]; uint16_t handle; } VatSymEntry; /* Functions */ int vat_parse(GNode **tree); int vat_free(GNode **tree); int sym_find_handle(const char *dirname, const char *filename); #endif tiemu-3.03-nogdb+dfsg/src/core/type2str.c000066400000000000000000000202331220314353500202450ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: type2str.c 2601 2007-07-14 08:49:30Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Type conversion routines */ #include #include #include "intl.h" #include "ti68k_def.h" #include "bkpts.h" const char *ti68k_calctype_to_string(int type) { switch(type) { case TI89: return "TI89"; case TI92: return "TI92"; case TI92p: return "TI92+"; case V200: return "V200PLT"; case TI89t: return "TI89t"; default: return "none"; } } int ti68k_string_to_calctype(const char *str) { if(!strcmp(str, "TI89")) return TI89; else if(!strcmp(str, "TI92")) return TI92; else if(!strcmp(str, "TI92+")) return TI92p; else if(!strcmp(str, "V200PLT")) return V200; else if(!strcmp(str, "TI89t")) return TI89t; return 0; } const char *ti68k_romtype_to_string(int type) { switch(type) { case 0: return "EPROM"; case FLASH_ROM: return "FLASH"; } return 0; } int ti68k_string_to_romtype(const char *str) { if(!strcmp(str, "EPROM")) return 0; else if(!strcmp(str, "FLASH")) return FLASH_ROM; return 0; } const char *ti68k_hwtype_to_string(int type) { switch(type) { case HW1: return "HW1"; case HW2: return "HW2"; case HW3: return "HW3"; case HW4: return "HW4"; default: return "none"; } } int ti68k_string_to_hwtype(const char *str) { if(!strcmp(str, "HW1")) return HW1; else if(!strcmp(str, "HW2")) return HW2; else if(!strcmp(str, "HW3")) return HW3; else if(!strcmp(str, "HW4")) return HW4; return 0; } const char *ti68k_exception_to_string(int number) { switch(number) { case 0: return _("Initial SSP"); case 1: return _("Initial PC"); case 2: return _("Bus Error vector"); case 3: return _("Address Error vector"); case 4: return _("Illegal Instruction vector"); case 5: return _("Zero Divide vector"); case 6: return _("CHK Instruction vector"); case 7: return _("TRAPV Instruction vector"); case 8: return _("Privilege Violation vector"); case 9: return _("Trace vector"); case 10: return _("Line 1010 Emulator vectors"); case 11: return _("Line 1111 Emulator vectors"); case 12: return _("Unassigned, reserved"); case 13: return _("Unassigned, reserved"); case 14: return _("Unassigned, reserved"); case 15: return _("Uninitialised Interrupt vector"); case 16: return _("Unassigned, reserved"); case 17: return _("Unassigned, reserved"); case 18: return _("Unassigned, reserved"); case 19: return _("Unassigned, reserved"); case 20: return _("Unassigned, reserved"); case 21: return _("Unassigned, reserved"); case 22: return _("Unassigned, reserved"); case 23: return _("Unassigned, reserved"); case 24: return _("Spurious Interrupt vector"); case 25: return _("Level 1 Interrupt auto-vectors"); case 26: return _("Level 2 Interrupt auto-vectors"); case 27: return _("Level 3 Interrupt auto-vectors"); case 28: return _("Level 4 Interrupt auto-vectors"); case 29: return _("Level 5 Interrupt auto-vectors"); case 30: return _("Level 6 Interrupt auto-vectors"); case 31: return _("Level 7 Interrupt auto-vectors"); case 32: return _("TRAP #0 Instruction vectors"); case 33: return _("TRAP #1 Instruction vectors"); case 34: return _("TRAP #2 Instruction vectors"); case 35: return _("TRAP #3 Instruction vectors"); case 36: return _("TRAP #4 Instruction vectors"); case 37: return _("TRAP #5 Instruction vectors"); case 38: return _("TRAP #6 Instruction vectors"); case 39: return _("TRAP #7 Instruction vectors"); case 40: return _("TRAP #8 Instruction vectors"); case 41: return _("TRAP #9 Instruction vectors"); case 42: return _("TRAP #10 Instruction vectors"); case 43: return _("TRAP #11 Instruction vectors"); case 44: return _("TRAP #12 Instruction vectors"); case 45: return _("TRAP #13 Instruction vectors"); case 46: return _("TRAP #14 Instruction vectors"); case 47: return _("TRAP #15 Instruction vectors"); case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 58: case 59: case 60: case 61: case 62: case 63: return _("Unassigned, reserved"); case 64: return _("User Interrupt vectors"); default: return _("User Interrupt vectors"); } } const char *ti68k_bkpt_cause_to_string(int type) { switch(type) { case BK_CAUSE_ACCESS: return _("access"); case BK_CAUSE_RANGE: return _("access range"); case BK_CAUSE_ADDRESS: return _("address"); case BK_CAUSE_EXCEPTION:return _("exception"); case BK_CAUSE_PGMENTRY: return _("prgm entry"); case BK_CAUSE_PROTECT: return _("hw protection"); case BK_CAUSE_BIT: return _("bit change"); default: return _("unknown"); } } const char *ti68k_bkpt_type_to_string(int type) { switch(type) { case BK_TYPE_ACCESS: return _("access"); case BK_TYPE_RANGE: return _("range"); case BK_TYPE_CODE: return _("code"); case BK_TYPE_EXCEPTION: return _("exception"); case BK_TYPE_PGMENTRY: return _("prgm entry"); case BK_TYPE_PROTECT: return _("hw protection"); case BK_TYPE_BIT: return _("bit change"); default: return _("unknown"); } } int ti68k_string_to_bkpt_type(const char *str) { if(!strcmp(str, _("access"))) return BK_TYPE_ACCESS; else if(!strcmp(str, _("range"))) return BK_TYPE_RANGE; else if(!strcmp(str, _("code"))) return BK_TYPE_CODE; else if(!strcmp(str, _("exception"))) return BK_TYPE_EXCEPTION; else if(!strcmp(str, _("prgm entry"))) return BK_TYPE_PGMENTRY; else if(!strcmp(str, _("hw protection"))) return BK_TYPE_PROTECT; else if(!strcmp(str, _("bit change"))) return BK_TYPE_BIT; return 0; } const char *ti68k_bkpt_mode_to_string(int type, int mode) { // don't use type, it's implicit. if( (mode & BK_READ) && !(mode & BK_WRITE) ) { if(mode & BK_BYTE) return "byte-read"; else if(mode & BK_WORD) return "word-read"; else if(mode & BK_LONG) return "long-read"; else return "read"; } else if( !(mode & BK_READ) && (mode & BK_WRITE) ) { if(mode & BK_BYTE) return "byte-write"; else if(mode & BK_WORD) return "word-write"; else if(mode & BK_LONG) return "long-write"; else return "write"; } else if( (mode & BK_READ) && (mode & BK_WRITE) ) { if(mode & BK_BYTE) return "r/w byte"; else if(mode & BK_WORD) return "r/w word"; else if(mode & BK_LONG) return "r/w long"; else return "r/w"; } return "unknown (bug)"; } int ti68k_string_to_bkpt_mode(const char * str) { if(!strcmp(str, "any") || !strcmp(str, "r/w")) return BK_READ | BK_WRITE; else if(!strcmp(str, "read")) return BK_READ; else if(!strcmp(str, "write")) return BK_WRITE; else if(!strcmp(str, "byte-read")) return BK_READ_BYTE; else if(!strcmp(str, "word-read")) return BK_READ_WORD; else if(!strcmp(str, "long-read")) return BK_READ_LONG; else if(!strcmp(str, "byte-write")) return BK_WRITE_BYTE; else if(!strcmp(str, "word-write")) return BK_WRITE_WORD; else if(!strcmp(str, "long-write")) return BK_WRITE_LONG; else if(!strcmp(str, "r/w byte")) return BK_RW_BYTE; else if(!strcmp(str, "r/w word")) return BK_RW_WORD; else if(!strcmp(str, "r/w long")) return BK_RW_LONG; else return 0; } tiemu-3.03-nogdb+dfsg/src/core/type2str.h000066400000000000000000000032621220314353500202550ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: type2str.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2002, Romain Lievin, Julien Blache * Copyright (c) 2003-2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TI68K_TYPE2STR__ #define __TI68K_TYPE2STR__ const char *ti68k_calctype_to_string(int type); int ti68k_string_to_calctype(const char *str); const char *ti68k_romtype_to_string(int type); int ti68k_string_to_romtype(const char *str); const char *ti68k_hwtype_to_string(int type); int ti68k_string_to_hwtype(const char *str); const char *ti68k_exception_to_string(int number); const char *ti68k_bkpt_type_to_string(int type); int ti68k_string_to_bkpt_type(const char *str); const char *ti68k_bkpt_mode_to_string(int type, int mode); int ti68k_string_to_bkpt_mode(const char * str); #endif tiemu-3.03-nogdb+dfsg/src/core/uae/000077500000000000000000000000001220314353500170575ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/core/uae/COPYING000066400000000000000000000436531220314353500201250ustar00rootroot00000000000000 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) 19yy 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) 19yy 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. tiemu-3.03-nogdb+dfsg/src/core/uae/Makefile000066400000000000000000000062221220314353500205210ustar00rootroot00000000000000# # Extra rules for building the emulation engine # #CPUFLAGS = -O3 -mpentium -fomit-frame-pointer -Wall -Wno-unused -Wno-format -W -Wmissing-prototypes -Wstrict-prototypes -DX86_ASSEMBLY -D__inline__=inline -DSTATFS_NO_ARGS=2 -DSTATBUF_BAVAIL=f_bavail # trying to be portable... *TRYING* #CFLAGS = -mms-bitfields CPUFLAGS = $(CFLAGS) -fomit-frame-pointer -Wno-unused -Wno-format -W -Wmissing-prototypes -Wstrict-prototypes -D__inline__=inline -DSTATFS_NO_ARGS=2 -DSTATBUF_BAVAIL=f_bavail #-Wall gen: cpudefs.c cpustbl.c cputbl.h cpuemu.c # WARNING: Don't try to build newcpu.o here, because newcpu.c references TiEmu include files. all: cpudefs.o cpustbl.o readcpu.o fpp.o missing.o cpuemu1.o cpuemu2.o cpuemu3.o cpuemu4.o cpuemu5.o cpuemu6.o cpuemu7.o cpuemu8.o # For cross-compiling (generators are run on host) build68k_host.o: build68k.c C_INCLUDE_PATH="" LIBRARY_PATH="" gcc -c -o $@ $? gencpu_host.o: gencpu.c C_INCLUDE_PATH="" LIBRARY_PATH="" gcc -c -o $@ $? readcpu_host.o: readcpu.c C_INCLUDE_PATH="" LIBRARY_PATH="" gcc -c -o $@ $? cpudefs_host.o: cpudefs.c C_INCLUDE_PATH="" LIBRARY_PATH="" gcc -c -o $@ $? missing_host.o: missing.c C_INCLUDE_PATH="" LIBRARY_PATH="" gcc -c -o $@ $? xmalloc_host.o: xmalloc.c C_INCLUDE_PATH="" LIBRARY_PATH="" gcc -c -o $@ $? # Build generators and files to generate build68k: build68k_host.o @echo "-> Compiling 68k builder..." C_INCLUDE_PATH="" LIBRARY_PATH="" gcc $(LDFLAGS) -o $@ $? gencpu: gencpu_host.o readcpu_host.o cpudefs_host.o missing_host.o xmalloc_host.o @echo "-> Compiling CPU generator..." C_INCLUDE_PATH="" LIBRARY_PATH="" gcc $(LDFLAGS) -o $@ gencpu_host.o readcpu_host.o cpudefs_host.o missing_host.o xmalloc_host.o cpudefs.c: build68k table68k @echo "-> Building CPU definitions..." ./build68k cpudefs.c cpuemu.c: gencpu @echo "-> Generating CPU tables..." ./gencpu # gencpu also creates cpustbl.c and cputbl.h cpustbl.c: cpuemu.c cputbl.h: cpuemu.c # CPU engine cpuemu1.o: cpuemu.c $(CC) -DPART_1 $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ cpuemu2.o: cpuemu.c $(CC) -DPART_2 $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ cpuemu3.o: cpuemu.c $(CC) -DPART_3 $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ cpuemu4.o: cpuemu.c $(CC) -DPART_4 $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ cpuemu5.o: cpuemu.c $(CC) -DPART_5 $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ cpuemu6.o: cpuemu.c $(CC) -DPART_6 $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ cpuemu7.o: cpuemu.c $(CC) -DPART_7 $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ cpuemu8.o: cpuemu.c $(CC) -DPART_8 $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ # Misc cpudefs.o: cpudefs.c $(CC) $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ cpustbl.o: cputbl.h $(CC) $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $*.c readcpu.o: readcpu.h $(CC) $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $*.c fpp.o: fpp.c $(CC) $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ missing.o: missing.c $(CC) $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ newcpu.o: newcpu.c newcpu.h $(CC) $(INCLUDES) -c $(INCDIRS) $(CPUFLAGS) $< -o $@ clean: $(RM) build68k gencpu *.o $(RM) build68k.exe gencpu.exe distclean: clean $(RM) cpudefs.c cpustbl.c cputbl.? cpuemu.c cpuemu?.o tiemu-3.03-nogdb+dfsg/src/core/uae/README000066400000000000000000001266041220314353500177500ustar00rootroot00000000000000This is version 0.8.25 of UAE-core, the UAE Amiga Emulator. This package used to be the master copy of UAE; it has somewhat lagged in development. It is now intended to be a stable emulator core with a focus on running old A500 games and demos. Certain extra features, such as a JIT compiler, will not be added - other packages such as WinUAE or E-UAE are available which include these patches. License ======= UAE is available under the terms of the GNU General Public License. This means that it is free software: you are welcome to distribute copies of it and/or modify it, under certain conditions. It also means that there is no warranty for UAE. See the file COPYING that is included in the top level directory of this archive for details. Overview ======== An emulator is a program which enables you to run software for a machine which has non-native hardware and a non-native operating system, on your computer. UAE allows you to run most of the available Amiga software. It is a software emulation, meaning that no extra or special hardware is needed to do this. The hardware of an Amiga is emulated accurately, so that Amiga software is tricked into thinking it is running on the real thing, with your computer's display, keyboard, harddisk and mouse taking the parts of their emulated counterparts. UAE was developed for Unixoid systems. Meanwhile, it has been ported to the Mac, DOS, Windows, the BeBox, NextStep, the XFree86/OS2 environment and the Amigas (it can run itself by now). You should have received several other files along with this document with details on how to install and use the version for your operating system. This section is just what it says: an overview. Please read _all_ of this file, especially if you have problems. UAE has many, many features and equally many configuration options. If you don't know about them, it's likely that UAE doesn't work for you, or doesn't work as good as it could. Please read also the file "FAQ" which contains some Frequently Asked Questions (and even the answers!) You should also look for a document describing the specific port of UAE to the operating system you are using, for example "BeOS/README" or "DOS/README". People have complained that the UAE documentation contains only "weird jargon". Sorry about this. Despite what MessySoft and Tomato tell you, computer programs aren't always easy to use. UAE does require some assistance from you, and therefore you should at least understand a bit about computers. After all, you are an Amiga fan, so you should know what a Workbench is, don't you think? Features ======== This version of UAE emulates: - A 68000, 68010 or 68020 CPU, optionally a 68881 FPU - OCS Graphics Chipset, plus big blits from the ECS Chipset - Up to 2MB Chip RAM and up to 8MB Fast RAM, or 8MB Chip RAM without Fast RAM - Up to 64MB Zorro III Fast RAM, independent of Chip RAM setting (68020 only) - Up to 1MB Slow RAM, for extended compatibility with problem software - Up to 8MB of graphics card memory, usable by software that supports Picasso 96 compatible graphics cards - 4 x 3.5" floppy disk drives (DF0:, DF1:, DF2: and DF3:). It's not possible to read Amiga disks, so these are emulated with disk files. - A hard-disk: either a harddisk image file or part of the native filesystem - Joystick support (with option of mapping joystick to numeric keypad) - Mouse support - Ability to run in various screen modes (for better display quality or better speed) - Full stereo sound support, consisting of 4 x 8bit channels - Beta parallel and serial port support - some other things which don't work well enough to mention them here... Requirements (IMPORTANT! READ THIS!)/Limitations ================================================ Not emulated: - Sprite to playfield collisions (sprite to sprite collisions work) - An MMU (part of 68030/040 CPUs except those that Commodore used). This means you can't use virtual memory systems or real operating systems like Linux or BSD. - The AGA chipset (A4000/A1200). This chipset has enhanced capabilites for up to 256 colors in all resolutions. - Serial port emulation exists but doesn't work too well. Since the PC floppy controller can't read Amiga disks (yes, that's a fact), floppy access has to be emulated differently: Floppies are emulated by means of disk files that contain a raw image of the floppy disk you want to emulate. A disk file is an image of the raw data on an Amiga floppy disk, it contains 901120 bytes (880K), which is the standard capacity of an Amiga disk. To actually run the program, you'll need to install the ROM image from your Amiga. You can't run UAE if you don't have this image. It is not included because it is copyrighted software. Don't ask me to send you one. I won't. If you don't have an Amiga and still want to use UAE, you'll have to buy an Amiga or at least the system software (ROM + Workbench) first. The Kickstart image can have a size of either 256K or 512K. It must be named "kick.rom" by default. Read the section "tools" below for information how to create ROM images and disk files. If you don't have a Kickstart file, you may still be able to boot some games and demos. The emulator includes some primitive bootstrap code that will try to read and execute the bootblock of the diskfile you are using, and if that bootblock only uses the one or two Kickstart functions that are supported by the "replacement Kickstart", your program will boot. Don't expect too much, though. You'll also need some other software to run - why else would you want to emulate an Amiga? There are several ways to make the software accessible to UAE, either with disk image files or with a harddisk emulation. You should make an image of your Amiga's Workbench disk and install it as "df0.adf" (adf = Amiga Disk File) when you use UAE for the first time. More about how to create these files in the chapter "Transferring software" To use Picasso96 emulation, you need the Picasso96 libraries, which are also not included. They can be obtained (e.g.) from Aminet. Invoking UAE ============ First, read the system-specific documents for information how to set up UAE. You should have an executable program called "uae". You can simply execute it, but you can also optionally give it one or more of the following parameters: -h : Print out a help text. -f file : Load a configuration file -s opt=val : Set the emulator's option "opt" to value "val". Configuration files consist of several lines of the form "opt=val", just as with the "-s" parameter. You can use the following options with the "-s" option, or in a config file. [Here, "=n" means the option takes a number as value. "=bool" means the option takes a value of either "yes" or "no" (or "true", "false", or abbreviations of any of these). There are other classes as well.] General options: accuracy=n [default=2] Set emulator accuracy to n. The default is n = 2, which means the emulator will try to be as accurate as possible. This no longer does much in this version, and I'll probably remove it. framerate=n [default=1] Sets the frame rate to 1/n. Only every nth screen will be drawn. Using a higher value can speed up the emulator, at the expense of graphics quality. autoconfig=bool [default=yes] If this is enabled, all expansion devices provided by the emulation will be automounted. You should only disable this if you have a Kickstart ROM earlier than 1.3 which can't cope with this. Some badly written games and demos might also be incompatible with this. kbd_lang=lang [default=us] Set the keyboard language. Currently, the following values can be used: "us" for U.S. keyboard (default), "se" for swedish, "fr" for french, "it" for italian, "es" for spanish, "dk" for danish, or "de" for german keyboard. This setting only affects the X11 version. floppy0=file [default=df0.adf] Try to use the specified file as diskfile for drive 0 instead of df0.adf. The options floppy1, floppy2, and floppy3 also exist. kickstart_rom_file=file [default=kick.rom] Use the specified file instead of kick.rom as Kickstart image. You can also use an 8k sized A1000 boot ROM. The emulator will detect it by its small size and behave like an A1000. kickstart_key_file=file [default=none] For some strange licensing reasons, Cloanto had to encrypt the ROM images they ship with the Amiga Forever package. This option lets you select the key file; this is only necessary if you are using one of the ROMs from Amiga Forever. joyport0=mode [default=mouse] Specify how to emulate joystick port 0. You can use "mouse", "joy0", or "joy1" to use the corresponding input devices of your machine, or you can select several different keyboard replacements for a joystick: "kbd1" for the numeric pad. '0' is the fire button. Three keys on the numeric pad act as autofire toggle: '.' (or ',' depending on your keyboard language), Enter and the division key. "kbd2" for the cursor keys with right control key as fire button and the right shift key as autofire toggle "kbd3" for T/F/H/B with the left Alt key as fire button and the left Shift key as autofire toggle. The autofire toggle keys will turn on autofire (25 shots per second), it will stay enabled until you hit the autofire toggle again. joyport1=mode [default=joy0] Like joyport0, but for the Amiga's joystick port 1. use_gui=state [default=yes] If enabled, show a user-interface that enables changing these options at run-time. Possible settings are "no", "yes" and "nowait". If "nowait" is used, the GUI will be shown at program startup, but the emulator will also start immediately without waiting for the user to change any of the settings. immediate_blits=bool [default=no] If enabled, all blits will finish immediately, which can be nice for speed, but may cause incompatibilities. collision_level=level [default=sprites] This can have a value of "none", "sprites", "playfields", or "full". If set to "sprites", the emulator will only compute collisions between sprites. If set to "playfields", it will additionally compute collisions between sprites and the background. This is much slower and used only rarely. When "full" level is selected, collisions of the background with itself are also computed. This is also used very rarely, and makes the emulator even slower. Using "sprites" or "none" will almost always be enough. cpu_speed=speed [default=4] This can have a value of "real", "max", or an integer between 1 and 20. "real" will try to give the CPU emulation exactly as many cycles, relative to the other chips, as on a real A500. "max" will try to give you the maximum CPU emulation speed achievable on your machine. Numeric values specify a fixed relation between CPU and custom chip emulation, where lower values prioritize CPU emulation, while higher values prioritize custom chip emulation. finegrain_cpu_speed=speed Like cpu_speed, but only accepts numeric values. These numeric values are equivalent to the ones given to cpu_speed multiplied by 512. This means that "cpu_speed=2" and "finegrain_cpu_speed=1024" have the same effect. Using this option you can give the CPU emulation a much higher priority by using small values. cpu_type=type [default=68000] Controls which CPU is emulated. This can be "68000", "68010", "68020" or "68020/68881". In some cases, you may need to use "68ec020" or "68ec020/68881" to emulate a crippled variant of the 68020 that has only a 24 bit address bus. Some software, including some Kickstart versions, does not work with a normal 68020 that has a 32 bit address bus. Careful: using an "ec" variant has harmful side effects, and should be disabled unless absolutely needed (you lose Z3 memory and Picasso emulation). cpu_compatible=bool [default=no] If enabled, a slower but slightly more accurate variant of the CPU emulation will be used. This is needed for some types of copy protection, among other things. This is only meaningful for a CPU type of "68000". nr_floppies=n [default=4] The emulator will emulate this many external floppy drives. Some very old games apparently have problems if this is larger than 1, but for all normal programs the default is good enough. Emulating external devices (harddisk, CD-ROM, printer, serial port): filesystem=access,volume:path [default=no filesystems mounted] Mount the host's file system at "path" as an Amiga filesystem with volume name "VOLUME:". "access" can be either "ro" (for readonly), or "rw" (for read-write). If you want to mount a CD-ROM, you should use a readonly mount. You can mount multiple file systems. See below. hardfile=access,secs,heads,reserved,bsize,file [default=no hardfiles mounted] Mount the hardfile "file" as an emulated harddisk, using a geometry of "secs" sectors per track, "heads" surfaces and "nr" reserved blocks. Each sector should have "bsize" bytes. This can be abused to mount floppy images. You can mount multiple hardfiles. See below. Sound options: sound_output=type [default=none] The type of sound output can be "none" (no sound at all), "interrupts" (emulated for the internal side effects that can be noticed by programs, but no sound output), "normal" (emulated, and sound output), "exact" (a slightly more accurate emulation that may be necessary in some cases, but can also be slower). sound_channels=type [default=mono] Can be "mono", "stereo", or "mixed". If set to "stereo", the left and right channels produce the same output as on a real Amiga - two of the four audio channels are audible on the left, and the other two on the right. This is exactly what you want, except if you're using headphones - having the sound split so strictly can lead to a strange listening experience at times. This is what "mixed" is trying to solve: it mixes the left channel with a low volume into the right channel and vice versa. (This mixing operation loses a bit of precision in the output). sound_bits=n [default varies across UAE versions on different OS types] Common values are 8 (low quality) or 16 (high quality) sound_frequency=n [default varies across UAE versions on different OS types] Common values are 22050 or 44100. The quality of sound output increases with the frequency. sound_min_buff=n sound_max_buff=n [default varies across UAE versions on different OS types] You can specify the minimum and maximum size of the sound buffer. Smaller buffers reduce latency. Usually only the minimum size is used. sound_interpol=type [default none] Normally, sound samples are output exactly as they are computed, without any post-processing. This can generate errors in the sound output when the output frequency isn't an even multiple of the input frequency. These errors are usuable perceived as a high-frequency noise. There are currently two types of interpolation available, both under experimentation. You can use either "rh" or "crux" as value for this option. Note that no interpolation is supported for 8 bit output; you need to use 16 bit output to hear a difference. If you have any comments about the effects of either method on audio quality, I'd be very interested to hear them. Memory options: bogomem_size=n [default=0] Emulate n*256K slow memory at 0xC00000. Some demos/games need this. fastmem_size=n [default=0] Emulate n megabytes of fast memory as an expansion board. z3mem_size=n [default=0] Emulate n megabytes of Zorro III fast memory as an expansion board. chipmem_size=n [default=4] Emulate n*512K chip memory. Some very broken programs need specific amounts of chip mem to work properly. The largest valid value is 16, which means 8MB chip memory. Display options: gfx_width=n [default=800] Use a window that is n pixels wide for displaying the Amiga screen. gfx_height=n [default=300] Use a window that is n pixels high for displaying the Amiga screen. gfx_lores=bool [default=no] Enable this option if you use a very small window width (320 to 400 pixels) to shrink the display horizontally. gfx_linemode=type [default=scanlines] The type can be none (every line is drawn once), "double" (every line is drawn twice), and "scanlines" (every line is drawn once, but the image is stretched vertically by inserting a black line every other line to simulate the display on an old monitor). The "double" mode gives best results, but slows down the emulation quite a lot. Don't use the "none" mode if you want a decent interlace emulation. If you use "double" or "scanlines", your window needs to be twice as high as when using the "none" mode. gfx_correct_aspect=bool [default=none] Try to fit the image into the specified window dimensions by leaving out certain lines. Useful if you want to fit a 640x512 Amiga display in a 640x480 window. gfx_center_vertical=bool [default=no] gfx_center_horizontal=bool [default=no] If you use a smaller window than 800x300 (400x300 with "gfx_lores" option or 800x600 with a gfx_linemode other than "none"), not all parts of the display will fit on the screen. By enabling the necessary centering options, you can ask the emulator to try and move the screen contents so that the relevant parts are displayed. If you are unlucky, this can cause the contents to jump around a bit in certain cases. gfx_fullscreen_amiga=bool [default=no] Enable if you want to use the full screen, not a window on the desktop, for the Amiga display. Some ports (DOS, SVGAlib) always use fullscreen mode. gfx_fullscreen_picasso=bool [default=no] Like gfx_fullscreen_amiga, but for the Picasso graphics card display. gfx_color_mode=mode [default=8bit] Select a color mode to use. Color modes: 8bit (256 colors), 15bit (32768 colors), 16bit (65536 colors), 8bit_dithered (256 colors, with dithering to improve quality), 4bit_dithered (16 colors, dithered); 32bit (16 million colors) gfxcard_size=n [default=0] Emulate a Picasso 96 compatible graphics card with n MB graphics memory. This requires that you use set the CPU type to "68020" or higher, and that you do not use 24 bit addressing. Debugging options (not interesting for most users): use_debugger=bool [default=no] If enabled, don't start the emulator at once, use the built-in debugger. log_illegal_mem [default=no] If enabled, print illegal memory accesses Whew. You'll probably have to experiment a little to get a feeling for it. You can also put these options into a configuration file in your home directory. Simply create ~/.uaerc and put some of these options in it. On non-Unix systems, the file is called uae.rc and should be located in the current directory. Choosing color and screen modes =============================== As described in the previous paragraph, UAE can run in many different resolutions and color modes. However, few of the color mode options are available if you use the X11 version of UAE, since the X server determines how many colors are available. If you are running a 256 color X server, you can use "-H3" to tell UAE to dither the colors for better results. You will have to experiment which mode gives the best results for you at a satisfying speed. Note that the dithering process consumes time, so even if 256 colors with dithering look better than 256 colors without, remember that UAE will be slower in that mode. The recommended resolution is 800x600. In the lower resolution modes, some overscan pictures the Amiga tries to display may not fit entirely on the screen, others may be off-center and some graphical effects may look weird. For best results, use 800x600 with at least 32768 colors. For speed, use 400x300 lores with 256 colors. _Don't_ use 24 bit or 32 bit screen modes, unless you absolutely have to. These are way too slow to be usable. Harddisk emulation ================== Since using diskfiles is awkward, it is necessary to emulate harddisks. There are two ways how you can use large amounts of data with UAE: harddisk files and mounted directories. 1. Harddisk files Harddisk files are large files that contain the image of an Amiga filesystem. They work much the same way as a disk file. You can simply create a large empty file and tell UAE to use it as a hardfile, but you will need to format it from the emulation before you can actually use it. Under Unix, You can create a (unformatted) harddisk file with dd if=/dev/zero of=hardfile bs=512 count=16384 That will create an 8MB file. Other ports of UAE may come with a utility called "makedisk" or other ways to create such a file. To tell the emulator that you want to use a certain file as a hardfile, use the "-W" option, for example uae -W 32:1:2:hardfile The first three numbers are geometry information which tell the AmigaOS how the file is organized. The first number (32) is the number of sectors per track, the second number (1) is the number of heads or surfaces, the third number (2) is the number of reserved blocks. If you use "normal" sizes (powers of two, like 32MB), then you should be OK using the same numbers as in the above example. Using different numbers can make sense if you transfer the image of a real Amiga harddisk which uses a different geometry. The last field of the argument to the "-W" option is the name of the harddisk file. If you are using Kickstart 1.3 or earlier, hardfiles can't currently be mounted at boot time, and therefore you can't boot from it either. You will have to boot either from a floppy disk image or from a filesystem (see below), and mount the hardfile.device later. To do this, add the following to "DEVS:mountlist": UAE0: Device = uaehf.device Unit = 0 Flags = 0 Surfaces = 1 BlocksPerTrack = 32 Reserved = 1 Interleave = 0 LowCyl = 0 ; HighCyl = 511 Buffers = 5 DosType = 0x444F5300 BufMemType = 1 # (You may need to adjust the values if you specified a different geometry, and/or your hardfile has a different size than 8MB, and/or the hardfile is not mounted as UAE0: because you mounted other harddisks before it.) Then, type "mount UAE0:" (or put that command in your startup-sequence), and you should be able to access it. Don't forget to format it with the AmigaDOS format command: format drive uae0: name Mister_Willwink b) Accessing native filesystems from the emulator This has some major advantages: - It has no problems with Kickstart 1.3 - It is more convenient. - It is much faster. If you specify the -M or -m command line arguments, you your native filesystem from the emulator. If you start UAE with uae -m sound:/usr/amiga/modules you can access all the files in /usr/amiga/modules by reading from the AmigaDOS volume "SOUND:". (DOS users: try "uae -m dh0:C:\" to mount your drive C:\ as DH0:) You can mount up to 20 devices, either hardfiles or filesystems, by giving either of these options multiple times. The volumes will be named UAE0:, UAE1:, etc. UAE will boot from UAE0: if no diskfile is found for floppy drive 0. You can also use native filesystems to mount Amiga CD-ROMs, and you can abuse the hardfile emulation to mount floppy disks: "uae -W 11:2:2:wb13.adf" will mount the diskfile "wb13.adf". Tools / Transferring files ========================== As you should know by now, you need to transfer files between your Amiga and the machine you run UAE on. There are several ways how to do this. - Using a null modem cable, and a terminal package running on each machine, you can transfer the file(s) via Zmodem upload/download. 68000 equipped Amigas can normally attain around 3000cps through the null modem cable, using the standard Commodore serial.device. However, by using the device replacement BaudBandit.device, anything up to 5500cps can be attained. BaudBandit can be obtained from Aminet. A second alternative is to use the BASIC program adfi.bas (included with UAE) to transfer a file from the Amiga to the PC via the null modem cable. - If you're using CrossDOS on your Amiga, you can compress the disk or kickstart image using LhA or similar PC compatible archiver and copy it to a 720KB floppy disk. You can now take the disk over to the PC, copy the compressed file to the UAE directory and uncompress it. If you don't have CrossDOS on the Amiga, there is a similar freeware tool called Msh, which can be found on Aminet or on Fish disk 382 or 327. In either case, you ought to read the documentation for the programs that you use for the transfer. These programs can't be explained here. In the "amiga" subdirectory you'll find two small Amiga programs that will help you to generate the necessary image files. These are called transrom and transdisk. Copy them to your Amiga and make them executable (by typing "protect transrom rwed" and "protect transdisk rwed" in the Amiga shell window). transrom will dump the contents of your Kickstart ROM, and transdisk will dump an image of a floppy in one of the drives. Both programs write to the standard output (read: the screen), so you'll want to redirect that. Do transrom >ram:kick.rom to create a file called "kick.rom" in the RAM disk, and transdisk >ram:df0.adf to create a file called "df0.adf" in the RAM disk. These files are pretty big, 262144 or 524288 bytes for the ROM image and 901120 bytes for a disk image. NEVER run either of these programs from the Workbench. Always open a Shell or CLI window to do this. transdisk understands the following arguments: -d device unit: Use this device instead of DF0: -s n: Begin transfer at track n (default: 0) -e n: End transfer at track n (default: 79) -w file: don't read from the floppy, instead write the contents of "file" to the floppy -h: Treat the disk as high-density disk. HD images aren't supported by UAE yet, though. Note that the resulting file will be twice as big. So, to transfer the disk in drive DF1:, you'd give the command: transdisk >ram:df1.adf -d trackdisk 1 If you don't have much RAM and can't fit all of a disk image in the RAM disk, you can split up the transfer into multiple parts with the "-s" and "-e" parameters. To transfer the disk in four parts, you'd use the following commands: transdisk >ram:df0_1.adf -s 0 -e 19 transdisk >ram:df0_2.adf -s 20 -e 39 transdisk >ram:df0_3.adf -s 40 -e 59 transdisk >ram:df0_4.adf -s 60 -e 79 Of course, you should save each of the four files to another place before transferring the next one with transdisk to make space in your RAM disk. If you have all the files on your PC, you can do the following under Unix: cat df0_1.adf df0_2.adf df0_3.adf df0_4.adf >df0.adf or, under DOS: COPY /B df0_1.adf+df0_2.adf+df0_3.adf+df0_4.adf df0.adf I've been told there are the following tools for the Mac to join binaries: "ChunkJoiner 2.1.2" found under Info-Mac's directory or "JoinFiles 1.0.1" under Info-Mac's . The current transdisk can only read the standard AmigaDOS format. This means that most games that rely on some form of copy-protection cannot be transferred (more about disk formats in the file "FAQ") **************************************************************************** If you transfer commercial software, you must not distribute the resulting image files, since that would be a violation of copyright law. The Kickstart ROM has to be considered commercial software. You may only use the Kickstart from your own Amiga, and you may not distribute Kickstart ROM files. Please read the license that came with your software for details. **************************************************************************** Retrieving files from a disk image ================================== If you have a disk image file, and you want to retrieve the files from it, you can use the "readdisk" tool. It is automatically built by "make". If you have a disk image of a disk called "Workbench1.3D" as df0.adf, and you do readdisk df0.adf the whole directory structure of the disk image will be stored in a newly created subdirectory called "Workbench1.3D". You can optionally give a second parameter to specify a directory where to create the output other than the current directory. readdisk only understands about the OFS right now. FFS disks will cheerfully be regarded as being unreadable. Use the unixfs.device from within the emulator if you want to transfer files from FFS disks. Picasso 96 graphics card emulation ================================== To use this feature, you must select 68020 emulation with a 32 bit address space (i.e. _not_ 68ec020). You also need a Kickstart 3.x ROM. To specify how much graphic memory you want to emulate, use the "-U" option, e.g. "-U 4" for 4 megabytes. Then, you need the Picasso 96 software which is not distributed with UAE (There will be a link to the Picasso 96 home page on the UAE Web page soon). Version 1.31 or higher is recommended. Install the Picasso software, and make sure you enable the "uaegfx" driver. After that is complete, reboot, and you should be able to select the new modes from the ScreenModes program. AHI sound card emulation ======================== In the "amiga" subdirectory of the UAE distribution, you will find a "Devs" directory that contains the necessary files for AHI sound support. This is at an early stage and will not work very well in this release. It is included mainly in the hope that someone with a clue about AHI will pick up this work and finish it properly. Saving and restoring snapshots ============================== From version 0.8.17 onwards, the emulator has the capability to save the current state of the emulation into a "snapshot" file that can be restored later on. This functionality is available through the GUI on some ports. It is mainly useful for computer games that either have no save game feature, or whose save game feature does not work on UAE (often, games try to save in a non-standard disk format, this can be tricky to emulate). There are several restrictions that apply to the save state feature: - It is at the moment experimental. It is not guaranteed that the emulator can correctly restore every snapshot. It is not guaranteed that future versions of the emulator will be able to restore snapshots saved by this version. - The state of the harddisk emulation cannot be saved. This makes it essentially useless for applications, but remember it's designed for games. Be careful with games that have been installed to the harddisk. - Neither ROM contents nor floppy disk contents are saved right now. UAE SCSI device =============== To enable SCSI support, use --enable-scsi-device when running configure. The emulator provides a uaescsi.device. This device only supports direct SCSI, which is sufficient to run applications like MakeCD. The device does not support reading or writing with the normal Exec commands, so you cannot mount filesystems on it right now. The unit numbers of the uaescsi.device follow the Amiga SCSI conventions: unit number "xyz" maps to the lun y of target z on bus x. Wide SCSI busses can have targets with numbers larger than 9. In this case the uaescsi.device pretends that there is another SCSI bus. To avoid confusion, all available SCSI targets are listed together with their unit number when starting UAE. Devices cannot be added while the emulator is running. Reseting it is not sufficient either for technical reasons. The implementation of the uaescsi.device uses cdrecord's libscg as interface to the native SCSI system. The Linux implementation of this library used to be included into UAE, but now the library as generated by the cdrecord source package (ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/) is used. As the library is not distributed seperately, you will have to get the whole cdrecord sources, compile it and then make several header and lib files available to the compiler if (and only if) building UAE with SCSI support. The script "src/install_libscg" copies the files required for the libscg in cdrecord 1.8.1. Using threads is strongly recommended, because some SCSI commands can run for extended periods of time and would block the whole emulation during this time without threads. Use --enable-threads when starting configure. Depending on the hosts capabilities the uaescsi.device may be limited compared to other Amiga SCSI devices. The Linux kernel by default only allows 32KB of data per SCSI command and does not always perform SCSI requests in parallel. Setting the chunk size in MakeCD to 30KB is already too much and causes an IO error -4 (IOERR_BADLENGTH), because the setting is only used as a guideline. You can work around this by setting the Tooltypes BUFFER_CHUNK_XXX to 29. On a Pentium II 350MHz with Adaptec UW SCSI controller on board on-the-fly copying was possible from a Philips CDD2600 (SCSI) to a Yamaha CRW4416E (IDE) at 4x. The UAE_CONTROL program ======================= In the "amiga" subdirectory, you will find two programs, uae_control and uaectrl that provide the same functionality as the X11 GUI. uaectrl is shell-based and works with any Kickstart, while uae_control needs the gadtools.library and a recent version of reqtools.library, so it only works with Kick 2.0 and upwards. Copy these two programs to the directory that you use for harddisk emulation. They should be self-explanatory. The timehack ============ Another tool in the "amiga" subdirectory, timehack, synchronizes the emulated Amiga's system time with the host's time every second. This is useful when the emulation is not done in real-time or is suspended completely. Quick overview of the debugger commands ======================================= Some (window-system based) ports of UAE have a built-in debugger. You can press ^C at any time to enter this debugger. Each debugger command consists of a single letter and occasionally some parameters. g [

    ] Start execution at the current address or
    c Dump state of the CIA, disk drives and custom registers r Dump state of the CPU m
    [] Memory dump starting at
    d
    [] Disassembly starting at
    t [instructions] Step one or more instructions z Step through one instruction - useful for JSR, DBRA etc f Step forward until PC in RAM f
    Add/remove breakpoint fi Step forward until PC points to RTS/RTD or RTE fi Step forward until PC points to fl List breakpoints fd Remove all breakpoints f Step forward until <= PC <= e Dump contents of all custom registers i Dump contents of interrupt and trap vectors o <1|2|addr> []View memory as Copper instructions O Display bitplane offsets O Offset a bitplane H Show PC history instructions M Search for *Tracker sound modules C Search for values like energy or lifes in games W
    Write into Amiga memory w
    [] Add/remove memory watchpoints wd Enable illegal access logger S Save a block of Amiga memory s / [] [] Search for string/bytes T Show exec tasks and their PCs h,? Show this help page q Quit the emulator. You don't want to use this command. Sound ===== If your version of UAE supports sound, you can pass parameters like frequency or number of bits to use on the commandline; if you don't specify any, sane defaults will be used. If graphics output is enabled while sound is output, the emulator will be much too slow on most systems. The sound will not be continuous. Therefore, a hack to turn off screen updates is provided: Press ScrollLock to disable graphics, press it again to enable them. The quality of the emulation depends on the setting of the "-S" commandline option. With "-S 3", all of the sound hardware is emulated; and some programs (e.g. AIBB) won't run with other settings. "-S 2" should sound just as good as "-S 3" and will be much faster for some programs. "-S 1" tries to emulate most of the sound hardware, but doesn't actually output sound. "-S 0" completely turns off sound. Pointers ======== There are a few sites in the Internet that contain helpful information about UAE. The new "official" UAE page is located at http://www.freiburg.linux.de/~uae thanks to Stefan Reinauer who is now maintaining it. There, you will find links to other UAE pages. One which is especially useful is the "UAE Discussion Board" set up by Gustavo Goedert, the address is http://amiga.nvg.org/uaeboard There is supposedly a newsgroup named "alt.emulators.amiga", but I don't get it here. The newsgroup "comp.sys.amiga.emulations" appears to be a proper place to discuss Amiga emulation, but, strictly speaking, it is _not_ the right place. More appropriate places are "comp.emulators.misc", and, of course, Gustavo's discussion board. Petter Schau has written another Amiga emulator named "Fellow". It's mostly written in x86 assembly and only runs under DOS. It's quite compatible and generally faster than UAE. The Fellow homepage is at http://www.geocities.com/SiliconValley/Peaks/5244/ The homepage of the Disk2FDI project, which allows you to read Amiga floppies if you have two PC drives, is http://fast.emuunlim.com/disk2fdi/ Thanks & Acknowledgements ========================= Thanks to all who have written me so far with bugreports and success/failure reports when trying to run the emulator on various hardware with different Kickstart versions. A list of everyone who has contributed to the source code can be found in the CREDITS file (this was getting too big to keep it here). Special thanks to: - Jay Miner, Dale Luck, R.J. Mical and all the others who built the Amiga. - Felix Bardos, whose HRM I "borrowed". - Hetz Ben Hamo mailed Peter Kittel from Commodore asking for permission to give Kick 1.3 away. Unfortunately, the response was negative :-( - Stefan Reinauer, for hosting the UAE Web page after the RWTH decided it's too dangerous to let students have their own Web pages. - Bruno Coste, Ed Hanway, Alessandro Soldo and Marko Nippula provided useful documentation about the Amiga - Fabio Ciucci gets the "Best bug reports" award for his help with the blitter line emulation and other problem areas. - Michael C. Battilana and Cloanto Software, for all their support. - Julian Eggebrecht of Factor 5, for providing several F5 games and a lot of valuable input. Factor 5 has made several of their classic Amiga games freely available for download. There are still some good people left in the world... - Jens Schönfeld, inventor of the Catweasel controller, donated one controller card. - Jürgen Beck and Ralf Steines, maintainers of the Amiga emulation web site "Back to the Roots" (http://www.back2roots.org) and everyone else who spends time writing to software companies asking for permission to distribute old Amiga games. - all the software companies who allow distribution of their Amiga games on sites like "Back to the Roots". Authors/Maintainers =================== My email address is (please read the section "Before you send email" below): bernds_cb1@t-online.de or, via snailmail Bernd Schmidt Toelzer Strasse 27a 81379 Muenchen Germany Email is more likely to be answered, and will definitely be answered much faster. I won't distribute software, neither PD or commercial. Don't send me floppy disks without at least asking first, you will not get them back. The following people have ported UAE to different platforms; you should direct system-specific questions to them: DOS port: Gustavo Goedert Available: http://www.netrunner.com.br/dosuae Sourecode: available on the above Web page, most of it included in the main source (with some delay) Mac port: Originally: Ernesto Corvi Currently: Arnaud Blanchard Available: http://www.pratique.fr/~jblancha/ Sourcecode: extra package available. Bits and pieces in the main source, but nothing you could get to compile. BeBox port: Christian Bauer Available: The main UAE web page (use the Unix sources) Sourcecode: Included in the main source. Should compile OK. Notes: Christian says he doesn't have much time to spend on UAE, so if anyone is willing to help maintain this port, please speak up. NextStep port: Ian Stephenson Available: The main UAE web page (use the Unix sources) Sourcecode: Included in the main source. Should compile OK. Notes: Ian says he doesn't have much time to spend on UAE, so if anyone is willing to help maintain this port, please speak up. Amiga port: Originally: Olaf 'Olsen' Barthel Currently: Samuel Devulder Available: Not quite sure yet. Paul Liss' Web page has binaries. Sourcecode: Included in the main source. Should compile OK. pOS port: Samuel Devulder Available: Not quite sure yet. Sourcecode: Included in the main source. Should compile OK. OS/2 port: Pressenna Sockalingasamy Available: ftp://hobbes.nmsu.edu/pub/os2/apps/emulator/uae2_0810_a1.zip Sourcecode: working on including it XFree86/OS2 port: Krister Bergman Available: http://www.kuai.se/~bellman/html/xfreeapps.html Sourcecode: nothing special, apparently the Unix stuff compiles cleanly (?) Win32 port: Originally: Mathias Ortmann Currently: Brian King Available: http://www.codepoet.com/uae Sourcecode: bits merged into the main source, the rest available from the URL above. Still trying to merge more of it... Acorn RISC PC port: Peter Teichmann Available: http://www.wh1.tu-dresden.de/~sol/acorn.shtml http://www.wh1.tu-dresden.de/~sol/acorne.shtml Sourcecode: Some of it is included in the main source, but since Acorn's OS apparently doesn't have decent file handling, you can't even use the same source layout. Also needs lots of additional files. Since I generally don't have the possibility to test or improve these ports, it is a good idea to contact their respective authors if you have questions. Before you send email... ======================== Before you contact me with a problem that you have, make sure you have read _all_ of the above. Please read also the file "FAQ", which contains a lot of helpful information, and the README file for your specific system. I can't answer _every_ question. If you have trouble understanding this README, either because you don't speak English very well or because you have no clue at all about computers, please try to find some friend of yours who does understand this file and who can translate/explain it for you. I simply can't explain (for example) how to use terminal programs or CrossDOS because I don't use either, and it would be much too time-consuming anyway. This file and the file FAQ contains about every piece of information I can give you. I try to help people who have questions, but sometimes it takes too much time. Please don't ask for Kickstart ROM files or other copyrighted software. Don't _send_ me stuff like this either. Don't send large attachments, at least not without asking first. Oh, and another thing: If I promise to do things (like implement new features), and forget about them, pester me. That happens occasionally, it's a known bug in my brain. I'll have it replaced. tiemu-3.03-nogdb+dfsg/src/core/uae/build68k.c000066400000000000000000000131601220314353500206540ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: build68k.c 1542 2005-06-25 14:27:52Z roms $ */ /* * UAE - The Un*x Amiga Emulator * * Read 68000 CPU specs from file "table68k" and build table68k.c * * Copyright 1995,1996 Bernd Schmidt */ #include #include "sysdeps.h" #include #include #include #include #include "readcpu.h" static FILE *tablef; static int nextch = 0; static void getnextch(void) { do { nextch = fgetc(tablef); if (nextch == '%') { do { nextch = fgetc(tablef); } while (nextch != EOF && nextch != '\n'); } } while (nextch != EOF && isspace(nextch)); } static int nextchtohex(void) { switch (isupper (nextch) ? tolower (nextch) : nextch) { case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; case 'a': return 10; case 'b': return 11; case 'c': return 12; case 'd': return 13; case 'e': return 14; case 'f': return 15; default: abort(); } } int main(int argc, char **argv) { int no_insns = 0; printf ("#include \n"); printf ("#include \"sysdeps.h\"\n"); printf ("#include \"readcpu.h\"\n"); printf ("struct instr_def defs68k[] = {\n"); #if 0 tablef = fopen("table68k","r"); if (tablef == NULL) { fprintf(stderr, "table68k not found\n"); exit(1); } #else tablef = stdin; #endif getnextch(); while (nextch != EOF) { int cpulevel, plevel, sduse; int i; char patbits[16]; char opcstr[256]; int bitpos[16]; int flagset[5], flaguse[5]; unsigned int bitmask,bitpattern; int n_variable; n_variable = 0; bitmask = bitpattern = 0; memset (bitpos, 0, sizeof(bitpos)); for(i=0; i<16; i++) { int currbit; bitmask <<= 1; bitpattern <<= 1; switch (nextch) { case '0': currbit = bit0; bitmask |= 1; break; case '1': currbit = bit1; bitmask |= 1; bitpattern |= 1; break; case 'c': currbit = bitc; break; case 'C': currbit = bitC; break; case 'f': currbit = bitf; break; case 'i': currbit = biti; break; case 'I': currbit = bitI; break; case 'j': currbit = bitj; break; case 'J': currbit = bitJ; break; case 'k': currbit = bitk; break; case 'K': currbit = bitK; break; case 's': currbit = bits; break; case 'S': currbit = bitS; break; case 'd': currbit = bitd; break; case 'D': currbit = bitD; break; case 'r': currbit = bitr; break; case 'R': currbit = bitR; break; case 'z': currbit = bitz; break; case 'p': currbit = bitp; break; default: abort(); } if (!(bitmask & 1)) { bitpos[n_variable] = currbit; n_variable++; } if (nextch == '0' || nextch == '1') bitmask |= 1; if (nextch == '1') bitpattern |= 1; patbits[i] = nextch; getnextch(); } while (isspace(nextch) || nextch == ':') /* Get CPU and privilege level */ getnextch(); switch (nextch) { case '0': cpulevel = 0; break; case '1': cpulevel = 1; break; case '2': cpulevel = 2; break; case '3': cpulevel = 3; break; case '4': cpulevel = 4; break; default: abort(); } getnextch(); switch (nextch) { case '0': plevel = 0; break; case '1': plevel = 1; break; case '2': plevel = 2; break; case '3': plevel = 3; break; default: abort(); } getnextch(); while (isspace(nextch)) /* Get flag set information */ getnextch(); if (nextch != ':') abort(); for(i = 0; i < 5; i++) { getnextch(); switch(nextch){ case '-': flagset[i] = fa_unset; break; case '/': flagset[i] = fa_isjmp; break; case '+': flagset[i] = fa_isbranch; break; case '0': flagset[i] = fa_zero; break; case '1': flagset[i] = fa_one; break; case 'x': flagset[i] = fa_dontcare; break; case '?': flagset[i] = fa_unknown; break; default: flagset[i] = fa_set; break; } } getnextch(); while (isspace(nextch)) getnextch(); if (nextch != ':') /* Get flag used information */ abort(); for(i = 0; i < 5; i++) { getnextch(); switch(nextch){ case '-': flaguse[i] = fu_unused; break; case '/': flaguse[i] = fu_isjmp; break; case '+': flaguse[i] = fu_maybecc; break; case '?': flaguse[i] = fu_unknown; break; default: flaguse[i] = fu_used; break; } } getnextch(); while (isspace(nextch)) getnextch(); if (nextch != ':') /* Get source/dest usage information */ abort(); getnextch(); sduse = nextchtohex() << 4; getnextch(); sduse |= nextchtohex(); getnextch(); while (isspace(nextch)) getnextch(); if (nextch != ':') abort(); fgets(opcstr, 250, tablef); getnextch(); { int j; /* Remove superfluous spaces from the string */ char *opstrp = opcstr, *osendp; int slen = 0; while (isspace(*opstrp)) opstrp++; osendp = opstrp; while (*osendp) { if (!isspace (*osendp)) slen = osendp - opstrp + 1; osendp++; } opstrp[slen] = 0; if (no_insns > 0) printf(",\n"); no_insns++; printf("{ %d, %d, {", bitpattern, n_variable); for (j = 0; j < 16; j++) { printf("%d", bitpos[j]); if (j < 15) printf(","); } printf ("}, %d, %d, %d, { ", bitmask, cpulevel, plevel); for(i = 0; i < 5; i++) { printf("{ %d, %d }%c ", flaguse[i], flagset[i], i == 4 ? ' ' : ','); } printf("}, %d, \"%s\"}", sduse, opstrp); } } printf("};\nint n_defs68k = %d;\n", no_insns); return 0; } tiemu-3.03-nogdb+dfsg/src/core/uae/build68k.dsp000066400000000000000000000105751220314353500212270ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="build68k" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=build68k - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "build68k.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "build68k.mak" CFG="build68k - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "build68k - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "build68k - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "build68k - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "__WIN32__" /YX /FD /c # ADD BASE RSC /l 0x40c /d "NDEBUG" # ADD RSC /l 0x40c /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"build68k.exe" # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Desc=Building CPU definitions... PostBuild_Cmds=build68k cpudefs.c # End Special Build Tool !ELSEIF "$(CFG)" == "build68k - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "build68k___Win32_Debug" # PROP BASE Intermediate_Dir "build68k___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "__WIN32__" /YX /FD /GZ /c # ADD BASE RSC /l 0x40c /d "_DEBUG" # ADD RSC /l 0x40c /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"build68k.exe" /pdbtype:sept # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Desc=Building CPU definitions... PostBuild_Cmds=build68k.exe cpudefs.c # End Special Build Tool !ENDIF # Begin Target # Name "build68k - Win32 Release" # Name "build68k - Win32 Debug" # Begin Source File SOURCE=.\build68k.c # End Source File # End Target # End Project tiemu-3.03-nogdb+dfsg/src/core/uae/clean.bat000066400000000000000000000002021220314353500206230ustar00rootroot00000000000000deltree /debug del *.ncb del *.plg del *.ilk del *.opt del cpudefs.c del cpustbl.c del cputbl.c del cputbl.h del cpuemu.ctiemu-3.03-nogdb+dfsg/src/core/uae/cpu_prefetch.h000066400000000000000000000005771220314353500217100ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: cpu_prefetch.h 2010 2006-02-25 06:45:21Z kevinkofler $ */ STATIC_INLINE uae_u32 get_word_prefetch (int o) { uae_u32 v = regs.irc; regs.irc = get_word (m68k_getpc() + o); return v; } STATIC_INLINE uae_u32 get_long_prefetch (int o) { uae_u32 v = get_word_prefetch (o) << 16; v |= get_word_prefetch (o + 2); return v; } tiemu-3.03-nogdb+dfsg/src/core/uae/fpp.c000066400000000000000000000012351220314353500200110ustar00rootroot00000000000000 /* * UAE - The Un*x Amiga Emulator * * MC68881 emulation * * Copyright 1996 Herman ten Brugge * stubbed out for TiEmu - Copyright (C) 2005 Kevin Kofler */ #include #include #include "sysdeps.h" void fdbcc_opp (uae_u32 opcode, uae_u16 extra) { abort(); } void fscc_opp (uae_u32 opcode, uae_u16 extra) { abort(); } void ftrapcc_opp (uae_u32 opcode, uaecptr oldpc) { abort(); } void fbcc_opp (uae_u32 opcode, uaecptr pc, uae_u32 extra) { abort(); } void fsave_opp (uae_u32 opcode) { abort(); } void frestore_opp (uae_u32 opcode) { abort(); } void fpp_opp (uae_u32 opcode, uae_u16 extra) { abort(); } tiemu-3.03-nogdb+dfsg/src/core/uae/gencpu.c000066400000000000000000002627501220314353500205200ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: gencpu.c 2681 2007-11-20 18:01:02Z roms $ */ /* * UAE - The Un*x Amiga Emulator * * MC68000 emulation generator * * This is a fairly stupid program that generates a lot of case labels that * can be #included in a switch statement. * As an alternative, it can generate functions that handle specific * MC68000 instructions, plus a prototype header file and a function pointer * array to look up the function for an opcode. * Error checking is bad, an illegal table68k file will cause the program to * call abort(). * The generated code is sometimes sub-optimal, an optimizing compiler should * take care of this. * * The source for the insn timings is Markt & Technik's Amiga Magazin 8/1992. * * Copyright 1995, 1996, 1997, 1998, 1999, 2000 Bernd Schmidt */ #include #include "sysdeps.h" #include #include #include #include #include "readcpu.h" #define BOOL_TYPE "int" static FILE *headerfile; static FILE *stblfile; static int using_prefetch; static int using_exception_3; static int using_ce = 0; static int cpu_level; /* Flags for genamode. */ #define GF_APDI 1 #define GF_AD8R 2 #define GF_PC8R 4 #define GF_AA 7 #define GF_NOREFILL 8 #define GF_PREFETCH 16 /* For the current opcode, the next lower level that will have different code. * Initialized to -1 for each opcode. If it remains unchanged, indicates we * are done with that opcode. */ static int next_cpu_level; static int *opcode_map; static int *opcode_next_clev; static int *opcode_last_postfix; static unsigned long *counts; static void read_counts (void) { FILE *file; unsigned long opcode, count, total; char name[20]; int nr = 0; memset (counts, 0, 65536 * sizeof *counts); file = fopen ("frequent.68k", "r"); if (file) { fscanf (file, "Total: %lu\n", &total); while (fscanf (file, "%lx: %lu %s\n", &opcode, &count, name) == 3) { opcode_next_clev[nr] = 4; opcode_last_postfix[nr] = -1; opcode_map[nr++] = opcode; counts[opcode] = count; } fclose (file); } if (nr == nr_cpuop_funcs) return; for (opcode = 0; opcode < 0x10000; opcode++) { if (table68k[opcode].handler == -1 && table68k[opcode].mnemo != i_ILLG && counts[opcode] == 0) { opcode_next_clev[nr] = 4; opcode_last_postfix[nr] = -1; opcode_map[nr++] = opcode; counts[opcode] = count; } } if (nr != nr_cpuop_funcs) abort (); } static char endlabelstr[80]; static int endlabelno = 0; static int need_endlabel; static int n_braces = 0; static int m68k_pc_offset = 0; static int insn_n_cycles; static void returncycles (char *s, int cycles) { if (using_ce) return; printf ("%sreturn %d * %d;\n", s, cycles, CYCLE_UNIT / 2); } static int isreg (amodes mode) { if (mode == Dreg || mode == Areg) return 1; return 0; } static void start_brace (void) { n_braces++; printf ("{"); } static void close_brace (void) { assert (n_braces > 0); n_braces--; printf ("}"); } static void finish_braces (void) { while (n_braces > 0) close_brace (); } static void pop_braces (int to) { while (n_braces > to) close_brace (); } static int bit_size (int size) { switch (size) { case sz_byte: return 8; case sz_word: return 16; case sz_long: return 32; default: abort (); } return 0; } static const char *bit_mask (int size) { switch (size) { case sz_byte: return "0xff"; case sz_word: return "0xffff"; case sz_long: return "0xffffffff"; default: abort (); } return 0; } static void gen_nextilong (char *type, char *name, int norefill) { int r = m68k_pc_offset; m68k_pc_offset += 4; if (using_ce) { printf ("\t%s %s;\n", type, name); /* we must do this because execution order of (something | something2) is not defined */ if (norefill) { printf ("\t%s = get_word_ce_prefetch (%d) << 16;\n", name, r + 2); printf ("\t%s |= regs.irc;\n", name); } else { printf ("\t%s = get_word_ce_prefetch (%d) << 16;\n", name, r + 2); printf ("\t%s |= get_word_ce_prefetch (%d);\n", name, r + 4); } } else { if (using_prefetch) { if (norefill) { printf ("\t%s %s;\n", type, name); printf ("\t%s = get_word_prefetch (%d) << 16;\n", name, r + 2); printf ("\t%s |= regs.irc;\n", name); insn_n_cycles += 4; } else printf ("\t%s %s = get_long_prefetch (%d);\n", type, name, r + 2); insn_n_cycles += 8; } else { insn_n_cycles += 8; printf ("\t%s %s = get_ilong (%d);\n", type, name, r); } } } static const char *gen_nextiword (int norefill) { static char buffer[80]; int r = m68k_pc_offset; m68k_pc_offset += 2; if (using_ce) { if (norefill) strcpy (buffer, "regs.irc"); else sprintf (buffer, "get_word_ce_prefetch (%d)", r + 2); } else { if (using_prefetch) { if (norefill) { sprintf (buffer, "regs.irc", r); } else { sprintf (buffer, "get_word_prefetch (%d)", r + 2); insn_n_cycles += 4; } } else { sprintf (buffer, "get_iword (%d)", r); insn_n_cycles += 4; } } return buffer; } static const char *gen_nextibyte (int norefill) { static char buffer[80]; int r = m68k_pc_offset; m68k_pc_offset += 2; if (using_ce) { if (norefill) strcpy (buffer, "(uae_u8)regs.irc"); else sprintf (buffer, "(uae_u8)get_word_ce_prefetch (%d)", r + 2); } else { insn_n_cycles += 4; if (using_prefetch) { if (norefill) { sprintf (buffer, "(uae_u8)regs.irc", r); } else { sprintf (buffer, "(uae_u8)get_word_prefetch (%d)", r + 2); insn_n_cycles += 4; } } else { sprintf (buffer, "get_ibyte (%d)", r); insn_n_cycles += 4; } } return buffer; } static void irc2ir (void) { if (!using_prefetch) return; printf ("\tregs.ir = regs.irc;\n"); } static int did_prefetch; static void fill_prefetch_2 (void) { if (!using_prefetch) return; if (using_ce) printf ("\tget_word_ce_prefetch (%d);\n", m68k_pc_offset + 2); else printf ("\tget_word_prefetch (%d);\n", m68k_pc_offset + 2); did_prefetch = 1; insn_n_cycles += 4; } static void fill_prefetch_1 (int o, int needcycles) { if (!using_prefetch) return; if (using_ce) { if (needcycles) { printf ("\tlostcycles = get_word_ce_prefetch_cycles (%d);\n", o); } else { printf ("\tget_word_ce_prefetch (%d);\n", o); } } else { printf ("\tget_word_prefetch (%d);\n", o); } did_prefetch = 1; insn_n_cycles += 4; } static void fill_prefetch_full (void) { fill_prefetch_1 (0, 0); irc2ir (); fill_prefetch_1 (2, 0); } static void fill_prefetch_0 (void) { if (!using_prefetch) return; if (using_ce) printf ("\tget_word_ce_prefetch (0);\n"); else printf ("\tget_word_prefetch (0);\n"); did_prefetch = 1; insn_n_cycles += 4; } static void fill_prefetch_next_1 (needcycles) { if (needcycles && using_ce) { printf ("\tint lostcycles;\n"); } irc2ir (); fill_prefetch_1 (m68k_pc_offset + 2, needcycles); } static void fill_prefetch_next (void) { fill_prefetch_next_1 (0); } static void fill_prefetch_next_cycles (void) { fill_prefetch_next_1 (1); } static void fill_prefetch_next_delay (int extracycles) { if (!using_prefetch) return; if (using_ce) { if (extracycles > 0) { printf("\t{\n"); fill_prefetch_next_cycles (); printf("\tif ((%d + 4) * %d > lostcycles) do_cycles_ce ((%d + 4) * %d - lostcycles);\n", extracycles, CYCLE_UNIT / 2, extracycles, CYCLE_UNIT / 2); printf("\t}\n"); } else { fill_prefetch_next (); } } else { fill_prefetch_next (); } } static void fill_prefetch_finish (void) { if (did_prefetch || !using_prefetch) return; fill_prefetch_1 (m68k_pc_offset, 0); } static void sync_m68k_pc (void) { if (m68k_pc_offset == 0) return; printf ("\tm68k_incpc (%d);\n", m68k_pc_offset); m68k_pc_offset = 0; } /* getv == 1: fetch data; getv != 0: check for odd address. If movem != 0, * the calling routine handles Apdi and Aipi modes. * gb-- movem == 2 means the same thing but for a MOVE16 instruction */ static void genamode (amodes mode, char *reg, wordsizes size, char *name, int getv, int movem, int flags) { char namea[100]; int m68k_pc_offset_last = m68k_pc_offset; sprintf (namea, "%sa", name); start_brace (); switch (mode) { case Dreg: if (movem) abort (); if (getv == 1) switch (size) { case sz_byte: #if defined(AMIGA) && !defined(WARPUP) /* sam: I don't know why gcc.2.7.2.1 produces a code worse */ /* if it is not done like that: */ printf ("\tuae_s8 %s = ((uae_u8*)&m68k_dreg(regs, %s))[3];\n", name, reg); #else printf ("\tuae_s8 %s = m68k_dreg(regs, %s);\n", name, reg); #endif break; case sz_word: #if defined(AMIGA) && !defined(WARPUP) printf ("\tuae_s16 %s = ((uae_s16*)&m68k_dreg(regs, %s))[1];\n", name, reg); #else printf ("\tuae_s16 %s = m68k_dreg(regs, %s);\n", name, reg); #endif break; case sz_long: printf ("\tuae_s32 %s = m68k_dreg(regs, %s);\n", name, reg); break; default: abort (); } return; case Areg: if (movem) abort (); if (getv == 1) switch (size) { case sz_word: printf ("\tuae_s16 %s = m68k_areg(regs, %s);\n", name, reg); break; case sz_long: printf ("\tuae_s32 %s = m68k_areg(regs, %s);\n", name, reg); break; default: abort (); } return; case Aind: printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); break; case Aipi: printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); break; case Apdi: insn_n_cycles += 2; switch (size) { case sz_byte: if (movem) printf ("\tuaecptr %sa = m68k_areg(regs, %s);\n", name, reg); else printf ("\tuaecptr %sa = m68k_areg(regs, %s) - areg_byteinc[%s];\n", name, reg, reg); break; case sz_word: printf ("\tuaecptr %sa = m68k_areg(regs, %s) - %d;\n", name, reg, movem ? 0 : 2); break; case sz_long: printf ("\tuaecptr %sa = m68k_areg(regs, %s) - %d;\n", name, reg, movem ? 0 : 4); break; default: abort (); } break; case Ad16: printf ("\tuaecptr %sa = m68k_areg(regs, %s) + (uae_s32)(uae_s16)%s;\n", name, reg, gen_nextiword (flags & GF_NOREFILL)); break; case Ad8r: insn_n_cycles += 2; if (cpu_level > 1) { if (next_cpu_level < 1) next_cpu_level = 1; sync_m68k_pc (); start_brace (); /* This would ordinarily be done in gen_nextiword, which we bypass. */ insn_n_cycles += 4; printf ("\tuaecptr %sa = get_disp_ea_020(m68k_areg(regs, %s), next_iword());\n", name, reg); } else printf ("\tuaecptr %sa = get_disp_ea_000(m68k_areg(regs, %s), %s);\n", name, reg, gen_nextiword (flags & GF_NOREFILL)); break; case PC16: printf ("\tuaecptr %sa = m68k_getpc () + %d;\n", name, m68k_pc_offset); printf ("\t%sa += (uae_s32)(uae_s16)%s;\n", name, gen_nextiword (flags & GF_NOREFILL)); break; case PC8r: insn_n_cycles += 2; if (cpu_level > 1) { if (next_cpu_level < 1) next_cpu_level = 1; sync_m68k_pc (); start_brace (); /* This would ordinarily be done in gen_nextiword, which we bypass. */ insn_n_cycles += 4; printf ("\tuaecptr tmppc = m68k_getpc();\n"); printf ("\tuaecptr %sa = get_disp_ea_020(tmppc, next_iword());\n", name); } else { printf ("\tuaecptr tmppc = m68k_getpc() + %d;\n", m68k_pc_offset); printf ("\tuaecptr %sa = get_disp_ea_000(tmppc, %s);\n", name, gen_nextiword (flags & GF_NOREFILL)); } break; case absw: printf ("\tuaecptr %sa = (uae_s32)(uae_s16)%s;\n", name, gen_nextiword (flags & GF_NOREFILL)); break; case absl: gen_nextilong ("uaecptr", namea, flags & GF_NOREFILL); break; case imm: if (getv != 1) abort (); switch (size) { case sz_byte: printf ("\tuae_s8 %s = %s;\n", name, gen_nextibyte (flags & GF_NOREFILL)); break; case sz_word: printf ("\tuae_s16 %s = %s;\n", name, gen_nextiword (flags & GF_NOREFILL)); break; case sz_long: gen_nextilong ("uae_s32", name, flags & GF_NOREFILL); break; default: abort (); } return; case imm0: if (getv != 1) abort (); printf ("\tuae_s8 %s = %s;\n", name, gen_nextibyte (flags & GF_NOREFILL)); return; case imm1: if (getv != 1) abort (); printf ("\tuae_s16 %s = %s;\n", name, gen_nextiword (flags & GF_NOREFILL)); return; case imm2: if (getv != 1) abort (); gen_nextilong ("uae_s32", name, flags & GF_NOREFILL); return; case immi: if (getv != 1) abort (); printf ("\tuae_u32 %s = %s;\n", name, reg); return; default: abort (); } /* We get here for all non-reg non-immediate addressing modes to * actually fetch the value. */ if (using_prefetch && using_exception_3 && getv != 0 && size != sz_byte) { printf ("\tif (%sa & 1) {\n", name); if (using_prefetch) printf ("\t\texception3 (opcode, m68k_getpc() + %d, %sa);\n", m68k_pc_offset + 2, name); else printf ("\t\texception3 (opcode, m68k_getpc() + %d, %sa);\n", m68k_pc_offset_last, name); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t}\n"); need_endlabel = 1; start_brace (); } if (flags & GF_PREFETCH) fill_prefetch_next (); if (getv == 1) { switch (size) { case sz_byte: insn_n_cycles += 4; break; case sz_word: insn_n_cycles += 4; break; case sz_long: insn_n_cycles += 8; break; default: abort (); } start_brace (); switch (size) { case sz_byte: printf ("\tuae_s8 %s = get_byte(%sa);\n", name, name); break; case sz_word: printf ("\tuae_s16 %s = get_word(%sa);\n", name, name); break; case sz_long: printf ("\tuae_s32 %s = get_long(%sa);\n", name, name); break; default: abort (); } } /* We now might have to fix up the register for pre-dec or post-inc * addressing modes. */ if (!movem) switch (mode) { case Aipi: switch (size) { case sz_byte: printf ("\tm68k_areg(regs, %s) += areg_byteinc[%s];\n", reg, reg); break; case sz_word: printf ("\tm68k_areg(regs, %s) += 2;\n", reg); break; case sz_long: printf ("\tm68k_areg(regs, %s) += 4;\n", reg); break; default: abort (); } break; case Apdi: printf ("\tm68k_areg (regs, %s) = %sa;\n", reg, name); break; default: break; } } static void genastore (char *from, amodes mode, char *reg, wordsizes size, char *to) { switch (mode) { case Dreg: switch (size) { case sz_byte: printf ("\tm68k_dreg(regs, %s) = (m68k_dreg(regs, %s) & ~0xff) | ((%s) & 0xff);\n", reg, reg, from); break; case sz_word: printf ("\tm68k_dreg(regs, %s) = (m68k_dreg(regs, %s) & ~0xffff) | ((%s) & 0xffff);\n", reg, reg, from); break; case sz_long: printf ("\tm68k_dreg(regs, %s) = (%s);\n", reg, from); break; default: abort (); } break; case Areg: switch (size) { case sz_word: printf ("\tm68k_areg(regs, %s) = (uae_s32)(uae_s16)(%s);\n", reg, from); break; case sz_long: printf ("\tm68k_areg(regs, %s) = (%s);\n", reg, from); break; default: abort (); } break; case Aind: case Aipi: case Apdi: case Ad16: case Ad8r: case absw: case absl: case PC16: case PC8r: if (using_prefetch) sync_m68k_pc (); switch (size) { case sz_byte: insn_n_cycles += 4; printf ("\tput_byte(%sa,%s);\n", to, from); break; case sz_word: insn_n_cycles += 4; if (cpu_level < 2 && (mode == PC16 || mode == PC8r)) abort (); printf ("\tput_word(%sa,%s);\n", to, from); break; case sz_long: insn_n_cycles += 8; if (cpu_level < 2 && (mode == PC16 || mode == PC8r)) abort (); printf ("\tput_long(%sa,%s);\n", to, from); break; default: abort (); } break; case imm: case imm0: case imm1: case imm2: case immi: abort (); break; default: abort (); } } static void genmovemel (uae_u16 opcode) { char getcode[100]; int size = table68k[opcode].size == sz_long ? 4 : 2; if (table68k[opcode].size == sz_long) { strcpy (getcode, "get_long(srca)"); } else { strcpy (getcode, "(uae_s32)(uae_s16)get_word(srca)"); } printf ("\tuae_u16 mask = %s;\n", gen_nextiword (0)); printf ("\tunsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;\n"); genamode (table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", 2, 1, 0); start_brace (); printf ("\twhile (dmask) { m68k_dreg(regs, movem_index1[dmask]) = %s; srca += %d; dmask = movem_next[dmask]; }\n", getcode, size); printf ("\twhile (amask) { m68k_areg(regs, movem_index1[amask]) = %s; srca += %d; amask = movem_next[amask]; }\n", getcode, size); if (table68k[opcode].dmode == Aipi) printf ("\tm68k_areg(regs, dstreg) = srca;\n"); } static void genmovemle (uae_u16 opcode) { char putcode[100]; int size = table68k[opcode].size == sz_long ? 4 : 2; if (table68k[opcode].size == sz_long) { strcpy (putcode, "put_long(srca,"); } else { strcpy (putcode, "put_word(srca,"); } printf ("\tuae_u16 mask = %s;\n", gen_nextiword (0)); genamode (table68k[opcode].dmode, "dstreg", table68k[opcode].size, "src", 2, 1, 0); if (using_prefetch) sync_m68k_pc (); start_brace (); if (table68k[opcode].dmode == Apdi) { printf ("\tuae_u16 amask = mask & 0xff, dmask = (mask >> 8) & 0xff;\n"); printf ("\twhile (amask) { srca -= %d; %s m68k_areg(regs, movem_index2[amask])); amask = movem_next[amask]; }\n", size, putcode); printf ("\twhile (dmask) { srca -= %d; %s m68k_dreg(regs, movem_index2[dmask])); dmask = movem_next[dmask]; }\n", size, putcode); printf ("\tm68k_areg(regs, dstreg) = srca;\n"); } else { printf ("\tuae_u16 dmask = mask & 0xff, amask = (mask >> 8) & 0xff;\n"); printf ("\twhile (dmask) { %s m68k_dreg(regs, movem_index1[dmask])); srca += %d; dmask = movem_next[dmask]; }\n", putcode, size); printf ("\twhile (amask) { %s m68k_areg(regs, movem_index1[amask])); srca += %d; amask = movem_next[amask]; }\n", putcode, size); } } static void duplicate_carry (int n) { while (n-- != 0) printf ("\t"); printf ("COPY_CARRY;\n"); } typedef enum { flag_logical_noclobber, flag_logical, flag_add, flag_sub, flag_cmp, flag_addx, flag_subx, flag_zn, flag_av, flag_sv } flagtypes; static void genflags_normal (flagtypes type, wordsizes size, char *value, char *src, char *dst) { char vstr[100], sstr[100], dstr[100]; char usstr[100], udstr[100]; char unsstr[100], undstr[100]; switch (size) { case sz_byte: strcpy (vstr, "((uae_s8)("); strcpy (usstr, "((uae_u8)("); break; case sz_word: strcpy (vstr, "((uae_s16)("); strcpy (usstr, "((uae_u16)("); break; case sz_long: strcpy (vstr, "((uae_s32)("); strcpy (usstr, "((uae_u32)("); break; default: abort (); } strcpy (unsstr, usstr); strcpy (sstr, vstr); strcpy (dstr, vstr); strcat (vstr, value); strcat (vstr, "))"); strcat (dstr, dst); strcat (dstr, "))"); strcat (sstr, src); strcat (sstr, "))"); strcpy (udstr, usstr); strcat (udstr, dst); strcat (udstr, "))"); strcat (usstr, src); strcat (usstr, "))"); strcpy (undstr, unsstr); strcat (unsstr, "-"); strcat (undstr, "~"); strcat (undstr, dst); strcat (undstr, "))"); strcat (unsstr, src); strcat (unsstr, "))"); switch (type) { case flag_logical_noclobber: case flag_logical: case flag_zn: case flag_av: case flag_sv: case flag_addx: case flag_subx: break; case flag_add: start_brace (); printf ("uae_u32 %s = %s + %s;\n", value, dstr, sstr); break; case flag_sub: case flag_cmp: start_brace (); printf ("uae_u32 %s = %s - %s;\n", value, dstr, sstr); break; } switch (type) { case flag_logical_noclobber: case flag_logical: case flag_zn: break; case flag_add: case flag_sub: case flag_addx: case flag_subx: case flag_cmp: case flag_av: case flag_sv: start_brace (); printf ("\t" BOOL_TYPE " flgs = %s < 0;\n", sstr); printf ("\t" BOOL_TYPE " flgo = %s < 0;\n", dstr); printf ("\t" BOOL_TYPE " flgn = %s < 0;\n", vstr); break; } switch (type) { case flag_logical: printf ("\tCLEAR_CZNV;\n"); printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_NFLG (%s < 0);\n", vstr); break; case flag_logical_noclobber: printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_NFLG (%s < 0);\n", vstr); break; case flag_av: printf ("\tSET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));\n"); break; case flag_sv: printf ("\tSET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));\n"); break; case flag_zn: printf ("\tSET_ZFLG (GET_ZFLG & (%s == 0));\n", vstr); printf ("\tSET_NFLG (%s < 0);\n", vstr); break; case flag_add: printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));\n"); printf ("\tSET_CFLG (%s < %s);\n", undstr, usstr); duplicate_carry (0); printf ("\tSET_NFLG (flgn != 0);\n"); break; case flag_sub: printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_VFLG ((flgs ^ flgo) & (flgn ^ flgo));\n"); printf ("\tSET_CFLG (%s > %s);\n", usstr, udstr); duplicate_carry (0); printf ("\tSET_NFLG (flgn != 0);\n"); break; case flag_addx: printf ("\tSET_VFLG ((flgs ^ flgn) & (flgo ^ flgn));\n"); /* minterm SON: 0x42 */ printf ("\tSET_CFLG (flgs ^ ((flgs ^ flgo) & (flgo ^ flgn)));\n"); /* minterm SON: 0xD4 */ duplicate_carry (0); break; case flag_subx: printf ("\tSET_VFLG ((flgs ^ flgo) & (flgo ^ flgn));\n"); /* minterm SON: 0x24 */ printf ("\tSET_CFLG (flgs ^ ((flgs ^ flgn) & (flgo ^ flgn)));\n"); /* minterm SON: 0xB2 */ duplicate_carry (0); break; case flag_cmp: printf ("\tSET_ZFLG (%s == 0);\n", vstr); printf ("\tSET_VFLG ((flgs != flgo) && (flgn != flgo));\n"); printf ("\tSET_CFLG (%s > %s);\n", usstr, udstr); printf ("\tSET_NFLG (flgn != 0);\n"); break; } } static void genflags (flagtypes type, wordsizes size, char *value, char *src, char *dst) { /* Temporarily deleted 68k/ARM flag optimizations. I'd prefer to have them in the appropriate m68k.h files and use just one copy of this code here. The API can be changed if necessary. */ #ifdef OPTIMIZED_FLAGS switch (type) { case flag_add: case flag_sub: start_brace (); printf ("\tuae_u32 %s;\n", value); break; default: break; } /* At least some of those casts are fairly important! */ switch (type) { case flag_logical_noclobber: printf ("\t{uae_u32 oldcznv = GET_CZNV & ~(FLAGVAL_Z | FLAGVAL_N);\n"); if (strcmp (value, "0") == 0) { printf ("\tSET_CZNV (olcznv | FLAGVAL_Z);\n"); } else { switch (size) { case sz_byte: printf ("\toptflag_testb ((uae_s8)(%s));\n", value); break; case sz_word: printf ("\toptflag_testw ((uae_s16)(%s));\n", value); break; case sz_long: printf ("\toptflag_testl ((uae_s32)(%s));\n", value); break; } printf ("\tIOR_CZNV (oldcznv);\n"); } printf ("\t}\n"); return; case flag_logical: if (strcmp (value, "0") == 0) { printf ("\tSET_CZNV (FLAGVAL_Z);\n"); } else { switch (size) { case sz_byte: printf ("\toptflag_testb ((uae_s8)(%s));\n", value); break; case sz_word: printf ("\toptflag_testw ((uae_s16)(%s));\n", value); break; case sz_long: printf ("\toptflag_testl ((uae_s32)(%s));\n", value); break; } } return; case flag_add: switch (size) { case sz_byte: printf ("\toptflag_addb (%s, (uae_s8)(%s), (uae_s8)(%s));\n", value, src, dst); break; case sz_word: printf ("\toptflag_addw (%s, (uae_s16)(%s), (uae_s16)(%s));\n", value, src, dst); break; case sz_long: printf ("\toptflag_addl (%s, (uae_s32)(%s), (uae_s32)(%s));\n", value, src, dst); break; } return; case flag_sub: switch (size) { case sz_byte: printf ("\toptflag_subb (%s, (uae_s8)(%s), (uae_s8)(%s));\n", value, src, dst); break; case sz_word: printf ("\toptflag_subw (%s, (uae_s16)(%s), (uae_s16)(%s));\n", value, src, dst); break; case sz_long: printf ("\toptflag_subl (%s, (uae_s32)(%s), (uae_s32)(%s));\n", value, src, dst); break; } return; case flag_cmp: switch (size) { case sz_byte: printf ("\toptflag_cmpb ((uae_s8)(%s), (uae_s8)(%s));\n", src, dst); break; case sz_word: printf ("\toptflag_cmpw ((uae_s16)(%s), (uae_s16)(%s));\n", src, dst); break; case sz_long: printf ("\toptflag_cmpl ((uae_s32)(%s), (uae_s32)(%s));\n", src, dst); break; } return; default: break; } #endif genflags_normal (type, size, value, src, dst); } static void force_range_for_rox (const char *var, wordsizes size) { /* Could do a modulo operation here... which one is faster? */ switch (size) { case sz_long: printf ("\tif (%s >= 33) %s -= 33;\n", var, var); break; case sz_word: printf ("\tif (%s >= 34) %s -= 34;\n", var, var); printf ("\tif (%s >= 17) %s -= 17;\n", var, var); break; case sz_byte: printf ("\tif (%s >= 36) %s -= 36;\n", var, var); printf ("\tif (%s >= 18) %s -= 18;\n", var, var); printf ("\tif (%s >= 9) %s -= 9;\n", var, var); break; } } static const char *cmask (wordsizes size) { switch (size) { case sz_byte: return "0x80"; case sz_word: return "0x8000"; case sz_long: return "0x80000000"; default: abort (); } } static int source_is_imm1_8 (struct instr *i) { return i->stype == 3; } static void gen_opcode (unsigned long int opcode) { struct instr *curi = table68k + opcode; int tmpc = 0; insn_n_cycles = 4; start_brace (); #if 0 printf ("uae_u8 *m68k_pc = regs.pc_p;\n"); #endif m68k_pc_offset = 2; switch (curi->plev) { case 0: /* not privileged */ break; case 1: /* unprivileged only on 68000 */ if (cpu_level == 0) break; if (next_cpu_level < 0) next_cpu_level = 0; /* fall through */ case 2: /* priviledged */ printf ("if (!regs.s) { Exception(8,0); goto %s; }\n", endlabelstr); need_endlabel = 1; start_brace (); break; case 3: /* privileged if size == word */ if (curi->size == sz_byte) break; printf ("if (!regs.s) { Exception(8,0); goto %s; }\n", endlabelstr); need_endlabel = 1; start_brace (); break; } switch (curi->mnemo) { case i_OR: case i_AND: case i_EOR: case i_ORI: case i_ANDI: case i_EORI: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); printf ("\tsrc %c= dst;\n", (curi->mnemo == i_OR || curi->mnemo == i_ORI) ? '|' : (curi->mnemo == i_AND || curi->mnemo == i_ANDI) ? '&' : '^'); genflags (flag_logical, curi->size, "src", "", ""); if (curi->size == sz_long && isreg (curi->dmode)) tmpc += curi->mnemo == (i_AND || i_ANDI) ? 2 : 4; fill_prefetch_next_delay (tmpc); genastore ("src", curi->dmode, "dstreg", curi->size, "dst"); break; case i_ORSR: case i_EORSR: printf ("\tMakeSR();\n"); genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); if (curi->size == sz_byte) { printf ("\tsrc &= 0xFF;\n"); } fill_prefetch_next_delay (4); printf ("\tregs.sr %c= src;\n", curi->mnemo == i_EORSR ? '^' : '|'); printf ("\tMakeFromSR();\n"); break; case i_ANDSR: printf ("\tMakeSR();\n"); genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); if (curi->size == sz_byte) { printf ("\tsrc |= 0xFF00;\n"); } fill_prefetch_next_delay (4); printf ("\tregs.sr &= src;\n"); printf ("\tMakeFromSR();\n"); break; case i_SUB: case i_SUBQ: case i_SUBI: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); if (isreg (curi->dmode)) { if (curi->dmode == Dreg && curi->size == sz_long) tmpc += (curi->smode == imm || curi->smode == immi) ? 4 : 2; } fill_prefetch_next_delay (tmpc); start_brace (); genflags (flag_sub, curi->size, "newv", "src", "dst"); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); break; case i_SUBA: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0, 0); if (isreg (curi->dmode) && curi->dmode == Areg) { tmpc += curi->size == sz_long ? 2 : 4; if (curi->size == sz_long) tmpc += (isreg (curi->smode) || curi->smode == imm) ? 2 : 0; } fill_prefetch_next_delay (tmpc); start_brace (); printf ("\tuae_u32 newv = dst - src;\n"); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); break; case i_SUBX: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, GF_AA); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, GF_AA); if ((isreg (curi->smode) && curi->size == sz_long) || !isreg (curi->smode)) tmpc += 2; fill_prefetch_next_delay (tmpc); start_brace (); printf ("\tuae_u32 newv = dst - src - (GET_XFLG ? 1 : 0);\n"); genflags (flag_subx, curi->size, "newv", "src", "dst"); genflags (flag_zn, curi->size, "newv", "", ""); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); break; case i_SBCD: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, GF_AA); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, GF_AA); fill_prefetch_next (); start_brace (); printf ("\tuae_u16 newv_lo = (dst & 0xF) - (src & 0xF) - (GET_XFLG ? 1 : 0);\n"); printf ("\tuae_u16 newv_hi = (dst & 0xF0) - (src & 0xF0);\n"); printf ("\tuae_u16 newv, tmp_newv;\n"); printf ("\tint bcd = 0;\n"); printf ("\tnewv = tmp_newv = newv_hi + newv_lo;\n"); printf ("\tif (newv_lo & 0xF0) { newv -= 6; bcd = 6; };\n"); printf ("\tif ((((dst & 0xFF) - (src & 0xFF) - (GET_XFLG ? 1 : 0)) & 0x100) > 0xFF) { newv -= 0x60; }\n"); printf ("\tSET_CFLG ((((dst & 0xFF) - (src & 0xFF) - bcd - (GET_XFLG ? 1 : 0)) & 0x300) > 0xFF);\n"); duplicate_carry (0); genflags (flag_zn, curi->size, "newv", "", ""); printf ("\tSET_VFLG ((tmp_newv & 0x80) != 0 && (newv & 0x80) == 0);\n"); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); break; case i_ADD: case i_ADDQ: case i_ADDI: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); if (isreg (curi->dmode)) { if (curi->dmode == Dreg && curi->size == sz_long) tmpc += (curi->smode == imm || curi->smode == immi) ? 4 : 2; } fill_prefetch_next_delay (tmpc); start_brace (); genflags (flag_add, curi->size, "newv", "src", "dst"); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); break; case i_ADDA: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0, 0); if (isreg (curi->dmode) && curi->dmode == Areg) { tmpc += curi->size == sz_long ? 2 : 4; if (curi->size == sz_long) tmpc += (isreg (curi->smode) || curi->smode == imm) ? 2 : 0; } fill_prefetch_next_delay (tmpc); start_brace (); printf ("\tuae_u32 newv = dst + src;\n"); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); break; case i_ADDX: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, GF_AA); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, GF_AA); if ((isreg (curi->smode) && curi->size == sz_long) || !isreg (curi->smode)) tmpc += 2; fill_prefetch_next_delay (tmpc); start_brace (); printf ("\tuae_u32 newv = dst + src + (GET_XFLG ? 1 : 0);\n"); genflags (flag_addx, curi->size, "newv", "src", "dst"); genflags (flag_zn, curi->size, "newv", "", ""); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); break; case i_ABCD: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, GF_AA); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, GF_AA); fill_prefetch_next (); start_brace (); printf ("\tuae_u16 newv_lo = (src & 0xF) + (dst & 0xF) + (GET_XFLG ? 1 : 0);\n"); printf ("\tuae_u16 newv_hi = (src & 0xF0) + (dst & 0xF0);\n"); printf ("\tuae_u16 newv, tmp_newv;\n"); printf ("\tint cflg;\n"); printf ("\tnewv = tmp_newv = newv_hi + newv_lo;"); printf ("\tif (newv_lo > 9) { newv += 6; }\n"); printf ("\tcflg = (newv & 0x3F0) > 0x90;\n"); printf ("\tif (cflg) newv += 0x60;\n"); printf ("\tSET_CFLG (cflg);\n"); duplicate_carry (0); genflags (flag_zn, curi->size, "newv", "", ""); printf ("\tSET_VFLG ((tmp_newv & 0x80) == 0 && (newv & 0x80) != 0);\n"); genastore ("newv", curi->dmode, "dstreg", curi->size, "dst"); break; case i_NEG: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); if (isreg (curi->smode) && curi->size == sz_long) tmpc += 2; fill_prefetch_next_delay (tmpc); start_brace (); genflags (flag_sub, curi->size, "dst", "src", "0"); genastore ("dst", curi->smode, "srcreg", curi->size, "src"); break; case i_NEGX: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); if (isreg (curi->smode) && curi->size == sz_long) tmpc += 2; fill_prefetch_next_delay (tmpc); start_brace (); printf ("\tuae_u32 newv = 0 - src - (GET_XFLG ? 1 : 0);\n"); genflags (flag_subx, curi->size, "newv", "src", "0"); genflags (flag_zn, curi->size, "newv", "", ""); genastore ("newv", curi->smode, "srcreg", curi->size, "src"); break; case i_NBCD: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); if (isreg (curi->smode)) tmpc += 2; fill_prefetch_next_delay (tmpc); start_brace (); printf ("\tuae_u16 newv_lo = - (src & 0xF) - (GET_XFLG ? 1 : 0);\n"); printf ("\tuae_u16 newv_hi = - (src & 0xF0);\n"); printf ("\tuae_u16 newv, tmp_newv;\n"); printf ("\tint bcd = 0;\n"); printf ("\tnewv = tmp_newv = newv_hi + newv_lo;"); printf ("\tif (newv_lo & 0xF0) { newv -= 6; bcd = 6; };\n"); printf ("\tif (((- (src & 0xFF) - (GET_XFLG ? 1 : 0)) & 0x100) > 0xFF) { newv -= 0x60; }\n"); printf ("\tSET_CFLG (((- (src & 0xFF) - bcd - (GET_XFLG ? 1 : 0)) & 0x300) > 0xFF);\n"); duplicate_carry (0); genflags (flag_zn, curi->size, "newv", "", ""); printf ("\tSET_VFLG ((tmp_newv & 0x80) != 0 && (newv & 0x80) == 0);\n"); genastore ("newv", curi->smode, "srcreg", curi->size, "src"); break; case i_CLR: genamode (curi->smode, "srcreg", curi->size, "src", cpu_level == 0 ? 1 : 2, 0, 0); if (isreg (curi->smode) && curi->size == sz_long) tmpc += 2; fill_prefetch_next_delay (tmpc); genflags (flag_logical, curi->size, "0", "", ""); genastore ("0", curi->smode, "srcreg", curi->size, "src"); break; case i_NOT: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); if (isreg (curi->smode) && curi->size == sz_long) tmpc += 2; fill_prefetch_next_delay (tmpc); start_brace (); printf ("\tuae_u32 dst = ~src;\n"); genflags (flag_logical, curi->size, "dst", "", ""); genastore ("dst", curi->smode, "srcreg", curi->size, "src"); break; case i_TST: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); fill_prefetch_next (); genflags (flag_logical, curi->size, "src", "", ""); break; case i_BTST: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); if (isreg (curi->dmode)) tmpc += 2; fill_prefetch_next_delay (tmpc); if (curi->size == sz_byte) printf ("\tsrc &= 7;\n"); else printf ("\tsrc &= 31;\n"); printf ("\tSET_ZFLG (1 ^ ((dst >> src) & 1));\n"); break; case i_BCHG: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); if (isreg (curi->dmode)) tmpc += 4; fill_prefetch_next_delay (tmpc); if (curi->size == sz_byte) printf ("\tsrc &= 7;\n"); else printf ("\tsrc &= 31;\n"); printf ("\tdst ^= (1 << src);\n"); printf ("\tSET_ZFLG (((uae_u32)dst & (1 << src)) >> src);\n"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); break; case i_BCLR: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); if (isreg (curi->dmode)) tmpc += 4; fill_prefetch_next_delay (tmpc); if (curi->size == sz_byte) printf ("\tsrc &= 7;\n"); else printf ("\tsrc &= 31;\n"); printf ("\tSET_ZFLG (1 ^ ((dst >> src) & 1));\n"); printf ("\tdst &= ~(1 << src);\n"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); break; case i_BSET: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); if (isreg (curi->dmode)) tmpc += 4; fill_prefetch_next_delay (tmpc); if (curi->size == sz_byte) printf ("\tsrc &= 7;\n"); else printf ("\tsrc &= 31;\n"); printf ("\tSET_ZFLG (1 ^ ((dst >> src) & 1));\n"); printf ("\tdst |= (1 << src);\n"); genastore ("dst", curi->dmode, "dstreg", curi->size, "dst"); break; case i_CMPM: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, GF_AA); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, GF_AA); fill_prefetch_next (); start_brace (); genflags (flag_cmp, curi->size, "newv", "src", "dst"); break; case i_CMP: case i_CMPI: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); if (isreg (curi->dmode)) { if (curi->dmode == Areg || (curi->dmode == Dreg && curi->size == sz_long)) tmpc += 2; } fill_prefetch_next_delay (tmpc); start_brace (); genflags (flag_cmp, curi->size, "newv", "src", "dst"); break; case i_CMPA: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0, 0); if (isreg (curi->dmode)) { if (curi->dmode == Areg || (curi->dmode == Dreg && curi->size == sz_long)) tmpc += 2; } fill_prefetch_next_delay (tmpc); start_brace (); genflags (flag_cmp, sz_long, "newv", "src", "dst"); break; /* The next two are coded a little unconventional, but they are doing * weird things... */ case i_MVPRM: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); printf ("\tuaecptr memp = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)%s;\n", gen_nextiword (0)); fill_prefetch_next (); if (curi->size == sz_word) { printf ("\tput_byte(memp, src >> 8); put_byte(memp + 2, src);\n"); } else { printf ("\tput_byte(memp, src >> 24); put_byte(memp + 2, src >> 16);\n"); printf ("\tput_byte(memp + 4, src >> 8); put_byte(memp + 6, src);\n"); } break; case i_MVPMR: printf ("\tuaecptr memp = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)%s;\n", gen_nextiword (0)); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0, 0); if (curi->size == sz_word) { printf ("\tuae_u16 val = (get_byte(memp) << 8) + get_byte(memp + 2);\n"); } else { printf ("\tuae_u32 val = (get_byte(memp) << 24) + (get_byte(memp + 2) << 16)\n"); printf (" + (get_byte(memp + 4) << 8) + get_byte(memp + 6);\n"); } fill_prefetch_next (); genastore ("val", curi->dmode, "dstreg", curi->size, "dst"); break; case i_MOVE: case i_MOVEQ: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0, GF_APDI); genastore ("src", curi->dmode, "dstreg", curi->size, "dst"); genflags (flag_logical, curi->size, "src", "", ""); sync_m68k_pc (); fill_prefetch_next (); break; case i_MOVEA: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0, GF_APDI); if (curi->size == sz_word) { printf ("\tuae_u32 val = (uae_s32)(uae_s16)src;\n"); } else { printf ("\tuae_u32 val = src;\n"); } fill_prefetch_next (); genastore ("val", curi->dmode, "dstreg", sz_long, "dst"); break; case i_MVSR2: genamode (curi->smode, "srcreg", sz_word, "src", 2, 0, 0); if (isreg (curi->smode)) tmpc += 2; fill_prefetch_next_delay (tmpc); printf ("\tMakeSR();\n"); if (curi->size == sz_byte) genastore ("regs.sr & 0xff", curi->smode, "srcreg", sz_word, "src"); else genastore ("regs.sr", curi->smode, "srcreg", sz_word, "src"); break; case i_MV2SR: genamode (curi->smode, "srcreg", sz_word, "src", 1, 0, 0); if (curi->size == sz_byte) { tmpc += 8; printf ("\tMakeSR();\n\tregs.sr &= 0xFF00;\n\tregs.sr |= src & 0xFF;\n"); } else { tmpc += 4; printf ("\tregs.sr = src;\n"); } fill_prefetch_next_delay (tmpc); printf ("\tMakeFromSR();\n"); break; case i_SWAP: genamode (curi->smode, "srcreg", sz_long, "src", 1, 0, 0); fill_prefetch_next (); start_brace (); printf ("\tuae_u32 dst = ((src >> 16)&0xFFFF) | ((src&0xFFFF)<<16);\n"); genflags (flag_logical, sz_long, "dst", "", ""); genastore ("dst", curi->smode, "srcreg", sz_long, "src"); break; case i_EXG: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); fill_prefetch_next_delay (2); genastore ("dst", curi->smode, "srcreg", curi->size, "src"); genastore ("src", curi->dmode, "dstreg", curi->size, "dst"); break; case i_EXT: genamode (curi->smode, "srcreg", sz_long, "src", 1, 0, 0); fill_prefetch_next (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 dst = (uae_s32)(uae_s8)src;\n"); break; case sz_word: printf ("\tuae_u16 dst = (uae_s16)(uae_s8)src;\n"); break; case sz_long: printf ("\tuae_u32 dst = (uae_s32)(uae_s16)src;\n"); break; default: abort (); } genflags (flag_logical, curi->size == sz_word ? sz_word : sz_long, "dst", "", ""); genastore ("dst", curi->smode, "srcreg", curi->size == sz_word ? sz_word : sz_long, "src"); break; case i_MVMEL: genmovemel (opcode); fill_prefetch_next (); break; case i_MVMLE: genmovemle (opcode); fill_prefetch_next (); break; case i_TRAP: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); sync_m68k_pc (); printf ("\tException(src+32,0);\n"); did_prefetch = 1; m68k_pc_offset = 0; break; case i_MVR2USP: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); fill_prefetch_next (); printf ("\tregs.usp = src;\n"); break; case i_MVUSP2R: genamode (curi->smode, "srcreg", curi->size, "src", 2, 0, 0); fill_prefetch_next (); genastore ("regs.usp", curi->smode, "srcreg", curi->size, "src"); break; case i_RESET: fill_prefetch_next (); /*printf ("\tcpureset();\n");*/ break; case i_NOP: fill_prefetch_next (); break; case i_STOP: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); printf ("\tregs.sr = src;\n"); printf ("\tMakeFromSR();\n"); printf ("\tm68k_setstopped(1);\n"); sync_m68k_pc (); fill_prefetch_full (); break; case i_RTE: if (cpu_level == 0) { genamode (Aipi, "7", sz_word, "sr", 1, 0, GF_NOREFILL); genamode (Aipi, "7", sz_long, "pc", 1, 0, GF_NOREFILL); printf ("\tregs.sr = sr; m68k_setpc (pc);\n"); printf ("\tMakeFromSR();\n"); } else { int old_brace_level = n_braces; if (next_cpu_level < 0) next_cpu_level = 0; printf ("\tuae_u16 newsr; uae_u32 newpc; for (;;) {\n"); genamode (Aipi, "7", sz_word, "sr", 1, 0, 0); genamode (Aipi, "7", sz_long, "pc", 1, 0, 0); genamode (Aipi, "7", sz_word, "format", 1, 0, 0); printf ("\tnewsr = sr; newpc = pc;\n"); printf ("\tif ((format & 0xF000) == 0x0000) { break; }\n"); printf ("\telse if ((format & 0xF000) == 0x1000) { ; }\n"); printf ("\telse if ((format & 0xF000) == 0x2000) { m68k_areg(regs, 7) += 4; break; }\n"); printf ("\telse if ((format & 0xF000) == 0x8000) { m68k_areg(regs, 7) += 50; break; }\n"); printf ("\telse if ((format & 0xF000) == 0x9000) { m68k_areg(regs, 7) += 12; break; }\n"); printf ("\telse if ((format & 0xF000) == 0xa000) { m68k_areg(regs, 7) += 24; break; }\n"); printf ("\telse if ((format & 0xF000) == 0xb000) { m68k_areg(regs, 7) += 84; break; }\n"); printf ("\telse { Exception(14,0); goto %s; }\n", endlabelstr); printf ("\tregs.sr = newsr; MakeFromSR();\n}\n"); pop_braces (old_brace_level); printf ("\tregs.sr = newsr; MakeFromSR();\n"); printf ("\tif (newpc & 1)\n"); printf ("\t\texception3 (0x%04.4X, m68k_getpc(), newpc);\n", opcode); printf ("\telse\n"); printf ("\t\tm68k_setpc (newpc);\n"); need_endlabel = 1; } /* PC is set and prefetch filled. */ m68k_pc_offset = 0; fill_prefetch_full (); break; case i_RTD: genamode (Aipi, "7", sz_long, "pc", 1, 0, 0); genamode (curi->smode, "srcreg", curi->size, "offs", 1, 0, 0); printf ("\tm68k_areg(regs, 7) += offs;\n"); printf ("\tif (pc & 1)\n"); printf ("\t\texception3 (0x%04.4X, m68k_getpc(), pc);\n", opcode); printf ("\telse\n"); printf ("\t\tm68k_setpc (pc);\n"); /* PC is set and prefetch filled. */ m68k_pc_offset = 0; fill_prefetch_full (); break; case i_LINK: genamode (Apdi, "7", sz_long, "old", 2, 0, 0); genamode (curi->smode, "srcreg", sz_long, "src", 1, 0, 0); genastore ("src", Apdi, "7", sz_long, "old"); genastore ("m68k_areg(regs, 7)", curi->smode, "srcreg", sz_long, "src"); genamode (curi->dmode, "dstreg", curi->size, "offs", 1, 0, 0); printf ("\tm68k_areg(regs, 7) += offs;\n"); fill_prefetch_next (); break; case i_UNLK: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); printf ("\tm68k_areg(regs, 7) = src;\n"); genamode (Aipi, "7", sz_long, "old", 1, 0, 0); fill_prefetch_next (); genastore ("old", curi->smode, "srcreg", curi->size, "src"); break; case i_RTS: printf ("\tm68k_do_rts();\n"); m68k_pc_offset = 0; fill_prefetch_full (); break; case i_TRAPV: sync_m68k_pc (); printf ("\tif (GET_VFLG) {\n"); printf ("\t\tException (7, m68k_getpc ());\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t}\n"); fill_prefetch_next (); need_endlabel = 1; break; case i_RTR: printf ("\tMakeSR();\n"); genamode (Aipi, "7", sz_word, "sr", 1, 0, 0); genamode (Aipi, "7", sz_long, "pc", 1, 0, 0); printf ("\tregs.sr &= 0xFF00; sr &= 0xFF;\n"); printf ("\tregs.sr |= sr; m68k_setpc(pc);\n"); printf ("\tMakeFromSR();\n"); m68k_pc_offset = 0; fill_prefetch_full (); break; case i_JSR: genamode (curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA|GF_NOREFILL); start_brace (); printf ("\tuaecptr oldpc = m68k_getpc() + %d;\n", m68k_pc_offset); if (using_exception_3) { printf ("\tif (srca & 1) {\n"); printf ("\t\texception3i (opcode, oldpc, srca);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t}\n"); need_endlabel = 1; } printf ("\tm68k_setpc (srca);\n"); m68k_pc_offset = 0; fill_prefetch_1 (0, 0); printf("\tm68k_areg (regs, 7) -= 4;\n"); printf("\tput_long (m68k_areg (regs, 7), oldpc);\n"); fill_prefetch_next (); break; case i_JMP: genamode (curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA|GF_NOREFILL); if (using_exception_3) { printf ("\tif (srca & 1) {\n"); printf ("\t\texception3i (opcode, m68k_getpc() + 6, srca);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t}\n"); need_endlabel = 1; } printf ("\tm68k_setpc(srca);\n"); m68k_pc_offset = 0; fill_prefetch_full (); break; case i_BSR: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, GF_AA|GF_NOREFILL); printf("{"); printf ("\tuae_s32 s = (uae_s32)src + 2;\n"); if (using_exception_3) { printf ("\tif (src & 1) {\n"); printf ("\t\texception3i (opcode, m68k_getpc() + 2, m68k_getpc() + s);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t}\n"); need_endlabel = 1; } printf ("\tm68k_do_bsr(m68k_getpc() + %d, s);\n", m68k_pc_offset); printf("}"); m68k_pc_offset = 0; fill_prefetch_full (); break; case i_Bcc: if (curi->size == sz_long) { if (cpu_level < 2) { printf ("\tif (cctrue(%d)) {\n", curi->cc, endlabelstr); printf ("\t\texception3i (opcode, m68k_getpc() + 2, m68k_getpc() + 1);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t}\n"); sync_m68k_pc (); irc2ir (); fill_prefetch_2 (); printf ("\tgoto %s;\n", endlabelstr); need_endlabel = 1; } else { if (next_cpu_level < 1) next_cpu_level = 1; } } genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, GF_AA|GF_NOREFILL); printf ("\tif (!cctrue(%d)) goto didnt_jump;\n", curi->cc); if (using_exception_3) { printf ("\tif (src & 1) {\n"); printf ("\t\texception3i (opcode, m68k_getpc() + 2, m68k_getpc() + 2 + (uae_s32)src);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t}\n"); need_endlabel = 1; } if (using_prefetch) { if (curi->size == sz_byte) { printf ("\tm68k_incpc ((uae_s32)src + 2);\n"); } else { printf ("\tm68k_incpc ((uae_s32)src + 2);\n"); } fill_prefetch_full (); if (using_ce) printf ("\treturn;\n"); else printf ("\treturn 10 * %d;\n", CYCLE_UNIT / 2); } else { printf ("\tm68k_incpc ((uae_s32)src + 2);\n"); returncycles ("\t", 10); } printf ("didnt_jump:;\n"); need_endlabel = 1; sync_m68k_pc (); if (curi->size == sz_byte) { irc2ir (); fill_prefetch_2 (); } else fill_prefetch_full (); insn_n_cycles = curi->size == sz_byte ? 8 : 12; break; case i_LEA: genamode (curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0, GF_AA); if (curi->smode == Ad8r || curi->smode == PC8r) tmpc += 4; fill_prefetch_next_delay (tmpc); genastore ("srca", curi->dmode, "dstreg", curi->size, "dst"); break; case i_PEA: genamode (curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA); genamode (Apdi, "7", sz_long, "dst", 2, 0, GF_AA); if (curi->smode == Ad8r || curi->smode == PC8r) tmpc += 4; fill_prefetch_next_delay (tmpc); genastore ("srca", Apdi, "7", sz_long, "dst"); break; case i_DBcc: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, GF_AA|GF_NOREFILL); genamode (curi->dmode, "dstreg", curi->size, "offs", 1, 0, GF_AA|GF_NOREFILL); printf ("\tuaecptr oldpc = m68k_getpc();\n"); printf ("\tif (!cctrue(%d)) {\n", curi->cc); printf ("\t\tm68k_incpc((uae_s32)offs + 2);\n"); printf ("\t"); fill_prefetch_1 (0, 0); printf ("\t"); genastore ("(src-1)", curi->smode, "srcreg", curi->size, "src"); printf ("\t\tif (src) {\n"); if (using_exception_3) { printf ("\t\t\tif (offs & 1) {\n"); printf ("\t\t\t\texception3i (opcode, m68k_getpc() + 2, m68k_getpc() + 2 + (uae_s32)offs + 2);\n"); printf ("\t\t\t\tgoto %s;\n", endlabelstr); printf ("\t\t\t}\n"); need_endlabel = 1; } irc2ir (); fill_prefetch_1 (2, 0); returncycles ("\t\t\t", 12); printf ("\t\t}\n"); printf ("\t} else {\n"); printf ("\t}\n"); printf ("\tm68k_setpc (oldpc + %d);\n", m68k_pc_offset); m68k_pc_offset = 0; fill_prefetch_full (); insn_n_cycles = 12; need_endlabel = 1; break; case i_Scc: genamode (curi->smode, "srcreg", curi->size, "src", cpu_level == 0 ? 1 : 2, 0, 0); start_brace (); fill_prefetch_next_cycles (); printf("{"); printf ("\tint val = cctrue(%d) ? 0xff : 0;\n", curi->cc); genastore ("val", curi->smode, "srcreg", curi->size, "src"); printf("}"); break; case i_DIVU: printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", sz_word, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0, 0); fill_prefetch_next_cycles (); sync_m68k_pc (); printf ("\tCLEAR_CZNV;\n"); printf ("\tif (src == 0) {\n"); if (cpu_level > 0) { /* 68020 sets V when dividing by zero and N if dst is negative * 68000 clears both */ printf("\t\tSET_VFLG (1);\n"); printf("\t\tif (dst < 0) SET_NFLG (1);\n"); } printf ("\t\tException (5, oldpc);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t} else {\n"); printf ("\t\tuae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;\n"); printf ("\t\tuae_u32 rem = (uae_u32)dst %% (uae_u32)(uae_u16)src;\n"); if (using_ce) { printf ("\t\tint cycles = 138 * %d - lostcycles;\n", CYCLE_UNIT / 2); } /* The N flag appears to be set each time there is an overflow. * Weird. but 68020 only sets N when dst is negative.. */ printf ("\t\tif (newv > 0xffff) {\n"); printf ("\t\t\tSET_VFLG (1);\n"); #ifdef UNDEF68020 if (cpu_level >= 2) printf ("\t\t\tif (currprefs.cpu_level == 0 || dst < 0) SET_NFLG (1);\n"); else /* ??? some 68000 revisions may not set NFLG when overflow happens.. */ #endif printf ("\t\t\tSET_NFLG (1);\n"); printf ("\t\t} else {\n"); printf ("\t\t"); genflags (flag_logical, sz_word, "newv", "", ""); printf ("\t\t\tnewv = (newv & 0xffff) | ((uae_u32)rem << 16);\n"); printf ("\t\t"); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); printf ("\t\t}\n"); printf ("\t}\n"); insn_n_cycles += 136; need_endlabel = 1; break; case i_DIVS: printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", sz_word, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", sz_long, "dst", 1, 0, 0); fill_prefetch_next_cycles (); sync_m68k_pc (); printf ("\tCLEAR_CZNV;\n"); printf ("\tif (src == 0) {\n"); if (cpu_level > 0) { /* 68020 sets V when dividing by zero. Z is also set. * 68000 clears both */ printf("\t\tSET_VFLG (1);\n"); printf("\t\tSET_ZFLG (1);\n"); } printf ("\t\tException (5, oldpc);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t} else {\n"); printf ("\t\tuae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;\n"); printf ("\t\tuae_u16 rem = (uae_s32)dst %% (uae_s32)(uae_s16)src;\n"); if (using_ce) { printf ("\t\tint cycles = 156 * %d - lostcycles;\n", CYCLE_UNIT / 2); } printf ("\t\tif ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) {\n"); printf ("\t\t\tSET_VFLG (1);\n"); #ifdef UNDEF68020 if (cpu_level > 0) printf ("\t\t\tif (currprefs.cpu_level == 0) SET_NFLG (1);\n"); else #endif printf ("\t\t\tSET_NFLG (1);\n"); printf ("\t\t} else {\n"); printf ("\t\t\tif (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;\n"); genflags (flag_logical, sz_word, "newv", "", ""); printf ("\t\t\tnewv = (newv & 0xffff) | ((uae_u32)rem << 16);\n"); printf ("\t\t"); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); printf ("\t\t}\n"); printf ("\t}\n"); insn_n_cycles += 154; need_endlabel = 1; break; case i_MULU: genamode (curi->smode, "srcreg", sz_word, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", sz_word, "dst", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); printf ("\tuae_u32 newv = (uae_u32)(uae_u16)dst * (uae_u32)(uae_u16)src;\n"); genflags (flag_logical, sz_long, "newv", "", ""); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); sync_m68k_pc (); insn_n_cycles += 66; break; case i_MULS: genamode (curi->smode, "srcreg", sz_word, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", sz_word, "dst", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); printf ("\tuae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src;\n"); genflags (flag_logical, sz_long, "newv", "", ""); genastore ("newv", curi->dmode, "dstreg", sz_long, "dst"); insn_n_cycles += 66; break; case i_CHK: printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); sync_m68k_pc (); fill_prefetch_next_delay (6); printf ("\tSET_ZFLG (!dst);\n"); printf ("\tSET_CFLG (0);\n"); printf ("\tSET_VFLG (0);\n"); printf ("\tif ((uae_s32)dst < 0) {\n"); printf ("\t\tSET_NFLG (1);\n"); printf ("\t\tException (6, oldpc);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t} else if (dst > src) {\n"); printf ("\t\tSET_NFLG (0);\n"); printf ("\t\tException (6, oldpc);\n"); printf ("\t\tgoto %s;\n", endlabelstr); printf ("\t}\n"); need_endlabel = 1; break; case i_CHK2: printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0, 0); fill_prefetch_0 (); printf ("\t{uae_s32 upper,lower,reg = regs.regs[(extra >> 12) & 15];\n"); switch (curi->size) { case sz_byte: printf ("\tlower=(uae_s32)(uae_s8)get_byte(dsta); upper = (uae_s32)(uae_s8)get_byte(dsta+1);\n"); printf ("\tif ((extra & 0x8000) == 0) reg = (uae_s32)(uae_s8)reg;\n"); break; case sz_word: printf ("\tlower=(uae_s32)(uae_s16)get_word(dsta); upper = (uae_s32)(uae_s16)get_word(dsta+2);\n"); printf ("\tif ((extra & 0x8000) == 0) reg = (uae_s32)(uae_s16)reg;\n"); break; case sz_long: printf ("\tlower=get_long(dsta); upper = get_long(dsta+4);\n"); break; default: abort (); } printf ("\tSET_ZFLG (upper == reg || lower == reg);\n"); printf ("\tSET_CFLG (lower <= upper ? reg < lower || reg > upper : reg > upper || reg < lower);\n"); printf ("\tif ((extra & 0x800) && GET_CFLG) { Exception(6,oldpc); goto %s; }\n}\n", endlabelstr); need_endlabel = 1; break; case i_ASR: genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 sign = (%s & val) >> %d;\n", cmask (curi->size), bit_size (curi->size) - 1); printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV;\n"); printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); printf ("\t\tval = %s & (uae_u32)-sign;\n", bit_mask (curi->size)); printf ("\t\tSET_CFLG (sign);\n"); duplicate_carry (0); if (source_is_imm1_8 (curi)) printf ("\t} else {\n"); else printf ("\t} else if (cnt > 0) {\n"); printf ("\t\tval >>= cnt - 1;\n"); printf ("\t\tSET_CFLG (val & 1);\n"); duplicate_carry (0); printf ("\t\tval >>= 1;\n"); printf ("\t\tval |= (%s << (%d - cnt)) & (uae_u32)-sign;\n", bit_mask (curi->size), bit_size (curi->size)); printf ("\t\tval &= %s;\n", bit_mask (curi->size)); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data"); break; case i_ASL: genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV;\n"); printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); printf ("\t\tSET_VFLG (val != 0);\n"); printf ("\t\tSET_CFLG (cnt == %d ? val & 1 : 0);\n", bit_size (curi->size)); duplicate_carry (0); printf ("\t\tval = 0;\n"); if (source_is_imm1_8 (curi)) printf ("\t} else {\n"); else printf ("\t} else if (cnt > 0) {\n"); printf ("\t\tuae_u32 mask = (%s << (%d - cnt)) & %s;\n", bit_mask (curi->size), bit_size (curi->size) - 1, bit_mask (curi->size)); printf ("\t\tSET_VFLG ((val & mask) != mask && (val & mask) != 0);\n"); printf ("\t\tval <<= cnt - 1;\n"); printf ("\t\tSET_CFLG ((val & %s) >> %d);\n", cmask (curi->size), bit_size (curi->size) - 1); duplicate_carry (0); printf ("\t\tval <<= 1;\n"); printf ("\t\tval &= %s;\n", bit_mask (curi->size)); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data"); break; case i_LSR: genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV;\n"); printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); printf ("\t\tSET_CFLG ((cnt == %d) & (val >> %d));\n", bit_size (curi->size), bit_size (curi->size) - 1); duplicate_carry (0); printf ("\t\tval = 0;\n"); if (source_is_imm1_8 (curi)) printf ("\t} else {\n"); else printf ("\t} else if (cnt > 0) {\n"); printf ("\t\tval >>= cnt - 1;\n"); printf ("\t\tSET_CFLG (val & 1);\n"); duplicate_carry (0); printf ("\t\tval >>= 1;\n"); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data"); break; case i_LSL: genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV;\n"); printf ("\tif (cnt >= %d) {\n", bit_size (curi->size)); printf ("\t\tSET_CFLG (cnt == %d ? val & 1 : 0);\n", bit_size (curi->size)); duplicate_carry (0); printf ("\t\tval = 0;\n"); if (source_is_imm1_8 (curi)) printf ("\t} else {\n"); else printf ("\t} else if (cnt > 0) {\n"); printf ("\t\tval <<= (cnt - 1);\n"); printf ("\t\tSET_CFLG ((val & %s) >> %d);\n", cmask (curi->size), bit_size (curi->size) - 1); duplicate_carry (0); printf ("\t\tval <<= 1;\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data"); break; case i_ROL: genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV;\n"); if (source_is_imm1_8 (curi)) printf ("{"); else printf ("\tif (cnt > 0) {\n"); printf ("\tuae_u32 loval;\n"); printf ("\tcnt &= %d;\n", bit_size (curi->size) - 1); printf ("\tloval = val >> (%d - cnt);\n", bit_size (curi->size)); printf ("\tval <<= cnt;\n"); printf ("\tval |= loval;\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\tSET_CFLG (val & 1);\n"); printf ("}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data"); break; case i_ROR: genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV;\n"); if (source_is_imm1_8 (curi)) printf ("{"); else printf ("\tif (cnt > 0) {"); printf ("\tuae_u32 hival;\n"); printf ("\tcnt &= %d;\n", bit_size (curi->size) - 1); printf ("\thival = val << (%d - cnt);\n", bit_size (curi->size)); printf ("\tval >>= cnt;\n"); printf ("\tval |= hival;\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\tSET_CFLG ((val & %s) >> %d);\n", cmask (curi->size), bit_size (curi->size) - 1); printf ("\t}\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data"); break; case i_ROXL: genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV;\n"); if (source_is_imm1_8 (curi)) printf ("{"); else { force_range_for_rox ("cnt", curi->size); printf ("\tif (cnt > 0) {\n"); } printf ("\tcnt--;\n"); printf ("\t{\n\tuae_u32 carry;\n"); printf ("\tuae_u32 loval = val >> (%d - cnt);\n", bit_size (curi->size) - 1); printf ("\tcarry = loval & 1;\n"); printf ("\tval = (((val << 1) | GET_XFLG) << cnt) | (loval >> 1);\n"); printf ("\tSET_XFLG (carry);\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\t} }\n"); printf ("\tSET_CFLG (GET_XFLG);\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data"); break; case i_ROXR: genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0); fill_prefetch_next_cycles (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tcnt &= 63;\n"); printf ("\tCLEAR_CZNV;\n"); if (source_is_imm1_8 (curi)) printf ("{"); else { force_range_for_rox ("cnt", curi->size); printf ("\tif (cnt > 0) {\n"); } printf ("\tcnt--;\n"); printf ("\t{\n\tuae_u32 carry;\n"); printf ("\tuae_u32 hival = (val << 1) | GET_XFLG;\n"); printf ("\thival <<= (%d - cnt);\n", bit_size (curi->size) - 1); printf ("\tval >>= cnt;\n"); printf ("\tcarry = val & 1;\n"); printf ("\tval >>= 1;\n"); printf ("\tval |= hival;\n"); printf ("\tSET_XFLG (carry);\n"); printf ("\tval &= %s;\n", bit_mask (curi->size)); printf ("\t} }\n"); printf ("\tSET_CFLG (GET_XFLG);\n"); genflags (flag_logical_noclobber, curi->size, "val", "", ""); genastore ("val", curi->dmode, "dstreg", curi->size, "data"); break; case i_ASRW: genamode (curi->smode, "srcreg", curi->size, "data", 1, 0, 0); fill_prefetch_next (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 sign = %s & val;\n", cmask (curi->size)); printf ("\tuae_u32 cflg = val & 1;\n"); printf ("\tval = (val >> 1) | sign;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("\tSET_CFLG (cflg);\n"); duplicate_carry (0); genastore ("val", curi->smode, "srcreg", curi->size, "data"); break; case i_ASLW: genamode (curi->smode, "srcreg", curi->size, "data", 1, 0, 0); fill_prefetch_next (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 sign = %s & val;\n", cmask (curi->size)); printf ("\tuae_u32 sign2;\n"); printf ("\tval <<= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("\tsign2 = %s & val;\n", cmask (curi->size)); printf ("\tSET_CFLG (sign != 0);\n"); duplicate_carry (0); printf ("\tSET_VFLG (GET_VFLG | (sign2 != sign));\n"); genastore ("val", curi->smode, "srcreg", curi->size, "data"); break; case i_LSRW: genamode (curi->smode, "srcreg", curi->size, "data", 1, 0, 0); fill_prefetch_next (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break; case sz_word: printf ("\tuae_u32 val = (uae_u16)data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & 1;\n"); printf ("\tval >>= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry);\n"); duplicate_carry (0); genastore ("val", curi->smode, "srcreg", curi->size, "data"); break; case i_LSLW: genamode (curi->smode, "srcreg", curi->size, "data", 1, 0, 0); fill_prefetch_next (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & %s;\n", cmask (curi->size)); printf ("\tval <<= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry >> %d);\n", bit_size (curi->size) - 1); duplicate_carry (0); genastore ("val", curi->smode, "srcreg", curi->size, "data"); break; case i_ROLW: genamode (curi->smode, "srcreg", curi->size, "data", 1, 0, 0); fill_prefetch_next (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & %s;\n", cmask (curi->size)); printf ("\tval <<= 1;\n"); printf ("\tif (carry) val |= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry >> %d);\n", bit_size (curi->size) - 1); genastore ("val", curi->smode, "srcreg", curi->size, "data"); break; case i_RORW: genamode (curi->smode, "srcreg", curi->size, "data", 1, 0, 0); fill_prefetch_next (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & 1;\n"); printf ("\tval >>= 1;\n"); printf ("\tif (carry) val |= %s;\n", cmask (curi->size)); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry);\n"); genastore ("val", curi->smode, "srcreg", curi->size, "data"); break; case i_ROXLW: genamode (curi->smode, "srcreg", curi->size, "data", 1, 0, 0); fill_prefetch_next (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & %s;\n", cmask (curi->size)); printf ("\tval <<= 1;\n"); printf ("\tif (GET_XFLG) val |= 1;\n"); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry >> %d);\n", bit_size (curi->size) - 1); duplicate_carry (0); genastore ("val", curi->smode, "srcreg", curi->size, "data"); break; case i_ROXRW: genamode (curi->smode, "srcreg", curi->size, "data", 1, 0, 0); fill_prefetch_next (); start_brace (); switch (curi->size) { case sz_byte: printf ("\tuae_u8 val = data;\n"); break; case sz_word: printf ("\tuae_u16 val = data;\n"); break; case sz_long: printf ("\tuae_u32 val = data;\n"); break; default: abort (); } printf ("\tuae_u32 carry = val & 1;\n"); printf ("\tval >>= 1;\n"); printf ("\tif (GET_XFLG) val |= %s;\n", cmask (curi->size)); genflags (flag_logical, curi->size, "val", "", ""); printf ("SET_CFLG (carry);\n"); duplicate_carry (0); genastore ("val", curi->smode, "srcreg", curi->size, "data"); break; case i_MOVEC2: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); fill_prefetch_next (); start_brace (); printf ("\tint regno = (src >> 12) & 15;\n"); printf ("\tuae_u32 *regp = regs.regs + regno;\n"); printf ("\tif (! m68k_movec2(src & 0xFFF, regp)) goto %s;\n", endlabelstr); break; case i_MOVE2C: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); fill_prefetch_next (); start_brace (); printf ("\tint regno = (src >> 12) & 15;\n"); printf ("\tuae_u32 *regp = regs.regs + regno;\n"); printf ("\tif (! m68k_move2c(src & 0xFFF, regp)) goto %s;\n", endlabelstr); break; case i_CAS: { int old_brace_level; genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); fill_prefetch_0 (); start_brace (); printf ("\tint ru = (src >> 6) & 7;\n"); printf ("\tint rc = src & 7;\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, rc)", "dst"); printf ("\tif (GET_ZFLG)"); old_brace_level = n_braces; start_brace (); genastore ("(m68k_dreg(regs, ru))", curi->dmode, "dstreg", curi->size, "dst"); pop_braces (old_brace_level); printf ("else"); start_brace (); printf ("m68k_dreg(regs, rc) = dst;\n"); pop_braces (old_brace_level); } break; case i_CAS2: genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); printf ("\tuae_u32 rn1 = regs.regs[(extra >> 28) & 15];\n"); printf ("\tuae_u32 rn2 = regs.regs[(extra >> 12) & 15];\n"); if (curi->size == sz_word) { int old_brace_level = n_braces; printf ("\tuae_u16 dst1 = get_word(rn1), dst2 = get_word(rn2);\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, (extra >> 16) & 7)", "dst1"); printf ("\tif (GET_ZFLG) {\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, extra & 7)", "dst2"); printf ("\tif (GET_ZFLG) {\n"); printf ("\tput_word(rn1, m68k_dreg(regs, (extra >> 22) & 7));\n"); printf ("\tput_word(rn1, m68k_dreg(regs, (extra >> 6) & 7));\n"); printf ("\t}}\n"); pop_braces (old_brace_level); printf ("\tif (! GET_ZFLG) {\n"); printf ("\tm68k_dreg(regs, (extra >> 22) & 7) = (m68k_dreg(regs, (extra >> 22) & 7) & ~0xffff) | (dst1 & 0xffff);\n"); printf ("\tm68k_dreg(regs, (extra >> 6) & 7) = (m68k_dreg(regs, (extra >> 6) & 7) & ~0xffff) | (dst2 & 0xffff);\n"); printf ("\t}\n"); } else { int old_brace_level = n_braces; printf ("\tuae_u32 dst1 = get_long(rn1), dst2 = get_long(rn2);\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, (extra >> 16) & 7)", "dst1"); printf ("\tif (GET_ZFLG) {\n"); genflags (flag_cmp, curi->size, "newv", "m68k_dreg(regs, extra & 7)", "dst2"); printf ("\tif (GET_ZFLG) {\n"); printf ("\tput_long(rn1, m68k_dreg(regs, (extra >> 22) & 7));\n"); printf ("\tput_long(rn1, m68k_dreg(regs, (extra >> 6) & 7));\n"); printf ("\t}}\n"); pop_braces (old_brace_level); printf ("\tif (! GET_ZFLG) {\n"); printf ("\tm68k_dreg(regs, (extra >> 22) & 7) = dst1;\n"); printf ("\tm68k_dreg(regs, (extra >> 6) & 7) = dst2;\n"); printf ("\t}\n"); } break; case i_MOVES: /* ignore DFC and SFC because we have no MMU */ { int old_brace_level; genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); printf ("\tif (extra & 0x800)\n"); old_brace_level = n_braces; start_brace (); printf ("\tuae_u32 src = regs.regs[(extra >> 12) & 15];\n"); genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0, 0); genastore ("src", curi->dmode, "dstreg", curi->size, "dst"); pop_braces (old_brace_level); printf ("else"); start_brace (); genamode (curi->dmode, "dstreg", curi->size, "src", 1, 0, 0); printf ("\tif (extra & 0x8000) {\n"); switch (curi->size) { case sz_byte: printf ("\tm68k_areg(regs, (extra >> 12) & 7) = (uae_s32)(uae_s8)src;\n"); break; case sz_word: printf ("\tm68k_areg(regs, (extra >> 12) & 7) = (uae_s32)(uae_s16)src;\n"); break; case sz_long: printf ("\tm68k_areg(regs, (extra >> 12) & 7) = src;\n"); break; default: abort (); } printf ("\t} else {\n"); genastore ("src", Dreg, "(extra >> 12) & 7", curi->size, ""); printf ("\t}\n"); pop_braces (old_brace_level); } break; case i_BKPT: /* only needed for hardware emulators */ sync_m68k_pc (); printf ("\top_illg(opcode);\n"); break; case i_CALLM: /* not present in 68030 */ sync_m68k_pc (); printf ("\top_illg(opcode);\n"); break; case i_RTM: /* not present in 68030 */ sync_m68k_pc (); printf ("\top_illg(opcode);\n"); break; case i_TRAPcc: if (curi->smode != am_unknown && curi->smode != am_illg) genamode (curi->smode, "srcreg", curi->size, "dummy", 1, 0, 0); fill_prefetch_0 (); printf ("\tif (cctrue(%d)) { Exception(7,m68k_getpc()); goto %s; }\n", curi->cc, endlabelstr); need_endlabel = 1; break; case i_DIVL: sync_m68k_pc (); start_brace (); printf ("\tuaecptr oldpc = m68k_getpc();\n"); genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); sync_m68k_pc (); printf ("\tm68k_divl(opcode, dst, extra, oldpc);\n"); break; case i_MULL: genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); genamode (curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0); sync_m68k_pc (); printf ("\tm68k_mull(opcode, dst, extra);\n"); break; case i_BFTST: case i_BFEXTU: case i_BFCHG: case i_BFEXTS: case i_BFCLR: case i_BFFFO: case i_BFSET: case i_BFINS: genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); genamode (curi->dmode, "dstreg", sz_long, "dst", 2, 0, 0); start_brace (); printf ("\tuae_s32 offset = extra & 0x800 ? m68k_dreg(regs, (extra >> 6) & 7) : (extra >> 6) & 0x1f;\n"); printf ("\tint width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) -1) & 0x1f) +1;\n"); if (curi->dmode == Dreg) { printf ("\tuae_u32 tmp = m68k_dreg(regs, dstreg) << (offset & 0x1f);\n"); } else { printf ("\tuae_u32 tmp,bf0,bf1;\n"); printf ("\tdsta += (offset >> 3) | (offset & 0x80000000 ? ~0x1fffffff : 0);\n"); printf ("\tbf0 = get_long(dsta);bf1 = get_byte(dsta+4) & 0xff;\n"); printf ("\ttmp = (bf0 << (offset & 7)) | (bf1 >> (8 - (offset & 7)));\n"); } printf ("\ttmp >>= (32 - width);\n"); printf ("\tSET_NFLG (tmp & (1 << (width-1)) ? 1 : 0);\n"); printf ("\tSET_ZFLG (tmp == 0); SET_VFLG (0); SET_CFLG (0);\n"); switch (curi->mnemo) { case i_BFTST: break; case i_BFEXTU: printf ("\tm68k_dreg(regs, (extra >> 12) & 7) = tmp;\n"); break; case i_BFCHG: printf ("\ttmp = ~tmp;\n"); break; case i_BFEXTS: printf ("\tif (GET_NFLG) tmp |= width == 32 ? 0 : (-1 << width);\n"); printf ("\tm68k_dreg(regs, (extra >> 12) & 7) = tmp;\n"); break; case i_BFCLR: printf ("\ttmp = 0;\n"); break; case i_BFFFO: printf ("\t{ uae_u32 mask = 1 << (width-1);\n"); printf ("\twhile (mask) { if (tmp & mask) break; mask >>= 1; offset++; }}\n"); printf ("\tm68k_dreg(regs, (extra >> 12) & 7) = offset;\n"); break; case i_BFSET: printf ("\ttmp = 0xffffffff;\n"); break; case i_BFINS: printf ("\ttmp = m68k_dreg(regs, (extra >> 12) & 7);\n"); printf ("\tSET_NFLG (tmp & (1 << (width - 1)) ? 1 : 0);\n"); printf ("\tSET_ZFLG (tmp == 0);\n"); break; default: break; } if (curi->mnemo == i_BFCHG || curi->mnemo == i_BFCLR || curi->mnemo == i_BFSET || curi->mnemo == i_BFINS) { printf ("\ttmp <<= (32 - width);\n"); if (curi->dmode == Dreg) { printf ("\tm68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ((offset & 0x1f) == 0 ? 0 :\n"); printf ("\t\t(0xffffffff << (32 - (offset & 0x1f))))) |\n"); printf ("\t\t(tmp >> (offset & 0x1f)) |\n"); printf ("\t\t(((offset & 0x1f) + width) >= 32 ? 0 :\n"); printf (" (m68k_dreg(regs, dstreg) & ((uae_u32)0xffffffff >> ((offset & 0x1f) + width))));\n"); } else { printf ("\tbf0 = (bf0 & (0xff000000 << (8 - (offset & 7)))) |\n"); printf ("\t\t(tmp >> (offset & 7)) |\n"); printf ("\t\t(((offset & 7) + width) >= 32 ? 0 :\n"); printf ("\t\t (bf0 & ((uae_u32)0xffffffff >> ((offset & 7) + width))));\n"); printf ("\tput_long(dsta,bf0 );\n"); printf ("\tif (((offset & 7) + width) > 32) {\n"); printf ("\t\tbf1 = (bf1 & (0xff >> (width - 32 + (offset & 7)))) |\n"); printf ("\t\t\t(tmp << (8 - (offset & 7)));\n"); printf ("\t\tput_byte(dsta+4,bf1);\n"); printf ("\t}\n"); } } break; case i_PACK: if (curi->smode == Dreg) { printf ("\tuae_u16 val = m68k_dreg(regs, srcreg) + %s;\n", gen_nextiword (0)); printf ("\tm68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & 0xffffff00) | ((val >> 4) & 0xf0) | (val & 0xf);\n"); } else { printf ("\tuae_u16 val;\n"); printf ("\tm68k_areg(regs, srcreg) -= areg_byteinc[srcreg];\n"); printf ("\tval = (uae_u16)get_byte(m68k_areg(regs, srcreg));\n"); printf ("\tm68k_areg(regs, srcreg) -= areg_byteinc[srcreg];\n"); printf ("\tval = (val | ((uae_u16)get_byte(m68k_areg(regs, srcreg)) << 8)) + %s;\n", gen_nextiword (0)); printf ("\tm68k_areg(regs, dstreg) -= areg_byteinc[dstreg];\n"); printf ("\tput_byte(m68k_areg(regs, dstreg),((val >> 4) & 0xf0) | (val & 0xf));\n"); } break; case i_UNPK: if (curi->smode == Dreg) { printf ("\tuae_u16 val = m68k_dreg(regs, srcreg);\n"); printf ("\tval = (((val << 4) & 0xf00) | (val & 0xf)) + %s;\n", gen_nextiword (0)); printf ("\tm68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & 0xffff0000) | (val & 0xffff);\n"); } else { printf ("\tuae_u16 val;\n"); printf ("\tm68k_areg(regs, srcreg) -= areg_byteinc[srcreg];\n"); printf ("\tval = (uae_u16)get_byte(m68k_areg(regs, srcreg));\n"); printf ("\tval = (((val << 4) & 0xf00) | (val & 0xf)) + %s;\n", gen_nextiword (0)); printf ("\tm68k_areg(regs, dstreg) -= areg_byteinc[dstreg];\n"); printf ("\tput_byte(m68k_areg(regs, dstreg),val);\n"); printf ("\tm68k_areg(regs, dstreg) -= areg_byteinc[dstreg];\n"); printf ("\tput_byte(m68k_areg(regs, dstreg),val >> 8);\n"); } break; case i_TAS: genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0); genflags (flag_logical, curi->size, "src", "", ""); if (!isreg (curi->smode)) tmpc += 2; fill_prefetch_next_delay (tmpc); printf ("\tsrc |= 0x80;\n"); genastore ("src", curi->smode, "srcreg", curi->size, "src"); break; case i_FPP: genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); sync_m68k_pc (); printf ("\tfpp_opp(opcode,extra);\n"); break; case i_FDBcc: genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); sync_m68k_pc (); printf ("\tfdbcc_opp(opcode,extra);\n"); break; case i_FScc: genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); sync_m68k_pc (); printf ("\tfscc_opp(opcode,extra);\n"); break; case i_FTRAPcc: sync_m68k_pc (); start_brace (); printf ("\tuaecptr oldpc = m68k_getpc();\n"); if (curi->smode != am_unknown && curi->smode != am_illg) genamode (curi->smode, "srcreg", curi->size, "dummy", 1, 0, 0); sync_m68k_pc (); printf ("\tftrapcc_opp(opcode,oldpc);\n"); break; case i_FBcc: sync_m68k_pc (); start_brace (); printf ("\tuaecptr pc = m68k_getpc();\n"); genamode (curi->dmode, "srcreg", curi->size, "extra", 1, 0, 0); sync_m68k_pc (); printf ("\tfbcc_opp(opcode,pc,extra);\n"); break; case i_FSAVE: sync_m68k_pc (); printf ("\tfsave_opp(opcode);\n"); break; case i_FRESTORE: sync_m68k_pc (); printf ("\tfrestore_opp(opcode);\n"); break; case i_CINVL: case i_CINVP: case i_CINVA: case i_CPUSHL: case i_CPUSHP: case i_CPUSHA: break; case i_MOVE16: if ((opcode & 0xfff8) == 0xf620) { /* MOVE16 (Ax)+,(Ay)+ */ printf ("\tuaecptr mems = m68k_areg(regs, srcreg) & ~15, memd;\n"); printf ("\tdstreg = (%s >> 12) & 7;\n", gen_nextiword (0)); printf ("\tmemd = m68k_areg(regs, dstreg) & ~15;\n"); printf ("\tput_long(memd, get_long(mems));\n"); printf ("\tput_long(memd+4, get_long(mems+4));\n"); printf ("\tput_long(memd+8, get_long(mems+8));\n"); printf ("\tput_long(memd+12, get_long(mems+12));\n"); printf ("\tif (srcreg != dstreg)\n"); printf ("\tm68k_areg(regs, srcreg) += 16;\n"); printf ("\tm68k_areg(regs, dstreg) += 16;\n"); } else { /* Other variants */ genamode (curi->smode, "srcreg", curi->size, "mems", 0, 2, 0); genamode (curi->dmode, "dstreg", curi->size, "memd", 0, 2, 0); printf ("\tmemsa &= ~15;\n"); printf ("\tmemda &= ~15;\n"); printf ("\tput_long(memda, get_long(memsa));\n"); printf ("\tput_long(memda+4, get_long(memsa+4));\n"); printf ("\tput_long(memda+8, get_long(memsa+8));\n"); printf ("\tput_long(memda+12, get_long(memsa+12));\n"); if ((opcode & 0xfff8) == 0xf600) printf ("\tm68k_areg(regs, srcreg) += 16;\n"); else if ((opcode & 0xfff8) == 0xf608) printf ("\tm68k_areg(regs, dstreg) += 16;\n"); } break; case i_MMUOP: genamode (curi->smode, "srcreg", curi->size, "extra", 1, 0, 0); sync_m68k_pc (); printf ("\tmmu_op(opcode,extra);\n"); break; default: abort (); break; } finish_braces (); fill_prefetch_finish (); sync_m68k_pc (); did_prefetch = 0; } static void generate_includes (FILE * f) { fprintf (f, "#include \n"); fprintf (f, "#include \"sysdeps.h\"\n"); fprintf (f, "#include \"uconfig.h\"\n"); fprintf (f, "#include \"options.h\"\n"); fprintf (f, "#include \"memory.h\"\n"); /* fprintf (f, "#include \"custom.h\"\n");*/ fprintf (f, "#include \"newcpu.h\"\n"); fprintf (f, "#include \"cpu_prefetch.h\"\n"); fprintf (f, "#include \"cputbl.h\"\n"); fprintf (f, "#define CPUFUNC(x) x##_ff\n" "#ifdef NOFLAGS\n" "#include \"noflags.h\"\n" "#endif\n"); } static int postfix; static void generate_one_opcode (int rp) { int i; uae_u16 smsk, dmsk; long int opcode = opcode_map[rp]; if (table68k[opcode].mnemo == i_ILLG || table68k[opcode].clev > cpu_level) return; for (i = 0; lookuptab[i].name[0]; i++) { if (table68k[opcode].mnemo == lookuptab[i].mnemo) break; } if (table68k[opcode].handler != -1) return; if (opcode_next_clev[rp] != cpu_level) { fprintf (stblfile, "{ CPUFUNC(op_%lx_%d), 0, %ld }, /* %s */\n", opcode, opcode_last_postfix[rp], opcode, lookuptab[i].name); return; } fprintf (stblfile, "{ CPUFUNC(op_%lx_%d), 0, %ld }, /* %s */\n", opcode, postfix, opcode, lookuptab[i].name); fprintf (headerfile, "extern cpuop_func op_%lx_%d_nf;\n", opcode, postfix); fprintf (headerfile, "extern cpuop_func op_%lx_%d_ff;\n", opcode, postfix); printf ("unsigned long REGPARAM2 CPUFUNC(op_%lx_%d)(uae_u32 opcode) /* %s */\n{\n", opcode, postfix, lookuptab[i].name); switch (table68k[opcode].stype) { case 0: smsk = 7; break; case 1: smsk = 255; break; case 2: smsk = 15; break; case 3: smsk = 7; break; case 4: smsk = 7; break; case 5: smsk = 63; break; case 7: smsk = 3; break; default: abort (); } dmsk = 7; next_cpu_level = -1; if (table68k[opcode].suse && table68k[opcode].smode != imm && table68k[opcode].smode != imm0 && table68k[opcode].smode != imm1 && table68k[opcode].smode != imm2 && table68k[opcode].smode != absw && table68k[opcode].smode != absl && table68k[opcode].smode != PC8r && table68k[opcode].smode != PC16) { if (table68k[opcode].spos == -1) { if (((int) table68k[opcode].sreg) >= 128) printf ("\tuae_u32 srcreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].sreg); else printf ("\tuae_u32 srcreg = %d;\n", (int) table68k[opcode].sreg); } else { char source[100]; int pos = table68k[opcode].spos; if (pos) sprintf (source, "((opcode >> %d) & %d)", pos, smsk); else sprintf (source, "(opcode & %d)", smsk); if (table68k[opcode].stype == 3) printf ("\tuae_u32 srcreg = imm8_table[%s];\n", source); else if (table68k[opcode].stype == 1) printf ("\tuae_u32 srcreg = (uae_s32)(uae_s8)%s;\n", source); else printf ("\tuae_u32 srcreg = %s;\n", source); } } if (table68k[opcode].duse /* Yes, the dmode can be imm, in case of LINK or DBcc */ && table68k[opcode].dmode != imm && table68k[opcode].dmode != imm0 && table68k[opcode].dmode != imm1 && table68k[opcode].dmode != imm2 && table68k[opcode].dmode != absw && table68k[opcode].dmode != absl) { if (table68k[opcode].dpos == -1) { if (((int) table68k[opcode].dreg) >= 128) printf ("\tuae_u32 dstreg = (uae_s32)(uae_s8)%d;\n", (int) table68k[opcode].dreg); else printf ("\tuae_u32 dstreg = %d;\n", (int) table68k[opcode].dreg); } else { int pos = table68k[opcode].dpos; #if 0 /* Check that we can do the little endian optimization safely. */ if (pos < 8 && (dmsk >> (8 - pos)) != 0) abort (); #endif if (pos) printf ("\tuae_u32 dstreg = (opcode >> %d) & %d;\n", pos, dmsk); else printf ("\tuae_u32 dstreg = opcode & %d;\n", dmsk); } } need_endlabel = 0; endlabelno++; sprintf (endlabelstr, "endlabel%d", endlabelno); gen_opcode (opcode); if (need_endlabel) printf ("%s: ;\n", endlabelstr); printf ("return %d;\n", insn_n_cycles * CYCLE_UNIT / 2); printf ("}\n"); opcode_next_clev[rp] = next_cpu_level; opcode_last_postfix[rp] = postfix; } static void generate_func (void) { int i, j, rp; using_prefetch = 0; using_exception_3 = 0; for (i = 0; i < 6; i++) { cpu_level = 4 - i; if (i == 5) { cpu_level = 0; using_prefetch = 1; using_exception_3 = 1; for (rp = 0; rp < nr_cpuop_funcs; rp++) opcode_next_clev[rp] = 0; } postfix = i; fprintf (stblfile, "struct cputbl CPUFUNC(op_smalltbl_%d)[] = {\n", postfix); /* sam: this is for people with low memory (eg. me :)) */ printf ("\n" "#if !defined(PART_1) && !defined(PART_2) && " "!defined(PART_3) && !defined(PART_4) && " "!defined(PART_5) && !defined(PART_6) && " "!defined(PART_7) && !defined(PART_8)" "\n" "#define PART_1 1\n" "#define PART_2 1\n" "#define PART_3 1\n" "#define PART_4 1\n" "#define PART_5 1\n" "#define PART_6 1\n" "#define PART_7 1\n" "#define PART_8 1\n" "#endif\n\n"); rp = 0; for(j = 1; j <= 8; ++j) { int k = (j * nr_cpuop_funcs) / 8; printf ("#ifdef PART_%d\n",j); for (; rp < k; rp++) generate_one_opcode (rp); printf ("#endif\n\n"); } fprintf (stblfile, "{ 0, 0, 0 }};\n"); } } int main (int argc, char **argv) { read_table68k (); do_merges (); opcode_map = (int *) xmalloc (sizeof (int) * nr_cpuop_funcs); opcode_last_postfix = (int *) xmalloc (sizeof (int) * nr_cpuop_funcs); opcode_next_clev = (int *) xmalloc (sizeof (int) * nr_cpuop_funcs); counts = (unsigned long *) xmalloc (65536 * sizeof (unsigned long)); read_counts (); /* It would be a lot nicer to put all in one file (we'd also get rid of * cputbl.h that way), but cpuopti can't cope. That could be fixed, but * I don't dare to touch the 68k version. */ headerfile = fopen ("cputbl.h", "wb"); stblfile = fopen ("cpustbl.c", "wb"); freopen ("cpuemu.c", "wb", stdout); generate_includes (stdout); generate_includes (stblfile); generate_func (); free (table68k); return 0; } tiemu-3.03-nogdb+dfsg/src/core/uae/gencpu.dsp000066400000000000000000000107741220314353500210610ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="gencpu" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=gencpu - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "gencpu.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "gencpu.mak" CFG="gencpu - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "gencpu - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "gencpu - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "gencpu - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "__WIN32__" /YX /FD /c # ADD BASE RSC /l 0x40c /d "NDEBUG" # ADD RSC /l 0x40c /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"gencpu.exe" # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Desc=Generating CPU tables... PostBuild_Cmds=gencpu.exe # End Special Build Tool !ELSEIF "$(CFG)" == "gencpu - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "gencpu___Win32_Debug" # PROP BASE Intermediate_Dir "gencpu___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "__WIN32__" /YX /FD /GZ /c # ADD BASE RSC /l 0x40c /d "_DEBUG" # ADD RSC /l 0x40c /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"gencpu.exe" /pdbtype:sept # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Cmds=gencpu.exe # End Special Build Tool !ENDIF # Begin Target # Name "gencpu - Win32 Release" # Name "gencpu - Win32 Debug" # Begin Source File SOURCE=.\cpudefs.c # End Source File # Begin Source File SOURCE=.\gencpu.c # End Source File # Begin Source File SOURCE=.\missing.c # End Source File # Begin Source File SOURCE=.\readcpu.c # End Source File # Begin Source File SOURCE=.\xmalloc.c # End Source File # End Target # End Project tiemu-3.03-nogdb+dfsg/src/core/uae/libuae.dsp000066400000000000000000000075131220314353500210360ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="libuae" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=libuae - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "libuae.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "libuae.mak" CFG="libuae - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "libuae - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "libuae - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "libuae - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /w /W0 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "__WIN32__" /D "BUILD_UAE" /YX /FD /c # ADD BASE RSC /l 0x40c /d "NDEBUG" # ADD RSC /l 0x40c /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"libuae.lib" !ELSEIF "$(CFG)" == "libuae - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /w /W0 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "__WIN32__" /D "BUILD_UAE" /YX /FD /GZ /c # ADD BASE RSC /l 0x40c /d "_DEBUG" # ADD RSC /l 0x40c /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"libuae.lib" !ENDIF # Begin Target # Name "libuae - Win32 Release" # Name "libuae - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\cpudefs.c # End Source File # Begin Source File SOURCE=.\cpuemu.c # End Source File # Begin Source File SOURCE=.\cpustbl.c # End Source File # Begin Source File SOURCE=.\fpp.c # End Source File # Begin Source File SOURCE=.\missing.c # End Source File # Begin Source File SOURCE=.\readcpu.c # End Source File # Begin Source File SOURCE=.\xmalloc.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\compiler.h # End Source File # Begin Source File SOURCE=.\cputbl.h # End Source File # Begin Source File SOURCE=.\libuae.h # End Source File # Begin Source File SOURCE=.\memory.h # End Source File # Begin Source File SOURCE=.\newcpu.h # End Source File # Begin Source File SOURCE=.\options.h # End Source File # Begin Source File SOURCE=.\readcpu.h # End Source File # Begin Source File SOURCE=.\sysconfig.h # End Source File # Begin Source File SOURCE=.\sysdeps.h # End Source File # Begin Source File SOURCE=.\uconfig.h # End Source File # End Group # End Target # End Project tiemu-3.03-nogdb+dfsg/src/core/uae/libuae.h000066400000000000000000000025511220314353500204740ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: libuae.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __UAE_H__ #define __UAE_H__ #include "sysdeps.h" #include "uconfig.h" #include "options.h" #include "memory.h" #include "newcpu.h" /* Backwards compatibility */ #define curriword() (regs.ir) #define get_iword_prefetch(o) (o?get_iword(o):regs.ir) #define fill_prefetch_0 fill_prefetch_slow #endif tiemu-3.03-nogdb+dfsg/src/core/uae/machdep/000077500000000000000000000000001220314353500204605ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/core/uae/machdep/m68k.h000066400000000000000000000024411220314353500214170ustar00rootroot00000000000000 /* * UAE - The Un*x Amiga Emulator * * MC68000 emulation - machine dependent bits * * Copyright 1996 Bernd Schmidt * $Id: m68k.h 1695 2005-08-26 21:05:37Z kevinkofler $ */ #define regflags regs.flags #define ZFLG (regflags.z) #define NFLG (regflags.n) #define CFLG (regflags.c) #define VFLG (regflags.v) #define XFLG (regflags.x) static __inline__ int cctrue(const int cc) { switch(cc){ case 0: return 1; /* T */ case 1: return 0; /* F */ case 2: return !CFLG && !ZFLG; /* HI */ case 3: return CFLG || ZFLG; /* LS */ case 4: return !CFLG; /* CC */ case 5: return CFLG; /* CS */ case 6: return !ZFLG; /* NE */ case 7: return ZFLG; /* EQ */ case 8: return !VFLG; /* VC */ case 9: return VFLG; /* VS */ case 10:return !NFLG; /* PL */ case 11:return NFLG; /* MI */ case 12:return NFLG == VFLG; /* GE */ case 13:return NFLG != VFLG; /* LT */ case 14:return !ZFLG && (NFLG == VFLG); /* GT */ case 15:return ZFLG || (NFLG != VFLG); /* LE */ } // abort(); return 0; } tiemu-3.03-nogdb+dfsg/src/core/uae/machdep/maccess.h000066400000000000000000000021751220314353500222540ustar00rootroot00000000000000 /* * UAE - The Un*x Amiga Emulator * * Memory access functions * * Copyright 1996 Bernd Schmidt * $Id: maccess.h 1695 2005-08-26 21:05:37Z kevinkofler $ */ static __inline__ uae_u32 do_get_mem_long(uae_u32 *a) { uae_u8 *b = (uae_u8 *)a; return (*b << 24) | (*(b+1) << 16) | (*(b+2) << 8) | (*(b+3)); } static __inline__ uae_u16 do_get_mem_word(uae_u16 *a) { uae_u8 *b = (uae_u8 *)a; return (*b << 8) | (*(b+1)); } static __inline__ uae_u8 do_get_mem_byte(uae_u8 *a) { return *a; } static __inline__ void do_put_mem_long(uae_u32 *a, uae_u32 v) { uae_u8 *b = (uae_u8 *)a; *b = (uae_u8)(v >> 24); *(b+1) = (uae_u8)(v >> 16); *(b+2) = (uae_u8)(v >> 8); *(b+3) = (uae_u8)(v); } static __inline__ void do_put_mem_word(uae_u16 *a, uae_u16 v) { uae_u8 *b = (uae_u8 *)a; *b = v >> 8; *(b+1) = (uae_u8)(v); } static __inline__ void do_put_mem_byte(uae_u8 *a, uae_u8 v) { *a = v; } #define call_mem_get_func(func, addr) ((*func)(addr)) #define call_mem_put_func(func, addr, v) ((*func)(addr, v)) #undef NO_INLINE_MEMORY_ACCESS #undef MD_HAVE_MEM_1_FUNCS tiemu-3.03-nogdb+dfsg/src/core/uae/memory.h000066400000000000000000000015331220314353500205420ustar00rootroot00000000000000 /* * UAE - The Un*x Amiga Emulator * * memory management - reimplementation for TiEmu * * TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * $Id: memory.h 2268 2006-11-06 17:18:51Z roms $ */ #ifndef BUILD_UAE #include "../ti_hw/mem.h" #endif //wrappers #define get_byte(addr) hw_get_byte(addr) #define get_word(addr) hw_get_word(addr) #define get_long(addr) hw_get_long(addr) #define put_long(adr, arg) hw_put_long(adr, arg) #define put_word(adr, arg) hw_put_word(adr, arg) #define put_byte(adr, arg) hw_put_byte(adr, arg) #define get_real_address(addr) hw_get_real_address(addr) #define valid_address(addr, size) 1 tiemu-3.03-nogdb+dfsg/src/core/uae/missing.c000066400000000000000000000007701220314353500207000ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: missing.c 1693 2005-08-25 14:29:36Z roms $ */ /* * UAE - The Un*x Amiga Emulator * * Various stuff missing in some OSes. * * Copyright 1997 Bernd Schmidt */ #include #include #include "sysdeps.h" #ifndef HAVE_STRDUP char *my_strdup (const char *s) { /* The casts to char * are there to shut up the compiler on HPUX */ char *x = (char*)xmalloc(strlen((char *)s) + 1); strcpy(x, (char *)s); return x; } #endif tiemu-3.03-nogdb+dfsg/src/core/uae/newcpu.c000066400000000000000000001457171220314353500205430ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: newcpu.c 2783 2008-05-25 13:08:41Z roms $ */ /* * UAE - The Un*x Amiga Emulator * * MC68000 emulation * * (c) 1995 Bernd Schmidt */ #include #include #include #include #include "sysconfig.h" #include "sysdeps.h" #include "uconfig.h" #include "options.h" #include "memory.h" #include "newcpu.h" // tiemu begin #include "tilibs.h" #include "ti68k_def.h" #include "bkpts.h" #define write_log printf static const struct uae_prefs currprefs = {0, 1, 1}; #if defined(CYGNUS_SIM) && !defined(NO_GDB) extern const char *symfile; #endif /* CYGNUS_SIM */ #define FLOATFORMAT_H /* don't include glib.h in romcalls.h */ // tiemu end /* Opcode of faulting instruction */ static uae_u16 last_op_for_exception_3; /* PC at fault time */ static uaecptr last_addr_for_exception_3; /* Address that generated the exception */ static uaecptr last_fault_for_exception_3; /* read (0) or write (1) access */ static int last_writeaccess_for_exception_3; /* instruction (1) or data (0) access */ static int last_instructionaccess_for_exception_3; int areg_byteinc[] = { 1,1,1,1,1,1,1,2 }; int imm8_table[] = { 8,1,2,3,4,5,6,7 }; int movem_index1[256]; int movem_index2[256]; int movem_next[256]; int fpp_movem_index1[256]; int fpp_movem_index2[256]; int fpp_movem_next[256]; cpuop_func *cpufunctbl[65536]; #define COUNT_INSTRS 0 #if COUNT_INSTRS static unsigned long int instrcount[65536]; static uae_u16 opcodenums[65536]; static int compfn (const void *el1, const void *el2) { return instrcount[*(const uae_u16 *)el1] < instrcount[*(const uae_u16 *)el2]; } static char *icountfilename (void) { char *name = getenv ("INSNCOUNT"); if (name) return name; return COUNT_INSTRS == 2 ? "frequent.68k" : "insncount"; } void dump_counts (void) { FILE *f = fopen (icountfilename (), "w"); unsigned long int total; int i; write_log ("Writing instruction count file...\n"); for (i = 0; i < 65536; i++) { opcodenums[i] = i; total += instrcount[i]; } qsort (opcodenums, 65536, sizeof(uae_u16), compfn); fprintf (f, "Total: %lu\n", total); for (i=0; i < 65536; i++) { unsigned long int cnt = instrcount[opcodenums[i]]; struct instr *dp; struct mnemolookup *lookup; if (!cnt) break; dp = table68k + opcodenums[i]; for (lookup = lookuptab;lookup->mnemo != dp->mnemo; lookup++) ; fprintf (f, "%04x: %lu %s\n", opcodenums[i], cnt, lookup->name); } fclose (f); } #else void dump_counts (void) { } #endif int currIntLev = -1; int broken_in; int delayTime = 0; static unsigned long op_illg_1 (uae_u32 opcode) REGPARAM; static unsigned long REGPARAM2 op_illg_1 (uae_u32 opcode) { op_illg (opcode); return 4; } static void build_cpufunctbl (void) { int i; unsigned long opcode; struct cputbl *tbl = (currprefs.cpu_level == 4 ? op_smalltbl_0_ff : currprefs.cpu_level == 3 ? op_smalltbl_1_ff : currprefs.cpu_level == 2 ? op_smalltbl_2_ff : currprefs.cpu_level == 1 ? op_smalltbl_3_ff : op_smalltbl_5_ff); write_log ("UAE: Building CPU function table (%d %d).\n", currprefs.cpu_level, currprefs.address_space_24); for (opcode = 0; opcode < 65536; opcode++) cpufunctbl[opcode] = op_illg_1; for (i = 0; tbl[i].handler != NULL; i++) { if (! tbl[i].specific) cpufunctbl[tbl[i].opcode] = tbl[i].handler; } for (opcode = 0; opcode < 65536; opcode++) { cpuop_func *f; if (table68k[opcode].mnemo == i_ILLG || table68k[opcode].clev > currprefs.cpu_level) continue; if (table68k[opcode].handler != -1) { f = cpufunctbl[table68k[opcode].handler]; if (f == op_illg_1) abort(); cpufunctbl[opcode] = f; } } for (i = 0; tbl[i].handler != NULL; i++) { if (tbl[i].specific) cpufunctbl[tbl[i].opcode] = tbl[i].handler; } } void fill_prefetch_slow (void) { #ifdef CPUEMU_6 if (currprefs.cpu_cycle_exact) { regs.ir = get_word_ce (m68k_getpc ()); regs.irc = get_word_ce (m68k_getpc () + 2); } else { #endif regs.ir = get_word (m68k_getpc ()); regs.irc = get_word (m68k_getpc () + 2); #ifdef CPUEMU_6 } #endif } #if 0 unsigned long cycles_mask, cycles_val; static void update_68k_cycles (void) { cycles_mask = 0; cycles_val = currprefs.m68k_speed; if (currprefs.m68k_speed < 1) { cycles_mask = 0xFFFFFFFF; cycles_val = 0; } } void check_prefs_changed_cpu (void) { if (currprefs.m68k_speed != changed_prefs.m68k_speed) { currprefs.m68k_speed = changed_prefs.m68k_speed; reset_frame_rate_hack (); update_68k_cycles (); } } #endif void init_m68k (void) { int i; printf ("UAE: version 0.8.25\n"); // update_68k_cycles (); for (i = 0 ; i < 256 ; i++) { int j; for (j = 0 ; j < 8 ; j++) { if (i & (1 << j)) break; } movem_index1[i] = j; movem_index2[i] = 7-j; movem_next[i] = i & (~(1 << j)); } for (i = 0 ; i < 256 ; i++) { int j; for (j = 7 ; j >= 0 ; j--) { if (i & (1 << j)) break; } fpp_movem_index1[i] = 7-j; fpp_movem_index2[i] = j; fpp_movem_next[i] = i & (~(1 << j)); } #if COUNT_INSTRS { FILE *f = fopen (icountfilename (), "r"); memset (instrcount, 0, sizeof instrcount); if (f) { uae_u32 opcode, count, total; char name[20]; write_log ("Reading instruction count file...\n"); fscanf (f, "Total: %lu\n", &total); while (fscanf (f, "%lx: %lu %s\n", &opcode, &count, name) == 3) { instrcount[opcode] = count; } fclose(f); } } #endif write_log ("UAE: Building CPU table for configuration: 68"); regs.address_space_mask = 0xffffffff; if (currprefs.address_space_24 && currprefs.cpu_level > 1) write_log ("EC"); switch (currprefs.cpu_level) { case 1: write_log ("010"); break; case 2: write_log ("020"); break; case 3: write_log ("020/881"); break; case 4: /* Who is going to miss the MMU anyway...? :-) */ write_log ("040"); break; default: write_log ("000"); break; } if (currprefs.address_space_24) { regs.address_space_mask = 0x00ffffff; write_log (" 24-bit addressing"); } write_log ("\n"); read_table68k (); do_merges (); write_log ("UAE: %d CPU functions\n", nr_cpuop_funcs); build_cpufunctbl (); } struct regstruct regs, lastint_regs; #ifndef NO_GDB static struct regstruct regs_backup[16]; static int backup_pointer = 0; #endif /* 0 */ #ifdef NO_GDB static long int m68kpc_offset; #endif /* NO_GDB */ int lastint_no; #define get_ibyte_1(o) get_byte(regs.pc + (regs.pc_p - regs.pc_oldp) + (o) + 1) #define get_iword_1(o) get_word(regs.pc + (regs.pc_p - regs.pc_oldp) + (o)) #define get_ilong_1(o) get_long(regs.pc + (regs.pc_p - regs.pc_oldp) + (o)) #ifdef NO_GDB #ifdef __WIN32__ #define snprintf _snprintf #endif char *sym_addr(uae_u32 addr) { static char buf[256]; int rcid = romcalls_is_addr(addr); if(rcid == -1) snprintf(buf, sizeof(buf), "$%06lX", (unsigned long)addr); else snprintf(buf, sizeof(buf), "$%06lX -> tios::%s", (unsigned long)addr, romcalls_get_name(rcid)); return buf; } uae_s32 ShowEA (FILE *f, int reg, amodes mode, wordsizes size, char *buf) { uae_u16 dp; uae_s8 disp8; uae_s16 disp16; int r; uae_u32 dispreg; uaecptr addr; uae_s32 offset = 0; char buffer[296]; switch (mode){ case Dreg: sprintf (buffer,"D%d", reg); break; case Areg: sprintf (buffer,"A%d", reg); break; case Aind: sprintf (buffer,"(A%d)", reg); break; case Aipi: sprintf (buffer,"(A%d)+", reg); break; case Apdi: sprintf (buffer,"-(A%d)", reg); break; case Ad16: disp16 = get_iword_1 (m68kpc_offset); m68kpc_offset += 2; addr = m68k_areg(regs,reg) + (uae_s16)disp16; if (disp16 & 0x8000) sprintf (buffer,"(-$%X,A%d) [%s]", (-(uae_s16)(disp16)) & 0xffff, reg, sym_addr ((uae_u32)addr)); else sprintf (buffer,"(+$%X,A%d) [%s]", disp16 & 0xffff, reg, sym_addr ((uae_u32)addr)); break; case Ad8r: dp = get_iword_1 (m68kpc_offset); m68kpc_offset += 2; disp8 = dp & 0xFF; r = (dp & 0x7000) >> 12; dispreg = dp & 0x8000 ? m68k_areg(regs,r) : m68k_dreg(regs,r); if (!(dp & 0x800)) dispreg = (uae_s32)(uae_s16)(dispreg); dispreg <<= (dp >> 9) & 3; if (dp & 0x100) { uae_s32 outer = 0, disp = 0; uae_s32 base = m68k_areg(regs,reg); char name[10]; sprintf (name,"A%d, ",reg); if (dp & 0x80) { base = 0; name[0] = 0; } if (dp & 0x40) dispreg = 0; if ((dp & 0x30) == 0x20) { disp = (uae_s32)(uae_s16)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; } if ((dp & 0x30) == 0x30) { disp = get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; } base += disp; if ((dp & 0x3) == 0x2) { outer = (uae_s32)(uae_s16)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; } if ((dp & 0x3) == 0x3) { outer = get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; } if (!(dp & 4)) base += dispreg; if (dp & 3) base = get_long (base); if (dp & 4) base += dispreg; addr = base + outer; sprintf (buffer,"(%s%c%d.%c+%ld)+%ld [$%06lX]", name, dp & 0x8000 ? 'A' : 'D', (int)r, dp & 0x800 ? 'L' : 'W', disp,outer, (unsigned long)addr); } else { addr = m68k_areg(regs,reg) + (uae_s32)((uae_s8)disp8) + dispreg; sprintf (buffer,"(A%d, %c%d.%c, $%02X) [$%06lX]", reg, dp & 0x8000 ? 'A' : 'D', (int)r, dp & 0x800 ? 'L' : 'W', disp8, (unsigned long)addr); } break; case PC16: addr = m68k_getpc () + m68kpc_offset; disp16 = get_iword_1 (m68kpc_offset); m68kpc_offset += 2; addr += (uae_s16)disp16; if (disp16 & 0x8000) sprintf (buffer,"(-$%X,PC) [%s]", (-(uae_s16)(disp16)) & 0xffff, sym_addr ((uae_u32)addr)); else sprintf (buffer,"(+$%X,PC) [%s]", disp16 & 0xffff, sym_addr ((uae_u32)addr)); break; case PC8r: addr = m68k_getpc () + m68kpc_offset; dp = get_iword_1 (m68kpc_offset); m68kpc_offset += 2; disp8 = dp & 0xFF; r = (dp & 0x7000) >> 12; dispreg = dp & 0x8000 ? m68k_areg(regs,r) : m68k_dreg(regs,r); if (!(dp & 0x800)) dispreg = (uae_s32)(uae_s16)(dispreg); dispreg <<= (dp >> 9) & 3; if (dp & 0x100) { uae_s32 outer = 0,disp = 0; uae_s32 base = addr; char name[10]; sprintf (name,"PC, "); if (dp & 0x80) { base = 0; name[0] = 0; } if (dp & 0x40) dispreg = 0; if ((dp & 0x30) == 0x20) { disp = (uae_s32)(uae_s16)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; } if ((dp & 0x30) == 0x30) { disp = get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; } base += disp; if ((dp & 0x3) == 0x2) { outer = (uae_s32)(uae_s16)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; } if ((dp & 0x3) == 0x3) { outer = get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; } if (!(dp & 4)) base += dispreg; if (dp & 3) base = get_long (base); if (dp & 4) base += dispreg; addr = base + outer; sprintf (buffer,"(%s%c%d.%c+%ld)+%ld [%s]", name, dp & 0x8000 ? 'A' : 'D', (int)r, dp & 0x800 ? 'L' : 'W', disp,outer, sym_addr ((uae_u32)addr)); } else { addr += (uae_s32)((uae_s8)disp8) + dispreg; sprintf (buffer,"(PC, %c%d.%c, $%02X) [%s]", dp & 0x8000 ? 'A' : 'D', (int)r, dp & 0x800 ? 'L' : 'W', disp8, sym_addr ((uae_u32)addr)); } break; case absw: sprintf (buffer,"$%lX", (unsigned long)(uae_s32)(uae_s16)get_iword_1 (m68kpc_offset)); m68kpc_offset += 2; break; case absl: sprintf (buffer,"%s", sym_addr ((uae_u32)get_ilong_1 (m68kpc_offset))); m68kpc_offset += 4; break; case imm: switch (size){ case sz_byte: sprintf (buffer,"#$%X", (unsigned int)(get_iword_1 (m68kpc_offset) & 0xff)); m68kpc_offset += 2; break; case sz_word: sprintf (buffer,"#$%X", (unsigned int)(get_iword_1 (m68kpc_offset) & 0xffff)); m68kpc_offset += 2; break; case sz_long: sprintf (buffer,"#$%lX", (unsigned long)(get_ilong_1 (m68kpc_offset))); m68kpc_offset += 4; break; default: break; } break; case imm0: offset = (uae_s32)(uae_s8)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; sprintf (buffer,"#$%X", (unsigned int)(offset & 0xff)); break; case imm1: offset = (uae_s32)(uae_s16)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; sprintf (buffer,"#$%X", (unsigned int)(offset & 0xffff)); break; case imm2: offset = (uae_s32)get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; sprintf (buffer,"#$%lX", (unsigned long)offset); break; case immi: offset = (uae_s32)(uae_s8)(reg & 0xff); sprintf (buffer,"#$%lX", (unsigned long)offset); break; default: break; } if (buf == 0) fprintf (f, "%s", buffer); else strcat (buf, buffer); return offset; } #endif /* NO_GDB */ #if 0 /* The plan is that this will take over the job of exception 3 handling - * the CPU emulation functions will just do a longjmp to m68k_go whenever * they hit an odd address. */ static int verify_ea (int reg, amodes mode, wordsizes size, uae_u32 *val) { uae_u16 dp; uae_s8 disp8; uae_s16 disp16; int r; uae_u32 dispreg; uaecptr addr; switch (mode){ case Dreg: *val = m68k_dreg (regs, reg); return 1; case Areg: *val = m68k_areg (regs, reg); return 1; case Aind: case Aipi: addr = m68k_areg (regs, reg); break; case Apdi: addr = m68k_areg (regs, reg); break; case Ad16: disp16 = get_iword_1 (m68kpc_offset); m68kpc_offset += 2; addr = m68k_areg(regs,reg) + (uae_s16)disp16; break; case Ad8r: addr = m68k_areg (regs, reg); d8r_common: dp = get_iword_1 (m68kpc_offset); m68kpc_offset += 2; disp8 = dp & 0xFF; r = (dp & 0x7000) >> 12; dispreg = dp & 0x8000 ? m68k_areg(regs,r) : m68k_dreg(regs,r); if (!(dp & 0x800)) dispreg = (uae_s32)(uae_s16)(dispreg); dispreg <<= (dp >> 9) & 3; if (dp & 0x100) { uae_s32 outer = 0, disp = 0; uae_s32 base = addr; if (dp & 0x80) base = 0; if (dp & 0x40) dispreg = 0; if ((dp & 0x30) == 0x20) { disp = (uae_s32)(uae_s16)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; } if ((dp & 0x30) == 0x30) { disp = get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; } base += disp; if ((dp & 0x3) == 0x2) { outer = (uae_s32)(uae_s16)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; } if ((dp & 0x3) == 0x3) { outer = get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; } if (!(dp & 4)) base += dispreg; if (dp & 3) base = get_long (base); if (dp & 4) base += dispreg; addr = base + outer; } else { addr += (uae_s32)((uae_s8)disp8) + dispreg; } break; case PC16: addr = m68k_getpc () + m68kpc_offset; disp16 = get_iword_1 (m68kpc_offset); m68kpc_offset += 2; addr += (uae_s16)disp16; break; case PC8r: addr = m68k_getpc () + m68kpc_offset; goto d8r_common; case absw: addr = (uae_s32)(uae_s16)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; break; case absl: addr = get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; break; case imm: switch (size){ case sz_byte: *val = get_iword_1 (m68kpc_offset) & 0xff; m68kpc_offset += 2; break; case sz_word: *val = get_iword_1 (m68kpc_offset) & 0xffff; m68kpc_offset += 2; break; case sz_long: *val = get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; break; default: break; } return 1; case imm0: *val = (uae_s32)(uae_s8)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; return 1; case imm1: *val = (uae_s32)(uae_s16)get_iword_1 (m68kpc_offset); m68kpc_offset += 2; return 1; case imm2: *val = get_ilong_1 (m68kpc_offset); m68kpc_offset += 4; return 1; case immi: *val = (uae_s32)(uae_s8)(reg & 0xff); return 1; default: addr = 0; break; } if ((addr & 1) == 0) return 1; last_addr_for_exception_3 = m68k_getpc () + m68kpc_offset; last_fault_for_exception_3 = addr; last_writeaccess_for_exception_3 = 0; last_instructionaccess_for_exception_3 = 0; return 0; } #endif /* 0 */ uae_u32 get_disp_ea_020 (uae_u32 base, uae_u32 dp) { int reg = (dp >> 12) & 15; uae_s32 regd = regs.regs[reg]; if ((dp & 0x800) == 0) regd = (uae_s32)(uae_s16)regd; regd <<= (dp >> 9) & 3; if (dp & 0x100) { uae_s32 outer = 0; if (dp & 0x80) base = 0; if (dp & 0x40) regd = 0; if ((dp & 0x30) == 0x20) base += (uae_s32)(uae_s16)next_iword(); if ((dp & 0x30) == 0x30) base += next_ilong(); if ((dp & 0x3) == 0x2) outer = (uae_s32)(uae_s16)next_iword(); if ((dp & 0x3) == 0x3) outer = next_ilong(); if ((dp & 0x4) == 0) base += regd; if (dp & 0x3) base = get_long (base); if (dp & 0x4) base += regd; return base + outer; } else { return base + (uae_s32)((uae_s8)dp) + regd; } } uae_u32 get_disp_ea_000 (uae_u32 base, uae_u32 dp) { int reg = (dp >> 12) & 15; uae_s32 regd = regs.regs[reg]; #if 1 if ((dp & 0x800) == 0) regd = (uae_s32)(uae_s16)regd; return base + (uae_s8)dp + regd; #else /* Branch-free code... benchmark this again now that * things are no longer inline. */ uae_s32 regd16; uae_u32 mask; mask = ((dp & 0x800) >> 11) - 1; regd16 = (uae_s32)(uae_s16)regd; regd16 &= mask; mask = ~mask; base += (uae_s8)dp; regd &= mask; regd |= regd16; return base + regd; #endif } void MakeSR (void) { #if 0 assert((regs.t1 & 1) == regs.t1); assert((regs.t0 & 1) == regs.t0); assert((regs.s & 1) == regs.s); assert((regs.m & 1) == regs.m); assert((XFLG & 1) == XFLG); assert((NFLG & 1) == NFLG); assert((ZFLG & 1) == ZFLG); assert((VFLG & 1) == VFLG); assert((CFLG & 1) == CFLG); #endif regs.sr = ((regs.t1 << 15) /*| (regs.t0 << 14)*/ | (regs.s << 13) /*| (regs.m << 12)*/ | (regs.intmask << 8) | (GET_XFLG << 4) | (GET_NFLG << 3) | (GET_ZFLG << 2) | (GET_VFLG << 1) | GET_CFLG); } void MakeFromSR (void) { // int oldm = regs.m; int olds = regs.s; regs.t1 = (regs.sr >> 15) & 1; // regs.t0 = (regs.sr >> 14) & 1; regs.s = (regs.sr >> 13) & 1; // regs.m = (regs.sr >> 12) & 1; regs.intmask = (regs.sr >> 8) & 7; SET_XFLG ((regs.sr >> 4) & 1); SET_NFLG ((regs.sr >> 3) & 1); SET_ZFLG ((regs.sr >> 2) & 1); SET_VFLG ((regs.sr >> 1) & 1); SET_CFLG (regs.sr & 1); #if 0 if (currprefs.cpu_level >= 2) { if (olds != regs.s) { if (olds) { if (oldm) regs.msp = m68k_areg(regs, 7); else regs.isp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.usp; } else { regs.usp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.m ? regs.msp : regs.isp; } } else if (olds && oldm != regs.m) { if (oldm) { regs.msp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.isp; } else { regs.isp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.msp; } } } else { #endif if (olds != regs.s) { if (olds) { regs.isp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.usp; } else { regs.usp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.isp; } } // } set_special (SPCFLAG_INT); if (regs.t1 /*|| regs.t0*/) set_special (SPCFLAG_TRACE); else /* Keep SPCFLAG_DOTRACE, we still want a trace exception for SR-modifying instructions (including STOP). */ unset_special (SPCFLAG_TRACE); } int intlev(void) { int rc = currIntLev; currIntLev = -1; return rc; } static void exception_trace (int nr) { unset_special (SPCFLAG_TRACE | SPCFLAG_DOTRACE); if (regs.t1 /*&& !regs.t0*/) { /* trace stays pending if exception is div by zero, chk, * trapv or trap #x */ if (nr == 5 || nr == 6 || nr == 7 || (nr >= 32 && nr <= 47)) set_special (SPCFLAG_DOTRACE); } regs.t1 /*= regs.t0 = regs.m*/ = 0; } #if 0 static void exception_debug (int nr) { #ifdef DEBUGGER if (!exception_debugging) return; console_out ("Exception %d, PC=%08.8X\n", nr, m68k_getpc()); #endif } #endif /* 0 */ void Exception_normal (int nr, uaecptr oldpc) { GList *l; uae_u32 currpc = m68k_getpc (), newpc; int sv = regs.s; // exception_debug (nr); MakeSR(); if (!regs.s) { regs.usp = m68k_areg(regs, 7); #if 0 if (currprefs.cpu_level >= 2) m68k_areg(regs, 7) = regs.m ? regs.msp : regs.isp; else #endif /* 0 */ m68k_areg(regs, 7) = regs.isp; regs.s = 1; } #if 0 if (currprefs.cpu_level > 0) { if (nr == 2 || nr == 3) { int i; if (currprefs.cpu_level >= 4) { /* 68040 */ if (nr == 2) { for (i = 0 ; i < 18 ; i++) { m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0); } m68k_areg(regs, 7) -= 4; put_long (m68k_areg(regs, 7), last_fault_for_exception_3); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0x0140 | (sv ? 6 : 2)); /* SSW */ m68k_areg(regs, 7) -= 4; put_long (m68k_areg(regs, 7), last_addr_for_exception_3); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0x7000 + nr * 4); } else { m68k_areg(regs, 7) -= 4; put_long (m68k_areg(regs, 7), last_fault_for_exception_3); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0x2000 + nr * 4); } } else { uae_u16 ssw = (sv ? 4 : 0) | (last_instructionaccess_for_exception_3 ? 2 : 1); ssw |= last_writeaccess_for_exception_3 ? 0 : 0x40; ssw |= 0x20; for (i = 0 ; i < 36; i++) { m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0); } m68k_areg(regs, 7) -= 4; put_long (m68k_areg(regs, 7), last_fault_for_exception_3); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), ssw); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0xb000 + nr * 4); } #if 0 write_log ("Exception %d (%x) at %x -> %x!\n", nr, oldpc, currpc, get_long (regs.vbr + 4*nr)); #endif } else if (nr ==5 || nr == 6 || nr == 7 || nr == 9) { m68k_areg(regs, 7) -= 4; put_long (m68k_areg(regs, 7), oldpc); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0x2000 + nr * 4); } else if (regs.m && nr >= 24 && nr < 32) { /* M + Interrupt */ m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), nr * 4); m68k_areg(regs, 7) -= 4; put_long (m68k_areg(regs, 7), currpc); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), regs.sr); regs.sr |= (1 << 13); regs.msp = m68k_areg(regs, 7); m68k_areg(regs, 7) = regs.isp; m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), 0x1000 + nr * 4); } else { m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), nr * 4); } } else #endif /* 0 */ if (nr == 2 || nr == 3) { uae_u16 mode = (sv ? 4 : 0) | (last_instructionaccess_for_exception_3 ? 2 : 1); mode |= last_writeaccess_for_exception_3 ? 0 : 16; m68k_areg(regs, 7) -= 14; /* fixme: bit3=I/N */ put_word (m68k_areg(regs, 7) + 0, mode); put_long (m68k_areg(regs, 7) + 2, last_fault_for_exception_3); put_word (m68k_areg(regs, 7) + 6, last_op_for_exception_3); put_word (m68k_areg(regs, 7) + 8, regs.sr); put_long (m68k_areg(regs, 7) + 10, last_addr_for_exception_3); // write_log ("Exception %d (%x) at %x -> %x!\n", nr, oldpc, currpc, get_long (regs.vbr + 4*nr)); goto kludge_me_do; } m68k_areg(regs, 7) -= 4; put_long (m68k_areg(regs, 7), currpc); m68k_areg(regs, 7) -= 2; put_word (m68k_areg(regs, 7), regs.sr); kludge_me_do: newpc = get_long (regs.vbr + 4 * nr); if (newpc & 1) { #if 0 if (nr == 2 || nr == 3) uae_reset (1); /* there is nothing else we can do.. */ else #endif /* 0 */ exception3 (regs.ir, m68k_getpc(), newpc); return; } m68k_setpc (newpc); fill_prefetch_slow (); exception_trace (nr); // added for capturing the exception and next launch a debugger if ((l = bkpts.exception) && !(regs.spcflags & SPCFLAG_BRK)) { bkpts.id = 0; while (l) { if (GPOINTER_TO_INT(l->data) == nr) { bkpts.type = BK_CAUSE_EXCEPTION; bkpts.mode = nr; regs.spcflags |= SPCFLAG_BRK; break; } bkpts.id++; l = l->next; } } } void Exception (int nr, uaecptr oldpc) { Exception_normal (nr, oldpc); } int uscycle = 0; void Interrupt(int nr) { regs.stopped = 0; unset_special (SPCFLAG_STOP); assert(nr < 8 && nr >= 0); lastint_regs = regs; lastint_no = nr; Exception (nr + 24, 0); regs.intmask = nr; set_special (SPCFLAG_INT); } static uae_u32 caar, cacr, itt0, itt1, dtt0, dtt1, tc, mmusr, urp, srp; int m68k_move2c (int regno, uae_u32 *regp) { if ((currprefs.cpu_level == 1 && (regno & 0x7FF) > 1) || (currprefs.cpu_level < 4 && (regno & 0x7FF) > 2) || (currprefs.cpu_level == 4 && regno == 0x802)) { op_illg (0x4E7B); return 0; } else { switch (regno) { case 0: regs.sfc = *regp & 7; break; case 1: regs.dfc = *regp & 7; break; case 2: cacr = *regp & (currprefs.cpu_level < 4 ? 0x3 : 0x80008000); break; case 3: tc = *regp & 0xc000; break; /* Mask out fields that should be zero. */ case 4: itt0 = *regp & 0xffffe364; break; case 5: itt1 = *regp & 0xffffe364; break; case 6: dtt0 = *regp & 0xffffe364; break; case 7: dtt1 = *regp & 0xffffe364; break; case 0x800: regs.usp = *regp; break; case 0x801: regs.vbr = *regp; break; case 0x802: caar = *regp & 0xfc; break; // case 0x803: regs.msp = *regp; if (regs.m == 1) m68k_areg(regs, 7) = regs.msp; break; // case 0x804: regs.isp = *regp; if (regs.m == 0) m68k_areg(regs, 7) = regs.isp; break; case 0x805: mmusr = *regp; break; case 0x806: urp = *regp; break; case 0x807: srp = *regp; break; default: op_illg (0x4E7B); return 0; } } return 1; } int m68k_movec2 (int regno, uae_u32 *regp) { if ((currprefs.cpu_level == 1 && (regno & 0x7FF) > 1) || (currprefs.cpu_level < 4 && (regno & 0x7FF) > 2) || (currprefs.cpu_level == 4 && regno == 0x802)) { op_illg (0x4E7A); return 0; } else { switch (regno) { case 0: *regp = regs.sfc; break; case 1: *regp = regs.dfc; break; case 2: *regp = cacr; break; case 3: *regp = tc; break; case 4: *regp = itt0; break; case 5: *regp = itt1; break; case 6: *regp = dtt0; break; case 7: *regp = dtt1; break; case 0x800: *regp = regs.usp; break; case 0x801: *regp = regs.vbr; break; case 0x802: *regp = caar; break; // case 0x803: *regp = regs.m == 1 ? m68k_areg(regs, 7) : regs.msp; break; // case 0x804: *regp = regs.m == 0 ? m68k_areg(regs, 7) : regs.isp; break; case 0x805: *regp = mmusr; break; case 0x806: *regp = urp; break; case 0x807: *regp = srp; break; default: op_illg (0x4E7A); return 0; } } return 1; } STATIC_INLINE int div_unsigned(uae_u32 src_hi, uae_u32 src_lo, uae_u32 div, uae_u32 *quot, uae_u32 *rem) { uae_u32 q = 0, cbit = 0; int i; if (div <= src_hi) { return 1; } for (i = 0 ; i < 32 ; i++) { cbit = src_hi & 0x80000000ul; src_hi <<= 1; if (src_lo & 0x80000000ul) src_hi++; src_lo <<= 1; q = q << 1; if (cbit || div <= src_hi) { q |= 1; src_hi -= div; } } *quot = q; *rem = src_hi; return 0; } void m68k_divl (uae_u32 opcode, uae_u32 src, uae_u16 extra, uaecptr oldpc) { #if defined(uae_s64) if (src == 0) { Exception (5, oldpc); return; } if (extra & 0x800) { /* signed variant */ uae_s64 a = (uae_s64)(uae_s32)m68k_dreg(regs, (extra >> 12) & 7); uae_s64 quot, rem; if (extra & 0x400) { a &= 0xffffffffu; a |= (uae_s64)m68k_dreg(regs, extra & 7) << 32; } rem = a % (uae_s64)(uae_s32)src; quot = a / (uae_s64)(uae_s32)src; if ((quot & UVAL64(0xffffffff80000000)) != 0 && (quot & UVAL64(0xffffffff80000000)) != UVAL64(0xffffffff80000000)) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else { if (((uae_s32)rem < 0) != ((uae_s64)a < 0)) rem = -rem; SET_VFLG (0); SET_CFLG (0); SET_ZFLG (((uae_s32)quot) == 0); SET_NFLG (((uae_s32)quot) < 0); m68k_dreg(regs, extra & 7) = rem; m68k_dreg(regs, (extra >> 12) & 7) = quot; } } else { /* unsigned */ uae_u64 a = (uae_u64)(uae_u32)m68k_dreg(regs, (extra >> 12) & 7); uae_u64 quot, rem; if (extra & 0x400) { a &= 0xffffffffu; a |= (uae_u64)m68k_dreg(regs, extra & 7) << 32; } rem = a % (uae_u64)src; quot = a / (uae_u64)src; if (quot > 0xffffffffu) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else { SET_VFLG (0); SET_CFLG (0); SET_ZFLG (((uae_s32)quot) == 0); SET_NFLG (((uae_s32)quot) < 0); m68k_dreg(regs, extra & 7) = rem; m68k_dreg(regs, (extra >> 12) & 7) = quot; } } #else if (src == 0) { Exception (5, oldpc); return; } if (extra & 0x800) { /* signed variant */ uae_s32 lo = (uae_s32)m68k_dreg(regs, (extra >> 12) & 7); uae_s32 hi = lo < 0 ? -1 : 0; uae_s32 save_high; uae_u32 quot = 0, rem = 0; uae_u32 sign; if (extra & 0x400) { hi = (uae_s32)m68k_dreg(regs, extra & 7); } save_high = hi; sign = (hi ^ src); if (hi < 0) { hi = ~hi; lo = -lo; if (lo == 0) hi++; } if ((uae_s32)src < 0) src = -src; if (div_unsigned(hi, lo, src, ", &rem) || (sign & 0x80000000) ? quot > 0x80000000 : quot > 0x7fffffff) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else { if (sign & 0x80000000) quot = -quot; if (((uae_s32)rem < 0) != (save_high < 0)) rem = -rem; SET_VFLG (0); SET_CFLG (0); SET_ZFLG (((uae_s32)quot) == 0); SET_NFLG (((uae_s32)quot) < 0); m68k_dreg(regs, extra & 7) = rem; m68k_dreg(regs, (extra >> 12) & 7) = quot; } } else { /* unsigned */ uae_u32 lo = (uae_u32)m68k_dreg(regs, (extra >> 12) & 7); uae_u32 hi = 0; uae_u32 quot, rem; if (extra & 0x400) { hi = (uae_u32)m68k_dreg(regs, extra & 7); } if (div_unsigned(hi, lo, src, ", &rem)) { SET_VFLG (1); SET_NFLG (1); SET_CFLG (0); } else { SET_VFLG (0); SET_CFLG (0); SET_ZFLG (((uae_s32)quot) == 0); SET_NFLG (((uae_s32)quot) < 0); m68k_dreg(regs, extra & 7) = rem; m68k_dreg(regs, (extra >> 12) & 7) = quot; } } #endif } STATIC_INLINE void mul_unsigned(uae_u32 src1, uae_u32 src2, uae_u32 *dst_hi, uae_u32 *dst_lo) { uae_u32 r0 = (src1 & 0xffff) * (src2 & 0xffff); uae_u32 r1 = ((src1 >> 16) & 0xffff) * (src2 & 0xffff); uae_u32 r2 = (src1 & 0xffff) * ((src2 >> 16) & 0xffff); uae_u32 r3 = ((src1 >> 16) & 0xffff) * ((src2 >> 16) & 0xffff); uae_u32 lo; lo = r0 + ((r1 << 16) & 0xffff0000ul); if (lo < r0) r3++; r0 = lo; lo = r0 + ((r2 << 16) & 0xffff0000ul); if (lo < r0) r3++; r3 += ((r1 >> 16) & 0xffff) + ((r2 >> 16) & 0xffff); *dst_lo = lo; *dst_hi = r3; } void m68k_mull (uae_u32 opcode, uae_u32 src, uae_u16 extra) { #if defined(uae_s64) if (extra & 0x800) { /* signed variant */ uae_s64 a = (uae_s64)(uae_s32)m68k_dreg(regs, (extra >> 12) & 7); a *= (uae_s64)(uae_s32)src; SET_VFLG (0); SET_CFLG (0); SET_ZFLG (a == 0); SET_NFLG (a < 0); if (extra & 0x400) m68k_dreg(regs, extra & 7) = a >> 32; else if ((a & UVAL64(0xffffffff80000000)) != 0 && (a & UVAL64(0xffffffff80000000)) != UVAL64(0xffffffff80000000)) { SET_VFLG (1); } m68k_dreg(regs, (extra >> 12) & 7) = (uae_u32)a; } else { /* unsigned */ uae_u64 a = (uae_u64)(uae_u32)m68k_dreg(regs, (extra >> 12) & 7); a *= (uae_u64)src; SET_VFLG (0); SET_CFLG (0); SET_ZFLG (a == 0); SET_NFLG (((uae_s64)a) < 0); if (extra & 0x400) m68k_dreg(regs, extra & 7) = a >> 32; else if ((a & UVAL64(0xffffffff00000000)) != 0) { SET_VFLG (1); } m68k_dreg(regs, (extra >> 12) & 7) = (uae_u32)a; } #else if (extra & 0x800) { /* signed variant */ uae_s32 src1,src2; uae_u32 dst_lo,dst_hi; uae_u32 sign; src1 = (uae_s32)src; src2 = (uae_s32)m68k_dreg(regs, (extra >> 12) & 7); sign = (src1 ^ src2); if (src1 < 0) src1 = -src1; if (src2 < 0) src2 = -src2; mul_unsigned((uae_u32)src1,(uae_u32)src2,&dst_hi,&dst_lo); if (sign & 0x80000000) { dst_hi = ~dst_hi; dst_lo = -dst_lo; if (dst_lo == 0) dst_hi++; } SET_VFLG (0); SET_CFLG (0); SET_ZFLG (dst_hi == 0 && dst_lo == 0); SET_NFLG (((uae_s32)dst_hi) < 0); if (extra & 0x400) m68k_dreg(regs, extra & 7) = dst_hi; else if ((dst_hi != 0 || (dst_lo & 0x80000000) != 0) && ((dst_hi & 0xffffffff) != 0xffffffff || (dst_lo & 0x80000000) != 0x80000000)) { SET_VFLG (1); } m68k_dreg(regs, (extra >> 12) & 7) = dst_lo; } else { /* unsigned */ uae_u32 dst_lo,dst_hi; mul_unsigned(src,(uae_u32)m68k_dreg(regs, (extra >> 12) & 7),&dst_hi,&dst_lo); SET_VFLG (0); SET_CFLG (0); SET_ZFLG (dst_hi == 0 && dst_lo == 0); SET_NFLG (((uae_s32)dst_hi) < 0); if (extra & 0x400) m68k_dreg(regs, extra & 7) = dst_hi; else if (dst_hi != 0) { SET_VFLG (1); } m68k_dreg(regs, (extra >> 12) & 7) = dst_lo; } #endif } #ifdef NO_GDB static char* ccnames[] = { "T","F","HI","LS","CC","CS","NE","EQ", "VC","VS","PL","MI","GE","LT","GT","LE" }; #endif /* NO_GDB */ void m68k_reset (void) { #if 0 /* The CPU is always the same in TiEmu. */ if (currprefs.cpu_level != changed_prefs.cpu_level || currprefs.address_space_24 != changed_prefs.address_space_24) { currprefs.address_space_24 = changed_prefs.address_space_24; currprefs.cpu_level = changed_prefs.cpu_level; build_cpufunctbl (); } #endif /* 0 */ // regs.kick_mask = 0x00F80000; regs.spcflags = 0; #if 0 if (savestate_state == STATE_RESTORE) { m68k_setpc (regs.pc); /* MakeFromSR() must not swap stack pointer */ regs.s = (regs.sr >> 13) & 1; MakeFromSR(); /* set stack pointer */ if (regs.s) m68k_areg(regs, 7) = regs.isp; else m68k_areg(regs, 7) = regs.usp; return; } #endif /* 0 */ m68k_areg (regs, 7) = tihw.initial_ssp; m68k_setpc(tihw.initial_pc); regs.s = 1; // regs.m = 0; regs.stopped = 0; regs.t1 = 0; // regs.t0 = 0; SET_ZFLG (0); SET_XFLG (0); SET_CFLG (0); SET_VFLG (0); SET_NFLG (0); regs.intmask = 7; regs.vbr = regs.sfc = regs.dfc = 0; regs.fpcr = regs.fpsr = regs.fpiar = 0; regs.irc = 0xffff; fill_prefetch_slow (); } unsigned long REGPARAM2 op_illg (uae_u32 opcode) { #if 0 uaecptr pc = m68k_getpc (); if (cloanto_rom && (opcode & 0xF100) == 0x7100) { m68k_dreg (regs, (opcode >> 9) & 7) = (uae_s8)(opcode & 0xFF); m68k_incpc (2); fill_prefetch_slow (); return 4; } if (opcode == 0x4E7B && get_long (0x10) == 0 && (pc & 0xF80000) == 0xF80000) { write_log ("Your Kickstart requires a 68020 CPU. Giving up.\n"); broken_in = 1; set_special (SPCFLAG_BRK); quit_program = 1; } if (opcode == 0xFF0D) { if ((pc & 0xF80000) == 0xF80000) { /* This is from the dummy Kickstart replacement */ uae_u16 arg = get_iword (2); m68k_incpc (4); ersatz_perform (arg); fill_prefetch_slow (); return 4; } else if ((pc & 0xFFFF0000) == RTAREA_BASE) { /* User-mode STOP replacement */ m68k_setstopped (1); return 4; } } if ((opcode & 0xF000) == 0xA000 && (pc & 0xFFFF0000) == RTAREA_BASE) { /* Calltrap. */ m68k_incpc(2); call_calltrap (opcode & 0xFFF); fill_prefetch_slow (); return 4; } #endif /* 0 */ if ((opcode & 0xF000) == 0xF000) { Exception(0xB,0); return 4; } if ((opcode & 0xF000) == 0xA000) { #if 0 if ((pc & 0xFFFF0000) == RTAREA_BASE) { /* Calltrap. */ call_calltrap (opcode & 0xFFF); } #endif /* 0 */ #if defined(CYGNUS_SIM) && !defined(NO_GDB) /* Ignore ER_ASAP_TOO_LONG when running a file to debug. */ if (symfile && opcode == 0xA000 + 161) { m68k_incpc(2); fill_prefetch_slow (); return 4; } #endif /* CYGNUS_SIM */ Exception(0xA,0); return 4; } #if 0 write_log ("Illegal instruction: %04x at %08lx\n", opcode, pc); #endif Exception (4,0); return 4; } void mmu_op(uae_u32 opcode, uae_u16 extra) { if ((opcode & 0xFE0) == 0x0500) { /* PFLUSH */ mmusr = 0; write_log ("PFLUSH\n"); } else if ((opcode & 0x0FD8) == 0x548) { /* PTEST */ write_log ("PTEST\n"); } else op_illg (opcode); } #if 0 static uaecptr last_trace_ad = 0; static void do_trace (void) { if (0/*regs.t0 && currprefs.cpu_level >= 2*/) { uae_u16 opcode; /* should also include TRAP, CHK, SR modification FPcc */ /* probably never used so why bother */ /* We can afford this to be inefficient... */ m68k_setpc (m68k_getpc ()); fill_prefetch_slow (); opcode = get_word (regs.pc); if (opcode == 0x4e72 /* RTE */ || opcode == 0x4e74 /* RTD */ || opcode == 0x4e75 /* RTS */ || opcode == 0x4e77 /* RTR */ || opcode == 0x4e76 /* TRAPV */ || (opcode & 0xffc0) == 0x4e80 /* JSR */ || (opcode & 0xffc0) == 0x4ec0 /* JMP */ || (opcode & 0xff00) == 0x6100 /* BSR */ || ((opcode & 0xf000) == 0x6000 /* Bcc */ && cctrue((opcode >> 8) & 0xf)) || ((opcode & 0xf0f0) == 0x5050 /* DBcc */ && !cctrue((opcode >> 8) & 0xf) && (uae_s16)m68k_dreg(regs, opcode & 7) != 0)) { last_trace_ad = m68k_getpc (); unset_special (SPCFLAG_TRACE); set_special (SPCFLAG_DOTRACE); } } else if (regs.t1) { last_trace_ad = m68k_getpc (); unset_special (SPCFLAG_TRACE); set_special (SPCFLAG_DOTRACE); } } static int do_specialties (int cycles) { if (regs.spcflags & SPCFLAG_COPPER) do_copper (); /*n_spcinsns++;*/ while ((regs.spcflags & SPCFLAG_BLTNASTY) && cycles > 0) { int c = blitnasty(); if (!c) { cycles -= 2 * CYCLE_UNIT; if (cycles < CYCLE_UNIT) cycles = 0; c = 1; } do_cycles (c * CYCLE_UNIT); if (regs.spcflags & SPCFLAG_COPPER) do_copper (); } if (regs.spcflags & SPCFLAG_DOTRACE) Exception (9,last_trace_ad); while (regs.spcflags & SPCFLAG_STOP) { do_cycles (4 * CYCLE_UNIT); if (regs.spcflags & SPCFLAG_COPPER) do_copper (); if (regs.spcflags & (SPCFLAG_INT | SPCFLAG_DOINT)) { int intr = intlev (); unset_special (SPCFLAG_INT | SPCFLAG_DOINT); if (intr != -1 && intr > regs.intmask) { Interrupt (intr); regs.stopped = 0; unset_special (SPCFLAG_STOP); } } } if (regs.spcflags & SPCFLAG_TRACE) do_trace (); if (regs.spcflags & SPCFLAG_DOINT) { int intr = intlev (); unset_special (SPCFLAG_DOINT); if (intr != -1 && intr > regs.intmask) { Interrupt (intr); regs.stopped = 0; } } if (regs.spcflags & SPCFLAG_INT) { unset_special (SPCFLAG_INT); set_special (SPCFLAG_DOINT); } if (regs.spcflags & (SPCFLAG_BRK | SPCFLAG_MODE_CHANGE)) { unset_special (SPCFLAG_BRK | SPCFLAG_MODE_CHANGE); return 1; } return 0; } /* It's really sad to have two almost identical functions for this, but we do it all for performance... :( */ static void m68k_run_1 (void) { for (;;) { int cycles; uae_u32 opcode = regs.ir; /* assert (!regs.stopped && !(regs.spcflags & SPCFLAG_STOP)); */ /* regs_backup[backup_pointer = (backup_pointer + 1) % 16] = regs;*/ #if COUNT_INSTRS == 2 if (table68k[opcode].handler != -1) instrcount[table68k[opcode].handler]++; #elif COUNT_INSTRS == 1 instrcount[opcode]++; #endif cycles = (*cpufunctbl[opcode])(opcode); /*n_insns++;*/ cycles &= cycles_mask; cycles |= cycles_val; do_cycles (cycles); if (regs.spcflags) { if (do_specialties (cycles)) return; } } } #define DEBUG_PREFETCH /* Same thing, but don't use prefetch to get opcode. */ static void m68k_run_2 (void) { for (;;) { int cycles; uae_u32 opcode = get_iword (0); /* assert (!regs.stopped && !(regs.spcflags & SPCFLAG_STOP)); */ /* regs_backup[backup_pointer = (backup_pointer + 1) % 16] = regs;*/ #if COUNT_INSTRS == 2 if (table68k[opcode].handler != -1) instrcount[table68k[opcode].handler]++; #elif COUNT_INSTRS == 1 instrcount[opcode]++; #endif cycles = (*cpufunctbl[opcode])(opcode); /*n_insns++;*/ cycles &= cycles_mask; cycles |= cycles_val; do_cycles (cycles); if (regs.spcflags) { if (do_specialties (cycles)) return; } } } #define m68k_run1(F) (F) () int in_m68k_go = 0; static void exception2_handle (uaecptr addr, uaecptr fault) { last_addr_for_exception_3 = addr; last_fault_for_exception_3 = fault; last_writeaccess_for_exception_3 = 0; last_instructionaccess_for_exception_3 = 0; Exception (2, addr); } void m68k_go (int may_quit) { if (in_m68k_go || !may_quit) { write_log ("Bug! m68k_go is not reentrant.\n"); abort (); } reset_frame_rate_hack (); update_68k_cycles (); in_m68k_go++; for (;;) { if (quit_program > 0) { if (quit_program == 1) break; quit_program = 0; if (savestate_state == STATE_RESTORE) { restore_state (savestate_filename); #if 0 activate_debugger (); #endif } m68k_reset (); reset_all_systems (); customreset (); /* We may have been restoring state, but we're done now. */ savestate_restore_finish (); fill_prefetch_slow (); handle_active_events (); if (regs.spcflags) do_specialties (0); m68k_setpc (regs.pc); } if (debugging) debug (); if (regs.panic) { regs.panic = 0; /* program jumped to non-existing memory and cpu was >= 68020 */ get_real_address (regs.isp); /* stack in no one's land? -> reboot */ if (regs.isp & 1) regs.panic = 1; if (!regs.panic) exception2_handle (regs.panic_pc, regs.panic_addr); if (regs.panic) { /* system is very badly confused */ write_log ("double bus error or corrupted stack, forcing reboot..\n"); regs.panic = 0; uae_reset (1); } } m68k_run1 (currprefs.cpu_level == 0 ? m68k_run_1 : m68k_run_2); } in_m68k_go--; } static void m68k_verify (uaecptr addr, uaecptr *nextpc) { uae_u32 opcode, val; struct instr *dp; opcode = get_iword_1(0); last_op_for_exception_3 = opcode; m68kpc_offset = 2; if (cpufunctbl[opcode] == op_illg_1) { opcode = 0x4AFC; } dp = table68k + opcode; if (dp->suse) { if (!verify_ea (dp->sreg, dp->smode, dp->size, &val)) { Exception (3, 0); return; } } if (dp->duse) { if (!verify_ea (dp->dreg, dp->dmode, dp->size, &val)) { Exception (3, 0); return; } } } #endif /* 0 */ #ifdef NO_GDB int DasmFPU(uint16_t code, char *buf); int m68k_disasm (char *output, uaecptr addr) { char buf[273]; uaecptr newpc = 0; char instrname[20],*ccpt; uae_u32 opcode; struct mnemolookup *lookup; struct instr *dp; uae_u32 orig_opcode; uaecptr nextpc; m68kpc_offset = addr - m68k_getpc (); output[0] = '\0'; sprintf (buf, "%06lx: ", m68k_getpc () + m68kpc_offset); strcat (output, buf); opcode = get_iword_1 (m68kpc_offset); orig_opcode = opcode; m68kpc_offset += 2; if (cpufunctbl[opcode] == op_illg_1 || (orig_opcode & 0xf000) == 0xa000 || (orig_opcode & 0xf000) == 0xf000) { if(!((orig_opcode >= 0xf800) && (orig_opcode <= 0xfff2))) opcode = 0x4AFC; } dp = table68k + opcode; for (lookup = lookuptab;lookup->mnemo != dp->mnemo; lookup++) ; strcpy (instrname, lookup->name); ccpt = strstr (instrname, "cc"); if (ccpt != 0) { strncpy (ccpt, ccnames[dp->cc], 2); } strcat (output, instrname); switch (dp->size) { case sz_byte: strcat (output, ".B "); break; case sz_word: strcat (output, ".W "); break; case sz_long: strcat (output, ".L "); break; default: strcat (output, " "); break; } if (dp->suse) { newpc = m68k_getpc () + m68kpc_offset; newpc += ShowEA (0, dp->sreg, dp->smode, dp->size, output); } if (dp->suse && dp->duse) strcat(output, ","); if (dp->duse) { newpc = m68k_getpc () + m68kpc_offset; newpc += ShowEA (0, dp->dreg, dp->dmode, dp->size, output); } if (ccpt != 0) { if (cctrue(dp->cc)) { sprintf (buf, " [%06lX] (TRUE)", newpc); strcat (output, buf); } else { sprintf (buf, " [%06lX] (FALSE)", newpc); strcat (output, buf); } } else if ((opcode & 0xff00) == 0x6100) { /* BSR */ sprintf (buf, " [%s]", sym_addr (newpc)); strcat (output, buf); } else if((orig_opcode >= 0xf800) && (orig_opcode <= 0xfff2)) { char *buffer = &(output[8]); unsigned long pm; uint32_t pc = m68k_getpc(); /* addr */ /* F-Line ROM calls (see KerNO doc and thanks to Lionel Debroux) */ switch(orig_opcode) { case 0xfff0: /* 6 byte bsr w/long word displacement */ pm = get_ilong_1 (m68kpc_offset); m68kpc_offset += 6 - 2; if (pm & 0x8000) sprintf (buffer, "FLINE bsr.l *-$%lX [%lX]", (-(signed long)(int32_t)pm) - 2, pc + (signed long)(int32_t)pm + 2); else sprintf (buffer, "FLINE bsr.l *+$%lX [%lX]", pm + 2, pc + pm + 2); break; case 0xfff1: /* 6 byte bra w/long word displacement */ pm = get_ilong_1 (m68kpc_offset); m68kpc_offset += 6 - 2; if (pm & 0x8000) sprintf (buffer, "FLINE bra.l *-$%lX [%lX]", (-(signed long)(int32_t)pm) - 2, pc + (signed long)(int32_t)pm + 2); else sprintf (buffer, "FLINE bra.l *+$%lX [%lX]", pm + 2, pc + pm + 2); break; case 0xfff2: /* 4 byte ROM CALL */ pm = get_iword_1 (m68kpc_offset); m68kpc_offset += 4 - 2; sprintf (buffer, "FLINE $%04x.l [%s]", pm/4, romcalls_get_name(pm / 4)); break; case 0xffee: /* jmp __ld_entry_point_plus_0x8000+word */ pm = get_iword_1 (m68kpc_offset); m68kpc_offset += 4 - 2; { int handle; uint32_t addr; heap_search_for_address(pc + 2, &handle); if (handle > 0) heap_get_block_addr(handle, &addr); else addr = 0; sprintf (buffer, "FLINE jmp.w *+$%lX [%lX]", (signed long)(signed short)pm + 0x8000, addr + (signed long)(signed short)pm + 0x8000); } break; case 0xffef: /* jsr __ld_entry_point_plus_0x8000+word */ pm = get_iword_1 (m68kpc_offset); m68kpc_offset += 4 - 2; { int handle; uint32_t addr; heap_search_for_address(pc + 2, &handle); if (handle > 0) heap_get_block_addr(handle, &addr); else addr = 0; sprintf (buffer, "FLINE jsr.w *+$%lX [%lX]", (signed long)(signed short)pm + 0x8000, addr + (signed long)(signed short)pm + 0x8000); } break; case 0xf8b5: /* 2 byte ROM call followed by an FPU opcode (special case: _bcd_math) */ { char tmp[64]; pm = get_iword_1 (m68kpc_offset); m68kpc_offset += 4 - 2; DasmFPU(pm, tmp); sprintf (buffer, "FLINE _bcd_math (FPU: %s)", tmp); break; } default: /* 2 byte ROM CALL */ sprintf (buffer, "FLINE $%03x.w [%s]", opcode & 0x7ff, romcalls_get_name(opcode & 0x7ff)); break; } } else if ((orig_opcode & 0xf000) == 0xa000) { /* ER_throw */ char *buffer = &(output[8]); sprintf (buffer, "ER_throw %d [%s]", opcode & 0xfff, ercodes_get_name(opcode & 0xfff)); } else if (opcode == 0x4AFC && orig_opcode != 0x4AFC) { /* illegal instruction, but not ILLEGAL */ sprintf (output, "%06lx: DC.W $%04X", addr, orig_opcode); } nextpc = m68k_getpc () + m68kpc_offset; return (nextpc - addr); } #endif /* NO_GDB */ #if 0 void m68k_dumpstate (FILE *f, uaecptr *nextpc) { int i; for (i = 0; i < 8; i++){ fprintf (f, "D%d: %08lx ", i, m68k_dreg(regs, i)); if ((i & 3) == 3) fprintf (f, "\n"); } for (i = 0; i < 8; i++){ fprintf (f, "A%d: %08lx ", i, m68k_areg(regs, i)); if ((i & 3) == 3) fprintf (f, "\n"); } if (regs.s == 0) regs.usp = m68k_areg(regs, 7); if (regs.s && regs.m) regs.msp = m68k_areg(regs, 7); if (regs.s && regs.m == 0) regs.isp = m68k_areg(regs, 7); fprintf (f, "USP=%08lx ISP=%08lx MSP=%08lx VBR=%08lx\n", regs.usp,regs.isp,regs.msp,regs.vbr); fprintf (f, "T=%d%d S=%d M=%d X=%d N=%d Z=%d V=%d C=%d IMASK=%d\n", regs.t1, regs.t0, regs.s, regs.m, GET_XFLG, GET_NFLG, GET_ZFLG, GET_VFLG, GET_CFLG, regs.intmask); for (i = 0; i < 8; i++){ fprintf (f, "FP%d: %g ", i, regs.fp[i]); if ((i & 3) == 3) fprintf (f, "\n"); } fprintf (f, "N=%d Z=%d I=%d NAN=%d\n", (regs.fpsr & 0x8000000) != 0, (regs.fpsr & 0x4000000) != 0, (regs.fpsr & 0x2000000) != 0, (regs.fpsr & 0x1000000) != 0); m68k_disasm (f, m68k_getpc (), nextpc, 1); if (nextpc) fprintf (f, "next PC: %08lx\n", *nextpc); } /* CPU save/restore code */ #define CPUTYPE_EC 1 #define CPUMODE_HALT 1 uae_u8 *restore_cpu (uae_u8 *src) { int i,model,flags; uae_u32 l; model = restore_u32(); switch (model) { case 68000: currprefs.cpu_level = 0; break; case 68010: currprefs.cpu_level = 1; break; case 68020: currprefs.cpu_level = 2; break; default: write_log ("Unknown cpu type %d\n", model); break; } flags = restore_u32(); currprefs.address_space_24 = 0; if (flags & CPUTYPE_EC) currprefs.address_space_24 = 1; for (i = 0; i < 15; i++) regs.regs[i] = restore_u32 (); regs.pc = restore_u32 (); regs.irc = restore_u16 (); regs.ir = restore_u16 (); regs.usp = restore_u32 (); regs.isp = restore_u32 (); regs.sr = restore_u16 (); l = restore_u32(); if (l & CPUMODE_HALT) { regs.stopped = 1; set_special (SPCFLAG_STOP); } else regs.stopped = 0; if (model >= 68010) { regs.dfc = restore_u32 (); regs.sfc = restore_u32 (); regs.vbr = restore_u32 (); } if (model >= 68020) { caar = restore_u32 (); cacr = restore_u32 (); regs.msp = restore_u32 (); } write_log ("CPU %d%s%03d, PC=%08.8X\n", model/1000, flags & 1 ? "EC" : "", model % 1000, regs.pc); return src; } static int cpumodel[] = { 68000, 68010, 68020, 68020 }; uae_u8 *save_cpu (int *len, uae_u8 *dstptr) { uae_u8 *dstbak,*dst; int model,i; if (dstptr) dstbak = dst = dstptr; else dstbak = dst = malloc(4+4+15*4+4+4+4+4+2+4+4+4+4+4+4+4); model = cpumodel[currprefs.cpu_level]; save_u32 (model); /* MODEL */ save_u32 (currprefs.address_space_24 ? 1 : 0); /* FLAGS */ for(i = 0;i < 15; i++) save_u32 (regs.regs[i]); /* D0-D7 A0-A6 */ save_u32 (m68k_getpc ()); /* PC */ save_u16 (regs.irc); /* prefetch */ save_u16 (regs.ir); /* instruction prefetch */ MakeSR (); save_u32 (!regs.s ? regs.regs[15] : regs.usp); /* USP */ save_u32 (regs.s ? regs.regs[15] : regs.isp); /* ISP */ save_u16 (regs.sr); /* SR/CCR */ save_u32 (regs.stopped ? CPUMODE_HALT : 0); /* flags */ if(model >= 68010) { save_u32 (regs.dfc); /* DFC */ save_u32 (regs.sfc); /* SFC */ save_u32 (regs.vbr); /* VBR */ } if(model >= 68020) { save_u32 (caar); /* CAAR */ save_u32 (cacr); /* CACR */ save_u32 (regs.msp); /* MSP */ } *len = dst - dstbak; return dstbak; } #endif /* 0 */ static void exception3f (uae_u32 opcode, uaecptr addr, uaecptr fault, int writeaccess, int instructionaccess) { last_addr_for_exception_3 = addr; last_fault_for_exception_3 = fault; last_op_for_exception_3 = opcode; last_writeaccess_for_exception_3 = writeaccess; last_instructionaccess_for_exception_3 = instructionaccess; Exception (3, fault); } void exception3 (uae_u32 opcode, uaecptr addr, uaecptr fault) { exception3f (opcode, addr, fault, 0, 0); } void exception3i (uae_u32 opcode, uaecptr addr, uaecptr fault) { exception3f (opcode, addr, fault, 0, 1); } #if 0 void exception2 (uaecptr addr, uaecptr fault) { write_log ("delayed exception2!\n"); regs.panic_pc = m68k_getpc(); regs.panic_addr = addr; regs.panic = 2; set_special (SPCFLAG_BRK); m68k_setpc (0xf80000); fill_prefetch_slow (); } void cpureset (void) { customreset (); #if 0 uae_u16 ins; if (currprefs.cpu_level == 0 && (currprefs.cpu_compatible || currprefs.cpu_cycle_exact)) { customreset (); return; } ins = get_word (m68k_getpc() + 2); if ((ins & ~7) == 0x4ed0) { int reg = ins & 7; uae_u32 addr = m68k_areg (regs, reg); write_log ("reset/jmp (ax) combination emulated\n"); customreset (); if (addr < 0x80000) addr += 0xf80000; m68k_setpc (addr); } #endif } #endif /* 0 */ tiemu-3.03-nogdb+dfsg/src/core/uae/newcpu.h000066400000000000000000000160131220314353500205320ustar00rootroot00000000000000 /* * UAE - The Un*x Amiga Emulator * * MC68000 emulation * * Copyright 1995 Bernd Schmidt * $Id: newcpu.h 2085 2006-05-16 19:28:18Z roms $ */ #include "readcpu.h" #include "machdep/maccess.h" #define CYGNUS_SIM 1 #define SPCFLAG_DBTRACE 1 #define SPCFLAG_DBSKIP 2 #define SPCFLAG_STOP 4 #define SPCFLAG_INT 8 #define SPCFLAG_BRK 16 #define SPCFLAG_TRACE 32 #define SPCFLAG_DOTRACE 64 #define SPCFLAG_DOINT 128 #define SPCFLAG_ADRERR 256 #define SPCFLAG_MODE_CHANGE 512 #ifndef SET_CFLG #define SET_CFLG(x) (CFLG = (x)) #define SET_NFLG(x) (NFLG = (x)) #define SET_VFLG(x) (VFLG = (x)) #define SET_ZFLG(x) (ZFLG = (x)) #define SET_XFLG(x) (XFLG = (x)) #define GET_CFLG CFLG #define GET_NFLG NFLG #define GET_VFLG VFLG #define GET_ZFLG ZFLG #define GET_XFLG XFLG #define CLEAR_CZNV do { \ SET_CFLG (0); \ SET_ZFLG (0); \ SET_NFLG (0); \ SET_VFLG (0); \ } while (0) #define COPY_CARRY (SET_XFLG (GET_CFLG)) #endif extern int areg_byteinc[]; extern int imm8_table[]; extern int movem_index1[256]; extern int movem_index2[256]; extern int movem_next[256]; extern int fpp_movem_index1[256]; extern int fpp_movem_index2[256]; extern int fpp_movem_next[256]; extern int broken_in; extern int uae_initial_pc; extern int currIntLev; extern void Interrupt(int); typedef unsigned long cpuop_func (uae_u32) REGPARAM; struct cputbl { cpuop_func *handler; int specific; uae_u16 opcode; }; extern unsigned long op_illg (uae_u32) REGPARAM; typedef char flagtype; /* You can set this to long double to be more accurate. However, the resulting alignment issues will cost a lot of performance in some apps */ #define USE_LONG_DOUBLE 0 #if USE_LONG_DOUBLE typedef long double fptype; #else typedef double fptype; #endif struct flag_struct { unsigned int c; unsigned int z; unsigned int n; unsigned int v; unsigned int x; }; extern struct regstruct { uae_u32 regs[16]; uaecptr usp,isp/*,msp*/; uae_u16 sr; flagtype t1; // flagtype t0; flagtype s; // flagtype m; flagtype x; flagtype stopped; struct flag_struct flags; int intmask; uae_u32 pc; uae_u8 *pc_p; uae_u8 *pc_oldp; uae_u32 vbr,sfc,dfc; fptype fp[8]; fptype fp_result; uae_u32 fpcr,fpsr,fpiar; uae_u32 fpsr_highbyte; uae_u32 spcflags; uae_u32 kick_mask; uae_u32 address_space_mask; uae_u16 irc, ir; uae_u8 panic; uae_u32 panic_pc, panic_addr; #if CYGNUS_SIM /* NOTE stuff related to simulator framework */ /* NOTE need to have m68k performance information here */ unsigned char *insn_end; /* NOTE control information */ int prevlock; int thislock; int exception; int end_of_registers; /* NOTE simulator information */ int msize; #define PROFILE_FREQ 1 #define PROFILE_SHIFT 2 int profile; unsigned short *profile_hist; unsigned char *memory; int xyram_select, xram_start, yram_start; unsigned char *xmem; unsigned char *ymem; unsigned char *xmem_offset; unsigned char *ymem_offset; #endif /* CYGNUS_SIM */ } regs, lastint_regs; #include "machdep/m68k.h" #if CYGNUS_SIM extern int trace; #endif /* CYGNUS_SIM */ STATIC_INLINE uae_u32 munge24(uae_u32 x) { return x & regs.address_space_mask; } STATIC_INLINE void set_special (uae_u32 x) { regs.spcflags |= x; } STATIC_INLINE void unset_special (uae_u32 x) { regs.spcflags &= ~x; } #define m68k_dreg(r,num) ((r).regs[(num)]) #define m68k_areg(r,num) (((r).regs + 8)[(num)]) STATIC_INLINE void m68k_setpc (uaecptr newpc) { regs.pc_p = regs.pc_oldp = get_real_address (newpc); regs.pc = newpc & 0xffffff; } STATIC_INLINE uaecptr m68k_getpc (void) { return regs.pc + ((char *)regs.pc_p - (char *)regs.pc_oldp); } STATIC_INLINE uaecptr m68k_getpc_p (uae_u8 *p) { return regs.pc + ((char *)p - (char *)regs.pc_oldp); } #define get_ibyte(o) do_get_mem_byte((uae_u8 *)(regs.pc_p + (o) + 1)) #define get_iword(o) do_get_mem_word((uae_u16 *)(regs.pc_p + (o))) #define get_ilong(o) do_get_mem_long((uae_u32 *)(regs.pc_p + (o))) #define m68k_incpc(o) (regs.pc_p += (o)) /* These are only used by the 68020/68881 code, and therefore don't * need to handle prefetch. */ STATIC_INLINE uae_u32 next_ibyte (void) { uae_u32 r = get_ibyte (0); m68k_incpc (2); return r; } STATIC_INLINE uae_u32 next_iword (void) { uae_u32 r = get_iword (0); m68k_incpc (2); return r; } STATIC_INLINE uae_u32 next_ilong (void) { uae_u32 r = get_ilong (0); m68k_incpc (4); return r; } STATIC_INLINE void m68k_do_rts(void) { m68k_setpc(get_long(m68k_areg(regs, 7))); m68k_areg(regs, 7) += 4; } STATIC_INLINE void m68k_do_bsr(uaecptr oldpc, uae_s32 offset) { m68k_areg(regs, 7) -= 4; put_long(m68k_areg(regs, 7), oldpc); m68k_incpc(offset); } STATIC_INLINE void m68k_do_jsr(uaecptr oldpc, uaecptr dest) { m68k_areg(regs, 7) -= 4; put_long(m68k_areg(regs, 7), oldpc); m68k_setpc(dest); } STATIC_INLINE void m68k_setstopped (int stop) { regs.stopped = stop; /* A traced STOP instruction drops through immediately without actually stopping. */ if (stop && (regs.spcflags & SPCFLAG_DOTRACE) == 0) regs.spcflags |= SPCFLAG_STOP; } extern uae_u32 get_disp_ea_020 (uae_u32 base, uae_u32 dp); extern uae_u32 get_disp_ea_000 (uae_u32 base, uae_u32 dp); extern uae_s32 ShowEA (FILE *, int reg, amodes mode, wordsizes size, char *buf); extern void MakeSR (void); extern void MakeFromSR (void); extern void Exception (int, uaecptr); extern void dump_counts (void); extern int m68k_move2c (int, uae_u32 *); extern int m68k_movec2 (int, uae_u32 *); extern void m68k_divl (uae_u32, uae_u32, uae_u16, uaecptr); extern void m68k_mull (uae_u32, uae_u32, uae_u16); extern void init_m68k (void); extern void m68k_go (int); #if 0 extern void m68k_dumpstate (FILE *, uaecptr *); #endif /* 0 */ #ifdef NO_GDB extern int m68k_disasm (char *, uaecptr); #endif /* NO_GDB */ extern void m68k_reset (void); extern int intlev(void); extern void mmu_op (uae_u32, uae_u16); extern void fpp_opp (uae_u32, uae_u16); extern void fdbcc_opp (uae_u32, uae_u16); extern void fscc_opp (uae_u32, uae_u16); extern void ftrapcc_opp (uae_u32,uaecptr); extern void fbcc_opp (uae_u32, uaecptr, uae_u32); extern void fsave_opp (uae_u32); extern void frestore_opp (uae_u32); extern void exception3 (uae_u32 opcode, uaecptr addr, uaecptr fault); extern void exception3i (uae_u32 opcode, uaecptr addr, uaecptr fault); #if 0 extern void exception2 (uaecptr addr, uaecptr fault); extern void cpureset (void); #endif /* 0 */ extern void fill_prefetch_slow (void); #define CPU_OP_NAME(a) op ## a /* 68040 */ extern struct cputbl op_smalltbl_0_ff[]; /* 68020 + 68881 */ extern struct cputbl op_smalltbl_1_ff[]; /* 68020 */ extern struct cputbl op_smalltbl_2_ff[]; /* 68010 */ extern struct cputbl op_smalltbl_3_ff[]; /* 68000 */ extern struct cputbl op_smalltbl_4_ff[]; /* 68000 slow but compatible. */ extern struct cputbl op_smalltbl_5_ff[]; extern cpuop_func *cpufunctbl[65536] ASM_SYM_FOR_FUNC ("cpufunctbl"); #ifdef JIT #else #define flush_icache(X) do {} while (0) #endif tiemu-3.03-nogdb+dfsg/src/core/uae/options.h000066400000000000000000000175001220314353500207260ustar00rootroot00000000000000 /* * UAE - The Un*x Amiga Emulator * * Stuff * * Copyright 1995, 1996 Ed Hanway * Copyright 1995-2001 Bernd Schmidt * $Id: options.h 2009 2006-02-25 06:33:50Z kevinkofler $ */ #include // FILE #define UAEMAJOR 0 #define UAEMINOR 8 #define UAESUBREV 25 #if 0 typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang; extern long int version; struct uaedev_mount_info; struct strlist { struct strlist *next; char *str; }; /* maximum number native input devices supported (single type) */ #define MAX_INPUT_DEVICES 6 /* maximum number of native input device's buttons and axles supported */ #define MAX_INPUT_DEVICE_EVENTS 256 /* 4 different customization settings */ #define MAX_INPUT_SETTINGS 4 #define MAX_INPUT_SUB_EVENT 4 #define MAX_INPUT_SIMULTANEOUS_KEYS 4 struct uae_input_device { char *name; uae_s16 eventid[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT]; char *custom[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT]; uae_u16 flags[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT]; uae_s16 extra[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SIMULTANEOUS_KEYS]; uae_u8 enabled; }; #endif struct uae_prefs { #if 0 struct strlist *unknown_lines; char description[256]; char info[256]; int illegal_mem; int no_xhair; int use_serial; int serial_demand; int parallel_demand; int use_gfxlib; int socket_emu; int start_debugger; int start_gui; KbdLang keyboard_lang; int allow_save; int emul_accuracy; int test_drawing_speed; int produce_sound; int sound_stereo; int mixed_stereo; int sound_bits; int sound_freq; int sound_minbsiz; int sound_maxbsiz; int sound_pri_time; int sound_pri_cutoff; int sound_interpol; int gfx_framerate; int gfx_width; int gfx_height; int gfx_lores; int gfx_linedbl; int gfx_correct_aspect; int gfx_afullscreen; int gfx_pfullscreen; int gfx_xcenter; int gfx_ycenter; int color_mode; int blits_32bit_enabled; int immediate_blits; unsigned int chipset_mask; int ntscmode; int collision_level; int leds_on_screen; char df[4][256]; char romfile[256]; char romextfile[256]; char keyfile[256]; char prtname[256]; char sername[256]; char path_floppy[256]; char path_hardfile[256]; char path_rom[256]; int m68k_speed; #endif int cpu_level; int cpu_compatible; int address_space_24; #if 0 uae_u32 z3fastmem_size; uae_u32 fastmem_size; uae_u32 chipmem_size; uae_u32 bogomem_size; uae_u32 a3000mem_size; uae_u32 gfxmem_size; int kickshifter; struct uaedev_mount_info *mountinfo; int nr_floppies; int dfxtype[4]; /* Target specific options */ int x11_use_low_bandwidth; int x11_use_mitshm; int x11_use_dgamode; int x11_hide_cursor; int svga_no_linear; int win32_middle_mouse; int win32_logfile; int win32_iconified_nospeed; int win32_iconified_nosound; int curses_reverse_video; int win32_no_overlay; /* If this is set, we won't try and use any RGB overlays */ int win32_automount_drives; int curses_reverse_video; int jport0; int jport1; int input_selected_setting; int input_joymouse_multiplier; int input_joymouse_deadzone; int input_joystick_deadzone; int input_joymouse_speed; int input_autofire_framecnt; int input_mouse_speed; struct uae_input_device joystick_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES]; struct uae_input_device mouse_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES]; struct uae_input_device keyboard_settings[MAX_INPUT_SETTINGS + 1][MAX_INPUT_DEVICES]; #endif }; #if 0 /* Contains the filename of .uaerc */ extern char optionsfile[]; extern void save_options (FILE *, struct uae_prefs *); extern void default_prefs (struct uae_prefs *); extern void discard_prefs (struct uae_prefs *); extern int parse_cmdline_option (char, char *); extern int cfgfile_yesno (char *option, char *value, char *name, int *location); extern int cfgfile_intval (char *option, char *value, char *name, int *location, int scale); extern int cfgfile_strval (char *option, char *value, char *name, int *location, const char *table[], int more); extern int cfgfile_string (char *option, char *value, char *name, char *location, int maxsz); extern char *cfgfile_subst_path (const char *path, const char *subst, const char *file); extern int target_parse_option (struct uae_prefs *, char *option, char *value); extern void target_save_options (FILE *, struct uae_prefs *); extern int cfgfile_load (struct uae_prefs *, const char *filename); extern int cfgfile_save (struct uae_prefs *, const char *filename); extern void cfgfile_parse_line (struct uae_prefs *p, char *); extern int cfgfile_parse_option (struct uae_prefs *p, char *option, char *value); extern int cfgfile_get_description (const char *filename, char *description); extern void cfgfile_show_usage (void); extern void fixup_prefs_dimensions (struct uae_prefs *prefs); extern void check_prefs_changed_custom (void); extern void check_prefs_changed_cpu (void); extern void check_prefs_changed_audio (void); extern int check_prefs_changed_gfx (void); extern struct uae_prefs currprefs, changed_prefs; extern void machdep_init (void); /* AIX doesn't think it is Unix. Neither do I. */ #if defined(_ALL_SOURCE) || defined(_AIX) #undef __unix #define __unix #endif #define MAX_COLOR_MODES 5 /* #define NEED_TO_DEBUG_BADLY */ #if !defined(USER_PROGRAMS_BEHAVE) #define USER_PROGRAMS_BEHAVE 0 #endif /* Some memsets which know that they can safely overwrite some more memory * at both ends and use that knowledge to align the pointers. */ #define QUADRUPLIFY(c) (((c) | ((c) << 8)) | (((c) | ((c) << 8)) << 16)) /* When you call this routine, bear in mind that it rounds the bounds and * may need some padding for the array. */ #define fuzzy_memset(p, c, o, l) fuzzy_memset_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 4) >> 2) STATIC_INLINE void fuzzy_memset_1 (void *p, uae_u32 c, int offset, int len) { uae_u32 *p2 = (uae_u32 *)((char *)p + offset); int a = len & 7; len >>= 3; switch (a) { case 7: p2--; goto l1; case 6: p2-=2; goto l2; case 5: p2-=3; goto l3; case 4: p2-=4; goto l4; case 3: p2-=5; goto l5; case 2: p2-=6; goto l6; case 1: p2-=7; goto l7; case 0: if (!--len) return; break; } for (;;) { p2[0] = c; l1: p2[1] = c; l2: p2[2] = c; l3: p2[3] = c; l4: p2[4] = c; l5: p2[5] = c; l6: p2[6] = c; l7: p2[7] = c; if (!len) break; len--; p2 += 8; } } /* This one knows it will never be asked to clear more than 32 bytes. Make sure you call this with a constant for the length. */ #define fuzzy_memset_le32(p, c, o, l) fuzzy_memset_le32_1 ((p), QUADRUPLIFY (c), (o) & ~3, ((l) + 7) >> 2) STATIC_INLINE void fuzzy_memset_le32_1 (void *p, uae_u32 c, int offset, int len) { uae_u32 *p2 = (uae_u32 *)((char *)p + offset); switch (len) { case 9: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; p2[6] = c; p2[7] = c; p2[8] = c; break; case 8: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; p2[6] = c; p2[7] = c; break; case 7: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; p2[6] = c; break; case 6: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; p2[5] = c; break; case 5: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; p2[4] = c; break; case 4: p2[0] = c; p2[1] = c; p2[2] = c; p2[3] = c; break; case 3: p2[0] = c; p2[1] = c; p2[2] = c; break; case 2: p2[0] = c; p2[1] = c; break; case 1: p2[0] = c; break; case 0: break; default: printf("Hit the programmer.\n"); break; } } #if defined(AMIGA) && defined(__GNUC__) #include "od-amiga/amiga-kludges.h" #endif #endif /* 0 */ tiemu-3.03-nogdb+dfsg/src/core/uae/readcpu.c000066400000000000000000000514061220314353500206540ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: readcpu.c 2681 2007-11-20 18:01:02Z roms $ */ /* * UAE - The Un*x Amiga Emulator * * Read 68000 CPU specs from file "table68k" * * Copyright 1995,1996 Bernd Schmidt */ #include #include "sysdeps.h" #include #include #include #include "readcpu.h" int nr_cpuop_funcs; struct mnemolookup lookuptab[] = { { i_MOVEQ,"MOVEQ" }, { i_ADDQ, "ADDQ" }, { i_SUBQ, "SUBQ" }, { i_CMPI, "CMPI" }, { i_ADDI, "ADDI" }, { i_SUBI, "SUBI" }, { i_ORI, "ORI" }, { i_ANDI, "ANDI" }, { i_EORI, "EORI" }, { i_ILLG, "ILLEGAL" }, { i_OR, "OR" }, { i_CHK, "CHK" }, { i_CHK2, "CHK2" }, { i_AND, "AND" }, { i_EOR, "EOR" }, { i_ORSR, "ORSR" }, { i_ANDSR, "ANDSR" }, { i_EORSR, "EORSR" }, { i_SUB, "SUB" }, { i_SUBA, "SUBA" }, { i_SUBX, "SUBX" }, { i_SBCD, "SBCD" }, { i_ADD, "ADD" }, { i_ADDA, "ADDA" }, { i_ADDX, "ADDX" }, { i_ABCD, "ABCD" }, { i_NEG, "NEG" }, { i_NEGX, "NEGX" }, { i_NBCD, "NBCD" }, { i_CLR, "CLR" }, { i_NOT, "NOT" }, { i_TST, "TST" }, { i_BTST, "BTST" }, { i_BCHG, "BCHG" }, { i_BCLR, "BCLR" }, { i_BSET, "BSET" }, { i_CMP, "CMP" }, { i_CMPM, "CMPM" }, { i_CMPA, "CMPA" }, { i_MVPRM, "MVPRM" }, { i_MVPMR, "MVPMR" }, { i_MOVE, "MOVE" }, { i_MOVEA, "MOVEA" }, { i_MVSR2, "MVSR2" }, { i_MV2SR, "MV2SR" }, { i_SWAP, "SWAP" }, { i_EXG, "EXG" }, { i_EXT, "EXT" }, { i_MVMEL, "MVMEL" }, { i_MVMLE, "MVMLE" }, { i_TRAP, "TRAP" }, { i_MVR2USP, "MVR2USP" }, { i_MVUSP2R, "MVUSP2R" }, { i_NOP, "NOP" }, { i_RESET, "RESET" }, { i_RTE, "RTE" }, { i_RTD, "RTD" }, { i_LINK, "LINK" }, { i_UNLK, "UNLK" }, { i_RTS, "RTS" }, { i_STOP, "STOP" }, { i_TRAPV, "TRAPV" }, { i_RTR, "RTR" }, { i_JSR, "JSR" }, { i_JMP, "JMP" }, { i_BSR, "BSR" }, { i_Bcc, "Bcc" }, { i_LEA, "LEA" }, { i_PEA, "PEA" }, { i_DBcc, "DBcc" }, { i_Scc, "Scc" }, { i_DIVU, "DIVU" }, { i_DIVS, "DIVS" }, { i_MULU, "MULU" }, { i_MULS, "MULS" }, { i_ASR, "ASR" }, { i_ASL, "ASL" }, { i_LSR, "LSR" }, { i_LSL, "LSL" }, { i_ROL, "ROL" }, { i_ROR, "ROR" }, { i_ROXL, "ROXL" }, { i_ROXR, "ROXR" }, { i_ASRW, "ASRW" }, { i_ASLW, "ASLW" }, { i_LSRW, "LSRW" }, { i_LSLW, "LSLW" }, { i_ROLW, "ROLW" }, { i_RORW, "RORW" }, { i_ROXLW, "ROXLW" }, { i_ROXRW, "ROXRW" }, { i_MOVE2C, "MOVE2C" }, { i_MOVEC2, "MOVEC2" }, { i_CAS, "CAS" }, { i_CAS2, "CAS2" }, { i_MULL, "MULL" }, { i_DIVL, "DIVL" }, { i_BFTST, "BFTST" }, { i_BFEXTU, "BFEXTU" }, { i_BFCHG, "BFCHG" }, { i_BFEXTS, "BFEXTS" }, { i_BFCLR, "BFCLR" }, { i_BFFFO, "BFFFO" }, { i_BFSET, "BFSET" }, { i_BFINS, "BFINS" }, { i_PACK, "PACK" }, { i_UNPK, "UNPK" }, { i_TAS, "TAS" }, { i_BKPT, "BKPT" }, { i_CALLM, "CALLM" }, { i_RTM, "RTM" }, { i_TRAPcc, "TRAPcc" }, { i_MOVES, "MOVES" }, { i_FPP, "FPP" }, { i_FDBcc, "FDBcc" }, { i_FScc, "FScc" }, { i_FTRAPcc, "FTRAPcc" }, { i_FBcc, "FBcc" }, { i_FBcc, "FBcc" }, { i_FSAVE, "FSAVE" }, { i_FRESTORE, "FRESTORE" }, { i_CINVL, "CINVL" }, { i_CINVP, "CINVP" }, { i_CINVA, "CINVA" }, { i_CPUSHL, "CPUSHL" }, { i_CPUSHP, "CPUSHP" }, { i_CPUSHA, "CPUSHA" }, { i_MOVE16, "MOVE16" }, { i_MMUOP, "MMUOP" }, { i_ILLG, "" }, }; struct instr *table68k = NULL; STATIC_INLINE amodes mode_from_str (const char *str) { if (strncmp (str, "Dreg", 4) == 0) return Dreg; if (strncmp (str, "Areg", 4) == 0) return Areg; if (strncmp (str, "Aind", 4) == 0) return Aind; if (strncmp (str, "Apdi", 4) == 0) return Apdi; if (strncmp (str, "Aipi", 4) == 0) return Aipi; if (strncmp (str, "Ad16", 4) == 0) return Ad16; if (strncmp (str, "Ad8r", 4) == 0) return Ad8r; if (strncmp (str, "absw", 4) == 0) return absw; if (strncmp (str, "absl", 4) == 0) return absl; if (strncmp (str, "PC16", 4) == 0) return PC16; if (strncmp (str, "PC8r", 4) == 0) return PC8r; if (strncmp (str, "Immd", 4) == 0) return imm; abort (); return 0; } STATIC_INLINE amodes mode_from_mr (int mode, int reg) { switch (mode) { case 0: return Dreg; case 1: return Areg; case 2: return Aind; case 3: return Aipi; case 4: return Apdi; case 5: return Ad16; case 6: return Ad8r; case 7: switch (reg) { case 0: return absw; case 1: return absl; case 2: return PC16; case 3: return PC8r; case 4: return imm; case 5: case 6: case 7: return am_illg; } } abort (); return 0; } static void build_insn (int insn) { int find = -1; int variants; int isjmp = 0; struct instr_def id; const char *opcstr; int i; int flaglive = 0, flagdead = 0; id = defs68k[insn]; /* Note: We treat anything with unknown flags as a jump. That is overkill, but "the programmer" was lazy quite often, and *this* programmer can't be bothered to work out what can and can't trap. Usually, this will be overwritten with the gencomp based information, anyway. */ for (i = 0; i < 5; i++) { switch (id.flaginfo[i].flagset){ case fa_unset: break; case fa_isjmp: isjmp = 1; break; case fa_isbranch: isjmp = 1; break; case fa_zero: flagdead |= 1 << i; break; case fa_one: flagdead |= 1 << i; break; case fa_dontcare: flagdead |= 1 << i; break; case fa_unknown: isjmp = 1; flagdead = -1; goto out1; case fa_set: flagdead |= 1 << i; break; } } out1: for (i = 0; i < 5; i++) { switch (id.flaginfo[i].flaguse) { case fu_unused: break; case fu_isjmp: isjmp = 1; flaglive |= 1 << i; break; case fu_maybecc: isjmp = 1; flaglive |= 1 << i; break; case fu_unknown: isjmp = 1; flaglive |= 1 << i; break; case fu_used: flaglive |= 1 << i; break; } } out2: opcstr = id.opcstr; for (variants = 0; variants < (1 << id.n_variable); variants++) { int bitcnt[lastbit]; int bitval[lastbit]; int bitpos[lastbit]; int i; uae_u16 opc = id.bits; uae_u16 msk, vmsk; int pos = 0; int mnp = 0; int bitno = 0; char mnemonic[10]; wordsizes sz = sz_long; int srcgather = 0, dstgather = 0; int usesrc = 0, usedst = 0; int srctype = 0; int srcpos = -1, dstpos = -1; amodes srcmode = am_unknown, destmode = am_unknown; int srcreg = -1, destreg = -1; for (i = 0; i < lastbit; i++) bitcnt[i] = bitval[i] = 0; vmsk = 1 << id.n_variable; for (i = 0, msk = 0x8000; i < 16; i++, msk >>= 1) { if (!(msk & id.mask)) { int currbit = id.bitpos[bitno++]; int bit_set; vmsk >>= 1; bit_set = variants & vmsk ? 1 : 0; if (bit_set) opc |= msk; bitpos[currbit] = 15 - i; bitcnt[currbit]++; bitval[currbit] <<= 1; bitval[currbit] |= bit_set; } } if (bitval[bitj] == 0) bitval[bitj] = 8; /* first check whether this one does not match after all */ if (bitval[bitz] == 3 || bitval[bitC] == 1) continue; if (bitcnt[bitI] && (bitval[bitI] == 0x00 || bitval[bitI] == 0xff)) continue; /* bitI and bitC get copied to biti and bitc */ if (bitcnt[bitI]) { bitval[biti] = bitval[bitI]; bitpos[biti] = bitpos[bitI]; } if (bitcnt[bitC]) bitval[bitc] = bitval[bitC]; pos = 0; while (opcstr[pos] && !isspace(opcstr[pos])) { if (opcstr[pos] == '.') { pos++; switch (opcstr[pos]) { case 'B': sz = sz_byte; break; case 'W': sz = sz_word; break; case 'L': sz = sz_long; break; case 'z': switch (bitval[bitz]) { case 0: sz = sz_byte; break; case 1: sz = sz_word; break; case 2: sz = sz_long; break; default: abort(); } break; default: abort(); } } else { mnemonic[mnp] = opcstr[pos]; if (mnemonic[mnp] == 'f') { find = -1; switch (bitval[bitf]) { case 0: mnemonic[mnp] = 'R'; break; case 1: mnemonic[mnp] = 'L'; break; default: abort(); } } mnp++; } pos++; } mnemonic[mnp] = 0; /* now, we have read the mnemonic and the size */ while (opcstr[pos] && isspace(opcstr[pos])) pos++; /* A goto a day keeps the D******a away. */ if (opcstr[pos] == 0) goto endofline; /* parse the source address */ usesrc = 1; switch (opcstr[pos++]) { case 'D': srcmode = Dreg; switch (opcstr[pos++]) { case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break; case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break; default: abort(); } break; case 'A': srcmode = Areg; switch (opcstr[pos++]) { case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break; case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break; default: abort(); } switch (opcstr[pos]) { case 'p': srcmode = Apdi; pos++; break; case 'P': srcmode = Aipi; pos++; break; } break; case 'L': srcmode = absl; break; case '#': switch (opcstr[pos++]) { case 'z': srcmode = imm; break; case '0': srcmode = imm0; break; case '1': srcmode = imm1; break; case '2': srcmode = imm2; break; case 'i': srcmode = immi; srcreg = (uae_s32)(uae_s8)bitval[biti]; if (CPU_EMU_SIZE < 4) { /* Used for branch instructions */ srctype = 1; srcgather = 1; srcpos = bitpos[biti]; } break; case 'j': srcmode = immi; srcreg = bitval[bitj]; if (CPU_EMU_SIZE < 3) { /* 1..8 for ADDQ/SUBQ and rotshi insns */ srcgather = 1; srctype = 3; srcpos = bitpos[bitj]; } break; case 'J': srcmode = immi; srcreg = bitval[bitJ]; if (CPU_EMU_SIZE < 5) { /* 0..15 */ srcgather = 1; srctype = 2; srcpos = bitpos[bitJ]; } break; case 'k': srcmode = immi; srcreg = bitval[bitk]; if (CPU_EMU_SIZE < 3) { srcgather = 1; srctype = 4; srcpos = bitpos[bitk]; } break; case 'K': srcmode = immi; srcreg = bitval[bitK]; if (CPU_EMU_SIZE < 5) { /* 0..15 */ srcgather = 1; srctype = 5; srcpos = bitpos[bitK]; } break; case 'p': srcmode = immi; srcreg = bitval[bitK]; if (CPU_EMU_SIZE < 5) { /* 0..3 */ srcgather = 1; srctype = 7; srcpos = bitpos[bitp]; } break; default: abort(); } break; case 'd': srcreg = bitval[bitD]; srcmode = mode_from_mr(bitval[bitd],bitval[bitD]); if (srcmode == am_illg) continue; if (CPU_EMU_SIZE < 2 && (srcmode == Areg || srcmode == Dreg || srcmode == Aind || srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi || srcmode == Apdi)) { srcgather = 1; srcpos = bitpos[bitD]; } if (opcstr[pos] == '[') { pos++; if (opcstr[pos] == '!') { /* exclusion */ do { pos++; if (mode_from_str(opcstr+pos) == srcmode) goto nomatch; pos += 4; } while (opcstr[pos] == ','); pos++; } else { if (opcstr[pos+4] == '-') { /* replacement */ if (mode_from_str(opcstr+pos) == srcmode) srcmode = mode_from_str(opcstr+pos+5); else goto nomatch; pos += 10; } else { /* normal */ while(mode_from_str(opcstr+pos) != srcmode) { pos += 4; if (opcstr[pos] == ']') goto nomatch; pos++; } while(opcstr[pos] != ']') pos++; pos++; break; } } } /* Some addressing modes are invalid as destination */ if (srcmode == imm || srcmode == PC16 || srcmode == PC8r) goto nomatch; break; case 's': srcreg = bitval[bitS]; srcmode = mode_from_mr(bitval[bits],bitval[bitS]); if (srcmode == am_illg) continue; if (CPU_EMU_SIZE < 2 && (srcmode == Areg || srcmode == Dreg || srcmode == Aind || srcmode == Ad16 || srcmode == Ad8r || srcmode == Aipi || srcmode == Apdi)) { srcgather = 1; srcpos = bitpos[bitS]; } if (opcstr[pos] == '[') { pos++; if (opcstr[pos] == '!') { /* exclusion */ do { pos++; if (mode_from_str(opcstr+pos) == srcmode) goto nomatch; pos += 4; } while (opcstr[pos] == ','); pos++; } else { if (opcstr[pos+4] == '-') { /* replacement */ if (mode_from_str(opcstr+pos) == srcmode) srcmode = mode_from_str(opcstr+pos+5); else goto nomatch; pos += 10; } else { /* normal */ while(mode_from_str(opcstr+pos) != srcmode) { pos += 4; if (opcstr[pos] == ']') goto nomatch; pos++; } while(opcstr[pos] != ']') pos++; pos++; } } } break; default: abort(); } /* safety check - might have changed */ if (srcmode != Areg && srcmode != Dreg && srcmode != Aind && srcmode != Ad16 && srcmode != Ad8r && srcmode != Aipi && srcmode != Apdi && srcmode != immi) { srcgather = 0; } if (srcmode == Areg && sz == sz_byte) goto nomatch; if (opcstr[pos] != ',') goto endofline; pos++; /* parse the destination address */ usedst = 1; switch (opcstr[pos++]) { case 'D': destmode = Dreg; switch (opcstr[pos++]) { case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break; case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break; default: abort(); } if (dstpos < 0 || dstpos >= 32) abort (); break; case 'A': destmode = Areg; switch (opcstr[pos++]) { case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break; case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break; case 'x': destreg = 0; dstgather = 0; dstpos = 0; break; default: abort(); } if (dstpos < 0 || dstpos >= 32) abort (); switch (opcstr[pos]) { case 'p': destmode = Apdi; pos++; break; case 'P': destmode = Aipi; pos++; break; } break; case 'L': destmode = absl; break; case '#': switch (opcstr[pos++]) { case 'z': destmode = imm; break; case '0': destmode = imm0; break; case '1': destmode = imm1; break; case '2': destmode = imm2; break; case 'i': destmode = immi; destreg = (uae_s32)(uae_s8)bitval[biti]; break; case 'j': destmode = immi; destreg = bitval[bitj]; break; case 'J': destmode = immi; destreg = bitval[bitJ]; break; case 'k': destmode = immi; destreg = bitval[bitk]; break; case 'K': destmode = immi; destreg = bitval[bitK]; break; default: abort(); } break; case 'd': destreg = bitval[bitD]; destmode = mode_from_mr(bitval[bitd],bitval[bitD]); if (destmode == am_illg) continue; if (CPU_EMU_SIZE < 1 && (destmode == Areg || destmode == Dreg || destmode == Aind || destmode == Ad16 || destmode == Ad8r || destmode == Aipi || destmode == Apdi)) { dstgather = 1; dstpos = bitpos[bitD]; } if (opcstr[pos] == '[') { pos++; if (opcstr[pos] == '!') { /* exclusion */ do { pos++; if (mode_from_str(opcstr+pos) == destmode) goto nomatch; pos += 4; } while (opcstr[pos] == ','); pos++; } else { if (opcstr[pos+4] == '-') { /* replacement */ if (mode_from_str(opcstr+pos) == destmode) destmode = mode_from_str(opcstr+pos+5); else goto nomatch; pos += 10; } else { /* normal */ while(mode_from_str(opcstr+pos) != destmode) { pos += 4; if (opcstr[pos] == ']') goto nomatch; pos++; } while(opcstr[pos] != ']') pos++; pos++; break; } } } /* Some addressing modes are invalid as destination */ if (destmode == imm || destmode == PC16 || destmode == PC8r) goto nomatch; break; case 's': destreg = bitval[bitS]; destmode = mode_from_mr(bitval[bits],bitval[bitS]); if (destmode == am_illg) continue; if (CPU_EMU_SIZE < 1 && (destmode == Areg || destmode == Dreg || destmode == Aind || destmode == Ad16 || destmode == Ad8r || destmode == Aipi || destmode == Apdi)) { dstgather = 1; dstpos = bitpos[bitS]; } if (opcstr[pos] == '[') { pos++; if (opcstr[pos] == '!') { /* exclusion */ do { pos++; if (mode_from_str(opcstr+pos) == destmode) goto nomatch; pos += 4; } while (opcstr[pos] == ','); pos++; } else { if (opcstr[pos+4] == '-') { /* replacement */ if (mode_from_str(opcstr+pos) == destmode) destmode = mode_from_str(opcstr+pos+5); else goto nomatch; pos += 10; } else { /* normal */ while(mode_from_str(opcstr+pos) != destmode) { pos += 4; if (opcstr[pos] == ']') goto nomatch; pos++; } while(opcstr[pos] != ']') pos++; pos++; } } } break; default: abort(); } /* safety check - might have changed */ if (destmode != Areg && destmode != Dreg && destmode != Aind && destmode != Ad16 && destmode != Ad8r && destmode != Aipi && destmode != Apdi) { dstgather = 0; } if (destmode == Areg && sz == sz_byte) goto nomatch; #if 0 if (sz == sz_byte && (destmode == Aipi || destmode == Apdi)) { dstgather = 0; } #endif endofline: /* now, we have a match */ if (table68k[opc].mnemo != i_ILLG) fprintf(stderr, "UAE: Double match: %x: %s\n", opc, opcstr); if (find == -1) { for (find = 0;; find++) { if (strcmp(mnemonic, lookuptab[find].name) == 0) { table68k[opc].mnemo = lookuptab[find].mnemo; break; } if (strlen(lookuptab[find].name) == 0) abort(); } } else { table68k[opc].mnemo = lookuptab[find].mnemo; } table68k[opc].cc = bitval[bitc]; if (table68k[opc].mnemo == i_BTST || table68k[opc].mnemo == i_BSET || table68k[opc].mnemo == i_BCLR || table68k[opc].mnemo == i_BCHG) { sz = destmode == Dreg ? sz_long : sz_byte; } table68k[opc].size = sz; table68k[opc].sreg = srcreg; table68k[opc].dreg = destreg; table68k[opc].smode = srcmode; table68k[opc].dmode = destmode; table68k[opc].spos = srcgather ? srcpos : -1; table68k[opc].dpos = dstgather ? dstpos : -1; table68k[opc].suse = usesrc; table68k[opc].duse = usedst; table68k[opc].stype = srctype; table68k[opc].plev = id.plevel; table68k[opc].clev = id.cpulevel; #if 0 for (i = 0; i < 5; i++) { table68k[opc].flaginfo[i].flagset = id.flaginfo[i].flagset; table68k[opc].flaginfo[i].flaguse = id.flaginfo[i].flaguse; } #endif table68k[opc].flagdead = flagdead; table68k[opc].flaglive = flaglive; table68k[opc].isjmp = isjmp; nomatch: /* FOO! */; } } void read_table68k (void) { int i; if(table68k == NULL) table68k = (struct instr *)xmalloc (65536 * sizeof (struct instr)); for (i = 0; i < 65536; i++) { table68k[i].mnemo = i_ILLG; table68k[i].handler = -1; } for (i = 0; i < n_defs68k; i++) { build_insn (i); } } static int mismatch; static void handle_merges (long int opcode) { uae_u16 smsk = 0; uae_u16 dmsk; int sbitdst = 0, dstend; int srcreg, dstreg; if (table68k[opcode].spos == -1) { sbitdst = 1; smsk = 0; } else { switch (table68k[opcode].stype) { case 0: smsk = 7; sbitdst = 8; break; case 1: smsk = 255; sbitdst = 256; break; case 2: smsk = 15; sbitdst = 16; break; case 3: smsk = 7; sbitdst = 8; break; case 4: smsk = 7; sbitdst = 8; break; case 5: smsk = 63; sbitdst = 64; break; case 7: smsk = 3; sbitdst = 4; break; default: smsk = 0; sbitdst = 0; abort(); break; } smsk <<= table68k[opcode].spos; } if (table68k[opcode].dpos == -1) { dstend = 1; dmsk = 0; } else { dmsk = 7 << table68k[opcode].dpos; dstend = 8; } for (srcreg=0; srcreg < sbitdst; srcreg++) { for (dstreg=0; dstreg < dstend; dstreg++) { uae_u16 code = opcode; code = (code & ~smsk) | (srcreg << table68k[opcode].spos); code = (code & ~dmsk) | (dstreg << table68k[opcode].dpos); /* Check whether this is in fact the same instruction. * The instructions should never differ, except for the * Bcc.(BW) case. */ if (table68k[code].mnemo != table68k[opcode].mnemo || table68k[code].size != table68k[opcode].size || table68k[code].suse != table68k[opcode].suse || table68k[code].duse != table68k[opcode].duse) { mismatch++; continue; } if (table68k[opcode].suse && (table68k[opcode].spos != table68k[code].spos || table68k[opcode].smode != table68k[code].smode || table68k[opcode].stype != table68k[code].stype)) { mismatch++; continue; } if (table68k[opcode].duse && (table68k[opcode].dpos != table68k[code].dpos || table68k[opcode].dmode != table68k[code].dmode)) { mismatch++; continue; } if (code != opcode) table68k[code].handler = opcode; } } } void do_merges (void) { long int opcode; int nr = 0; mismatch = 0; for (opcode = 0; opcode < 65536; opcode++) { if (table68k[opcode].handler != -1 || table68k[opcode].mnemo == i_ILLG) continue; nr++; handle_merges (opcode); } nr_cpuop_funcs = nr; } int get_no_mismatches (void) { return mismatch; } tiemu-3.03-nogdb+dfsg/src/core/uae/readcpu.h000066400000000000000000000056061220314353500206620ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: readcpu.h 2681 2007-11-20 18:01:02Z roms $ */ ENUMDECL { Dreg, Areg, Aind, Aipi, Apdi, Ad16, Ad8r, absw, absl, PC16, PC8r, imm, imm0, imm1, imm2, immi, am_unknown, am_illg } ENUMNAME (amodes); ENUMDECL { i_MOVEQ, i_ADDQ, i_SUBQ, i_CMPI, i_ADDI, i_SUBI, i_ORI, i_ANDI, i_EORI, i_ILLG, i_OR, i_AND, i_EOR, i_ORSR, i_ANDSR, i_EORSR, i_SUB, i_SUBA, i_SUBX, i_SBCD, i_ADD, i_ADDA, i_ADDX, i_ABCD, i_NEG, i_NEGX, i_NBCD, i_CLR, i_NOT, i_TST, i_BTST, i_BCHG, i_BCLR, i_BSET, i_CMP, i_CMPM, i_CMPA, i_MVPRM, i_MVPMR, i_MOVE, i_MOVEA, i_MVSR2, i_MV2SR, i_SWAP, i_EXG, i_EXT, i_MVMEL, i_MVMLE, i_TRAP, i_MVR2USP, i_MVUSP2R, i_RESET, i_NOP, i_STOP, i_RTE, i_RTD, i_LINK, i_UNLK, i_RTS, i_TRAPV, i_RTR, i_JSR, i_JMP, i_BSR, i_Bcc, i_LEA, i_PEA, i_DBcc, i_Scc, i_DIVU, i_DIVS, i_MULU, i_MULS, i_ASR, i_ASL, i_LSR, i_LSL, i_ROL, i_ROR, i_ROXL, i_ROXR, i_ASRW, i_ASLW, i_LSRW, i_LSLW, i_ROLW, i_RORW, i_ROXLW, i_ROXRW, i_CHK,i_CHK2, i_MOVEC2, i_MOVE2C, i_CAS, i_CAS2, i_DIVL, i_MULL, i_BFTST,i_BFEXTU,i_BFCHG,i_BFEXTS,i_BFCLR,i_BFFFO,i_BFSET,i_BFINS, i_PACK, i_UNPK, i_TAS, i_BKPT, i_CALLM, i_RTM, i_TRAPcc, i_MOVES, i_FPP, i_FDBcc, i_FScc, i_FTRAPcc, i_FBcc, i_FSAVE, i_FRESTORE, i_CINVL, i_CINVP, i_CINVA, i_CPUSHL, i_CPUSHP, i_CPUSHA, i_MOVE16, i_MMUOP } ENUMNAME (instrmnem); extern struct mnemolookup { instrmnem mnemo; const char *name; } lookuptab[]; ENUMDECL { sz_byte, sz_word, sz_long } ENUMNAME (wordsizes); ENUMDECL { fa_set, fa_unset, fa_zero, fa_one, fa_dontcare, fa_unknown, fa_isjmp, fa_isbranch } ENUMNAME (flagaffect); ENUMDECL { fu_used, fu_unused, fu_maybecc, fu_unknown, fu_isjmp } ENUMNAME (flaguse); ENUMDECL { bit0, bit1, bitc, bitC, bitf, biti, bitI, bitj, bitJ, bitk, bitK, bits, bitS, bitd, bitD, bitr, bitR, bitz, bitp, lastbit } ENUMNAME (bitvals); struct instr_def { unsigned int bits; int n_variable; char bitpos[16]; unsigned int mask; int cpulevel; int plevel; struct { unsigned int flaguse:3; unsigned int flagset:3; } flaginfo[5]; unsigned char sduse; const char *opcstr; }; extern struct instr_def defs68k[]; extern int n_defs68k; extern struct instr { long int handler; unsigned char dreg; unsigned char sreg; signed char dpos; signed char spos; unsigned char sduse; int flagdead:8, flaglive:8; unsigned int mnemo:8; unsigned int cc:4; unsigned int plev:2; unsigned int size:2; unsigned int smode:5; unsigned int stype:3; unsigned int dmode:5; unsigned int suse:1; unsigned int duse:1; unsigned int unused1:1; unsigned int clev:3; unsigned int isjmp:1; unsigned int unused2:4; } *table68k; extern void read_table68k (void); extern void do_merges (void); extern int get_no_mismatches (void); extern int nr_cpuop_funcs; tiemu-3.03-nogdb+dfsg/src/core/uae/stamp000066400000000000000000000000001220314353500201140ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/core/uae/sysconfig.h000066400000000000000000000072251220314353500212420ustar00rootroot00000000000000/* sysconfig.h. Generated automatically by configure. */ /* sysconfig.h.in. Generated automatically from configure.in by autoheader. */ /* Define if on AIX 3. System headers sometimes define this. We just want to avoid a redefinition error message. */ #ifndef _ALL_SOURCE /* #undef _ALL_SOURCE */ #endif /* Define to empty if the keyword does not work. */ /* #undef const */ /* Define if your struct stat has st_blocks. */ #define HAVE_ST_BLOCKS 1 /* Define if utime(file, NULL) sets file's timestamp to the present. */ #define HAVE_UTIME_NULL 1 /* Define as __inline if that's what the C compiler calls it. */ /* #undef inline */ /* Define to `int' if doesn't define. */ /* #undef mode_t */ /* Define to `long' if doesn't define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define if you need to in order for stat and other things to work. */ /* #undef _POSIX_SOURCE */ /* Define as the return type of signal handlers (int or void). */ #define RETSIGTYPE void /* Define if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define if your declares struct tm. */ /* #undef TM_IN_SYS_TIME */ /* The number of bytes in a char. */ #define SIZEOF_CHAR 1 /* The number of bytes in a int. */ #define SIZEOF_INT 4 /* The number of bytes in a long. */ #define SIZEOF_LONG 4 /* The number of bytes in a long long. */ #define SIZEOF_LONG_LONG 8 /* The number of bytes in a short. */ #define SIZEOF_SHORT 2 /* Define if you have the gettimeofday function. */ #define HAVE_GETTIMEOFDAY 1 /* Define if you have the mkdir function. */ #define HAVE_MKDIR 1 /* Define if you have the rmdir function. */ #define HAVE_RMDIR 1 /* Define if you have the select function. */ #define HAVE_SELECT 1 /* Define if you have the statfs function. */ #define HAVE_STATFS 1 /* Define if you have the strerror function. */ #define HAVE_STRERROR 1 /* Define if you have the strstr function. */ #define HAVE_STRSTR 1 /* Define if you have the header file. */ #define HAVE_DIRENT_H 1 /* Define if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define if you have the header file. */ /* #undef HAVE_LINUX_JOYSTICK_H */ /* Define if you have the header file. */ /* #undef HAVE_NDIR_H */ /* Define if you have the header file. */ #define HAVE_STRING_H 1 /* Define if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_DIR_H */ /* Define if you have the header file. */ #define HAVE_SYS_MOUNT_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_NDIR_H */ /* Define if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_STATFS_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_STATVFS_H */ /* Define if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define if you have the header file. */ #define HAVE_UTIME_H 1 /* Define if you have the header file. */ #define HAVE_VALUES_H 1 tiemu-3.03-nogdb+dfsg/src/core/uae/sysdeps.h000066400000000000000000000130111220314353500207160ustar00rootroot00000000000000 /* * UAE - The Un*x Amiga Emulator * * Try to include the right system headers and get other system-specific * stuff right & other collected kludges. * * If you think about modifying this, think twice. Some systems rely on * the exact order of the #include statements. That's also the reason * why everything gets included unconditionally regardless of whether * it's actually needed by the .c file. * * Copyright 1996, 1997 Bernd Schmidt * $Id: sysdeps.h 2556 2007-06-24 05:05:05Z kevinkofler $ */ #ifdef _MSC_VER #pragma warning( disable : 4142 ) #endif #define REGPARAM #define REGPARAM2 // This portion copied from the ld-tigcc generic.h // Copyright (C) 2002-2004 Sebastian Reichelt // licensed under the GPL // Attempt to auto-detect I1, I2, I4, SI1, SI2 and SI4 based on . // It is a good idea to double-check these definitions on every new system // you compile on. #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include // Make sure that the character types take exactly 1 byte. #if UCHAR_MAX != 0xFF #error Need 1-byte unsigned char type. #endif /* UCHAR_MAX != 0xFF */ #if SCHAR_MIN != (-0x80) || SCHAR_MAX != 0x7F #error Need 1-byte signed char type. #endif /* UCHAR_MAX != 0xFF */ // Unsigned types. typedef unsigned char uae_u8; #if USHRT_MAX == 0xFFFF typedef unsigned short uae_u16; #elif UINT_MAX == 0xFFFF typedef unsigned int uae_u16; #elif ULONG_MAX == 0xFFFF typedef unsigned long uae_u16; #else /* no 2-byte unsigned int */ #error No 2-byte unsigned integer type found. #endif /* 2-byte unsigned int */ #if ULONG_MAX == 0xFFFFFFFF typedef unsigned long uae_u32; #elif UINT_MAX == 0xFFFFFFFF typedef unsigned int uae_u32; #elif ULONG_LONG_MAX == 0xFFFFFFFF || ULLONG_MAX == 0xFFFFFFFF typedef unsigned long long uae_u32; #else /* no 4-byte unsigned int */ #error No 4-byte unsigned integer type found. #endif /* 4-byte unsigned int */ // Signed types. typedef signed char uae_s8; #if SHRT_MIN == (-0x8000) && SHRT_MAX == 0x7FFF typedef short uae_s16; #elif INT_MIN == (-0x8000) && INT_MAX == 0x7FFF typedef int uae_s16; #elif LONG_MIN == (-0x8000) && LONG_MAX == 0x7FFF typedef long uae_s16; #else /* no 2-byte signed int */ #error No 2-byte signed integer type found. #endif /* 2-byte signed int */ #if LONG_MIN == (-0x80000000) && LONG_MAX == 0x7FFFFFFF typedef long uae_s32; #elif INT_MIN == (-0x80000000) && INT_MAX == 0x7FFFFFFF typedef int uae_s32; #elif (LONG_LONG_MIN == (-0x80000000) && LONG_LONG_MAX == 0x7FFFFFFF) \ || (LLONG_MIN == (-0x80000000) && LLONG_MAX == 0x7FFFFFFF) typedef long long uae_s32; #else /* no 4-byte signed int */ #error No 4-byte signed integer type found. #endif /* 4-byte signed int */ typedef uae_u32 uaecptr; #undef uae_s64 #undef uae_u64 // This part coded by Kevin Kofler. Copyright (C) Kevin Kofler, 2005. // This is hard to do right because too long numbers might cause a parse error. #if defined(ULONG_LONG_MAX) || defined(ULLONG_MAX) #if ULONG_LONG_MAX == 0xFFFFFFFFFFFFFFFFll || ULLONG_MAX == 0xFFFFFFFFFFFFFFFFll #define uae_s64 long long #define uae_u64 unsigned long long #define VAL64(a) (a ## LL) #define UVAL64(a) (a ## uLL) #endif #endif #ifndef uae_u64 #if defined(_MSC_VER) #define uae_s64 __int64 #define uae_u64 unsigned __int64 #define VAL64(a) (a) #define UVAL64(a) (a) #elif ULONG_MAX > 0xFFFFFFFF #if ULONG_MAX == 0xFFFFFFFFFFFFFFFF #define uae_s64 long #define uae_u64 unsigned long #define VAL64(a) (a ## l) #define UVAL64(a) (a ## ul) #endif #endif #endif #ifdef HAVE_STRDUP #define my_strdup strdup #else extern char *my_strdup (const char*s); #endif #include extern void *xmalloc(size_t); extern void *xcalloc(size_t, size_t); /* We can only rely on GNU C getting enums right. Mickeysoft VSC++ is known * to have problems, and it's likely that other compilers choke too. */ #ifdef __GNUC__ #define ENUMDECL typedef enum #define ENUMNAME(name) name /* While we're here, make abort more useful. */ #define abort() \ do { \ fprintf (stderr, "UAE: Internal error; file %s, line %d\n", __FILE__, __LINE__); \ (abort) (); \ } while (0) #else #define ENUMDECL enum #define ENUMNAME(name) ; typedef int name #endif #ifdef X86_ASSEMBLY #define ASM_SYM_FOR_FUNC(a) __asm__(a) #else #define ASM_SYM_FOR_FUNC(a) #endif #if defined USE_COMPILER #undef NO_PREFETCH_BUFFER #undef NO_EXCEPTION_3 #define NO_EXCEPTION_3 #define NO_PREFETCH_BUFFER #endif #ifndef STATIC_INLINE #if __GNUC__ - 1 > 1 && __GNUC_MINOR__ - 1 >= 0 #define STATIC_INLINE static __inline__ __attribute__ ((always_inline)) #define NOINLINE __attribute__ ((noinline)) #else #define STATIC_INLINE static __inline__ #define NOINLINE #endif #endif #ifdef _MSC_VER #define __inline__ __inline #endif /* Every Amiga hardware clock cycle takes this many "virtual" cycles. This used to be hardcoded as 1, but using higher values allows us to time some stuff more precisely. 512 is the official value from now on - it can't change, unless we want _another_ config option "finegrain2_m68k_speed". We define this value here rather than in events.h so that gencpu.c sees it. */ #define CYCLE_UNIT 1 /* (TiEmu patch, was 512) */ /* This one is used by cfgfile.c. We could reduce the CYCLE_UNIT back to 1, I'm not 100% sure this code is bug free yet. */ #define OFFICIAL_CYCLE_UNIT 1 /* (TiEmu patch, was 512) */ /* * You can specify numbers from 0 to 5 here. It is possible that higher * numbers will make the CPU emulation slightly faster, but if the setting * is too high, you will run out of memory while compiling. * Best to leave this as it is. */ #define CPU_EMU_SIZE 0 tiemu-3.03-nogdb+dfsg/src/core/uae/table68k000066400000000000000000000304001220314353500204170ustar00rootroot00000000000000% 0: bit 0 % 1: bit 1 % c: condition code % C: condition codes, except F % f: direction % i: immediate % I: immediate, except 00 and ff % j: immediate 1..8 % J: immediate 0..15 % k: immediate 0..7 % K: immediate 0..63 % p: immediate 0..3 (CINV and CPUSH: cache field) % s: source mode % S: source reg % d: dest mode % D: dest reg % r: reg % z: size % % Actually, a sssSSS may appear as a destination, and % vice versa. The only difference between sssSSS and % dddDDD are the valid addressing modes. There is % no match for immediate and pc-rel. addressing modes % in case of dddDDD. % % Arp: --> -(Ar) % ArP: --> (Ar)+ % L: (xxx.L) % % Fields on a line: % 16 chars bitpattern : % CPU level / privildge level : % CPU level 0: 68000 % 1: 68010 % 2: 68020 % privilege level 0: not privileged % 1: unprivileged only on 68000 (check regs.s) % 2: privileged (check regs.s) % 3: privileged if size == word (check regs.s) % Flags set by instruction: XNZVC : % Flags used by instruction: XNZVC : % - means flag unaffected / unused % 0 means flag reset % 1 means flag set % ? means programmer was too lazy to check or instruction may trap % + means instruction is conditional branch % everything else means flag set/used % / means instruction is unconditional branch/call % x means flag is unknown and well-behaved programs shouldn't check it % srcaddr status destaddr status : % bitmasks of % 1 means fetched % 2 means stored % 4 means jump offset % 8 means jump address % instruction % 0000 0000 0011 1100:00:XNZVC:XNZVC:10: ORSR.B #1 0000 0000 0111 1100:02:?????:?????:10: ORSR.W #1 0000 0zz0 11ss sSSS:20:?????:?????:11: CHK2.z #1,s[!Dreg,Areg,Aipi,Apdi,Immd] 0000 0000 zzdd dDDD:00:-NZ00:-----:13: ORI.z #z,d[!Areg] 0000 0010 0011 1100:00:XNZVC:XNZVC:10: ANDSR.B #1 0000 0010 0111 1100:02:?????:?????:10: ANDSR.W #1 0000 0010 zzdd dDDD:00:-NZ00:-----:13: ANDI.z #z,d[!Areg] 0000 0100 zzdd dDDD:00:XNZVC:-----:13: SUBI.z #z,d[!Areg] 0000 0110 zzdd dDDD:00:XNZVC:-----:13: ADDI.z #z,d[!Areg] 0000 0110 11ss sSSS:20:?????:?????:10: CALLM s[!Dreg,Areg,Aipi,Apdi,Immd] 0000 0110 11ss sSSS:20:?????:?????:10: RTM s[Dreg,Areg] 0000 1000 00ss sSSS:00:--Z--:-----:11: BTST #1,s[!Areg] 0000 1000 01ss sSSS:00:--Z--:-----:13: BCHG #1,s[!Areg,Immd] 0000 1000 10ss sSSS:00:--Z--:-----:13: BCLR #1,s[!Areg,Immd] 0000 1000 11ss sSSS:00:--Z--:-----:13: BSET #1,s[!Areg,Immd] 0000 1010 0011 1100:00:XNZVC:XNZVC:10: EORSR.B #1 0000 1010 0111 1100:02:?????:?????:10: EORSR.W #1 0000 1010 zzdd dDDD:00:-NZ00:-----:13: EORI.z #z,d[!Areg] 0000 1100 zzss sSSS:00:-NZVC:-----:11: CMPI.z #z,s[!Areg,Immd] 0000 1010 11ss sSSS:20:?????:?????:13: CAS.B #1,s[!Dreg,Areg,Immd,PC8r,PC16] 0000 1100 11ss sSSS:20:?????:?????:13: CAS.W #1,s[!Dreg,Areg,Immd,PC8r,PC16] 0000 1100 1111 1100:20:?????:?????:10: CAS2.W #2 0000 1110 zzss sSSS:22:?????:?????:13: MOVES.z #1,s[!Dreg,Areg,Immd,PC8r,PC16] 0000 1110 11ss sSSS:20:?????:?????:13: CAS.L #1,s[!Dreg,Areg,Immd,PC8r,PC16] 0000 1110 1111 1100:20:?????:?????:10: CAS2.L #2 0000 rrr1 00dd dDDD:00:-----:-----:12: MVPMR.W d[Areg-Ad16],Dr 0000 rrr1 01dd dDDD:00:-----:-----:12: MVPMR.L d[Areg-Ad16],Dr 0000 rrr1 10dd dDDD:00:-----:-----:12: MVPRM.W Dr,d[Areg-Ad16] 0000 rrr1 11dd dDDD:00:-----:-----:12: MVPRM.L Dr,d[Areg-Ad16] 0000 rrr1 00ss sSSS:00:--Z--:-----:11: BTST Dr,s[!Areg] 0000 rrr1 01ss sSSS:00:--Z--:-----:13: BCHG Dr,s[!Areg,Immd] 0000 rrr1 10ss sSSS:00:--Z--:-----:13: BCLR Dr,s[!Areg,Immd] 0000 rrr1 11ss sSSS:00:--Z--:-----:13: BSET Dr,s[!Areg,Immd] 0001 DDDd ddss sSSS:00:-NZ00:-----:12: MOVE.B s,d[!Areg] 0010 DDDd ddss sSSS:00:-----:-----:12: MOVEA.L s,d[Areg] 0010 DDDd ddss sSSS:00:-NZ00:-----:12: MOVE.L s,d[!Areg] 0011 DDDd ddss sSSS:00:-----:-----:12: MOVEA.W s,d[Areg] 0011 DDDd ddss sSSS:00:-NZ00:-----:12: MOVE.W s,d[!Areg] 0100 0000 zzdd dDDD:00:XxZxC:X-Z--:30: NEGX.z d[!Areg] 0100 0000 11dd dDDD:01:?????:?????:10: MVSR2.W d[!Areg] 0100 0010 zzdd dDDD:00:-0100:-----:20: CLR.z d[!Areg] 0100 0010 11dd dDDD:10:?????:?????:10: MVSR2.B d[!Areg] 0100 0100 zzdd dDDD:00:XNZVC:-----:30: NEG.z d[!Areg] 0100 0100 11ss sSSS:00:XNZVC:-----:10: MV2SR.B s[!Areg] 0100 0110 zzdd dDDD:00:-NZ00:-----:30: NOT.z d[!Areg] 0100 0110 11ss sSSS:02:?????:?????:10: MV2SR.W s[!Areg] 0100 1000 0000 1rrr:20:-----:-----:31: LINK.L Ar,#2 0100 1000 00dd dDDD:00:X?Z?C:X-Z--:30: NBCD.B d[!Areg] 0100 1000 0100 1kkk:20:?????:?????:10: BKPT #k 0100 1000 01ss sSSS:00:-NZ00:-----:30: SWAP.W s[Dreg] 0100 1000 01ss sSSS:00:-----:-----:00: PEA.L s[!Dreg,Areg,Aipi,Apdi,Immd] 0100 1000 10dd dDDD:00:-NZ00:-----:30: EXT.W d[Dreg] 0100 1000 10dd dDDD:00:-----:-----:02: MVMLE.W #1,d[!Dreg,Areg,Aipi] 0100 1000 11dd dDDD:00:-NZ00:-----:30: EXT.L d[Dreg] 0100 1000 11dd dDDD:00:-----:-----:02: MVMLE.L #1,d[!Dreg,Areg,Aipi] 0100 1001 11dd dDDD:00:-NZ00:-----:30: EXT.B d[Dreg] 0100 1010 zzss sSSS:00:-NZ00:-----:10: TST.z s 0100 1010 11dd dDDD:00:?????:?????:30: TAS.B d[!Areg] 0100 1010 1111 1100:00:?????:?????:00: ILLEGAL 0100 1100 00ss sSSS:20:-NZVC:-----:13: MULL.L #1,s[!Areg] 0100 1100 01ss sSSS:20:?????:?????:13: DIVL.L #1,s[!Areg] 0100 1100 10ss sSSS:00:-----:-----:01: MVMEL.W #1,s[!Dreg,Areg,Apdi,Immd] 0100 1100 11ss sSSS:00:-----:-----:01: MVMEL.L #1,s[!Dreg,Areg,Apdi,Immd] 0100 1110 0100 JJJJ:00:-----:XNZVC:10: TRAP #J 0100 1110 0101 0rrr:00:-----:-----:31: LINK.W Ar,#1 0100 1110 0101 1rrr:00:-----:-----:30: UNLK.L Ar 0100 1110 0110 0rrr:02:-----:-----:10: MVR2USP.L Ar 0100 1110 0110 1rrr:02:-----:-----:20: MVUSP2R.L Ar 0100 1110 0111 0000:02:-----:-----:00: RESET 0100 1110 0111 0001:00:-----:-----:00: NOP 0100 1110 0111 0010:02:XNZVC:-----:10: STOP #1 0100 1110 0111 0011:02:XNZVC:-----:00: RTE 0100 1110 0111 0100:00:?????:?????:10: RTD #1 0100 1110 0111 0101:00:-----:-----:00: RTS 0100 1110 0111 0110:00:-----:XNZVC:00: TRAPV 0100 1110 0111 0111:00:XNZVC:-----:00: RTR 0100 1110 0111 1010:12:?????:?????:10: MOVEC2 #1 0100 1110 0111 1011:12:?????:?????:10: MOVE2C #1 0100 1110 10ss sSSS:00://///://///:80: JSR.L s[!Dreg,Areg,Aipi,Apdi,Immd] 0100 rrr1 00ss sSSS:00:?????:?????:11: CHK.L s[!Areg],Dr 0100 rrr1 10ss sSSS:00:?????:?????:11: CHK.W s[!Areg],Dr 0100 1110 11ss sSSS:00://///://///:80: JMP.L s[!Dreg,Areg,Aipi,Apdi,Immd] 0100 rrr1 11ss sSSS:00:-----:-----:02: LEA.L s[!Dreg,Areg,Aipi,Apdi,Immd],Ar 0101 jjj0 01dd dDDD:00:-----:-----:13: ADDA.W #j,d[Areg] 0101 jjj0 10dd dDDD:00:-----:-----:13: ADDA.L #j,d[Areg] 0101 jjj0 zzdd dDDD:00:XNZVC:-----:13: ADDQ.z #j,d[!Areg] 0101 jjj1 01dd dDDD:00:-----:-----:13: SUBA.W #j,d[Areg] 0101 jjj1 10dd dDDD:00:-----:-----:13: SUBA.L #j,d[Areg] 0101 jjj1 zzdd dDDD:00:XNZVC:-----:13: SUBQ.z #j,d[!Areg] 0101 cccc 1100 1rrr:00:-----:-++++:31: DBcc.W Dr,#1 0101 cccc 11dd dDDD:00:-----:-++++:20: Scc.B d[!Areg] 0101 cccc 1111 1010:20:?????:?????:10: TRAPcc #1 0101 cccc 1111 1011:20:?????:?????:10: TRAPcc #2 0101 cccc 1111 1100:20:?????:?????:00: TRAPcc % Bxx.L is 68020 only, but setting the CPU level to 2 would give illegal % instruction exceptions when compiling a 68000 only emulation, which isn't % what we want either. 0110 0001 0000 0000:00://///://///:40: BSR.W #1 0110 0001 IIII IIII:00://///://///:40: BSR.B #i 0110 0001 1111 1111:00://///://///:40: BSR.L #2 0110 CCCC 0000 0000:00:-----:-++++:40: Bcc.W #1 0110 CCCC IIII IIII:00:-----:-++++:40: Bcc.B #i 0110 CCCC 1111 1111:00:-----:-++++:40: Bcc.L #2 0111 rrr0 iiii iiii:00:-NZ00:-----:12: MOVEQ #i,Dr 1000 rrr0 zzss sSSS:00:-NZ00:-----:13: OR.z s[!Areg],Dr 1000 rrr0 11ss sSSS:00:?????:?????:13: DIVU.W s[!Areg],Dr 1000 rrr1 00dd dDDD:00:XxZxC:X-Z--:13: SBCD.B d[Dreg],Dr 1000 rrr1 00dd dDDD:00:XxZxC:X-Z--:13: SBCD.B d[Areg-Apdi],Arp 1000 rrr1 zzdd dDDD:00:-NZ00:-----:13: OR.z Dr,d[!Areg,Dreg] 1000 rrr1 01dd dDDD:20:?????:?????:12: PACK d[Dreg],Dr 1000 rrr1 01dd dDDD:20:?????:?????:12: PACK d[Areg-Apdi],Arp 1000 rrr1 10dd dDDD:20:?????:?????:12: UNPK d[Dreg],Dr 1000 rrr1 10dd dDDD:20:?????:?????:12: UNPK d[Areg-Apdi],Arp 1000 rrr1 11ss sSSS:00:?????:?????:13: DIVS.W s[!Areg],Dr 1001 rrr0 zzss sSSS:00:XNZVC:-----:13: SUB.z s,Dr 1001 rrr0 11ss sSSS:00:-----:-----:13: SUBA.W s,Ar 1001 rrr1 zzdd dDDD:00:XNZVC:X-Z--:13: SUBX.z d[Dreg],Dr 1001 rrr1 zzdd dDDD:00:XNZVC:X-Z--:13: SUBX.z d[Areg-Apdi],Arp 1001 rrr1 zzdd dDDD:00:XNZVC:-----:13: SUB.z Dr,d[!Areg,Dreg] 1001 rrr1 11ss sSSS:00:-----:-----:13: SUBA.L s,Ar 1011 rrr0 zzss sSSS:00:-NZVC:-----:11: CMP.z s,Dr 1011 rrr0 11ss sSSS:00:-NZVC:-----:11: CMPA.W s,Ar 1011 rrr1 11ss sSSS:00:-NZVC:-----:11: CMPA.L s,Ar 1011 rrr1 zzdd dDDD:00:-NZVC:-----:11: CMPM.z d[Areg-Aipi],ArP 1011 rrr1 zzdd dDDD:00:-NZ00:-----:13: EOR.z Dr,d[!Areg] 1100 rrr0 zzss sSSS:00:-NZ00:-----:13: AND.z s[!Areg],Dr 1100 rrr0 11ss sSSS:00:-NZ00:-----:13: MULU.W s[!Areg],Dr 1100 rrr1 00dd dDDD:00:XxZxC:X-Z--:13: ABCD.B d[Dreg],Dr 1100 rrr1 00dd dDDD:00:XxZxC:X-Z--:13: ABCD.B d[Areg-Apdi],Arp 1100 rrr1 zzdd dDDD:00:-NZ00:-----:13: AND.z Dr,d[!Areg,Dreg] 1100 rrr1 01dd dDDD:00:-----:-----:33: EXG.L Dr,d[Dreg] 1100 rrr1 01dd dDDD:00:-----:-----:33: EXG.L Ar,d[Areg] 1100 rrr1 10dd dDDD:00:-----:-----:33: EXG.L Dr,d[Areg] 1100 rrr1 11ss sSSS:00:-NZ00:-----:13: MULS.W s[!Areg],Dr 1101 rrr0 zzss sSSS:00:XNZVC:-----:13: ADD.z s,Dr 1101 rrr0 11ss sSSS:00:-----:-----:13: ADDA.W s,Ar 1101 rrr1 zzdd dDDD:00:XNZVC:X-Z--:13: ADDX.z d[Dreg],Dr 1101 rrr1 zzdd dDDD:00:XNZVC:X-Z--:13: ADDX.z d[Areg-Apdi],Arp 1101 rrr1 zzdd dDDD:00:XNZVC:-----:13: ADD.z Dr,d[!Areg,Dreg] 1101 rrr1 11ss sSSS:00:-----:-----:13: ADDA.L s,Ar 1110 jjjf zz00 0RRR:00:XNZVC:-----:13: ASf.z #j,DR 1110 jjjf zz00 1RRR:00:XNZ0C:-----:13: LSf.z #j,DR 1110 jjjf zz01 0RRR:00:XNZ0C:X----:13: ROXf.z #j,DR 1110 jjjf zz01 1RRR:00:-NZ0C:-----:13: ROf.z #j,DR 1110 rrrf zz10 0RRR:00:XNZVC:X----:13: ASf.z Dr,DR 1110 rrrf zz10 1RRR:00:XNZ0C:X----:13: LSf.z Dr,DR 1110 rrrf zz11 0RRR:00:XNZ0C:X----:13: ROXf.z Dr,DR 1110 rrrf zz11 1RRR:00:-NZ0C:-----:13: ROf.z Dr,DR 1110 000f 11dd dDDD:00:XNZVC:-----:13: ASfW.W d[!Dreg,Areg] 1110 001f 11dd dDDD:00:XNZ0C:-----:13: LSfW.W d[!Dreg,Areg] 1110 010f 11dd dDDD:00:XNZ0C:X----:13: ROXfW.W d[!Dreg,Areg] 1110 011f 11dd dDDD:00:-NZ0C:-----:13: ROfW.W d[!Dreg,Areg] 1110 1000 11ss sSSS:20:?????:?????:11: BFTST #1,s[!Areg,Apdi,Aipi,Immd] 1110 1001 11ss sSSS:20:?????:?????:11: BFEXTU #1,s[!Areg,Apdi,Aipi,Immd] 1110 1010 11ss sSSS:20:?????:?????:13: BFCHG #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] 1110 1011 11ss sSSS:20:?????:?????:11: BFEXTS #1,s[!Areg,Apdi,Aipi,Immd] 1110 1100 11ss sSSS:20:?????:?????:13: BFCLR #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] 1110 1101 11ss sSSS:20:?????:?????:11: BFFFO #1,s[!Areg,Apdi,Aipi,Immd] 1110 1110 11ss sSSS:20:?????:?????:13: BFSET #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] 1110 1111 11ss sSSS:20:?????:?????:13: BFINS #1,s[!Areg,Apdi,Aipi,Immd,PC8r,PC16] % floating point co processor 1111 0010 00ss sSSS:30:?????:?????:11: FPP #1,s 1111 0010 01ss sSSS:30:?????:?????:11: FDBcc #1,s[Areg-Dreg] 1111 0010 01ss sSSS:30:?????:?????:11: FScc #1,s[!Areg,Immd,PC8r,PC16] 1111 0010 0111 1010:30:?????:?????:10: FTRAPcc #1 1111 0010 0111 1011:30:?????:?????:10: FTRAPcc #2 1111 0010 0111 1100:30:?????:?????:00: FTRAPcc 1111 0010 10KK KKKK:30:?????:?????:11: FBcc #K,#1 1111 0010 11KK KKKK:30:?????:?????:11: FBcc #K,#2 1111 0011 00ss sSSS:32:?????:?????:20: FSAVE s[!Dreg,Areg,Aipi,Immd,PC8r,PC16] 1111 0011 01ss sSSS:32:?????:?????:10: FRESTORE s[!Dreg,Areg,Apdi,Immd] 1111 0101 iiii iSSS:40:?????:?????:11: MMUOP #i,s % 68040 instructions 1111 0100 pp00 1rrr:42:-----:-----:02: CINVL #p,Ar 1111 0100 pp01 0rrr:42:-----:-----:02: CINVP #p,Ar 1111 0100 pp01 1rrr:42:-----:-----:00: CINVA #p 1111 0100 pp10 1rrr:42:-----:-----:02: CPUSHL #p,Ar 1111 0100 pp11 0rrr:42:-----:-----:02: CPUSHP #p,Ar 1111 0100 pp11 1rrr:42:-----:-----:00: CPUSHA #p % destination register number is encoded in the following word 1111 0110 0010 0rrr:40:-----:-----:12: MOVE16 ArP,AxP 1111 0110 00ss sSSS:40:-----:-----:12: MOVE16 s[Dreg-Aipi],L 1111 0110 00dd dDDD:40:-----:-----:12: MOVE16 L,d[Areg-Aipi] 1111 0110 00ss sSSS:40:-----:-----:12: MOVE16 s[Aind],L 1111 0110 00dd dDDD:40:-----:-----:12: MOVE16 L,d[Aipi-Aind] tiemu-3.03-nogdb+dfsg/src/core/uae/uae.dsp000066400000000000000000000033551220314353500203470ustar00rootroot00000000000000# Microsoft Developer Studio Project File - Name="uae" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Generic Project" 0x010a CFG=uae - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "uae.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "uae.mak" CFG="uae - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "uae - Win32 Release" (based on "Win32 (x86) Generic Project") !MESSAGE "uae - Win32 Debug" (based on "Win32 (x86) Generic Project") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" MTL=midl.exe !IF "$(CFG)" == "uae - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" !ELSEIF "$(CFG)" == "uae - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "uae___Win32_Debug" # PROP BASE Intermediate_Dir "uae___Win32_Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" !ENDIF # Begin Target # Name "uae - Win32 Release" # Name "uae - Win32 Debug" # End Target # End Project tiemu-3.03-nogdb+dfsg/src/core/uae/uae.dsw000066400000000000000000000025151220314353500203530ustar00rootroot00000000000000Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "build68k"=.\build68k.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "gencpu"=.\gencpu.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name build68k End Project Dependency }}} ############################################################################### Project: "libuae"=.\libuae.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name gencpu End Project Dependency }}} ############################################################################### Project: "uae"=.\uae.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name libuae End Project Dependency }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### tiemu-3.03-nogdb+dfsg/src/core/uae/uconfig.h000066400000000000000000000061631220314353500206700ustar00rootroot00000000000000 /* * UAE - The Un*x Amiga Emulator * * User configuration options * * Copyright 1995 - 1998 Bernd Schmidt * $Id: uconfig.h 1380 2005-05-25 09:11:02Z roms $ */ /* * Please note: Many things are configurable with command line parameters, * and you can put anything you can pass on the command line into a * configuration file ~/.uaerc. Please read the documentation for more * information. * * NOTE NOTE NOTE * Whenever you change something in this file, you have to "make clean" * afterwards. * Don't remove the '#' signs. If you want to enable something, move it out * of the C comment block, if you want to disable something, move it inside * the block. */ /* * When USE_COMPILER is defined, a m68k->i386 instruction compiler will be * used. This is experimental. It has only been tested on a Linux/i386 ELF * machine, although it might work on other i386 Unices. * This is supposed to speed up application programs. It will not work very * well for hardware bangers like games and demos, in fact it will be much * slower. It can also be slower for some applications and/or benchmarks. * It needs a lot of tuning. Please let me know your results with this. * The second define, RELY_ON_LOADSEG_DETECTION, decides how the compiler * tries to detect self-modifying code. If it is not set, the first bytes * of every compiled routine are used as checksum before executing the * routine. If it is set, the UAE filesystem will perform some checks to * detect whether an executable is being loaded. This is less reliable * (it won't work if you don't use the harddisk emulation, so don't try to * use floppies or even the RAM disk), but much faster. * * @@@ NOTE: This option is unfortunately broken in this version. Don't * try to use it. @@@ * #define USE_COMPILER #define RELY_ON_LOADSEG_DETECTION */ /* * Set USER_PROGRAMS_BEHAVE to 1 or 2 to indicate that you are only running * non-hardware banging programs which leave all the dirty work to the * Kickstart. This affects the compiler. Any program that is _not_ in the ROM * (i.e. everything but the Kickstart) will use faster memory access * functions. * There is of course the problem that the Amiga doesn't really distinguish * between user programs and the kernel. Not all of the OS is in the ROM, * e.g. the parallel.device is on the disk and gets loaded into RAM at least * with Kickstart 1.3 (don't know about newer Kickstarts). So you probably * can't print, and some other stuff may also fail to work. * A useless option, really, given the way lots of Amiga software is written. #define USER_PROGRAMS_BEHAVE 0 */ /*************************************************************************** * Operating system/machine specific options * Configure these for your CPU. The default settings should work on any * machine, but may not give optimal performance everywhere. * (These don't do very much yet, except HAVE_RDTSC */ /* * Define this on PPro's, K6's and maybe other non-x86 CPUs. #define MULTIPLICATION_PROFITABLE */ /* * PPros don't like branches. With this option, UAE tries to avoid them in some * places. #define BRANCHES_ARE_EXPENSIVE */ tiemu-3.03-nogdb+dfsg/src/core/uae/xmalloc.c000066400000000000000000000010311220314353500206550ustar00rootroot00000000000000 /* * UAE - The Un*x Amiga Emulator * * Various stuff missing in some OSes. * * Copyright 1997 Bernd Schmidt */ #include #include #include #include "sysdeps.h" void *xmalloc(size_t n) { void *a = malloc (n); if (a == NULL) { fprintf (stderr, "virtual memory exhausted\n"); abort (); } return a; } void *xcalloc (size_t n, size_t size) { void *a = calloc (n, size); if (a == NULL) { fprintf (stderr, "virtual memory exhausted\n"); abort (); } return a; } tiemu-3.03-nogdb+dfsg/src/gui/000077500000000000000000000000001220314353500161415ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/gui/about.c000066400000000000000000000065111220314353500174220ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: about.c 2444 2007-04-15 08:29:34Z roms $ */ /* TiEmu - a TI emulator * Copyright (C) 1999-2005 Romain Lievin * Copyright (C) 2005 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* HAVE_CONFIG_H */ #include #include #include #include #include #include #include #include "intl.h" #include "about.h" #include "paths.h" #include "version.h" #include "tilibs.h" #include "engine.h" #include "support.h" static const char* authors[] = { "Romain Lievin (Linux/Win32) ", "Kevin Kofler (gdb & Linux/Win32) ", "Christian Walther (Mac OS-X) ", NULL }; static const char* documenters[] = { "Romain Lievin (Linux/Win32) ", NULL }; static const char* artists[] = { "Jaime Fernando Meza Meza (icon & skin design)", "hibou/hiboo (logo)", NULL }; gint display_about_dbox(void) { GtkWidget* widget; GtkAboutDialog* dlg; GdkPixbuf *pix; struct stat stbuf; FILE *fd; gchar *filename; int len = 0; gchar buffer[32768]; gchar *version; #ifdef _MSC_VER /* MSVC builds. MinGW builds use Linux file structures. */ filename = g_strconcat(inst_paths.base_dir, "License.txt", NULL); #else /* */ filename = g_strconcat(inst_paths.base_dir, "COPYING", NULL); #endif /* */ if (access(filename, F_OK) == 0) { if (stat(filename, &stbuf) != -1) { len = stbuf.st_size; } if ((fd = fopen(filename, "r")) != NULL) { memset(buffer, 0, sizeof(buffer)); len = fread(buffer, 1, len, fd); fclose(fd); } } version = g_strdup_printf(_("Framework version (cables=%s, files=%s, calcs=%s, conv=%s)"), ticables_version_get(), tifiles_version_get(), ticalcs_version_get(), ticonv_version_get()); //--- widget = gtk_about_dialog_new(); dlg = GTK_ABOUT_DIALOG(widget); pix = create_pixbuf("logo.xpm"); gtk_about_dialog_set_name(dlg, "TiEmu - Ti Emulator - "); gtk_about_dialog_set_version(dlg, TIEMU_VERSION); gtk_about_dialog_set_comments(dlg, version); gtk_about_dialog_set_copyright(dlg, "Copyright (c) 1999-2007 The TiEmu Team"); gtk_about_dialog_set_license(dlg, buffer); gtk_about_dialog_set_website(dlg, "http://lpg.ticalc.org/prj_tiemu"); gtk_about_dialog_set_authors(dlg, authors); gtk_about_dialog_set_documenters(dlg, documenters); gtk_about_dialog_set_artists(dlg, artists); gtk_about_dialog_set_logo(dlg, pix); g_signal_connect_swapped(dlg, "response", G_CALLBACK(gtk_widget_destroy), dlg); //gtk_show_about_dialog(NULL, ""); gtk_widget_show_all(widget); return 0; } tiemu-3.03-nogdb+dfsg/src/gui/about.h000066400000000000000000000021471220314353500174300ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: about.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint display_about_dbox(); tiemu-3.03-nogdb+dfsg/src/gui/calc/000077500000000000000000000000001220314353500170435ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/gui/calc/calc.c000066400000000000000000000441721220314353500201210ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: calc.c 2729 2007-12-16 15:29:16Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2005, Julien Blache * Copyright (c) 2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #ifdef __WIN32__ #include #endif #include #include #include #include #include #include "intl.h" #include "paths.h" #include "skinops.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "tie_error.h" #include "calc.h" #include "dbg_all.h" #include "screenshot.h" #include "keymap.h" #include "logging.h" #include "gscales.h" #define ALLOW_RESIZE_WIN32 GtkWidget *main_wnd = NULL; gboolean explicit_destroy = 0; GtkWidget *area = NULL; SKIN_INFOS skin_infos = { 0 }; extern GdkPixbuf* lcd_mem; extern GdkPixbuf* lcd; extern GdkPixmap* pixmap; extern Pc2TiKey* kbd_keymap; extern const char* skn_keymap; extern const char sknKey92[]; extern const char sknKey89[]; extern uint32_t* lcd_bytmap; extern LCD_INFOS li; extern float sf; // scaling factor extern LCD_RECT ls; extern LCD_RECT lr; extern SKN_RECT sr; extern WND_RECT wr; static guint tid = -1; extern int shot_cnt; extern int skip_cnt; // part 1: set scale factor static void set_scale(int view_mode) { if(view_mode == VIEW_NORMAL) { options.scale = sf = 1.0; } else if(view_mode == VIEW_LARGE) { options.scale = sf = 2.0; } else if(view_mode == VIEW_FULL) { GdkScreen* screen = gdk_screen_get_default(); gint sw = gdk_screen_get_width(screen); gint sh = gdk_screen_get_height(screen); sf = (float)sw / lr.w; sf = (float)sh / lr.h; //printf("%i %i %f\n", sw, lr.w, sf); //printf("%i %i %f\n", sh, lr.h, sf); options.scale = sf = (float)1.0; // restricted to 3.0, too CPU intensive ! } } // part 2: compute sizes static void set_infos(void) // set window & lcd sizes { // LCD rectangle (source: skin) ls.x = (int)(sf * skin_infos.lcd_pos.left); ls.y = (int)(sf * skin_infos.lcd_pos.top); ls.w = (int)(sf * tihw.lcd_w); ls.h = (int)(sf * tihw.lcd_h); // LCD rectangle (target: window) if(options.skin) { lr.x = ls.x; lr.y = ls.y; } else { lr.x = 0; lr.y = 0; } lr.w = (int)(sf * tihw.lcd_w); lr.h = (int)(sf * tihw.lcd_h); // SKN rectangle sr.x = sr.y = 0; sr.w = (int)(sf * skin_infos.width); sr.h = (int)(sf * skin_infos.height); // WND rectangle (= LCD or SKN depending on w/ or w/o skin) wr.x = wr.y = 0; if(options.skin) { wr.w = sr.w; wr.h = sr.h; } else { wr.w = lr.w; wr.h = lr.h; } #if 0 printf("LCD src: %3i %3i %3i %3i\n", ls.x, ls.y, ls.w, ls.h); printf("LCD dst: %3i %3i %3i %3i\n", lr.x, lr.y, lr.w, lr.h); printf("SKN : %3i %3i %3i %3i\n", sr.x, sr.y, sr.w, sr.h); printf("WND : %3i %3i %3i %3i\n", wr.x, wr.y, wr.w, wr.h); #endif } // part 3: set changes on window static void set_window(int full_redraw) { if(main_wnd->window == NULL) return; // resize window and drawing area if(full_redraw) gtk_window_resize(GTK_WINDOW(main_wnd), wr.w, wr.h); #if defined(__WIN32__) && defined(ALLOW_RESIZE_WIN32) if(!full_redraw) gdk_window_resize(main_wnd->window, wr.w, wr.h); #endif // reallocate backing pixmap if(pixmap != NULL) { // free current backing pixmap g_object_unref(pixmap); pixmap = NULL; // and allocate a new one pixmap = gdk_pixmap_new(main_wnd->window, wr.w, wr.h, -1); if(pixmap == NULL) { gchar *s = g_strdup_printf("unable to create backing pixmap.\n"); tiemu_error(0, s); g_free(s); return; } } } static void set_constraints(void) { // Allows resizing of window with a constant aspect ratio. // This is the right way as used under Linux. // Does not work under Windows thus not enabled. #if !defined(__WIN32__) || !defined(ALLOW_RESIZE_WIN32) if(1) { GdkGeometry geom = { -1 }; GdkWindowHints mask = GDK_HINT_MIN_SIZE | GDK_HINT_ASPECT; double r = (float)wr.w / wr.h; geom.min_width = 100; geom.min_height = 100; geom.min_aspect = r; geom.max_aspect = r; gtk_window_set_geometry_hints(GTK_WINDOW(main_wnd), area, &geom, mask); //printf("set_constraints: %i %i %1.2f\n", wr.w, wr.h, r); } #endif } // Main wnd by loading glade xml file or by executing glade generated code gint display_main_wnd(void) { GladeXML *xml; gchar *title; xml = glade_xml_new (tilp_paths_build_glade("calc-2.glade"), "calc_wnd", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); main_wnd = glade_xml_get_widget(xml, "calc_wnd"); area = glade_xml_get_widget(xml, "drawingarea1"); gtk_window_move(GTK_WINDOW(main_wnd), options3.calc.rect.x, options3.calc.rect.y); set_constraints(); gtk_widget_realize(main_wnd); // set drawing area valid // set window title (useful for TIGCC-IDE for instance) // Note: lpWindowName is "TiEmu (%s)" and lpClassName is "gdkWindowToplevel" title = g_strdup_printf("TiEmu (%s)", ti68k_calctype_to_string(tihw.calc_type)); gtk_window_set_title(GTK_WINDOW(main_wnd), title); g_free(title); return 0; } extern void on_exit_without_saving_state1_activate(GtkMenuItem* item, gpointer data); GLADE_CB void on_calc_wnd_destroy (GtkObject *object, gpointer user_data) { // Uninstall LCD refresh (to avoid earlier use of main_wnd by hid_lcd_update) g_source_remove(tid); // When GTK called this signal, the widget has already been destroy // thus set the pointer to a valid value, ie NULL . main_wnd = NULL; if(!explicit_destroy) on_exit_without_saving_state1_activate(NULL, NULL); } extern void redraw_skin(void); GLADE_CB gboolean on_drawingarea1_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { float factor; // compute scaling factor if(options.skin) factor = (float)event->width / (float)skin_infos.width; else factor = (float)event->width / (float)tihw.lcd_w; #if 0 printf("on_drawingarea1_configure_event: x y w h = %i %i %i %i\n", event->x, event->y, event->width, event->height); printf("on_drawingarea1_configure_event: f = %1.2f\n", factor); #endif // if normal or large view then exits if((factor == 1.0) || (factor == 2.0)) return FALSE; // set scaling factor options.scale = sf = factor; options.view = VIEW_CUSTOM; // compute sizes set_infos(); // and set window size set_window(0); redraw_skin(); return FALSE; } GLADE_CB gboolean on_drawingarea1_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { gdk_draw_pixmap( widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pixmap, event->area.x, event->area.y, event->area.x, event->area.y, event->area.width, event->area.height); return FALSE; } static int match_skin(int calc_type) { SKIN_INFOS *sk = &skin_infos; int ok; gchar *skin_name, *s; s = g_strdup(ti68k_calctype_to_string(calc_type)); skin_name = g_ascii_strdown(s, strlen(s)); g_free(s); if(!strcmp(skin_name, "ti92+")) skin_name[4] = '\0'; #ifdef __IPAQ__ s = g_strconcat("ipaq_", skin_name, NULL); g_free(skin_name); skin_name = s; #endif // filename is "", load default skin if(!strcmp(g_basename(options.skin_file), "")) { g_free(options.skin_file); options.skin_file = g_strdup_printf("%s%s.skn", inst_paths.skin_dir, skin_name); g_free(skin_name); return -1; } // load skin header if(skin_read_header(sk, options.skin_file) == -1) { g_free(options.skin_file); options.skin_file = g_strdup_printf("%s%s.skn", inst_paths.skin_dir, skin_name); g_free(skin_name); return -1; } // is skin compatible switch(tihw.calc_type) { case TI92: case TI92p: ok = !strcmp((const char *)sk->calc, SKIN_TI92) || !strcmp((const char *)sk->calc, SKIN_TI92P); break; case TI89: ok = !strcmp((const char *)sk->calc, SKIN_TI89); break; case TI89t: ok = !strcmp((const char *)sk->calc, SKIN_TI89T); break; case V200: ok = !strcmp((const char *)sk->calc, SKIN_V200); break; default: ok = 0; break; } if(!ok) { g_free(options.skin_file); options.skin_file = g_strdup_printf("%s%s.skn", inst_paths.skin_dir, skin_name); //tiemu_error(0, _("skin incompatible with the current calc model. Falling back to default skin.")); g_free(skin_name); return -1; } g_free(skin_name); return 0; } static int match_keymap(int calc_type) { gchar *keys_name, *s; int ct, ok; s = g_strdup(ti68k_calctype_to_string(calc_type)); keys_name = g_ascii_strdown(s, strlen(s)); if(!strcmp(keys_name, "ti92+") || !strcmp(keys_name, "ti89t")) keys_name[4] = '\0'; if(!strcmp(keys_name, "v200plt")) strcpy(keys_name, "ti92"); // filename is "", load default keymap if(!strcmp(g_basename(options.keys_file), "")) { g_free(options.keys_file); options.keys_file = g_strdup_printf("%s%s.map", inst_paths.skin_dir, keys_name); } // load keymap header ct = keymap_read_header(options.keys_file); if(ct == -1) { g_free(options.keys_file); options.keys_file = g_strdup_printf("%s%s.map", inst_paths.skin_dir, keys_name); g_free(keys_name); return -1; } // is keymap compatible switch(tihw.calc_type) { case TI92: case TI92p: case V200: ok = (ct == TI92) || (ct == TI92p) || (ct == V200); break; case TI89: case TI89t: ok = (ct == TI89) || (ct == TI89t); break; default: ok = 0; break; } if(!ok) { g_free(options.keys_file); options.keys_file = g_strdup_printf("%s%s.map", inst_paths.skin_dir, keys_name); //tiemu_error(0, _("keymap incompatible with the current calc model. Falling back to default keymap.")); g_free(keys_name); return -1; } g_free(keys_name); return 0; } G_LOCK_EXTERN(lcd_flag); extern volatile int lcd_flag; extern volatile int debugger; static gint hid_refresh (gpointer data) { if(lcd_flag || (tihw.hw_type >= HW2)) { // TI92+: jackycar, TI89: baballe hid_update_lcd(); G_LOCK(lcd_flag); lcd_flag = 0; G_UNLOCK(lcd_flag); if(tihw.hw_type >= HW2) lcd_hook_hw2(TRUE); } return TRUE; } void compute_convtable(void); void compute_grayscale(void); extern void dnd_init(void); extern void dnd_exit(void); int hid_init(void) { // Found a PC keyboard keymap match_keymap(tihw.calc_type); // Load kbd keymap if(keymap_load(options.keys_file) == -1) { gchar *s = g_strdup_printf("unable to load this keymap: <%s>\n", options.keys_file); tiemu_error(0, s); g_free(s); return -1; } // Found a skin match_skin(tihw.calc_type); // Load skin (2 parts) if(skin_load(&skin_infos, options.skin_file) == -1) { gchar *s = g_strdup_printf("unable to load this skin: <%s>\n", options.skin_file); tiemu_error(0, s); g_free(s); return -1; } // Set skin keymap depending on calculator type switch(tihw.calc_type) { case TI92: case TI92p: case V200: skn_keymap = sknKey92; break; case TI89: case TI89t: skn_keymap = sknKey89; break; default: { gchar *s = g_strdup_printf("no skin found for this calc\n"); tiemu_error(0, s); g_free(s); return -1; } } // Set window/LCD sizes sf = options.scale; set_scale(options.view); set_infos(); // Allocate the TI screen buffer lcd_bytmap = (uint32_t *)malloc(LCDMEM_W * LCDMEM_H); // Allocate the lcd pixbuf lcd_mem = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, LCDMEM_W, LCDMEM_H); if(lcd_mem == NULL) { gchar *s = g_strdup_printf("unable to create LCD pixbuf.\n"); tiemu_error(0, s); g_free(s); return -1; } // Used by TI89 (the LCD view is clipped from memory view) lcd = gdk_pixbuf_new_subpixbuf(lcd_mem, 0, 0, tihw.lcd_w, tihw.lcd_h); // Constants for LCD update (speed-up) li.n_channels = gdk_pixbuf_get_n_channels (lcd_mem); li.width = gdk_pixbuf_get_width (lcd_mem); li.height = gdk_pixbuf_get_height (lcd_mem); li.rowstride = gdk_pixbuf_get_rowstride (lcd_mem); li.pixels = gdk_pixbuf_get_pixels (lcd_mem); // Create main window display_main_wnd(); // Allocate the backing pixmap (used for drawing and refresh) pixmap = gdk_pixmap_new(main_wnd->window, wr.w, wr.h, -1); if(pixmap == NULL) { gchar *s = g_strdup_printf("unable to create backing pixmap.\n"); tiemu_error(0, s); g_free(s); return -1; } // Draw the skin and compute grayscale palette set_window(1); redraw_skin(); compute_grayscale(); // Init the planar/chunky conversion table for LCD compute_convtable(); // Install LCD refresh: 100 FPS (10 ms) tid = g_timeout_add((params.lcd_rate == -1) ? 50 : params.lcd_rate, (GtkFunction)hid_refresh, NULL); explicit_destroy = 0; gtk_widget_show(main_wnd); // show wnd here if(options.view == VIEW_FULL) gdk_window_fullscreen(main_wnd->window); lcd_planes[0] = tihw.lcd_adr; lcd_planebufs[0] = &tihw.ram[tihw.lcd_adr]; ngc = 1; lcd_changed = 1; dnd_init(); return 0; } int hid_exit(void) { // Uninstall LCD refresh g_source_remove(tid); // Release resources if(lcd_mem != NULL) { g_object_unref(lcd_mem); lcd_mem = NULL; g_object_unref(lcd); lcd = NULL; } if(pixmap != NULL) { g_object_unref(pixmap); pixmap = NULL; } // Destroy window if(main_wnd) { explicit_destroy = !0; gtk_widget_destroy(main_wnd); } return 0; } void hid_lcd_rate_set(void) { g_source_remove(tid); tid = g_timeout_add((params.lcd_rate == -1) ? 50 : params.lcd_rate, (GtkFunction)hid_refresh, NULL); } int hid_switch_with_skin(void) { options.skin = 1; set_infos(); set_constraints(); set_window(1); redraw_skin(); return 0; } int hid_switch_without_skin(void) { options.skin = 0; set_infos(); set_constraints(); set_window(1); redraw_skin(); return 0; } int hid_change_skin(const char *filename) { int ret1, ret2; ret1 = hid_exit(); ret2 = hid_init(); return ret1 | ret2; } int hid_switch_fullscreen(void) { if(options.view != VIEW_FULL) { set_scale(options.view = VIEW_FULL); set_infos(); set_window(1); redraw_skin(); gdk_window_fullscreen(main_wnd->window); } return 0; } int hid_switch_normal_view(void) { if(options.view != VIEW_NORMAL) { set_scale(options.view = VIEW_NORMAL); set_infos(); set_window(1); redraw_skin(); gdk_window_unfullscreen(main_wnd->window); } return 0; } int hid_switch_large_view(void) { if(options.view != VIEW_LARGE) { set_scale(options.view = VIEW_LARGE); set_infos(); set_window(1); redraw_skin(); gdk_window_unfullscreen(main_wnd->window); } return 0; } int hid_screenshot_burst(void) { shot_cnt = options2.shots; skip_cnt = options2.skips; return 0; } int hid_screenshot_single(void) { gchar *outfile; gchar *ext = ""; gchar *type = ""; GdkPixbuf *pixbuf = { 0 }; gboolean result = FALSE; GError *error = NULL; switch(options2.format) { case IMG_JPG: ext = "jpg"; type = "jpeg"; break; case IMG_PNG: ext = "png"; type = "png"; break; case IMG_ICO: ext = "ico"; type = "ico"; break; case IMG_EPS: ext = "eps"; type = "eps"; break; case IMG_PDF: ext = "pdf"; type = "pdf"; break; case IMG_BMP: ext = "bmp"; type = "bmp"; break; default: ext = "png"; type = "png"; break; } outfile = g_strdup_printf("%s%s%s%03i.%s", options2.folder, G_DIR_SEPARATOR_S, options2.file, options2.counter, ext); tiemu_info(_("screenshot to %s... "), outfile); if((options2.size == IMG_LCD) && (options2.type == IMG_BW)) { // get pixbuf from TI memory (LCD buffer) pixbuf = hid_copy_lcd(); } else if((options2.size == IMG_LCD) && (options2.type == IMG_COL)) { // get pixbuf from grayscale lcd pixbuf = gdk_pixbuf_copy(lcd); } else if((options2.size == IMG_SKIN) && (options2.type == IMG_COL)) { // get pixbuf from backing pixmap pixbuf = gdk_pixbuf_get_from_drawable(NULL, pixmap, NULL, 0, 0, 0, 0, wr.w, wr.h); } else { tiemu_warning(_("unsupported screenshot options combination, screenshot aborted.")); return 0; } switch (options2.format) { case IMG_EPS: result = tiemu_screen_write_eps(outfile, pixbuf, &error); break; case IMG_PDF: result = tiemu_screen_write_pdf(outfile, pixbuf, &error); break; default: result = gdk_pixbuf_save(pixbuf, outfile, type, &error, NULL); break; } if(options2.clipboard) { GtkClipboard *clipboard; clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); gtk_clipboard_set_image(clipboard, pixbuf); } if (result == FALSE) { tiemu_warning(_("failed to save pixbuf file: %s: %s"), outfile, error->message); g_error_free(error); } g_object_unref(pixbuf); tiemu_info(_("done!")); options2.counter++; return 0; } GLADE_CB gboolean on_calc_wnd_window_state_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { return FALSE; } tiemu-3.03-nogdb+dfsg/src/gui/calc/calc.h000066400000000000000000000037731220314353500201300ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: calc.h 1977 2006-02-18 13:13:31Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __CALC_H__ #define __CALC_H__ #include #include "struct.h" /* Variables */ extern GtkWidget *main_wnd; /* Functions */ int hid_init(void); int hid_exit(void); void hid_lcd_rate_set(void); int hid_update_keys(void); int hid_update_lcd(void); int hid_switch_with_skin(void); int hid_switch_without_skin(void); int hid_change_skin(const char *filename); int hid_switch_fullscreen(void); int hid_switch_unfullscreen(void); int hid_switch_normal_view(void); int hid_switch_large_view(void); void hid_set_callbacks(void); int hid_screenshot_single(void); int hid_screenshot_burst(void); int hid_popup_menu(void); GdkPixbuf* hid_copy_lcd(void); /* Private Types */ typedef struct { uint8_t r; uint8_t g; uint8_t b; } RGB; typedef struct { int width; int height; int rowstride; int n_channels; guchar* pixels; gulong* pixels2; } LCD_INFOS; typedef GdkRect LCD_RECT; typedef GdkRect SKN_RECT; typedef GdkRect WND_RECT; #endif tiemu-3.03-nogdb+dfsg/src/gui/calc/dnd.c000066400000000000000000000117631220314353500177640ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: calc.c 2279 2006-11-22 19:47:12Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2006, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include #include "support.h" #include "tilibs.h" #include "ti68k_int.h" #include "struct.h" #include "calc.h" #include "engine.h" #include "fs_misc.h" #include "romversion.h" void dnd_init(void) { extern GtkWidget *main_wnd; gtk_drag_dest_set (main_wnd, 0, NULL, 0, 0); } GLADE_CB gboolean on_calc_wnd_drag_drop (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time, gpointer user_data) { if (context->targets) { gtk_drag_get_data (widget, context, GDK_POINTER_TO_ATOM (context->targets->data), time); return TRUE; } return FALSE; } extern int import_romversion(const char *filename); GLADE_CB void on_calc_wnd_drag_data_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *data, guint info, guint time, gpointer user_data) { gchar **filenames = NULL; if ((data->length >= 0) && (data->format == 8)) { gchar *tok, *str = data->data; gchar **uris, **p; guint length; gchar *fn; g_print ("Received \"%s\"\n", str); // is this an URI? if(g_ascii_strncasecmp(str, "file://", 7)) gtk_drag_finish (context, FALSE, FALSE, time); // tails '\r\n' termination if ((tok = strrchr(str, '\r')) || (tok = strrchr(str, '\n'))) *tok = '\0'; // split if several filenames uris = g_strsplit(str, "\r\n", 0); length = g_strv_length(uris); printf("uris size = %u\n", length); // convert URIs to filenames for(p = uris; *p; p++) { // is this an URI? if (!g_ascii_strncasecmp(*p, "file://", 7)) { GError *error = NULL; gchar *fn; gchar *tok; // convert URI to filename fn = g_filename_from_uri(*p, NULL, &error); if(fn == NULL) { fprintf(stderr, "DnD error: %s\n", error ? error->message : "g_filename_from_uri error"); g_strfreev(uris); goto ocwwdr_end; } // tails string if ((tok = strchr(fn, '\r')) || (tok = strchr(fn, '\n'))) *tok = '\0'; // debug printf("fn = <%s>\n", fn); g_free(*p); *p = fn; } } // we have got our filenames... filenames = uris; fn = filenames[0]; // let's them process! if((length == 1) && !strcmp(tifiles_fext_get(fn), "skn")) { // Load new skin (fs_misc.c) g_free(options.skin_file); options.skin_file = g_strdup(fn); hid_change_skin(options.skin_file); } else if(length == 1 && (!strcmp(tifiles_fext_get(fn), "rom") || ti68k_is_a_rom_file(fn) || ti68k_is_a_tib_file(fn))) { { // Add rom to wizard if(!engine_is_stopped()) engine_stop(); import_romversion(fn); display_romversion_dbox(FALSE); engine_start(); } } else if((length == 1) && !strcmp(tifiles_fext_get(fn), "sav")) { // Load save state engine_stop(); fs_load_state(fn); engine_start(); } else if(tifiles_file_is_ti(fn) && (tifiles_calc_is_ti9x(tifiles_file_get_model(fn)) || tifiles_file_is_tigroup(fn))) { // Send one or more file (fs_misc.c) if(engine_is_stopped()) goto ocwwdr_end; engine_stop(); fs_send_files(filenames); engine_start(); } gtk_drag_finish (context, TRUE, FALSE, time); g_strfreev(filenames); return; } ocwwdr_end: g_strfreev(filenames); gtk_drag_finish (context, FALSE, FALSE, time); } tiemu-3.03-nogdb+dfsg/src/gui/calc/keyboard.c000066400000000000000000000157211220314353500210150ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: keyboard.c 2681 2007-11-20 18:01:02Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2005, Christian Walther (patches for Mac OS-X port) * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "intl.h" #include "paths.h" #include "skinops.h" #include "keydefs.h" #include "support.h" #include "ti68k_int.h" #include "popup.h" #include "screenshot.h" #include "fs_misc.h" #include "calc.h" #include "keymap.h" #include "dbg_all.h" #include "keypress.h" #include "dboxes.h" Pc2TiKey* kbd_keymap = keymap; const char* skn_keymap; extern SKIN_INFOS skin_infos; static int hwkey_to_tikey(guint16 hardware_keycode, int action) { int i; for(i = 0; i < KEYMAP_MAX; i++) { int ti_key, modifier; if(kbd_keymap[i].pc_key == hardware_keycode) { ti_key = kbd_keymap[i].ti_key; modifier = kbd_keymap[i].modifier; if(options.kbd_dbg) { gchar *str; str = g_strdup_printf("%s:%s,%s\n", keymap_value_to_string(pckeys, hardware_keycode), keymap_value_to_string(tikeys, ti_key), keymap_value_to_string(tikeys, modifier)); msg_box1(_("Information"), str); g_free(str); } if(modifier != -1) { ti68k_kbd_set_key(modifier, action); kp_recording_key(modifier, action); } ti68k_kbd_set_key(ti_key, action); kp_recording_key(ti_key, action); return !0; } } return 0; } /* Converts the mouse position into a TIKEY_xx code Checks if the mouse cursor is within a rectangle defined in the key_pos array */ static int pos_to_key(int x, int y) { int i; RECT *kp = skin_infos.keys_pos; int nkeys = sizeof(skin_infos.keys_pos) / sizeof(RECT); extern float sf; for(i = 0; i < nkeys; i++) { if((x >= sf*kp[i].left) && (x < sf*kp[i].right) && (y >= sf*kp[i].top) && (y < sf*kp[i].bottom)) { if(options.kbd_dbg) printf("tikey = %02x (%s)\n", skn_keymap[i], keymap_value_to_string(tikeys, skn_keymap[i])); return skn_keymap[i]; } } return -1; } #ifdef __IPAQ__ /* Check if the mouse cursor is within the LCD rectangle. */ static int pos_to_mnu(int x, int y) { extern LCD_RECT lr; if((x >= lr.x) && (x <= lr.x + lr.w) && (y >= lr.y) && (y <= lr.y + lr.h)) return !0; return 0; } #endif /* __IPAQ__ */ // raise the main popup menu static void do_popup_menu (GtkWidget *my_widget, GdkEventButton *event) { GtkWidget *menu; int event_button, event_time; menu = display_popup_menu(); if (event) { event_button = event->button; event_time = event->time; } else { event_button = 0; event_time = gtk_get_current_event_time (); } gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, event_button, event_time); gtk_widget_show(menu); } GLADE_CB gboolean on_calc_wnd_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { if(event->type != GDK_BUTTON_PRESS) return FALSE; if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { do_popup_menu(widget, event); return TRUE; } if(event->button == 1) { int key = pos_to_key((int)event->x, (int)event->y); if(key >= 0) { ti68k_kbd_set_key(key, 1); kp_recording_key(key, 1); return TRUE; } } #ifdef __IPAQ__ if(event->button == 1) { printf("."); if(pos_to_mnu((int)event->x, (int)event->y)) { do_popup_menu(widget, event); return TRUE; } } #endif return FALSE; } GLADE_CB gboolean on_calc_wnd_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { if(event->type != GDK_BUTTON_RELEASE) return FALSE; if(event->button == 1) { int key = pos_to_key((int)event->x, (int)event->y); if(key < 0) return FALSE; ti68k_kbd_set_key(key, 0); kp_recording_key(key, 0); return TRUE; } return FALSE; } GLADE_CB gboolean on_calc_wnd_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { #if 0 printf("\n", event->hardware_keycode, event->hardware_keycode, event->keyval, event->keyval, event->state ); #endif #if 0 printf("KeyEvent:\n"); printf(" type: %i\n", event->type); printf(" window: %p\n", event->window); printf(" send_event: %i\n", event->send_event); printf(" time: %ul\n", event->time); printf(" state: %u\n", event->state); printf(" keyval: %08x\n", event->keyval); printf(" length: %i\n", event->length); printf(" string: %s\n", event->string); printf(" hw key: %04x\n", event->hardware_keycode); printf(" group: %u\n", event->group); #endif if(event->keyval == GDK_Pause || (event->keyval == 0xffffff) && (event->hardware_keycode == 0x13)) { on_now1_activate(NULL, NULL); return TRUE; } else if(event->keyval == GDK_Menu) { do_popup_menu(widget, NULL); return TRUE; } else if(event->keyval == GDK_F10) { on_send_file_to_tiemu1_activate(NULL, NULL); return TRUE; } else if(event->keyval == GDK_F11) { on_enter_debugger1_activate(NULL, NULL); return TRUE; } else if(event->keyval == GDK_F12) { on_set_rom1_activate(NULL, NULL); return TRUE; } else return hwkey_to_tikey(event->hardware_keycode, !0) ? TRUE : FALSE; return FALSE; } GLADE_CB gboolean on_calc_wnd_key_release_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { return hwkey_to_tikey(event->hardware_keycode, 0) ? TRUE : FALSE; } tiemu-3.03-nogdb+dfsg/src/gui/calc/keymap.c000066400000000000000000000120671220314353500205030ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: keymap.c 2610 2007-07-19 21:35:03Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include "keydefs.h" #include "pckeys.h" #include "ti68k_int.h" #include "keymap.h" #include "logging.h" #ifdef _MSC_VER Pc2TiKey keymap[KEYMAP_MAX] = {0}; #else Pc2TiKey keymap[KEYMAP_MAX] = {}; #endif // search for key name and return key value (or -1 if not found) int keymap_string_to_value(const KeyTuple *array, const char *key_name) { KeyTuple *p; for(p = (KeyTuple *)array; p->value != -1; p++) if(!strcmp(p->name, key_name)) return p->value; return -1; } // search for key value and return key name const char* keymap_value_to_string(const KeyTuple *array, int key_value) { KeyTuple *p; for(p = (KeyTuple *)array; p->value != -1; p++) if(key_value == p->value) return p->name; return ""; } // return calc type or -1 int keymap_read_header(const char *filename) { FILE *f; char line[256] = { 0 }; // open file f = fopen(filename, "rt"); if(f == NULL) { fprintf(stderr, "unable to open keymap file <%s>.\n", filename); return -1; } // read first line if (!fgets(line, sizeof(line), f)) { fprintf(stderr, "No calc model found !\n"); fclose(f); return -1; } line[strlen(line) - 1] = '\0'; if(strncmp(line, "Model", strlen("Model"))) { fprintf(stderr, "No calc model found !\n"); fclose(f); return -1; } // close file fclose(f); // and convert return ti68k_string_to_calctype(line + 7); } int keymap_load(const char *filename) { FILE *f; char line[256]; int pckey, tikey, mod; int idx = 0; // open file f = fopen(filename, "rt"); if(f == NULL) { fprintf(stderr, "unable to open keymap file <%s>.\n", filename); return -1; } if (!fgets(line, sizeof(line), f)) { fprintf(stderr, "No calc model found !\n"); fclose(f); return -1; } line[strlen(line) - 1] = '\0'; if(strncmp(line, "Model", strlen("Model"))) { fprintf(stderr, "No calc model found !\n"); fclose(f); return -1; } // parse file while(!feof(f)) { gchar **split = { 0 }; gchar **split2 = { 0 }; char *p; // remove cr/lf if (!fgets(line, sizeof(line), f)) break; //line[strlen(line) - 2] = '\0'; p = strrchr(line, '\r'); if(p != NULL) *p = '\0'; p = strrchr(line, '\n'); if(p != NULL) *p = '\0'; // skip comments if((line[0] == '#') || (line[0] == '/')) continue; // split string split = g_strsplit(line, ":", 2); if((split[0] == NULL) || (split[1] == NULL)) { g_strfreev(split); continue; } // split sub-string split2 = g_strsplit(split[1], ",", 2); if(split2[0] == NULL) { g_strfreev(split2); continue; } // convert key names into values pckey = keymap_string_to_value(pckeys, split[0]); if(pckey == -1) { fprintf(stderr, "Warning: non-existent PC key: <%s>\n", split[0]); g_strfreev(split); continue; } tikey = keymap_string_to_value(tikeys, split2[0]); if(tikey == -1) { fprintf(stderr, "Warning: non-existent TI key: <%s>\n", split[1]); g_strfreev(split); continue; } if(split2[1] == NULL) mod = -1; else mod = keymap_string_to_value(tikeys, split2[1]); // and store value keymap[idx].pc_key = pckey; keymap[idx].ti_key = tikey; keymap[idx].modifier = mod; idx++; // free mem g_strfreev(split); g_strfreev(split2); } // close file tiemu_info(_("loading keymap: %s (%i keys)"), g_basename(filename), idx); fclose(f); return 0; } tiemu-3.03-nogdb+dfsg/src/gui/calc/keymap.h000066400000000000000000000032711220314353500205050ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: hid.h 557 2004-07-14 08:17:39Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __KBDMAPPER_H__ #define __KBDMAPPER_H__ #define KEYMAP_MAX 128 // types typedef struct { int value; const char *name; } KeyTuple; typedef struct { int pc_key; // PC key int ti_key; // TI key int modifier; // TI key such as TIKEY_ALPHA } Pc2TiKey; extern Pc2TiKey keymap[KEYMAP_MAX]; extern const KeyTuple tikeys[]; extern const KeyTuple pckeys[]; // functions int keymap_string_to_value(const KeyTuple *array, const char *key_name); const char* keymap_value_to_string(const KeyTuple *array, int key_value); int keymap_read_header(const char *filename); int keymap_load(const char *filename); #endif tiemu-3.03-nogdb+dfsg/src/gui/calc/keynames.c000077500000000000000000000226301220314353500210310ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: keynames.c 2793 2008-05-29 19:41:37Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include "keydefs.h" #include "pckeys.h" typedef struct { int value; const char *name; } KeyTuple; const KeyTuple tikeys[] = { { TIKEY_DOWN, "TIKEY_DOWN" }, { TIKEY_RIGHT, "TIKEY_RIGHT" }, { TIKEY_UP, "TIKEY_UP" }, { TIKEY_LEFT, "TIKEY_LEFT" }, { TIKEY_HAND, "TIKEY_HAND" }, { TIKEY_SHIFT, "TIKEY_SHIFT" }, { TIKEY_DIAMOND, "TIKEY_DIAMOND" }, { TIKEY_2ND, "TIKEY_2ND" }, { TIKEY_3, "TIKEY_3" }, { TIKEY_2, "TIKEY_2" }, { TIKEY_1, "TIKEY_1" }, { TIKEY_F8, "TIKEY_F8" }, { TIKEY_W, "TIKEY_W" }, { TIKEY_S, "TIKEY_S" }, { TIKEY_Z, "TIKEY_Z" }, { TIKEY_6, "TIKEY_6" }, { TIKEY_5, "TIKEY_5" }, { TIKEY_4, "TIKEY_4" }, { TIKEY_F3, "TIKEY_F3" }, { TIKEY_E, "TIKEY_E" }, { TIKEY_D, "TIKEY_D" }, { TIKEY_X, "TIKEY_X" }, { TIKEY_9, "TIKEY_9" }, { TIKEY_8, "TIKEY_8" }, { TIKEY_7, "TIKEY_7" }, { TIKEY_F7, "TIKEY_F7" }, { TIKEY_R, "TIKEY_R" }, { TIKEY_F, "TIKEY_F" }, { TIKEY_C, "TIKEY_C" }, { TIKEY_STORE, "TIKEY_STORE" }, { TIKEY_COMMA, "TIKEY_COMMA" }, { TIKEY_PARIGHT, "TIKEY_PARIGHT" }, { TIKEY_PALEFT, "TIKEY_PALEFT" }, { TIKEY_F2, "TIKEY_F2" }, { TIKEY_T, "TIKEY_T" }, { TIKEY_G, "TIKEY_G" }, { TIKEY_V, "TIKEY_V" }, { TIKEY_SPACE, "TIKEY_SPACE"}, { TIKEY_TAN, "TIKEY_TAN"}, { TIKEY_COS, "TIKEY_COS" }, { TIKEY_SIN, "TIKEY_SIN" }, { TIKEY_F6, "TIKEY_F6" }, { TIKEY_Y, "TIKEY_Y" }, { TIKEY_H, "TIKEY_H" }, { TIKEY_B, "TIKEY_B" }, { TIKEY_DIVIDE, "TIKEY_DIVIDE"}, { TIKEY_P, "TIKEY_P"}, { TIKEY_ENTER2, "TIKEY_ENTER2"}, { TIKEY_LN, "TIKEY_LN" }, { TIKEY_F1, "TIKEY_F1" }, { TIKEY_U, "TIKEY_U" }, { TIKEY_J, "TIKEY_J" }, { TIKEY_N, "TIKEY_N" }, { TIKEY_POWER, "TIKEY_POWER"}, { TIKEY_MULTIPLY, "TIKEY_MULTIPLY" }, { TIKEY_APPS, "TIKEY_APPS" }, { TIKEY_CLEAR, "TIKEY_CLEAR" }, { TIKEY_F5, "TIKEY_F5" }, { TIKEY_I, "TIKEY_I" }, { TIKEY_K, "TIKEY_K" }, { TIKEY_M, "TIKEY_M" }, { TIKEY_EQUALS, "TIKEY_EQUALS"}, { TIKEY_NU, "TIKEY_NU"}, { TIKEY_ESCAPE, "TIKEY_ESCAPE"}, { TIKEY_MODE, "TIKEY_MODE"}, { TIKEY_PLUS, "TIKEY_PLUS"}, { TIKEY_O, "TIKEY_O" }, { TIKEY_L, "TIKEY_L" }, { TIKEY_THETA, "TIKEY_THETA" }, { TIKEY_BACKSPACE, "TIKEY_BACKSPACE" }, { TIKEY_NEGATE, "TIKEY_NEGATE"}, { TIKEY_PERIOD, "TIKEY_PERIOD" }, { TIKEY_0, "TIKEY_0" }, { TIKEY_F4, "TIKEY_F4" }, { TIKEY_Q, "TIKEY_Q" }, { TIKEY_A, "TIKEY_A" }, { TIKEY_ENTER1, "TIKEY_ENTER1"}, { TIKEY_MINUS, "TIKEY_MINUS"}, { TIKEY_ON, "TIKEY_ON"}, { TIKEY_ALPHA, "TIKEY_ALPHA" }, { TIKEY_EE, "TIKEY_EE" }, { TIKEY_CATALOG, "TIKEY_CATALOG" }, { TIKEY_HOME, "TIKEY_HOME" }, { TIKEY_PIPE, "TIKEY_PIPE" }, { TIKEY_VOID, "TIKEY_VOID"}, { -1, "" }, }; const KeyTuple pckeys[] = { { PCKEY_LBUTTON, "PCKEY_LBUTTON" }, { PCKEY_RBUTTON, "PCKEY_RBUTTON" }, { PCKEY_CANCEL, "PCKEY_CANCEL" }, { PCKEY_MBUTTON, "PCKEY_MBUTTON" }, { PCKEY_BACK, "PCKEY_BACK" }, { PCKEY_TAB, "PCKEY_TAB" }, { PCKEY_CLEAR, "PCKEY_CLEAR" }, { PCKEY_RETURN, "PCKEY_RETURN" }, { PCKEY_SHIFT_L, "PCKEY_SHIFT_L" }, { PCKEY_CONTROL_L, "PCKEY_CONTROL_L" }, #ifndef __MACOSX__ /* FIXME: We need the key codes for these on OS X. */ { PCKEY_SHIFT_R, "PCKEY_SHIFT_R" }, { PCKEY_CONTROL_R, "PCKEY_CONTROL_R" }, #endif { PCKEY_MENU, "PCKEY_MENU" }, { PCKEY_PAUSE, "PCKEY_PAUSE" }, { PCKEY_CAPITAL, "PCKEY_CAPITAL" }, { PCKEY_ESCAPE, "PCKEY_ESCAPE" }, { PCKEY_SPACE, "PCKEY_SPACE" }, { PCKEY_PRIOR, "PCKEY_PRIOR" }, { PCKEY_NEXT, "PCKEY_NEXT" }, { PCKEY_END, "PCKEY_END" }, { PCKEY_HOME, "PCKEY_HOME" }, { PCKEY_LEFT, "PCKEY_LEFT" }, { PCKEY_UP, "PCKEY_UP" }, { PCKEY_RIGHT, "PCKEY_RIGHT" }, { PCKEY_DOWN, "PCKEY_DOWN" }, { PCKEY_SELECT, "PCKEY_SELECT" }, { PCKEY_PRINT, "PCKEY_PRINT" }, { PCKEY_EXECUTE, "PCKEY_EXECUTE" }, { PCKEY_SNAPSHOT, "PCKEY_SNAPSHOT" }, { PCKEY_INSERT, "PCKEY_INSERT" }, { PCKEY_DELETE, "PCKEY_DELETE" }, { PCKEY_HELP, "PCKEY_HELP" }, { PCKEY_0, "PCKEY_0" }, { PCKEY_1, "PCKEY_1" }, { PCKEY_2, "PCKEY_2" }, { PCKEY_3, "PCKEY_3" }, { PCKEY_4, "PCKEY_4" }, { PCKEY_5, "PCKEY_5" }, { PCKEY_6, "PCKEY_6" }, { PCKEY_7, "PCKEY_7" }, { PCKEY_8, "PCKEY_8" }, { PCKEY_9, "PCKEY_9" }, { PCKEY_A, "PCKEY_A" }, { PCKEY_B, "PCKEY_B" }, { PCKEY_C, "PCKEY_C" }, { PCKEY_D, "PCKEY_D" }, { PCKEY_E, "PCKEY_E" }, { PCKEY_F, "PCKEY_F" }, { PCKEY_G, "PCKEY_G" }, { PCKEY_H, "PCKEY_H" }, { PCKEY_I, "PCKEY_I" }, { PCKEY_J, "PCKEY_J" }, { PCKEY_K, "PCKEY_K" }, { PCKEY_L, "PCKEY_L" }, { PCKEY_M, "PCKEY_M" }, { PCKEY_N, "PCKEY_N" }, { PCKEY_O, "PCKEY_O" }, { PCKEY_P, "PCKEY_P" }, { PCKEY_Q, "PCKEY_Q" }, { PCKEY_R, "PCKEY_R" }, { PCKEY_S, "PCKEY_S" }, { PCKEY_T, "PCKEY_T" }, { PCKEY_U, "PCKEY_U" }, { PCKEY_V, "PCKEY_V" }, { PCKEY_W, "PCKEY_W" }, { PCKEY_X, "PCKEY_X" }, { PCKEY_Y, "PCKEY_Y" }, { PCKEY_Z, "PCKEY_Z" }, { PCKEY_STARTKEY, "PCKEY_STARTKEY" }, { PCKEY_CONTEXTKEY, "PCKEY_CONTEXTKEY" }, { PCKEY_NUMPAD0, "PCKEY_NUMPAD0" }, { PCKEY_NUMPAD1, "PCKEY_NUMPAD1" }, { PCKEY_NUMPAD2, "PCKEY_NUMPAD2" }, { PCKEY_NUMPAD3, "PCKEY_NUMPAD3" }, { PCKEY_NUMPAD4, "PCKEY_NUMPAD4" }, { PCKEY_NUMPAD5, "PCKEY_NUMPAD5" }, { PCKEY_NUMPAD6, "PCKEY_NUMPAD6" }, { PCKEY_NUMPAD7, "PCKEY_NUMPAD7" }, { PCKEY_NUMPAD8, "PCKEY_NUMPAD8" }, { PCKEY_NUMPAD9, "PCKEY_NUMPAD9" }, { PCKEY_MULTIPLY, "PCKEY_MULTIPLY" }, { PCKEY_ADD, "PCKEY_ADD" }, { PCKEY_SEPARATOR, "PCKEY_SEPARATOR" }, { PCKEY_SUBTRACT, "PCKEY_SUBTRACT" }, { PCKEY_DECIMAL, "PCKEY_DECIMAL" }, { PCKEY_DIVIDE, "PCKEY_DIVIDE" }, { PCKEY_F1, "PCKEY_F1" }, { PCKEY_F2, "PCKEY_F2" }, { PCKEY_F3, "PCKEY_F3" }, { PCKEY_F4, "PCKEY_F4" }, { PCKEY_F5, "PCKEY_F5" }, { PCKEY_F6, "PCKEY_F6" }, { PCKEY_F7, "PCKEY_F7" }, { PCKEY_F8, "PCKEY_F8" }, { PCKEY_F9, "PCKEY_F9" }, { PCKEY_F10, "PCKEY_F10" }, { PCKEY_F11, "PCKEY_F11" }, { PCKEY_F12, "PCKEY_F12" }, { PCKEY_F13, "PCKEY_F13" }, { PCKEY_F14, "PCKEY_F14" }, { PCKEY_F15, "PCKEY_F15" }, { PCKEY_F16, "PCKEY_F16" }, { PCKEY_F17, "PCKEY_F17" }, { PCKEY_F18, "PCKEY_F18" }, { PCKEY_F19, "PCKEY_F19" }, { PCKEY_F20, "PCKEY_F20" }, { PCKEY_F21, "PCKEY_F21" }, { PCKEY_F22, "PCKEY_F22" }, { PCKEY_F23, "PCKEY_F23" }, { PCKEY_F24, "PCKEY_F24" }, { PCKEY_NUMLOCK, "PCKEY_NUMLOCK" }, { PCKEY_OEM_SCROLL, "PCKEY_OEM_SCROLL" }, { PCKEY_OEM_1, "PCKEY_OEM_1" }, { PCKEY_OEM_PLUS, "PCKEY_OEM_PLUS" }, { PCKEY_OEM_COMMA, "PCKEY_OEM_COMMA" }, { PCKEY_OEM_MINUS, "PCKEY_OEM_MINUS" }, { PCKEY_OEM_PERIOD, "PCKEY_OEM_PERIOD" }, { PCKEY_OEM_2, "PCKEY_OEM_2" }, { PCKEY_OEM_3, "PCKEY_OEM_3" }, { PCKEY_OEM_4, "PCKEY_OEM_4" }, { PCKEY_OEM_5, "PCKEY_OEM_5" }, { PCKEY_OEM_6, "PCKEY_OEM_6" }, { PCKEY_OEM_7, "PCKEY_OEM_7" }, { PCKEY_OEM_8, "PCKEY_OEM_8" }, { PCKEY_ICO_F17, "PCKEY_ICO_F17" }, { PCKEY_ICO_F18, "PCKEY_ICO_F18" }, { PCKEY_OEM102, "PCKEY_OEM102" }, { PCKEY_ICO_HELP, "PCKEY_ICO_HELP" }, { PCKEY_ICO_00, "PCKEY_ICO_00" }, { PCKEY_ICO_CLEAR, "PCKEY_ICO_CLEAR" }, { PCKEY_OEM_RESET, "PCKEY_OEM_RESET" }, { PCKEY_OEM_JUMP, "PCKEY_OEM_JUMP" }, { PCKEY_OEM_PA1, "PCKEY_OEM_PA1" }, { PCKEY_OEM_PA2, "PCKEY_OEM_PA2" }, { PCKEY_OEM_PA3, "PCKEY_OEM_PA3" }, { PCKEY_OEM_WSCTRL, "PCKEY_OEM_WSCTRL" }, { PCKEY_OEM_CUSEL, "PCKEY_OEM_CUSEL" }, { PCKEY_OEM_ATTN, "PCKEY_OEM_ATTN" }, { PCKEY_OEM_FINNISH, "PCKEY_OEM_FINNISH" }, { PCKEY_OEM_COPY, "PCKEY_OEM_COPY" }, { PCKEY_OEM_AUTO, "PCKEY_OEM_AUTO" }, { PCKEY_OEM_ENLW, "PCKEY_OEM_ENLW" }, { PCKEY_OEM_BACKTAB, "PCKEY_OEM_BACKTAB" }, { PCKEY_ATTN, "PCKEY_ATTN" }, { PCKEY_CRSEL, "PCKEY_CRSEL" }, { PCKEY_EXSEL, "PCKEY_EXSEL" }, { PCKEY_EREOF, "PCKEY_EREOF" }, { PCKEY_PLAY, "PCKEY_PLAY" }, { PCKEY_ZOOM, "PCKEY_ZOOM" }, { PCKEY_NONAME, "PCKEY_NONAME" }, { PCKEY_PA1, "PCKEY_PA1" }, { PCKEY_OEM_CLEAR, "PCKEY_OEM_CLEAR" }, { -1, "" }, }; tiemu-3.03-nogdb+dfsg/src/gui/calc/keypress.c000066400000000000000000000047651220314353500210700ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: keyboard.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2007, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include "intl.h" #include "struct.h" #include "tie_error.h" #include "keymap.h" static FILE *f_rec = NULL; static FILE *f_ply = NULL; static GTimer* timer = NULL; int kp_recording_stop(void) { fclose(f_rec); f_rec = NULL; g_timer_destroy(timer); timer = NULL; return 0; } int kp_recording_start(const char *filename) { if(f_rec) kp_recording_stop(); f_rec = fopen(filename, "wt"); if(f_rec == NULL) { tiemu_err(0, _("Can't open file.")); return -1; } timer = g_timer_new(); g_timer_start(timer); return 0; } int kp_playing_stop(void) { fclose(f_ply); f_ply = NULL; return 0; } int kp_playing_start(const char *filename) { if(f_ply) kp_playing_stop(); f_ply = fopen(filename, "rt"); if(f_ply == NULL) { tiemu_err(0, _("Can't open file.")); return -1; } return 0; } int kp_recording_key(int key, int action) { if(options.kp_rec_enabled && f_rec) { fprintf(f_rec, "%f:%s=%i\n", g_timer_elapsed(timer, NULL), keymap_value_to_string(tikeys, key), action); } return 0; } int kp_playing_key(int *key, int *action) { double time; char line[256]; char **split; if(f_ply == NULL) return -1; if(feof(f_ply)) return -1; fgets(line, sizeof(line), f_ply); split = g_strsplit_set(line, ":=", 3); if(!split[0] || !split[1] || !split[2]) return -1; sscanf(split[0], "%f", &time); *key = keymap_string_to_value(tikeys, split[1]); *action = (split[2][0] == '1') ? 1 : 0; return 0; } tiemu-3.03-nogdb+dfsg/src/gui/calc/keypress.h000066400000000000000000000022731220314353500210650ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: calc.h 1977 2006-02-18 13:13:31Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2007, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __KEYPRESS_H__ #define __KEYPRESS_H__ int kp_recording_start(const char *filename); int kp_recording_stop(void); int kp_recording_key(int key, int action); int kp_playing_start(const char *filename); int kp_playing_stop(void); int kp_playing_key(int *key, int *action); #endif tiemu-3.03-nogdb+dfsg/src/gui/calc/pckeys.h000066400000000000000000000302041220314353500205110ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: hid.h 557 2004-07-14 08:17:39Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __PCKEYS_H__ #define __PCKEYS_H__ #if defined(__WIN32__) // List taken from #define PCKEY_LBUTTON 0x1 #define PCKEY_RBUTTON 0x2 #define PCKEY_CANCEL 0x3 #define PCKEY_MBUTTON 0x4 #define PCKEY_BACK 0x8 #define PCKEY_TAB 0x9 #define PCKEY_CLEAR 0xC #define PCKEY_RETURN 0xD #define PCKEY_SHIFT_L 0x10 #define PCKEY_CONTROL_L 0x11 #define PCKEY_MENU 0x12 #define PCKEY_PAUSE 0x13 #define PCKEY_CAPITAL 0x14 #define PCKEY_ESCAPE 0x1B #define PCKEY_SPACE 0x20 #define PCKEY_PRIOR 0x21 #define PCKEY_NEXT 0x22 #define PCKEY_END 0x23 #define PCKEY_HOME 0x24 #define PCKEY_LEFT 0x25 #define PCKEY_UP 0x26 #define PCKEY_RIGHT 0x27 #define PCKEY_DOWN 0x28 #define PCKEY_SELECT 0x29 #define PCKEY_PRINT 0x2A #define PCKEY_EXECUTE 0x2B #define PCKEY_SNAPSHOT 0x2C #define PCKEY_INSERT 0x2D #define PCKEY_DELETE 0x2E #define PCKEY_HELP 0x2F #define PCKEY_0 0x30 #define PCKEY_1 0x31 #define PCKEY_2 0x32 #define PCKEY_3 0x33 #define PCKEY_4 0x34 #define PCKEY_5 0x35 #define PCKEY_6 0x36 #define PCKEY_7 0x37 #define PCKEY_8 0x38 #define PCKEY_9 0x39 #define PCKEY_A 0x41 #define PCKEY_B 0x42 #define PCKEY_C 0x43 #define PCKEY_D 0x44 #define PCKEY_E 0x45 #define PCKEY_F 0x46 #define PCKEY_G 0x47 #define PCKEY_H 0x48 #define PCKEY_I 0x49 #define PCKEY_J 0x4A #define PCKEY_K 0x4B #define PCKEY_L 0x4C #define PCKEY_M 0x4D #define PCKEY_N 0x4E #define PCKEY_O 0x4F #define PCKEY_P 0x50 #define PCKEY_Q 0x51 #define PCKEY_R 0x52 #define PCKEY_S 0x53 #define PCKEY_T 0x54 #define PCKEY_U 0x55 #define PCKEY_V 0x56 #define PCKEY_W 0x57 #define PCKEY_X 0x58 #define PCKEY_Y 0x59 #define PCKEY_Z 0x5A #define PCKEY_STARTKEY 0x5B #define PCKEY_CONTEXTKEY 0x5D #define PCKEY_NUMPAD0 0x60 #define PCKEY_NUMPAD1 0x61 #define PCKEY_NUMPAD2 0x62 #define PCKEY_NUMPAD3 0x63 #define PCKEY_NUMPAD4 0x64 #define PCKEY_NUMPAD5 0x65 #define PCKEY_NUMPAD6 0x66 #define PCKEY_NUMPAD7 0x67 #define PCKEY_NUMPAD8 0x68 #define PCKEY_NUMPAD9 0x69 #define PCKEY_MULTIPLY 0x6A #define PCKEY_ADD 0x6B #define PCKEY_SEPARATOR 0x6C #define PCKEY_SUBTRACT 0x6D #define PCKEY_DECIMAL 0x6E #define PCKEY_DIVIDE 0x6F #define PCKEY_F1 0x70 #define PCKEY_F2 0x71 #define PCKEY_F3 0x72 #define PCKEY_F4 0x73 #define PCKEY_F5 0x74 #define PCKEY_F6 0x75 #define PCKEY_F7 0x76 #define PCKEY_F8 0x77 #define PCKEY_F9 0x78 #define PCKEY_F10 0x79 #define PCKEY_F11 0x7A #define PCKEY_F12 0x7B #define PCKEY_F13 0x7C #define PCKEY_F14 0x7D #define PCKEY_F15 0x7E #define PCKEY_F16 0x7F #define PCKEY_F17 0x80 #define PCKEY_F18 0x81 #define PCKEY_F19 0x82 #define PCKEY_F20 0x83 #define PCKEY_F21 0x84 #define PCKEY_F22 0x85 #define PCKEY_F23 0x86 #define PCKEY_F24 0x87 #define PCKEY_NUMLOCK 0x90 #define PCKEY_OEM_SCROLL 0x91 #define PCKEY_SHIFT_R 0xa1 #define PCKEY_CONTROL_R 0xa3 #define PCKEY_OEM_1 0xBA #define PCKEY_OEM_PLUS 0xBB #define PCKEY_OEM_COMMA 0xBC #define PCKEY_OEM_MINUS 0xBD #define PCKEY_OEM_PERIOD 0xBE #define PCKEY_OEM_2 0xBF #define PCKEY_OEM_3 0xC0 #define PCKEY_OEM_4 0xDB #define PCKEY_OEM_5 0xDC #define PCKEY_OEM_6 0xDD #define PCKEY_OEM_7 0xDE #define PCKEY_OEM_8 0xDF #define PCKEY_ICO_F17 0xE0 #define PCKEY_ICO_F18 0xE1 #define PCKEY_OEM102 0xE2 #define PCKEY_ICO_HELP 0xE3 #define PCKEY_ICO_00 0xE4 #define PCKEY_ICO_CLEAR 0xE6 #define PCKEY_OEM_RESET 0xE9 #define PCKEY_OEM_JUMP 0xEA #define PCKEY_OEM_PA1 0xEB #define PCKEY_OEM_PA2 0xEC #define PCKEY_OEM_PA3 0xED #define PCKEY_OEM_WSCTRL 0xEE #define PCKEY_OEM_CUSEL 0xEF #define PCKEY_OEM_ATTN 0xF0 #define PCKEY_OEM_FINNISH 0xF1 #define PCKEY_OEM_COPY 0xF2 #define PCKEY_OEM_AUTO 0xF3 #define PCKEY_OEM_ENLW 0xF4 #define PCKEY_OEM_BACKTAB 0xF5 #define PCKEY_ATTN 0xF6 #define PCKEY_CRSEL 0xF7 #define PCKEY_EXSEL 0xF8 #define PCKEY_EREOF 0xF9 #define PCKEY_PLAY 0xFA #define PCKEY_ZOOM 0xFB #define PCKEY_NONAME 0xFC #define PCKEY_PA1 0xFD #define PCKEY_OEM_CLEAR 0xFE #elif defined(__LINUX__) // List manually written #define PCKEY_LBUTTON -2 //Don't use -1, because that's used as the end-of-list marker! #define PCKEY_RBUTTON -2 #define PCKEY_MBUTTON -2 #define PCKEY_CANCEL -2 #define PCKEY_BACK 0x16 #define PCKEY_TAB 0x17 #define PCKEY_CLEAR 0xff #define PCKEY_RETURN 0x24 #define PCKEY_SHIFT_L 0x32 #define PCKEY_CONTROL_L 0x25 #define PCKEY_SHIFT_R 0x3e #define PCKEY_CONTROL_R 0x6d #define PCKEY_MENU 0x40 #define PCKEY_PAUSE 0x6E #define PCKEY_CAPITAL 0x42 #define PCKEY_ESCAPE 0x09 #define PCKEY_SPACE 0x41 #define PCKEY_PRIOR 0x63 #define PCKEY_NEXT 0x69 #define PCKEY_END 0x67 #define PCKEY_HOME 0x61 #define PCKEY_LEFT 0x64 #define PCKEY_UP 0x62 #define PCKEY_RIGHT 0x66 #define PCKEY_DOWN 0x68 #define PCKEY_SELECT 0x29 #define PCKEY_PRINT 0x6F #define PCKEY_EXECUTE 0xff #define PCKEY_SNAPSHOT 0x6F #define PCKEY_INSERT 0x6A #define PCKEY_DELETE 0x6B #define PCKEY_HELP 0xff #define PCKEY_0 0x13 #define PCKEY_1 0x0A #define PCKEY_2 0x0B #define PCKEY_3 0x0C #define PCKEY_4 0x0D #define PCKEY_5 0x0E #define PCKEY_6 0x0F #define PCKEY_7 0x10 #define PCKEY_8 0x11 #define PCKEY_9 0x12 #define PCKEY_A 0x26 #define PCKEY_B 0x38 #define PCKEY_C 0x36 #define PCKEY_D 0x28 #define PCKEY_E 0x1A #define PCKEY_F 0x29 #define PCKEY_G 0x2A #define PCKEY_H 0x2B #define PCKEY_I 0x1F #define PCKEY_J 0x2C #define PCKEY_K 0x2D #define PCKEY_L 0x2E #define PCKEY_M 0x3A #define PCKEY_N 0x39 #define PCKEY_O 0x20 #define PCKEY_P 0x21 #define PCKEY_Q 0x18 #define PCKEY_R 0x1B #define PCKEY_S 0x27 #define PCKEY_T 0x1C #define PCKEY_U 0x1E #define PCKEY_V 0x37 #define PCKEY_W 0x19 #define PCKEY_X 0x35 #define PCKEY_Y 0x1D #define PCKEY_Z 0x34 #define PCKEY_STARTKEY 0x5B #define PCKEY_CONTEXTKEY 0x5D #define PCKEY_NUMPAD0 0x5A #define PCKEY_NUMPAD1 0x57 #define PCKEY_NUMPAD2 0x58 #define PCKEY_NUMPAD3 0x59 #define PCKEY_NUMPAD4 0x53 #define PCKEY_NUMPAD5 0x54 #define PCKEY_NUMPAD6 0x55 #define PCKEY_NUMPAD7 0x4F #define PCKEY_NUMPAD8 0x50 #define PCKEY_NUMPAD9 0x51 #define PCKEY_MULTIPLY 0x3F #define PCKEY_ADD 0x56 #define PCKEY_SEPARATOR 0x6C #define PCKEY_SUBTRACT 0x52 #define PCKEY_DECIMAL 0x5B #define PCKEY_DIVIDE 0x70 #define PCKEY_F1 0x43 #define PCKEY_F2 0x44 #define PCKEY_F3 0x45 #define PCKEY_F4 0x46 #define PCKEY_F5 0x47 #define PCKEY_F6 0x48 #define PCKEY_F7 0x49 #define PCKEY_F8 0x4A #define PCKEY_F9 0x4B #define PCKEY_F10 0x4C #define PCKEY_F11 0x5F #define PCKEY_F12 0x60 #define PCKEY_F13 0xff #define PCKEY_F14 0xff #define PCKEY_F15 0xff #define PCKEY_F16 0xff #define PCKEY_F17 0xff #define PCKEY_F18 0xff #define PCKEY_F19 0xff #define PCKEY_F20 0xff #define PCKEY_F21 0xff #define PCKEY_F22 0xff #define PCKEY_F23 0xff #define PCKEY_F24 0xff #define PCKEY_NUMLOCK 0x4D #define PCKEY_OEM_SCROLL 0x4E #define PCKEY_OEM_1 0x2F #define PCKEY_OEM_PLUS 0x15 #define PCKEY_OEM_COMMA 0x3B #define PCKEY_OEM_MINUS 0x14 #define PCKEY_OEM_PERIOD 0x3C #define PCKEY_OEM_2 0x3D #define PCKEY_OEM_3 0x31 #define PCKEY_OEM_4 0x22 #define PCKEY_OEM_5 0x33 #define PCKEY_OEM_6 0x23 #define PCKEY_OEM_7 0x30 #define PCKEY_OEM_8 0xff #define PCKEY_ICO_F17 0xff #define PCKEY_ICO_F18 0xff #define PCKEY_OEM102 0x5E #define PCKEY_ICO_HELP 0xff #define PCKEY_ICO_00 0xff #define PCKEY_ICO_CLEAR 0xff #define PCKEY_OEM_RESET 0xff #define PCKEY_OEM_JUMP 0xff #define PCKEY_OEM_PA1 0xff #define PCKEY_OEM_PA2 0xff #define PCKEY_OEM_PA3 0xff #define PCKEY_OEM_WSCTRL 0xff #define PCKEY_OEM_CUSEL 0xff #define PCKEY_OEM_ATTN 0xFf #define PCKEY_OEM_FINNISH 0xFf #define PCKEY_OEM_COPY 0xFf #define PCKEY_OEM_AUTO 0xFf #define PCKEY_OEM_ENLW 0xFf #define PCKEY_OEM_BACKTAB 0xff #define PCKEY_ATTN 0xFf #define PCKEY_CRSEL 0xFf #define PCKEY_EXSEL 0xFf #define PCKEY_EREOF 0xFf #define PCKEY_PLAY 0xFf #define PCKEY_ZOOM 0xFf #define PCKEY_NONAME 0xFf #define PCKEY_PA1 0xFf #define PCKEY_OEM_CLEAR 0xFf #elif defined(__MACOSX__) // List manually written by Christian Walther #define PCKEY_LBUTTON -2 #define PCKEY_RBUTTON -2 #define PCKEY_MBUTTON -2 #define PCKEY_CANCEL -2 #define PCKEY_BACK 59 #define PCKEY_TAB 56 #define PCKEY_CLEAR 0xff #define PCKEY_RETURN 44 #define PCKEY_SHIFT_L 64 #define PCKEY_CONTROL_L 0x43 #define PCKEY_MENU 0x42 //option #define PCKEY_PAUSE 121 #define PCKEY_CAPITAL 65 #define PCKEY_ESCAPE 61 #define PCKEY_SPACE 57 #define PCKEY_PRIOR 124 #define PCKEY_NEXT 129 #define PCKEY_END 127 #define PCKEY_HOME 123 #define PCKEY_LEFT 0x83 #define PCKEY_UP 0x86 #define PCKEY_RIGHT 0x84 #define PCKEY_DOWN 0x85 #define PCKEY_SELECT 0xff #define PCKEY_PRINT 0xff #define PCKEY_EXECUTE 0xff #define PCKEY_SNAPSHOT 113 #define PCKEY_INSERT 122 #define PCKEY_DELETE 125 #define PCKEY_HELP 0xff #define PCKEY_0 37 #define PCKEY_1 26 #define PCKEY_2 27 #define PCKEY_3 28 #define PCKEY_4 29 #define PCKEY_5 31 #define PCKEY_6 30 #define PCKEY_7 34 #define PCKEY_8 36 #define PCKEY_9 33 #define PCKEY_A 8 #define PCKEY_B 19 #define PCKEY_C 16 #define PCKEY_D 10 #define PCKEY_E 22 #define PCKEY_F 11 #define PCKEY_G 13 #define PCKEY_H 12 #define PCKEY_I 42 #define PCKEY_J 46 #define PCKEY_K 48 #define PCKEY_L 45 #define PCKEY_M 54 #define PCKEY_N 53 #define PCKEY_O 39 #define PCKEY_P 43 #define PCKEY_Q 20 #define PCKEY_R 23 #define PCKEY_S 9 #define PCKEY_T 25 #define PCKEY_U 40 #define PCKEY_V 17 #define PCKEY_W 21 #define PCKEY_X 15 #define PCKEY_Y 24 #define PCKEY_Z 14 #define PCKEY_STARTKEY 0x3f //command #define PCKEY_CONTEXTKEY 0xff #define PCKEY_NUMPAD0 90 #define PCKEY_NUMPAD1 91 #define PCKEY_NUMPAD2 92 #define PCKEY_NUMPAD3 93 #define PCKEY_NUMPAD4 94 #define PCKEY_NUMPAD5 95 #define PCKEY_NUMPAD6 96 #define PCKEY_NUMPAD7 97 #define PCKEY_NUMPAD8 99 #define PCKEY_NUMPAD9 100 #define PCKEY_MULTIPLY 75 #define PCKEY_ADD 77 #define PCKEY_SEPARATOR 0xff #define PCKEY_SUBTRACT 86 #define PCKEY_DECIMAL 73 #define PCKEY_DIVIDE 83 #define PCKEY_F1 130 #define PCKEY_F2 128 #define PCKEY_F3 107 #define PCKEY_F4 126 #define PCKEY_F5 104 #define PCKEY_F6 105 #define PCKEY_F7 106 #define PCKEY_F8 108 #define PCKEY_F9 109 #define PCKEY_F10 117 #define PCKEY_F11 111 #define PCKEY_F12 119 #define PCKEY_F13 0xff #define PCKEY_F14 0xff #define PCKEY_F15 0xff #define PCKEY_F16 0xff #define PCKEY_F17 0xff #define PCKEY_F18 0xff #define PCKEY_F19 0xff #define PCKEY_F20 0xff #define PCKEY_F21 0xff #define PCKEY_F22 0xff #define PCKEY_F23 0xff #define PCKEY_F24 0xff #define PCKEY_NUMLOCK 79 #define PCKEY_OEM_SCROLL 115 #define PCKEY_OEM_1 0x31 #define PCKEY_OEM_PLUS 0x20 #define PCKEY_OEM_COMMA 51 #define PCKEY_OEM_MINUS 0x23 #define PCKEY_OEM_PERIOD 55 #define PCKEY_OEM_2 0x34 #define PCKEY_OEM_3 0x12 #define PCKEY_OEM_4 0x29 #define PCKEY_OEM_5 0x32 #define PCKEY_OEM_6 0x26 #define PCKEY_OEM_7 0x2f #define PCKEY_OEM_8 0xff #define PCKEY_ICO_F17 0xff #define PCKEY_ICO_F18 0xff #define PCKEY_OEM102 58 #define PCKEY_ICO_HELP 0xff #define PCKEY_ICO_00 0xff #define PCKEY_ICO_CLEAR 0xff #define PCKEY_OEM_RESET 0xff #define PCKEY_OEM_JUMP 0xff #define PCKEY_OEM_PA1 0xff #define PCKEY_OEM_PA2 0xff #define PCKEY_OEM_PA3 0xff #define PCKEY_OEM_WSCTRL 0xff #define PCKEY_OEM_CUSEL 0xff #define PCKEY_OEM_ATTN 0xFf #define PCKEY_OEM_FINNISH 0xFf #define PCKEY_OEM_COPY 0xFf #define PCKEY_OEM_AUTO 0xFf #define PCKEY_OEM_ENLW 0xFf #define PCKEY_OEM_BACKTAB 0xff #define PCKEY_ATTN 0xFf #define PCKEY_CRSEL 0xFf #define PCKEY_EXSEL 0xFf #define PCKEY_EREOF 0xFf #define PCKEY_PLAY 0xFf #define PCKEY_ZOOM 0xFf #define PCKEY_NONAME 0xFf #define PCKEY_PA1 0xFf #define PCKEY_OEM_CLEAR 0xFf #endif #endif tiemu-3.03-nogdb+dfsg/src/gui/calc/popup.c000066400000000000000000000557661220314353500203750ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: popup.c 2840 2009-05-08 20:43:47Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #ifdef __MINGW32__ #include #endif #include "intl.h" #include "support.h" #include "struct.h" #include "version.h" #include "popup.h" #include "paths.h" #include "engine.h" #include "fs_misc.h" #include "device.h" #include "rcfile.h" #include "dboxes.h" #include "romversion.h" #include "calc.h" #include "release.h" #include "about.h" #include "infos.h" #include "manpage.h" #include "scroptions.h" #include "tie_error.h" #include "dbg_all.h" #include "quicksend.h" #include "filesel.h" #include "keypress.h" #ifndef NO_SOUND #include "audio.h" #endif #include "ti68k_int.h" #include "ti68k_def.h" GLADE_CB void on_popup_menu_header (GtkMenuItem *menuitem, gpointer user_data) { fprintf(stdout, _("* TiEmu version %s (cables=%s, files=%s, calcs=%s, conv=%s)"), TIEMU_VERSION, ticables_version_get(), tifiles_version_get(), ticalcs_version_get(), ticonv_version_get()); } /* menu part 1 (link) */ GLADE_CB void on_send_file_to_tiemu1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(engine_is_stopped()) return; engine_stop(); if(!options.qs_enabled) display_send_files_dbox(); else if(options.qs_enabled && options.qs_file && strlen(options.qs_file)) fs_send_file(options.qs_file); engine_start(); } GLADE_CB void on_recv_file_from_tiemu1_activate (GtkMenuItem *menuitem, gpointer user_data) { int active; if(engine_is_stopped()) return; active = GTK_CHECK_MENU_ITEM(menuitem)->active; #ifndef NO_SOUND if (active) audio_disable(); #endif params.recv_file = active; } GLADE_CB void on_emulate_sound1_activate (GtkMenuItem *menuitem, gpointer user_data) { #ifndef NO_SOUND int active; if(engine_is_stopped()) return; active = GTK_CHECK_MENU_ITEM(menuitem)->active; if (active) { params.recv_file = 0; audio_enable(); } else audio_disable(); #endif } GLADE_CB void on_debug_file_with_tiemu1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(engine_is_stopped()) return; engine_stop(); #ifndef NO_GDB display_debug_dbox(); #endif engine_start(); } GLADE_CB void on_link_cable1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(engine_is_stopped()) return; engine_stop(); display_device_dbox(); engine_start(); } GLADE_CB void on_quick_send1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(engine_is_stopped()) return; engine_stop(); display_quicksend_dbox(); engine_start(); } /* menu part 2 (config & state) */ void window_get_rect(GtkWidget *widget, GdkRect *rect); GLADE_CB void on_save_config1_activate (GtkMenuItem *menuitem, gpointer user_data) { // save main window position window_get_rect(main_wnd, &options3.calc.rect); //write config rcfile_write(); #ifdef __WIN32__ msg_box1(_("Information"), _("Configuration file saved (in tiemu.ini).")); #else msg_box1(_("Information"), _("Configuration file saved (in ~/.tiemu).")); #endif } GLADE_CB void on_load_config1_activate (GtkMenuItem *menuitem, gpointer user_data) { rcfile_read(); msg_box1(_("Information"), _("Configuration file loaded.")); } GLADE_CB void on_load_state_image1_activate (GtkMenuItem *menuitem, gpointer user_data) { engine_stop(); display_load_state_dbox(); engine_start(); } GLADE_CB void on_save_state_image1_activate (GtkMenuItem *menuitem, gpointer user_data) { engine_stop(); display_save_state_dbox(); engine_start(); } GLADE_CB void on_revert_to_saved_state1_activate (GtkMenuItem *menuitem, gpointer user_data) { engine_stop(); ti68k_state_load(params.sav_file); engine_start(); } void on_quick_save_state_image1_activate (GtkMenuItem *menuitem, gpointer user_data) { gchar *basename; gchar *dot; // build name basename = g_path_get_basename(params.rom_file); dot = strrchr(basename, '.'); if(dot != NULL) *dot = '\0'; // set path g_free(params.sav_file); params.sav_file = g_strconcat(inst_paths.img_dir, basename, ".sav", NULL); g_free(basename); // save state ti68k_state_save(params.sav_file); } /* menu part 3 (debug) */ GLADE_CB void on_enter_debugger1_activate (GtkMenuItem *menuitem, gpointer user_data) { #ifndef __IPAQ__ if(dbg_on) return; if(!dbg_load) return; engine_stop(); ti68k_debug_break(); engine_start(); #endif } GLADE_CB void on_reset_calc1_activate (GtkMenuItem *menuitem, gpointer user_data) { engine_stop(); switch (msg_box3(_("Question"), _("Clear RAM?"), GTK_STOCK_YES, GTK_STOCK_NO, GTK_STOCK_CANCEL)) { case BUTTON1: memset(tihw.ram, 0, tihw.ram_size); case BUTTON2: ti68k_reset(); if (dbg_on) gtk_debugger_close(); else { default: engine_start(); } } } /* menu part 4 (images) */ GLADE_CB void on_upgrade_calc1_activate (GtkMenuItem *menuitem, gpointer user_data) { engine_stop(); display_set_tib_dbox(); engine_start(); } GLADE_CB void on_set_rom1_activate (GtkMenuItem *menuitem, gpointer user_data) { engine_stop(); display_romversion_dbox (FALSE); engine_start(); } /* menu part 5.1 (emulator options) */ GLADE_CB void on_restrict_to_actual_speed1_activate (GtkMenuItem *menuitem, gpointer user_data) { int engine_was_stopped = engine_is_stopped(); engine_stop(); if(GTK_CHECK_MENU_ITEM(menuitem)->active != TRUE) params.restricted = 0; else params.restricted = 1; if (!engine_was_stopped) engine_start(); } GLADE_CB void on_hw_protection1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active != TRUE) params.hw_protect = 0; else params.hw_protect = 1; } GLADE_CB void on_high_lcd_update1_activate (GtkMenuItem *menuitem, gpointer user_data) { params.lcd_rate = 25; hid_lcd_rate_set(); } GLADE_CB void on_med_lcd_update1_activate (GtkMenuItem *menuitem, gpointer user_data) { params.lcd_rate = 55; hid_lcd_rate_set(); } GLADE_CB void on_low_lcd_update1_activate (GtkMenuItem *menuitem, gpointer user_data) { params.lcd_rate = 85; hid_lcd_rate_set(); } GLADE_CB void on_normal_view1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active == TRUE) hid_switch_normal_view(); } GLADE_CB void on_large_view1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active == TRUE) hid_switch_large_view(); } GLADE_CB void on_full_view1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active == TRUE) hid_switch_fullscreen(); } GLADE_CB void on_custom_view1_activate (GtkMenuItem *menuitem, gpointer user_data) { } /* menu part 5.2 (skin options) */ GLADE_CB void on_no_skin1_activate (GtkMenuItem *menuitem, gpointer user_data) { #ifndef __IPAQ__ hid_switch_without_skin(); #endif } GLADE_CB void on_default_skin1_activate (GtkMenuItem *menuitem, gpointer user_data) { #ifndef __IPAQ__ hid_switch_with_skin(); #endif } GLADE_CB void on_set_skin1_activate (GtkMenuItem *menuitem, gpointer user_data) { display_skin_dbox(); } /* menu part 5.3 (screenshot options) */ GLADE_CB void on_now1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(options2.shots > 1) hid_screenshot_burst(); else hid_screenshot_single(); } GLADE_CB void on_screen_options1_activate (GtkMenuItem *menuitem, gpointer user_data) { display_scroptions_dbox(); } GLADE_CB void on_copy_to_clipboard1_activate (GtkMenuItem *menuitem, gpointer user_data) { options2.clipboard = GTK_CHECK_MENU_ITEM(menuitem)->active ? 1 : 0; } /* menu part 5.4 (key press options) */ GLADE_CB void on_setup_recording1_activate (GtkMenuItem *menuitem, gpointer user_data) { const gchar *filename = create_fsel(inst_paths.base_dir, "keypress.txt", "*.txt", TRUE); if (!filename) return; g_free(options.kp_rec_file); options.kp_rec_file = g_strdup(filename); } GLADE_CB void on_start_recording1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(options.kp_ply_enabled || !options.kp_rec_file) return; options.kp_rec_enabled = !options.kp_rec_enabled; if(options.kp_rec_enabled) kp_recording_start(options.kp_rec_file); else kp_recording_stop(); } GLADE_CB void on_setup_playing1_activate (GtkMenuItem *menuitem, gpointer user_data) { const gchar *filename = create_fsel(inst_paths.base_dir, NULL, "*.txt", FALSE); if (!filename) return; g_free(options.kp_ply_file); options.kp_ply_file = g_strdup(filename); } static gboolean kp_callback(gpointer data) { int key, action, ret; ret = kp_playing_key(&key, &action); if(ret) { kp_playing_stop(); return FALSE; } ti68k_kbd_set_key(key, action); //printf("%i %i\n", key, action); return TRUE; } GLADE_CB void on_start_playing1_activate (GtkMenuItem *menuitem, gpointer user_data) { kp_playing_start(options.kp_ply_file); g_timeout_add(250, kp_callback, NULL); } /* menu part 6 (misc) */ static void go_to_bookmark(const char *link); GLADE_CB void on_help1_activate (GtkMenuItem *menuitem, gpointer user_data) { gchar *path = g_strconcat(inst_paths.help_dir, _("Manual_en.html"), NULL); go_to_bookmark(path); g_free(path); } GLADE_CB void on_manpage1_activate (GtkMenuItem *menuitem, gpointer user_data) { display_manpage_dbox(); } GLADE_CB void on_bookmarks1_activate (GtkMenuItem *menuitem, gpointer user_data) { #if GTK_CHECK_VERSION(2,12,0) GtkWidget *dialog; const gchar *message = _("You're using GTK+ >= 2.12 so bookmark support is currently unavailable."); dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, message); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); #else GtkTooltipsData* data = gtk_tooltips_data_get(GTK_WIDGET(menuitem)); /* FIXME: deprecated in GTK+ 2.12 */ go_to_bookmark(data->tip_text); #endif } GLADE_CB void on_bugreport1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *dialog; const gchar *message = _("There are several ways to get in touch if you encounter a problem with TiEmu or if you have questions, suggestions, bug reports, etc:\n- if you have general questions or problems, please consider the users' mailing list first (http://tiemu-users@list.sf.net).\n- if you want to discuss about TiEmu, you can use the TiEmu forum (http://sourceforge.net/forum/?group_id=23169).\n- for bug reports, use the 'Bug Tracking System' (http://sourceforge.net/tracker/?group_id=23169).\n\nBefore e-mailing the TiEmu team, make sure you have read the manual and/or the FAQ...."); dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, message); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } GLADE_CB void on_changelog1_activate (GtkMenuItem *menuitem, gpointer user_data) { display_release_dbox (); } GLADE_CB void on_about1_activate (GtkMenuItem *menuitem, gpointer user_data) { display_about_dbox (); } GLADE_CB void on_infos1_activate (GtkMenuItem *menuitem, gpointer user_data) { display_infos_dbox(); } void exit_main_loop(void); GLADE_CB void on_exit_and_save_state1_activate (GtkMenuItem *menuitem, gpointer user_data) { // stop emulation engine engine_stop(); // save state on_quick_save_state_image1_activate(NULL, NULL); // and config window_get_rect(main_wnd, &options3.calc.rect); rcfile_write(); // exit exit_main_loop(); gtk_main_quit(); } GLADE_CB void on_exit_without_saving_state1_activate (GtkMenuItem *menuitem, gpointer user_data) { #if 0 { //testing... GdkEvent* event = gdk_event_new(GDK_KEY_PRESS); event->key.type = GDK_KEY_PRESS; event->key.window = main_wnd->window; event->key.send_event = FALSE; event->key.time = GDK_CURRENT_TIME; event->key.state = GDK_LOCK_MASK; event->key.keyval = -1; event->key.length = 0; event->key.string = ""; event->key.hardware_keycode = 0x14; event->key.group = 0; gdk_event_put(event); while(gtk_events_pending()) gtk_main_iteration_do(FALSE); //gdk_event_free(event); } #endif exit_main_loop(); gtk_main_quit(); } typedef void (*VCB) (void); extern int reset_disabled; /* Display the GTK popup menu and configure some items */ GtkWidget* display_popup_menu(void) { GladeXML *xml; GtkWidget *menu; GtkWidget *data; gchar *s; //menu = create_popup_menu(); xml = glade_xml_new (tilp_paths_build_glade("popup-2.glade"), "popup_menu", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); menu = glade_xml_get_widget(xml, "popup_menu"); // set version data = glade_xml_get_widget(xml, "popup_menu_header"); s = g_strdup_printf("TiEmu, version %s", TIEMU_VERSION); gtk_label_set_text(GTK_LABEL(GTK_BIN(data)->child), s); g_free(s); // init check buttons data = glade_xml_get_widget(xml, "recv_file_from_tiemu1"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), params.recv_file); data = glade_xml_get_widget(xml, "emulate_sound1"); #ifdef NO_SOUND gtk_widget_set_sensitive(data, FALSE); #else gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), audio_isactive); #endif data = glade_xml_get_widget(xml, "restrict1"); g_signal_handlers_block_by_func(GTK_OBJECT(data), (VCB)on_restrict_to_actual_speed1_activate, NULL); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), params.restricted); g_signal_handlers_unblock_by_func(GTK_OBJECT(data), (VCB)on_restrict_to_actual_speed1_activate, NULL); data = glade_xml_get_widget(xml, "hw_protection1"); g_signal_handlers_block_by_func(GTK_OBJECT(data), (VCB)on_hw_protection1_activate, NULL); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), params.hw_protect); g_signal_handlers_unblock_by_func(GTK_OBJECT(data), (VCB)on_hw_protection1_activate, NULL); // hide the custom view radio button data = glade_xml_get_widget(xml, "custom_view1"); gtk_widget_hide(data); data = glade_xml_get_widget(xml, "full_view1"); gtk_widget_set_sensitive(data, FALSE); #ifdef NO_GDB data = glade_xml_get_widget(xml, "debug_file_with_tiemu1"); gtk_widget_set_sensitive(data, FALSE); #endif // init radio buttons switch(options.view) { case VIEW_NORMAL: data = glade_xml_get_widget(xml, "normal_view1"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), TRUE); break; case VIEW_LARGE: data = glade_xml_get_widget(xml, "large_view1"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), TRUE); break; case VIEW_FULL: data = glade_xml_get_widget(xml, "full_view1"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), TRUE); break; case VIEW_CUSTOM: data = glade_xml_get_widget(xml, "custom_view1"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), TRUE); break; default: break; } if(params.lcd_rate >= 10 && params.lcd_rate < 40) { data = glade_xml_get_widget(xml, "high_lcd_update1"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), TRUE); } else if((params.lcd_rate >= 40 && params.lcd_rate < 70) || params.lcd_rate == -1) { data = glade_xml_get_widget(xml, "med_lcd_update1"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), TRUE); } else if(params.lcd_rate >= 70 && params.lcd_rate < 100) { data = glade_xml_get_widget(xml, "low_lcd_update1"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), TRUE); } // if debugger is open, blocks some items if(dbg_on || !dbg_load) { #ifndef NO_GDB data = glade_xml_get_widget(xml, "send_file_to_tiemu1"); gtk_widget_set_sensitive(data, FALSE); data = glade_xml_get_widget(xml, "debug_file_with_tiemu1"); gtk_widget_set_sensitive(data, FALSE); #endif data = glade_xml_get_widget(xml, "recv_file_from_tiemu1"); gtk_widget_set_sensitive(data, FALSE); data = glade_xml_get_widget(xml, "link_cable1"); gtk_widget_set_sensitive(data, FALSE); data = glade_xml_get_widget(xml, "upgrade_calc1"); gtk_widget_set_sensitive(data, FALSE); data = glade_xml_get_widget(xml, "set_rom1"); gtk_widget_set_sensitive(data, FALSE); if (reset_disabled) { data = glade_xml_get_widget(xml, "reset_calc1"); gtk_widget_set_sensitive(data, FALSE); } data = glade_xml_get_widget(xml, "calculator_state1"); gtk_widget_set_sensitive(data, FALSE); } data = glade_xml_get_widget(xml, "start_recording1"); g_signal_handlers_block_by_func(GTK_OBJECT(data), (VCB)on_start_recording1_activate, NULL); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), options.kp_rec_enabled); g_signal_handlers_unblock_by_func(GTK_OBJECT(data), (VCB)on_start_recording1_activate, NULL); data = glade_xml_get_widget(xml, "start_playing1"); g_signal_handlers_block_by_func(GTK_OBJECT(data), (VCB)on_start_playing1_activate, NULL); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), options.kp_ply_enabled); g_signal_handlers_unblock_by_func(GTK_OBJECT(data), (VCB)on_start_playing1_activate, NULL); data = glade_xml_get_widget(xml, "copy_to_clipboard1"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data), options2.clipboard); return menu; } /* */ static void go_to_bookmark(const char *link) { #ifdef __WIN32__ HINSTANCE hInst; // Windows do the whole work for us, let's go... hInst = ShellExecute(NULL, "open", link, NULL, NULL, SW_SHOWNORMAL); if((int)hInst <= 32) { msg_box1(_("Error"), _("Unable to run ShellExecute extension.")); } #else // Kevin's list: // These ones should be first, as they will honor the user's choice rather // than guessing an arbitrary one: // * /usr/bin/xdg-open (runs the default browser of the desktop environment // currently in use, this is the best solution) // * /usr/bin/gnome-open (GNOME 2.6+ default browser, user-configurable) // Distro-specific browser wrapper scripts: // * /usr/bin/sensible-browser (Debian's browser script) // * /usr/bin/htmlview (old RHL/Fedora default browser script, current // versions will honor the GNOME browser preference) // Fallback to a hardcoded list of browsers: // * /usr/bin/firefox (Mozilla Firefox) // * /usr/bin/seamonkey (Seamonkey) // * /usr/bin/konqueror (Konqueror) // * /usr/bin/mozilla (old Mozilla Suite) // gboolean result; char *apps[] = { "/usr/bin/xdg-open", "/usr/bin/gnome-open", "/usr/bin/sensible-browser", "/usr/bin/htmlview", "/usr/bin/firefox", "/usr/bin/seamonkey", "/usr/bin/konqueror", "/usr/bin/mozilla", }; gint i, n; n = sizeof(apps) / sizeof(char *); for(i = 0; i < n; i++) { gchar **argv = g_malloc0(3 * sizeof(gchar *)); argv[0] = g_strdup(apps[i]); argv[1] = g_strdup(link); argv[2] = NULL; result = g_spawn_async(NULL, argv, NULL, 0, NULL, NULL, NULL, NULL); g_strfreev(argv); if(result != FALSE) break; } if (i == n) { msg_box1(_("Error"), _("Spawn error: do you have Firefox installed?")); } #endif else { GtkWidget *dialog; GTimer *timer; const gchar *message = "A web browser has been launched: this may take a while before it appears. If it is already launched, the page will be opened in the existing frame."; dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, message); g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(dialog)); gtk_widget_show_all(GTK_WIDGET(dialog)); while(gtk_events_pending()) gtk_main_iteration(); for(timer = g_timer_new(); g_timer_elapsed(timer, NULL) < 3.0;); g_timer_destroy(timer); gtk_widget_destroy(GTK_WIDGET(dialog)); } } tiemu-3.03-nogdb+dfsg/src/gui/calc/popup.h000066400000000000000000000160021220314353500203560ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: popup.h 2822 2009-05-04 20:46:56Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include "support.h" GtkWidget* display_popup_menu(void); GLADE_CB void on_popup_menu_cancel (GtkMenuShell *menushell, gpointer user_data); GLADE_CB gboolean on_popup_menu_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); GLADE_CB gboolean on_popup_menu_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data); GLADE_CB void on_popup_menu_header (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_send_file_to_tiemu1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_recv_file_from_tiemu1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_link_cable1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_save_config1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_load_config1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_load_state_image1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_save_state_image1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_revert_to_saved_state1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_quick_save_state_image1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_enter_debugger1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_reset_calc1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_set_rom1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_restrict_to_actual_speed1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_sync1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_number_of_colors1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_2_colors1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_4_colors1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_7_colors1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_blurry1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_normal_view__1x_1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_large_view__x2_1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_full_screen1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_none1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_skin1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_set_skin1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_now__1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_rbm_options1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_help3_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_manpage1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_changelog1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_about1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_infos1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_exit1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_exit_without_saving_state1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_now1_activate (GtkMenuItem *menuitem, gpointer user_data); tiemu-3.03-nogdb+dfsg/src/gui/calc/screen.c000066400000000000000000000233521220314353500204730ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: screen.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include #include "intl.h" #include "paths.h" #include "skinops.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "tie_error.h" #include "calc.h" #include "gscales.h" /* Types */ #define BPP 8 // 8 bits per pixel #define NGS 16 // number of gray scales (contrast level) #define SCREEN_ON (!0) #define SCREEN_OFF 0 /* Variables */ extern GtkWidget *main_wnd; extern GtkWidget *area; extern SKIN_INFOS skin_infos; GdkPixbuf *lcd_mem = NULL; GdkPixbuf *lcd = NULL; GdkPixmap *pixmap = NULL; uint32_t* lcd_bytmap; // LCD buffer (color-mapped as grayscale) LCD_INFOS li; float sf; // scaling factor LCD_RECT ls; // LCD rectangle in skin LCD_RECT lr; // LCD rectangle in window SKN_RECT sr; // skin rectangle union { WND_RECT wr; GdkRectangle gr; } wr; // window rectangle static uint32_t convtab[512]; // planar to chunky conversion table static RGB grayscales[16]; // gray scales rgb values (colormap) static int lcd_state = -1; // screen state static int contrast = NGS; // current contrast level static int old_contrast = 0; // previous contrast level static int new_contrast = NGS; // new contrast level static int max_plane = 0; // number of grayscales to emulate int shot_cnt = 0; // number of captures int skip_cnt = 0; // number of frames to skip /* Compute conversion table */ void compute_convtable(void) { int i, j; uint8_t k; uint8_t *tab = (uint8_t *)convtab; for(i=0, j=0; i<256; i++) { for(k = 1<<7; k; k>>=1) { tab[j++] = (i & k) ? 1 : 0; } } } /* The value v is between l and h and can not be outside */ #define filter(v, l, h) (vh ? h : v)) /* Computes the 16 grays level colors */ void compute_grayscale(void) { int i; int sr, sg, sb; int er, eg, eb; int r, g ,b; uint32_t white = skin_infos.lcd_white; // 0xcfe0ce uint32_t black = skin_infos.lcd_black; // 0x222e31 //printf("# planes: %i | contrast: %i\n", max_plane, contrast); // Compute RBG bsaic values sr = (white & 0xff0000) >> 8; sg = (white & 0x00ff00); sb = (white & 0x0000ff) << 8; er = (black & 0xff0000) >> 8; eg = (black & 0x00ff00); eb = (black & 0x0000ff) << 8; // Compute RGB values tuned with contrast if(contrast < NGS) { sr = sr - (sr-er) * (NGS - contrast)/NGS; sg = sg - (sg-eg) * (NGS - contrast)/NGS; sb = sb - (sb-eb) * (NGS - contrast)/NGS; } else { er = er - (er-sr)*(contrast - NGS)/NGS; eg = eg - (eg-sg)*(contrast - NGS)/NGS; eb = eb - (eb-sb)*(contrast - NGS)/NGS; } //printf("a: %02x%02x%02x | %02x%02x%02x\n", sr>>8, sg>>8, sb>>8, er>>8, eg>>8, eb>>8); r = sr; g = sg; b = sb; if(lcd_state) { for(i = 0; i <= (max_plane+1); i++) { grayscales[i].r = filter(r, 0x0000, 0xfff0) >> 8; grayscales[i].g = filter(g, 0x0000, 0xff00) >> 8; grayscales[i].b = filter(b, 0x0000, 0xff00) >> 8; r -= ((sr-er) / (max_plane+1)); g -= ((sg-eg) / (max_plane+1)); b -= ((sb-eb) / (max_plane+1)); } } // Compute grayscale palette if(!max_plane) return; for(i = 0; i <= max_plane; i++) { grayscales[i].r = ((sr-er)/max_plane * (max_plane-i) + er) >> 8; grayscales[i].g = ((sg-eg)/max_plane * (max_plane-i) + eg) >> 8; grayscales[i].b = ((sb-eb)/max_plane * (max_plane-i) + eb) >> 8; } } /* Redraw the skin into window but don't reload skin file */ void redraw_skin(void) { // no skin ? if(!options.skin) return; // scale image g_object_unref(skin_infos.image); skin_infos.image = gdk_pixbuf_scale_simple(skin_infos.raw, wr.wr.w, wr.wr.h, GDK_INTERP_NEAREST); // and draw image into pixmap (next, into window on expose event) gdk_draw_pixbuf(pixmap, main_wnd->style->fg_gc[GTK_WIDGET_STATE(main_wnd)], skin_infos.image, 0, 0, 0, 0, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); gdk_window_invalidate_rect(main_wnd->window, &wr.gr, FALSE); } /* Redraw the lcd only */ void redraw_lcd(void) { if(!pixmap) return; // scale image g_object_unref(skin_infos.image); skin_infos.image = gdk_pixbuf_scale_simple(skin_infos.raw, sr.w, sr.h, GDK_INTERP_NEAREST); // and draw gdk_draw_pixbuf(pixmap, main_wnd->style->fg_gc[GTK_WIDGET_STATE(main_wnd)], skin_infos.image, ls.x, ls.y, lr.x, lr.y, lr.w, lr.h, GDK_RGB_DITHER_NONE, 0, 0); gtk_widget_queue_draw_area(area, lr.x, lr.y, lr.w, lr.h); } // gray plane sequences in relation with gscales.c const int gp_seq[9][8] = { { -1 }, // unused { 0, -1 }, // b&w (1 plane) { -1 }, // unused { 0, 0, 1, -1 }, // 4 colors (2 planes) { -1 }, // unused { -1 }, // unused { -1 }, // unused { 2, 0, 1, 0, 1, 0, -1 }, // 7 colors (3 planes) { 1, 0, 2, 0, 0, 1, 0, -1 },// 8 colors (3 planes) }; /* Update LCD screen part */ int hid_update_lcd(void) { int i, j, k, l; uint8_t *lcd_bitmap = &tihw.ram[tihw.lcd_adr]; uint8_t *lcd_buf = (uint8_t *)lcd_bytmap; GdkRect src; guchar *p; tihw.lcd_ptr = (char *) &tihw.ram[tihw.lcd_adr]; if(!pixmap || !lcd_mem || !tihw.lcd_ptr) return 0; // Check for LCD state change (from TI HW) if(lcd_state != tihw.on_off) { lcd_state = tihw.on_off; lcd_changed = 1; if(!lcd_state) redraw_lcd(); // to clear LCD } // Check for contrast change (from TI HW) if(contrast != tihw.contrast) { gint c = contrast = tihw.contrast; new_contrast = (c + old_contrast) / 2; old_contrast = c; compute_grayscale(); lcd_changed = 1; } // Check for gray plane change (menu/hw) if(max_plane != ngc) { max_plane = ngc; compute_grayscale(); } // LCD off or unchanged: don't refresh ! if(!lcd_state || !lcd_changed) return 0; // Reset LCD changed flag. lcd_changed = 0; // Convert the bitmap screen to a bytemap screen and grayscalize memset(lcd_bytmap, 0, LCDMEM_H*LCDMEM_W); for(l = 0; l < 8; l++) { int pp = gp_seq[ngc][l]; if(pp == -1) break; lcd_bitmap = lcd_planebufs[pp]; for(j = 0, k = 0; k < LCDMEM_H; k++) { for(i = 0; i < LCDMEM_W/8; i++, lcd_bitmap++) { lcd_bytmap[j++] += convtab[(*lcd_bitmap << 1) ]; lcd_bytmap[j++] += convtab[(*lcd_bitmap << 1)+1]; } } } if(1) { // Copy LCD from buffer to pixbuf for(j = 0; j < LCDMEM_H; j++) { for (i = 0; i < LCDMEM_W; i++) { p = li.pixels + j * li.rowstride + i * li.n_channels; p[0] = grayscales[*lcd_buf].r; p[1] = grayscales[*lcd_buf].g; p[2] = grayscales[*lcd_buf].b; lcd_buf++; } } // Set region to update src.x = src.y = 0; src.w = (tihw.log_w > tihw.lcd_w) ? tihw.lcd_w : tihw.log_w; src.h = (tihw.log_h > tihw.lcd_h) ? tihw.lcd_h : tihw.log_h; // Copy surface into window if(sf) { src.w = (int)(sf * src.w); src.h = (int)(sf * src.h); // scale image g_object_unref(skin_infos.image); skin_infos.image = gdk_pixbuf_scale_simple(lcd, lr.w, lr.h, GDK_INTERP_NEAREST); // and draw image into pixmap (next, into window on expose event) gdk_draw_pixbuf(pixmap, main_wnd->style->fg_gc[GTK_WIDGET_STATE(main_wnd)], skin_infos.image, src.x, src.y, lr.x, lr.y, src.w, src.h, GDK_RGB_DITHER_NONE, 0, 0); gtk_widget_queue_draw_area(area, lr.x, lr.y, src.w, src.h); } else { // and draw image into pixmap (next, into window on expose event) gdk_draw_pixbuf(pixmap, main_wnd->style->fg_gc[GTK_WIDGET_STATE(main_wnd)], lcd_mem, src.x, src.y, lr.x, lr.y, src.w, src.h, GDK_RGB_DITHER_NONE, 0, 0); gtk_widget_queue_draw_area(area, lr.x, lr.y, src.w, src.h); } } // Screen shot if(!--skip_cnt && shot_cnt > 0) { skip_cnt = options2.skips; hid_screenshot_single(); shot_cnt--; } return -1; } // Copy LCD pixuf into B&W pixbuf GdkPixbuf* hid_copy_lcd(void) { int i, j, k; uint8_t *lcd_bitmap = &tihw.ram[tihw.lcd_adr]; uint8_t *lcd_buf = (uint8_t *)lcd_bytmap; guchar *p; tihw.lcd_ptr = (char *) &tihw.ram[tihw.lcd_adr]; // convert the bitmap screen to a bytemap screen and grayscalize memset(lcd_bytmap, 0, LCDMEM_H*LCDMEM_W); for(j = 0, k = 0; k < LCDMEM_H; k++) { for(i = 0; i < LCDMEM_W/8; i++, lcd_bitmap++) { lcd_bytmap[j++] = convtab[(*lcd_bitmap << 1) ]; lcd_bytmap[j++] = convtab[(*lcd_bitmap << 1)+1]; } } // and copy for(j = 0; j < LCDMEM_H; j++) { for (i = 0; i < LCDMEM_W; i++) { p = li.pixels + j * li.rowstride + i * li.n_channels; p[0] = *lcd_buf ? 0x00: 0xff; p[1] = *lcd_buf ? 0x00: 0xff; p[2] = *lcd_buf ? 0x00: 0xff; lcd_buf++; } } return gdk_pixbuf_new_subpixbuf(lcd_mem, 0, 0, tihw.lcd_w, tihw.lcd_h); } tiemu-3.03-nogdb+dfsg/src/gui/calc/skinkeys.c000066400000000000000000000054421220314353500210540ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: skinkeys.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include #endif #include "keydefs.h" // in core/ti_hw /* Key mapping for skins */ const char sknKey92[] = { TIKEY_HAND, TIKEY_F1, TIKEY_F2, TIKEY_F3, TIKEY_F4, TIKEY_F5, TIKEY_F6, TIKEY_F7, TIKEY_F8, TIKEY_Q, TIKEY_W, TIKEY_E, TIKEY_R, TIKEY_T, TIKEY_Y, TIKEY_U, TIKEY_I, TIKEY_O, TIKEY_P, TIKEY_A, TIKEY_S, TIKEY_D, TIKEY_F, TIKEY_G, TIKEY_H, TIKEY_J, TIKEY_K, TIKEY_L, TIKEY_Z, TIKEY_X, TIKEY_C, TIKEY_V, TIKEY_B, TIKEY_N, TIKEY_M, TIKEY_THETA, TIKEY_SHIFT, TIKEY_ON, TIKEY_DIAMOND, TIKEY_2ND, TIKEY_STORE, TIKEY_SPACE, TIKEY_EQUALS, TIKEY_BACKSPACE, TIKEY_ENTER1, TIKEY_2ND, TIKEY_ESCAPE, TIKEY_MODE, TIKEY_CLEAR, TIKEY_LN, TIKEY_APPS, TIKEY_ENTER2, TIKEY_LEFT, TIKEY_RIGHT, TIKEY_UP, TIKEY_DOWN, TIKEY_SIN, TIKEY_COS, TIKEY_TAN, TIKEY_POWER, TIKEY_PALEFT, TIKEY_PARIGHT, TIKEY_COMMA, TIKEY_DIVIDE, TIKEY_7, TIKEY_8, TIKEY_9, TIKEY_MULTIPLY, TIKEY_4, TIKEY_5, TIKEY_6, TIKEY_MINUS, TIKEY_1, TIKEY_2, TIKEY_3, TIKEY_PLUS, TIKEY_0, TIKEY_PERIOD, TIKEY_NEGATE, TIKEY_ENTER1 }; const char sknKey89[] = { TIKEY_F1, TIKEY_F2, TIKEY_F3, TIKEY_F4, TIKEY_F5, TIKEY_2ND, TIKEY_SHIFT, TIKEY_ESCAPE, TIKEY_LEFT, TIKEY_RIGHT, TIKEY_UP, TIKEY_DOWN, TIKEY_DIAMOND, TIKEY_ALPHA, TIKEY_APPS, TIKEY_HOME, TIKEY_MODE, TIKEY_CATALOG, TIKEY_BACKSPACE, TIKEY_CLEAR, TIKEY_X, TIKEY_Y, TIKEY_Z, TIKEY_T, TIKEY_POWER, TIKEY_EQUALS, TIKEY_PALEFT, TIKEY_PARIGHT, TIKEY_COMMA, TIKEY_DIVIDE, TIKEY_PIPE, TIKEY_7, TIKEY_8, TIKEY_9, TIKEY_MULTIPLY, TIKEY_EE, TIKEY_4, TIKEY_5, TIKEY_6, TIKEY_MINUS, TIKEY_STORE, TIKEY_1, TIKEY_2, TIKEY_3, TIKEY_PLUS, TIKEY_ON, TIKEY_0, TIKEY_PERIOD, TIKEY_NEGATE, TIKEY_ENTER1 }; tiemu-3.03-nogdb+dfsg/src/gui/calc/skinops.c000066400000000000000000000261601220314353500207020ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: skinops.c 2440 2007-04-15 00:43:07Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include "skinops.h" #include "logging.h" /* Determine skin type */ int skin_get_type(SKIN_INFOS *si, const char *filename) { FILE *fp; char str[17]; fp = fopen(filename, "rb"); if (fp == NULL) { fprintf(stderr, "Unable to open this file: <%s>\n", filename); return -1; } memset(str, 0, sizeof(str)); fread(str, 16, 1, fp); if(!strncmp(str, "TiEmu v2.00", 16)) si->type = SKIN_TYPE_TIEMU; else if(!strncmp(str, "VTIv2.1 ", 8)) si->type = SKIN_TYPE_OLD_VTI; else if(!strncmp(str, "VTIv2.5 ", 8)) si->type = SKIN_TYPE_VTI; else { fprintf(stderr, "Bad skin format\n"); return -1; } return 0; } /* Read VTi skin informations (header) */ int skin_read_header_vti(SKIN_INFOS *si, const char *filename) { FILE *fp; char str[9]; uint32_t length; int i; uint32_t calc; /* open file */ fp = fopen(filename, "rb"); if (fp == NULL) { fprintf(stderr, "Unable to open this file: <%s>\n", filename); return -1; } /* signature */ memset(str, 0, sizeof(str)); fread(str, 8, 1, fp); if(strncmp(str, "VTIv2.", 6)) { fprintf(stderr, "Bad VTi skin format\n"); return -1; } /* Skin name and author */ length = 64; si->name = (char *)malloc(length + 1); if (si->name == NULL) return -1; memset(si->name, 0, length + 1); fread(si->name, length, 1, fp); if(si->type == SKIN_TYPE_VTI) { si->author = (char *)malloc(length + 1); if (si->author == NULL) return -1; memset(si->author, 0, length + 1); fread(si->author, length, 1, fp); } /* types & colors*/ fread(&calc, 1, sizeof(calc), fp); switch(calc) { case 89: strcpy(si->calc, SKIN_TI89); break; case 92: strcpy(si->calc, SKIN_TI92); break; case 94: strcpy(si->calc, SKIN_TI92P); break; default: return -1; } fread(&si->colortype, 4, 1, fp); fread(&si->lcd_white, 4, 1, fp); fread(&si->lcd_black, 4, 1, fp); /* lcd position */ fread(&si->lcd_pos.left, 4, 1, fp); fread(&si->lcd_pos.top, 4, 1, fp); fread(&si->lcd_pos.right, 4, 1, fp); fread(&si->lcd_pos.bottom, 4, 1, fp); /* keys */ length = 80; for (i = 0; i < (int)length; i++) { fread(&si->keys_pos[i].left, 4, 1, fp); fread(&si->keys_pos[i].top, 4, 1, fp); fread(&si->keys_pos[i].right, 4, 1, fp); fread(&si->keys_pos[i].bottom, 4, 1, fp); } // VTi skins are always Little-Endian #if G_BYTE_ORDER == G_BIG_ENDIAN { si->colortype = GUINT32_SWAP_LE_BE(si->colortype); si->lcd_white = GUINT32_SWAP_LE_BE(si->lcd_white); si->lcd_black = GUINT32_SWAP_LE_BE(si->lcd_black); si->lcd_pos.top = GUINT32_SWAP_LE_BE(si->lcd_pos.top); si->lcd_pos.left = GUINT32_SWAP_LE_BE(si->lcd_pos.left); si->lcd_pos.bottom = GUINT32_SWAP_LE_BE(si->lcd_pos.bottom); si->lcd_pos.right = GUINT32_SWAP_LE_BE(si->lcd_pos.right); for (i = 0; i < (int)length; i++) { si->keys_pos[i].top = GUINT32_SWAP_LE_BE(si->keys_pos[i].top); si->keys_pos[i].bottom = GUINT32_SWAP_LE_BE(si->keys_pos[i].bottom); si->keys_pos[i].left = GUINT32_SWAP_LE_BE(si->keys_pos[i].left); si->keys_pos[i].right = GUINT32_SWAP_LE_BE(si->keys_pos[i].right); } } #endif si->jpeg_offset = ftell(fp); fclose(fp); return 0; } /* Read TiEmu skin informations (header) */ int skin_read_header_tiemu(SKIN_INFOS *si, const char *filename) { FILE *fp; int i; uint32_t endian; uint32_t jpeg_offset; uint32_t length; char str[17]; fp = fopen(filename, "rb"); if (fp == NULL) { fprintf(stderr, "Unable to open this file: <%s>\n", filename); return -1; } /* signature & offsets */ fread(str, 16, 1, fp); if (strncmp(str, "TiEmu v2.00", 16)) { fprintf(stderr, "Bad TiEmu skin format\n"); return -1; } fread(&endian, 4, 1, fp); fread(&jpeg_offset, 4, 1, fp); if (endian != ENDIANNESS_FLAG) jpeg_offset = GUINT32_SWAP_LE_BE(jpeg_offset); /* Skin name */ fread(&length, 4, 1, fp); if (endian != ENDIANNESS_FLAG) length = GUINT32_SWAP_LE_BE(length); if (length > 0) { si->name = (char *)malloc(length + 1); if (si->name == NULL) return -1; memset(si->name, 0, length + 1); fread(si->name, length, 1, fp); } /* Skin author */ fread(&length, 4, 1, fp); if (endian != ENDIANNESS_FLAG) length = GUINT32_SWAP_LE_BE(length); if (length > 0) { si->author = (char *)malloc(length + 1); if (si->author == NULL) return -1; memset(si->author, 0, length + 1); fread(si->author, length, 1, fp); } /* LCD colors */ fread(&si->colortype, 4, 1, fp); fread(&si->lcd_white, 4, 1, fp); fread(&si->lcd_black, 4, 1, fp); /* Calc type */ fread(si->calc, 8, 1, fp); /* LCD position */ fread(&si->lcd_pos.left, 4, 1, fp); fread(&si->lcd_pos.top, 4, 1, fp); fread(&si->lcd_pos.right, 4, 1, fp); fread(&si->lcd_pos.bottom, 4, 1, fp); /* Number of RECT struct to read */ fread(&length, 4, 1, fp); if (endian != ENDIANNESS_FLAG) length = GUINT32_SWAP_LE_BE(length); if (length > SKIN_KEYS) return -1; for (i = 0; i < (int)length; i++) { fread(&si->keys_pos[i].left, 4, 1, fp); fread(&si->keys_pos[i].top, 4, 1, fp); fread(&si->keys_pos[i].right, 4, 1, fp); fread(&si->keys_pos[i].bottom, 4, 1, fp); } if (endian != ENDIANNESS_FLAG) { si->colortype = GUINT32_SWAP_LE_BE(si->colortype); si->lcd_white = GUINT32_SWAP_LE_BE(si->lcd_white); si->lcd_black = GUINT32_SWAP_LE_BE(si->lcd_black); si->lcd_pos.top = GUINT32_SWAP_LE_BE(si->lcd_pos.top); si->lcd_pos.left = GUINT32_SWAP_LE_BE(si->lcd_pos.left); si->lcd_pos.bottom = GUINT32_SWAP_LE_BE(si->lcd_pos.bottom); si->lcd_pos.right = GUINT32_SWAP_LE_BE(si->lcd_pos.right); for (i = 0; i < (int)length; i++) { si->keys_pos[i].top = GUINT32_SWAP_LE_BE(si->keys_pos[i].top); si->keys_pos[i].bottom = GUINT32_SWAP_LE_BE(si->keys_pos[i].bottom); si->keys_pos[i].left = GUINT32_SWAP_LE_BE(si->keys_pos[i].left); si->keys_pos[i].right = GUINT32_SWAP_LE_BE(si->keys_pos[i].right); } } si->jpeg_offset = ftell(fp); fclose(fp); return 0; } int skin_read_header(SKIN_INFOS *si, const char *filename) { if(skin_get_type(si, filename) == -1) return -1; switch(si->type) { case SKIN_TYPE_TIEMU: return skin_read_header_tiemu(si, filename); case SKIN_TYPE_VTI: return skin_read_header_vti(si, filename); case SKIN_TYPE_OLD_VTI: return skin_read_header_vti(si, filename); default: return -1; } return 0; } /* Read skin image (pure jpeg data) */ int skin_read_image(SKIN_INFOS *si, const char *filename) { FILE *fp = NULL; int i; int sw, sh; int lw, lh; float rw, rh, r; double s; int lcd_w, lcd_h; GdkPixbufLoader *loader; GError *error = NULL; gboolean result; guchar *buf; gsize count; struct stat st; // set lcd size if(!strcmp(si->calc, SKIN_TI89) || !strcmp(si->calc, SKIN_TI89T)) { lcd_w = 160; lcd_h = 100; } else { lcd_w = 240; lcd_h = 128; } fp = fopen(filename, "rb"); if (fp == NULL) { fprintf(stderr, "Unable to open this file: <%s>\n", filename); return -1; } // Extract image from skin fseek(fp, si->jpeg_offset, SEEK_SET); fstat(fileno(fp), &st); count = st.st_size - si->jpeg_offset; buf = g_malloc(count * sizeof(guchar)); count = fread(buf, sizeof(guchar), count, fp); // Feed the pixbuf loader with our jpeg data loader = gdk_pixbuf_loader_new(); result = gdk_pixbuf_loader_write(loader, buf, count, &error); if(result == FALSE) { fprintf(stderr, "Failed to load pixbuf file: %s\n", filename); g_error_free(error); return -1; } result = gdk_pixbuf_loader_close(loader, &error); if(result == FALSE) { fprintf(stderr, "Failed to close pixbuf file: %s\n", filename); g_error_free(error); return -1; } // and get the pixbuf si->raw = gdk_pixbuf_loader_get_pixbuf(loader); if(si->raw == NULL) { fprintf(stderr, "Failed to load pixbuf file: %s\n", filename); g_error_free(error); return -1; } // Rescale image to a fixed LCD size but keep original image (avoid resolution lost) sw = gdk_pixbuf_get_width(si->raw); sh = gdk_pixbuf_get_height(si->raw); lw = si->lcd_pos.right - si->lcd_pos.left; lh = si->lcd_pos.bottom - si->lcd_pos.top; rw = (float)lw / lcd_w; rh = (float)lh / lcd_h; r = (rw < rh) ? rw : rh; si->s = s = ceil(10 * r) / 10.0; //printf("image :<%i x %i>\n", sw, sh); //printf("lcd : <%i x %i>\n", lw, lh); //printf("ratios : <%2.2f x %2.2f> => %2.1f\n", rw, rh, s); if(si->image) g_object_unref(si->image); si->image = gdk_pixbuf_scale_simple(si->raw, (int)(sw/s), (int)(sh/s), GDK_INTERP_NEAREST); // Get new skin size si->width = gdk_pixbuf_get_width(si->image); si->height = gdk_pixbuf_get_height(si->image); // Rescale all coords si->lcd_pos.left = (long)(si->lcd_pos.left / s); si->lcd_pos.right = (long)(si->lcd_pos.right / s); si->lcd_pos.top = (long)(si->lcd_pos.top / s); si->lcd_pos.bottom = (long)(si->lcd_pos.bottom / s); for (i = 0; i < SKIN_KEYS; i++) { si->keys_pos[i].left = (long)(si->keys_pos[i].left / s); si->keys_pos[i].top = (long)(si->keys_pos[i].top / s); si->keys_pos[i].right = (long)(long)(si->keys_pos[i].right / s); si->keys_pos[i].bottom = (long)(long)(si->keys_pos[i].bottom / s); } return 0; } /* Load a skin (TiEmu v2.00 only) */ int skin_load(SKIN_INFOS *si, const char *filename) { int ret = 0; ret = skin_read_header(si, filename); if(ret) return ret; ret = skin_read_image(si, filename); if(ret) return ret; if(!ret) tiemu_info(_("loading skin: %s (%d x %d)"), g_basename(filename), si->width, si->height); return ret; } /* Unload skin by freeing allocated memory */ int skin_unload(SKIN_INFOS *si) { if(si->image != NULL) { g_object_unref(si->image); si->image = NULL; } free(si->name); free(si->author); memset(si, 0, sizeof(SKIN_INFOS)); return 0; } tiemu-3.03-nogdb+dfsg/src/gui/calc/skinops.h000066400000000000000000000062031220314353500207030ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: skinops.h 2031 2006-03-25 14:47:33Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Most of these definitions and code comes from the JB's SkinEdit which is based on TiEmu skin code. TiEmu skin code is also based on VTi's skin code. */ #ifndef __SKINLOADER_H__ #define __SKINLOADER_H__ #ifdef HAVE_CONFIG_H #include #endif #include #include /***************/ /* Definitions */ /***************/ #define LCD_COLORTYPE_LOW 0 #define LCD_COLORTYPE_HIGH 1 #define LCD_COLORTYPE_CUSTOM 2 #define LCD_HI_WHITE 0xb0ccae #define LCD_HI_BLACK 0x8a6f53 #define LCD_LOW_WHITE 0xcfe0cc #define LCD_LOW_BLACK 0x222e31 #define MAX_COLORS (256 - 16) // we need to keep 16 colors for grayscales #define SKIN_KEYS 80 #define SKIN_TI73 "TI-73" #define SKIN_TI82 "TI-82" #define SKIN_TI83 "TI-83" #define SKIN_TI83P "TI-83+" #define SKIN_TI85 "TI-85" #define SKIN_TI86 "TI-86" #define SKIN_TI89 "TI-89" #define SKIN_TI92 "TI-92" #define SKIN_TI92P "TI-92+" #define SKIN_V200 "V200PLT" #define SKIN_TI89T "TI-89TM" #define SKIN_TYPE_TIEMU 10 #define SKIN_TYPE_VTI 2 #define SKIN_TYPE_OLD_VTI 1 #define SKIN_TYPE_NEW 0 #define ENDIANNESS_FLAG 0xfeedbabe #define TIEMU_SKIN_ID "TiEmu v2.00" /*********/ /* Types */ /*********/ #if !defined(__WIN32__) // already defined by Windows typedef struct { uint32_t left; uint32_t top; uint32_t right; uint32_t bottom; } RECT; #elif defined(__MINGW32__) #include #endif typedef struct { int type; GdkPixbuf *image; unsigned int width; unsigned int height; GdkPixbuf *raw; // raw jpeg image double s; // scaling factor unsigned char calc[9]; uint32_t colortype; uint32_t lcd_black; uint32_t lcd_white; unsigned char *name; unsigned char *author; RECT lcd_pos; RECT keys_pos[SKIN_KEYS]; long jpeg_offset; } SKIN_INFOS; extern SKIN_INFOS skin_infos; /*************/ /* Functions */ /*************/ int skin_load(SKIN_INFOS *infos, const char *filename); int skin_unload(SKIN_INFOS *infos); int skin_read_header(SKIN_INFOS *infos, const char* filename); int skin_read_image (SKIN_INFOS *infos, const char* filename); #endif tiemu-3.03-nogdb+dfsg/src/gui/dboxes.c000066400000000000000000000142401220314353500175720ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dboxes.c 2753 2007-12-30 23:14:15Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * Copyright (C) 1999-2004 Romain Lievin * Copyright (C) 2007 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include "intl.h" #include "dboxes.h" #include "support.h" #include "paths.h" static gint ret_val = 0; static gint str2msg(const char *title) { gint msg_type = GTK_MESSAGE_INFO; if (!strcmp(title, _("Information"))) msg_type = GTK_MESSAGE_INFO; else if (!strcmp(title, _("Warning"))) msg_type = GTK_MESSAGE_WARNING; else if (!strcmp(title, _("Question"))) msg_type = GTK_MESSAGE_QUESTION; else if (!strcmp(title, _("Error"))) msg_type = GTK_MESSAGE_ERROR; else msg_type = GTK_MESSAGE_INFO; return msg_type; } int msg_box1(const char *title, const char *message) { GtkWidget *dialog, *label; gint result; gint msg_type; msg_type = str2msg(title); if (msg_type != -1) { dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, msg_type, GTK_BUTTONS_CLOSE, message); gtk_dialog_run(GTK_DIALOG(dialog)); } else { dialog = gtk_dialog_new_with_buttons(title, GTK_WINDOW(NULL), (GtkDialogFlags) (GTK_DIALOG_MODAL), GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); label = gtk_label_new(message); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); gtk_widget_show(label); result = gtk_dialog_run(GTK_DIALOG(dialog)); switch (result) { case GTK_RESPONSE_OK: break; default: break; } } gtk_widget_destroy(dialog); return 0; } gint msg_box2(const char *title, const char *message) { GtkWidget *dialog; gint result; gint msg_type; msg_type = str2msg(title); dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, msg_type, GTK_BUTTONS_OK_CANCEL, message); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL); result = gtk_dialog_run(GTK_DIALOG(dialog)); switch (result) { case GTK_RESPONSE_OK: gtk_widget_destroy(dialog); return BUTTON1; break; default: gtk_widget_destroy(dialog); return BUTTON2; break; } return 0; } gint msg_box3(const char *title, const char *message, const char *button1, const char *button2, const char *button3) { GtkWidget *dialog; gint result; gint msg_type; msg_type = str2msg(title); dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, msg_type, GTK_BUTTONS_NONE, message); gtk_dialog_add_button(GTK_DIALOG(dialog), button1, GTK_RESPONSE_YES); gtk_dialog_add_button(GTK_DIALOG(dialog), button2, GTK_RESPONSE_NO); gtk_dialog_add_button(GTK_DIALOG(dialog), button3, GTK_RESPONSE_CANCEL); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dialog), GTK_RESPONSE_YES, GTK_RESPONSE_NO, GTK_RESPONSE_CANCEL, -1); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL); result = gtk_dialog_run(GTK_DIALOG(dialog)); switch (result) { case GTK_RESPONSE_YES: gtk_widget_destroy(dialog); return BUTTON1; break; case GTK_RESPONSE_NO: gtk_widget_destroy(dialog); return BUTTON2; break; default: gtk_widget_destroy(dialog); return BUTTON3; break; } return 0; } gint msg_box4(const char *title, const char *message) { GtkWidget *dialog; gint result; gint msg_type; msg_type = str2msg(title); dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, msg_type, GTK_BUTTONS_NONE, message); gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_GO_FORWARD, GTK_RESPONSE_OK); gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL); result = gtk_dialog_run(GTK_DIALOG(dialog)); switch (result) { case GTK_RESPONSE_OK: gtk_widget_destroy(dialog); return BUTTON1; break; default: gtk_widget_destroy(dialog); return BUTTON2; break; } return 0; } /* Create the dialog box entry and wait */ char *msg_entry(const char *title, const char *message, const char *content) { GladeXML *xml; GtkWidget *data; GtkWidget *dbox; GtkWidget *entry = NULL; gchar *ret = NULL; gint result; ret_val = 0; xml = glade_xml_new (tilp_paths_build_glade("user_boxes-2.glade"), "entry_dbox", PACKAGE); if (!xml) g_error("dboxes.c: GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); dbox = data = glade_xml_get_widget(xml, "entry_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); gtk_window_set_title(GTK_WINDOW(data), title); data = glade_xml_get_widget(xml, "frame1"); gtk_frame_set_label(GTK_FRAME(data), message); data = glade_xml_get_widget(xml, "entry1"); entry = GTK_WIDGET(data); gtk_entry_set_text(GTK_ENTRY(data), content); gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: ret = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry))); break; default: break; } gtk_widget_destroy(dbox); return ret; } tiemu-3.03-nogdb+dfsg/src/gui/dboxes.h000066400000000000000000000030461220314353500176010ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dboxes.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __DBOXES_H__ #define __DBOXES_H__ #include #define BUTTON1 1 #define BUTTON2 2 #define BUTTON3 3 int msg_box1(const gchar * title, const gchar * message); int msg_box2(const char *title, const char *message); int msg_box3(const char *title, const char *message, const char *button1, const char *button2, const char *button3); int msg_box4(const char *title, const char *message); char *msg_entry(const char *title, const char *message, const char *content); #endif tiemu-3.03-nogdb+dfsg/src/gui/debugger/000077500000000000000000000000001220314353500177255ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_all.c000066400000000000000000000135201220314353500214560ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_all.c 2832 2009-05-08 10:56:40Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2008, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #ifdef __WIN32__ #include #include #endif #ifdef __MINGW32__ #include #endif #include "ti68k_int.h" #include "struct.h" #include "dbg_all.h" #include "dbg_wnds.h" #include "dbg_dock.h" #include "support.h" #include "paths.h" #include "engine.h" #include "dboxes.h" #ifndef NO_GDB #include "gdbcall.h" void gdbtk_hide_insight(void); void gdbtk_show_insight(void); void delete_command(void *, int); void symbol_file_clear(int); void gdbtk_clear_file(void); void exec_build_section_table(void); gchar *symfile; #endif int dbg_on = 0; int dbg_load = 0; /* Functions applicable to the whole debugger */ // create windows but don't show them yet void gtk_debugger_preload(void) { WND_TMR_START(); dbgw.regs = dbgregs_create_window(); dbgw.mem = dbgmem_create_window(); dbgw.bkpts = dbgbkpts_create_window(); dbgw.pclog = dbgpclog_create_window(); dbgw.stack = dbgstack_create_window(); dbgw.heap = dbgheap_create_window(); dbgw.iop = dbgiop_create_window(); dbgw.code = dbgcode_create_window(); if(options3.dbg_dock) //must be launched as last dbgw.dock = dbgdock_create_window(); dbg_load = !0; WND_TMR_STOP("Debugger Preload Time"); } void gtk_debugger_refresh(void) { WND_TMR_START(); if(options3.dbg_dock || GTK_WIDGET_VISIBLE(dbgw.regs)) dbgregs_refresh_window(); if(options3.dbg_dock || GTK_WIDGET_VISIBLE(dbgw.mem)) dbgmem_refresh_window(); if(options3.dbg_dock || GTK_WIDGET_VISIBLE(dbgw.bkpts)) dbgbkpts_refresh_window(); if(options3.dbg_dock || GTK_WIDGET_VISIBLE(dbgw.pclog)) dbgpclog_refresh_window(); if(options3.dbg_dock || GTK_WIDGET_VISIBLE(dbgw.code)) dbgcode_refresh_window(); if(options3.dbg_dock || GTK_WIDGET_VISIBLE(dbgw.stack)) dbgstack_refresh_window(); if(options3.dbg_dock || GTK_WIDGET_VISIBLE(dbgw.heap)) dbgheap_refresh_window(); if(options3.dbg_dock || GTK_WIDGET_VISIBLE(dbgw.iop)) dbgiop_refresh_window(); WND_TMR_STOP("Debugger Refresh Time"); printf("\n"); } void gtk_debugger_display(void) { WND_TMR_START(); // display debugger windows (if not) if(options3.dbg_dock) { dbgdock_display_window(); dbgiop_display_window(); dbgpclog_display_window(); } else { dbgregs_display_window(); dbgmem_display_window(); dbgbkpts_display_window(); dbgpclog_display_window(); dbgstack_display_window(); dbgheap_display_window(); dbgiop_display_window(); dbgcode_display_window(); // the last has focus } WND_TMR_STOP("Display Time"); } // show previously created window int gtk_debugger_enter(int context) { #ifndef NO_GDB gint type, id, mode; if (!dbg_on) gdbtk_show_insight(); #endif // debugger is open dbg_on = !0; // show breakpoint source (modal) switch(context) { case DBG_TRACE: break; case DBG_BREAK: break; } // display debugger windows (if not) gtk_debugger_display(); gtk_debugger_refresh(); // enable the debugger if GDB disabled it if (!options3.dbg_dock && !GTK_WIDGET_SENSITIVE(dbgw.regs)) gtk_debugger_enable(); // handle automatic debugging requests #ifndef NO_GDB if (symfile) { // get context ti68k_bkpt_get_cause(&type, &mode, &id); if(type == BK_TYPE_PGMENTRY) { uint16_t handle, offset; uint32_t pc; ti68k_bkpt_get_pgmentry_offset(id, &handle, &offset); ti68k_bkpt_del_pgmentry(handle); if(options3.dbg_dock || GTK_WIDGET_VISIBLE(dbgw.bkpts)) dbgbkpts_refresh_window(); delete_command(NULL, 0); symbol_file_clear(0); gdbtk_clear_file (); ti68k_register_get_pc(&pc); pc -= offset-2; gdb_add_symbol_file(symfile, pc); g_free (symfile); symfile = NULL; exec_build_section_table(); ti68k_unprotect_64KB_range(pc); gdb_hbreak("__main"); } } #endif return 0; } void gtk_debugger_close (void) { #ifndef NO_GDB // hide all windows gdbtk_hide_insight(); dbg_on = 0; if(options3.dbg_dock) dbgdock_hide_all(!0); else dbgwnds_hide_all(!0); // and restarts the emulator ti68k_bkpt_set_cause(0, 0, 0); dbgbkpts_erase_context(); if (engine_is_stopped()) gdbcall_continue(); #else // hide all windows dbg_on = 0; if(options3.dbg_dock) dbgdock_hide_all(!0); else dbgwnds_hide_all(!0); // and restarts the emulator ti68k_bkpt_set_cause(0, 0, 0); dbgbkpts_erase_context(); engine_start(); #endif } static gint close_debugger_wrapper(gpointer data) { gtk_debugger_close(); return FALSE; } void gtk_debugger_close_async (void) { g_idle_add(close_debugger_wrapper, NULL); } void gtk_debugger_disable(void) { if(options3.dbg_dock) dbgdock_set_sensitivity(FALSE); else dbgwnds_set_sensitivity(FALSE); } void gtk_debugger_enable(void) { if(options3.dbg_dock) dbgdock_set_sensitivity(TRUE); else dbgwnds_set_sensitivity(TRUE); } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_all.h000066400000000000000000000030651220314353500214660ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_all.h 2832 2009-05-08 10:56:40Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __DBG_ALL_H__ #define __DBG_ALL_H__ #include #include G_BEGIN_DECLS /* Variables */ extern int dbg_on; extern int dbg_load; extern gchar *symfile; /* Functions */ void gtk_debugger_preload(void); void gtk_debugger_display(void); void gtk_debugger_refresh(void); void gtk_debugger_disable(void); void gtk_debugger_enable(void); int gtk_debugger_enter(int context); void gtk_debugger_close(void); void gtk_debugger_close_async(void); G_END_DECLS #endif tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_bits.c000066400000000000000000000062121220314353500216470ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_data.c 2385 2007-03-12 21:04:20Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include "intl.h" #include "paths.h" #include "ti68k_int.h" #include "support.h" #include "dbg_bkpts.h" static GladeXML *xml; gint dbgbits_display_dbox(uint32_t *address, uint8_t *checks, uint8_t *states) { GtkWidget *dbox; GtkWidget *data; gint result; gchar *str; gint i; xml = glade_xml_new (tilp_paths_build_glade("dbg_bits-2.glade"), "dbgbits_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgbits_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); data = glade_xml_get_widget(xml, "entry4"); str = g_strdup_printf("0x%06x", *address); gtk_entry_set_text(GTK_ENTRY(data), str); g_free(str); for(i = 0; i < 8; i++) { str = g_strdup_printf("checkbutton1%i", i); data = glade_xml_get_widget(xml, str); g_free(str); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), *checks & (1 << i)); } for(i = 0; i < 8; i++) { str = g_strdup_printf("checkbutton2%i", i); data = glade_xml_get_widget(xml, str); g_free(str); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), *states & (1 << i)); } loop: result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: data = glade_xml_get_widget(xml, "entry4"); str = (gchar *)gtk_entry_get_text(GTK_ENTRY(data)); result = sscanf(str, "%x", address); if(result < 1) goto loop; for(*checks = i = 0; i < 8; i++) { str = g_strdup_printf("checkbutton1%i", i); data = glade_xml_get_widget(xml, str); g_free(str); *checks |= (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data)) << i); } for(*states = i = 0; i < 8; i++) { str = g_strdup_printf("checkbutton2%i", i); data = glade_xml_get_widget(xml, str); g_free(str); *states |= (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data)) << i); } gtk_widget_destroy(dbox); return 0; default: gtk_widget_destroy(dbox); return -1; } return 0; } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_bits.h000066400000000000000000000017621220314353500216610ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_data.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2007, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint dbgbits_display_dbox(uint32_t *, uint8_t *, uint8_t *); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_bkpts.c000066400000000000000000000640141220314353500220350ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_bkpts.c 2825 2009-05-06 19:48:47Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin, Kevin Kofler * Copyright (c) 2007, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" #include "bkpts.h" #include "handles.h" static GladeXML *xml = NULL; static GtkWidget *wnd = NULL; enum { COL_SYMBOL, COL_TYPE, COL_STATUS, COL_START, COL_END, COL_MODE, COL_DATA, COL_FONT }; #define CLIST_NVCOLS (6) // 7 visible columns #define CLIST_NCOLS (8) // 7 real columns static GtkListStore* clist_create(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkListStore *store; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; const gchar *text[CLIST_NVCOLS] = { _("Symbol"), _("Type"), _("Status"), _("Start"), _("End"), _("Mode") }; gint i; store = gtk_list_store_new(CLIST_NCOLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, -1 ); model = GTK_TREE_MODEL(store); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, TRUE); gtk_tree_view_set_rules_hint(view, FALSE); for(i = COL_SYMBOL; i <= COL_MODE; i++) { renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "text", i, "font", COL_FONT, NULL); } for (i = 0; i < CLIST_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); return store; } static GList** bkpts_mem_access[6] = { &bkpts.mem_rb, &bkpts.mem_rw, &bkpts.mem_rl, &bkpts.mem_wb, &bkpts.mem_ww, &bkpts.mem_wl, }; static GList** bkpts_mem_range[2] = { &bkpts.mem_rng_r, &bkpts.mem_rng_w, }; static const int bkpts_memacc_rw[6] = { BK_READ_BYTE, BK_READ_WORD, BK_READ_LONG, BK_WRITE_BYTE, BK_WRITE_WORD, BK_WRITE_LONG, }; static const int bkpts_memrng_rw[2] = { BK_READ, BK_WRITE }; static void clist_populate(GtkListStore *store) { GList *l; GtkTreeIter iter, iter2; gint i; GtkTreeModel *model = GTK_TREE_MODEL(store); gboolean valid, valid2, removed; uint32_t mode, mode2; // Code breakpoints for(l = bkpts.code; l != NULL; l = g_list_next(l)) { uint32_t addr = GPOINTER_TO_INT(l->data); gchar *str; str = g_strdup_printf("0x%06x", BKPT_ADDR(addr)); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_SYMBOL, str, COL_TYPE, ti68k_bkpt_type_to_string(BK_TYPE_CODE), COL_STATUS, BKPT_IS_ENABLED(addr) ? _("enabled") : _("disabled"), COL_START, str, COL_END, "", COL_MODE, BKPT_IS_TMP(addr) ? _("one-shot") : "", COL_DATA, l->data, -1); /* if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); */ g_free(str); } // Vector breakpoints for(l = bkpts.exception; l != NULL; l = g_list_next(l)) { gint n = GPOINTER_TO_INT(l->data); gchar *str1, *str2; gint bn = BKPT_ADDR(n); str1 = g_strdup_printf("#%i - %s", bn, ti68k_exception_to_string(bn)); str2 = g_strdup_printf("0x%06x", 4 * bn); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_SYMBOL, str1, COL_TYPE, ti68k_bkpt_type_to_string(BK_TYPE_EXCEPTION), COL_STATUS, BKPT_IS_ENABLED(n) ? _("enabled") : _("disabled"), COL_START, str2, COL_END, "", COL_MODE, "", COL_DATA, l->data, -1); /* if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); */ g_free(str1); g_free(str2); } // Memory access breakpoints for(i = 0; i < 6; i++) { for(l = *bkpts_mem_access[i]; l != NULL; l = g_list_next(l)) { uint32_t addr = GPOINTER_TO_INT(l->data); gchar *str; str = g_strdup_printf("0x%06x", BKPT_ADDR(addr)); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_SYMBOL, str, COL_TYPE, ti68k_bkpt_type_to_string(BK_TYPE_ACCESS), COL_STATUS, BKPT_IS_ENABLED(addr) ? _("enabled") : _("disabled"), COL_START, str, COL_END, "", COL_MODE, ti68k_bkpt_mode_to_string(BK_TYPE_ACCESS, bkpts_memacc_rw[i]), COL_DATA, l->data, -1); /* if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); */ g_free(str); } } // Memory range breakpoints for(i = 0; i < 2; i++) { for(l = *(bkpts_mem_range[i]); l != NULL; l = g_list_next(l)) { ADDR_RANGE *s = l->data; gchar *str1, *str2; str1 = g_strdup_printf("0x%06x", BKPT_ADDR(s->val1)); str2 = g_strdup_printf("0x%06x", BKPT_ADDR(s->val2)); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_SYMBOL, str1, COL_TYPE, ti68k_bkpt_type_to_string(BK_TYPE_RANGE), COL_STATUS, BKPT_IS_ENABLED(s->val1) ? _("enabled") : _("disabled"), COL_START, str1, COL_END, str2, COL_MODE, ti68k_bkpt_mode_to_string(BK_TYPE_RANGE, bkpts_memrng_rw[i]), COL_DATA, l->data, -1); /* if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); */ g_free(str1); g_free(str2); } } // Bit change breakpoints for(l = bkpts.bits; l != NULL; l = g_list_next(l)) { ADDR_BIT *s = l->data; gchar *str; str = g_strdup_printf("0x%06x", BKPT_ADDR(s->addr)); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_SYMBOL, str, COL_TYPE, ti68k_bkpt_type_to_string(BK_TYPE_BIT), COL_STATUS, BKPT_IS_ENABLED(s->addr) ? _("enabled") : _("disabled"), COL_START, str, COL_END, "", COL_MODE, "", COL_DATA, l->data, -1); /* if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); */ g_free(str); } // parse list to merge informations: ugly/heavy code ! for(valid = gtk_tree_model_get_iter_first(model, &iter); valid; valid = gtk_tree_model_iter_next(model, &iter)) { gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); gtk_tree_model_get(model, &iter, COL_SYMBOL, &row_text[COL_SYMBOL], COL_TYPE, &row_text[COL_TYPE], COL_START, &row_text[COL_START], COL_END, &row_text[COL_END], COL_MODE, &row_text[COL_MODE], -1); mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); memcpy(&iter2, &iter, sizeof(GtkTreeIter)); for(valid2 = gtk_tree_model_iter_next(model, &iter2); valid2; removed = FALSE) { gchar** row_text2 = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); gtk_tree_model_get(model, &iter2, COL_SYMBOL, &row_text2[COL_SYMBOL], COL_TYPE, &row_text2[COL_TYPE], COL_START, &row_text2[COL_START], COL_END, &row_text2[COL_END], COL_MODE, &row_text2[COL_MODE], -1); mode2 = ti68k_string_to_bkpt_mode(row_text2[COL_MODE]); if(!strcmp(row_text2[COL_TYPE], _("access")) || !strcmp(row_text2[COL_TYPE], _("range"))) { if(!strcmp(row_text[COL_START], row_text2[COL_START]) && !strcmp(row_text[COL_END], row_text2[COL_END])) { if( ((mode & BK_READ) && (mode2 & BK_WRITE)) || ((mode & BK_WRITE) && (mode2 & BK_READ)) ) { const gchar *new_str; new_str = ti68k_bkpt_mode_to_string(0, mode | BK_RW); gtk_list_store_set(store, &iter, COL_MODE, new_str, -1); valid2 = gtk_list_store_remove(store, &iter2); removed = TRUE; } } } g_strfreev(row_text2); if(!removed) valid2 = gtk_tree_model_iter_next(model, &iter2); } g_strfreev(row_text); } // Prgm entry breakpoints for(l = bkpts.pgmentry; l != NULL; l = g_list_next(l)) { uint32_t addr = GPOINTER_TO_INT(l->data); gchar *str; str = g_strdup_printf("#%04x", BKPT_ADDR(addr) >> 16); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_SYMBOL, str, COL_TYPE, ti68k_bkpt_type_to_string(BK_TYPE_PGMENTRY), COL_STATUS, BKPT_IS_ENABLED(addr) ? _("enabled") : _("disabled"), COL_START, str, COL_END, "", COL_MODE, BKPT_IS_TMP(addr) ? _("one-shot") : "", COL_DATA, l->data, -1); /* if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); */ g_free(str); } } static GtkListStore *store = NULL; /* Display registers window */ GtkWidget* dbgbkpts_create_window(void) { GtkWidget *dbox; GtkWidget *data; xml = glade_xml_new (tilp_paths_build_glade("dbg_bkpts-2.glade"), "dbgbkpts_window", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgbkpts_window"); if(options3.transient) gtk_window_set_transient_for(GTK_WINDOW(dbox), GTK_WINDOW(main_wnd)); data = glade_xml_get_widget(xml, "treeview1"); store = clist_create(data); clist_populate(store); gtk_tree_view_expand_all(GTK_TREE_VIEW(data)); return wnd = dbox; } GtkWidget* dbgbkpts_display_window(void) { #ifdef WND_STATE if(!options3.bkpts.minimized) { gtk_window_resize(GTK_WINDOW(wnd), options3.bkpts.rect.w, options3.bkpts.rect.h); gtk_window_move(GTK_WINDOW(wnd), options3.bkpts.rect.x, options3.bkpts.rect.y); } else gtk_window_iconify(GTK_WINDOW(wnd)); #endif if(!GTK_WIDGET_VISIBLE(dbgw.bkpts) && !options3.bkpts.closed) gtk_widget_show(wnd); return wnd; } void dbgbkpts_refresh_window(void) { WND_TMR_START(); if(!options3.bkpts.closed) { gtk_list_store_clear(store); clist_populate(store); display_dbgcause_dbox2(glade_get("statusbar1")); } WND_TMR_STOP("Breakpoints Refresh Time"); } void dbgbkpts_erase_context(void) { display_dbgcause_dbox2(glade_get("statusbar1")); } static GtkWidget* display_dbgbkpts_popup_menu(void) { GladeXML *xml; GtkWidget *data; xml = glade_xml_new (tilp_paths_build_glade("dbg_bkpts-2.glade"), "dbgbkpts_popup", PACKAGE); if (!xml) g_error(_("dbg_bkpts-2.glade: GUI loading failed !\n")); glade_xml_signal_autoconnect(xml); data = glade_xml_get_widget(xml, "dbgbkpts_popup"); return data; } /* Add bkpt */ GLADE_CB void dbgbkpts_button1_clicked (GtkButton *button, gpointer user_data) { GtkWidget *menu; guint butt = 0; guint32 time; time = gtk_get_current_event_time(); menu = display_dbgbkpts_popup_menu(); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, butt, time); gtk_widget_show(menu); } /* Remove bkpt */ GLADE_CB void dbgbkpts_button2_clicked (GtkButton *button, gpointer user_data) { GtkWidget *list = GTK_WIDGET(button); // arg are swapped, why ? GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeSelection *selection; GtkTreeModel *model; GList *l; // get selection selection = gtk_tree_view_get_selection(view); for (l = gtk_tree_selection_get_selected_rows(selection, &model); l != NULL; l = l->next) { GtkTreeIter iter; GtkTreePath *path = l->data; gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); uint32_t n, type, min, max, mode; gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, COL_SYMBOL, &row_text[COL_SYMBOL], COL_TYPE, &row_text[COL_TYPE], COL_START, &row_text[COL_START], COL_END, &row_text[COL_END], COL_MODE, &row_text[COL_MODE], -1); type = ti68k_string_to_bkpt_type(row_text[COL_TYPE]); switch(type) { case BK_TYPE_CODE: sscanf(row_text[COL_START], "%x", &min); ti68k_bkpt_del_address(min); dbgcode_refresh_window(); break; case BK_TYPE_EXCEPTION: sscanf(row_text[COL_SYMBOL], "#%i", &n); ti68k_bkpt_del_exception(n); break; case BK_TYPE_ACCESS: mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &min); ti68k_bkpt_del_access(min, mode); break; case BK_TYPE_RANGE: mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &min); sscanf(row_text[COL_END], "%x", &max); ti68k_bkpt_del_range(min, max, mode); break; case BK_TYPE_PGMENTRY: sscanf(row_text[COL_SYMBOL], "#%04x", &n); ti68k_bkpt_del_pgmentry((uint16_t)n); break; case BK_TYPE_BIT: mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &min); ti68k_bkpt_del_bits(min); } g_strfreev(row_text); } // free selection g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); dbgbkpts_refresh_window(); } /* Disable bkpt */ GLADE_CB void dbgbkpts_button3_clicked (GtkButton *button, GtkWidget *widget, gpointer user_data) { GtkWidget *list = GTK_WIDGET(button); // arg are swapped, why ? GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeSelection *selection; GtkTreeModel *model; GList *l; // get selection selection = gtk_tree_view_get_selection(view); for (l = gtk_tree_selection_get_selected_rows(selection, &model); l != NULL; l = l->next) { GtkTreeIter iter; GtkTreePath *path = l->data; gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); uint32_t n, type, min, max, mode; gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, COL_SYMBOL, &row_text[COL_SYMBOL], COL_TYPE, &row_text[COL_TYPE], COL_START, &row_text[COL_START], COL_END, &row_text[COL_END], COL_MODE, &row_text[COL_MODE], -1); type = ti68k_string_to_bkpt_type(row_text[COL_TYPE]); switch(type) { case BK_TYPE_CODE: sscanf(row_text[COL_START], "%x", &min); { uint32_t addr = BKPT_ADDR(min); ti68k_bkpt_set_address(addr, BKPT_DISABLE(min)); } break; case BK_TYPE_EXCEPTION: sscanf(row_text[COL_SYMBOL], "#%i", &n); { uint32_t addr = BKPT_ADDR(n); ti68k_bkpt_set_exception(addr, BKPT_DISABLE(n)); } break; case BK_TYPE_ACCESS: mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &min); { uint32_t addr = BKPT_ADDR(min); ti68k_bkpt_set_access(addr, mode, BKPT_DISABLE(min)); } break; case BK_TYPE_RANGE: mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &min); sscanf(row_text[COL_END], "%x", &max); { uint32_t addr1 = BKPT_ADDR(min); uint32_t addr2 = BKPT_ADDR(max); ti68k_bkpt_set_range(addr1, addr2, mode, BKPT_DISABLE(min), BKPT_DISABLE(max)); } break; case BK_TYPE_PGMENTRY: //sscanf(row_text[COL_SYMBOL], "#%04x", &n); //{ // uint32_t addr = BKPT_ADDR(n); // ti68k_bkpt_set_pgmentry(addr, BKPT_DISABLE(n)); //} break; case BK_TYPE_BIT: mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &min); { uint32_t addr = BKPT_ADDR(min); ti68k_bkpt_set_bits(addr, BKPT_DISABLE(addr)); } break; } g_strfreev(row_text); } // free selection g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); dbgbkpts_refresh_window(); } /* Enable bkpt */ GLADE_CB void dbgbkpts_button4_clicked (GtkButton *button, gpointer user_data) { GtkWidget *list = GTK_WIDGET(button); // arg are swapped, why ? GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeSelection *selection; GtkTreeModel *model; GList *l; // get selection selection = gtk_tree_view_get_selection(view); for (l = gtk_tree_selection_get_selected_rows(selection, &model); l != NULL; l = l->next) { GtkTreeIter iter; GtkTreePath *path = l->data; gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); uint32_t n, type, min, max, mode; gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, COL_SYMBOL, &row_text[COL_SYMBOL], COL_TYPE, &row_text[COL_TYPE], COL_START, &row_text[COL_START], COL_END, &row_text[COL_END], COL_MODE, &row_text[COL_MODE], -1); type = ti68k_string_to_bkpt_type(row_text[COL_TYPE]); switch(type) { case BK_TYPE_CODE: sscanf(row_text[COL_START], "%x", &min); { uint32_t addr = BKPT_ADDR(min); ti68k_bkpt_set_address(addr, BKPT_ENABLE(min)); } break; case BK_TYPE_EXCEPTION: sscanf(row_text[COL_SYMBOL], "#%i", &n); { uint32_t addr = BKPT_ADDR(n); ti68k_bkpt_set_exception(addr, BKPT_ENABLE(n)); } break; case BK_TYPE_ACCESS: mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &min); { uint32_t addr = BKPT_ADDR(min); ti68k_bkpt_set_access(addr, mode, BKPT_ENABLE(min)); } break; case BK_TYPE_RANGE: mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &min); sscanf(row_text[COL_END], "%x", &max); { uint32_t addr1 = BKPT_ADDR(min); uint32_t addr2 = BKPT_ADDR(max); ti68k_bkpt_set_range(addr1, addr2, mode, BKPT_ENABLE(min), BKPT_ENABLE(max)); } break; case BK_TYPE_PGMENTRY: //sscanf(row_text[COL_SYMBOL], "#%04x", &n); //{ // uint32_t addr = BKPT_ADDR(n); // ti68k_bkpt_set_pgmentry(addr, BKPT_ENABLE(n)); //} break; case BK_TYPE_BIT: mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &min); { uint32_t addr = BKPT_ADDR(min); ti68k_bkpt_set_bits(addr, BKPT_ENABLE(addr)); } break; } g_strfreev(row_text); } // free selection g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); dbgbkpts_refresh_window(); } /* Go to bkpt address */ GLADE_CB void dbgbkpts_button5_clicked (GtkButton *button, gpointer user_data) { GtkWidget *list = GTK_WIDGET(button); // arg are swapped, why ? GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeSelection *selection; GtkTreeModel *model; GList *l; // get selection selection = gtk_tree_view_get_selection(view); l = gtk_tree_selection_get_selected_rows(selection, &model); if(l != NULL) { GtkTreeIter iter; GtkTreePath *path = l->data; gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); uint32_t type, min, n, addr; gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, COL_SYMBOL, &row_text[COL_SYMBOL], COL_TYPE, &row_text[COL_TYPE], COL_START, &row_text[COL_START], COL_END, &row_text[COL_END], COL_MODE, &row_text[COL_MODE], -1); type = ti68k_string_to_bkpt_type(row_text[COL_TYPE]); switch(type) { case BK_TYPE_CODE: sscanf(row_text[COL_START], "%x", &min); addr = BKPT_ADDR(min); dbgcode_disasm_at(addr); break; case BK_TYPE_EXCEPTION: sscanf(row_text[COL_SYMBOL], "#%i", &n); dbgcode_disasm_at(mem_rd_long(4*n)); break; case BK_TYPE_ACCESS: case BK_TYPE_RANGE: case BK_TYPE_BIT: sscanf(row_text[COL_START], "%x", &min); addr = BKPT_ADDR(min); dbgmem_add_tab(addr); break; case BK_TYPE_PGMENTRY: { gpointer data; uint16_t handle, offset; gtk_tree_model_get(model, &iter, COL_DATA, &data, -1); handle = GPOINTER_TO_INT(data) >> 16; offset = GPOINTER_TO_INT(data) & 0xffff; addr = heap_deref(handle) + offset; dbgcode_disasm_at(addr); } break; } g_strfreev(row_text); } // free selection g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); } GLADE_CB gboolean on_treeview2_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreePath *path; GtkTreeViewColumn *column; GtkTreeIter iter; gboolean ret; if (event->type != GDK_2BUTTON_PRESS) // double-click ? return FALSE; else { // retrieve selection gint tx = (gint) event->x; gint ty = (gint) event->y; gint cx, cy; gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); uint32_t type; gpointer data; ret = gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, &cy); if(ret == FALSE) return FALSE; if (!gtk_tree_model_get_iter(model, &iter, path)) return FALSE; gtk_tree_path_free(path); gtk_tree_model_get(model, &iter, COL_SYMBOL, &row_text[COL_SYMBOL], COL_TYPE, &row_text[COL_TYPE], COL_START, &row_text[COL_START], COL_END, &row_text[COL_END], COL_MODE, &row_text[COL_MODE], COL_DATA, &data, -1); type = ti68k_string_to_bkpt_type(row_text[COL_TYPE]); if(type == BK_TYPE_CODE) { uint32_t old_addr, new_addr; sscanf(row_text[COL_START], "%x", &old_addr); new_addr = old_addr; if(display_dbgmem_address(&new_addr) == -1) return TRUE; ti68k_bkpt_set_address(old_addr, new_addr); dbgbkpts_refresh_window(); dbgcode_refresh_window(); } if((type == BK_TYPE_ACCESS) || (type == BK_TYPE_RANGE)) { uint32_t old_min, old_max; uint32_t new_min, new_max; uint32_t new_type; uint32_t old_mode, new_mode; old_mode = ti68k_string_to_bkpt_mode(row_text[COL_MODE]); sscanf(row_text[COL_START], "%x", &old_min); sscanf(row_text[COL_END], "%x", &old_max); new_type = type; new_mode = old_mode; new_min = old_min; new_max = old_max; if(dbgdata_display_dbox(&new_mode, &new_type, &new_min, &new_max) == -1) return TRUE; if(type != new_type) return TRUE; if(new_type == BK_TYPE_ACCESS) { ti68k_bkpt_del_access(old_min, old_mode); ti68k_bkpt_add_access(new_min, new_mode); //ti68k_bkpt_set_access(old_min, mode, new_min); } else if(new_type == BK_TYPE_RANGE) { ti68k_bkpt_del_range(old_min, old_max, old_mode); ti68k_bkpt_add_range(new_min, new_max, new_mode); //ti68k_bkpt_set_range(old_min, old_max, mode, new_min, new_max); } dbgbkpts_refresh_window(); } if(type == BK_TYPE_BIT) { uint32_t old_addr; ADDR_BIT *s = (ADDR_BIT *)data; sscanf(row_text[COL_START], "%x", &old_addr); if(dbgbits_display_dbox(&s->addr, &s->checks, &s->states) == -1) return TRUE; dbgbkpts_refresh_window(); } g_strfreev(row_text); return TRUE; } return FALSE; } GLADE_CB void dbgbkpts_bit_activate (GtkMenuItem *menuitem, gpointer user_data) { uint32_t addr = 0; uint8_t checks = 0, states = 0xff; if(dbgbits_display_dbox(&addr, &checks, &states) != 0) return; ti68k_bkpt_add_bits(addr, checks, states); dbgbkpts_refresh_window(); } GLADE_CB void dbgbkpts_data_activate (GtkMenuItem *menuitem, gpointer user_data) { uint32_t mode, type=-1, min, max; // fill infos if(dbgdata_display_dbox(&mode, &type, &min, &max) != 0) return; // add breakpoint if(type == BK_TYPE_ACCESS) ti68k_bkpt_add_access(min, mode) ; else if(type == BK_TYPE_RANGE) ti68k_bkpt_add_range(min, max, mode); // and refresh dbgbkpts_refresh_window(); } GLADE_CB void dbgbkpts_vector_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgvectors_display_dbox(); } GLADE_CB void dbgbkpts_prgmentry1_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgentry_display_dbox(); } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_bkpts.h000066400000000000000000000024731220314353500220430ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_bkpts.h 2713 2007-12-14 21:03:03Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include GtkWidget* dbgbkpts_create_window(void); GtkWidget* dbgbkpts_display_window(void); void dbgbkpts_refresh_window(void); void dbgbkpts_erase_context(void); typedef struct { gint mode; gint type; gint min; gint max; } DBG_DATA_INIT; tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_cause.c000066400000000000000000000177161220314353500220210ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_cause.c 2713 2007-12-14 21:03:03Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2007, Kevin Kofler, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include "intl.h" #include "paths.h" #include "ti68k_int.h" #include "dbg_code.h" gint dbgcause1_display_dbox() { GladeXML *xml; GtkWidget *dbox; GtkWidget *label; gint result; gchar *str; gint type, id, mode; uint32_t value, min, max; // get context ti68k_bkpt_get_cause(&type, &mode, &id); if(!type && !mode) return 0; // load GUI xml = glade_xml_new (tilp_paths_build_glade("dbg_cause-2.glade"), "dbgcause1_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgcause1_dbox"); // set PC label = glade_xml_get_widget(xml, "label21"); ti68k_register_get_pc(&value); str = g_strdup_printf("0x%06x", value); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); // set type label = glade_xml_get_widget(xml, "label22"); str = g_strdup_printf("%s", ti68k_bkpt_type_to_string(type)); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); // set mode label = glade_xml_get_widget(xml, "label23"); str = g_strdup_printf("%s", ti68k_bkpt_mode_to_string(type, mode)); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); // set id label = glade_xml_get_widget(xml, "label24"); str = g_strdup_printf("%i", id); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); // set target label = glade_xml_get_widget(xml, "label25"); switch(type) { case BK_TYPE_ACCESS: ti68k_bkpt_get_access(id, &min, mode); str = g_strdup_printf("0x%06x", min); break; case BK_TYPE_RANGE: ti68k_bkpt_get_range(id, &min, &max, mode); str = g_strdup_printf("0x%06x-0x%06x", min, max); break; default: str = g_strdup("n/a"); break; } gtk_label_set_text(GTK_LABEL(label), str); g_free(str); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: break; default: break; } gtk_widget_destroy(dbox); return 0; } gint dbgcause2_display_dbox() { GladeXML *xml; GtkWidget *dbox; GtkWidget *label; gint result; gchar *str; gint type, id, mode; uint32_t sp; uint32_t pc; uint32_t sr; // get context ti68k_bkpt_get_cause(&type, &mode, &id); if(!type && !mode && !id) return 0; // load GUI xml = glade_xml_new (tilp_paths_build_glade("dbg_cause-2.glade"), "dbgcause2_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgcause2_dbox"); // set exception type label = glade_xml_get_widget(xml, "label41"); gtk_label_set_text(GTK_LABEL(label), ti68k_exception_to_string(mode)); // set id label = glade_xml_get_widget(xml, "label42"); str = g_strdup_printf("%i", id); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); // set pushed PC ti68k_register_get_sp(&sp); sr = mem_rd_long(sp); str = g_strdup_printf("%04x", sr); label = glade_xml_get_widget(xml, "label43"); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); // set pushed SR ti68k_register_get_sp(&sp); pc = mem_rd_long(sp+2); str = g_strdup_printf("%06x", pc); label = glade_xml_get_widget(xml, "label44"); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: break; default: break; } gtk_widget_destroy(dbox); return 0; } gint display_dbgcause_dbox() { gint type, id, mode; // get context ti68k_bkpt_get_cause(&type, &mode, &id); if(!type && !mode && !id) return 0; // exception or code/mem ? if(type == BK_TYPE_EXCEPTION) dbgcause2_display_dbox(); else dbgcause1_display_dbox(); return 0; } gint display_dbgcause_dbox2(GtkWidget *sb) { gint type, id, mode; guint sb_id; gchar *str = NULL; // get context ti68k_bkpt_get_cause(&type, &mode, &id); if(!type && !mode && !id) { str = g_strdup(""); sb_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(sb), str); gtk_statusbar_push(GTK_STATUSBAR(sb), sb_id, str); g_free(str); return 0; } // user break if(!type && !mode) { uint32_t value; ti68k_register_get_pc(&value); str = g_strdup_printf("User break (PC=$%06x)", value); } // exception or code/mem ? else if(type == BK_TYPE_EXCEPTION) { // exception uint32_t sp; uint32_t pc; uint32_t sr; ti68k_register_get_sp(&sp); sr = mem_rd_long(sp); ti68k_register_get_sp(&sp); pc = mem_rd_long(sp+2); str = g_strdup_printf("type=<%s>, id=#%i, SR=%04x, PC=%06x", ti68k_exception_to_string(mode), id, sr, pc); } else if(type == BK_TYPE_CODE) { // code uint32_t value; ti68k_register_get_pc(&value); str = g_strdup_printf("type=<%s>, id=#%i, PC=$%06x", ti68k_bkpt_type_to_string(type), id, value); } else if((type == BK_TYPE_ACCESS) || (type ==BK_TYPE_RANGE)) { // mem access or range uint32_t value, min, max; gchar *str1, *str2; value = ti68k_debug_get_old_pc(); str1 = g_strdup_printf("type=<%s>, id=#%i, mode=<%s>, PC=$%06x", ti68k_bkpt_type_to_string(type), id, ti68k_bkpt_mode_to_string(type, mode), value); switch(type) { case BK_TYPE_ACCESS: ti68k_bkpt_get_access(id, &min, mode); str2 = g_strdup_printf("mem=$%06x", min); break; case BK_TYPE_RANGE: ti68k_bkpt_get_range(id, &min, &max, mode); str2 = g_strdup_printf("mem=$%06x-$%06x", min, max); break; default: str2 = g_strdup("n/a"); break; } str = g_strconcat(str1, ", ", str2, NULL); g_free(str1); g_free(str2); } else if(type == BK_TYPE_PROTECT) { uint32_t value; ti68k_register_get_pc(&value); switch(bkpts.id) { case 1: str = g_strdup_printf("hw protection violation: FLASH execution at $%06x. Execution allowed until $%06x.", value, 0x390000+tihw.archive_limit*0x10000); break; case 2: str = g_strdup_printf("hw protection violation: RAM execution at $%06x.", value); break; case 3: str = g_strdup_printf("hw protection violation: FLASH execution at $%06x. Execution allowed until $%06x.", value, tihw.rom_base + 0x10000 + tihw.io2[0x13]*0x10000); break; default: str = g_strdup("bug !"); break; } } else if(type == BK_TYPE_PGMENTRY) { uint16_t handle; uint32_t pc; ti68k_register_get_pc(&pc); ti68k_bkpt_get_pgmentry(id, &handle); str = g_strdup_printf("type=<%s>, id=#%i, handle=$%04x, PC=$%06x", ti68k_bkpt_type_to_string(type), id, handle, pc); } else if(type == BK_TYPE_BIT) { uint32_t value, addr; uint8_t checks, states; value = ti68k_debug_get_old_pc(); ti68k_bkpt_get_bits(id, &addr, &checks, &states); str = g_strdup_printf("type=<%s>, id=#%i, PC=$%06x, ($%06x)=#$%02x", ti68k_bkpt_type_to_string(type), id, value, addr, mem_rd_byte(addr)); } else { str = g_strdup("bug !"); } sb_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(sb), str); gtk_statusbar_push(GTK_STATUSBAR(sb), sb_id, str); g_free(str); return 0; } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_cause.h000066400000000000000000000023071220314353500220140ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_cause.h 2713 2007-12-14 21:03:03Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint display_dbgcause_dbox(void); gint display_dbgcause_dbox2(GtkWidget *sb); gint erase_dbgcause_dbox2(GtkWidget *sb); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_code.c000066400000000000000000000775161220314353500216370ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_code.c 2825 2009-05-06 19:48:47Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2008, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" #include "dbg_all.h" #include "dbg_romcall.h" #include "engine.h" #include "logger/log_link.h" #include "popup.h" gint reset_disabled = FALSE; //#define FIXED_SIZE //#define RUN_DBG_OPEN enum { COL_ICON, COL_ADDR, COL_OPCODE, COL_OPERAND, COL_HEXADDR, COL_FONT, }; #define CLIST_NVCOLS (4) // 4 visible columns #define CLIST_NCOLS (6) // 7 real columns #ifdef FIXED_SIZE #define NLINES 10 #else static gint NLINES = 10; #endif GladeXML *xml = NULL; static GtkListStore* clist_create(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkListStore *store; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; const gchar *text[CLIST_NVCOLS] = { " ", _("Address"), _("Opcode"), _("Operand") }; gint i; store = gtk_list_store_new(CLIST_NCOLS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, -1 ); model = GTK_TREE_MODEL(store); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, TRUE); gtk_tree_view_set_rules_hint(view, FALSE); renderer = gtk_cell_renderer_pixbuf_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, text[COL_ICON], renderer, "pixbuf", COL_ICON, NULL); for(i = COL_ADDR; i <= COL_OPERAND; i++) { renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "text", i, "font", COL_FONT, NULL); } for (i = 0; i < CLIST_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); #if 0 gtk_tree_view_column_set_resizable(col, FALSE); gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width(col, 100); gtk_tree_view_set_fixed_height_mode(view, TRUE); #endif } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); return store; } static void clist_populate(GtkListStore *store, uint32_t addr) { GtkTreeIter iter; GdkPixbuf *pix; gint i; uint32_t pc = ti68k_debug_get_pc(); /* We can't start disassembling stuff before GDB is even loaded, and in the cases where we have GDB running, but not the debugger, it's just a waste of time. */ if (!dbg_on) return; for(i = 0; i < NLINES; i++) { gchar *output; int offset; gchar** split; gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); uint32_t value; // disassemble at 'addr' address into 'output' and returns offset to the // next instruction address offset = ti68k_debug_disassemble(addr, &output); split = g_strsplit(output, " ", 3); g_free(output); row_text[0] = g_strdup(split[0]); sscanf(row_text[0], "%x", &value); if(split[1] == NULL) row_text[1] = g_strdup(""); else row_text[1] = g_strdup(split[1]); if(split[2] == NULL) row_text[2] = g_strdup(""); else row_text[2] = g_strdup(split[2]); if((g_list_find(bkpts.code, GINT_TO_POINTER(addr)) != NULL) && (addr != pc) || (g_list_find(bkpts.code, GINT_TO_POINTER(addr | BKPT_TMP_MASK)) != NULL) && (addr != pc)) pix = create_pixbuf("bkpt.xpm"); else if((g_list_find(bkpts.code, GINT_TO_POINTER(addr)) != NULL) && (addr == pc) || (g_list_find(bkpts.code, GINT_TO_POINTER(addr | BKPT_TMP_MASK)) != NULL) && (addr == pc)) pix = create_pixbuf("run_2.xpm"); else if(addr == pc) pix = create_pixbuf("run_1.xpm"); else pix = create_pixbuf("void.xpm"); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_ICON, pix, COL_ADDR, row_text[0], COL_OPCODE, row_text[1], COL_OPERAND, row_text[2], COL_HEXADDR, value, -1); if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); addr += offset; g_strfreev(split); g_strfreev(row_text); g_object_unref(pix); } } static void cyccnt_refresh(GtkWidget *l1, GtkWidget *l2) { unsigned int count, diff; gchar *str1, *str2; count = ti68k_get_cycle_count(0, &diff); str1 = g_strdup_printf("%u", count); str2 = g_strdup_printf("%2u", diff); gtk_label_set_text(GTK_LABEL(l1), str1); gtk_label_set_text(GTK_LABEL(l2), str2); g_free(str1); g_free(str2); } static void clist_refresh(GtkListStore *store, gboolean reload) { GtkTreeModel *model = GTK_TREE_MODEL(store); gboolean valid; GtkTreeIter iter; uint32_t addr; uint32_t pc, old_pc; int found = 0; const int offset = 3; // 3 instructions are still visible uint32_t addr3; gint i; // Data/Bit bkpt encounter after instruction execution so take care of this addr3 = pc = ti68k_debug_get_pc(); old_pc = ti68k_debug_get_old_pc(); // check for refresh (search for pc) for(valid = gtk_tree_model_get_iter_first(model, &iter), i = 0; valid; valid = gtk_tree_model_iter_next(model, &iter), i++) { gchar *str; gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &addr); if(i == offset) addr3 = addr; if(addr == pc) found = i+1; g_free(str); } // pc not found, erase and populate if(!found && reload) { gtk_list_store_clear(store); //printf("%06x %06x %i\n", old_pc, pc, abs(old_pc - pc)); clist_populate(store, abs((old_pc - pc)) > 8 ? pc : old_pc); } // repopulate so that 3 instructions are still visible at the bottom of the list if(found && reload) { if(NLINES - found < offset) { gtk_list_store_clear(store); clist_populate(store, addr3); } } // look for pc and matching bkpt for(valid = gtk_tree_model_get_iter_first(model, &iter); valid; valid = gtk_tree_model_iter_next(model, &iter)) { GdkPixbuf *pix; gchar *str; gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &addr); if(((g_list_find(bkpts.code, GINT_TO_POINTER(addr)) != NULL) && (addr != pc) || (g_list_find(bkpts.code, GINT_TO_POINTER(addr | BKPT_TMP_MASK)) != NULL) && (addr != pc))) pix = create_pixbuf("bkpt.xpm"); else if(((g_list_find(bkpts.code, GINT_TO_POINTER(addr)) != NULL) && (addr == pc) || (g_list_find(bkpts.code, GINT_TO_POINTER(addr | BKPT_TMP_MASK)) != NULL) && (addr == pc))) pix = create_pixbuf("run_2.xpm"); else if(addr == pc) pix = create_pixbuf("run_1.xpm"); else pix = create_pixbuf("void.xpm"); gtk_list_store_set(store, &iter, COL_ICON, pix, -1); g_free(str); g_object_unref(pix); } // update cycle counter cyccnt_refresh(glade_get("label3"), glade_get("label4")); } static GtkWidget *list; static GtkListStore *store; typedef struct { GtkWidget *b1; GtkWidget *b2; GtkWidget *b3; GtkWidget *b4; GtkWidget *b5; GtkWidget *b6; GtkWidget *b7; } TB; static TB tb; typedef struct { GtkWidget *m1; GtkWidget *m2; GtkWidget *m3; GtkWidget *m4; GtkWidget *m5; GtkWidget *m6; GtkWidget *m8; } MI; static MI mi; static void tb_set_states(int s1, int s2, int s3, int s4, int s5, int s6, int s7, int s8) { gtk_widget_set_sensitive(tb.b1, s1); gtk_widget_set_sensitive(tb.b2, s2); gtk_widget_set_sensitive(tb.b3, s3); gtk_widget_set_sensitive(tb.b4, s4); gtk_widget_set_sensitive(tb.b5, s5); gtk_widget_set_sensitive(tb.b6, s6); gtk_widget_set_sensitive(tb.b7, s7); gtk_widget_set_sensitive(mi.m1, s1); gtk_widget_set_sensitive(mi.m2, s2); gtk_widget_set_sensitive(mi.m3, s3); gtk_widget_set_sensitive(mi.m4, s4); gtk_widget_set_sensitive(mi.m5, s5); gtk_widget_set_sensitive(mi.m6, s6); gtk_widget_set_sensitive(mi.m8, s8); } /* Display source code window */ extern int update_submenu(GtkWidget*, gpointer); //dbg_wnds.c GtkWidget* dbgcode_create_window(void) { GtkWidget *dbox; GtkWidget *data; xml = glade_xml_new (tilp_paths_build_glade("dbg_code-2.glade"), "dbgcode_window", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgcode_window"); if(options3.transient) gtk_window_set_transient_for(GTK_WINDOW(dbox), GTK_WINDOW(main_wnd)); g_object_set(G_OBJECT(dbox), "allow-shrink", TRUE, NULL); /* { GtkStyle *copy; GtkStyle *style = gtk_rc_get_style(dbox); printf("=>> %i\n", style->ythickness); copy = gtk_style_copy(style); gtk_style_detach(style); style->ythickness = 0; gtk_widget_realize(dbox); gtk_style_attach(copy, dbox); } */ data = glade_xml_get_widget(xml, "windows1_menu"); g_signal_connect(G_OBJECT(data), "map", G_CALLBACK(update_submenu), NULL); tb.b1 = glade_xml_get_widget(xml, "button1"); tb.b2 = glade_xml_get_widget(xml, "button2"); tb.b3 = glade_xml_get_widget(xml, "button3"); tb.b4 = glade_xml_get_widget(xml, "button4"); tb.b5 = glade_xml_get_widget(xml, "button5"); tb.b6 = glade_xml_get_widget(xml, "button6"); tb.b7 = glade_xml_get_widget(xml, "button7"); mi.m1 = glade_xml_get_widget(xml, "run1"); mi.m2 = glade_xml_get_widget(xml, "step1"); mi.m3 = glade_xml_get_widget(xml, "step_over1"); mi.m4 = glade_xml_get_widget(xml, "step_out1"); mi.m5 = glade_xml_get_widget(xml, "run_to_cursor1"); mi.m6 = glade_xml_get_widget(xml, "break1"); mi.m8 = glade_xml_get_widget(xml, "quit1"); list = glade_xml_get_widget(xml, "treeview1"); store = clist_create(list); clist_populate(store, ti68k_debug_get_pc()); gtk_tree_view_expand_all(GTK_TREE_VIEW(list)); gtk_widget_show(list); data = glade_xml_get_widget(xml, "progressbar1"); gtk_widget_hide(data); dbgromcall_create_window(xml); dbgromcall_refresh_window(); return dbox; } GtkWidget* dbgcode_display_window(void) { #ifdef WND_STATE if(!options3.code.minimized) { gtk_window_resize(GTK_WINDOW(dbgw.code), options3.code.rect.w, options3.code.rect.h); gtk_window_move(GTK_WINDOW(dbgw.code), options3.code.rect.x, options3.code.rect.y); } else gtk_window_iconify(GTK_WINDOW(dbgw.code)); #endif gtk_widget_set_sensitive(list, TRUE); tb_set_states(1, 1, 1, 1, 1, 0, 1, 1); reset_disabled = FALSE; gtk_debugger_enable(); gtk_widget_show(dbgw.code); return dbgw.code; } void dbgcode_refresh_window(void) { WND_TMR_START(); if(!options3.code.closed) { gtk_list_store_clear(store); clist_refresh(store, TRUE); } WND_TMR_STOP("Code Refresh Time"); } void dbgcode_disasm_at(uint32_t addr) { GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreePath *path; //GtkTreeViewColumn *column; gtk_list_store_clear(store); clist_populate(store, addr); //set selection path = gtk_tree_path_new_from_string("0"); gtk_tree_view_set_cursor(view, path, NULL, FALSE); //gtk_tree_view_row_activated(view, path, column); // show selection gtk_tree_path_free(path); } GLADE_CB void on_run1_activate (GtkMenuItem *menuitem, gpointer user_data) { #ifdef RUN_DBG_OPEN tb_set_states(0, 0, 0, 0, 0, 1, 0, 0); reset_disabled = TRUE; gtk_widget_set_sensitive(list, FALSE); gtk_debugger_disable(); ti68k_debug_step(); // skip possible current bkpt engine_start(); #else gtk_debugger_close(); #endif } GLADE_CB void on_step1_activate (GtkMenuItem *menuitem, gpointer user_data) { ti68k_debug_step(); clist_refresh(store, TRUE); dbgregs_refresh_window(); dbgpclog_refresh_window(); dbgmem_refresh_window(); dbgstack_refresh_window(); dbgheap_refresh_window(); } GLADE_CB void on_step_over1_activate (GtkMenuItem *menuitem, gpointer user_data) { tb_set_states(0, 0, 0, 0, 0, 1, 0, 0); reset_disabled = TRUE; ti68k_debug_step_over(); tb_set_states(1, 1, 1, 1, 1, 0, 1, 1); reset_disabled = FALSE; clist_refresh(store, TRUE); dbgregs_refresh_window(); dbgpclog_refresh_window(); dbgmem_refresh_window(); dbgstack_refresh_window(); dbgheap_refresh_window(); } GLADE_CB void on_step_out1_activate (GtkMenuItem *menuitem, gpointer user_data) { ti68k_debug_step_out(); clist_refresh(store, TRUE); dbgregs_refresh_window(); dbgpclog_refresh_window(); dbgmem_refresh_window(); dbgstack_refresh_window(); dbgheap_refresh_window(); } GLADE_CB void on_run_to_cursor1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); GtkTreeSelection *selection; GtkTreeIter iter; gboolean valid; gchar *str; uint32_t addr; selection = gtk_tree_view_get_selection(view); valid = gtk_tree_selection_get_selected(selection, NULL, &iter); if(!valid) return; // Get address to go gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &addr); tb_set_states(0, 0, 0, 0, 0, 1, 0, 0); reset_disabled = TRUE; gtk_debugger_disable(); ti68k_debug_skip(addr); gtk_tree_selection_unselect_iter(selection, &iter); tb_set_states(1, 1, 1, 1, 1, 0, 1, 1); reset_disabled = FALSE; gtk_debugger_enable(); clist_refresh(store, FALSE); dbgregs_refresh_window(); dbgpclog_refresh_window(); dbgmem_refresh_window(); dbgstack_refresh_window(); dbgheap_refresh_window(); } GLADE_CB void on_break1_activate (GtkMenuItem *menuitem, gpointer user_data) { // Mode 1 is fastest #ifdef RUN_DBG_OPEN GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); engine_stop(); gtk_widget_set_sensitive(list, TRUE); tb_set_states(1, 1, 1, 1, 1, 0, 1, 1); reset_disabled = FALSE; gtk_debugger_enable(); clist_refresh(store, TRUE); #else ti68k_debug_break(); #endif } // Toggle breakpoint GLADE_CB void dbgcode_button6_clicked (GtkButton *button, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); GtkTreeSelection *selection; GtkTreeIter iter; gboolean valid; gchar *str; uint32_t addr; selection = gtk_tree_view_get_selection(view); valid = gtk_tree_selection_get_selected(selection, NULL, &iter); if(!valid) return; gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &addr); if(g_list_find(bkpts.code, GINT_TO_POINTER(addr)) == NULL) ti68k_bkpt_add_address(addr); else ti68k_bkpt_del_address(addr); clist_refresh(store, FALSE); dbgbkpts_refresh_window(); } // Toggle tmp breakpoint GLADE_CB void dbgcode_button7_clicked (GtkButton *button, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); GtkTreeSelection *selection; GtkTreeIter iter; gboolean valid; gchar *str; uint32_t addr; selection = gtk_tree_view_get_selection(view); valid = gtk_tree_selection_get_selected(selection, NULL, &iter); if(!valid) return; gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &addr); if(g_list_find(bkpts.code, GINT_TO_POINTER(addr | BKPT_TMP_MASK)) == NULL) ti68k_bkpt_add_address(addr | BKPT_TMP_MASK); else ti68k_bkpt_del_address(addr | BKPT_TMP_MASK); clist_refresh(store, FALSE); dbgbkpts_refresh_window(); } // Reset cycle counter GLADE_CB void dbgcode_button8_clicked (GtkButton *button, gpointer user_data) { ti68k_get_cycle_count(!0, NULL); gtk_label_set_text(GTK_LABEL(glade_get("label3")), "0"); } GLADE_CB void on_save1_activate (GtkMenuItem *menuitem, gpointer user_data) { on_quick_save_state_image1_activate(NULL, NULL); } GLADE_CB void on_revert1_activate (GtkMenuItem *menuitem, gpointer user_data) { ti68k_state_load(params.sav_file); gtk_debugger_refresh(); } /***** Popup menu *****/ /* Display popup menu (right click) */ static GtkWidget* display_dbgcode_popup_menu(void) { GladeXML *xml; GtkWidget *menu; xml = glade_xml_new (tilp_paths_build_glade("dbg_code-2.glade"), "dbgcode_popup", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); menu = glade_xml_get_widget(xml, "dbgcode_popup"); return menu; } GLADE_CB gboolean on_treeview1_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { switch (event->type) { case GDK_BUTTON_PRESS: // third button clicked if (event->button == 3) { GdkEventButton *bevent; GtkWidget *menu; bevent = (GdkEventButton *) (event); menu = display_dbgcode_popup_menu(); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time); gtk_widget_show(menu); return TRUE; } break; default: break; } return FALSE; } static int export_disasm_to_file(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeIter iter; gchar *str; uint32_t addr, start; gchar *output; int offset; int i, j; FILE *f; gchar **split; // starting address gtk_tree_model_get_iter_first(model, &iter); gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &start); #ifdef __WIN32__ f = fopen("C:\\disasm.txt", "a+t"); #else f = fopen("/tmp/disasm.txt", "a+t"); #endif if(f == NULL) return -1; addr = start; for(i = 0; i < NLINES; i++) { offset = ti68k_debug_disassemble(addr, &output); addr += offset; split = g_strsplit(output, " ", 3); g_free(output); fprintf(f, "%s\t%s", split[0], split[1]); for(j=10-strlen(split[1]); j >= 0; j--) fprintf(f, " "); fprintf(f, "\t%s", split[2]); for(j=16-strlen(split[2]); j >= 0; j--) fprintf(f, " "); fprintf(f, "\t;\n"); g_strfreev(split); } fclose(f); return 0; } // used to implement accelerator keys GLADE_CB void on_go_to_address1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_set_tmp_bkpt1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_set_breakpoint1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB void on_set_pc_to_selection1_activate (GtkMenuItem *menuitem, gpointer user_data); GLADE_CB gboolean on_treeview1_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); GtkTreeSelection *selection; GtkTreeIter iter; GtkTreePath *path; gboolean valid; gchar *str; gchar *row; gint row_idx, row_max; uint32_t addr, start; gchar *output; int offset; // starting address gtk_tree_model_get_iter_first(model, &iter); gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &start); // current address selection = gtk_tree_view_get_selection(view); valid = gtk_tree_selection_get_selected(selection, NULL, &iter); if(valid) { gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &addr); row = gtk_tree_model_get_string_from_iter(model, &iter); sscanf(row, "%i", &row_idx); row_max = gtk_tree_model_iter_n_children(model, NULL) - 1; } else row_idx = row_max = -1; // bind our key switch(event->keyval) { case GDK_F1: str = g_strdup_printf("%i", row_idx+1); path = gtk_tree_path_new_from_string(str); // restore selection g_free(str); gtk_tree_selection_select_path(selection, path); on_set_pc_to_selection1_activate(NULL, user_data); return FALSE; case GDK_F2: on_set_breakpoint1_activate(NULL, NULL); return FALSE; case GDK_F3: on_set_tmp_bkpt1_activate(NULL, NULL); return FALSE; case GDK_F4: on_run_to_cursor1_activate(NULL, NULL); return FALSE; case GDK_F5: on_run1_activate(NULL, NULL); return FALSE; case GDK_F6: on_set_pc_to_selection1_activate(NULL, user_data); return FALSE; case GDK_F7: on_step1_activate(NULL, NULL); return FALSE; case GDK_F8: on_step_over1_activate(NULL, NULL); return FALSE; case GDK_F9: on_step_out1_activate(NULL, NULL); return FALSE; case GDK_d: export_disasm_to_file(widget); return FALSE; case GDK_G: case GDK_g: on_go_to_address1_activate(NULL, user_data); return TRUE; case GDK_Up: if(row_max == -1) break; if(row_idx > 0) break; gtk_list_store_clear(store); clist_populate(store, addr - 2); return FALSE; case GDK_Down: if(row_max == -1) break; if(row_idx < row_max) break; offset = ti68k_debug_disassemble(start, &output); g_free(output); gtk_list_store_clear(store); clist_populate(store, start + offset); str = g_strdup_printf("%i", row_max); path = gtk_tree_path_new_from_string(str); // restore selection g_free(str); gtk_tree_selection_select_path(selection, path); return TRUE; case GDK_Page_Up: if(row_max == -1) break; if(row_idx > 0) break; gtk_list_store_clear(store); clist_populate(store, addr - 0x10); path = gtk_tree_path_new_from_string("0"); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return TRUE; case GDK_Page_Down: if(row_max == -1) break; if(row_idx < row_max) break; gtk_list_store_clear(store); clist_populate(store, addr/* + 0x10*/); str = g_strdup_printf("%i", row_max); path = gtk_tree_path_new_from_string(str); // restore selection g_free(str); gtk_tree_selection_select_path(selection, path); return TRUE; default: return FALSE; } return FALSE; } // note: user_data data passing has been manually added to Glade file GLADE_CB void on_go_to_address1_activate (GtkMenuItem *menuitem, gpointer user_data) { uint32_t addr = 0; if(display_dbgmem_address(&addr) == -1) return; gtk_list_store_clear(store); clist_populate(store, addr); } GLADE_CB void on_go_to_pc1_activate (GtkMenuItem *menuitem, gpointer user_data) { clist_refresh(store, TRUE); } GLADE_CB void on_set_breakpoint1_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgcode_button6_clicked(NULL, NULL); } GLADE_CB void on_set_tmp_bkpt1_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgcode_button7_clicked(NULL, NULL); } GLADE_CB void on_set_pc_to_selection1_activate (GtkMenuItem *menuitem, gpointer user_data) { //GtkWidget *list = GTK_WIDGET(user_data); GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeSelection *selection; GtkTreeIter iter; gboolean valid; gchar *str; uint32_t addr; selection = gtk_tree_view_get_selection(view); valid = gtk_tree_selection_get_selected(selection, NULL, &iter); if(!valid) return; gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &addr); ti68k_register_set_pc(addr); dbgcode_refresh_window(); dbgregs_refresh_window(); } GLADE_CB void on_view_memory1_activate (GtkMenuItem *menuitem, gpointer user_data) { //GtkWidget *list = GTK_WIDGET(user_data); GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeSelection *selection; GtkTreeIter iter; gboolean valid; gchar *str; uint32_t addr; selection = gtk_tree_view_get_selection(view); valid = gtk_tree_selection_get_selected(selection, NULL, &iter); if(!valid) return; gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &addr); dbgmem_add_tab(addr); } GLADE_CB void on_treeview1_size_allocate (GtkWidget *widget, GdkRectangle *allocation, gpointer user_data) { #ifndef FIXED_SIZE GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreePath *path; GdkRectangle rect; static int old = 0; path = gtk_tree_path_new_from_string("0"); gtk_tree_view_get_background_area(view, path, NULL, &rect); gtk_tree_path_free(path); //printf("allocation: %i %i / rect: %i %i\n", allocation->width, allocation->height, rect.width, rect.height); if(rect.height == 0) NLINES = 1; // at least 1 line in the window else NLINES = allocation->height / rect.height - 2; //printf("#lines: %i (%i %i)\n", NLINES, allocation->height, rect.height); if(old != NLINES) { gtk_list_store_clear(store); clist_refresh(store, TRUE); } old = NLINES; #endif } void gdbcallback_disable_debugger(void) { if (dbg_on) { tb_set_states(0, 0, 0, 0, 0, 1, 0, 0); gtk_widget_set_sensitive(list, FALSE); gtk_debugger_disable(); reset_disabled = TRUE; } } void gdbcallback_enable_debugger(void) { if (dbg_on) { gtk_widget_set_sensitive(list, TRUE); tb_set_states(1, 1, 1, 1, 1, 0, 1, 1); gtk_debugger_enable(); reset_disabled = FALSE; } } void gdbcallback_refresh_debugger(void) { if (dbg_on) { dbgcode_refresh_window(); dbgregs_refresh_window(); dbgpclog_refresh_window(); dbgmem_refresh_window(); dbgstack_refresh_window(); dbgheap_refresh_window(); // force refresh ! while(gtk_events_pending()) gtk_main_iteration_do(FALSE); } } int dbgcode_quit_enabled(void) { return GTK_WIDGET_SENSITIVE(mi.m8); } static int close_debugger_wrapper(gpointer data) { gtk_debugger_close(); return FALSE; } int gdbcallback_close_debugger(void *clientdata, void *interp, int argc, const char **argv) { if (dbg_on && dbgcode_quit_enabled()) g_idle_add(close_debugger_wrapper, NULL); return 0; } GLADE_CB void on_linkport1_activate (GtkMenuItem *menuitem, gpointer user_data) { display_loglink_dbox(); } // Font change static GtkWidget *font; static gint tmp_type; static gchar *tmp_name; GLADE_CB void on_font_activate (GtkMenuItem *menuitem, gpointer user_data) { GladeXML *xml; GtkWidget *dbox; gpointer data; gint result; xml = glade_xml_new (tilp_paths_build_glade("dbg_code-2.glade"), "dbgcode_font", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgcode_font"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); font = glade_xml_get_widget(xml, "label5"); tmp_type = options3.dbg_font_type; tmp_name = g_strdup(options3.dbg_font_name); if(!tmp_type) { data = glade_xml_get_widget(xml, "radiobutton4"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); data = glade_xml_get_widget(xml, "button9"); gtk_widget_set_sensitive(GTK_WIDGET(data), FALSE); } else { data = glade_xml_get_widget(xml, "radiobutton6"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); if(options3.dbg_font_name) gtk_label_set_text(GTK_LABEL(font), tmp_name); data = glade_xml_get_widget(xml, "button9"); gtk_widget_set_sensitive(GTK_WIDGET(data), TRUE); } result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: options3.dbg_font_type = tmp_type; if(tmp_name) { g_free(options3.dbg_font_name); options3.dbg_font_name = g_strdup(tmp_name); } gtk_debugger_refresh(); break; default: break; } gtk_widget_destroy(dbox); return; } GLADE_CB void on_radiobutton4_clicked (GtkButton *button, gpointer user_data) { PangoContext *context; PangoFontDescription *desc; context = gtk_widget_get_pango_context(GTK_WIDGET(button)); desc = pango_context_get_font_description(context); gtk_label_set_text(GTK_LABEL(font), pango_font_description_to_string(desc)); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); tmp_type = 0; } GLADE_CB void on_radiobutton6_clicked (GtkButton *button, gpointer user_data) { if(tmp_name) gtk_label_set_text(GTK_LABEL(font), tmp_name); gtk_widget_set_sensitive(GTK_WIDGET(button), TRUE); tmp_type = 1; } GLADE_CB void on_dbgcode_button9_clicked (GtkButton *button, gpointer user_data) { gint result; GtkWidget *dlg; gchar *str; dlg = gtk_font_selection_dialog_new(_("Choose font...")); if(tmp_name) gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(dlg), tmp_name); result = gtk_dialog_run(GTK_DIALOG(dlg)); switch (result) { case GTK_RESPONSE_OK: str = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(dlg)); g_free(tmp_name); tmp_name = g_strdup(str); gtk_label_set_text(GTK_LABEL(font), str); g_free(str); break; default: break; } gtk_widget_destroy(dlg); } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_code.h000066400000000000000000000024471220314353500216330ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_code.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include extern gint reset_disabled; GtkWidget* dbgcode_create_window(void); GtkWidget* dbgcode_display_window(void); void dbgcode_refresh_window(void); int dbgcode_quit_enabled(void); void dbgcode_disasm_at(uint32_t addr); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_data.c000066400000000000000000000146411220314353500216240ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_data.c 2753 2007-12-30 23:14:15Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include "intl.h" #include "paths.h" #include "ti68k_int.h" #include "support.h" #include "dbg_bkpts.h" static GladeXML *xml; gint dbgdata_display_dbox(gint *mode, gint *type, uint32_t *start, uint32_t *stop) { GtkWidget *dbox; GtkWidget *data; gint result; G_CONST_RETURN gchar *sc_start, *sc_stop; gchar *s_start, *s_stop; xml = glade_xml_new (tilp_paths_build_glade("dbg_data-2.glade"), "dbgdata_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgdata_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); data = glade_xml_get_widget(xml, "radiobutton20"); g_signal_emit_by_name(G_OBJECT(data), "toggled"); // set type if(*type == -1) { // skip box preset step } else { data = glade_xml_get_widget(xml, "radiobutton10"); if(*mode & BK_READ) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); data = glade_xml_get_widget(xml, "radiobutton11"); if(*mode & BK_WRITE) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); data = glade_xml_get_widget(xml, "radiobutton12"); if((*mode & BK_READ) && (*mode & BK_WRITE)) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); if(*type == BK_TYPE_ACCESS) { data = glade_xml_get_widget(xml, "radiobutton20"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); data = glade_xml_get_widget(xml, "comboboxentry1"); if(*mode & BK_BYTE) gtk_combo_box_set_active(GTK_COMBO_BOX(data), 0); else if(*mode & BK_WORD) gtk_combo_box_set_active(GTK_COMBO_BOX(data), 1); else if(*mode & BK_LONG) gtk_combo_box_set_active(GTK_COMBO_BOX(data), 2); data = glade_xml_get_widget(xml, "entry3"); s_start = g_strdup_printf("0x%06x", *start); gtk_entry_set_text(GTK_ENTRY(data), s_start); g_free(s_start); } else if(*type == BK_TYPE_RANGE) { data = glade_xml_get_widget(xml, "radiobutton21"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); data = glade_xml_get_widget(xml, "entry1"); s_start = g_strdup_printf("0x%06x", *start); gtk_entry_set_text(GTK_ENTRY(data), s_start); g_free(s_start); data = glade_xml_get_widget(xml, "entry2"); s_stop = g_strdup_printf("0x%06x", *stop); gtk_entry_set_text(GTK_ENTRY(data), s_stop); g_free(s_stop); } } loop: result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: sc_start = sc_stop = ""; // Retrieve settings from fields data = glade_xml_get_widget(xml, "radiobutton10"); if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))) *mode = BK_READ; data = glade_xml_get_widget(xml, "radiobutton11"); if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))) *mode = BK_WRITE; data = glade_xml_get_widget(xml, "radiobutton12"); if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))) *mode = BK_READ | BK_WRITE; data = glade_xml_get_widget(xml, "radiobutton20"); if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))) *type = BK_TYPE_ACCESS; data = glade_xml_get_widget(xml, "radiobutton21"); if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))) *type = BK_TYPE_RANGE; if(*type == BK_TYPE_ACCESS) { data = glade_xml_get_widget(xml, "comboboxentry1"); switch(gtk_combo_box_get_active(GTK_COMBO_BOX(data))) { case 0: *mode |= BK_BYTE; break; case 1: *mode |= BK_WORD; break; case 2: *mode |= BK_LONG; break; } data = glade_xml_get_widget(xml, "entry3"); sc_start = sc_stop = gtk_entry_get_text(GTK_ENTRY(data)); } else if(*type == BK_TYPE_RANGE) { data = glade_xml_get_widget(xml, "entry1"); sc_start = gtk_entry_get_text(GTK_ENTRY(data)); data = glade_xml_get_widget(xml, "entry2"); sc_stop = gtk_entry_get_text(GTK_ENTRY(data)); } // Convert values and check result = sscanf(sc_start, "%x", start); if(result < 1) goto loop; result = sscanf(sc_stop, "%x", stop); if((result < 1) && (*type == 2)) goto loop; if((*start > *stop) && (*type == 2)) goto loop; gtk_widget_destroy(dbox); return 0; default: gtk_widget_destroy(dbox); return -1; } return 0; } GLADE_CB void on_radiobutton20_toggled (GtkToggleButton *togglebutton, gpointer user_data) { GtkWidget *data; data = glade_xml_get_widget(xml, "optionmenu1"); gtk_widget_set_sensitive(data, TRUE); data = glade_xml_get_widget(xml, "entry3"); gtk_widget_set_sensitive(data, TRUE); data = glade_xml_get_widget(xml, "entry1"); gtk_widget_set_sensitive(data, FALSE); data = glade_xml_get_widget(xml, "entry2"); gtk_widget_set_sensitive(data, FALSE); } GLADE_CB void on_radiobutton21_toggled (GtkToggleButton *togglebutton, gpointer user_data) { GtkWidget *data; data = glade_xml_get_widget(xml, "optionmenu1"); gtk_widget_set_sensitive(data, FALSE); data = glade_xml_get_widget(xml, "entry3"); gtk_widget_set_sensitive(data, FALSE); data = glade_xml_get_widget(xml, "entry1"); gtk_widget_set_sensitive(data, TRUE); data = glade_xml_get_widget(xml, "entry2"); gtk_widget_set_sensitive(data, TRUE); } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_data.h000066400000000000000000000022321220314353500216220ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_data.h 2601 2007-07-14 08:49:30Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint dbgdata_display_dbox(uint32_t *, uint32_t *, uint32_t *, uint32_t *); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_dock.c000066400000000000000000000113611220314353500216270ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_code.c 2680 2007-11-19 20:53:09Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* This unit needs some explanations due to some tricks... Up to TiEmu v3.02, it was designed with a multi-windows system. Starting at v3.03, a dock has been added */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" #include "dbg_dock.h" DbgHandleBoxes dbghb = { 0 }; static GtkWidget* gtk_widget_get_child_(GtkWidget* widget) { GtkWidget *child = gtk_bin_get_child(GTK_BIN(widget)); return child; } static void gtk_widget_reparent_(GtkWidget* dst, GtkWidget* src) { GtkWidget *child = gtk_widget_get_child_(src); #if 1 gtk_widget_reparent(child, dst); #else gtk_widget_ref(child); gtk_container_remove(GTK_CONTAINER(src), child); gtk_container_add(GTK_CONTAINER(dst), child); gtk_widget_unref(child); #endif } GtkWidget* dbgdock_create_window(void) { GladeXML *xml; GtkWidget *dbox; xml = glade_xml_new (tilp_paths_build_glade("dbg_dock-2.glade"), "dbgdock_window", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgdock_window"); if(options3.transient) gtk_window_set_transient_for(GTK_WINDOW(dbox), GTK_WINDOW(main_wnd)); dbghb.stack = glade_xml_get_widget(xml, "frame1"); dbghb.regs = glade_xml_get_widget(xml, "frame2"); dbghb.bkpts = glade_xml_get_widget(xml, "frame3"); dbghb.code = glade_xml_get_widget(xml, "frame4"); dbghb.mem = glade_xml_get_widget(xml, "frame5"); dbghb.heap = glade_xml_get_widget(xml, "frame6"); // re-attach window childs to dock and destroy parent window gtk_widget_reparent_(dbghb.stack, dbgw.stack); gtk_widget_reparent_(dbghb.regs, dbgw.regs); gtk_widget_reparent_(dbghb.bkpts, dbgw.bkpts); gtk_widget_reparent_(dbghb.code, dbgw.code); gtk_widget_reparent_(dbghb.mem, dbgw.mem); gtk_widget_reparent_(dbghb.heap, dbgw.heap); // set them as 'open' options3.stack.closed = 0; options3.regs.closed = 0; options3.bkpts.closed = 0; options3.code.closed = 0; options3.mem.closed = 0; options3.heap.closed = 0; gtk_widget_destroy(dbgw.stack); dbgw.stack = NULL; gtk_widget_destroy(dbgw.regs); dbgw.regs = NULL; gtk_widget_destroy(dbgw.bkpts); dbgw.bkpts = NULL; gtk_widget_destroy(dbgw.mem); dbgw.mem = NULL; gtk_widget_destroy(dbgw.heap); dbgw.heap = NULL; #if 0 // has to be fixed... gtk_widget_destroy(dbgw.code); dbgw.code = NULL; #endif return dbox; } GtkWidget* dbgdock_display_window(void) { gtk_widget_show(dbgw.dock); return dbgw.dock; } void dbgdock_refresh_window(void) { return; } void dbgdock_set_sensitivity(int state) { gtk_widget_set_sensitive(dbghb.regs, state); gtk_widget_set_sensitive(dbghb.bkpts, state); gtk_widget_set_sensitive(dbghb.mem, state); gtk_widget_set_sensitive(dbghb.stack, state); gtk_widget_set_sensitive(dbghb.heap, state); } void dbgdock_show_all(int all) { if(!GTK_WIDGET_VISIBLE(dbgw.dock) && all) gtk_widget_show(dbgw.dock); if(GTK_WIDGET_VISIBLE(dbgw.iop)) gtk_window_iconify(GTK_WINDOW(dbgw.iop)); if(GTK_WIDGET_VISIBLE(dbgw.pclog)) gtk_window_iconify(GTK_WINDOW(dbgw.pclog)); } void dbgdock_hide_all(int all) { if(GTK_WIDGET_VISIBLE(dbgw.dock) && all) gtk_widget_hide(dbgw.dock); if(GTK_WIDGET_VISIBLE(dbgw.pclog)) gtk_widget_hide(dbgw.pclog); if(GTK_WIDGET_VISIBLE(dbgw.iop)) gtk_widget_hide(dbgw.iop); } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_dock.h000066400000000000000000000027711220314353500216410ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_code.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include typedef struct { GtkWidget *mem; GtkWidget *regs; GtkWidget *bkpts; GtkWidget *code; GtkWidget *pclog; GtkWidget *stack; GtkWidget *heap; } DbgHandleBoxes; extern DbgHandleBoxes dbghb; GtkWidget* dbgdock_create_window(void); GtkWidget* dbgdock_display_window(void); void dbgdock_set_sensitivity(int state); void dbgdock_show_all(int all); void dbgdock_hide_all(int all); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_entry.c000066400000000000000000000145241220314353500220540ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_entry.c 2753 2007-12-30 23:14:15Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * Copyright (c) 2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "dbg_entry.h" #include "dbg_bkpts.h" enum { COL_NAME, COL_HANDLE, COL_CHECK, COL_VISIBLE, }; #define CTREE_NVCOLS (1) // 1 visible columns #define CTREE_NCOLS (4) // 1 real columns static GList *sel = NULL; static void renderer_toggled (GtkCellRendererToggle *cell_renderer, const gchar *path_string, gpointer user_data) { GtkWidget *tree = user_data; GtkTreeView *view = GTK_TREE_VIEW(tree); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeStore *store = GTK_TREE_STORE(model); GtkTreePath *path; GtkTreeIter iter; gboolean check; gint handle; path = gtk_tree_path_new_from_string(path_string); if(!path) return; if (!gtk_tree_model_get_iter(model, &iter, path)) return; gtk_tree_model_get(model, &iter, COL_CHECK, &check, COL_HANDLE, &handle, -1); check = !check; gtk_tree_store_set(store, &iter, COL_CHECK, check, COL_HANDLE, &handle, -1); if(check) sel = g_list_append(sel, GINT_TO_POINTER((uint32_t)handle)); else sel = g_list_remove(sel, GINT_TO_POINTER((uint32_t)handle)); gtk_tree_path_free(path); } static GtkTreeStore* ctree_create(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeStore *store; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeSelection *selection; const gchar *text[CTREE_NVCOLS] = { _("Name") }; gint i; store = gtk_tree_store_new(CTREE_NCOLS, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, -1); model = GTK_TREE_MODEL(store); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, FALSE); gtk_tree_view_set_rules_hint(view, FALSE); column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); gtk_tree_view_column_set_title(column, text[COL_NAME]); renderer = gtk_cell_renderer_toggle_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), renderer, FALSE); gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), renderer, "active", COL_CHECK, "visible", COL_VISIBLE, NULL); g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(renderer_toggled), widget); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), renderer, FALSE); gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), renderer, "text", COL_NAME, NULL); for (i = 0; i < CTREE_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); return store; } static void ctree_populate(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeStore *store = GTK_TREE_STORE(model); gint i, j; GNode *tree; uint16_t handle; // Parse VAT vat_parse(&tree); // Retrieve breakpoint if(ti68k_bkpt_get_pgmentry(0, &handle)) handle = -1; // and show it for (i = 0; i < (int)g_node_n_children(tree); i++) { GNode *fol_node = g_node_nth_child(tree, i); VatSymEntry *vse = (VatSymEntry *)fol_node->data; GtkTreeIter fol_iter; gtk_tree_store_append(store, &fol_iter, NULL); gtk_tree_store_set(store, &fol_iter, COL_NAME, vse->name, COL_HANDLE, vse->handle, COL_CHECK, FALSE, COL_VISIBLE, FALSE, -1); for(j = 0; j < (int)g_node_n_children(fol_node); j++) { GNode *var_node = g_node_nth_child(fol_node, j); VatSymEntry *vse = (VatSymEntry *)var_node->data; GtkTreeIter var_iter; gtk_tree_store_append(store, &var_iter, &fol_iter); gtk_tree_store_set(store, &var_iter, COL_NAME, vse->name, COL_HANDLE, vse->handle, COL_CHECK, (vse->handle == handle), COL_VISIBLE, TRUE, -1); } } gtk_tree_view_expand_all(view); // Free copy of VAT vat_free(&tree); } static void ctree_get_selection(void) { GList *ptr; // clear bkpt list ti68k_bkpt_clear_pgmentry(); // create new one for(ptr = sel; ptr != NULL; ptr = g_list_next(ptr)) ti68k_bkpt_add_pgmentry((uint16_t)(GPOINTER_TO_INT(ptr->data))); // free data g_list_free(sel); sel = NULL; } gint dbgentry_display_dbox(void) { GladeXML *xml; GtkWidget *dbox; GtkWidget *data; gint result; xml = glade_xml_new (tilp_paths_build_glade("dbg_entry-2.glade"), "dbgentry_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgentry_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); //gtk_window_resize(GTK_WINDOW(dbox), 320, 240); data = glade_xml_get_widget(xml, "treeview1"); ctree_create(data); ctree_populate(data); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: ctree_get_selection(); dbgbkpts_refresh_window(); break; default: break; } gtk_widget_destroy(dbox); return 0; } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_entry.h000066400000000000000000000021011220314353500220450ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint dbgentry_display_dbox(); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_heap.c000066400000000000000000000154051220314353500216270ustar00rootroot00000000000000 /* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_heap.c 2825 2009-05-06 19:48:47Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" #include "handles.h" enum { COL_ID, COL_ADDR, COL_SIZE, COL_FONT, }; #define CLIST_NVCOLS (3) // visible columns #define CLIST_NCOLS (4) // real columns static GtkListStore* clist_create(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkListStore *store; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; const gchar *text[CLIST_NVCOLS] = { _("Id"), _("Address"), _("Size") }; gint i; store = gtk_list_store_new(CLIST_NCOLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, -1 ); model = GTK_TREE_MODEL(store); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, TRUE); gtk_tree_view_set_rules_hint(view, FALSE); for(i = COL_ID; i <= COL_SIZE; i++) { renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "text", i, "font", COL_FONT, NULL); } for (i = 0; i < CLIST_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); return store; } static void clist_populate(GtkListStore *store) { int i; for(i = 1; i < HEAP_MAX_SIZE; i++) { GtkTreeIter iter; uint32_t addr; uint16_t size; gchar** row_text; heap_get_block_addr_and_size(i, &addr, &size); if (!addr) continue; row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); row_text[0] = g_strdup_printf("%02x (%i):", i, i); row_text[1] = g_strdup_printf("%06x", addr); row_text[2] = g_strdup_printf("%i", size); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_ID, row_text[0], COL_ADDR, row_text[1], COL_SIZE, row_text[2], -1); if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); g_strfreev(row_text); } } static void clist_refresh(GtkListStore *store) { gtk_list_store_clear(store); clist_populate(store); } static GtkListStore *store = NULL; /* Display registers window */ GtkWidget* dbgheap_create_window(void) { GladeXML *xml = NULL; GtkWidget *dbox; GtkWidget *data; xml = glade_xml_new (tilp_paths_build_glade("dbg_heap-2.glade"), "dbgheap_window", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgheap_window"); if(options3.transient) gtk_window_set_transient_for(GTK_WINDOW(dbox), GTK_WINDOW(main_wnd)); data = glade_xml_get_widget(xml, "treeview1"); store = clist_create(data); clist_populate(store); gtk_tree_view_expand_all(GTK_TREE_VIEW(data)); return dbox; } GtkWidget* dbgheap_display_window(void) { #ifdef WND_STATE if(!options3.heap.minimized) { gtk_window_resize(GTK_WINDOW(dbgw.heap), options3.heap.rect.w, options3.heap.rect.h); gtk_window_move(GTK_WINDOW(dbgw.heap), options3.heap.rect.x, options3.heap.rect.y); } else gtk_window_iconify(GTK_WINDOW(dbgw.heap)); #endif if(!GTK_WIDGET_VISIBLE(dbgw.heap) && !options3.heap.closed) gtk_widget_show(dbgw.heap); return dbgw.heap; } void dbgheap_refresh_window(void) { if(!options3.heap.closed) { clist_refresh(store); } } static GtkWidget* display_dbgheap_popup_menu(void); static uint32_t value = 0; GLADE_CB gboolean on_heap_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GtkWidget *list = GTK_WIDGET(widget); GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeSelection *selection; GtkTreeModel *model; GList *l; // get selection selection = gtk_tree_view_get_selection(view); l = gtk_tree_selection_get_selected_rows(selection, &model); if(l != NULL) { GtkTreeIter iter; GtkTreePath *path = l->data; gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); // get address gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, COL_ADDR, &row_text[COL_ADDR], -1); // show tab sscanf(row_text[COL_ADDR], "%x", &value); g_strfreev(row_text); } if (l && event->type == GDK_2BUTTON_PRESS) { dbgmem_add_tab(value); g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); return TRUE; } else if(l && event->button == 3) { GdkEventButton *bevent; GtkWidget *menu; // popup menu bevent = (GdkEventButton *) (event); menu = display_dbgheap_popup_menu(); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time); gtk_widget_show(menu); g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); return TRUE; } return FALSE; } /***** Popup menu *****/ /* Display popup menu (right click) */ static GtkWidget* display_dbgheap_popup_menu(void) { GladeXML *xml; GtkWidget *menu; xml = glade_xml_new (tilp_paths_build_glade("dbg_heap-2.glade"), "dbgheap_popup", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); menu = glade_xml_get_widget(xml, "dbgheap_popup"); return menu; } GLADE_CB void on_dbgheap_view_memory1_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgmem_add_tab(value); } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_heap.h000066400000000000000000000022261220314353500216310ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include GtkWidget* dbgheap_create_window(void); GtkWidget* dbgheap_display_window(void); void dbgheap_refresh_window(void); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_iop.c000066400000000000000000000276131220314353500215050ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_iop.c 2818 2009-05-02 19:46:04Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * *Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin *Copyright (c) 2001-2003, Romain Lievin *Copyright (c) 2003, Julien Blache *Copyright (c) 2004, Romain Liévin *Copyright (c) 2005, Romain Liévin * *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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" #include "iodefs.h" enum { COL_NAME, COL_VALUE, COL_ADDR, COL_MASK, COL_FONT, COL_EDIT, COL_S, COL_BTNVIS, COL_BTNACT, }; #define CTREE_NVCOLS (4) // 2 visible columns #define CTREE_NCOLS (9) // 5 real columns // return value as string static char* rd_mem_as_str(IO_DEF *t) { switch(t->size) { case 1: return g_strdup_printf("%02x", mem_rd_byte(t->addr)); break; case 2: return g_strdup_printf("%04x", mem_rd_word(t->addr)); break; case 4: return g_strdup_printf("%08x", mem_rd_long(t->addr)); break; default: return g_strdup("???"); break; } return g_strdup(""); } static int rd_bit(IO_DEF *s, int bit_num) { switch(s->size) { case 1: return mem_rd_byte(s->addr) & (1 << bit_num); break; case 2: return mem_rd_word(s->addr) & (1 << bit_num); break; case 4: return mem_rd_long(s->addr) & (1 << bit_num); break; } return -1; } // check for valid hexadecimal value static int validate_value(const char *str, int ndigits) { int i; if((int)strlen(str) > ndigits) return 0; for(i = 0; (i < ndigits) && (i < (int)strlen(str)); i++) { if(!isxdigit(str[i])) return 0; } return !0; } // called when cell has been edited static void renderer_edited(GtkCellRendererText *cell, const gchar *path_string, const gchar *new_text, gpointer user_data) { GtkWidget *tree = user_data; GtkTreeView *view = GTK_TREE_VIEW(tree); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeStore *store = GTK_TREE_STORE(model); GtkTreePath *path = gtk_tree_path_new_from_string(path_string); GtkTreeIter iter, child; IO_DEF *s; gchar *str; uint32_t value; gboolean valid; if (!gtk_tree_model_get_iter(model, &iter, path)) return; gtk_tree_model_get(model, &iter, COL_VALUE, &str, COL_S, &s, -1); sscanf(str, "%x", &value); g_free(str); // change value in memory if(validate_value(new_text, 2 *s->size)) { sscanf(new_text, "%x", &value); switch(s->size) { case 1: mem_wr_byte(s->addr, (uint8_t )value); break; case 2: mem_wr_word(s->addr, (uint16_t)value); break; case 4: mem_wr_long(s->addr, (uint32_t)value); break; default: break; } } // and change displayed value (don't rely on typed value !) str = rd_mem_as_str(s); gtk_tree_store_set(store, &iter, COL_VALUE, str, -1); g_free(str); // update bits (children nodes) for(valid = gtk_tree_model_iter_children(model, &child, &iter); valid; valid = gtk_tree_model_iter_next(model, &child)) { gchar* bit_adr; int bit_num; gtk_tree_model_get(model, &child, COL_NAME, &str, COL_ADDR, &bit_adr, -1); sscanf(bit_adr, "%i", &bit_num); gtk_tree_store_set(store, &child, COL_BTNACT, rd_bit(s, bit_num), -1); } gtk_tree_path_free(path); } // called when a check button has been toggled static void renderer_toggled(GtkCellRendererToggle *cell, gchar *path_string, gpointer user_data) { GtkWidget *tree = user_data; GtkTreeView *view = GTK_TREE_VIEW(tree); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeStore *store = GTK_TREE_STORE(model); GtkTreePath *path; GtkTreeIter parent, iter; IO_DEF *s; gboolean state, result; gchar* bit_str; gint bit_num; gchar* str; path = gtk_tree_path_new_from_string(path_string); if (!gtk_tree_model_get_iter(model, &iter, path)) return; if (!gtk_tree_model_get_iter(model, &iter, path)) return; gtk_tree_model_get(model, &iter, COL_BTNACT, &state, COL_S, &s, COL_ADDR, &bit_str, -1); // change button state state = !state; sscanf(bit_str, "%i", &bit_num); // change value in memory switch(s->size) { case 1: if(state) mem_wr_byte(s->addr, (uint8_t)(mem_rd_byte(s->addr) | (1 << bit_num))); else mem_wr_byte(s->addr, (uint8_t)(mem_rd_byte(s->addr) & ~(1 << bit_num))); break; case 2: if(state) mem_wr_word(s->addr, (uint16_t)(mem_rd_word(s->addr) | (1 << bit_num))); else mem_wr_word(s->addr, (uint16_t)(mem_rd_word(s->addr) & ~(1 << bit_num))); break; case 4: if(state) mem_wr_long(s->addr, mem_rd_long(s->addr) | (1 << bit_num)); else mem_wr_long(s->addr, mem_rd_long(s->addr) & ~(1 << bit_num)); break; } // and change displayed value (parent node) gtk_tree_store_set(store, &iter, COL_BTNACT, state, -1); g_free(bit_str); result = gtk_tree_model_iter_parent(model, &parent, &iter); if(result) { str = rd_mem_as_str(s); gtk_tree_store_set(store, &parent, COL_VALUE, str, -1); g_free(str); } } static gboolean select_func(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer data) { return TRUE; } static GtkTreeStore* ctree_create(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeStore *store; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; GtkTreeViewColumn *column; gint i; store = gtk_tree_store_new(CTREE_NCOLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_POINTER, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, -1 ); model = GTK_TREE_MODEL(store); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, TRUE); gtk_tree_view_set_rules_hint(view, TRUE); // col 1 renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, _("Name"), renderer, "text", COL_NAME, "font", COL_FONT, NULL); // col 2 column = gtk_tree_view_column_new(); gtk_tree_view_append_column(view, column); gtk_tree_view_column_set_title(column, _("Value")); renderer = gtk_cell_renderer_toggle_new(); set_renderer_pad(renderer); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), renderer, FALSE); gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), renderer, "active", COL_BTNACT, "visible", COL_BTNVIS, NULL); g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(renderer_toggled), widget); renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), renderer, FALSE); gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), renderer, "text", COL_VALUE, "editable", COL_EDIT, "font", COL_FONT, NULL); g_signal_connect(G_OBJECT(renderer), "edited", G_CALLBACK(renderer_edited), widget); // col 3 renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, _("Address"), renderer, "text", COL_ADDR, "font", COL_FONT, NULL); // col 4 renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, _("Mask"), renderer, "text", COL_MASK, "font", COL_FONT, NULL); for (i = 0; i < CTREE_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); gtk_tree_selection_set_select_function(selection, select_func, NULL, NULL); return store; } static void ctree_populate(GtkTreeStore *store) { GNode* node0; GtkTreeIter iter0, iter1, iter2; int i, j, k; int result; // (re)load I/O ports result = ti68k_debug_load_iodefs(inst_paths.misc_dir); if(result == -1) { gtk_tree_store_clear(store); return; // already loaded } node0 = iodefs_tree(); if(node0 == NULL) return; // parse sections for (i = 0; i < (int)g_node_n_children(node0); i++) { GNode *node1 = g_node_nth_child(node0, i); IO_DEF *s = (IO_DEF *)(node1->data); gtk_tree_store_append(store, &iter0, NULL); gtk_tree_store_set(store, &iter0, COL_NAME, s->name, -1); if(options3.dbg_font_type) gtk_tree_store_set(store, &iter0, COL_FONT, options3.dbg_font_name, -1); // parse registers for (j = 0; j < (int)g_node_n_children(node1); j++) { GNode *node2 = g_node_nth_child(node1, j); IO_DEF *t = (IO_DEF *)(node2->data); gchar **row_text = g_malloc0((CTREE_NCOLS + 1) *sizeof(gchar *)); row_text[0] = g_strdup(t->name); row_text[1] = rd_mem_as_str(t); row_text[2] = g_strdup_printf("%06x", t->addr); row_text[3] = g_strdup(t->all_bits ? "" : t->bit_str); gtk_tree_store_append(store, &iter1, &iter0); gtk_tree_store_set(store, &iter1, COL_NAME, row_text[0], COL_VALUE, row_text[1], COL_ADDR, row_text[2], COL_MASK, row_text[3], COL_S, (gpointer)t, COL_EDIT, TRUE, COL_BTNVIS, FALSE, COL_BTNACT, FALSE, -1); if(options3.dbg_font_type) gtk_tree_store_set(store, &iter1, COL_FONT, options3.dbg_font_name, -1); g_strfreev(row_text); // parse bits for(k = t->nbits-1; k >= 0 ; k--) { row_text = g_malloc0((CTREE_NCOLS + 1) *sizeof(gchar *)); row_text[0] = g_strdup(t->bit_name[k]); row_text[2] = g_strdup_printf("%i", t->bits[k]); gtk_tree_store_append(store, &iter2, &iter1); gtk_tree_store_set(store, &iter2, COL_NAME, row_text[0], COL_ADDR, row_text[2], COL_S, (gpointer)t, COL_EDIT, FALSE, COL_BTNVIS, TRUE, COL_BTNACT, rd_bit(t, t->bits[k]), -1); } } } } static void ctree_refresh(GtkTreeStore *store) { gtk_tree_store_clear(store); ctree_populate(store); } static GtkTreeStore *store; /* Display io ports window */ GtkWidget* dbgiop_create_window(void) { GladeXML *xml = NULL; GtkWidget *dbox; GtkWidget *data; xml = glade_xml_new (tilp_paths_build_glade("dbg_ioports-2.glade"), "dbgioports_window", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgioports_window"); if(options3.transient) gtk_window_set_transient_for(GTK_WINDOW(dbox), GTK_WINDOW(main_wnd)); data = glade_xml_get_widget(xml, "treeview1"); store = ctree_create(data); ctree_populate(store); gtk_tree_view_collapse_all(GTK_TREE_VIEW(data)); return dbox; } GtkWidget* dbgiop_display_window(void) { #ifdef WND_STATE if(!options3.iop.minimized) { gtk_window_resize(GTK_WINDOW(dbgw.iop), options3.iop.rect.w, options3.iop.rect.h); gtk_window_move(GTK_WINDOW(dbgw.iop), options3.iop.rect.x, options3.iop.rect.y); } else gtk_window_iconify(GTK_WINDOW(dbgw.iop)); #endif if(!GTK_WIDGET_VISIBLE(dbgw.iop) && !options3.iop.closed) gtk_widget_show(dbgw.iop); return dbgw.iop; } void dbgiop_refresh_window(void) { WND_TMR_START(); if(!options3.iop.closed) { ctree_refresh(store); } WND_TMR_STOP("Iop Refresh Time"); } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_iop.h000066400000000000000000000023351220314353500215040ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_iop.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include GtkWidget* dbgiop_create_window(void); GtkWidget* dbgiop_display_window(void); void dbgiop_refresh_window(void); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_mem.c000066400000000000000000001032421220314353500214650ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_mem.c 2825 2009-05-06 19:48:47Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006-2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" #include "mem_map.h" #define FORCE_REFRESH #define DUMP_SIZE 128 enum { COL_ADDR, COL_0, COL_1, COL_2, COL_3, COL_4, COL_5, COL_6, COL_7, COL_8, COL_9, COL_A, COL_B, COL_C, COL_D, COL_E, COL_F, COL_ASCII, COL_S0, COL_S1, COL_S2, COL_S3, // green or white background (selection) COL_S4, COL_S5, COL_S6, COL_S7, COL_S8, COL_S9, COL_SA, COL_SB, COL_SC, COL_SD, COL_SE, COL_SF, COL_EDITABLE, // editable cell COL_GRAY, // left and right column in gray COL_FONT, // courier font for everyone COL_COLOR, // red or black foreground (changes) }; #define CLIST_NVCOLS (18) #define CLIST_NCOLS (18 + 20) static gint column2index(GtkWidget *list, GtkTreeViewColumn * column) { gint i; for (i = 0; i < CLIST_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(GTK_TREE_VIEW(list), i); if (col == column) return i; } return -1; } static void renderer_edited(GtkCellRendererText * cell, const gchar * path_string, const gchar * new_text, gpointer user_data) { GtkWidget *list = user_data; GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); GtkTreeViewColumn *column; GtkTreeIter iter; GtkTreePath *path; gint col; gchar *str_addr; gchar *str_data = (char *)new_text; int addr, data, i; gchar *ascii, *utf; gsize bw; // get column gtk_tree_view_get_cursor(view, &path, &column); if(!path || !column) return; // get iterator if (!gtk_tree_model_get_iter(model, &iter, path)) return; // get address col = column2index(list, column); gtk_tree_model_get(model, &iter, COL_ADDR, &str_addr, COL_ASCII, &ascii, -1); // check for new value if((strlen(str_data) % 2) != 0) { gtk_tree_path_free(path); return; } for(i = 0; i < (int)strlen(str_data); i++) if(!isxdigit(str_data[i])) { gtk_tree_path_free(path); return; } // set new value(s) and update memory for(i = 0; (i < (int)strlen(str_data)/2) && ((col+i) <= COL_F); i++) { char digits[3]; int offset = col - COL_0 + i; strncpy(digits, &new_text[2*i], 2); digits[2] = '\0'; sscanf(str_addr, "%x", &addr); sscanf(digits, "%x", &data); mem_wr_byte(addr + offset, (uint8_t)data); // don't rely on typed value data = mem_rd_byte(addr + offset); sprintf(digits, "%02x", data); ascii[offset] = (isprint(data) && !iscntrl(data) ? data : '.'); gtk_list_store_set(store, &iter, col+i, digits, -1); dbgstack_refresh_window(); // refresh stack, too } // and ascii area, too utf = g_locale_to_utf8(ascii, -1, NULL, &bw, NULL); gtk_list_store_set(store, &iter, COL_ASCII, utf, -1); g_free(str_addr); gtk_tree_path_free(path); } static void refresh_page(int page, int offset); static gboolean on_treeview_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data); static gboolean on_treeview_btn_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); static GtkWidget* clist_create(GtkListStore **st) { GtkWidget *list; GtkTreeView *view; GtkListStore *store; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; const gchar *text[CLIST_NVCOLS] = { _("Address"), "+0", "+1", "+2", "+3", "+4", "+5", "+6", "+7", "+8", "+9", "+A", "+B", "+C", "+D", "+E", "+F", "ASCII" }; gint i; store = gtk_list_store_new(CLIST_NCOLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, GDK_TYPE_COLOR, G_TYPE_BOOLEAN, GDK_TYPE_COLOR, G_TYPE_STRING, GDK_TYPE_COLOR, -1 ); model = GTK_TREE_MODEL(store); list = gtk_tree_view_new_with_model(model); view = GTK_TREE_VIEW(list); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, TRUE); gtk_tree_view_set_rules_hint(view, TRUE); i = COL_ADDR; renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "text", i, "font", COL_FONT, "foreground-gdk", COL_GRAY, NULL); for (i = COL_0; i <= COL_F; i++) { renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "text", i, "font", COL_FONT, "editable", COL_EDITABLE, "foreground-gdk", COL_COLOR, "background-gdk", COL_S0 + i - COL_0, NULL); g_signal_connect(G_OBJECT(renderer), "edited", G_CALLBACK(renderer_edited), list); } i = COL_ASCII; renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "text", i, "font", COL_FONT, "foreground-gdk", COL_GRAY, NULL); for (i = 0; i < CLIST_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); g_signal_connect(G_OBJECT(list), "key_press_event", G_CALLBACK(on_treeview_key_press_event), list); g_signal_connect(G_OBJECT(list), "button_press_event", G_CALLBACK(on_treeview_btn_press_event), list); *st = store; return list; } static void clist_populate(GtkListStore *store, uint32_t start, int length) { GtkTreeIter iter; int i; gchar *str; char ascii[17]; uint32_t a; GdkColor gray, black, red, white; gboolean success; GdkColor *color = &black; //static uint8_t old[DUMP_SIZE] = { 0 }; //static uint8_t *old_ptr; gdk_color_parse("DarkGray", &gray); gdk_colormap_alloc_colors(gdk_colormap_get_system(), &gray, 1, FALSE, FALSE, &success); gdk_color_parse("Black", &black); gdk_colormap_alloc_colors(gdk_colormap_get_system(), &black, 1, FALSE, FALSE, &success); gdk_color_parse("Red", &red); gdk_colormap_alloc_colors(gdk_colormap_get_system(), &red, 1, FALSE, FALSE, &success); gdk_color_parse("White", &white); gdk_colormap_alloc_colors(gdk_colormap_get_system(), &white, 1, FALSE, FALSE, &success); //old_ptr = old; for(a = start; a < start+length; a += 0x10) { uint32_t addr = a & 0xffffff; uint8_t mem; char *utf; gsize bw; gtk_list_store_append(store, &iter); str = g_strdup_printf("%06x", addr); gtk_list_store_set(store, &iter, COL_ADDR, str, COL_GRAY, &gray, -1); g_free(str); if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); else gtk_list_store_set(store, &iter, COL_FONT, "courier", -1); for(i = COL_0; i <= COL_F; i++) { if(addr + (i-COL_0) != 0x60000f) mem = mem_rd_byte(addr + (i-COL_0)); else mem = 0xff; str = g_strdup_printf("%02x", mem); ascii[i-COL_0] = (isprint(mem) && !iscntrl(mem) ? mem : '.'); /* if(*old_ptr != *mem_ptr) { *old_ptr++ = *mem_ptr; color = &red; printf("$"); } else { old_ptr++; color = &black; printf("."); } */ gtk_list_store_set(store, &iter, i, str, COL_EDITABLE, TRUE, COL_COLOR, color, i + CLIST_NVCOLS - COL_0, &white, -1); g_free(str); } ascii[16] = '\0'; utf = g_locale_to_utf8(ascii, -1, NULL, &bw, NULL); gtk_list_store_set(store, &iter, COL_ASCII, utf, -1); } } static void clist_refresh(GtkListStore *store, uint32_t start, int length) { gtk_list_store_clear(store); clist_populate(store, start, length); } static void notebook_add_page(GtkWidget *notebook, const char* tab_name) { GtkListStore *store; GtkWidget *label; GtkWidget *child; GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); uint32_t addr; label = gtk_label_new(tab_name); gtk_widget_show(label); child = clist_create(&store); // display normal sscanf(tab_name, "%06x", &addr); clist_populate(store, addr, DUMP_SIZE); gtk_widget_show(child); gtk_notebook_insert_page(nb, child, label, page); gtk_notebook_set_current_page(nb, page); gtk_widget_grab_focus(child); } static GtkWidget *notebook; /* Display memory window */ GtkWidget* dbgmem_create_window(void) { GladeXML *xml = NULL; GtkWidget *dbox; xml = glade_xml_new (tilp_paths_build_glade("dbg_mem-2.glade"), "dbgmem_window", PACKAGE); if (!xml) g_error("GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgmem_window"); if(options3.transient) gtk_window_set_transient_for(GTK_WINDOW(dbox), GTK_WINDOW(main_wnd)); notebook = glade_xml_get_widget(xml, "notebook1"); gtk_notebook_popup_enable(GTK_NOTEBOOK(notebook)); notebook_add_page(notebook, "0x000000"); return dbox; } GtkWidget* dbgmem_display_window(void) { #ifdef WND_STATE if(!options3.mem.minimized) { gtk_window_resize(GTK_WINDOW(dbgw.mem), options3.mem.rect.w, options3.mem.rect.h); gtk_window_move(GTK_WINDOW(dbgw.mem), options3.mem.rect.x, options3.mem.rect.y); } else gtk_window_iconify(GTK_WINDOW(dbgw.mem)); #endif if(!GTK_WIDGET_VISIBLE(dbgw.mem) && !options3.mem.closed) gtk_widget_show(dbgw.mem); return dbgw.mem; } void dbgmem_refresh_window(void) { WND_TMR_START(); if(!options3.mem.closed) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); refresh_page(page, 0); } WND_TMR_STOP("Memory Refresh Time"); } void dbgmem_add_tab(uint32_t addr) { gchar *str; str = g_strdup_printf("%06x", addr); notebook_add_page(notebook, str); g_free(str); } GLADE_CB void dbgmem_button1_clicked (GtkButton *button, gpointer user_data) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); uint32_t addr = 0; gchar *str; if(display_dbgmem_address(&addr) == -1) return; str = g_strdup_printf("%06x", addr); notebook_add_page(notebook, str); g_free(str); gtk_widget_set_sensitive(GTK_WIDGET(button), gtk_notebook_get_n_pages(nb) > 1 ? TRUE : FALSE); } GLADE_CB void dbgmem_button2_clicked (GtkButton *button, gpointer user_data) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); if(gtk_notebook_get_n_pages(nb) > 1) gtk_notebook_remove_page(nb, page); gtk_widget_set_sensitive(GTK_WIDGET(button), gtk_notebook_get_n_pages(nb) > 1 ? TRUE : FALSE); } GLADE_CB void dbgmem_button3_clicked (GtkButton *button, gpointer user_data) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); refresh_page(page, -0x10); } GLADE_CB void dbgmem_button4_clicked (GtkButton *button, gpointer user_data) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); refresh_page(page, +0x10); } GLADE_CB void dbgmem_button5_clicked (GtkButton *button, gpointer user_data) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); refresh_page(page, 0); } /***** Mem Map popup menu *****/ static void memmap_menu_activate(GtkMenuItem* menuitem, gpointer user_data) { guint32 addr = GPOINTER_TO_INT(user_data); gchar *str; str = g_strdup_printf("%06x", addr); notebook_add_page(notebook, str); g_free(str); } static GtkWidget* memmap_menu(void) { GtkWidget *menu; GtkWidget *item; int result; MEM_MAP **ptr, **array = NULL; menu = gtk_menu_new(); g_object_set_data_full(G_OBJECT(menu), "memmap_menu", gtk_widget_ref(menu), (GDestroyNotify)g_object_unref); // (re)load mem map result = ti68k_debug_load_memmap(inst_paths.misc_dir); if(result == -1) { return menu; } array = memmap_array(); if(array == NULL) return menu; for(ptr = array; *ptr; ptr++) { MEM_MAP *s = *ptr; char *label; label = g_strdup_printf("%06x-%06x : %s", s->addr, s->addr + s->size - 1, s->name); item = gtk_menu_item_new_with_label(label); g_object_set_data_full(G_OBJECT(menu), "c_drive", gtk_widget_ref(item), (GDestroyNotify)g_object_unref); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); g_signal_connect((gpointer)item, "activate", G_CALLBACK(memmap_menu_activate), GINT_TO_POINTER(s->addr)); g_free(label); } return menu; } GLADE_CB void dbgmem_button6_clicked (GtkButton *button, gpointer user_data) { GtkWidget *menu; guint butt = 0; guint32 time; time = gtk_get_current_event_time(); menu = memmap_menu(); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, butt, time); gtk_widget_show(menu); } GLADE_CB void on_notebook1_switch_page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data) { refresh_page(page_num, 0); } /***** Misc *****/ static void refresh_page(int page, int offset) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); GtkWidget *tab; GtkWidget *label; G_CONST_RETURN gchar *text; uint32_t addr, len = DUMP_SIZE; GList *l, *elt; GtkWidget *list; GtkTreeView *view; GtkTreeModel *model; GtkListStore *store; gchar *str; gint i; // retrieve addr by tab name tab = gtk_notebook_get_nth_page(nb, page); label = gtk_notebook_get_tab_label(nb, tab); text = gtk_label_get_text(GTK_LABEL(label)); // get list pointer (we have 1 child) l = gtk_container_get_children(GTK_CONTAINER(nb)); elt = g_list_nth(l, page); list = GTK_WIDGET(elt->data); view = GTK_TREE_VIEW(list); model = gtk_tree_view_get_model(view); store = GTK_LIST_STORE(model); // get new address sscanf(text, "%x", &addr); len = DUMP_SIZE; addr += offset; addr &= 0xffffff; // refresh only if mem changed (speed-up) #ifndef FORCE_REFRESH if(!offset) { static uint8_t old_array[DUMP_SIZE] = { 0 }; gint diff = 0; // can't use memcmp due to banking for(i = 0; i < DUMP_SIZE; i++) { uint8_t old = old_array[i]; uint8_t mem = mem_rd_byte(addr + i); if(old != mem) { old = mem; diff = !0; } } if(!diff) return; } #endif // refresh tab str = g_strdup_printf("%06x", addr); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); // and list clist_refresh(store, addr, len <= DUMP_SIZE ? len : DUMP_SIZE); // set column for(i = COL_0; i <= COL_F; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); str = g_strdup_printf("%X", (addr + i - 1) & 0xf); gtk_tree_view_column_set_title(col, str); g_free(str); } } /***** Popup menu *****/ /* Display popup menu (right click) */ static GtkWidget* display_dbgmem_popup_menu(void) { GladeXML *xml2; GtkWidget *menu; xml2 = glade_xml_new (tilp_paths_build_glade("dbg_mem-2.glade"), "dbgmem_popup", PACKAGE); if (!xml2) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml2); menu = glade_xml_get_widget(xml2, "dbgmem_popup"); return menu; } static gboolean on_treeview_btn_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreePath *path; GtkTreeViewColumn *column; gboolean ret; switch (event->type) { case GDK_BUTTON_PRESS: // third button clicked if (event->button == 3) { GdkEventButton *bevent; GtkWidget *menu; //--- set cell focus gint tx = (gint) event->x; gint ty = (gint) event->y; gint cx, cy; ret = gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, &cy); gtk_tree_view_set_cursor(view, path, column, FALSE); // select cell gtk_tree_view_row_activated(view, path, column); // show selection gtk_tree_path_free(path); //printf("%i %i %i %i (%i)\n", tx, ty, cx, cy, ret); //--- bevent = (GdkEventButton *) (event); menu = display_dbgmem_popup_menu(); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time); gtk_widget_show(menu); return TRUE; } break; default: break; } return FALSE; } GLADE_CB void on_find1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); GtkWidget *tab; GtkWidget *label; G_CONST_RETURN gchar *text; uint32_t addr; tab = gtk_notebook_get_nth_page(nb, page); label = gtk_notebook_get_tab_label(nb, tab); text = gtk_label_get_text(GTK_LABEL(label)); sscanf(text, "%06x", &addr); display_dbgmem_search(addr); } GLADE_CB void on_find_next1_activate (GtkMenuItem *menuitem, gpointer user_data) { } GLADE_CB void on_go_to_address2_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); uint32_t addr = 0; gchar *str; if(display_dbgmem_address(&addr) == -1) return; gtk_notebook_remove_page(nb, page); str = g_strdup_printf("%06x", addr); notebook_add_page(notebook, str); g_free(str); } static uint32_t column2address (GtkMenuItem *menuitem, gpointer user_data) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); GList *l, *elt; GtkWidget *list; GtkTreeView *view; GtkTreeModel *model; GtkListStore *store; gchar *str; GtkTreePath *path; GtkTreeViewColumn *column; GtkTreeIter iter; gint col; uint32_t addr; // get list pointer (we have 1 child) l = gtk_container_get_children(GTK_CONTAINER(nb)); elt = g_list_nth(l, page); list = GTK_WIDGET(elt->data); view = GTK_TREE_VIEW(list); model = gtk_tree_view_get_model(view); store = GTK_LIST_STORE(model); // get column gtk_tree_view_get_cursor(view, &path, &column); if(!path || !column) return -1; // get iterator if (!gtk_tree_model_get_iter(model, &iter, path)) return -1; // get address col = column2index(list, column); gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%06x", &addr); return (addr + (col-1)); } GLADE_CB void on_dissassemble1_activate (GtkMenuItem *menuitem, gpointer user_data) { uint32_t addr = column2address(menuitem, user_data); // populate code at this address dbgcode_disasm_at(addr); } GLADE_CB void on_disassemble_indirect1_activate (GtkMenuItem *menuitem, gpointer user_data) { uint32_t addr = column2address(menuitem, user_data); // populate code at the address contained at this address dbgcode_disasm_at(mem_rd_long(addr)); } GLADE_CB void on_dbgmem_view_memory1_activate (GtkMenuItem *menuitem, gpointer user_data) { uint32_t addr = column2address(menuitem, user_data); gchar *str; // open a new tab at the address contained at this address str = g_strdup_printf("%06x", mem_rd_long(addr)); notebook_add_page(notebook, str); g_free(str); } static void search_next(void); GLADE_CB gboolean on_dbgmem_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); switch(event->keyval) { case GDK_F1: dbgmem_button1_clicked(NULL, NULL); return TRUE; case GDK_F2: dbgmem_button2_clicked(NULL, NULL); return TRUE; case GDK_F3: dbgmem_button3_clicked(NULL, NULL); return TRUE; case GDK_F4: dbgmem_button4_clicked(NULL, NULL); return TRUE; case GDK_F5: dbgmem_button5_clicked(NULL, NULL); return TRUE; case GDK_F6: dbgmem_button6_clicked(NULL, NULL); return TRUE; case GDK_F7: gtk_notebook_next_page(nb); return TRUE; case GDK_F8: gtk_notebook_prev_page(nb); return TRUE; default: return FALSE; } return FALSE; } static gboolean on_treeview_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeIter iter; GtkTreePath *path; GtkTreeViewColumn *column; gchar *str; gchar *row; gint row_idx, row_max; uint32_t min, max; gint n; GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); // get min address gtk_tree_model_get_iter_first(model, &iter); gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &min); // get max address n = gtk_tree_model_iter_n_children(model, NULL); gtk_tree_model_iter_nth_child(model, &iter, NULL, n-1); gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "%x", &max); // retrieve cursor gtk_tree_view_get_cursor(view, &path, &column); if(path == NULL) return FALSE; // get row row_idx = row_max = -1; row = gtk_tree_path_to_string(path); sscanf(row, "%i", &row_idx); g_free(row); row_max = gtk_tree_model_iter_n_children(model, NULL) - 1; //printf("row_idx = %i\n", row_idx); switch(event->keyval) { case GDK_Up: if(row_max == -1) break; if(row_idx > 0) break; refresh_page(page, -0x10); return FALSE; case GDK_Down: if(row_max == -1) break; if(row_idx < row_max) break; refresh_page(page, +0x10); str = g_strdup_printf("%i", row_max); path = gtk_tree_path_new_from_string(str); g_free(str); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return FALSE; case GDK_Page_Up: if(row_max == -1) break; if(row_idx > 0) break; refresh_page(page, -DUMP_SIZE); path = gtk_tree_path_new_from_string("0"); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return FALSE; case GDK_Page_Down: if(row_max == -1) break; if(row_idx < row_max) break; refresh_page(page, +DUMP_SIZE); str = g_strdup_printf("%i", row_max); path = gtk_tree_path_new_from_string(str); g_free(str); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return FALSE; case GDK_n: search_next(); return TRUE; case GDK_a: case GDK_A: if(event->state & GDK_CONTROL_MASK) { on_go_to_address2_activate((GtkMenuItem *)widget, user_data); return TRUE; } case GDK_f: case GDK_F: if(event->state & GDK_CONTROL_MASK) { on_find1_activate((GtkMenuItem *)widget, user_data); return TRUE; } case GDK_plus: dbgmem_button1_clicked(NULL, NULL); return FALSE; case GDK_minus: dbgmem_button2_clicked(NULL, NULL); return FALSE; default: return FALSE; } return FALSE; } /* Type address in a box. */ gint display_dbgmem_address(uint32_t *addr) { GladeXML *xml; GtkWidget *dbox; GtkWidget *entry; gint result; gchar *str; gint ret = -1; xml = glade_xml_new (tilp_paths_build_glade("dbg_mem-2.glade"), "dbgmem_address", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); entry = glade_xml_get_widget(xml, "entry1"); str = g_strdup_printf("0x%06x", *addr); gtk_entry_set_text(GTK_ENTRY(entry), str); g_free(str); gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); dbox = glade_xml_get_widget(xml, "dbgmem_address"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: str = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry))); sscanf(str, "%x", addr); ret = 0; break; default: break; } gtk_widget_destroy(dbox); return ret; } /* Search string/data Note: 'casse' is a French'ized word taken from the English word 'case'. It means 'case sensitive' or in good French 'respect des majuscules'. */ static gint search_engine(char *str, int ascii, int casse, uint32_t *address, int *length) { uint8_t *data; uint16_t len; gchar *tmp; gint i; uint32_t addr; data = (uint8_t *) g_strdup((gchar *) str); len = strlen((char *) data); // ASCII mode ? if(!ascii) { char *p, *q; // compact string p = str; q = tmp = g_strdup(str); while(*p) { if(*p != ' ') *q++ = *p++; else p++; } *q = '\0'; // and converts len = strlen(tmp) / 2; for(i = 0; i < len; i++) { char digits[3]; unsigned int temp; strncpy(digits, &tmp[2*i], 2); digits[2] = '\0'; sscanf(digits, "%02x", &temp); data[i] = temp; } g_free(tmp); } // search (we don't use memcmp because mem space may be not contiguous) i = 0; for(addr = *address; addr <= 0xffffff; addr++) { if(mem_rd_byte(addr) == data[i]) i++; else i = 0; if(i == len) break; } if(i == len) { *address = addr - len + 1; *length = len; return !0; } return 0; } #define IS_BOUNDED(a,v,b) (((a) <= (v)) && ((v) <= (b))) static gint search_highlight(uint32_t blk_beg, uint32_t blk_end, int state) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); GtkWidget *tab; GtkWidget *label; G_CONST_RETURN gchar *text; uint32_t tab_adr, addr, offset; gint i; gint start, stop; GList *l, *elt; GtkWidget *list; GtkTreeView *view; GtkTreeModel *model; GtkListStore *store; GtkTreeIter iter; gboolean valid; GdkColor white, green; gboolean success; gdk_color_parse("White", &white); gdk_colormap_alloc_colors(gdk_colormap_get_system(), &white, 1, FALSE, FALSE, &success); gdk_color_parse("Green", &green); gdk_colormap_alloc_colors(gdk_colormap_get_system(), &green, 1, FALSE, FALSE, &success); // retrieve addr by tab name tab = gtk_notebook_get_nth_page(nb, page); label = gtk_notebook_get_tab_label(nb, tab); text = gtk_label_get_text(GTK_LABEL(label)); sscanf(text, "%06x", &tab_adr); // get list pointer (we have 1 child) l = gtk_container_get_children(GTK_CONTAINER(nb)); elt = g_list_nth(l, page); list = GTK_WIDGET(elt->data); view = GTK_TREE_VIEW(list); model = gtk_tree_view_get_model(view); store = GTK_LIST_STORE(model); // scroll mem if(!IS_BOUNDED(tab_adr, blk_beg, tab_adr + DUMP_SIZE)) { GtkNotebook *nb = GTK_NOTEBOOK(notebook); gint page = gtk_notebook_get_current_page(nb); offset = (blk_beg - tab_adr) & 0xfffff0; refresh_page(page, offset); while(gtk_events_pending()) gtk_main_iteration(); tab_adr += offset; tab_adr &= 0xffffff; } // change background color for(valid = gtk_tree_model_get_iter_first(model, &iter), addr = tab_adr; valid && (addr - tab_adr < DUMP_SIZE); valid = gtk_tree_model_iter_next(model, &iter), addr += 0x10) { // clear selection for(i = 0; i < 16; i++) gtk_list_store_set(store, &iter, i + COL_S0, &white, -1); if(addr + 16 <= blk_beg) continue; if(addr > blk_end) continue; start = !addr ? blk_beg : blk_beg % addr; if(start > 15) start = 0; stop = !addr ? blk_end : blk_end % addr; if(stop > 15) stop = 16; // set selection for(i = start; (i < 16) && (i < stop); i++) gtk_list_store_set(store, &iter, i + COL_S0, &green, -1); } return 0; } // searching engine context static gchar *old_str = NULL; static gint ascii = !0; static gint casse = !0; static uint32_t blk_adr = 0x000000; static gint blk_len = 0; static void search_next(void) { if(search_engine(old_str, ascii, casse, &blk_adr, &blk_len)) { search_highlight(blk_adr, blk_adr + blk_len, !0); while(gtk_events_pending()) gtk_main_iteration(); } blk_adr += blk_len; } gint display_dbgmem_search(uint32_t addr) { GladeXML *xml; GtkWidget *dbox; GtkWidget *entry, *check1, *check2; gint result; gchar *str; gint ret = -1; xml = glade_xml_new (tilp_paths_build_glade("dbg_mem-2.glade"), "dbgmem_search", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); if(old_str == NULL) old_str = g_strdup(""); entry = glade_xml_get_widget(xml, "entry1"); gtk_entry_set_text(GTK_ENTRY(entry), old_str); check1 = glade_xml_get_widget(xml, "checkbutton1"); check2 = glade_xml_get_widget(xml, "checkbutton2"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check2), TRUE); dbox = glade_xml_get_widget(xml, "dbgmem_search"); /* Find, Find Next, Cancel */ gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_APPLY, GTK_RESPONSE_CANCEL,-1); for(result = 0;;) { result = gtk_dialog_run(GTK_DIALOG(dbox)); if((result == GTK_RESPONSE_CANCEL) || (result == GTK_RESPONSE_DELETE_EVENT)) break; if(result == GTK_RESPONSE_OK) { blk_adr = addr; //0x000000; blk_len = 0; } //printf("searching at $%x\n", blk_adr); // find first/next str = (gchar *)gtk_entry_get_text(GTK_ENTRY(entry)); g_free(old_str); old_str = g_strdup(str); ascii = GTK_TOGGLE_BUTTON(check1)->active; casse = GTK_TOGGLE_BUTTON(check2)->active; gtk_widget_set_sensitive(entry, FALSE); while(gtk_events_pending()) gtk_main_iteration(); if(search_engine(old_str, ascii, casse, &blk_adr, &blk_len)) { search_highlight(blk_adr, blk_adr + blk_len, !0); while(gtk_events_pending()) gtk_main_iteration(); } gtk_widget_set_sensitive(entry, TRUE); while(gtk_events_pending()) gtk_main_iteration(); blk_adr += blk_len; blk_adr &= 0xffffff; } gtk_widget_destroy(dbox); return ret; } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_mem.h000066400000000000000000000024751220314353500215000ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_mem.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include GtkWidget* dbgmem_create_window(void); GtkWidget* dbgmem_display_window(void); void dbgmem_refresh_window(void); void dbgmem_add_tab(uint32_t addr); gint display_dbgmem_address(uint32_t *addr); gint display_dbgmem_search(uint32_t addr); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_pclog.c000066400000000000000000000127511220314353500220170ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_pclog.c 2818 2009-05-02 19:46:04Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" enum { COL_ADDR, COL_FONT }; #define CLIST_NVCOLS (1) // 1 visible columns #define CLIST_NCOLS (2) // 1 real columns static GtkListStore* clist_create(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkListStore *store; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; const gchar *text[CLIST_NVCOLS] = { _("Address") }; gint i; store = gtk_list_store_new(CLIST_NCOLS, G_TYPE_STRING, G_TYPE_STRING, -1 ); model = GTK_TREE_MODEL(store); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, TRUE); gtk_tree_view_set_rules_hint(view, FALSE); for(i = COL_ADDR; i <= COL_ADDR; i++) { renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "font", COL_FONT, "text", i, NULL); } for (i = 0; i < CLIST_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); return store; } static void clist_populate(GtkListStore *store) { int i; for(i = 0; i < logger.pclog_size; i++) { GtkTreeIter iter; uint32_t addr; gchar *str; addr = logger.pclog_buf[(logger.pclog_ptr + i) % logger.pclog_size]; str = g_strdup_printf("%06x", addr); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_ADDR, str, -1); if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); g_free(str); } } static void clist_refresh(GtkListStore *store) { gtk_list_store_clear(store); clist_populate(store); } static GtkListStore *store = NULL; /* Display registers window */ GtkWidget* dbgpclog_create_window(void) { GladeXML *xml = NULL; GtkWidget *dbox; GtkWidget *data; xml = glade_xml_new (tilp_paths_build_glade("dbg_pclog-2.glade"), "dbgpclog_window", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgpclog_window"); if(options3.transient) gtk_window_set_transient_for(GTK_WINDOW(dbox), GTK_WINDOW(main_wnd)); data = glade_xml_get_widget(xml, "treeview1"); store = clist_create(data); clist_populate(store); gtk_tree_view_expand_all(GTK_TREE_VIEW(data)); return dbox; } GtkWidget* dbgpclog_display_window(void) { #ifdef WND_STATE if(!options3.pclog.minimized) { gtk_window_resize(GTK_WINDOW(dbgw.pclog), options3.pclog.rect.w, options3.pclog.rect.h); gtk_window_move(GTK_WINDOW(dbgw.pclog), options3.pclog.rect.x, options3.pclog.rect.y); } else gtk_window_iconify(GTK_WINDOW(dbgw.pclog)); #endif if(!GTK_WIDGET_VISIBLE(dbgw.pclog) && !options3.pclog.closed) gtk_widget_show(dbgw.pclog); return dbgw.pclog; } void dbgpclog_refresh_window(void) { WND_TMR_START(); if(!options3.pclog.closed) { clist_refresh(store); } WND_TMR_STOP("Pclog Refresh Time"); } GLADE_CB gboolean on_pclog_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GtkWidget *list = GTK_WIDGET(widget); GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeSelection *selection; GtkTreeModel *model; GList *l; // is double click ? if(event->type != GDK_2BUTTON_PRESS) return FALSE; // get selection selection = gtk_tree_view_get_selection(view); l = gtk_tree_selection_get_selected_rows(selection, &model); if(l != NULL) { GtkTreeIter iter; GtkTreePath *path = l->data; gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); uint32_t addr; // get address gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, COL_ADDR, &row_text[COL_ADDR], -1); // populate code sscanf(row_text[COL_ADDR], "%x", &addr); dbgcode_disasm_at(addr); g_strfreev(row_text); } // free selection g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); return FALSE; } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_pclog.h000066400000000000000000000022311220314353500220140ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include GtkWidget* dbgpclog_create_window(void); GtkWidget* dbgpclog_display_window(void); void dbgpclog_refresh_window(void); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_regs.c000066400000000000000000000350511220314353500216510ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_regs.c 2825 2009-05-06 19:48:47Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004-2005, Romain Liévin * Copyright (c) 2007, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" #define FLAG_T 15 #define FLAG_S 13 #define FLAG_X 4 #define FLAG_N 3 #define FLAG_Z 2 #define FLAG_V 1 #define FLAG_C 0 typedef struct { GtkWidget *d[8]; GtkWidget *a[8]; GtkWidget *pc; GtkWidget *sr; GtkWidget *usp, *ssp; GtkWidget *t, *s, *i; GtkWidget *x, *n, *z, *v, *c; } WidgetRegs; static WidgetRegs wregs = { 0 }; static GdkColor red, black; static int validate_value(const char *str, int ndigits) { int i; if((int)strlen(str) > ndigits) return 0; for(i = 0; (i < ndigits) && (i < (int)strlen(str)); i++) { if(!isxdigit(str[i])) return 0; } return !0; } GLADE_CB void on_dbgregs_checkbutton_toggled (GtkToggleButton *togglebutton, gpointer user_data); static void change_widget_color(GtkWidget *widget, int changed) { #if 1 gtk_widget_modify_text(widget, GTK_STATE_NORMAL, changed ? &red : &black); #endif } static void labels_refresh(void) { int i; int changed; uint32_t data, addr; gchar *str; // refresh Ax for(i = 0; i < 8; i++) { changed = ti68k_register_get_addr(i, &addr); str = g_strdup_printf("%08x", addr); gtk_entry_set_text(GTK_ENTRY(wregs.a[i]), str); change_widget_color(wregs.a[i], changed); g_free(str); } // refresh Dx for(i = 0; i < 8; i++) { changed = ti68k_register_get_data(i, &data); str = g_strdup_printf("%08x", data); gtk_entry_set_text(GTK_ENTRY(wregs.d[i]), str); change_widget_color(wregs.d[i], changed); g_free(str); } // refresh misc register changed = ti68k_register_get_pc(&data); str = g_strdup_printf("%06x", data); gtk_entry_set_text(GTK_ENTRY(wregs.pc), str); change_widget_color(wregs.pc, changed); g_free(str); changed = ti68k_register_get_usp(&data); str = g_strdup_printf("%06x", data); gtk_entry_set_text(GTK_ENTRY(wregs.usp), str); change_widget_color(wregs.usp, changed); g_free(str); changed = ti68k_register_get_ssp(&data); str = g_strdup_printf("%06x", data); gtk_entry_set_text(GTK_ENTRY(wregs.ssp), str); change_widget_color(wregs.ssp, changed); g_free(str); changed = ti68k_register_get_sr(&data); str = g_strdup_printf("%04x", data); gtk_entry_set_text(GTK_ENTRY(wregs.sr), str); change_widget_color(wregs.sr, changed); g_free(str); // refresh SR ti68k_register_get_sr(&data); gtk_spin_button_set_value(GTK_SPIN_BUTTON(wregs.i), (data >> 8) & 7); g_signal_handlers_block_by_func(GTK_OBJECT(wregs.t), on_dbgregs_checkbutton_toggled, NULL); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wregs.t), data & (1 << FLAG_T)); g_signal_handlers_unblock_by_func(GTK_OBJECT(wregs.t), on_dbgregs_checkbutton_toggled, NULL); g_signal_handlers_block_by_func(GTK_OBJECT(wregs.s), on_dbgregs_checkbutton_toggled, NULL); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wregs.s), data & (1 << FLAG_S)); g_signal_handlers_unblock_by_func(GTK_OBJECT(wregs.s), on_dbgregs_checkbutton_toggled, NULL); g_signal_handlers_block_by_func(GTK_OBJECT(wregs.x), on_dbgregs_checkbutton_toggled, NULL); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wregs.x), data & (1 << FLAG_X)); g_signal_handlers_unblock_by_func(GTK_OBJECT(wregs.x), on_dbgregs_checkbutton_toggled, NULL); g_signal_handlers_block_by_func(GTK_OBJECT(wregs.n), on_dbgregs_checkbutton_toggled, NULL); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wregs.n), data & (1 << FLAG_N)); g_signal_handlers_unblock_by_func(GTK_OBJECT(wregs.n), on_dbgregs_checkbutton_toggled, NULL); g_signal_handlers_block_by_func(GTK_OBJECT(wregs.z), on_dbgregs_checkbutton_toggled, NULL); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wregs.z), data & (1 << FLAG_Z)); g_signal_handlers_unblock_by_func(GTK_OBJECT(wregs.z), on_dbgregs_checkbutton_toggled, NULL); g_signal_handlers_block_by_func(GTK_OBJECT(wregs.v), on_dbgregs_checkbutton_toggled, NULL); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wregs.v), data & (1 << FLAG_V)); g_signal_handlers_unblock_by_func(GTK_OBJECT(wregs.v), on_dbgregs_checkbutton_toggled, NULL); g_signal_handlers_block_by_func(GTK_OBJECT(wregs.c), on_dbgregs_checkbutton_toggled, NULL); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wregs.c), data & (1 << FLAG_C)); g_signal_handlers_unblock_by_func(GTK_OBJECT(wregs.c), on_dbgregs_checkbutton_toggled, NULL); } /* Display registers window */ GtkWidget* dbgregs_create_window(void) { GladeXML *xml = NULL; GtkWidget *dbox; xml = glade_xml_new (tilp_paths_build_glade("dbg_regs-2.glade"), "dbgregs2_window", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgregs2_window"); if(options3.transient) gtk_window_set_transient_for(GTK_WINDOW(dbox), GTK_WINDOW(main_wnd)); wregs.d[0] = glade_xml_get_widget(xml, "entry10"); wregs.d[1] = glade_xml_get_widget(xml, "entry11"); wregs.d[2] = glade_xml_get_widget(xml, "entry12"); wregs.d[3] = glade_xml_get_widget(xml, "entry13"); wregs.d[4] = glade_xml_get_widget(xml, "entry14"); wregs.d[5] = glade_xml_get_widget(xml, "entry15"); wregs.d[6] = glade_xml_get_widget(xml, "entry16"); wregs.d[7] = glade_xml_get_widget(xml, "entry17"); wregs.a[0] = glade_xml_get_widget(xml, "entry20"); wregs.a[1] = glade_xml_get_widget(xml, "entry21"); wregs.a[2] = glade_xml_get_widget(xml, "entry22"); wregs.a[3] = glade_xml_get_widget(xml, "entry23"); wregs.a[4] = glade_xml_get_widget(xml, "entry24"); wregs.a[5] = glade_xml_get_widget(xml, "entry25"); wregs.a[6] = glade_xml_get_widget(xml, "entry26"); wregs.a[7] = glade_xml_get_widget(xml, "entry27"); wregs.usp = glade_xml_get_widget(xml, "entry31"); wregs.ssp = glade_xml_get_widget(xml, "entry32"); wregs.pc = glade_xml_get_widget(xml, "entry33"); wregs.sr = glade_xml_get_widget(xml, "entry34"); wregs.t = glade_xml_get_widget(xml, "checkbutton41"); wregs.s = glade_xml_get_widget(xml, "checkbutton42"); wregs.i = glade_xml_get_widget(xml, "spinbutton44"); wregs.x = glade_xml_get_widget(xml, "checkbutton51"); wregs.n = glade_xml_get_widget(xml, "checkbutton52"); wregs.z = glade_xml_get_widget(xml, "checkbutton53"); wregs.v = glade_xml_get_widget(xml, "checkbutton54"); wregs.c = glade_xml_get_widget(xml, "checkbutton55"); // Change for a fixed size font if(!options3.dbg_font_type && options3.dbg_font_name) { PangoContext *context; PangoFontDescription *desc; const gchar *family; int size; int i; context = gtk_widget_get_pango_context(wregs.pc); desc = pango_context_get_font_description(context); family = pango_font_description_get_family(desc); size = pango_font_description_get_size(desc); pango_font_description_set_family(desc, "Courier"); pango_font_description_set_size(desc, (int)(size*0.8)); gtk_widget_modify_font(wregs.pc, desc); gtk_widget_modify_font(wregs.sr, desc); gtk_widget_modify_font(wregs.usp, desc); gtk_widget_modify_font(wregs.ssp, desc); for(i = 0; i < 8; i++) { gtk_widget_modify_font(wregs.d[i], desc); gtk_widget_modify_font(wregs.a[i], desc); } } else { PangoFontDescription *desc; int i; desc = pango_font_description_from_string(options3.dbg_font_name); gtk_widget_modify_font(wregs.pc, desc); gtk_widget_modify_font(wregs.sr, desc); gtk_widget_modify_font(wregs.usp, desc); gtk_widget_modify_font(wregs.ssp, desc); for(i = 0; i < 8; i++) { gtk_widget_modify_font(wregs.d[i], desc); gtk_widget_modify_font(wregs.a[i], desc); } } // Allocate colors { gboolean success; gdk_color_parse("Black", &black); gdk_colormap_alloc_colors(gdk_colormap_get_system(), &black, 1, FALSE, FALSE, &success); gdk_color_parse("Red", &red); gdk_colormap_alloc_colors(gdk_colormap_get_system(), &red, 1, FALSE, FALSE, &success); } return dbox; } GtkWidget* dbgregs_display_window(void) { #ifdef WND_STATE if(!options3.regs.minimized) { gtk_window_resize(GTK_WINDOW(dbgw.regs), options3.regs.rect.w, options3.regs.rect.h); gtk_window_move(GTK_WINDOW(dbgw.regs), options3.regs.rect.x, options3.regs.rect.y); } else gtk_window_iconify(GTK_WINDOW(dbgw.regs)); #endif if(!GTK_WIDGET_VISIBLE(dbgw.regs) && !options3.regs.closed) gtk_widget_show(dbgw.regs); return dbgw.regs; } void dbgregs_refresh_window(void) { WND_TMR_START(); if(!options3.regs.closed) { labels_refresh(); } WND_TMR_STOP("Registers Refresh Time"); } GLADE_CB gboolean on_dbgregs_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { const gchar *label = gtk_label_get_text(GTK_LABEL(widget)); const gchar *text = gtk_entry_get_text(GTK_ENTRY(user_data)); uint32_t value; int n = label[1] - '0'; if(event->keyval != GDK_Return && event->keyval != GDK_KP_Enter) return FALSE; if(label[0] == 'A') { if(validate_value(text, 8)) { sscanf(text, "%x", &value); ti68k_register_set_addr(n, value); } if((n == 6) || (n == 7)) dbgstack_refresh_window(); } else if(label[0] == 'D') { if(validate_value(text, 8)) { sscanf(text, "%x", &value); ti68k_register_set_data(n, value); } } else if(!strcmp(label, "PC=")) { if(validate_value(text, 6)) { sscanf(text, "%x", &value); ti68k_register_set_pc(value); } } else if(!strcmp(label, "USP=")) { if(validate_value(text, 6)) { sscanf(text, "%x", &value); ti68k_register_set_usp(value); } } else if(!strcmp(label, "SSP=")) { if(validate_value(text, 6)) { sscanf(text, "%x", &value); ti68k_register_set_ssp(value); } } else if(!strcmp(label, "SR=")) { if(validate_value(text, 4)) { sscanf(text, "%x", &value); ti68k_register_set_sr(value); dbgregs_refresh_window(); dbgstack_refresh_window(); } } labels_refresh(); return TRUE; } GLADE_CB void on_dbgregs_checkbutton_toggled (GtkToggleButton *togglebutton, gpointer user_data) { const gchar *label; gboolean state; uint32_t data; gchar *str; label = gtk_button_get_label(GTK_BUTTON(togglebutton)); state = gtk_toggle_button_get_active(togglebutton); ti68k_register_get_sr(&data); switch(label[0]) { case 'T': data &= ~(1 << FLAG_T); data |= (state << FLAG_T); break; case 'S': data &= ~(1 << FLAG_S); data |= (state << FLAG_S); break; case 'X': data &= ~(1 << FLAG_X); data |= (state << FLAG_X); break; case 'N': data &= ~(1 << FLAG_N); data |= (state << FLAG_N); break; case 'Z': data &= ~(1 << FLAG_Z); data |= (state << FLAG_Z); break; case 'V': data &= ~(1 << FLAG_V); data |= (state << FLAG_V); break; case 'C': data &= ~(1 << FLAG_C); data |= (state << FLAG_C); break; default: return; } ti68k_register_set_sr(data); str = g_strdup_printf("%04x", data); gtk_entry_set_text(GTK_ENTRY(wregs.sr), str); g_free(str); // update usp <=> ssp dbgregs_refresh_window(); dbgstack_refresh_window(); } GLADE_CB void on_dbgregs_spinbutton_changed (GtkEditable *editable, gpointer user_data) { int i; uint32_t data; gchar *str; i = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(editable)); ti68k_register_get_sr(&data); data &= ~0x700; data |= (i << 8); ti68k_register_set_sr(data); str = g_strdup_printf("%04x", data); gtk_entry_set_text(GTK_ENTRY(wregs.sr), str); g_free(str); } static GtkWidget* display_dbgregs_popup_menu(void); static uint32_t value = 0; GLADE_CB gboolean on_dbgregs_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { if (event->type == GDK_2BUTTON_PRESS) { // select all text gtk_editable_select_region(GTK_EDITABLE(user_data), 0, -1); return TRUE; } else if (event->button == 3) { GdkEventButton *bevent; GtkWidget *menu; const gchar *label = gtk_label_get_text(GTK_LABEL(widget)); const gchar *text; int n = label[1] - '0'; if(label[0] == 'A') text = gtk_entry_get_text(GTK_ENTRY(wregs.a[n])); else if(label[0] == 'D') text = gtk_entry_get_text(GTK_ENTRY(wregs.d[n])); else if(!strcmp(label, "PC=")) text = gtk_entry_get_text(GTK_ENTRY(wregs.pc)); else if(!strcmp(label, "USP=")) text = gtk_entry_get_text(GTK_ENTRY(wregs.usp)); else if(!strcmp(label, "SSP=")) text = gtk_entry_get_text(GTK_ENTRY(wregs.ssp)); sscanf(text, "%x", &value); // popup menu bevent = (GdkEventButton *) (event); menu = display_dbgregs_popup_menu(); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time); gtk_widget_show(menu); return TRUE; } return FALSE; } /***** Popup menu *****/ /* Display popup menu (right click) */ static GtkWidget* display_dbgregs_popup_menu(void) { GladeXML *xml; GtkWidget *menu; xml = glade_xml_new (tilp_paths_build_glade("dbg_regs-2.glade"), "dbgregs_popup", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); menu = glade_xml_get_widget(xml, "dbgregs_popup"); return menu; } GLADE_CB void on_go_to_address4_activate (GtkMenuItem *menuitem, gpointer user_data) { if(value == -1) return; dbgmem_add_tab(value); value = -1; } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_regs.h000066400000000000000000000023421220314353500216530ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_regs.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include GtkWidget* dbgregs_create_window(void); GtkWidget* dbgregs_display_window(void); void dbgregs_refresh_window(void); gint dbgsr_display_dbox(void); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_romcall.c000066400000000000000000000154201220314353500223400ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_romcall.c 2591 2007-07-05 11:36:10Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "intl.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "romcalls.h" #include "dbg_code.h" #include "dbg_mem.h" enum { COL_ID, COL_NAME, COL_ADDR, COL_FULL }; #define CLIST_NVCOLS (4) // 3 visible columns #define CLIST_NCOLS (4) // 3 real columns #define FONT_NAME "courier" enum { SORT_BY_NAME, SORT_BY_ADDR, SORT_BY_ID, }; static gint order = SORT_BY_NAME; GLADE_CB gboolean on_combo_entry1_match_selected (GtkEntryCompletion *widget, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data); static GtkProgressBar *pbar = NULL; static void clist_populate(GtkListStore *store) { GList *lst, *ptr; gchar *path; gint result; gint i, n; static int old_order = SORT_BY_NAME; // (re)load symbols path = g_strconcat(inst_paths.misc_dir, "romcalls.txt", NULL); result = ti68k_debug_load_symbols(path); g_free(path); if((result == -4) && (order == old_order)) return; // already loaded else if(result == -3) // no rom calls gtk_list_store_clear(store); // sort rom calls switch(order) { case SORT_BY_NAME: lst = romcalls_sort_by_iname(); break; case SORT_BY_ADDR: lst = romcalls_sort_by_addr(); break; case SORT_BY_ID: lst = romcalls_sort_by_id(); break; default:lst = romcalls_sort_by_iname(); break; } if(lst == NULL) return; // show progress bar n = g_list_length(lst); if(pbar != NULL) gtk_widget_show(GTK_WIDGET(pbar)); // fill storage gtk_list_store_clear(store); for(ptr = lst, i=0; ptr != NULL; ptr = g_list_next(ptr), i++) { uint32_t addr = ROMCALL_ADDR(ptr); const gchar *name = ROMCALL_NAME(ptr); int id = ROMCALL_ID(ptr); gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); GtkTreeIter iter; if(!strcmp(name, "unknown") || (name == NULL)) continue; row_text[0] = g_strdup_printf("#%03x", id); row_text[1] = g_strdup(name); row_text[2] = g_strdup_printf("[$%x]", addr); row_text[3] = g_strdup_printf("%s [$%x] - #%03x", name, addr, id); //printf("<%s>\n", row_text[3]); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_ID, row_text[0], COL_NAME, row_text[1], COL_ADDR, row_text[2], COL_FULL, row_text[3], -1); if(!(i % 50)) { if(pbar != NULL) { gtk_progress_bar_set_fraction(pbar, (gdouble)i / n); while(gtk_events_pending()) gtk_main_iteration(); } } g_strfreev(row_text); } if(pbar != NULL) gtk_widget_hide(GTK_WIDGET(pbar)); old_order = order; } static GtkListStore *store = NULL; void dbgromcall_create_window(GladeXML *xml) { GtkTreeModel *model; GtkComboBox *combo; GtkEntry *entry; GtkEntryCompletion* completion; gpointer data; pbar = data = glade_xml_get_widget(xml, "progressbar1"); combo = data = glade_xml_get_widget(xml, "comboboxentry1"); entry = GTK_ENTRY(GTK_BIN(combo)->child); // create storage store = gtk_list_store_new(CLIST_NCOLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, -1 ); model = GTK_TREE_MODEL(store); // and set storage gtk_combo_box_set_model(combo, model); gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(combo), COL_FULL); /* --- */ // set auto-completion completion = gtk_entry_completion_new(); gtk_entry_set_completion(entry, completion); gtk_entry_completion_set_model(completion, model); gtk_entry_completion_set_text_column (completion, COL_FULL); g_signal_connect(G_OBJECT(completion), "match-selected", G_CALLBACK(on_combo_entry1_match_selected), NULL); //gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); } void dbgromcall_refresh_window(void) { clist_populate(store); } void dbgromcall_erase_window(GtkWidget *widget) { GtkTreeModel *model = gtk_combo_box_get_model(GTK_COMBO_BOX(widget)); GtkListStore *store = GTK_LIST_STORE(model); gtk_list_store_clear(store); } static void goto_romcall(const char *str) { gchar *ptr; uint32_t addr; int id; ptr = strchr(str, '['); if(ptr != NULL) { int ret = sscanf(ptr, "[$%x] - #%03x ", &addr, &id); if(ret == 2) { if(addr < 0x200000) dbgmem_add_tab(addr & 0xffffff); else dbgcode_disasm_at(addr & 0xffffff); } } } GLADE_CB void on_combo_entry1_changed (GtkComboBox *combobox, gpointer user_data) { GtkEntry *entry = GTK_ENTRY(GTK_BIN(combobox)->child); gchar *str = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); goto_romcall(str); g_free(str); } GLADE_CB gboolean on_combo_entry1_match_selected (GtkEntryCompletion *completion, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { gchar *str; gtk_tree_model_get(model, iter, COL_FULL, &str, -1); goto_romcall(str); g_free(str); return FALSE; } GLADE_CB void on_dbgcode_radiobutton1_toggled (GtkToggleButton *togglebutton, gpointer user_data) { // by name order = SORT_BY_NAME; dbgromcall_refresh_window(); } GLADE_CB void on_dbgcode_radiobutton2_toggled (GtkToggleButton *togglebutton, gpointer user_data) { // by addr order = SORT_BY_ADDR; dbgromcall_refresh_window(); } GLADE_CB void on_dbgcode_radiobutton3_toggled (GtkToggleButton *togglebutton, gpointer user_data) { // by id order = SORT_BY_ID; dbgromcall_refresh_window(); } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_romcall.h000066400000000000000000000021661220314353500223500ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include void dbgromcall_create_window(GladeXML *xml); void dbgromcall_refresh_window(void); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_stack.c000066400000000000000000000250001220314353500220070ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_stack.c 2825 2009-05-06 19:48:47Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" enum { COL_ADDR, COL_DATA, COL_FONT }; #define CLIST_NVCOLS (2) // 1 visible columns #define CLIST_NCOLS (3) // 1 real columns #define DUMP_SIZE 10 static GtkListStore* clist_create(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkListStore *store; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; const gchar *text[CLIST_NVCOLS] = { _("Address"), _("Value") }; gint i; store = gtk_list_store_new(CLIST_NCOLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, -1 ); model = GTK_TREE_MODEL(store); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, FALSE); gtk_tree_view_set_rules_hint(view, FALSE); for(i = COL_ADDR; i <= COL_DATA; i++) { renderer = gtk_cell_renderer_text_new(); set_renderer_pad(renderer); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "text", i, "font", COL_FONT, NULL); } for (i = 0; i < CLIST_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); return store; } #define TARGET_SP 1 #define TARGET_FP 2 static void clist_populate(GtkListStore *store, gint target, gint offset) { int i; GtkTreeIter iter; gchar *str; uint32_t sp; uint16_t data; if(target == TARGET_SP) ti68k_register_get_sp(&sp); else if(target == TARGET_FP) ti68k_register_get_addr(6, &sp); for(i = 0+(offset>>1); i < DUMP_SIZE+(offset>>1); i++) { gtk_list_store_append(store, &iter); str = g_strdup_printf(/*"0x%06x "*/"(%c%i):", /*sp + 2*i, */i > 0 ? '+' : i < 0 ? '-' : ' ', abs(2*i)); gtk_list_store_set(store, &iter, COL_ADDR, str, -1); g_free(str); data = mem_rd_word(sp+2*i); str = g_strdup_printf("%04x", data); gtk_list_store_set(store, &iter, COL_DATA, str, -1); g_free(str); if(options3.dbg_font_type) gtk_list_store_set(store, &iter, COL_FONT, options3.dbg_font_name, -1); } } static GtkWidget *label; static GtkWidget *notebook; static void clist_refresh(GtkListStore *store, gint target) { gtk_list_store_clear(store); clist_populate(store, target, -4); if(ti68k_debug_is_supervisor()) gtk_label_set_text(GTK_LABEL(label), "SSP"); else gtk_label_set_text(GTK_LABEL(label), "USP"); } static GtkListStore *store1 = NULL; static GtkListStore *store2 = NULL; /* Display registers window */ GtkWidget* dbgstack_create_window(void) { GladeXML *xml = NULL; GtkWidget *dbox; GtkWidget *data; xml = glade_xml_new (tilp_paths_build_glade("dbg_stack-2.glade"), "dbgstack_window", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgstack_window"); if(options3.transient) gtk_window_set_transient_for(GTK_WINDOW(dbox), GTK_WINDOW(main_wnd)); notebook = glade_xml_get_widget(xml, "notebook1"); gtk_notebook_popup_enable(GTK_NOTEBOOK(notebook)); data = glade_xml_get_widget(xml, "treeview1"); store1 = clist_create(data); clist_populate(store1, TARGET_SP, 0); data = glade_xml_get_widget(xml, "treeview2"); store2 = clist_create(data); clist_populate(store2, TARGET_FP, 0); label = glade_xml_get_widget(xml, "label2"); gtk_tree_view_expand_all(GTK_TREE_VIEW(data)); return dbox; } GtkWidget* dbgstack_display_window(void) { #ifdef WND_STATE if(!options3.stack.minimized) { gtk_window_resize(GTK_WINDOW(dbgw.stack), options3.stack.rect.w, options3.stack.rect.h); gtk_window_move(GTK_WINDOW(dbgw.stack), options3.stack.rect.x, options3.stack.rect.y); } else gtk_window_iconify(GTK_WINDOW(dbgw.stack)); #endif if(!GTK_WIDGET_VISIBLE(dbgw.stack) && !options3.stack.closed) gtk_widget_show(dbgw.stack); return dbgw.stack; } void dbgstack_refresh_window(void) { WND_TMR_START(); if(!options3.stack.closed) { clist_refresh(store1, TARGET_SP); clist_refresh(store2, TARGET_FP); } WND_TMR_STOP("Heap Refresh Time"); } GLADE_CB gboolean on_dbgstack_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); GtkTreeIter iter; GtkTreePath *path; gchar *str; gchar *row; gint row_idx, row_max; uint32_t min, max; gint n; // get min address gtk_tree_model_get_iter_first(model, &iter); gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "(%i)", &min); // get max address n = gtk_tree_model_iter_n_children(model, NULL); gtk_tree_model_iter_nth_child(model, &iter, NULL, n-1); gtk_tree_model_get(model, &iter, COL_ADDR, &str, -1); sscanf(str, "(%i)", &max); // retrieve cursor gtk_tree_view_get_cursor(view, &path, NULL); if(path == NULL) return FALSE; // get row row_idx = row_max = -1; row = gtk_tree_path_to_string(path); sscanf(row, "%i", &row_idx); g_free(row); row_max = gtk_tree_model_iter_n_children(model, NULL) - 1; //printf("row_idx = %i, row_max = %i\n", row_idx, row_max); // bind our key switch(event->keyval) { case GDK_Up: if(row_max == -1) break; if(row_idx > 0) break; gtk_list_store_clear(store); clist_populate(store, TARGET_SP, min-2); path = gtk_tree_path_new_from_string("0"); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return TRUE; case GDK_Down: if(row_max == -1) break; if(row_idx < row_max) break; gtk_list_store_clear(store); clist_populate(store, TARGET_SP, min+2); str = g_strdup_printf("%i", row_max); path = gtk_tree_path_new_from_string(str); g_free(str); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return TRUE; case GDK_Page_Up: if(row_max == -1) break; if(row_idx > 0) break; gtk_list_store_clear(store); clist_populate(store, TARGET_SP, min-10); path = gtk_tree_path_new_from_string("0"); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return TRUE; case GDK_Page_Down: if(row_max == -1) break; if(row_idx < row_max) break; gtk_list_store_clear(store); clist_populate(store, TARGET_SP, min+10); str = g_strdup_printf("%i", row_max); path = gtk_tree_path_new_from_string(str); g_free(str); gtk_tree_view_set_cursor(view, path, NULL, FALSE); return TRUE; default: return FALSE; } return FALSE; } static GtkWidget* display_dbgstack_popup_menu(void); static uint32_t value = 0; GLADE_CB gboolean on_dbgstack_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GtkWidget *list = GTK_WIDGET(widget); GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeSelection *selection; GtkTreeModel *model; GList *l; // get selection selection = gtk_tree_view_get_selection(view); l = gtk_tree_selection_get_selected_rows(selection, &model); if(l != NULL) { GtkTreeIter iter; GtkTreePath *path = l->data; gchar** row_text = g_malloc0((CLIST_NVCOLS + 1) * sizeof(gchar *)); uint16_t hi, lo; // get address gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, COL_DATA, &row_text[COL_DATA], -1); sscanf(row_text[COL_DATA], "%x", &hi); if(gtk_tree_model_iter_next(model, &iter) == FALSE) return FALSE; gtk_tree_model_get(model, &iter, COL_DATA, &row_text[COL_DATA], -1); sscanf(row_text[COL_DATA], "%x", &lo); value = (hi << 16) | lo; g_strfreev(row_text); } if (l && event->type == GDK_2BUTTON_PRESS) { dbgmem_add_tab(value); g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); return TRUE; } else if(l && event->button == 3) { GdkEventButton *bevent; GtkWidget *menu; // popup menu bevent = (GdkEventButton *) (event); menu = display_dbgstack_popup_menu(); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time); gtk_widget_show(menu); g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); return TRUE; } return FALSE; } /***** Popup menu *****/ /* Display popup menu (right click) */ static GtkWidget* display_dbgstack_popup_menu(void) { GladeXML *xml; GtkWidget *menu; xml = glade_xml_new (tilp_paths_build_glade("dbg_stack-2.glade"), "dbgstack_popup", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); menu = glade_xml_get_widget(xml, "dbgstack_popup"); return menu; } GLADE_CB void on_dbgstack_view_memory1_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgmem_add_tab(value); } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_stack.h000066400000000000000000000022311220314353500220150ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include GtkWidget* dbgstack_create_window(void); GtkWidget* dbgstack_display_window(void); void dbgstack_refresh_window(void); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_vectors.c000066400000000000000000000105161220314353500223750ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_vectors.c 2753 2007-12-30 23:14:15Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include "intl.h" #include "paths.h" #include "ti68k_int.h" #include "dbg_bkpts.h" enum { COL_NUMBER, COL_NAME, }; #define CLIST_NVCOLS (2) // 2 visible columns #define CLIST_NCOLS (2) // 2 real columns static GtkListStore* clist_create(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkListStore *store; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; const gchar *text[CLIST_NVCOLS] = { _("Number"), _("Name") }; gint i; store = gtk_list_store_new(CLIST_NCOLS, G_TYPE_INT, G_TYPE_STRING, -1 ); model = GTK_TREE_MODEL(store); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, TRUE); gtk_tree_view_set_rules_hint(view, FALSE); for(i = COL_NUMBER; i <= COL_NAME; i++) { renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "text", i, NULL); } for (i = 0; i < CLIST_NVCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); return store; } static void clist_populate(GtkWidget *widget) { GtkTreeView *view = GTK_TREE_VIEW(widget); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); GtkTreeIter iter; gint i; for(i = 0; i < 128; i++) { gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, COL_NUMBER, i, COL_NAME, ti68k_exception_to_string(i), -1); } } static void clist_get_selection(GtkWidget *list) { GtkTreeView *view = GTK_TREE_VIEW(list); GtkTreeSelection *selection; GtkTreeModel *model; GList *l; // get selection selection = gtk_tree_view_get_selection(view); for (l = gtk_tree_selection_get_selected_rows(selection, &model); l != NULL; l = l->next) { GtkTreeIter iter; GtkTreePath *path = l->data; gint n; gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, COL_NUMBER, &n, -1); ti68k_bkpt_add_exception(n); } // free selection g_list_foreach (l, (GFunc)gtk_tree_path_free, NULL); g_list_free (l); } gint dbgvectors_display_dbox(void) { GladeXML *xml; GtkWidget *dbox; GtkWidget *data; gint result; xml = glade_xml_new (tilp_paths_build_glade("dbg_vectors-2.glade"), "dbgvectors_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "dbgvectors_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); gtk_window_resize(GTK_WINDOW(dbox), 320, 240); data = glade_xml_get_widget(xml, "treeview1"); clist_create(data); clist_populate(data); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: clist_get_selection(data); dbgbkpts_refresh_window(); break; default: break; } gtk_widget_destroy(dbox); return 0; } tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_vectors.h000066400000000000000000000022301220314353500223740ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_vectors.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint dbgvectors_display_dbox(); void dbgvectors_refresh_window(void); tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_wnds.c000066400000000000000000000545261220314353500216740ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_all.c 2707 2007-12-13 13:18:45Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2008, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #ifdef __WIN32__ #include #include #endif #ifdef __MINGW32__ #include #endif #include "intl.h" #include "ti68k_int.h" #include "struct.h" #include "dbg_wnds.h" #include "dbg_all.h" #include "dbg_wnds.h" #include "support.h" #include "paths.h" #include "engine.h" #include "dboxes.h" #include "rcfile.h" DbgOptions options3; DbgWidgets dbgw = { 0 }; // make windows (un-)modifiable void dbgwnds_set_sensitivity(int state) { if(options3.dbg_dock) return; gtk_widget_set_sensitive(dbgw.regs, state); gtk_widget_set_sensitive(dbgw.bkpts, state); gtk_widget_set_sensitive(dbgw.mem, state); gtk_widget_set_sensitive(dbgw.pclog, state); gtk_widget_set_sensitive(dbgw.stack, state); gtk_widget_set_sensitive(dbgw.heap, state); gtk_widget_set_sensitive(dbgw.iop, state); } // minimize all windows void dbgwnds_minimize_all(int all) { if(options3.dbg_dock) return; if(GTK_WIDGET_VISIBLE(dbgw.regs)) gtk_window_iconify(GTK_WINDOW(dbgw.regs)); if(GTK_WIDGET_VISIBLE(dbgw.bkpts)) gtk_window_iconify(GTK_WINDOW(dbgw.bkpts)); if(GTK_WIDGET_VISIBLE(dbgw.mem)) gtk_window_iconify(GTK_WINDOW(dbgw.mem)); if(GTK_WIDGET_VISIBLE(dbgw.pclog)) gtk_window_iconify(GTK_WINDOW(dbgw.pclog)); if(GTK_WIDGET_VISIBLE(dbgw.code) & all) gtk_window_iconify(GTK_WINDOW(dbgw.code)); if(GTK_WIDGET_VISIBLE(dbgw.stack)) gtk_window_iconify(GTK_WINDOW(dbgw.stack)); if(GTK_WIDGET_VISIBLE(dbgw.heap)) gtk_window_iconify(GTK_WINDOW(dbgw.heap)); if(GTK_WIDGET_VISIBLE(dbgw.iop)) gtk_window_iconify(GTK_WINDOW(dbgw.iop)); } // unminimize all windows void dbgwnds_unminimize_all(int all) { if(options3.dbg_dock) return; if(GTK_WIDGET_VISIBLE(dbgw.regs)) gtk_window_deiconify(GTK_WINDOW(dbgw.regs)); if(GTK_WIDGET_VISIBLE(dbgw.bkpts)) gtk_window_deiconify(GTK_WINDOW(dbgw.bkpts)); if(GTK_WIDGET_VISIBLE(dbgw.mem)) gtk_window_deiconify(GTK_WINDOW(dbgw.mem)); if(GTK_WIDGET_VISIBLE(dbgw.pclog)) gtk_window_deiconify(GTK_WINDOW(dbgw.pclog)); if(GTK_WIDGET_VISIBLE(dbgw.code) & all) gtk_window_deiconify(GTK_WINDOW(dbgw.code)); if(GTK_WIDGET_VISIBLE(dbgw.stack)) gtk_window_deiconify(GTK_WINDOW(dbgw.stack)); if(GTK_WIDGET_VISIBLE(dbgw.heap)) gtk_window_deiconify(GTK_WINDOW(dbgw.heap)); if(GTK_WIDGET_VISIBLE(dbgw.iop)) gtk_window_deiconify(GTK_WINDOW(dbgw.iop)); } // show all windows void dbgwnds_show_all(int all) { if(options3.dbg_dock) return; if(!GTK_WIDGET_VISIBLE(dbgw.regs)) gtk_widget_show(dbgw.regs); if(!GTK_WIDGET_VISIBLE(dbgw.bkpts)) gtk_widget_show(dbgw.bkpts); if(!GTK_WIDGET_VISIBLE(dbgw.mem)) gtk_widget_show(dbgw.mem); if(!GTK_WIDGET_VISIBLE(dbgw.pclog)) gtk_widget_show(dbgw.pclog); if(!GTK_WIDGET_VISIBLE(dbgw.code) && all) gtk_widget_show(dbgw.code); if(!GTK_WIDGET_VISIBLE(dbgw.stack)) gtk_widget_show(dbgw.stack); if(!GTK_WIDGET_VISIBLE(dbgw.heap)) gtk_widget_show(dbgw.heap); if(!GTK_WIDGET_VISIBLE(dbgw.iop)) gtk_widget_show(dbgw.iop); } // or hide them void dbgwnds_hide_all(int all) { if(options3.dbg_dock) return; if(GTK_WIDGET_VISIBLE(dbgw.regs)) gtk_widget_hide(dbgw.regs); if(GTK_WIDGET_VISIBLE(dbgw.bkpts)) gtk_widget_hide(dbgw.bkpts); if(GTK_WIDGET_VISIBLE(dbgw.mem)) gtk_widget_hide(dbgw.mem); if(GTK_WIDGET_VISIBLE(dbgw.pclog)) gtk_widget_hide(dbgw.pclog); if(GTK_WIDGET_VISIBLE(dbgw.code) && all) gtk_widget_hide(dbgw.code); if(GTK_WIDGET_VISIBLE(dbgw.stack)) gtk_widget_hide(dbgw.stack); if(GTK_WIDGET_VISIBLE(dbgw.heap)) gtk_widget_hide(dbgw.heap); if(GTK_WIDGET_VISIBLE(dbgw.iop)) gtk_widget_hide(dbgw.iop); } /* Callbacks */ // callbacks from dbg_code.c (window menu) // used to show/hide or minimize/un-minimize windows GLADE_CB void on_registers1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active != TRUE) gtk_widget_hide(dbgw.regs); else gtk_widget_show(dbgw.regs); } GLADE_CB void on_breakpoints1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active != TRUE) gtk_widget_hide(dbgw.bkpts); else gtk_widget_show(dbgw.bkpts); } GLADE_CB void on_memory1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active != TRUE) gtk_widget_hide(dbgw.mem); else gtk_widget_show(dbgw.mem); } GLADE_CB void on_pc_log1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active != TRUE) gtk_widget_hide(dbgw.pclog); else gtk_widget_show(dbgw.pclog); } GLADE_CB void on_stack_frame1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active != TRUE) gtk_widget_hide(dbgw.stack); else gtk_widget_show(dbgw.stack); } GLADE_CB void on_heap_frame1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active != TRUE) gtk_widget_hide(dbgw.heap); else gtk_widget_show(dbgw.heap); } GLADE_CB void on_ioports_frame1_activate (GtkMenuItem *menuitem, gpointer user_data) { if(GTK_CHECK_MENU_ITEM(menuitem)->active != TRUE) gtk_widget_hide(dbgw.iop); else gtk_widget_show(dbgw.iop); } GLADE_CB void on_transient1_activate (GtkMenuItem *menu_item, gpointer user_data) { // This make dbg wnd's as children of the main window. // Thus, the taskbar is not filled-up with a lot of windows. options3.transient = GTK_CHECK_MENU_ITEM(menu_item)->active; msg_box1(_("Warning"), _("You will have to save configuration and restart TiEmu for changes to take effect!")); } GLADE_CB void on_dockmode1_activate (GtkMenuItem *menu_item, gpointer user_data) { msg_box1(_("Warning"), _("TiEmu is about to restart...")); #ifndef NO_GDB // In GDB mode, we have to restart the engine here, otherwise // gtk_debugger_close will call gdbcall_continue to do so and never // return. engine_start(); #endif gtk_debugger_close(); // Stop the engine before calling gtk_main_quit. // Otherwise, it will keep running even when it is supposed to have // been stopped by the debugger. engine_stop(); if(options3.dbg_dock) gtk_widget_destroy(dbgw.dock); options3.dbg_dock = GTK_CHECK_MENU_ITEM(menu_item)->active; gtk_main_quit(); } GLADE_CB void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data) { gtk_debugger_close(); } GLADE_CB void on_show_all1_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgwnds_show_all(0); } GLADE_CB void on_hide_all1_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgwnds_hide_all(0); } GLADE_CB void on_minimize_all1_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgwnds_minimize_all(0); } GLADE_CB void on_maximize_all1_activate (GtkMenuItem *menuitem, gpointer user_data) { dbgwnds_unminimize_all(0); } extern void options3_set_default(void); GLADE_CB void on_restore_all1_activate (GtkMenuItem *menuitem, gpointer user_data) { // restore windows with default settings options3_set_default(); } // reflects window state in menu void update_submenu(GtkWidget *widget, gpointer user_data) { GtkMenuShell *shell = GTK_MENU_SHELL(widget); GList *list = shell->children; GList *elt; GtkCheckMenuItem *item; // regs elt = g_list_nth(list, 0); item = GTK_CHECK_MENU_ITEM(elt->data); if(!options3.dbg_dock) { g_signal_handlers_block_by_func(GTK_OBJECT(item), on_registers1_activate, NULL); gtk_check_menu_item_set_active(item, GTK_WIDGET_VISIBLE(dbgw.regs)); g_signal_handlers_unblock_by_func(GTK_OBJECT(item), on_registers1_activate, NULL); } else gtk_widget_set_sensitive(GTK_WIDGET(item), FALSE); // bkpts elt = g_list_nth(list, 1); item = GTK_CHECK_MENU_ITEM(elt->data); if(!options3.dbg_dock) { g_signal_handlers_block_by_func(GTK_OBJECT(item), on_breakpoints1_activate, NULL); gtk_check_menu_item_set_active(item, GTK_WIDGET_VISIBLE(dbgw.bkpts)); g_signal_handlers_unblock_by_func(GTK_OBJECT(item), on_breakpoints1_activate, NULL); } else gtk_widget_set_sensitive(GTK_WIDGET(item), FALSE); // mem elt = g_list_nth(list, 2); item = GTK_CHECK_MENU_ITEM(elt->data); if(!options3.dbg_dock) { g_signal_handlers_block_by_func(GTK_OBJECT(item), on_memory1_activate, NULL); gtk_check_menu_item_set_active(item, GTK_WIDGET_VISIBLE(dbgw.mem)); g_signal_handlers_unblock_by_func(GTK_OBJECT(item), on_memory1_activate, NULL); } else gtk_widget_set_sensitive(GTK_WIDGET(item), FALSE); // pclog elt = g_list_nth(list, 3); item = GTK_CHECK_MENU_ITEM(elt->data); g_signal_handlers_block_by_func(GTK_OBJECT(item), on_pc_log1_activate, NULL); gtk_check_menu_item_set_active(item, GTK_WIDGET_VISIBLE(dbgw.pclog)); g_signal_handlers_unblock_by_func(GTK_OBJECT(item), on_pc_log1_activate, NULL); // stack elt = g_list_nth(list, 4); item = GTK_CHECK_MENU_ITEM(elt->data); if(!options3.dbg_dock) { g_signal_handlers_block_by_func(GTK_OBJECT(item), on_stack_frame1_activate, NULL); gtk_check_menu_item_set_active(item, GTK_WIDGET_VISIBLE(dbgw.stack)); g_signal_handlers_unblock_by_func(GTK_OBJECT(item), on_stack_frame1_activate, NULL); } else gtk_widget_set_sensitive(GTK_WIDGET(item), FALSE); // heap elt = g_list_nth(list, 5); item = GTK_CHECK_MENU_ITEM(elt->data); if(!options3.dbg_dock) { g_signal_handlers_block_by_func(GTK_OBJECT(item), on_heap_frame1_activate, NULL); gtk_check_menu_item_set_active(item, GTK_WIDGET_VISIBLE(dbgw.heap)); g_signal_handlers_unblock_by_func(GTK_OBJECT(item), on_heap_frame1_activate, NULL); } else gtk_widget_set_sensitive(GTK_WIDGET(item), FALSE); // ioports elt = g_list_nth(list, 6); item = GTK_CHECK_MENU_ITEM(elt->data); g_signal_handlers_block_by_func(GTK_OBJECT(item), on_ioports_frame1_activate, NULL); gtk_check_menu_item_set_active(item, GTK_WIDGET_VISIBLE(dbgw.iop)); g_signal_handlers_unblock_by_func(GTK_OBJECT(item), on_ioports_frame1_activate, NULL); // dock/multi mode elt = g_list_nth(list, 8); item = GTK_CHECK_MENU_ITEM(elt->data); g_signal_handlers_block_by_func(GTK_OBJECT(item), on_dockmode1_activate, NULL); gtk_check_menu_item_set_active(item, options3.dbg_dock); g_signal_handlers_unblock_by_func(GTK_OBJECT(item), on_dockmode1_activate, NULL); // transient mode elt = g_list_nth(list, 9); item = GTK_CHECK_MENU_ITEM(elt->data); g_signal_handlers_block_by_func(GTK_OBJECT(item), on_transient1_activate, NULL); gtk_check_menu_item_set_active(item, options3.transient); g_signal_handlers_unblock_by_func(GTK_OBJECT(item), on_transient1_activate, NULL); if(options3.dbg_dock) { int i; for(i = 11; i <= 15; i++) { elt = g_list_nth(list, i); gtk_widget_set_sensitive(GTK_WIDGET(elt->data), FALSE); } } } // callbacks from dbg_regs.c /* This function exists because GDK retrieves client coordinates, not window ones. (Kevin: GDK uses GetClientRect and ClientToScreen). We need that to save and restore windows position. */ void window_get_rect(GtkWidget *widget, GdkRect *rect) { gtk_window_get_size(GTK_WINDOW(widget), &rect->w, &rect->h); #ifdef __WIN32__ { BOOL bResult; HWND hWnd = GDK_WINDOW_HWND(widget->window); RECT lpRect; GdkRectangle gdkRect; bResult = GetWindowRect(hWnd, &lpRect); rect->x = lpRect.left; rect->y = lpRect.top; // Now obtain and add the offset between GDK and Win32 coordinates // (in the multi-screen case). gdk_screen_get_monitor_geometry(gdk_screen_get_default(), 0, &gdkRect); rect->x += gdkRect.x; rect->y += gdkRect.y; } #else gdk_window_get_position(widget->window, &rect->x, &rect->y); #endif } GLADE_CB gboolean on_dbgregs_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_widget_hide(widget); return TRUE; } GLADE_CB void on_dbgregs_window_state_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GdkEventWindowState *wstate = (GdkEventWindowState *)event; GdkWindowState state = wstate->new_window_state; GdkWindowState mask = wstate->changed_mask; if(mask & GDK_WINDOW_STATE_WITHDRAWN && dbg_on) options3.regs.closed = (state & GDK_WINDOW_STATE_WITHDRAWN); window_get_rect(widget, &options3.regs.rect); if(mask & GDK_WINDOW_STATE_ICONIFIED) options3.regs.minimized = state & GDK_WINDOW_STATE_ICONIFIED; } // callbacks from dbg_pclog.c GLADE_CB gboolean on_dbgpclog_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_widget_hide(widget); return TRUE; } GLADE_CB void on_dbgpclog_window_state_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GdkEventWindowState *wstate = (GdkEventWindowState *)event; GdkWindowState state = wstate->new_window_state; GdkWindowState mask = wstate->changed_mask; if(mask & GDK_WINDOW_STATE_WITHDRAWN && dbg_on) options3.pclog.closed = (state & GDK_WINDOW_STATE_WITHDRAWN); window_get_rect(widget, &options3.pclog.rect); if(mask & GDK_WINDOW_STATE_ICONIFIED) options3.pclog.minimized = state & GDK_WINDOW_STATE_ICONIFIED; } // callbacks from dbg_mem.c GLADE_CB gboolean on_dbgmem_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_widget_hide(widget); return TRUE; } GLADE_CB void on_dbgmem_window_state_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GdkEventWindowState *wstate = (GdkEventWindowState *)event; GdkWindowState state = wstate->new_window_state; GdkWindowState mask = wstate->changed_mask; if(mask & GDK_WINDOW_STATE_WITHDRAWN && dbg_on) options3.mem.closed = (state & GDK_WINDOW_STATE_WITHDRAWN); window_get_rect(widget, &options3.mem.rect); if(mask & GDK_WINDOW_STATE_ICONIFIED) options3.mem.minimized = state & GDK_WINDOW_STATE_ICONIFIED; } // callbacks from dbg_code.c GLADE_CB gboolean on_dbgcode_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { if (dbgcode_quit_enabled()) { gtk_widget_hide(widget); on_quit1_activate(NULL, NULL); } return TRUE; } GLADE_CB void on_dbgcode_window_state_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GdkEventWindowState *wstate = (GdkEventWindowState *)event; GdkWindowState state = wstate->new_window_state; GdkWindowState mask = wstate->changed_mask; if(mask & GDK_WINDOW_STATE_WITHDRAWN && dbg_on) options3.code.closed = (state & GDK_WINDOW_STATE_WITHDRAWN); window_get_rect(widget, &options3.code.rect); if(mask & GDK_WINDOW_STATE_ICONIFIED) options3.code.minimized = state & GDK_WINDOW_STATE_ICONIFIED; } // callbacks from dbg_bkpts.c GLADE_CB gboolean on_dbgbkpts_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_widget_hide(widget); return TRUE; } GLADE_CB void on_dbgbkpts_window_state_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GdkEventWindowState *wstate = (GdkEventWindowState *)event; GdkWindowState state = wstate->new_window_state; GdkWindowState mask = wstate->changed_mask; if(mask & GDK_WINDOW_STATE_WITHDRAWN && dbg_on) options3.bkpts.closed = (state & GDK_WINDOW_STATE_WITHDRAWN); window_get_rect(widget, &options3.bkpts.rect); if(mask & GDK_WINDOW_STATE_ICONIFIED) options3.bkpts.minimized = state & GDK_WINDOW_STATE_ICONIFIED; } // callbacks from dbg_stack.c GLADE_CB gboolean on_dbgstack_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_widget_hide(widget); return TRUE; } GLADE_CB void on_dbgstack_window_state_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GdkEventWindowState *wstate = (GdkEventWindowState *)event; GdkWindowState state = wstate->new_window_state; GdkWindowState mask = wstate->changed_mask; if(mask & GDK_WINDOW_STATE_WITHDRAWN && dbg_on) options3.stack.closed = (state & GDK_WINDOW_STATE_WITHDRAWN); window_get_rect(widget, &options3.stack.rect); if(mask & GDK_WINDOW_STATE_ICONIFIED) options3.stack.minimized = state & GDK_WINDOW_STATE_ICONIFIED; } // callbacks from dbg_heap.c GLADE_CB gboolean on_dbgheap_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_widget_hide(widget); return TRUE; } GLADE_CB void on_dbgheap_window_state_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GdkEventWindowState *wstate = (GdkEventWindowState *)event; GdkWindowState state = wstate->new_window_state; GdkWindowState mask = wstate->changed_mask; if(mask & GDK_WINDOW_STATE_WITHDRAWN && dbg_on) options3.heap.closed = (state & GDK_WINDOW_STATE_WITHDRAWN); window_get_rect(widget, &options3.heap.rect); if(mask & GDK_WINDOW_STATE_ICONIFIED) options3.heap.minimized = state & GDK_WINDOW_STATE_ICONIFIED; } // callbacks from dbg_iop.c GLADE_CB gboolean on_dbgioports_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_widget_hide(widget); return TRUE; } GLADE_CB void on_dbgioports_window_state_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GdkEventWindowState *wstate = (GdkEventWindowState *)event; GdkWindowState state = wstate->new_window_state; GdkWindowState mask = wstate->changed_mask; if(mask & GDK_WINDOW_STATE_WITHDRAWN && dbg_on) options3.iop.closed = (state & GDK_WINDOW_STATE_WITHDRAWN); window_get_rect(widget, &options3.iop.rect); if(mask & GDK_WINDOW_STATE_ICONIFIED) options3.iop.minimized = state & GDK_WINDOW_STATE_ICONIFIED; } // misc // Common remplacement for gtk_window_(de)iconify) void gtk_window_minimize(GtkWindow *window, gboolean action) { if(action) gtk_window_iconify(window); else gtk_window_deiconify(window); } /* tiTIME profile; void profile_start(void) { TO_START(profile); } void profile_stop(const char *str) { printf("Duration (%s): %i ms\n", str, TO_CURRENT(profile)); } */ tiemu-3.03-nogdb+dfsg/src/gui/debugger/dbg_wnds.h000066400000000000000000000052551220314353500216740ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: dbg_all.h 2707 2007-12-13 13:18:45Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __DBG_WINDOWS_H__ #define __DBG_WINDOWS_H__ #include #include G_BEGIN_DECLS #include "dbg_bkpts.h" #include "dbg_bits.h" #include "dbg_code.h" #include "dbg_cause.h" #include "dbg_data.h" #include "dbg_mem.h" #include "dbg_regs.h" #include "dbg_vectors.h" #include "dbg_pclog.h" #include "dbg_stack.h" #include "dbg_heap.h" #include "dbg_entry.h" #include "dbg_iop.h" // calc.c: calculator window extern GtkWidget *main_wnd; // Save window state #define WND_STATE #define LINE_PAD 0 /* Definitions */ typedef struct { GtkWidget *mem; GtkWidget *regs; GtkWidget *bkpts; GtkWidget *code; GtkWidget *pclog; GtkWidget *stack; GtkWidget *heap; GtkWidget *iop; GtkWidget *dock; } DbgWidgets; extern DbgWidgets dbgw; /* Functions */ void dbgwnds_set_sensitivity(int state); void dbgwnds_minimize_all(int all); void dbgwnds_unminimize_all(int all); void dbgwnds_show_all(int all); void dbgwnds_hide_all(int all); #define glade_get(s) glade_xml_get_widget(xml, (s)) /* Macros */ #define set_renderer_pad(renderer) \ { \ g_object_set(G_OBJECT(renderer), "xpad", LINE_PAD, NULL); \ g_object_set(G_OBJECT(renderer), "ypad", LINE_PAD, NULL); \ } //#define MEASURE_WND_TIME #ifdef MEASURE_WND_TIME #define WND_TMR_START() GTimer *tmr = g_timer_new(); #define WND_TMR_STOP(s) { \ g_timer_stop(tmr); \ printf("%s: %f\n", s, g_timer_elapsed(tmr, NULL)); \ g_timer_destroy(tmr); \ } #else #define WND_TMR_START() #define WND_TMR_STOP(s) #endif G_END_DECLS #endif tiemu-3.03-nogdb+dfsg/src/gui/device.c000066400000000000000000000144231220314353500175500ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: device.c 1364 2005-07-13 12:08:10Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * Copyright (C) 1999-2005 Romain Lievin * Copyright (C) 2007 Kevin Kofler * * 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. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "intl.h" #include "support.h" #include "paths.h" #include "device.h" #include "refresh.h" #include "tilibs.h" #include "dboxes.h" #include "tie_error.h" #include "ti68k_int.h" extern DeviceOptions linkp; static DeviceOptions tmp; static DeviceOptions old; static GtkWidget* lbl; static GtkWidget* comm_cable; static GtkWidget* comm_port; gint display_device_dbox() { GladeXML *xml; GtkWidget *dbox; GtkWidget *data; gint result; int err; xml = glade_xml_new(tilp_paths_build_glade("device-2.glade"), "device_dbox", PACKAGE); if (!xml) g_error(_("comm.c: GUI loading failed !\n")); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "device_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); lbl = glade_xml_get_widget(xml, "label7"); // Cable data = comm_cable = glade_xml_get_widget(xml, "combobox1"); switch (linkp.cable_model) { case CABLE_NUL: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 0); break; case CABLE_GRY: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 1); break; case CABLE_BLK: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 2); break; case CABLE_PAR: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 3); break; case CABLE_SLV: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 4); break; case CABLE_USB: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 5); break; case CABLE_VTI: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 6); break; case CABLE_TIE: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 7); break; case CABLE_ILP: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 8); break; default: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 0); break; } // Port data = comm_port = glade_xml_get_widget(xml, "combobox2"); switch (linkp.cable_port) { case PORT_0: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 0); break; case PORT_1: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 1); break; case PORT_2: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 2); break; case PORT_3: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 3); break; case PORT_4: gtk_combo_box_set_active(GTK_COMBO_BOX(data), 4); break; } // Timeout data = glade_xml_get_widget(xml, "spinbutton_comm_timeout"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(data), linkp.cable_timeout); // Delay data = glade_xml_get_widget(xml, "spinbutton_comm_delay"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(data), linkp.cable_delay); // Data exchange memcpy(&tmp, &linkp, sizeof(DeviceOptions)); memcpy(&old, &linkp, sizeof(DeviceOptions)); // Loop result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_CANCEL: break; case GTK_RESPONSE_OK: ti68k_linkport_unconfigure(); data = glade_xml_get_widget(xml, "spinbutton_comm_delay"); tmp.cable_delay = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(data)); data = glade_xml_get_widget(xml, "spinbutton_comm_timeout"); tmp.cable_timeout = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(data)); memcpy(&linkp, &tmp, sizeof(DeviceOptions)); tmp.calc_model = ti68k_calc_to_libti_calc(); err = ti68k_linkport_reconfigure(); if(err) { // if reconfiguring fails, fallback to null cable & port ti68k_linkport_unconfigure(); memcpy(&linkp, &old, sizeof(DeviceOptions)); tmp.calc_model = ti68k_calc_to_libti_calc(); ti68k_linkport_reconfigure(); } break; case GTK_RESPONSE_HELP: break; default: break; } gtk_widget_destroy(dbox); return 0; } GLADE_CB void on_device_combobox1_changed (GtkComboBox *combobox, gpointer user_data) { gint nitem = gtk_combo_box_get_active(combobox); switch(nitem) { case 0: tmp.cable_model = CABLE_NUL; break; case 1: tmp.cable_model = CABLE_GRY; break; case 2: tmp.cable_model = CABLE_BLK; break; case 3: tmp.cable_model = CABLE_PAR; break; case 4: tmp.cable_model = CABLE_SLV; break; case 5: tmp.cable_model = CABLE_USB; break; case 6: tmp.cable_model = CABLE_VTI; break; case 7: tmp.cable_model = CABLE_TIE; break; case 8: tmp.cable_model = CABLE_ILP; break; } } GLADE_CB void on_device_combobox2_changed (GtkComboBox *combobox, gpointer user_data) { gint nitem = gtk_combo_box_get_active(combobox); switch(nitem) { case 0: tmp.cable_port = PORT_0; break; case 1: tmp.cable_port = PORT_1; break; case 2: tmp.cable_port = PORT_2; break; case 3: tmp.cable_port = PORT_3; break; case 4: tmp.cable_port = PORT_4; break; } } GLADE_CB void comm_spinbutton_delay_changed (GtkEditable *editable, gpointer user_data) { tmp.cable_delay = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(user_data)); } GLADE_CB void comm_spinbutton_timeout_changed (GtkEditable *editable, gpointer user_data) { tmp.cable_timeout = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(user_data)); } tiemu-3.03-nogdb+dfsg/src/gui/device.h000066400000000000000000000000651220314353500175520ustar00rootroot00000000000000#include gint display_device_dbox(); tiemu-3.03-nogdb+dfsg/src/gui/filesel.c000066400000000000000000000524061220314353500177370ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: filesel.c 2730 2007-12-16 15:54:33Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * Carbon file dialog code lifted from Systool (LGPL): * Copyright (c) 2006 Asger Ottar Alstrup, Nicolas Cannasse, Edwin van Rijkom * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Some informations about these file selectors: starting at tifiles2-v0.0.6, we use the 'glib filename encoding' scheme for charset encoding of filenames: - UTF-8 charset on Windows, - locale charset on Linux (usually UTF-8 but this is not always true). GTK+ always uses UTF-8 for widgets (label, file selectors, ...) thus some conversions may be needed. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include #ifdef __WIN32__ #include #include #if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) typedef OPENFILENAME OPENFILENAME_MAYALIAS __attribute__((may_alias)); #else typedef OPENFILENAME OPENFILENAME_MAYALIAS; #endif #endif #ifdef HAVE_CARBON_CARBON_H #include #endif #if WITH_KDE #include "kde.h" #endif #include "intl.h" #include "filesel.h" #include "refresh.h" #include "struct.h" /* In case some header happens to define this... */ #undef HAVE_CARBON_CARBON_H #ifdef HAVE_CARBON_CARBON_H /* Helpers */ #define PATH_SIZE 2048 static OSStatus GetFSRefFromAEDesc( FSRef *fsRef, AEDesc* theItem ) { OSStatus err = noErr; AEDesc coerceDesc= { 0, NULL }; if ( theItem->descriptorType != typeFSRef ) { err = AECoerceDesc( theItem, typeFSRef, &coerceDesc ); if ( err == noErr ) theItem = &coerceDesc; } if ( err == noErr ) err = AEGetDescData( theItem, fsRef, sizeof(*fsRef) ); AEDisposeDesc( &coerceDesc ); if ( err != noErr ) { FSSpec fsSpec; AEDesc coerceDesc2 = {0, NULL}; if ( theItem->descriptorType != typeFSS ) { err = AECoerceDesc( theItem, typeFSS, &coerceDesc2 ); theItem = &coerceDesc2; } if ( err == noErr ) err = AEGetDescData( theItem, &fsSpec, sizeof(fsSpec) ); AEDisposeDesc( &coerceDesc2 ); if ( err == noErr ) err = FSpMakeFSRef( &fsSpec, fsRef ); } return(err); } static Boolean filterProc(AEDesc * theItem, void * info, void * callBackUD, NavFilterModes filterMode) { const gchar **filters = (const gchar **) callBackUD; if (!filters) return 1; NavFileOrFolderInfo *i = (NavFileOrFolderInfo*) info; if (i->isFolder) return 1; if (theItem->descriptorType==typeFSRef) { FSRef f; UInt8 path[PATH_SIZE]; GetFSRefFromAEDesc(&f,theItem); if (FSRefMakePath (&f,path,PATH_SIZE)==noErr) { char *ext = NULL; char *next = (char*) path; while(next) { next = strchr(next,'.'); if (next) ext = ++next; } if(ext) { while(*filters) { const gchar *filter=*(filters++); if (*(filter++)=='*' && *filter=='.') { next = ext; while (*(++filter)) { if (!*next) break; if (*filter=='?') { next++; } else if (*filter!=*(next++)) break; } if (!*filter && !*next) return 1; } } } } return 0; } return 1; } #endif /* Single file selectors */ static gchar *fname = NULL; static gint action = 0; // GTK >= 2.4 static const gchar* create_fsel_2(gchar *dirname, gchar *filename, gchar *ext, gboolean save) { GtkWidget *dialog; GtkFileFilter *filter; gchar *path, *tmp; gchar **sarray; gint i; gchar *sfilename, *sext; // gtk_file_chooser_set_current_name and gtk_file_filter_add_pattern ALWAYS want UTF-8. sfilename = filename ? g_filename_to_utf8(filename,-1,NULL,NULL,NULL) : NULL; sext = ext ? g_filename_to_utf8(ext,-1,NULL,NULL,NULL) : NULL; // create box dialog = gtk_file_chooser_dialog_new ( save ? "Save File" : "Open File", NULL, save ? GTK_FILE_CHOOSER_ACTION_SAVE : GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); // set default folder tmp = g_strconcat(dirname, G_DIR_SEPARATOR_S, NULL); // add trailing '/' otherwise get_dirname is confused path = g_path_get_dirname(tmp); g_free(tmp); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), path); g_free(path); // set default name if(filename) gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), sfilename); // set wildcards filter = gtk_file_filter_new(); sarray = g_strsplit(sext, ";", -1); for(i = 0; sarray[i] != NULL; i++) gtk_file_filter_add_pattern (filter, sarray[i]); g_strfreev(sarray); gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); // get result g_free(fname); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); else fname = NULL; gtk_widget_destroy (dialog); g_free(sfilename); g_free(sext); return fname; } // WIN32 static const gchar* create_fsel_3(gchar *dirname, gchar *filename, gchar *ext, gboolean save) { #if defined(__WIN32__) OPENFILENAME_MAYALIAS o; char lpstrFile[2048] = "\0"; char lpstrFilter[512]; char *p; gchar **sarray; int i, n; int have_widechar = G_WIN32_HAVE_WIDECHAR_API(); void *sdirname; // clear structure memset (&o, 0, sizeof(OPENFILENAME)); // set default filename if(filename) { void *temp; if (have_widechar) { temp = g_utf8_to_utf16(filename,-1,NULL,NULL,NULL); if(!temp) return NULL; wcsncpy((wchar_t *)lpstrFile, temp, sizeof(lpstrFile)>>1); } else { temp = g_locale_from_utf8(filename,-1,NULL,NULL,NULL); if(!temp) return NULL; strncpy(lpstrFile, temp, sizeof(lpstrFile)); } g_free(temp); } // format filter sarray = g_strsplit(ext, "|", -1); for(n = 0; sarray[n] != NULL; n++); for(i = 0, p = lpstrFilter; i < n; i++) { void *temp; if (have_widechar) { temp = g_utf8_to_utf16(sarray[i],-1,NULL,NULL,NULL); wcscpy((wchar_t *)p,temp); p += (wcslen(temp)<<1); *p++ = '\0'; *p++ = '\0'; wcscpy((wchar_t *)p,temp); p += (wcslen(temp)<<1); *p++ = '\0'; *p++ = '\0'; } else { temp = g_locale_from_utf8(sarray[i],-1,NULL,NULL,NULL); strcpy(p,temp); p += strlen(temp); *p++ = '\0'; strcpy(p,temp); p += strlen(temp); *p++ = '\0'; } g_free(temp); } *p++ = '\0'; if (have_widechar) *p++ = '\0'; g_strfreev(sarray); // set structure o.lStructSize = sizeof (o); o.lpstrFilter = lpstrFilter; //"All\0*.*\0Text\0*.TXT\0"; o.lpstrFile = lpstrFile; if (have_widechar) { o.nMaxFile = sizeof(lpstrFile) >> 1; sdirname = g_utf8_to_utf16(dirname,-1,NULL,NULL,NULL); } else { o.nMaxFile = sizeof(lpstrFile); sdirname = g_locale_from_utf8(dirname,-1,NULL,NULL,NULL); } o.lpstrInitialDir = sdirname; o.Flags = 0x02000000 | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_EXPLORER | OFN_LONGNAMES | OFN_NONETWORKBUTTON; // open/close if(save) { if(!(have_widechar ? GetSaveFileNameW((OPENFILENAMEW *)&o) : GetSaveFileName((OPENFILENAME *)&o))) { g_free(sdirname); return fname = NULL; } } else { if(!(have_widechar ? GetOpenFileNameW((OPENFILENAMEW *)&o) : GetOpenFileName((OPENFILENAME *)&o))) { g_free(sdirname); return fname = NULL; } } g_free(sdirname); if (have_widechar) fname = g_utf16_to_utf8((wchar_t *)lpstrFile,-1,NULL,NULL,NULL); else fname = g_locale_to_utf8(lpstrFile,-1,NULL,NULL,NULL); return fname; #elif defined(HAVE_CARBON_CARBON_H) NavDialogRef ref; NavDialogCreationOptions opt; OSStatus ret; gchar **sarray=NULL; fname = NULL; NavGetDefaultDialogCreationOptions(&opt); opt.clientName = CFSTR("TiEmu"); opt.modality = kWindowModalityAppModal; opt.optionFlags = kNavDefaultNavDlogOptions | kNavAllFilesInPopup; if (save) { ret = NavCreatePutFileDialog(&opt,0,kNavGenericSignature,NULL,NULL,&ref); } else { sarray = g_strsplit(ext, ";", -1); ret = NavCreateChooseFileDialog(&opt,NULL,NULL,NULL,filterProc,sarray,&ref); } if (ret == noErr) { if (NavDialogRun(ref) == noErr) { if (NavDialogGetUserAction(ref) == save?kNavUserActionSaveAs:kNavUserActionChoose) { NavReplyRecord reply; if (NavDialogGetReply(ref,&reply) == kNavNormalState) { FSRef fsref; AEGetNthPtr(&reply.selection,1,typeFSRef,0,0,&fsref,sizeof(FSRef),0); fname = g_malloc(PATH_SIZE); memset(fname,0,PATH_SIZE); if (FSRefMakePath (&fsref,(UInt8*)fname,PATH_SIZE-(save?1:0))==noErr) { if (save) { strcat(fname,"/"); CFStringGetCString(reply.saveFileName,fname+strlen(fname),PATH_SIZE-strlen(fname),kCFStringEncodingUTF8); } } else { g_free(fname); fname = NULL; } NavDisposeReply(&reply); } } } NavDialogDispose(ref); } if (!save) g_strfreev(sarray); return fname; #endif return NULL; } // KDE static const gchar* create_fsel_4(gchar *dirname, gchar *filename, gchar *ext, gboolean save) { #if WITH_KDE gchar *p; gchar *extspaces = g_strdup(ext); p = extspaces; while ((p = strchr(p, ';'))) *p = ' '; if(save) { if (filename) dirname = g_strconcat(dirname, "/", filename, NULL); fname = sp_kde_get_write_filename(dirname, extspaces, _("Save file")); } else fname = sp_kde_get_open_filename(dirname, extspaces, _("Open file")); g_free(extspaces); return fname; #endif return NULL; } // Front-end const gchar *create_fsel(gchar *dirname, gchar *filename, gchar *ext, gboolean save) { #if !defined(__WIN32__) && !defined(HAVE_CARBON_CARBON_H) if(options.fs_type == 2) { #if WITH_KDE const char *p = getenv("KDE_FULL_SESSION"); if (p && *p) // KDE is running options.fs_type = 3; else #endif options.fs_type = 1; } #endif #if !WITH_KDE if(options.fs_type == 3) options.fs_type = 1; #endif //printf("%i: <%s> <%s> <%s> %i\n", options.fs_type, dirname, filename, ext, save); switch(options.fs_type) { case 0: case 1: return create_fsel_2(dirname, filename, ext, save); case 2: return create_fsel_3(dirname, filename, ext, save); case 3: return create_fsel_4(dirname, filename, ext, save); default: return NULL; } return NULL; } /* Multiple files selectors */ static gchar** filenames = NULL; static gint actions = 0; // GTK >= 2.4 static gchar** create_fsels_2(gchar *dirname, gchar *filename, gchar *ext) { GtkWidget *dialog; GtkFileFilter *filter; gchar *path, *tmp; gchar **sarray; gint i; gchar *sfilename, *sext; // gtk_file_chooser_set_current_name and gtk_file_filter_add_pattern ALWAYS want UTF-8. sfilename = filename ? g_filename_to_utf8(filename,-1,NULL,NULL,NULL) : NULL; sext = ext ? g_filename_to_utf8(ext,-1,NULL,NULL,NULL) : NULL; // create box dialog = gtk_file_chooser_dialog_new ("Open File", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); // set default folder tmp = g_strconcat(dirname, G_DIR_SEPARATOR_S, NULL); // add trailing '/' otherwise get_dirname is confused path = g_path_get_dirname(tmp); g_free(tmp); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), path); g_free(path); // set multiple selection gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE); // set default name if(filename) gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), sfilename); // set wildcards filter = gtk_file_filter_new(); sarray = g_strsplit(sext, ";", -1); for(i = 0; sarray[i] != NULL; i++) gtk_file_filter_add_pattern (filter, sarray[i]); g_strfreev(sarray); gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); // get result if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { GSList *list, *p; gchar **q; // convert list into string array list=gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER (dialog)); filenames = (gchar **)g_malloc0((g_slist_length(list)+1) * sizeof(gchar *)); for(p = list, q = filenames; p; p = g_slist_next(p), q++) *q = p->data; *q = NULL; g_slist_free(list); } else filenames = NULL; gtk_widget_destroy (dialog); g_free(sfilename); g_free(sext); return filenames; } // WIN32 static gchar** create_fsels_3(gchar *dirname, gchar *filename, gchar *ext) { #if defined(__WIN32__) OPENFILENAME_MAYALIAS o; char lpstrFile[2048] = "\0"; char lpstrFilter[512]; char *p; gchar **sarray; int i, n; int have_widechar = G_WIN32_HAVE_WIDECHAR_API(); void *sdirname; gchar *temp1; // clear structure memset (&o, 0, sizeof(OPENFILENAME)); // set default filename if(filename) { void *temp; if (have_widechar) { temp = g_utf8_to_utf16(filename,-1,NULL,NULL,NULL); if(!temp) return NULL; wcsncpy((wchar_t *)lpstrFile, temp, sizeof(lpstrFile)>>1); } else { temp = g_locale_from_utf8(filename,-1,NULL,NULL,NULL); if(!temp) return NULL; strncpy(lpstrFile, temp, sizeof(lpstrFile)); } g_free(temp); } // format filter sarray = g_strsplit(ext, "|", -1); for(n = 0; sarray[n] != NULL; n++); for(i = 0, p = lpstrFilter; i < n; i++) { void *temp; if (have_widechar) { temp = g_utf8_to_utf16(sarray[i],-1,NULL,NULL,NULL); wcscpy((wchar_t *)p,temp); p += (wcslen(temp)<<1); *p++ = '\0'; *p++ = '\0'; wcscpy((wchar_t *)p,temp); p += (wcslen(temp)<<1); *p++ = '\0'; *p++ = '\0'; } else { temp = g_locale_from_utf8(sarray[i],-1,NULL,NULL,NULL); strcpy(p,temp); p += strlen(temp); *p++ = '\0'; strcpy(p,temp); p += strlen(temp); *p++ = '\0'; } g_free(temp); } *p++ = '\0'; if (have_widechar) *p++ = '\0'; g_strfreev(sarray); // set structure o.lStructSize = sizeof (o); o.lpstrFilter = lpstrFilter; //"All\0*.*\0Text\0*.TXT\0"; o.lpstrFile = lpstrFile; //"C:\msvc\tilp\0foo.txt\0bar.txt" if (have_widechar) { o.nMaxFile = sizeof(lpstrFile) >> 1; sdirname = g_utf8_to_utf16(dirname,-1,NULL,NULL,NULL); } else { o.nMaxFile = sizeof(lpstrFile); sdirname = g_locale_from_utf8(dirname,-1,NULL,NULL,NULL); } o.lpstrInitialDir = sdirname; o.Flags = 0x02000000 | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_EXPLORER | OFN_LONGNAMES | OFN_NONETWORKBUTTON | OFN_ALLOWMULTISELECT; // open selector if(!(have_widechar ? GetOpenFileNameW((OPENFILENAMEW *)&o) : GetOpenFileName((OPENFILENAME *)&o))) { g_free(sdirname); return NULL; } filenames = NULL; // converts resulting string if (have_widechar) temp1 = g_utf16_to_utf8((wchar_t *)lpstrFile,-1,NULL,NULL,NULL); else temp1 = g_locale_to_utf8(lpstrFile,-1,NULL,NULL,NULL); for(p = lpstrFile, i=0; *p; p += have_widechar?((wcslen((wchar_t *)p)+1)<<1):(strlen(p)+1), i++) { if(i) // skip directory { gchar *temp; filenames = g_realloc(filenames, (i+1) * sizeof(gchar *)); if (have_widechar) temp = g_utf16_to_utf8((wchar_t *)p,-1,NULL,NULL,NULL); else temp = g_locale_to_utf8(p,-1,NULL,NULL,NULL); filenames[i-1] = g_strconcat(temp1, G_DIR_SEPARATOR_S, temp, NULL); g_free(temp); } } g_free(temp1); // one file selected ? if(i == 1) { filenames = g_malloc(2 * sizeof(gchar *)); if (have_widechar) filenames[0] = g_utf16_to_utf8((wchar_t *)lpstrFile,-1,NULL,NULL,NULL); else filenames[0] = g_locale_to_utf8(lpstrFile,-1,NULL,NULL,NULL); filenames[1] = NULL; } else filenames[i-1] = NULL; g_free(sdirname); return filenames; #elif defined(HAVE_CARBON_CARBON_H) NavDialogRef ref; NavDialogCreationOptions opt; gchar **sarray; filenames = NULL; NavGetDefaultDialogCreationOptions(&opt); opt.clientName = CFSTR("TiEmu"); opt.modality = kWindowModalityAppModal; opt.optionFlags = kNavDefaultNavDlogOptions | kNavAllFilesInPopup; sarray = g_strsplit(ext, ";", -1); if (NavCreateGetFileDialog(&opt,NULL,NULL,NULL,filterProc,sarray,&ref) == noErr) { if (NavDialogRun(ref) == noErr) { if (NavDialogGetUserAction(ref)==kNavUserActionOpen) { NavReplyRecord reply; if (NavDialogGetReply(ref,&reply) == kNavNormalState) { long count; AECountItems(&reply.selection, &count); if (count) { filenames = (gchar **) g_malloc0((count+1)*sizeof(gchar*)); while(count>0) { FSRef fsref; AEGetNthPtr(&reply.selection,count--,typeFSRef,0,0,&fsref,sizeof(FSRef),0); filenames[count] = g_malloc(PATH_SIZE); memset(filenames[count],0,PATH_SIZE); if (FSRefMakePath (&fsref,(UInt8*)filenames[count],PATH_SIZE)!=noErr) { g_strfreev(filenames); filenames = NULL; } } } NavDisposeReply(&reply); } } } NavDialogDispose(ref); } g_strfreev(sarray); return filenames; #endif return NULL; } static gchar** create_fsels_4(gchar *dirname, gchar *filename, gchar *ext) { #if WITH_KDE gchar *p; gchar *extspaces = g_strdup(ext); p = extspaces; while ((p = strchr(p, ';'))) *p = ' '; filenames = sp_kde_get_open_filenames(dirname, extspaces, _("Open file")); g_free(extspaces); return filenames; #endif return NULL; } // Front-end gchar** create_fsels(gchar *dirname, gchar *filename, gchar *ext) { #if !defined(__WIN32__) && !defined(HAVE_CARBON_CARBON_H) if(options.fs_type == 2) { #if WITH_KDE const char *p = getenv("KDE_FULL_SESSION"); if (p && *p) // KDE is running options.fs_type = 3; else #endif options.fs_type = 1; } #endif #if !WITH_KDE if(options.fs_type == 3) options.fs_type = 1; #endif //printf("%i: <%s> <%s> <%s>\n", options.fs_type, dirname, filename, ext); switch(options.fs_type) { case 0: case 1: return create_fsels_2(dirname, filename, ext); case 2: return create_fsels_3(dirname, filename, ext); case 3: return create_fsels_4(dirname, filename, ext); default: return NULL; } return NULL; } tiemu-3.03-nogdb+dfsg/src/gui/filesel.h000066400000000000000000000022771220314353500177450ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include const gchar *create_fsel(gchar *dirname, gchar *filename, gchar *ext, gboolean save); gchar** create_fsels(gchar *dirname, gchar *filename, gchar *ext); tiemu-3.03-nogdb+dfsg/src/gui/fs_misc.c000066400000000000000000000262341220314353500177370ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: fs_misc.c 2840 2009-05-08 20:43:47Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2009, Romain Liévin, Kevin Kofler * Copyright (c) 2005, Christian Walther (patches for Mac OS-X port) * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include #include "intl.h" #include "filesel.h" #include "skinops.h" #include "refresh.h" #include "paths.h" #include "struct.h" #include "ti68k_int.h" #include "dboxes.h" #include "calc.h" #include "rcfile.h" #include "pbars.h" #include "tie_error.h" #include "dbg_all.h" #include "files.h" #include "ti68k_err.h" //"fs_misc.h" gint display_skin_dbox(void) { const gchar *filename; filename = (char *)create_fsel(inst_paths.skin_dir, NULL, "*.skn", FALSE); if (!filename) { return 0; } // Load new skin g_free(options.skin_file); options.skin_file = g_strdup(filename); hid_change_skin(options.skin_file); return 0; } int fs_load_state(const char *filename) { int err; g_free(params.sav_file); params.sav_file = g_strdup(filename); err = ti68k_state_load(params.sav_file); if(err == ERR_STATE_MATCH) { gchar *rf, *tf; int ret = msg_box2(_("Warning"), _("The state image you are attempting to load does not match the current running image. Press OK if you want TiEmu to automatically load the corresponding image or Cancel to abort.")); if(ret == BUTTON2) //cancel return 0; ti68k_state_parse(filename, &rf, &tf); if(!ti68k_is_a_img_file(rf)) return 0; // Set tib file and image g_free(params.tib_file); params.tib_file = tf; g_free(params.rom_file); params.rom_file = rf; // Restart engine by exiting the GTK loop while(gtk_events_pending()) gtk_main_iteration(); gtk_main_quit(); } else handle_error(); return 0; } gint display_load_state_dbox(void) { const gchar *filename; // get filename filename = create_fsel(inst_paths.img_dir, NULL, "*.sav", FALSE); if (!filename) return 0; fs_load_state(filename); return 0; } gint display_save_state_dbox(void) { const gchar *filename; int err; gchar *basename; gchar *dot; gchar *pattern; // get filename basename = g_path_get_basename(params.rom_file); dot = strrchr(basename, '.'); if(dot != NULL) *dot = '\0'; pattern = g_strconcat(basename, ".sav", NULL); g_free(basename); filename = create_fsel(inst_paths.img_dir, pattern, "*.sav", TRUE); g_free(pattern); if (!filename) return 0; g_free(params.sav_file); params.sav_file = g_strdup(filename); err = ti68k_state_save(params.sav_file); handle_error(); if(!rcfile_exist()) { rcfile_write(); #ifdef __WIN32__ msg_box1(_("Information"), _("You do not seem to have saved your settings. Configuration file saved (in tiemu.ini).")); #else msg_box1(_("Information"), _("You do not seem to have saved your settings. Configuration file saved (in ~/.tiemu).")); #endif } return 0; } void fs_send_file(const gchar *filename) { int err; // set pbar title if(tifiles_file_is_flash(filename)) { create_pbar_(FNCT_SEND_APP, _("Sending app(s)")); } else if(tifiles_file_is_group(filename)) { create_pbar_(FNCT_SEND_VAR, _("Sending var(s)")); } else if(tifiles_file_is_backup(filename)) { create_pbar_(FNCT_SEND_BACKUP, _("Restoring")); } else if(tifiles_file_is_single(filename)) { create_pbar_(FNCT_SEND_VAR, _("Sending var(s)")); } else if(tifiles_file_is_tigroup(filename)) { create_pbar_type5(_("Restoring")); } // note that core is currently not bkpt-interruptible when // transferring file GTK_REFRESH(); err = ti68k_linkport_send_file(filename); handle_error(); destroy_pbar(); } int fs_send_files(gchar **filenames) { gchar **ptr; int i, l; // check extension and send for(ptr = filenames, l = 0; *ptr; ptr++, l++); for(ptr = filenames, i = 0; *ptr; ptr++, i++) { if(!tifiles_file_is_ti(*ptr) || (!tifiles_calc_is_ti9x(tifiles_file_get_model(*ptr)) && !tifiles_file_is_tigroup(*ptr))) { msg_box1(_("Error"), _("This file is not a valid TI file.")); g_strfreev(filenames); return -1; } fs_send_file(*ptr); } return 0; } gint display_send_files_dbox(void) { const gchar *ext; gchar **filenames; static gchar *folder = NULL; int ret = 0; // Check for null cable if(linkp.cable_model != CABLE_ILP) { int ret, err; gchar *str; str = g_strdup_printf(_("The current link cable <%s> port <%s> does not allow direct file loading. Do you let me change link port settings to allow direct file loading?"), ticables_model_to_string(linkp.cable_model), ticables_port_to_string(linkp.cable_port)); ret= msg_box2(_("Warning"), str); g_free(str); if(ret == BUTTON2) return -1; // reconfigure link port ti68k_linkport_unconfigure(); linkp.cable_model = CABLE_ILP; linkp.cable_port = PORT_0; err = ti68k_linkport_reconfigure(); handle_error(); } // set mask switch(tihw.calc_type) { case TI92: ext = "*.92?"; break; default: ext = "*.89?;*.92?;*.9x?;*.9X?;*.v2?;*.V2?;*.tig"; break; } // get filename if(folder == NULL) folder = g_strdup(inst_paths.base_dir); filenames = create_fsels(folder, NULL, (char *)ext); if(!filenames) return 0; // keep folder g_free(folder); folder = g_path_get_dirname(filenames[0]); ret = fs_send_files(filenames); g_strfreev(filenames); return ret; } int display_recv_files_dbox(const char *src, const char *dst) { const gchar *fn; gchar *src_folder; gchar *dst_folder; gchar *basename; gchar *ext; // get file components src_folder = g_path_get_dirname(src); dst_folder = inst_paths.home_dir; basename = g_path_get_basename(dst); // set mask switch(tihw.calc_type) { case TI92: ext = "*.92?"; break; default: ext = "*.89?;*.92?;*.9x?;*.9X?;*.v2?;*.V2?"; break; } fn = create_fsel(dst_folder, basename, ext, TRUE); if (fn) tiemu_file_move_with_check(src, fn); else tiemu_file_delete(src); g_free(src_folder); g_free(basename); return 0; } #ifndef NO_GDB void fs_send_file_and_debug_info(const gchar *filename) { const gchar *ext; FileContent *metadata; fs_send_file(filename); ext = strrchr(filename, '.'); if (ext) { gchar *temp; *(char *)ext = 0; temp = g_strconcat(filename, ".dbg", NULL); #ifdef WIN32 symfile = g_locale_from_utf8(temp,-1,NULL,NULL,NULL); g_free(temp); #else symfile = temp; #endif *(char *)ext = '.'; } metadata = tifiles_content_create_regular(CALC_TI89); if (!tifiles_file_read_regular(filename, metadata)) { if (metadata->num_entries > 0) { int handle = sym_find_handle (metadata->entries[0]->folder, metadata->entries[0]->name); if (handle) ti68k_bkpt_add_pgmentry (handle); } } tifiles_content_delete_regular(metadata); } gint display_debug_dbox(void) { const gchar *filename; const gchar *ext; static gchar *folder = NULL; // set mask switch(tihw.calc_type) { case TI92: ext = "*.92?"; break; default: ext = "*.89?;*.92?;*.9x?;*.v2?"; break; } // get filename if(folder == NULL) folder = g_strdup(inst_paths.base_dir); filename = (char *)create_fsel(folder, NULL, (char *)ext, FALSE); if (!filename) { return 0; } // keep folder g_free(folder); folder = g_path_get_dirname(filename); // check extension if(!tifiles_file_is_ti(filename) || !tifiles_calc_is_ti9x(tifiles_file_get_model(filename))) { msg_box1(_("Error"), _("This file is not a valid TI file.")); return -1; } fs_send_file_and_debug_info(filename); return 0; } #else void fs_send_file_and_debug_info(const gchar *filename) { fs_send_file(filename); } #endif extern int dbgromcall_refresh_window(void); gint display_set_tib_dbox(void) { const gchar *filename; gchar *path, *name; int err; // get filename filename = create_fsel(inst_paths.base_dir, NULL, "*.89u;*.9xu;*.v2u;*.tib", FALSE); if (!filename) return 0; if(!ti68k_is_a_tib_file(filename)) { msg_box1(_("Error"), _("Does not seem to be an upgrade.")); return -1; } path = g_path_get_dirname(filename); name = g_path_get_basename(filename); // set tib file g_free(params.tib_file); params.tib_file = g_strconcat(path, G_DIR_SEPARATOR_S, name, NULL); g_free(path); g_free(name); err = ti68k_load_upgrade(params.tib_file); handle_error(); if(err) { msg_box1(_("Error"), _("Cannot load the upgrade.")); return -1; } // update ROM calls list dbgromcall_refresh_window(); // simply reset, don't restart ti68k_reset(); return 0; } int import_romversion(const char *filename) { char *dstname; int err; if(ti68k_is_a_rom_file(filename)) { err = ti68k_convert_rom_to_image(filename, inst_paths.img_dir, &dstname); handle_error(); g_free(dstname); } else if(ti68k_is_a_tib_file(filename)) { #ifdef _MSC_VER IMG_INFO infos = {0}; #else IMG_INFO infos = {}; #endif int err = ti68k_get_tib_infos(filename, &infos, 0); int hw_type = HW2; if(infos.calc_type == TI92p || infos.calc_type == TI89) { int ret = msg_box3(_("HW type"), _("The FLASH upgrade can be imported as HW1 or HW2. Please choose..."), "HW1", "HW2", "Default"); if(ret == BUTTON1) hw_type = HW1; else if(ret == BUTTON2) hw_type = HW2; } else if(infos.calc_type == TI89t) { int ret = msg_box3(_("HW type"), _("The FLASH upgrade can be imported as HW3 or HW4. Please choose..."), "HW3", "HW4", "Default"); hw_type = HW3; // default is HW3 for the Titanium, there's no Titanium HW2 if(ret == BUTTON1) hw_type = HW3; else if(ret == BUTTON2) hw_type = HW4; } // fake rom err = ti68k_convert_tib_to_image(filename, inst_paths.img_dir, &dstname, hw_type); handle_error(); g_free(dstname); } else { msg_box1(_("Error"), _("This is not a valid file")); return -1; } return 0; } gint display_import_romversion_dbox(void) { const gchar *filename; // get filename filename = create_fsel(inst_paths.base_dir, NULL, "*.rom;*.89u;*.9xu;*.v2u;*.tib", FALSE); if (!filename) return 0; return import_romversion(filename);; } tiemu-3.03-nogdb+dfsg/src/gui/fs_misc.h000066400000000000000000000031561220314353500177420ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2006, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include G_BEGIN_DECLS gint display_skin_dbox(void); gint display_load_state_dbox(void); gint display_save_state_dbox(void); gint display_recv_files_dbox(const char *src, const char *dst); gint display_send_files_dbox(void); gint display_debug_dbox(void); gint display_set_rom_dbox(void); gint display_set_tib_dbox(void); gint display_import_romversion_dbox(void); void fs_send_file(const gchar *filename); int fs_send_files(gchar **filenames); void fs_send_file_and_debug_info(const gchar *filename); int fs_load_state(const char *filename); G_END_DECLS tiemu-3.03-nogdb+dfsg/src/gui/infos.c000066400000000000000000000067621220314353500174360ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: infos.c 2444 2007-04-15 08:29:34Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include "intl.h" #include "paths.h" #include "skinops.h" #include "ti68k_int.h" gint display_infos_dbox() { GladeXML *xml; GtkWidget *dbox; GtkWidget *label; gint result; gchar *str; xml = glade_xml_new (tilp_paths_build_glade("infos-2.glade"), "infos_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "infos_dbox"); label = glade_xml_get_widget(xml, "label20"); switch(skin_infos.type) { case SKIN_TYPE_TIEMU: str = g_strdup_printf("%s", "TiEmu v2.00"); break; case SKIN_TYPE_VTI: str = g_strdup_printf("%s", "VTi 2.5"); break; case SKIN_TYPE_OLD_VTI: str = g_strdup_printf("%s", "VTi 2.1"); break; default: str = g_strdup_printf("%s", _("unknown")); break; } gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label21"); str = g_strdup_printf("%s", skin_infos.name); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label22"); if(skin_infos.author) str = g_strdup_printf("%s", skin_infos.author); else str = g_strdup(""); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label23"); str = g_strdup_printf("%s", ti68k_calctype_to_string(tihw.calc_type)); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label24"); str = g_strdup_printf("%s", tihw.rom_version); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label25"); str = g_strdup_printf("%i KB", tihw.ram_size >> 10); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label26"); str = g_strdup_printf("%i KB", tihw.rom_size >> 10); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label27"); str = g_strdup_printf("%s", ti68k_romtype_to_string(tihw.rom_flash)); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label28"); str = g_strdup_printf("%s", ti68k_hwtype_to_string(tihw.hw_type)); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: break; default: break; } gtk_widget_destroy(dbox); return 0; } tiemu-3.03-nogdb+dfsg/src/gui/infos.h000066400000000000000000000020761220314353500174350ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint display_infos_dbox(); tiemu-3.03-nogdb+dfsg/src/gui/logger/000077500000000000000000000000001220314353500174205ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/gui/logger/log_link.c000066400000000000000000000155551220314353500213750ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: manpage.c 1455 2005-05-31 18:38:03Z roms $ */ /* tilp - Ti Linking Program * Copyright (C) 1999-2004 Romain Lievin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include #include "intl.h" #include "paths.h" #include "support.h" #include "ti68k_def.h" #include "filesel.h" static GtkTextBuffer *txtbuf; static logger_enabled = 0; static void udpate_widgets(GtkWidget *button, GtkWidget *spin) { gtk_button_set_use_stock(GTK_BUTTON(button), TRUE); gtk_button_set_label(GTK_BUTTON(button), logger_enabled ? GTK_STOCK_STOP : GTK_STOCK_OK); // GTK_STOCK_START gtk_widget_set_sensitive(spin, !logger_enabled); } gint display_loglink_dbox() { GladeXML *xml; GtkWidget *dbox; GtkWidget *text; gpointer data, data2; int i, j; xml = glade_xml_new (tilp_paths_build_glade("log_link-2.glade"), "linklog_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); text = glade_xml_get_widget(xml, "textview1"); txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)); data = glade_xml_get_widget(xml, "spinbutton1"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(data), logger.link_size >> 10); data = glade_xml_get_widget(xml, "checkbutton1"); gtk_toggle_button_set_active(data, logger.link_mask & 1); data = glade_xml_get_widget(xml, "checkbutton2"); gtk_toggle_button_set_active(data, logger.link_mask & 2); data = glade_xml_get_widget(xml, "button10"); data2 = glade_xml_get_widget(xml, "spinbutton1"); udpate_widgets(data, data2); if(logger.link_buf) { int old_flags; char *str; char *tmp; int meaningful_length; int offset; if (logger.link_ptr <= logger.link_size) { // No data of the circular buffer was overwritten. meaningful_length = logger.link_ptr; offset = 0; } else { // Some data of the circular buffer was overwritten: // * show only the meaningful part of it; // * prevent reading past the bounds of logger.link_buf. meaningful_length = logger.link_size; offset = logger.link_ptr % logger.link_size; } old_flags = MSB((logger.link_buf)[offset]); if((logger.link_buf)[offset] & (1 << 8)) str = g_strdup("S: "); else str = g_strdup("R: "); for(i = j = 0; i < meaningful_length; i++) { uint16_t word = (logger.link_buf)[(i + offset) % logger.link_size]; uint8_t byte = LSB(word); uint8_t flags = MSB(word); int s = flags & 1; int r = flags & 2; if(flags != old_flags) { old_flags = flags; tmp = g_strdup_printf("(%i bytes)\n", j); str = g_strconcat(str, tmp, NULL); g_free(tmp); gtk_text_buffer_insert_at_cursor(txtbuf, str, strlen(str)); j = 0; g_free(str); str = g_strdup_printf("%c: ", s ? 'S' : 'R'); } // Wrap every 16 characters. if((i != 0) && !(i & 15)) { tmp = g_strdup("\n"); str = g_strconcat(str, tmp, NULL); gtk_text_buffer_insert_at_cursor(txtbuf, str, strlen(str)); g_free(str); str = g_strdup(" "); } tmp = g_strdup_printf("%02X ", byte); str = g_strconcat(str, tmp, NULL); g_free(tmp); j++; } tmp = g_strdup_printf("(%i bytes)\n", j); str = g_strconcat(str, tmp, NULL); gtk_text_buffer_insert_at_cursor(txtbuf, str, strlen(str)); g_free(str); } dbox = glade_xml_get_widget(xml, "linklog_dbox"); gtk_widget_show(dbox); return 0; } GLADE_CB void ll_checkbutton1_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) logger.link_mask |= 1; else logger.link_mask &= ~1; } GLADE_CB void ll_checkbutton2_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) logger.link_mask |= 2; else logger.link_mask &= ~2; } GLADE_CB void on_button9_clicked (GtkButton *button, gpointer user_data) { const gchar *filename; FILE *f; gchar *txt; GtkTextIter start, end; filename = create_fsel(inst_paths.home_dir, "log_link.txt", "*.txt", TRUE); if (!filename) return; f = fopen(filename, "wt"); if(f == NULL) return; gtk_text_buffer_get_bounds(txtbuf, &start, &end); txt = gtk_text_buffer_get_text(txtbuf, &start, &end, TRUE); printf("<%s>\n", txt); fwrite(txt, strlen(txt), 1, f); fclose(f); } GLADE_CB void on_button10_clicked (GtkButton *butto, gpointer user_dat) { GtkWidget *button = user_dat; GtkWidget *spinbutton = GTK_WIDGET(butto); logger_enabled = !logger_enabled; if(logger.link_size == 0) logger.link_size = 1024 * gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbutton)); logger.link_ptr = 0; if(logger_enabled) { g_free(logger.link_buf); logger.link_buf = (uint16_t *)g_malloc0(logger.link_size * sizeof(uint16_t)); } else { g_free(logger.link_buf); logger.link_buf = NULL; } udpate_widgets(button, spinbutton); } GLADE_CB void on_button11_clicked (GtkButton *button, gpointer user_data) { GtkTextIter start, end; GtkWidget *text = GTK_WIDGET(button); GtkTextBuffer *txtbuf; // clear text txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)); gtk_text_buffer_get_bounds(txtbuf, &start, &end); gtk_text_buffer_delete(txtbuf, &start, &end); gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text), 15); // clear buffer g_free(logger.link_buf); logger.link_buf = (uint16_t *)g_malloc0(logger.link_size * sizeof(uint16_t)); logger.link_ptr = 0; } GLADE_CB void on_button12_clicked (GtkButton *button, gpointer user_data) { gtk_widget_destroy(GTK_WIDGET(button)); } GLADE_CB void ll_spinbutton1_changed (GtkEditable *editable, gpointer user_data) { if(!logger_enabled) logger.link_size = 1024 * gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(editable)); } tiemu-3.03-nogdb+dfsg/src/gui/logger/log_link.h000066400000000000000000000022071220314353500213700ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: manpage.h 1455 2005-05-31 18:38:03Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint display_loglink_dbox(); tiemu-3.03-nogdb+dfsg/src/gui/main.c000066400000000000000000000256001220314353500172340ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: main.c 2630 2007-08-23 14:13:14Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * Copyright (c) 2007, Peter Fernandes * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #ifdef __WIN32__ #undef setjmp extern int asm_setjmp(jmp_buf b); #define setjmp asm_setjmp #include "oleaut_c.h" #endif #if WITH_KDE #include "kde.h" #endif #if WITH_DBUS #include "dbus_ipc.h" #endif #include "intl.h" #include "tilibs.h" #include "struct.h" #include "calc.h" #include "version.h" #include "cmdline.h" #include "files.h" #include "rcfile.h" #include "ti68k_int.h" #include "logging.h" #include "engine.h" #include "refresh.h" #include "calc.h" #include "wizard.h" #include "popup.h" #include "splash.h" #include "tie_error.h" #include "dboxes.h" #include "dbg_all.h" #include "romversion.h" #include "fs_misc.h" #ifndef NO_SOUND #include "audio.h" #endif #ifndef NO_GDB #include "gdbcall.h" #include "../gdb/gdb/main.h" #include "../gdb/gdb/gdb_string.h" #ifndef PARAMS #define PARAMS(x) x #endif #define READLINE_LIBRARY #include "../gdb/readline/readline.h" void gdbtk_hide_insight(void); void gdbtk_delete_interp(void); static void start_insight_timer(void); static void stop_insight_timer(void); static gint gdbtk_hide_insight_and_run_wrapper(gpointer data); #endif ScrOptions options2; TieOptions options; // general tiemu options jmp_buf quit_gdb; // longjmp target used when quitting GDB /* Special */ static gint exit_loop = 0; void exit_main_loop(void) { exit_loop = !0; } static void my_log_handler (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) {} /* Main function */ extern char *file_to_send; int main(int argc, char **argv) { int err; /* Do primary initializations */ /* Display program version */ tiemu_version(); /* Initialize platform independant paths */ initialize_paths(); /* Init i18n support */ #ifdef ENABLE_NLS tiemu_info("setlocale: <%s>", setlocale(LC_ALL, "")); tiemu_info("bindtextdomain: <%s>", bindtextdomain(PACKAGE, inst_paths.locale_dir)); bind_textdomain_codeset(PACKAGE, "UTF-8"/*"ISO-8859-15"*/); tiemu_info("textdomain: <%s>", textdomain(PACKAGE)); #endif /* Initialize/reload config */ rcfile_default(); // (step 2) rcfile_read(); /* Scan and modify command line */ scan_cmdline(argc, argv); #ifndef NO_SOUND //init audio lib if(audio_init()) { tiemu_warning(_("Unable to initialize audio, sound will not play\n")); audioerr=1; } #endif /* Init GTK+ toolkit */ gtk_init(&argc, &argv); add_pixmap_directory(inst_paths.pixmap_dir); /* Get rid of glib, gdk, gtk warnings when compiled in Release mode */ #if !defined(_DEBUG) g_log_set_handler ("GLib", G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, my_log_handler, NULL); g_log_set_handler ("Gdk", G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, my_log_handler, NULL); g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, my_log_handler, NULL); g_log_set_handler ("GLib", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, my_log_handler, NULL); #endif /* Set splash screen */ #ifndef __IPAQ__ splash_screen_start(); splash_screen_set_label(_("Initializing GTK+...")); #endif #if WITH_KDE splash_screen_set_label(_("Initializing KDE...")); sp_kde_init(argc, argv, "tiemu", _("TiEmu"), VERSION, _("TI calculator emulator"), "Copyright (c) 2000, Thomas Corvazier, Romain Lievin\nCopyright (c) 2001-2002, Romain Lievin, Julien Blache\nCopyright (c) 2003-2004, Romain Lievin\nCopyright (c) 2005-2007, Romain Lievin, Kevin Kofler\nCopyright (c) 2007, Peter Fernandes", "http://lpg.ticalc.org/prj_tiemu/", "gtktiemu-users@lists.sf.net"); atexit(sp_kde_finish); g_timeout_add(26, sp_kde_process_qt_events, NULL); #endif #if WITH_DBUS splash_screen_set_label(_("Initializing D-Bus...")); dbus_init(); atexit(dbus_finish); #endif #ifdef __WIN32__ splash_screen_set_label(_("Initializing OLE...")); oleaut_init(); atexit(oleaut_finish); #endif /* Check the version of libraries */ splash_screen_set_label(_("Initializing TiLP framework...")); if (strcmp(ticonv_version_get(), TIEMU_REQUIRES_LIBCONV_VERSION) < 0) { tiemu_warning(_("libticonv library version <%s> mini required (<%s> found)."), TIEMU_REQUIRES_LIBCONV_VERSION, ticonv_version_get()); msg_box1(_("Error"), _("libticonv: version mismatches.")); exit(-1); } if (strcmp(tifiles_version_get(), TIEMU_REQUIRES_LIBFILES_VERSION) < 0) { tiemu_warning(_("libtifiles library version <%s> mini required (<%s> found)."), TIEMU_REQUIRES_LIBFILES_VERSION, tifiles_version_get()); msg_box1(_("Error"), _("libtifiles: version mismatches.")); exit(-1); } if (strcmp(ticables_version_get(), TIEMU_REQUIRES_LIBCABLES_VERSION) < 0) { tiemu_warning(_("libticables library version <%s> mini required (<%s> found)."), TIEMU_REQUIRES_LIBCABLES_VERSION, ticables_version_get()); msg_box1(_("Error"), _("libticables: version mismatches.")); exit(-1); } if (strcmp(ticalcs_version_get(), TIEMU_REQUIRES_LIBCALCS_VERSION) < 0) { tiemu_warning(_("libticalcs library version <%s> mini required (<%s> found)."), TIEMU_REQUIRES_LIBCALCS_VERSION, ticalcs_version_get()); msg_box1(_("Error"), _("libticalcs: version mismatches.")); exit(-1); } /* Search for dumps or upgrades to convert (in the image directory) */ splash_screen_set_label(_("Searching for ROM dumps...")); err = ti68k_scan_files(inst_paths.img_dir, inst_paths.img_dir, !0); handle_error(); /* Attempt to load an image (step 3) */ while(!exit_loop) { /* Windows follows the locale settings even for basic stdio I/O functions. This is an annoyance for floating-point numbers in GDB, so we override it here. Unfortunately, this disease seems to have spread to glibc as well recently. */ setlocale(LC_NUMERIC, "C"); err = ti68k_load_image(params.rom_file); if(err) { rescan: if(ti68k_find_image(inst_paths.img_dir, NULL)) { // search for an available image to use if(display_romversion_dbox(TRUE) == -1) goto wizard; } else { // launch wizard wizard: display_wizard_dbox(); while(!wizard_ok) GTK_REFRESH(); if(wizard_ok == 2) goto rescan; g_free(params.rom_file); params.rom_file = g_strdup(wizard_rom); g_free(wizard_rom); } splash_screen_set_label(_("Loading image...")); err = ti68k_load_image(params.rom_file); handle_error(); } /* Initialize emulation engine (step 4) */ splash_screen_set_label(_("Initializing m68k emulation engine...")); err = ti68k_init(); handle_error(); if(err) return -1; err = hid_init(); handle_error(); if(err) return -1; /* Load FLASH upgrade (if any) */ if(params.tib_file != NULL) { err = ti68k_load_upgrade(params.tib_file); handle_error(); } /* Override refresh functions of the ticalcs2 library (must be done after init of ti68k engine) */ tiemu_update_set_gtk(); /* Reset emulation engine (step 5) */ ti68k_reset(); /* Load calculator state image */ splash_screen_set_label(_("Loading previously saved state...")); if(params.sav_file != NULL) { err = ti68k_state_load(params.sav_file); handle_error(); } /* Cache debugger windows to speed-up display and install custom event */ #ifndef __IPAQ__ splash_screen_set_label(_("Pre-loading debugger...")); gtk_debugger_preload(); #endif /* Check for a file to send */ if(file_to_send) { if(!img_loaded || !ti68k_linkport_ready()) break; fs_send_file(file_to_send); g_free(file_to_send); } /* Start emulation engine and run main loop */ splash_screen_stop(); #ifdef NO_GDB engine_start(); gtk_main(); engine_stop(); #else /* Run Insight GDB */ start_insight_timer(); if (setjmp(quit_gdb) == 0) { struct captured_main_args args; memset (&args, 0, sizeof args); args.argc = argc; args.argv = argv; args.use_windows = 1; args.interpreter_p = "insight"; g_idle_add(gdbtk_hide_insight_and_run_wrapper, NULL); gdb_main (&args); } stop_insight_timer(); /* Clean up in case we interrupted GDB during command-line parsing */ rl_callback_handler_remove(); #endif err = hid_exit(); handle_error(); err = ti68k_exit(); handle_error(); ti68k_unload_image_or_upgrade(); } #ifndef NO_GDB gdbtk_delete_interp(); #endif return 0; } /* These functions are used by Insight to enable/disable its UI hook. */ #ifndef NO_GDB int x_event(int); static guint gdbtk_timer_id = 0; static gint tiemu_x_event_wrapper(gpointer data) { x_event(0); return TRUE; } static void start_insight_timer(void) { if (!gdbtk_timer_id) gdbtk_timer_id = g_timeout_add(25, tiemu_x_event_wrapper, NULL); /* 25 ms */ } static void stop_insight_timer(void) { if (gdbtk_timer_id) { g_source_remove(gdbtk_timer_id); gdbtk_timer_id = 0; } } static gint gdbtk_hide_insight_and_run_wrapper(gpointer data) { gdbtk_hide_insight(); gdbcall_run(); return FALSE; } #endif /* If GtkTiEmu is compiled in console mode (_CONSOLE), then we use the 'main' entry point. If GtkTiEmu is compiled as a windowed application (_WINDOWS), then we use the 'WinMain' entry point. */ #if defined(__WIN32__) && defined(_WINDOWS)// && !defined(_CONSOLE) #ifdef __MINGW32__ #include #endif int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return main(__argc, __argv); } #endif tiemu-3.03-nogdb+dfsg/src/gui/manpage.c000066400000000000000000000047761220314353500177330ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: manpage.c 2649 2007-09-17 15:35:08Z roms $ */ /* tilp - Ti Linking Program * Copyright (C) 1999-2004 Romain Lievin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include #include #include #include #include "intl.h" #include "manpage.h" #include "paths.h" #include "engine.h" gint display_manpage_dbox() { GladeXML *xml; GtkWidget *dbox; GtkTextBuffer *txtbuf; GtkWidget *text; FILE *fd; gchar *filename; gchar buffer[32768]; gint len = 0; struct stat stbuf; gint result; PangoFontDescription *font_desc; filename = g_strconcat(inst_paths.manpage_dir, "Manpage.txt", NULL); if (access(filename, F_OK) == 0) { if (stat(filename, &stbuf) != -1) { len = stbuf.st_size; len -= 2; } if ((fd = fopen(filename, "r")) != NULL) { memset(buffer, 0, sizeof(buffer)); len = fread(buffer, 1, len, fd); fclose(fd); } } xml = glade_xml_new (tilp_paths_build_glade("manpage-2.glade"), "manpage_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "manpage_dbox"); text = glade_xml_get_widget(xml, "textview1"); // Change font font_desc = pango_font_description_from_string ("Courier"); gtk_widget_modify_font (text, font_desc); pango_font_description_free (font_desc); // Set text txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)); gtk_text_buffer_set_text(txtbuf, buffer, len); while (gtk_events_pending()) gtk_main_iteration(); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: break; default: break; } gtk_widget_destroy(dbox); return 0; } tiemu-3.03-nogdb+dfsg/src/gui/manpage.h000066400000000000000000000021531220314353500177230ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: manpage.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint display_manpage_dbox(); tiemu-3.03-nogdb+dfsg/src/gui/pbars.c000066400000000000000000000134461220314353500174240ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: pbars.c 2385 2007-03-12 21:04:20Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include "intl.h" #include "support.h" #include "pbars.h" #include "struct.h" #include "tilibs.h" struct progress_window p_win = { 0 }; static GtkWidget *pbar_window = NULL; extern CalcUpdate calc_update; static void reset_counters(void) { calc_update.cnt1 = calc_update.max1 = 0; calc_update.cnt2 = calc_update.max2 = 0; calc_update.cnt3 = calc_update.max3 = 1; calc_update.cancel = 0; } /* Create a window with 1 progress bar */ void create_pbar_type1(const gchar *title) { GladeXML *xml; reset_counters(); xml = glade_xml_new (tilp_paths_build_glade("pbars-2.glade"), "pbar1_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); pbar_window = glade_xml_get_widget(xml, "pbar1_dbox"); gtk_window_set_title(GTK_WINDOW(pbar_window), title); p_win.pbar1 = glade_xml_get_widget(xml, "progressbar10"); p_win.label_rate = glade_xml_get_widget(xml, "label11"); gtk_widget_show_all(pbar_window); } /* Create a window with 1 label */ void create_pbar_type2(const gchar *title) { GladeXML *xml; reset_counters(); xml = glade_xml_new (tilp_paths_build_glade("pbars-2.glade"), "pbar2_dbox", PACKAGE); if (!xml) g_error("GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); pbar_window = glade_xml_get_widget(xml, "pbar2_dbox"); gtk_window_set_title(GTK_WINDOW(pbar_window), title); p_win.label = glade_xml_get_widget(xml, "label20"); gtk_widget_show_all(pbar_window); } /* Create a window with 2 progress bars */ void create_pbar_type3(const gchar *title) { GladeXML *xml; reset_counters(); xml = glade_xml_new (tilp_paths_build_glade("pbars-2.glade"), "pbar3_dbox", PACKAGE); if (!xml) g_error("GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); pbar_window = glade_xml_get_widget(xml, "pbar3_dbox"); gtk_window_set_title(GTK_WINDOW(pbar_window), title); p_win.pbar2 = glade_xml_get_widget(xml, "progressbar30"); p_win.pbar1 = glade_xml_get_widget(xml, "progressbar31"); p_win.label_rate = glade_xml_get_widget(xml, "label32"); gtk_widget_show_all(pbar_window); } /* Create a window with a 1 progress bar and 1 label */ void create_pbar_type4(const gchar *title) { GladeXML *xml; reset_counters(); xml = glade_xml_new (tilp_paths_build_glade("pbars-2.glade"), "pbar4_dbox", PACKAGE); if (!xml) g_error("GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); pbar_window = glade_xml_get_widget(xml, "pbar4_dbox"); gtk_window_set_title(GTK_WINDOW(pbar_window), title); p_win.label_part = glade_xml_get_widget(xml, "label41"); p_win.label = glade_xml_get_widget(xml, "label42"); p_win.pbar1 = glade_xml_get_widget(xml, "progressbar40"); p_win.label_rate = glade_xml_get_widget(xml, "label43"); gtk_widget_show_all(pbar_window); } /* Create a window with 2 progress bars and 1 label */ void create_pbar_type5(const gchar *title) { GladeXML *xml; reset_counters(); xml = glade_xml_new (tilp_paths_build_glade("pbars-2.glade"), "pbar5_dbox", PACKAGE); if (!xml) g_error("GUI loading failed !\n"); glade_xml_signal_autoconnect(xml); pbar_window = glade_xml_get_widget(xml, "pbar5_dbox"); gtk_window_set_title(GTK_WINDOW(pbar_window), title); p_win.label_part = glade_xml_get_widget(xml, "label52"); p_win.label = glade_xml_get_widget(xml, "label53"); p_win.pbar2 = glade_xml_get_widget(xml, "progressbar50"); p_win.pbar1 = glade_xml_get_widget(xml, "progressbar51"); p_win.label_rate = glade_xml_get_widget(xml, "label54"); gtk_widget_show_all(pbar_window); } /* Create a pbar window */ void create_pbar(int type, const gchar *title) { switch(type) { case 1: create_pbar_type1(title); break; case 2: create_pbar_type2(title); break; case 3: create_pbar_type3(title); break; case 4: create_pbar_type4(title); break; case 5: create_pbar_type5(title); break; default: break; } } /* Destroy a pbar window */ void destroy_pbar(void) { p_win.pbar1 = NULL; p_win.pbar2 = NULL; p_win.label = NULL; p_win.label_part = NULL; p_win.label_rate = NULL; if (pbar_window) gtk_widget_destroy(pbar_window); pbar_window = NULL; } GLADE_CB void on_pbar_okbutton1_pressed(GtkButton * button, gpointer user_data) { calc_update.cancel = 1; } /* Get list of counters to refresh */ int tilp_pbar_type(int op) { extern CalcHandle* calc_handle; const char **array = calc_handle->calc->counters; const char *str = array[op]; if(!strcmp(str, "1P")) return 1; else if(!strcmp(str, "1L")) return 2; else if(!strcmp(str, "2P")) return 3; else if(!strcmp(str, "1P1L")) return 4; else if(!strcmp(str, "2P1L")) return 5; return 0; } tiemu-3.03-nogdb+dfsg/src/gui/pbars.h000066400000000000000000000033311220314353500174210ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: pbars.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include "support.h" extern struct progress_window { GtkWidget* window; GtkWidget* pbar1; GtkWidget* pbar2; GtkWidget* label; GtkWidget* label_rate; GtkWidget* label_part; } p_win; void create_pbar_type1(const gchar* title); void create_pbar_type2(const gchar* title); void create_pbar_type3(const gchar* title); void create_pbar_type4(const gchar* title); void create_pbar_type5(const gchar* title); void create_pbar(int type, const gchar * title); void destroy_pbar(void); GLADE_CB void on_pbar_okbutton1_pressed(GtkButton* button, gpointer user_data); int tilp_pbar_type(int op); #define create_pbar_(t,s) create_pbar(tilp_pbar_type(t),(s)) tiemu-3.03-nogdb+dfsg/src/gui/quicksend.c000066400000000000000000000072131220314353500202760ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: scroptions.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include "intl.h" #include "support.h" #include "paths.h" #include "struct.h" #include "ti68k_int.h" #include "dboxes.h" static char *tmp_file = NULL; static int tmp_enabled = 0; static GtkWidget *fcb = NULL; gint display_quicksend_dbox() { GladeXML *xml; GtkWidget *dbox; GtkWidget *data; gint result; xml = glade_xml_new (tilp_paths_build_glade("quicksend-2.glade"), "quicksend_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "quicksend_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); tmp_enabled = options.qs_enabled; tmp_file = g_strdup(options.qs_file); fcb = glade_xml_get_widget(xml, "filechooserbutton1"); gtk_widget_set_sensitive(fcb, tmp_enabled && tmp_file); if(tmp_file && strlen(tmp_file)) gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(fcb), tmp_file); // filter wildcards to set //"*.89?;*.92?;*.9x?;*.9X?;*.v2?;*.V2?;*.tig" data = glade_xml_get_widget(xml, "checkbutton1"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), tmp_enabled); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: options.qs_enabled = tmp_enabled; g_free(options.qs_file); options.qs_file = tmp_file; break; default: break; } gtk_widget_destroy(dbox); return 0; } GLADE_CB void qs_checkbutton1_toggled (GtkToggleButton *togglebutton, gpointer user_data) { tmp_enabled = gtk_toggle_button_get_active(togglebutton); if(fcb) gtk_widget_set_sensitive(fcb, tmp_enabled); } GLADE_CB void qs_filechooserbutton1_current_folder_changed (GtkFileChooser *filechooser, gpointer user_data) { gchar *fname = gtk_file_chooser_get_filename (filechooser); if(!fname) return; if(!tifiles_file_is_ti(fname) || !tifiles_calc_is_ti9x(tifiles_file_get_model(fname)) || !tifiles_file_test(fname, TIFILE_REGULAR, CALC_NONE)) { g_free(tmp_file); tmp_file = NULL; msg_box1(_("Error"), _("This file is not a valid TI file.")); return; } g_free(tmp_file); tmp_file = g_strdup(fname); // dup or copy??? } /* */ tiemu-3.03-nogdb+dfsg/src/gui/quicksend.h000066400000000000000000000022051220314353500202770ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include char *qs_filename; int qs_enabled; gint display_quicksend_dbox(); tiemu-3.03-nogdb+dfsg/src/gui/refresh.c000066400000000000000000000073471220314353500177560ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: refresh.c 2349 2007-02-09 11:21:47Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include "intl.h" #include "dboxes.h" #include "tilibs.h" #include "refresh.h" #include "pbars.h" extern CalcUpdate calc_update; static void gt_start(void) { calc_update.cnt1 = calc_update.max1 = 0; calc_update.cnt2 = calc_update.max2 = 0; calc_update.cnt3 = calc_update.max3 = 0; } static void gt_stop(void) { calc_update.cnt1 = calc_update.max1 = 0; calc_update.cnt2 = calc_update.max2 = 0; calc_update.cnt3 = calc_update.max3 = 0; } static void filter_shift(void); static gfloat filter_compute(gfloat input); static void refresh_pbar1(void) { gchar buffer[32]; gfloat rate, avg; if (p_win.pbar1 != NULL) { if(calc_update.cnt1 > calc_update.max1) calc_update.cnt1 = calc_update.max1; if(calc_update.max1 != 0) gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(p_win.pbar1), (gdouble)calc_update.cnt1 / calc_update.max1); if(p_win.label_rate != NULL) { rate = calc_update.rate; filter_shift(); avg = filter_compute(rate); g_snprintf(buffer, 32, "Rate: %1.1f Kbytes/s", avg); gtk_label_set_text(GTK_LABEL(p_win.label_rate), buffer); } GTK_REFRESH(); } } static void refresh_pbar2(void) { if (p_win.pbar2 != NULL) { if(calc_update.cnt2 > calc_update.max2) calc_update.cnt2 = calc_update.max2; if(calc_update.max2 != 0) gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(p_win.pbar2), (gdouble)calc_update.cnt2 / calc_update.max2); GTK_REFRESH(); } } static void refresh_pbar3(void) { if(p_win.label_part != NULL) { gchar *str; str = g_strdup_printf("%i/%i: ", calc_update.cnt3, calc_update.max3); gtk_label_set_text(GTK_LABEL(p_win.label_part), str); GTK_REFRESH(); } } static void gt_pbar(void) { refresh_pbar1(); refresh_pbar2(); refresh_pbar3(); } static void gt_label(void) { if (p_win.label == NULL) return; gtk_label_set_text(GTK_LABEL(p_win.label), calc_update.text); GTK_REFRESH(); } static void gt_refresh(void) { GTK_REFRESH(); } CalcUpdate calc_update = { "", 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, gt_start, gt_stop, gt_refresh, gt_pbar, gt_label, }; void tiemu_update_set_gtk(void) { extern CalcHandle *calc_handle; // defined in dbus.c ticalcs_update_set(calc_handle, &calc_update); } ///// misc static gfloat filter[8] = { 0 }; static void filter_shift(void) { int i; for(i=7; i>0; i--) filter[i] = filter[i-1]; } static gfloat filter_compute(gfloat input) { int i; gfloat avg, min, max; avg = min = max = 0.0; filter[0] = input; for(i=0; i<7; i++) { if(filter[i] < min) min = filter[i]; if(filter[i] > max) max = filter[i]; avg += filter[i]; } avg -= min; avg -= max; return (avg / 6); } tiemu-3.03-nogdb+dfsg/src/gui/refresh.h000066400000000000000000000023371220314353500177550ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: refresh.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef GTK_REFRESH_H #define GTK_REFRESH_H void tiemu_update_set_gtk(void); #define GTK_REFRESH() { while( gtk_events_pending() ) { gtk_main_iteration(); }} #endif tiemu-3.03-nogdb+dfsg/src/gui/release.c000066400000000000000000000051541220314353500177320ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: release.c 2649 2007-09-17 15:35:08Z roms $ */ /* TiEmu - a TI emulator * Copyright (C) 1999-2005 Romain Lievin * Copyright (C) 2005 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include #include #include #include #include "intl.h" #include "paths.h" #include "engine.h" gint display_release_dbox() { GladeXML *xml; GtkWidget *dbox; GtkTextBuffer *txtbuf; GtkWidget *text; FILE *fd; gchar *filename; gchar buffer[65536]; gint len = 0; struct stat stbuf; gint result; PangoFontDescription *font_desc; #ifdef _MSC_VER /* MSVC builds. MinGW builds use Linux file structures. */ filename = g_strconcat(inst_paths.base_dir, "Release.txt", NULL); #else /* */ filename = g_strconcat(inst_paths.base_dir, "RELEASE", NULL); #endif /* */ if (access(filename, F_OK) == 0) { if (stat(filename, &stbuf) != -1) { len = stbuf.st_size; } if ((fd = fopen(filename, "r")) != NULL) { memset(buffer, 0, sizeof(buffer)); len = fread(buffer, 1, len, fd); fclose(fd); } } xml = glade_xml_new(tilp_paths_build_glade("release-2.glade"), "release_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "release_dbox"); text = glade_xml_get_widget(xml, "textview1"); // Change font font_desc = pango_font_description_from_string ("Courier"); gtk_widget_modify_font (text, font_desc); pango_font_description_free (font_desc); // Set text txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)); gtk_text_buffer_set_text(txtbuf, buffer, len); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: break; default: break; } gtk_widget_destroy(dbox); return 0; } tiemu-3.03-nogdb+dfsg/src/gui/release.h000066400000000000000000000021561220314353500177360ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: release.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint display_release_dbox(void); tiemu-3.03-nogdb+dfsg/src/gui/romversion.c000066400000000000000000000201771220314353500205170ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: romversion.c 2753 2007-12-30 23:14:15Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include #include // unlink #include "support.h" #include "intl.h" #include "paths.h" #include "ti68k_int.h" #include "refresh.h" #include "struct.h" #include "dboxes.h" #include "fs_misc.h" #include "rcfile.h" #include "tie_error.h" #include "calc.h" GtkWidget *dbox; gchar *chosen_file = NULL; enum { COL_FILENAME, COL_CALC, COL_VERSION, COL_MEMORY, COL_SIZE, COL_TYPE, COL_HW }; #define CLIST_NVCOLS (7) #define CLIST_NCOLS (7) static void clist_selection_changed(GtkTreeSelection * sel, gpointer user_data) { GtkTreeModel *model; GtkTreeIter iter; if (gtk_tree_selection_get_selected (sel, &model, &iter)) { if (chosen_file != NULL) { g_free(chosen_file); chosen_file = NULL; } gtk_tree_model_get (model, &iter, 0, &chosen_file, -1); gtk_dialog_set_response_sensitive(GTK_DIALOG(dbox), GTK_RESPONSE_OK, TRUE); } } static GtkListStore* clist_create(GtkWidget *clist) { GtkTreeView *view = GTK_TREE_VIEW(clist); GtkListStore *list; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; gint i; const gchar *text[CLIST_NCOLS] = { _("Filename"), _("Model"), _("Version"), _("Type"), _("Size"), _("Boot"), _("Hardware") }; list = gtk_list_store_new(CLIST_NCOLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, -1); model = GTK_TREE_MODEL(list); gtk_tree_view_set_model(view, model); gtk_tree_view_set_headers_visible(view, TRUE); gtk_tree_view_set_headers_clickable(view, TRUE); gtk_tree_view_set_rules_hint(view, FALSE); for (i = 0; i < CLIST_NCOLS; i++) { renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, text[i], renderer, "text", i, NULL); } for (i = 0; i < CLIST_NCOLS; i++) { GtkTreeViewColumn *col; col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_resizable(col, TRUE); } selection = gtk_tree_view_get_selection(view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(clist_selection_changed), NULL); return list; } static void clist_populate(GtkListStore *store) { gchar *filename; FILE *fp; GtkTreeIter iter; struct stat s; // scan ROM images filename = g_strconcat(inst_paths.img_dir, CACHE_FILE, NULL); ti68k_scan_images(inst_paths.img_dir, filename); stat(filename, &s); if(s.st_size == 0) return; fp = fopen(filename, "rt"); if(fp == NULL) return; while(!feof(fp)) { gchar **row_text; char line[256]; if (!fgets(line, sizeof(line), fp) || feof(fp)) break; line[strlen(line) - 1] = '\0'; row_text = g_strsplit(line, ",", 7); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, row_text[0], 1, row_text[1], 2, row_text[2], 3, row_text[3], 4, row_text[4], 5, row_text[5], 6, row_text[6], -1); g_strfreev(row_text); } fclose(fp); } static void clist_refresh(GtkListStore *store) { gtk_list_store_clear(store); clist_populate(store); } gint display_romversion_dbox(gboolean file_only) { GladeXML *xml; GtkWidget *data; gint result; GtkListStore *store; xml = glade_xml_new (tilp_paths_build_glade("romversion-2.glade"), "romversion_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); // display list box dbox = glade_xml_get_widget(xml, "romversion_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); data = glade_xml_get_widget(xml, "clist1"); store = clist_create(data); clist_populate(store); // run main box gtk_dialog_set_response_sensitive(GTK_DIALOG(dbox), GTK_RESPONSE_OK, FALSE); result = gtk_dialog_run(GTK_DIALOG(dbox)); gtk_widget_destroy(dbox); switch (result) { case GTK_RESPONSE_OK: if(chosen_file == NULL) break; if(!ti68k_is_a_img_file(chosen_file)) break; // Remove previous tib file g_free(params.tib_file); params.tib_file = g_strconcat("", NULL); // Set new image g_free(params.rom_file); params.rom_file = g_strconcat(inst_paths.img_dir, chosen_file, NULL); g_free(chosen_file); chosen_file = NULL; if(file_only) return 0; // Restart engine by exiting the GTK loop g_free(params.sav_file); params.sav_file = g_strdup(""); while(gtk_events_pending()) gtk_main_iteration(); gtk_main_quit(); break; default: if(file_only) return -1; break; } return 0; } GLADE_CB void on_romversion_add1_clicked (GtkButton *button, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(button); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); display_import_romversion_dbox(); clist_refresh(store); } GLADE_CB void on_romversion_del1_clicked (GtkButton *button, gpointer user_data) { GtkTreeView *view = GTK_TREE_VIEW(button); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkListStore *store = GTK_LIST_STORE(model); GtkTreeSelection *selection = gtk_tree_view_get_selection(view); GtkTreeIter iter; gchar *filename; gchar *path; if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_tree_model_get(model, &iter, COL_FILENAME, &filename, -1); path = g_strconcat(inst_paths.img_dir, filename, NULL); // delete unlink(path); g_free(filename); g_free(path); } clist_refresh(store); } GLADE_CB gboolean on_romversion_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { #if 1 GtkTreeView *view = GTK_TREE_VIEW(user_data); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeViewColumn *column; GtkTreePath *path; GtkTreeIter iter; gboolean ret; if (event->type != GDK_2BUTTON_PRESS) // double-click ? return FALSE; else { // retrieve selection gint tx = (gint) event->x; gint ty = (gint) event->y; gint cx, cy; ret = gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, &cy); if(ret == FALSE) return FALSE; if (!gtk_tree_model_get_iter(model, &iter, path)) return FALSE; gtk_tree_path_free(path); g_free(chosen_file); gtk_tree_model_get(model, &iter, COL_FILENAME, &chosen_file, -1); gtk_dialog_response(GTK_DIALOG(widget), GTK_RESPONSE_OK); return TRUE; } #endif return FALSE; } tiemu-3.03-nogdb+dfsg/src/gui/romversion.h000066400000000000000000000021251220314353500205150ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint display_romversion_dbox(gboolean file_only); tiemu-3.03-nogdb+dfsg/src/gui/scroptions.c000066400000000000000000000217421220314353500205160ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: scroptions.c 2753 2007-12-30 23:14:15Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include "intl.h" #include "support.h" #include "paths.h" #include "struct.h" //#include "skinops.h" #include "ti68k_int.h" #include "screenshot.h" static ScrOptions tmp_options; static GtkWidget *frame = NULL; static GtkWidget *label = NULL; void refresh_label(void); gint display_scroptions_dbox() { GladeXML *xml; GtkWidget *dbox; GtkWidget *data; gint result; xml = glade_xml_new (tilp_paths_build_glade("scroptions-2.glade"), "scroptions_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "scroptions_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); memcpy(&tmp_options, &options2, sizeof(ScrOptions)); tmp_options.file = g_strdup(options2.file); tmp_options.folder = g_strdup(options2.folder); frame = glade_xml_get_widget(xml, "frame5"); gtk_widget_set_sensitive(frame, tmp_options.size == IMG_LCD); switch (tmp_options.format) { case IMG_JPG: data = glade_xml_get_widget(xml, "radiobutton30"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; case IMG_PNG: data = glade_xml_get_widget(xml, "radiobutton31"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; case IMG_ICO: data = glade_xml_get_widget(xml, "radiobutton32"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; case IMG_EPS: data = glade_xml_get_widget(xml, "radiobutton33"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; case IMG_PDF: data = glade_xml_get_widget(xml, "radiobutton34"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; case IMG_BMP: data = glade_xml_get_widget(xml, "radiobutton35"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; } switch (tmp_options.type) { case IMG_BW: data = glade_xml_get_widget(xml, "radiobutton10"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; case IMG_COL: data = glade_xml_get_widget(xml, "radiobutton11"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; } switch (tmp_options.size) { case IMG_LCD: data = glade_xml_get_widget(xml, "radiobutton20"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; case IMG_SKIN: data = glade_xml_get_widget(xml, "radiobutton21"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), TRUE); break; } data = glade_xml_get_widget(xml, "spinbutton1"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(data), tmp_options.shots); data = glade_xml_get_widget(xml, "spinbutton2"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(data), tmp_options.skips); label = glade_xml_get_widget(xml, "label10"); refresh_label(); data = glade_xml_get_widget(xml, "entry10"); gtk_entry_set_text(GTK_ENTRY(data), tmp_options.file); data = glade_xml_get_widget(xml, "filechooserbutton1"); gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (data), tmp_options.folder); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: g_free(options2.file); g_free(options2.folder); memcpy(&options2, &tmp_options, sizeof(ScrOptions)); options2.file = g_strdup(tmp_options.file); g_free(tmp_options.file); options2.folder = g_strdup(tmp_options.folder); g_free(tmp_options.folder); break; default: break; } frame = label = NULL; gtk_widget_destroy(dbox); return 0; } void refresh_label(void) { gchar *ext = "???"; gchar *str; if(label == NULL) return; switch(tmp_options.format) { case IMG_JPG: ext = "jpg"; break; case IMG_PNG: ext = "png"; break; case IMG_ICO: ext = "ico"; break; case IMG_EPS: ext = "eps"; break; case IMG_PDF: ext = "pdf"; break; case IMG_BMP: ext = "bmp"; break; default: break; } str = g_strdup_printf("%03i.%s", tmp_options.counter, ext); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); } GLADE_CB void on_scopt_radiobutton10_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.type = IMG_BW; } GLADE_CB void on_scopt_radiobutton11_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.type = IMG_COL; } GLADE_CB void on_scopt_radiobutton20_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.size = IMG_LCD; gtk_widget_set_sensitive(frame, tmp_options.size == IMG_LCD); } GLADE_CB void on_scopt_radiobutton21_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.size = IMG_SKIN; gtk_widget_set_sensitive(frame, tmp_options.size == IMG_LCD); } GLADE_CB void on_scopt_radiobutton30_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.format = IMG_JPG; refresh_label(); } GLADE_CB void on_scopt_radiobutton31_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.format = IMG_PNG; refresh_label(); } GLADE_CB void on_scopt_radiobutton32_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.format = IMG_ICO; refresh_label(); } GLADE_CB void on_scopt_radiobutton33_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.format = IMG_EPS; refresh_label(); } GLADE_CB void on_scopt_radiobutton34_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.format = IMG_PDF; refresh_label(); } GLADE_CB void on_scopt_radiobutton35_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if(gtk_toggle_button_get_active(togglebutton)) tmp_options.format = IMG_BMP; refresh_label(); } GLADE_CB void on_entry1_changed (GtkEditable *editable, gpointer user_data) { gchar *str; g_free(tmp_options.file); str = gtk_editable_get_chars(editable, 0, -1); tmp_options.file = g_strdup(str); g_free(str); refresh_label(); } GLADE_CB void on_filechooserbutton1_current_folder_changed (GtkFileChooser *filechooser, gpointer user_data) { gchar *fname = gtk_file_chooser_get_filename (filechooser); g_free(tmp_options.folder); tmp_options.folder = fname; } GLADE_CB void on_spinbutton1_changed (GtkEditable *editable, gpointer user_data) { tmp_options.shots = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(editable)); } GLADE_CB void on_spinbutton2_changed (GtkEditable *editable, gpointer user_data) { tmp_options.skips = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(editable)); } /* */ tiemu-3.03-nogdb+dfsg/src/gui/scroptions.h000066400000000000000000000021031220314353500205110ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint display_scroptions_dbox(); tiemu-3.03-nogdb+dfsg/src/gui/splash.c000066400000000000000000000057301220314353500176040ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: splash.c 2115 2006-05-24 14:14:08Z kevinkofler $ */ /* tilp - Ti Linking Program * Copyright (C) 1999-2004 Romain Lievin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif /* */ #include #include #include #include #include "intl.h" #include "version.h" #include "support.h" typedef struct { GtkWidget *window; GtkWidget *label; int valid; } TilpSplashScreen; static TilpSplashScreen splashscreen = { 0 }; GtkWidget *splash_screen_start(void) { GtkWidget *image, *vbox; GdkColor color; GdkPixbuf *pixbuf; if(splashscreen.valid) return splashscreen.window; splashscreen.window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(splashscreen.window), TIEMU_VERSION); gtk_window_set_position(GTK_WINDOW(splashscreen.window), GTK_WIN_POS_CENTER_ALWAYS); gtk_window_set_decorated(GTK_WINDOW(splashscreen.window), FALSE); gtk_window_set_role(GTK_WINDOW(splashscreen.window), "splash"); gtk_window_set_resizable(GTK_WINDOW(splashscreen.window), FALSE); gtk_window_set_default_size(GTK_WINDOW(splashscreen.window), 150, 150); color.red = 65535; color.blue = 65535; color.green = 65535; gtk_widget_modify_bg(splashscreen.window, GTK_STATE_NORMAL, &color); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(splashscreen.window), vbox); gtk_widget_show(vbox); splashscreen.label = gtk_label_new("starting TiEmu..."); gtk_box_pack_end(GTK_BOX(vbox), splashscreen.label, FALSE, FALSE, 0); gtk_widget_show(splashscreen.label); pixbuf = create_pixbuf("logo.xpm"); image = gtk_image_new_from_pixbuf(pixbuf); gtk_box_pack_end(GTK_BOX(vbox), image, FALSE, FALSE, 0); g_object_unref(pixbuf); gtk_widget_show(image); gtk_widget_show(splashscreen.window); while (gtk_events_pending()) { gtk_main_iteration(); } splashscreen.valid = !0; return splashscreen.window; } void splash_screen_stop(void) { if(!splashscreen.valid) return; gtk_widget_destroy(splashscreen.window); splashscreen.valid = 0; } void splash_screen_set_label(gchar * label) { if(!splashscreen.valid) return; gtk_label_set_text(GTK_LABEL(splashscreen.label), label); while (gtk_events_pending()) { gtk_main_iteration(); } } tiemu-3.03-nogdb+dfsg/src/gui/splash.h000066400000000000000000000022721220314353500176070ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: splash.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include void splash_screen_set_label(gchar * label); GtkWidget *splash_screen_start(); void splash_screen_stop(void); tiemu-3.03-nogdb+dfsg/src/gui/support.c000066400000000000000000000071511220314353500200250ustar00rootroot00000000000000/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include "intl.h" #include "support.h" GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name) { GtkWidget *parent, *found_widget; for (;;) { if (GTK_IS_MENU (widget)) parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); else parent = widget->parent; if (!parent) parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey"); if (parent == NULL) break; widget = parent; } found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget), widget_name); if (!found_widget) g_warning ("Widget not found: %s", widget_name); return found_widget; } static GList *pixmaps_directories = NULL; /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory) { pixmaps_directories = g_list_prepend (pixmaps_directories, g_strdup (directory)); } /* This is an internally used function to find pixmap files. */ static gchar* find_pixmap_file (const gchar *filename) { GList *elem; /* We step through each of the pixmaps directory to find it. */ elem = pixmaps_directories; while (elem) { gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data, G_DIR_SEPARATOR_S, filename); if (g_file_test (pathname, G_FILE_TEST_EXISTS)) return pathname; g_free (pathname); elem = elem->next; } return NULL; } /* This is an internally used function to create pixmaps. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename) { gchar *pathname = NULL; GtkWidget *pixmap; if (!filename || !filename[0]) return gtk_image_new (); pathname = find_pixmap_file (filename); if (!pathname) { g_warning (_("Couldn't find pixmap file: %s"), filename); return gtk_image_new (); } pixmap = gtk_image_new_from_file (pathname); g_free (pathname); return pixmap; } /* This is an internally used function to create pixmaps. */ GdkPixbuf* create_pixbuf (const gchar *filename) { gchar *pathname = NULL; GdkPixbuf *pixbuf; GError *error = NULL; if (!filename || !filename[0]) return NULL; pathname = find_pixmap_file (filename); if (!pathname) { g_warning (_("Couldn't find pixmap file: %s"), filename); return NULL; } pixbuf = gdk_pixbuf_new_from_file (pathname, &error); if (!pixbuf) { fprintf (stderr, "Failed to load pixbuf file: %s: %s\n", pathname, error->message); g_error_free (error); } g_free (pathname); return pixbuf; } /* This is used to set ATK action descriptions. */ void glade_set_atk_action_description (AtkAction *action, const gchar *action_name, const gchar *description) { gint n_actions, i; n_actions = atk_action_get_n_actions (action); for (i = 0; i < n_actions; i++) { if (!strcmp (atk_action_get_name (action, i), action_name)) atk_action_set_description (action, i, description); } } tiemu-3.03-nogdb+dfsg/src/gui/support.h000066400000000000000000000041511220314353500200270ustar00rootroot00000000000000/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include /* * Standard gettext macros. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif // GTK+ only (export callbacks for Glade linking at runtime) #if defined(__WIN32__) && !defined(HAVE_FVISIBILITY) # define GLADE_CB __declspec(dllexport) #elif defined(HAVE_FVISIBILITY) # define GLADE_CB __attribute__ ((visibility("default"))) #else # define GLADE_CB #endif /* * Public Functions. */ /* * This function returns a widget in a component created by Glade. * Call it with the toplevel widget in the component (i.e. a window/dialog), * or alternatively any widget in the component, and the name of the widget * you want returned. */ GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name); /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory); /* * Private Functions. */ /* This is used to create the pixmaps used in the interface. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename); /* This is used to create the pixbufs used in the interface. */ GdkPixbuf* create_pixbuf (const gchar *filename); /* This is used to set ATK action descriptions. */ void glade_set_atk_action_description (AtkAction *action, const gchar *action_name, const gchar *description); tiemu-3.03-nogdb+dfsg/src/gui/tsource.c000066400000000000000000000143631220314353500200000ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: tsource.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Custom g_timeout_xxx support. Timeout support provided by GLib is unusable for our job because: - we could start a new timeout from callback but this doesn't work because timeout finalizing wan be done at _any_ time, - if we want to modify timeout value on the fly, we can't, - it does not try to 'catch up' time lost in delays. Solution used: I have re-implemented GLib timeout but this version catch up time lost in delays (time spend in callback). Widely taken from gmain.c of GLib. */ #ifdef HAVE_CONFIG_H #include #endif #include typedef struct { GSource source; GTimeVal expiration; guint interval; } GTimeoutSource; static void g_timeout_set_expiration (GTimeoutSource *timeout_source, GTimeVal *current_time) { guint seconds = timeout_source->interval / 1000; guint msecs = timeout_source->interval - seconds * 1000; timeout_source->expiration.tv_sec = current_time->tv_sec + seconds; timeout_source->expiration.tv_usec = current_time->tv_usec + msecs * 1000; if (timeout_source->expiration.tv_usec >= 1000000) { timeout_source->expiration.tv_usec -= 1000000; timeout_source->expiration.tv_sec++; } } static gboolean g_timeout_prepare (GSource *source, gint *timeout) { glong sec; glong msec; GTimeVal current_time; GTimeoutSource *timeout_source = (GTimeoutSource *)source; g_source_get_current_time (source, ¤t_time); sec = timeout_source->expiration.tv_sec - current_time.tv_sec; msec = (timeout_source->expiration.tv_usec - current_time.tv_usec) / 1000; /* We do the following in a rather convoluted fashion to deal with * the fact that we don't have an integral type big enough to hold * the difference of two timevals in millseconds. */ if (sec < 0 || (sec == 0 && msec < 0)) msec = 0; else { glong interval_sec = timeout_source->interval / 1000; glong interval_msec = timeout_source->interval % 1000; if (msec < 0) { msec += 1000; sec -= 1; } if (sec > interval_sec || (sec == interval_sec && msec > interval_msec)) { /* The system time has been set backwards, so we * reset the expiration time to now + timeout_source->interval; * this at least avoids hanging for long periods of time. */ g_timeout_set_expiration (timeout_source, ¤t_time); msec = MIN (G_MAXINT, timeout_source->interval); } else { msec = MIN (G_MAXINT, (guint)msec + 1000 * (guint)sec); } } *timeout = (gint)msec; return msec == 0; } static gboolean g_timeout_check (GSource *source) { GTimeVal current_time; GTimeoutSource *timeout_source = (GTimeoutSource *)source; g_source_get_current_time (source, ¤t_time); return ((timeout_source->expiration.tv_sec < current_time.tv_sec) || ((timeout_source->expiration.tv_sec == current_time.tv_sec) && (timeout_source->expiration.tv_usec <= current_time.tv_usec))); } static gboolean g_timeout_dispatch (GSource *source, GSourceFunc callback, gpointer user_data) { #if 0 // as GLib GTimeoutSource *timeout_source = (GTimeoutSource *)source; if (!callback) { g_warning ("Timeout source dispatched without callback\n" "You must call g_source_set_callback()."); return FALSE; } if (callback (user_data)) { GTimeVal current_time; g_source_get_current_time (source, ¤t_time); g_timeout_set_expiration (timeout_source, ¤t_time); return TRUE; } else return FALSE; #else GTimeoutSource *timeout_source = (GTimeoutSource *)source; GTimeVal current_time; g_source_get_current_time (source, ¤t_time); g_timeout_set_expiration (timeout_source, ¤t_time); return (callback (user_data)); #endif } GSourceFuncs g_timeout2_funcs = { g_timeout_prepare, g_timeout_check, g_timeout_dispatch, NULL }; GSource * g_timeout2_source_new (guint interval) { GSource *source = g_source_new (&g_timeout2_funcs, sizeof (GTimeoutSource)); GTimeoutSource *timeout_source = (GTimeoutSource *)source; GTimeVal current_time; timeout_source->interval = interval; g_get_current_time (¤t_time); g_timeout_set_expiration (timeout_source, ¤t_time); return source; } guint g_timeout2_add_full (gint priority, guint interval, GSourceFunc function, gpointer data, GDestroyNotify notify) { GSource *source; guint id; g_return_val_if_fail (function != NULL, 0); source = g_timeout2_source_new (interval); if (priority != G_PRIORITY_DEFAULT) g_source_set_priority (source, priority); g_source_set_callback (source, function, data, notify); id = g_source_attach (source, NULL); g_source_unref (source); return id; } guint g_timeout2_add (guint32 interval, GSourceFunc function, gpointer data) { return g_timeout2_add_full (G_PRIORITY_DEFAULT, interval, function, data, NULL); } // --- void g_timeout2_set_interval(guint source_id, guint32 interval) { GSource *source = g_main_context_find_source_by_id(g_main_context_default(), source_id); GTimeoutSource *timeout_source = (GTimeoutSource *)source; timeout_source->interval = interval; } tiemu-3.03-nogdb+dfsg/src/gui/tsource.h000066400000000000000000000027731220314353500200070ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: tsource.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TSOURCE_H__ #define __TSOURCE_H__ GSource * g_timeout2_source_new (guint interval); guint g_timeout2_add_full (gint priority, guint interval, GSourceFunc function, gpointer data, GDestroyNotify notify); guint g_timeout2_add (guint32 interval, GSourceFunc function, gpointer data); void g_timeout2_set_interval(guint source_id, guint32 interval); #endif tiemu-3.03-nogdb+dfsg/src/gui/wizard.c000066400000000000000000000177531220314353500176220ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: wizard.c 2753 2007-12-30 23:14:15Z kevinkofler $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2007, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "intl.h" #include "support.h" #include "struct.h" #include "dboxes.h" #include "wizard.h" //#include "engine.h" #include "filesel.h" #include "ti68k_int.h" #include "tie_error.h" #ifdef __WIN32__ # define strcasecmp _stricmp #endif gchar *wizard_rom = NULL; gint wizard_ok = FALSE; static gint action = 0; static gint display_step1_dbox(void); gint display_wz_rom_dbox(void); gint display_wz_tib_dbox(void); gint display_wizard_dbox(void) { return display_step1_dbox(); } static gint display_msg_dbox(void) { GladeXML *xml; GtkWidget *dbox; gint result; xml = glade_xml_new (tilp_paths_build_glade("wizard-2.glade"), "msg_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "msg_dbox"); result = gtk_dialog_run(GTK_DIALOG(dbox)); gtk_widget_destroy(dbox); exit(0); return 0; } static gint display_step1_dbox(void) { GladeXML *xml; GtkWidget *dbox; GtkWidget *data; gint result = 0; GtkWidget *dialog; xml = glade_xml_new (tilp_paths_build_glade("wizard-2.glade"), "step1_dbox", PACKAGE); if (!xml) g_error(_("comm.c: GUI loading failed !\n")); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "step1_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_APPLY, GTK_RESPONSE_CANCEL,-1); data = glade_xml_get_widget(xml, "applybutton1"); gtk_widget_hide(data); #ifdef __IPAQ__ // make menu smaller data = glade_xml_get_widget(xml, "label19"); gtk_widget_hide(data); data = glade_xml_get_widget(xml, "radiobutton1"); gtk_button_set_label(GTK_BUTTON(data), _("Use PedRom")); data = glade_xml_get_widget(xml, "radiobutton2"); gtk_button_set_label(GTK_BUTTON(data), _("Use FLASH OS")); data = glade_xml_get_widget(xml, "radiobutton3"); gtk_button_set_label(GTK_BUTTON(data), _("Use ROM dump")); data = glade_xml_get_widget(xml, "radiobutton4"); gtk_widget_hide(data); data = glade_xml_get_widget(xml, "label20"); gtk_widget_hide(data); #endif action = 1; // default button result = gtk_dialog_run(GTK_DIALOG(dbox)); if(result == GTK_RESPONSE_OK) { switch(action) { case 1: dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, _("Importing TIBs. Please wait...")); g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(dialog)); gtk_widget_show_all(GTK_WIDGET(dialog)); while(gtk_events_pending()) gtk_main_iteration(); ti68k_scan_files(inst_paths.rom_dir, inst_paths.img_dir, 0); gtk_widget_destroy(dialog); gtk_widget_destroy(dbox); wizard_ok = 2; break; case 2: gtk_widget_destroy(dbox); display_wz_tib_dbox(); break; case 3: gtk_widget_destroy(dbox); display_wz_rom_dbox(); break; case 4: gtk_widget_destroy(dbox); display_msg_dbox(); break; default: break; } } else { gtk_widget_destroy(dbox); exit(0); } return 0; } static gint display_step3_dbox(void) { GladeXML *xml; GtkWidget *dbox; GtkWidget *data; gint result; xml = glade_xml_new (tilp_paths_build_glade("wizard-2.glade"), "step3_dbox", PACKAGE); if (!xml) g_error(_("comm.c: GUI loading failed !\n")); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "step3_dbox"); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_APPLY, GTK_RESPONSE_CANCEL,-1); //data = glade_xml_get_widget(xml, "cancelbutton2"); //gtk_button_set_label(data, "<= Back"); data = glade_xml_get_widget(xml, "applybutton2"); gtk_widget_hide(data); //data = glade_xml_get_widget(xml, "okbutton2"); //gtk_button_set_label(data, "Next =>"); result = gtk_dialog_run(GTK_DIALOG(dbox)); if(result == GTK_RESPONSE_OK) { gtk_widget_destroy(dbox); wizard_ok = 1; } else { gtk_widget_destroy(dbox); exit(0); } return 0; } gint display_wait_dbox(void) { GladeXML *xml; GtkWidget *dbox; //GtkWidget *data; gint result; xml = glade_xml_new (tilp_paths_build_glade("wizard-2.glade"), "wait_dbox", PACKAGE); if (!xml) g_error(_("comm.c: GUI loading failed !\n")); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "wait_dbox"); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: break; default: break; } gtk_widget_destroy(dbox); return 0; } gint display_wz_rom_dbox(void) { const gchar *filename; gchar *dstname; int err; // get filename filename = (char *)create_fsel(inst_paths.rom_dir, NULL, "*.rom", FALSE); if (filename == NULL) { display_step1_dbox(); return -1; } if(!ti68k_is_a_rom_file(filename)) { msg_box1(_("Error"), _("Invalid ROM dump.")); display_step1_dbox(); return -1; } err = ti68k_convert_rom_to_image(filename, inst_paths.img_dir, &dstname); handle_error(); if (err) { display_step1_dbox(); return -1; } wizard_rom = g_strdup(dstname); g_free(dstname); display_step3_dbox(); return 0; } gint display_wz_tib_dbox(void) { const gchar *filename; gchar *dstname; int err; // get filename filename = (char *)create_fsel(inst_paths.rom_dir, NULL, "*.89u;*.9xu;*.v2u;*.tib", FALSE); if (filename == NULL) { display_step1_dbox(); return -1; } if(!ti68k_is_a_tib_file(filename)) { msg_box1(_("Error"), _("Invalid FLASH upgrade.")); display_step1_dbox(); return -1; } err = ti68k_convert_tib_to_image(filename, inst_paths.img_dir, &dstname, -1); handle_error(); if (err) { display_step1_dbox(); return -1; } wizard_rom = g_strdup(dstname); g_free(dstname); display_step3_dbox(); return 0; } GLADE_CB void step1_on_radiobutton1_toggled (GtkToggleButton *togglebutton, gpointer user_data) { action = 1; } GLADE_CB void step1_on_radiobutton2_toggled (GtkToggleButton *togglebutton, gpointer user_data) { action = 2; } GLADE_CB void step1_on_radiobutton3_toggled (GtkToggleButton *togglebutton, gpointer user_data) { action = 3; } GLADE_CB void step1_on_radiobutton4_toggled (GtkToggleButton *togglebutton, gpointer user_data) { action = 4; } tiemu-3.03-nogdb+dfsg/src/gui/wizard.h000066400000000000000000000021631220314353500176140ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id$ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include gint display_wizard_dbox(void); extern int wizard_ok; extern gchar *wizard_rom; tiemu-3.03-nogdb+dfsg/src/ipc/000077500000000000000000000000001220314353500161305ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/ipc/com/000077500000000000000000000000001220314353500167065ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/ipc/com/Makefile000066400000000000000000000015551220314353500203540ustar00rootroot00000000000000ifeq ($(OSTYPE),msys) CC ?= gcc DLLTOOL ?= dlltool else CC ?= i386-mingw32-gcc DLLTOOL ?= i386-mingw32-dlltool endif CFLAGS ?= -Os -s -fno-exceptions CFLAGS += -fno-strict-aliasing tiemups.dll: dlldata.o oleaut_p.o oleaut_i.o librpcrt4nt4.a $(CC) -shared $(CFLAGS) -o tiemups.dll -Wl,--enable-stdcall-fixup \ dlldata.o oleaut_p.o oleaut_i.o \ -lkernel32 -lrpcns4 -lrpcrt4 librpcrt4nt4.a -loleaut32 -luuid \ tiemups.def lib%.a: %.def $(DLLTOOL) $(DLLTOOL_FLAGS) --output-lib $@ --def $< oleaut_p.o: oleaut_p.c $(CC) -c $(CFLAGS) -O0 -fno-omit-frame-pointer \ -DWIN32 -D_WIN32_WINNT=0x0400 -DREGISTER_PROXY_DLL \ -Doleaut_ProxyFileInfo=tiemu_ProxyFileInfo \ oleaut_p.c .c.o: $(CC) -c $(CFLAGS) -DWIN32 -D_WIN32_WINNT=0x0400 -DREGISTER_PROXY_DLL \ $< clean: rm -f tiemups.dll dlldata.o oleaut_p.o oleaut_i.o librpcrt4nt4.a tiemu-3.03-nogdb+dfsg/src/ipc/com/dlldata.c000066400000000000000000000010501220314353500204530ustar00rootroot00000000000000/** WARNING: Do NOT regenerate this file with MIDL unless you know what you're doing! You need to replace "oleaut" with "tiemu". You have been warned! **/ #define PROXY_DELEGATION #include #ifdef __cplusplus extern "C" { #endif EXTERN_PROXY_FILE( tiemu ) PROXYFILE_LIST_START /* Start of list */ REFERENCE_PROXY_FILE( tiemu ), /* End of list */ PROXYFILE_LIST_END DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID ) #ifdef __cplusplus } /*extern "C" */ #endif /* end of generated dlldata file */ tiemu-3.03-nogdb+dfsg/src/ipc/com/oleaut.cpp000066400000000000000000000164341220314353500207130ustar00rootroot00000000000000/* OLE Automation interface for TiEmu * * Copyright (c) 2006-2008 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "oleaut.h" #include "oleaut_c.h" #include "ti68k_int.h" #include "fs_misc.h" #include "engine.h" #include "dbg_all.h" #include "m68k.h" class TiEmuOLE : public ITiEmuOLE { private: ITypeLib *typelib; unsigned refcount; bool registered; DWORD oleregister; public: TiEmuOLE(); ~TiEmuOLE(); STDMETHOD(QueryInterface)(REFIID,PVOID*); STDMETHOD_(ULONG,AddRef)(); STDMETHOD_(ULONG,Release)(); STDMETHOD(GetTypeInfoCount)(THIS_ UINT*); STDMETHOD(GetTypeInfo)(UINT,LCID,LPTYPEINFO*); STDMETHOD(GetIDsOfNames)(REFIID,LPOLESTR*,UINT,LCID,DISPID*); STDMETHOD(Invoke)(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*); STDMETHOD(image_loaded)(VARIANT_BOOL* ret); STDMETHOD(emulated_calc_type)(int* ret); STDMETHOD(emulated_hw_version)(int* ret); STDMETHOD(emulated_os_version)(BSTR* ret); STDMETHOD(ready_for_transfers)(VARIANT_BOOL* ret); STDMETHOD(send_file)(BSTR filename,VARIANT_BOOL* ret); STDMETHOD(debug_file)(BSTR filename,VARIANT_BOOL* ret); STDMETHOD(reset_calc)(VARIANT_BOOL clearmem,VARIANT_BOOL* ret); STDMETHOD(execute_command)(BSTR command,VARIANT_BOOL* ret); STDMETHOD(turn_calc_on)(VARIANT_BOOL* ret); STDMETHOD(enter_debugger)(VARIANT_BOOL* ret); }; TiEmuOLE::TiEmuOLE() : typelib(NULL), refcount(1) { // Load type library LoadRegTypeLib(LIBID_TiEmuOLELib, 1, 0, 0, &typelib); if (typelib) { // Register with OLE Automation registered = (RegisterActiveObject(this, CLSID_TiEmuOLE, ACTIVEOBJECT_STRONG, &oleregister) == S_OK); } else registered = false; } TiEmuOLE::~TiEmuOLE() { if (registered) { RevokeActiveObject(oleregister, NULL); CoDisconnectObject(this, 0); } if (typelib) typelib->Release(); } #define RETURN(retval) do {*ret=retval; return S_OK;} while (0) // IUnknown methods STDMETHODIMP TiEmuOLE::QueryInterface(REFIID iid,PVOID *ret) { if (iid==IID_IUnknown || iid==IID_IDispatch || iid == IID_ITiEmuOLE) RETURN(this); else { *ret=NULL; return E_NOINTERFACE; } } ULONG TiEmuOLE::AddRef() { return ++refcount; } ULONG TiEmuOLE::Release() { if (refcount) refcount--; return refcount; } // IDispatch methods STDMETHODIMP TiEmuOLE::GetTypeInfoCount(UINT *ret) { RETURN(1); } STDMETHODIMP TiEmuOLE::GetTypeInfo(UINT interfaceno, LCID lcid, LPTYPEINFO *ret) { return typelib->GetTypeInfoOfGuid(IID_ITiEmuOLE,ret); } STDMETHODIMP TiEmuOLE::GetIDsOfNames(REFIID iid, LPOLESTR *names, UINT count, LCID lcid, DISPID* ret) { ITypeInfo *typeinfo; HRESULT result; result=typelib->GetTypeInfoOfGuid(IID_ITiEmuOLE,&typeinfo); if (result) return result; result=DispGetIDsOfNames(typeinfo,names,count,ret); typeinfo->Release(); return result; } STDMETHODIMP TiEmuOLE::Invoke(DISPID dispid, REFIID iid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *ret, EXCEPINFO *excepinfo, UINT *error_argnum) { ITypeInfo *typeinfo; HRESULT result; result=typelib->GetTypeInfoOfGuid(IID_ITiEmuOLE,&typeinfo); if (result) return result; result=DispInvoke(this,typeinfo,dispid,flags,params,ret,excepinfo,error_argnum); typeinfo->Release(); return result; } // ITiEmuOLE methods STDMETHODIMP TiEmuOLE::image_loaded(VARIANT_BOOL *ret) { RETURN(img_loaded); } STDMETHODIMP TiEmuOLE::emulated_calc_type(int *ret) { if (img_loaded) RETURN(img_infos.calc_type); else RETURN(0); } STDMETHODIMP TiEmuOLE::emulated_hw_version(int *ret) { if (img_loaded) RETURN(img_infos.hw_type); else RETURN(0); } STDMETHODIMP TiEmuOLE::emulated_os_version(BSTR *ret) { if (img_loaded) { wchar_t *temp=(wchar_t *)g_utf8_to_utf16(img_infos.version,-1,NULL,NULL,NULL); BSTR result=SysAllocString(temp); g_free(temp); RETURN(result); } else RETURN(NULL); } STDMETHODIMP TiEmuOLE::ready_for_transfers(VARIANT_BOOL *ret) { RETURN((img_loaded && !engine_is_stopped() && ti68k_linkport_ready())); } STDMETHODIMP TiEmuOLE::send_file(BSTR filename, VARIANT_BOOL *ret) { if (img_loaded && !engine_is_stopped()) { engine_stop(); gchar *utf8=g_utf16_to_utf8((const gunichar2 *)filename,-1,NULL,NULL,NULL); fs_send_file(utf8); g_free(utf8); engine_start(); RETURN(TRUE); } else RETURN(FALSE); } STDMETHODIMP TiEmuOLE::debug_file(BSTR filename, VARIANT_BOOL *ret) { if (img_loaded && !engine_is_stopped()) { engine_stop(); gchar *utf8=g_utf16_to_utf8((const gunichar2 *)filename,-1,NULL,NULL,NULL); fs_send_file_and_debug_info(utf8); g_free(utf8); engine_start(); RETURN(TRUE); } else RETURN(FALSE); } STDMETHODIMP TiEmuOLE::reset_calc(VARIANT_BOOL clearram, VARIANT_BOOL *ret) { if (img_loaded) { engine_stop(); if(clearram) memset(tihw.ram, 0, tihw.ram_size); ti68k_reset(); if (dbg_on) gtk_debugger_close_async(); else engine_start(); RETURN(TRUE); } else RETURN(FALSE); } STDMETHODIMP TiEmuOLE::execute_command(BSTR command, VARIANT_BOOL *ret) { if (img_loaded) { VARIANT_BOOL result; gchar *temp; #ifdef __GNUC__ char ti[SysStringLen(command)+1]; ticonv_charset_utf16_to_ti_s(CALC_TI92, (const unsigned short *)command, ti); temp=g_strconcat("\f\r\r",ti,"\n",NULL); result=ti68k_kbd_push_chars(temp); #elif defined(_MSC_VER) char *ti=(char *)malloc(SysStringLen(command)+1); ticonv_charset_utf16_to_ti_s(CALC_TI92, (const unsigned short *)command, ti); temp=g_strconcat("\f\r\r",ti,"\n",NULL); result=ti68k_kbd_push_chars(temp); free(ti); #else char *ti=(char *)std::malloc(SysStringLen(command)+1); ticonv_charset_utf16_to_ti_s(CALC_TI92, (const unsigned short *)command, ti); temp=g_strconcat("\f\r\r",ti,"\n",NULL); result=ti68k_kbd_push_chars(temp); std::free(ti); #endif g_free(temp); RETURN(result); } else RETURN(FALSE); } STDMETHODIMP TiEmuOLE::turn_calc_on(VARIANT_BOOL *ret) { if (img_loaded && !engine_is_stopped()) { engine_stop(); hw_m68k_irq(6); while (ti68k_debug_is_supervisor()) hw_m68k_run(1,0); engine_start(); RETURN(TRUE); } else RETURN(FALSE); } STDMETHODIMP TiEmuOLE::enter_debugger(VARIANT_BOOL *ret) { if (img_loaded && !engine_is_stopped()) { engine_stop(); ti68k_debug_break(); engine_start(); RETURN(TRUE); } else RETURN(FALSE); } static TiEmuOLE *ole_interface; void oleaut_init (void) { ole_interface = new TiEmuOLE; } void oleaut_finish (void) { delete ole_interface; } tiemu-3.03-nogdb+dfsg/src/ipc/com/oleaut.h000066400000000000000000000227711220314353500203610ustar00rootroot00000000000000/*** Autogenerated by WIDL 0.9.31 from oleaut.idl - Do not edit ***/ #include #include #ifndef __WIDL_OLEAUT_H #define __WIDL_OLEAUT_H #ifdef __cplusplus extern "C" { #endif #include #include typedef enum __WIDL_oleaut_generated_name_00000000 { TIEMU_CALC_TI92 = 1, TIEMU_CALC_TI89 = 2, TIEMU_CALC_TI92p = 4, TIEMU_CALC_V200 = 8, TIEMU_CALC_TI89t = 16 } TiEmuCalcModels; #ifndef __ITiEmuOLE_FWD_DEFINED__ #define __ITiEmuOLE_FWD_DEFINED__ typedef interface ITiEmuOLE ITiEmuOLE; #endif /***************************************************************************** * ITiEmuOLE interface */ #ifndef __ITiEmuOLE_INTERFACE_DEFINED__ #define __ITiEmuOLE_INTERFACE_DEFINED__ DEFINE_GUID(IID_ITiEmuOLE, 0xe9373bd9, 0x7363, 0x427f, 0xa2,0xa6, 0x1e,0x8b,0xa9,0x1f,0xfb,0x3e); #if defined(__cplusplus) && !defined(CINTERFACE) interface ITiEmuOLE : public IDispatch { virtual HRESULT STDMETHODCALLTYPE image_loaded( VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE emulated_calc_type( int* ret) = 0; virtual HRESULT STDMETHODCALLTYPE emulated_hw_version( int* ret) = 0; virtual HRESULT STDMETHODCALLTYPE emulated_os_version( BSTR* ret) = 0; virtual HRESULT STDMETHODCALLTYPE ready_for_transfers( VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE send_file( BSTR filename, VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE debug_file( BSTR filename, VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE reset_calc( VARIANT_BOOL clearmem, VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE execute_command( BSTR command, VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE turn_calc_on( VARIANT_BOOL* ret) = 0; virtual HRESULT STDMETHODCALLTYPE enter_debugger( VARIANT_BOOL* ret) = 0; }; #else typedef struct ITiEmuOLEVtbl { BEGIN_INTERFACE /*** IUnknown methods ***/ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ITiEmuOLE* This, REFIID riid, void** ppvObject); ULONG (STDMETHODCALLTYPE *AddRef)( ITiEmuOLE* This); ULONG (STDMETHODCALLTYPE *Release)( ITiEmuOLE* This); /*** IDispatch methods ***/ HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( ITiEmuOLE* This, UINT* pctinfo); HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( ITiEmuOLE* This, UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo); HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( ITiEmuOLE* This, REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId); HRESULT (STDMETHODCALLTYPE *Invoke)( ITiEmuOLE* This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr); /*** ITiEmuOLE methods ***/ HRESULT (STDMETHODCALLTYPE *image_loaded)( ITiEmuOLE* This, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *emulated_calc_type)( ITiEmuOLE* This, int* ret); HRESULT (STDMETHODCALLTYPE *emulated_hw_version)( ITiEmuOLE* This, int* ret); HRESULT (STDMETHODCALLTYPE *emulated_os_version)( ITiEmuOLE* This, BSTR* ret); HRESULT (STDMETHODCALLTYPE *ready_for_transfers)( ITiEmuOLE* This, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *send_file)( ITiEmuOLE* This, BSTR filename, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *debug_file)( ITiEmuOLE* This, BSTR filename, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *reset_calc)( ITiEmuOLE* This, VARIANT_BOOL clearmem, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *execute_command)( ITiEmuOLE* This, BSTR command, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *turn_calc_on)( ITiEmuOLE* This, VARIANT_BOOL* ret); HRESULT (STDMETHODCALLTYPE *enter_debugger)( ITiEmuOLE* This, VARIANT_BOOL* ret); END_INTERFACE } ITiEmuOLEVtbl; interface ITiEmuOLE { CONST_VTBL ITiEmuOLEVtbl* lpVtbl; }; #ifdef COBJMACROS /*** IUnknown methods ***/ #define ITiEmuOLE_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) #define ITiEmuOLE_AddRef(p) (p)->lpVtbl->AddRef(p) #define ITiEmuOLE_Release(p) (p)->lpVtbl->Release(p) /*** IDispatch methods ***/ #define ITiEmuOLE_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a) #define ITiEmuOLE_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c) #define ITiEmuOLE_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e) #define ITiEmuOLE_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h) /*** ITiEmuOLE methods ***/ #define ITiEmuOLE_image_loaded(p,a) (p)->lpVtbl->image_loaded(p,a) #define ITiEmuOLE_emulated_calc_type(p,a) (p)->lpVtbl->emulated_calc_type(p,a) #define ITiEmuOLE_emulated_hw_version(p,a) (p)->lpVtbl->emulated_hw_version(p,a) #define ITiEmuOLE_emulated_os_version(p,a) (p)->lpVtbl->emulated_os_version(p,a) #define ITiEmuOLE_ready_for_transfers(p,a) (p)->lpVtbl->ready_for_transfers(p,a) #define ITiEmuOLE_send_file(p,a,b) (p)->lpVtbl->send_file(p,a,b) #define ITiEmuOLE_debug_file(p,a,b) (p)->lpVtbl->debug_file(p,a,b) #define ITiEmuOLE_reset_calc(p,a,b) (p)->lpVtbl->reset_calc(p,a,b) #define ITiEmuOLE_execute_command(p,a,b) (p)->lpVtbl->execute_command(p,a,b) #define ITiEmuOLE_turn_calc_on(p,a) (p)->lpVtbl->turn_calc_on(p,a) #define ITiEmuOLE_enter_debugger(p,a) (p)->lpVtbl->enter_debugger(p,a) #endif #endif HRESULT CALLBACK ITiEmuOLE_image_loaded_Proxy( ITiEmuOLE* This, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_image_loaded_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_emulated_calc_type_Proxy( ITiEmuOLE* This, int* ret); void __RPC_STUB ITiEmuOLE_emulated_calc_type_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_emulated_hw_version_Proxy( ITiEmuOLE* This, int* ret); void __RPC_STUB ITiEmuOLE_emulated_hw_version_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_emulated_os_version_Proxy( ITiEmuOLE* This, BSTR* ret); void __RPC_STUB ITiEmuOLE_emulated_os_version_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_ready_for_transfers_Proxy( ITiEmuOLE* This, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_ready_for_transfers_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_send_file_Proxy( ITiEmuOLE* This, BSTR filename, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_send_file_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_debug_file_Proxy( ITiEmuOLE* This, BSTR filename, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_debug_file_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_reset_calc_Proxy( ITiEmuOLE* This, VARIANT_BOOL clearmem, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_reset_calc_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_execute_command_Proxy( ITiEmuOLE* This, BSTR command, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_execute_command_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_turn_calc_on_Proxy( ITiEmuOLE* This, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_turn_calc_on_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); HRESULT CALLBACK ITiEmuOLE_enter_debugger_Proxy( ITiEmuOLE* This, VARIANT_BOOL* ret); void __RPC_STUB ITiEmuOLE_enter_debugger_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); #endif /* __ITiEmuOLE_INTERFACE_DEFINED__ */ DEFINE_GUID(LIBID_TiEmuOLELib, 0x6140dc7c, 0x3d74, 0x41f9, 0xa7,0x87, 0x59,0x46,0x99,0x4a,0xa8,0xf2); /***************************************************************************** * TiEmuOLE coclass */ DEFINE_GUID(CLSID_TiEmuOLE, 0xb2a17b13, 0x9d6f, 0x4dd4, 0xa2,0xa9, 0x6f,0xe0,0x6a,0xdc,0x1d,0x33); #ifndef __TiEmuOLE_FWD_DEFINED__ #define __TiEmuOLE_FWD_DEFINED__ typedef struct TiEmuOLE TiEmuOLE; #endif /* defined __TiEmuOLE_FWD_DEFINED__ */ /* Begin additional prototypes for all interfaces */ ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *); unsigned char * __RPC_USER BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *); unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *); void __RPC_USER BSTR_UserFree (ULONG *, BSTR *); /* End additional prototypes */ #ifdef __cplusplus } #endif #endif /* __WIDL_OLEAUT_H */ tiemu-3.03-nogdb+dfsg/src/ipc/com/oleaut.idl000066400000000000000000000042141220314353500206720ustar00rootroot00000000000000/* OLE Automation interface for TiEmu * * Copyright (c) 2006 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ import "oaidl.idl"; import "ocidl.idl"; typedef enum { TIEMU_CALC_TI92 = 1, TIEMU_CALC_TI89 = 2, TIEMU_CALC_TI92p = 4, TIEMU_CALC_V200 = 8, TIEMU_CALC_TI89t = 16, } TiEmuCalcModels; [ object, uuid(e9373bd9-7363-427f-a2a6-1e8ba91ffb3e), dual, helpstring("TiEmu OLE Interface"), pointer_default(unique) ] interface ITiEmuOLE : IDispatch { HRESULT image_loaded([out, retval] VARIANT_BOOL *ret); HRESULT emulated_calc_type([out, retval] int *ret); HRESULT emulated_hw_version([out, retval] int *ret); HRESULT emulated_os_version([out, retval] BSTR *ret); HRESULT ready_for_transfers([out, retval] VARIANT_BOOL *ret); HRESULT send_file([in] BSTR filename, [out, retval] VARIANT_BOOL *ret); HRESULT debug_file([in] BSTR filename, [out, retval] VARIANT_BOOL *ret); HRESULT reset_calc([in] VARIANT_BOOL clearmem, [out, retval] VARIANT_BOOL *ret); HRESULT execute_command([in] BSTR command, [out, retval] VARIANT_BOOL *ret); HRESULT turn_calc_on([out, retval] VARIANT_BOOL *ret); HRESULT enter_debugger([out, retval] VARIANT_BOOL *ret); }; [ uuid(6140dc7c-3d74-41f9-a787-5946994aa8f2), version(1.0), helpstring("TiEmu Type Library") ] library TiEmuOLELib { importlib("stdole2.tlb"); [ uuid(b2a17b13-9d6f-4dd4-a2a9-6fe06adc1d33), helpstring("TiEmu OLE Interface Class") ] coclass TiEmuOLE { [default] interface ITiEmuOLE; }; }; tiemu-3.03-nogdb+dfsg/src/ipc/com/oleaut.tlb000066400000000000000000000050001220314353500206750ustar00rootroot00000000000000MSFT AÓÿÿÿÿ €dLÈÿÿÿÿL ÿÿÿÿXÿÿÿÿ<ÿÿÿÿ€ÿÿÿÿ”¨ÿÿÿÿtÿÿÿÿtÀÿÿÿÿ4Hÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿ”ÿÿÿÿ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%"¼ÿÿÿÿHÿÿÿÿÿÿÿÿ4"¼X @,0ÿÿÿÿHÿÿÿÿÿÿÿÿÿÿÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Hÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|Ü@at=ùA§‡YF™J¨òþÿÿÿÿÿÿÿcºwÞ|QÑ¢Úøw<éÿÿÿÿÿÿÿÿdºwÞ|QÑ¢Úøw<éÿÿÿÿÿÿÿÿ{¡²oÔM¢©oàjÜ3ÿÿÿÿ0ÀFÿÿÿÿÀFÿÿÿÿÙ;7écsB¢¦‹©û>dÿÿÿÿdÿÿÿÿÿÿÿÿx`-STDOLE2.TLBWWWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\0ÿÿÿÿŒ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHÿÿÿÿŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ /ÇTiEmuOLELibWÿÿÿÿ8TPTiEmuOLEdÿÿÿÿ 8ÔITiEmuOLEWWWdÿÿÿÿ h»image_loadedÿÿÿÿÿÿÿÿÎretWdÿÿÿÿmÄemulated_calc_typeWWdÿÿÿÿ¸Žemulated_hw_versionWdÿÿÿÿ…Ãemulated_os_versionWdÿÿÿÿ6Kready_for_transfersWdÿÿÿÿ © G_BEGIN_DECLS void oleaut_init (void); void oleaut_finish (void); G_END_DECLS #endif tiemu-3.03-nogdb+dfsg/src/ipc/com/oleaut_i.c000066400000000000000000000010041220314353500206460ustar00rootroot00000000000000/*** Autogenerated by WIDL 0.9.31 from oleaut.idl - Do not edit ***/ #define INITGUID #include #include #include #ifdef __cplusplus extern "C" { #endif DEFINE_GUID(IID_ITiEmuOLE, 0xe9373bd9, 0x7363, 0x427f, 0xa2,0xa6, 0x1e,0x8b,0xa9,0x1f,0xfb,0x3e); DEFINE_GUID(LIBID_TiEmuOLELib, 0x6140dc7c, 0x3d74, 0x41f9, 0xa7,0x87, 0x59,0x46,0x99,0x4a,0xa8,0xf2); DEFINE_GUID(CLSID_TiEmuOLE, 0xb2a17b13, 0x9d6f, 0x4dd4, 0xa2,0xa9, 0x6f,0xe0,0x6a,0xdc,0x1d,0x33); #ifdef __cplusplus } #endif tiemu-3.03-nogdb+dfsg/src/ipc/com/oleaut_i.c.diff000066400000000000000000000001431220314353500215600ustar00rootroot000000000000002a3 > #define INITGUID 6,7c7 < #define INITGUID < #include --- > #include tiemu-3.03-nogdb+dfsg/src/ipc/com/oleaut_p.c000066400000000000000000001565621220314353500207010ustar00rootroot00000000000000/* oleaut_p.c edited by Kevin Kofler to build with MinGW * * OLE Automation interface for TiEmu * * Copyright (c) 2006 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* File created by MIDL compiler version 5.01.0164 */ /* at Fri Feb 03 11:12:41 2006 */ /* Compiler settings for oleaut.idl: Os (OptLev=s), W1, Zp8, env=Win32, ms_ext, c_ext error checks: allocation ref bounds_check enum stub_data */ //@@MIDL_FILE_HEADING( ) #include "rpcproxy.h" #include "oleaut.h" #ifdef __MINGW32__ #include /* CAUTION: Ugly SEH hacks (technically invalid inline ASM) below! Use -O0 -fno-omit-frame-pointer to minimize breakage! */ #define RpcTryExcept \ { \ asm volatile ("pushl %esp; pushl %ebp; pushl $100f\n" \ "pushl %fs:0; movl %esp,%fs:0; subl $32,%esp"); #define RpcExcept(guard) \ asm volatile ("movl %fs:0,%esp; popl %fs:0; addl $12,%esp"); \ } \ asm volatile ("jmp 101f\n" \ "100: pushl %ebp; movl %fs:0,%eax; movl 8(%eax),%ebp; movl %esp,8(%eax)"); \ if ((guard)) { \ volatile int _exception_code; \ asm volatile ("movl 8(%%esp),%%eax; movl %%fs:0,%%esp; popl %%fs:0; addl $8,%%esp; popl %%esp; movl (%%eax),%%eax; movl %%eax,%0; subl $32,%%esp":"=m"(_exception_code)::"eax"); #define RpcEndExcept \ } else { \ asm volatile ("movl %fs:0,%eax; movl 8(%eax),%esp; movl %ebp,8(%eax); popl %ebp; movl $1,%eax; ret");\ } \ asm volatile ("101:"); #define RpcTryFinally \ { \ asm volatile ("pushl $0; pushl %esp; pushl %ebp; pushl $200f\n" \ "pushl %fs:0; movl %esp,%fs:0; subl $32,%esp"); #define RpcFinally \ } \ asm volatile ("movl %fs:0,%eax; jmp 201f\n" \ "200: movl %fs:0,%eax; movl $1,16(%eax)\n" \ "201: pushl %ebp; movl 8(%eax),%ebp; movl %esp,8(%eax); subl $32,%esp"); #define RpcEndFinally \ asm volatile ("movl %%fs:0,%%eax; movl 8(%%eax),%%esp; movl %%ebp,8(%%eax); popl %%ebp; movl 16(%%eax),%%eax; testl %%eax,%%eax; je 202f; ret\n" \ "202: movl %%fs:0,%%esp; popl %%fs:0; addl $16,%%esp":::"eax"); #define RpcExceptionCode() (_exception_code) #ifndef CINTERFACE_PROXY_VTABLE #define CINTERFACE_PROXY_VTABLE(n) \ struct \ { \ CInterfaceProxyHeader header; \ void *Vtbl[n]; \ } #endif #define SECTION_ORPC __attribute__((section(".orpc"))) #define SECTION_RDATA __attribute__((section(".rdata"))) #else #define SECTION_ORPC /**/ #define SECTION_RDATA /**/ #endif #define TYPE_FORMAT_STRING_SIZE 63 #define PROC_FORMAT_STRING_SIZE 37 typedef struct _MIDL_TYPE_FORMAT_STRING { short Pad; unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; } MIDL_TYPE_FORMAT_STRING; typedef struct _MIDL_PROC_FORMAT_STRING { short Pad; unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; } MIDL_PROC_FORMAT_STRING; extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString; extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString; /* Standard interface: __MIDL_itf_oleaut_0000, ver. 0.0, GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */ /* Object interface: IUnknown, ver. 0.0, GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */ /* Object interface: IDispatch, ver. 0.0, GUID={0x00020400,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */ /* Object interface: ITiEmuOLE, ver. 0.0, GUID={0xe9373bd9,0x7363,0x427f,{0xa2,0xa6,0x1e,0x8b,0xa9,0x1f,0xfb,0x3e}} */ extern const MIDL_STUB_DESC Object_StubDesc; #ifndef __MINGW32__ #pragma code_seg(".orpc") #endif SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_image_loaded_Proxy( ITiEmuOLE __RPC_FAR * This, /* [retval][out] */ VARIANT_BOOL __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 7); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 0U; NdrProxyGetBuffer(This, &_StubMsg); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] ); *ret = *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[2], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_image_loaded_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { VARIANT_BOOL _M0; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; VARIANT_BOOL __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); ( VARIANT_BOOL __RPC_FAR * )ret = 0; RpcTryFinally { ret = &_M0; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> image_loaded((ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject,ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 2U + 6U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_emulated_calc_type_Proxy( ITiEmuOLE __RPC_FAR * This, /* [retval][out] */ int __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 8); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 0U; NdrProxyGetBuffer(This, &_StubMsg); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[6] ); *ret = *(( int __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( int __RPC_FAR * ); _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[6], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_emulated_calc_type_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { int _M1; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; int __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); ( int __RPC_FAR * )ret = 0; RpcTryFinally { ret = &_M1; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> emulated_calc_type((ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject,ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 4U + 4U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( int __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( int __RPC_FAR * ); *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_emulated_hw_version_Proxy( ITiEmuOLE __RPC_FAR * This, /* [retval][out] */ int __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 9); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 0U; NdrProxyGetBuffer(This, &_StubMsg); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[6] ); *ret = *(( int __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( int __RPC_FAR * ); _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[6], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_emulated_hw_version_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { int _M2; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; int __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); ( int __RPC_FAR * )ret = 0; RpcTryFinally { ret = &_M2; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> emulated_hw_version((ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject,ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 4U + 4U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( int __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( int __RPC_FAR * ); *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_emulated_os_version_Proxy( ITiEmuOLE __RPC_FAR * This, /* [retval][out] */ BSTR __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; if(ret) { MIDL_memset( ret, 0, sizeof( BSTR )); } RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 10); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 0U; NdrProxyGetBuffer(This, &_StubMsg); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[12] ); NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR * __RPC_FAR *)&ret, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38], (unsigned char)0 ); _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3); _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[10], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_emulated_os_version_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { BSTR _M3; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; BSTR __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); ( BSTR __RPC_FAR * )ret = 0; RpcTryFinally { ret = &_M3; MIDL_memset( ret, 0, sizeof( BSTR )); *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> emulated_os_version((ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject,ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 8U + 11U; NdrUserMarshalBufferSize( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *)ret, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38] ); _StubMsg.BufferLength += 16; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg, (unsigned char __RPC_FAR *)ret, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38] ); _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3); *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrPointerFree( &_StubMsg, (unsigned char __RPC_FAR *)ret, &__MIDL_TypeFormatString.Format[10] ); } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_ready_for_transfers_Proxy( ITiEmuOLE __RPC_FAR * This, /* [retval][out] */ VARIANT_BOOL __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 11); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 0U; NdrProxyGetBuffer(This, &_StubMsg); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] ); *ret = *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[2], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_ready_for_transfers_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { VARIANT_BOOL _M4; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; VARIANT_BOOL __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); ( VARIANT_BOOL __RPC_FAR * )ret = 0; RpcTryFinally { ret = &_M4; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> ready_for_transfers((ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject,ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 2U + 6U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_send_file_Proxy( ITiEmuOLE __RPC_FAR * This, /* [in] */ BSTR filename, /* [retval][out] */ VARIANT_BOOL __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 12); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 8U; NdrUserMarshalBufferSize( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *)&filename, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[52] ); NdrProxyGetBuffer(This, &_StubMsg); NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg, (unsigned char __RPC_FAR *)&filename, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[52] ); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[18] ); *ret = *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[2], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_send_file_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { VARIANT_BOOL _M5; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; void __RPC_FAR *_p_filename; BSTR filename; VARIANT_BOOL __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); _p_filename = &filename; MIDL_memset( _p_filename, 0, sizeof( BSTR )); ( VARIANT_BOOL __RPC_FAR * )ret = 0; RpcTryFinally { if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[18] ); NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR * __RPC_FAR *)&_p_filename, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[52], (unsigned char)0 ); ret = &_M5; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> send_file( (ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject, filename, ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 2U + 6U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrUserMarshalFree( &_StubMsg, (unsigned char __RPC_FAR *)&filename, &__MIDL_TypeFormatString.Format[52] ); } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_debug_file_Proxy( ITiEmuOLE __RPC_FAR * This, /* [in] */ BSTR filename, /* [retval][out] */ VARIANT_BOOL __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 13); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 8U; NdrUserMarshalBufferSize( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *)&filename, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[52] ); NdrProxyGetBuffer(This, &_StubMsg); NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg, (unsigned char __RPC_FAR *)&filename, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[52] ); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[18] ); *ret = *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[2], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_debug_file_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { VARIANT_BOOL _M6; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; void __RPC_FAR *_p_filename; BSTR filename; VARIANT_BOOL __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); _p_filename = &filename; MIDL_memset( _p_filename, 0, sizeof( BSTR )); ( VARIANT_BOOL __RPC_FAR * )ret = 0; RpcTryFinally { if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[18] ); NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR * __RPC_FAR *)&_p_filename, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[52], (unsigned char)0 ); ret = &_M6; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> debug_file( (ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject, filename, ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 2U + 6U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrUserMarshalFree( &_StubMsg, (unsigned char __RPC_FAR *)&filename, &__MIDL_TypeFormatString.Format[52] ); } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_reset_calc_Proxy( ITiEmuOLE __RPC_FAR * This, /* [in] */ VARIANT_BOOL clearmem, /* [retval][out] */ VARIANT_BOOL __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 14); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 2U; NdrProxyGetBuffer(This, &_StubMsg); *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer) = clearmem; _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[28] ); *ret = *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[2], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_reset_calc_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { VARIANT_BOOL _M7; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; VARIANT_BOOL clearmem; VARIANT_BOOL __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); ( VARIANT_BOOL __RPC_FAR * )ret = 0; RpcTryFinally { if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[28] ); clearmem = *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); ret = &_M7; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> reset_calc( (ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject, clearmem, ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 2U + 6U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_execute_command_Proxy( ITiEmuOLE __RPC_FAR * This, /* [in] */ BSTR command, /* [retval][out] */ VARIANT_BOOL __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 15); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 8U; NdrUserMarshalBufferSize( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *)&command, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[52] ); NdrProxyGetBuffer(This, &_StubMsg); NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg, (unsigned char __RPC_FAR *)&command, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[52] ); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[18] ); *ret = *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[2], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_execute_command_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { VARIANT_BOOL _M8; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; void __RPC_FAR *_p_command; BSTR command; VARIANT_BOOL __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); _p_command = &command; MIDL_memset( _p_command, 0, sizeof( BSTR )); ( VARIANT_BOOL __RPC_FAR * )ret = 0; RpcTryFinally { if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[18] ); NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR * __RPC_FAR *)&_p_command, (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[52], (unsigned char)0 ); ret = &_M8; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> execute_command( (ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject, command, ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 2U + 6U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrUserMarshalFree( &_StubMsg, (unsigned char __RPC_FAR *)&command, &__MIDL_TypeFormatString.Format[52] ); } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_turn_calc_on_Proxy( ITiEmuOLE __RPC_FAR * This, /* [retval][out] */ VARIANT_BOOL __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 16); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 0U; NdrProxyGetBuffer(This, &_StubMsg); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] ); *ret = *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[2], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_turn_calc_on_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { VARIANT_BOOL _M9; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; VARIANT_BOOL __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); ( VARIANT_BOOL __RPC_FAR * )ret = 0; RpcTryFinally { ret = &_M9; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> turn_calc_on((ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject,ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 2U + 6U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } SECTION_ORPC HRESULT STDMETHODCALLTYPE ITiEmuOLE_enter_debugger_Proxy( ITiEmuOLE __RPC_FAR * This, /* [retval][out] */ VARIANT_BOOL __RPC_FAR *ret) { HRESULT _RetVal; RPC_MESSAGE _RpcMessage; MIDL_STUB_MESSAGE _StubMsg; RpcTryExcept { NdrProxyInitialize( ( void __RPC_FAR * )This, ( PRPC_MESSAGE )&_RpcMessage, ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PMIDL_STUB_DESC )&Object_StubDesc, 17); if(!ret) { RpcRaiseException(RPC_X_NULL_REF_POINTER); } RpcTryFinally { _StubMsg.BufferLength = 0U; NdrProxyGetBuffer(This, &_StubMsg); NdrProxySendReceive(This, &_StubMsg); if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION ) NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] ); *ret = *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer); _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { NdrProxyFreeBuffer(This, &_StubMsg); } RpcEndFinally } RpcExcept(_StubMsg.dwStubPhase != PROXY_SENDRECEIVE) { NdrClearOutParameters( ( PMIDL_STUB_MESSAGE )&_StubMsg, ( PFORMAT_STRING )&__MIDL_TypeFormatString.Format[2], ( void __RPC_FAR * )ret); _RetVal = NdrProxyErrorHandler(RpcExceptionCode()); } RpcEndExcept return _RetVal; } SECTION_ORPC void __RPC_STUB ITiEmuOLE_enter_debugger_Stub( IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *_pdwStubPhase) { VARIANT_BOOL _M9; HRESULT _RetVal; MIDL_STUB_MESSAGE _StubMsg; VARIANT_BOOL __RPC_FAR *ret; NdrStubInitialize( _pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer); ( VARIANT_BOOL __RPC_FAR * )ret = 0; RpcTryFinally { ret = &_M9; *_pdwStubPhase = STUB_CALL_SERVER; _RetVal = (((ITiEmuOLE*) ((CStdStubBuffer *)This)->pvServerObject)->lpVtbl) -> enter_debugger((ITiEmuOLE *) ((CStdStubBuffer *)This)->pvServerObject,ret); *_pdwStubPhase = STUB_MARSHAL; _StubMsg.BufferLength = 2U + 6U; NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg); *(( VARIANT_BOOL __RPC_FAR * )_StubMsg.Buffer) = *ret; _StubMsg.Buffer += sizeof( VARIANT_BOOL __RPC_FAR * ); _StubMsg.Buffer += 2; *(( HRESULT __RPC_FAR * )_StubMsg.Buffer) = _RetVal; _StubMsg.Buffer += sizeof( HRESULT __RPC_FAR * ); } RpcFinally { } RpcEndFinally _pRpcMessage->BufferLength = (unsigned int)((long)_StubMsg.Buffer - (long)_pRpcMessage->Buffer); } extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[1]; static const MIDL_STUB_DESC Object_StubDesc = { 0, NdrOleAllocate, NdrOleFree, 0, 0, 0, 0, 0, __MIDL_TypeFormatString.Format, 1, /* -error bounds_check flag */ 0x20000, /* Ndr library version */ 0, 0x50100a4, /* MIDL Version 5.1.164 */ 0, UserMarshalRoutines, 0, /* notify & notify_flag routine table */ 1, /* Flags */ 0, /* Reserved3 */ 0, /* Reserved4 */ 0 /* Reserved5 */ }; CINTERFACE_PROXY_VTABLE(18) _ITiEmuOLEProxyVtbl = { &IID_ITiEmuOLE, IUnknown_QueryInterface_Proxy, IUnknown_AddRef_Proxy, IUnknown_Release_Proxy , 0 /* IDispatch_GetTypeInfoCount_Proxy */ , 0 /* IDispatch_GetTypeInfo_Proxy */ , 0 /* IDispatch_GetIDsOfNames_Proxy */ , 0 /* IDispatch_Invoke_Proxy */ , ITiEmuOLE_image_loaded_Proxy , ITiEmuOLE_emulated_calc_type_Proxy , ITiEmuOLE_emulated_hw_version_Proxy , ITiEmuOLE_emulated_os_version_Proxy , ITiEmuOLE_ready_for_transfers_Proxy , ITiEmuOLE_send_file_Proxy , ITiEmuOLE_debug_file_Proxy , ITiEmuOLE_reset_calc_Proxy , ITiEmuOLE_execute_command_Proxy , ITiEmuOLE_turn_calc_on_Proxy , ITiEmuOLE_enter_debugger_Proxy }; static const PRPC_STUB_FUNCTION ITiEmuOLE_table[] = { STUB_FORWARDING_FUNCTION, STUB_FORWARDING_FUNCTION, STUB_FORWARDING_FUNCTION, STUB_FORWARDING_FUNCTION, ITiEmuOLE_image_loaded_Stub, ITiEmuOLE_emulated_calc_type_Stub, ITiEmuOLE_emulated_hw_version_Stub, ITiEmuOLE_emulated_os_version_Stub, ITiEmuOLE_ready_for_transfers_Stub, ITiEmuOLE_send_file_Stub, ITiEmuOLE_debug_file_Stub, ITiEmuOLE_reset_calc_Stub, ITiEmuOLE_execute_command_Stub, ITiEmuOLE_turn_calc_on_Stub, ITiEmuOLE_enter_debugger_Stub }; CInterfaceStubVtbl _ITiEmuOLEStubVtbl = { &IID_ITiEmuOLE, 0, 18, &ITiEmuOLE_table[-3], CStdStubBuffer_DELEGATING_METHODS }; #ifndef __MINGW32__ #pragma data_seg(".rdata") #endif SECTION_RDATA static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[1] = { { (USER_MARSHAL_SIZING_ROUTINE)BSTR_UserSize ,(USER_MARSHAL_MARSHALLING_ROUTINE)BSTR_UserMarshal ,(USER_MARSHAL_UNMARSHALLING_ROUTINE)BSTR_UserUnmarshal ,(USER_MARSHAL_FREEING_ROUTINE)BSTR_UserFree } }; #if !defined(__RPC_WIN32__) #error Invalid build platform for this stub. #endif #if !(TARGET_IS_NT40_OR_LATER) && !defined(__MINGW32__) #error You need a Windows NT 4.0 or later to run this stub because it uses these features: #error [wire_marshal] or [user_marshal] attribute. #error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems. #error This app will die there with the RPC_X_WRONG_STUB_VERSION error. #endif SECTION_RDATA static const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString = { 0, { 0x51, /* FC_OUT_PARAM */ #ifndef _ALPHA_ 0x1, /* x86, MIPS & PPC Stack size = 1 */ #else 0x2, /* Alpha Stack size = 2 */ #endif /* 2 */ NdrFcShort( 0x2 ), /* Type Offset=2 */ /* 4 */ 0x53, /* FC_RETURN_PARAM_BASETYPE */ 0x8, /* FC_LONG */ /* 6 */ 0x51, /* FC_OUT_PARAM */ #ifndef _ALPHA_ 0x1, /* x86, MIPS & PPC Stack size = 1 */ #else 0x2, /* Alpha Stack size = 2 */ #endif /* 8 */ NdrFcShort( 0x6 ), /* Type Offset=6 */ /* 10 */ 0x53, /* FC_RETURN_PARAM_BASETYPE */ 0x8, /* FC_LONG */ /* 12 */ 0x51, /* FC_OUT_PARAM */ #ifndef _ALPHA_ 0x1, /* x86, MIPS & PPC Stack size = 1 */ #else 0x2, /* Alpha Stack size = 2 */ #endif /* 14 */ NdrFcShort( 0xa ), /* Type Offset=10 */ /* 16 */ 0x53, /* FC_RETURN_PARAM_BASETYPE */ 0x8, /* FC_LONG */ /* 18 */ 0x4d, /* FC_IN_PARAM */ #ifndef _ALPHA_ 0x1, /* x86, MIPS & PPC Stack size = 1 */ #else 0x2, /* Alpha Stack size = 2 */ #endif /* 20 */ NdrFcShort( 0x34 ), /* Type Offset=52 */ /* 22 */ 0x51, /* FC_OUT_PARAM */ #ifndef _ALPHA_ 0x1, /* x86, MIPS & PPC Stack size = 1 */ #else 0x2, /* Alpha Stack size = 2 */ #endif /* 24 */ NdrFcShort( 0x2 ), /* Type Offset=2 */ /* 26 */ 0x53, /* FC_RETURN_PARAM_BASETYPE */ 0x8, /* FC_LONG */ /* 28 */ 0x4e, /* FC_IN_PARAM_BASETYPE */ 0x6, /* FC_SHORT */ /* 30 */ 0x51, /* FC_OUT_PARAM */ #ifndef _ALPHA_ 0x1, /* x86, MIPS & PPC Stack size = 1 */ #else 0x2, /* Alpha Stack size = 2 */ #endif /* 32 */ NdrFcShort( 0x2 ), /* Type Offset=2 */ /* 34 */ 0x53, /* FC_RETURN_PARAM_BASETYPE */ 0x8, /* FC_LONG */ 0x0 } }; SECTION_RDATA static const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString = { 0, { NdrFcShort( 0x0 ), /* 0 */ /* 2 */ 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */ /* 4 */ 0x6, /* FC_SHORT */ 0x5c, /* FC_PAD */ /* 6 */ 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */ /* 8 */ 0x8, /* FC_LONG */ 0x5c, /* FC_PAD */ /* 10 */ 0x11, 0x4, /* FC_RP [alloced_on_stack] */ /* 12 */ NdrFcShort( 0x1a ), /* Offset= 26 (38) */ /* 14 */ 0x13, 0x0, /* FC_OP */ /* 16 */ NdrFcShort( 0xc ), /* Offset= 12 (28) */ /* 18 */ 0x1b, /* FC_CARRAY */ 0x1, /* 1 */ /* 20 */ NdrFcShort( 0x2 ), /* 2 */ /* 22 */ 0x9, /* Corr desc: FC_ULONG */ 0x0, /* */ /* 24 */ NdrFcShort( 0xfffc ), /* -4 */ /* 26 */ 0x6, /* FC_SHORT */ 0x5b, /* FC_END */ /* 28 */ 0x17, /* FC_CSTRUCT */ 0x3, /* 3 */ /* 30 */ NdrFcShort( 0x8 ), /* 8 */ /* 32 */ NdrFcShort( 0xfffffff2 ), /* Offset= -14 (18) */ /* 34 */ 0x8, /* FC_LONG */ 0x8, /* FC_LONG */ /* 36 */ 0x5c, /* FC_PAD */ 0x5b, /* FC_END */ /* 38 */ 0xb4, /* FC_USER_MARSHAL */ 0x83, /* 131 */ /* 40 */ NdrFcShort( 0x0 ), /* 0 */ /* 42 */ NdrFcShort( 0x4 ), /* 4 */ /* 44 */ NdrFcShort( 0x0 ), /* 0 */ /* 46 */ NdrFcShort( 0xffffffe0 ), /* Offset= -32 (14) */ /* 48 */ 0x12, 0x0, /* FC_UP */ /* 50 */ NdrFcShort( 0xffffffea ), /* Offset= -22 (28) */ /* 52 */ 0xb4, /* FC_USER_MARSHAL */ 0x83, /* 131 */ /* 54 */ NdrFcShort( 0x0 ), /* 0 */ /* 56 */ NdrFcShort( 0x4 ), /* 4 */ /* 58 */ NdrFcShort( 0x0 ), /* 0 */ /* 60 */ NdrFcShort( 0xfffffff4 ), /* Offset= -12 (48) */ 0x0 } }; const CInterfaceProxyVtbl * _oleaut_ProxyVtblList[] = { ( CInterfaceProxyVtbl *) &_ITiEmuOLEProxyVtbl, 0 }; const CInterfaceStubVtbl * _oleaut_StubVtblList[] = { ( CInterfaceStubVtbl *) &_ITiEmuOLEStubVtbl, 0 }; PCInterfaceName const _oleaut_InterfaceNamesList[] = { "ITiEmuOLE", 0 }; const IID * _oleaut_BaseIIDList[] = { &IID_IDispatch, 0 }; #define _oleaut_CHECK_IID(n) IID_GENERIC_CHECK_IID( _oleaut, pIID, n) SECTION_ORPC int __stdcall _oleaut_IID_Lookup( const IID * pIID, int * pIndex ) { if(!_oleaut_CHECK_IID(0)) { *pIndex = 0; return 1; } return 0; } SECTION_RDATA const ExtendedProxyFileInfo oleaut_ProxyFileInfo = { (PCInterfaceProxyVtblList *) & _oleaut_ProxyVtblList, (PCInterfaceStubVtblList *) & _oleaut_StubVtblList, (const PCInterfaceName * ) & _oleaut_InterfaceNamesList, (const IID ** ) & _oleaut_BaseIIDList, & _oleaut_IID_Lookup, 1, 1, 0, /* table of [async_uuid] interfaces */ 0, /* Filler1 */ 0, /* Filler2 */ 0 /* Filler3 */ }; tiemu-3.03-nogdb+dfsg/src/ipc/com/registry.cpp000066400000000000000000000144251220314353500212700ustar00rootroot00000000000000/* TiEmu - OLE component registration * * Copyright (c) 2006, Kevin Kofler and Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "registry.h" #include #ifndef _MSC_VER using namespace std; #endif // Size of a CLSID as a string static const int CLSID_STRING_SIZE = 39; // Convert a CLSID to a char string. static void CLSIDtochar(REFCLSID clsid, char* szCLSID, int length) { // Get CLSID LPOLESTR wszCLSID = NULL; HRESULT hr = StringFromCLSID(clsid, &wszCLSID); if (!SUCCEEDED(hr)) exit(1); // Covert from wide characters to non-wide. wcstombs(szCLSID, wszCLSID, length); // Free memory. CoTaskMemFree(wszCLSID); } // Delete a key and all of its descendents. static LONG recursiveDeleteKey(HKEY hKeyParent, // Parent of key to delete const char* lpszKeyChild) // Key to delete { // Open the child. HKEY hKeyChild; LONG lRes = RegOpenKeyEx(hKeyParent, lpszKeyChild, 0, KEY_ALL_ACCESS, &hKeyChild); if(lRes != ERROR_SUCCESS) return lRes; // Enumerate all of the decendents of this child. FILETIME time; char szBuffer[256]; DWORD dwSize = 256; while(RegEnumKeyEx(hKeyChild, 0, szBuffer, &dwSize, NULL, NULL, NULL, &time) == S_OK) { // Delete the decendents of this child. lRes = recursiveDeleteKey(hKeyChild, szBuffer); if(lRes != ERROR_SUCCESS) { // Cleanup before exiting. RegCloseKey(hKeyChild); return lRes; } dwSize = 256; } // Close the child. RegCloseKey(hKeyChild); // Delete this child. return RegDeleteKey(hKeyParent, lpszKeyChild); } // Create a key and set its value. static BOOL setKeyAndValue(const char* szKey, const char* szSubkey, const char* szValue) { HKEY hKey; char szKeyBuf[1024]; // Copy keyname into buffer. strcpy(szKeyBuf, szKey); // Add subkey name to buffer. if(szSubkey != NULL) { strcat(szKeyBuf, "\\"); strcat(szKeyBuf, szSubkey ); } // Create and open key and subkey. long lResult = RegCreateKeyEx(HKEY_CLASSES_ROOT, szKeyBuf, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL); if(lResult != ERROR_SUCCESS) return FALSE; // Set the Value. if(szValue != NULL) RegSetValueEx(hKey, NULL, 0, REG_SZ, (BYTE *)szValue, strlen(szValue)+1); RegCloseKey(hKey); return TRUE; } // Open a key and set a value. static BOOL setValueInKey(const char* szKey, const char* szNamedValue, const char* szValue) { HKEY hKey; char szKeyBuf[1024]; // Copy keyname into buffer. strcpy(szKeyBuf, szKey); // Create and open key and subkey. long lResult = RegOpenKeyEx(HKEY_CLASSES_ROOT, szKeyBuf, 0, KEY_SET_VALUE, &hKey); if(lResult != ERROR_SUCCESS) return FALSE; // Set the Value. if(szValue != NULL) RegSetValueEx(hKey, szNamedValue, 0, REG_SZ, (BYTE*)szValue, strlen(szValue)+1); RegCloseKey(hKey); return TRUE; } // Register the component in the registry. HRESULT RegisterServer(const CLSID *clsid, // Class ID const char* szFriendlyName, // Friendly Name const char* szVerIndProgID, // Programmatic const char* szProgID, // IDs const char* szThreadingModel) // ThreadingModel { // Get server location. char szModule[512]; HMODULE hModule = GetModuleHandle(NULL); DWORD dwResult = GetModuleFileName(hModule, szModule, sizeof(szModule)/sizeof(char)); if (dwResult == 0) exit(1); // Convert the CLSID into a char. char szCLSID[CLSID_STRING_SIZE]; CLSIDtochar(*clsid, szCLSID, sizeof(szCLSID)); // Build the key CLSID\\{...} char szKey[64]; strcpy(szKey, "CLSID\\"); strcat(szKey, szCLSID); // Add the CLSID to the registry. setKeyAndValue(szKey, NULL, szFriendlyName); // Add the server filename subkey under the CLSID key. setKeyAndValue(szKey, "LocalServer32", szModule); // Add the ProgID subkey under the CLSID key. setKeyAndValue(szKey, "ProgID", szProgID); // Add the version-independent ProgID subkey under CLSID key. setKeyAndValue(szKey, "VersionIndependentProgID", szVerIndProgID); // Add the version-independent ProgID subkey under HKEY_CLASSES_ROOT. setKeyAndValue(szVerIndProgID, NULL, szFriendlyName); setKeyAndValue(szVerIndProgID, "CLSID", szCLSID); setKeyAndValue(szVerIndProgID, "CurVer", szProgID); // Add the versioned ProgID subkey under HKEY_CLASSES_ROOT. setKeyAndValue(szProgID, NULL, szFriendlyName); setKeyAndValue(szProgID, "CLSID", szCLSID); return S_OK; } // Remove the component from the registry. LONG UnregisterServer(const CLSID *clsid, // Class ID const char* szVerIndProgID, // Programmatic const char* szProgID) // IDs { // Convert the CLSID into a char. char szCLSID[CLSID_STRING_SIZE]; CLSIDtochar(*clsid, szCLSID, sizeof(szCLSID)); // Build the key CLSID\\{...} char szKey[64]; strcpy(szKey, "CLSID\\"); strcat(szKey, szCLSID); // Delete the CLSID Key - CLSID\{...} LONG lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szKey); if((lResult != ERROR_SUCCESS) && (lResult != ERROR_FILE_NOT_FOUND)) exit(1); // Subkey may not exist. // Delete the version-independent ProgID Key. lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szVerIndProgID); if((lResult != ERROR_SUCCESS) && (lResult != ERROR_FILE_NOT_FOUND)) exit(1); // Subkey may not exist. // Delete the ProgID key. lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szProgID); if((lResult != ERROR_SUCCESS) && (lResult != ERROR_FILE_NOT_FOUND)) exit(1); // Subkey may not exist. return S_OK; } tiemu-3.03-nogdb+dfsg/src/ipc/com/registry.h000066400000000000000000000022451220314353500207320ustar00rootroot00000000000000/* TiEmu - OLE component registration * * Copyright (c) 2006, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #ifdef __cplusplus extern "C" { #endif HRESULT RegisterServer(const CLSID *clsid, const char* szFriendlyName, const char* szVerIndProgID, const char* szProgID, const char* szThreadingModel); HRESULT UnregisterServer(const CLSID *clsid, const char* szVerIndProgID, const char* szProgID); #ifdef __cplusplus } #endif tiemu-3.03-nogdb+dfsg/src/ipc/com/rpcrt4nt4.def000066400000000000000000000002021220314353500212240ustar00rootroot00000000000000LIBRARY RPCRT4.dll EXPORTS NdrUserMarshalBufferSize@12 NdrUserMarshalMarshall@12 NdrUserMarshalUnmarshall@16 NdrUserMarshalFree@12tiemu-3.03-nogdb+dfsg/src/ipc/com/tiemups.def000066400000000000000000000003671220314353500210620ustar00rootroot00000000000000 LIBRARY "tiemuPS" DESCRIPTION 'Proxy/Stub DLL' EXPORTS DllGetClassObject @1 PRIVATE DllCanUnloadNow @2 PRIVATE GetProxyDllInfo @3 PRIVATE DllRegisterServer @4 PRIVATE DllUnregisterServer @5 PRIVATE tiemu-3.03-nogdb+dfsg/src/ipc/com/tiemups.mk000066400000000000000000000007441220314353500207320ustar00rootroot00000000000000 tiemups.dll: dlldata.obj oleaut_p.obj oleaut_i.obj link /dll /out:tiemups.dll /def:tiemups.def /entry:DllMain dlldata.obj oleaut_p.obj oleaut_i.obj \ kernel32.lib rpcndr.lib rpcns4.lib rpcrt4.lib oleaut32.lib uuid.lib \ .c.obj: cl /c /Ox /DWIN32 /D_WIN32_WINNT=0x0400 /DREGISTER_PROXY_DLL \ -Dtiemu_ProxyFileInfo=oleaut_ProxyFileInfo \ $< clean: @del tiemups.dll @del tiemups.lib @del tiemups.exp @del dlldata.obj @del oleaut_p.obj @del oleaut_i.obj tiemu-3.03-nogdb+dfsg/src/ipc/dbus/000077500000000000000000000000001220314353500170655ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/ipc/dbus/dbus_ipc.c000066400000000000000000000145551220314353500210330ustar00rootroot00000000000000/* D-Bus interface for TiEmu * * Copyright (c) 2006-2007 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "dbus_ipc.h" #include "ti68k_int.h" #include "fs_misc.h" #include "engine.h" #include "dbg_all.h" #include "m68k.h" #define TIEMUDBUS_TYPE (tiemudbus_get_type()) typedef struct { GObject object; } TiEmuDBus; typedef struct { GObjectClass object_class; } TiEmuDBusClass; static gboolean tiemudbus_image_loaded(TiEmuDBus *this); static gint tiemudbus_emulated_calc_type(TiEmuDBus *this); static gint tiemudbus_emulated_hw_version(TiEmuDBus *this); static const char *tiemudbus_emulated_os_version(TiEmuDBus *this); static gboolean tiemudbus_ready_for_transfers(TiEmuDBus *this); static gboolean tiemudbus_send_file(TiEmuDBus *this, const char *filename); static gboolean tiemudbus_send_files(TiEmuDBus *this, const char **filenames); static gboolean tiemudbus_debug_file(TiEmuDBus *this, const char *filename); static gboolean tiemudbus_reset_calc(TiEmuDBus *this, gboolean clearram); static gboolean tiemudbus_execute_command(TiEmuDBus *this, const char *command); static gboolean tiemudbus_turn_calc_on(TiEmuDBus *this); static gboolean tiemudbus_enter_debugger(TiEmuDBus *this); #include "dbus_glue.h" #ifdef __GNUC__ #define UNUSED __attribute__((unused)) #else #define UNUSED /*unused*/ /* M$VC could probably use a #pragma warning for this */ #endif static void tiemudbus_class_init(TiEmuDBusClass *this) { dbus_g_object_type_install_info(G_TYPE_FROM_CLASS(G_OBJECT_CLASS(this)), &dbus_glib_tiemudbus_object_info); } static void tiemudbus_init(TiEmuDBus *this) { DBusGConnection *connection; DBusGProxy *proxy; GError *error; guint request_name_ret; // Connect to D-Bus error = NULL; connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error); if (!connection) { g_printerr("Failed to open connection to D-Bus session bus: %s\n", error->message); g_error_free(error); return; } // Register service with D-Bus proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); if (!org_freedesktop_DBus_request_name(proxy, "org.ticalc.lpg.tiemu.TiEmuDBus", 0, &request_name_ret, &error)) { g_printerr("Failed to register service with D-Bus: %s\n", error->message); g_error_free(error); return; } // Register object with D-Bus dbus_g_connection_register_g_object(connection, "/org/ticalc/lpg/tiemu/TiEmuDBus", G_OBJECT(this)); } G_DEFINE_TYPE(TiEmuDBus, tiemudbus, G_TYPE_OBJECT); static gboolean tiemudbus_image_loaded(TiEmuDBus *this UNUSED) { return img_loaded; } static gint tiemudbus_emulated_calc_type(TiEmuDBus *this UNUSED) { if (img_loaded) return img_infos.calc_type; else return 0; } static gint tiemudbus_emulated_hw_version(TiEmuDBus *this UNUSED) { if (img_loaded) return img_infos.hw_type; else return 0; } static const char *tiemudbus_emulated_os_version(TiEmuDBus *this UNUSED) { if (img_loaded) return img_infos.version; else return NULL; } static gboolean tiemudbus_ready_for_transfers(TiEmuDBus *this UNUSED) { return (img_loaded && !engine_is_stopped() && ti68k_linkport_ready()); } static gboolean tiemudbus_send_file(TiEmuDBus *this UNUSED, const char *filename) { if (img_loaded && !engine_is_stopped()) { engine_stop(); fs_send_file(filename); engine_start(); return TRUE; } else return FALSE; } static gboolean tiemudbus_send_files(TiEmuDBus *this UNUSED, const char **filenames) { if (img_loaded && !engine_is_stopped()) { const char **it; engine_stop(); for (it = filenames; *it; ++it) fs_send_file(*it); engine_start(); return TRUE; } else return FALSE; } static gboolean tiemudbus_debug_file(TiEmuDBus *this UNUSED, const char *filename) { if (img_loaded && !engine_is_stopped()) { engine_stop(); fs_send_file_and_debug_info(filename); engine_start(); return TRUE; } else return FALSE; } static gboolean tiemudbus_reset_calc(TiEmuDBus *this UNUSED, gboolean clearram) { if (img_loaded) { engine_stop(); if(clearram) memset(tihw.ram, 0, tihw.ram_size); ti68k_reset(); if (dbg_on) gtk_debugger_close_async(); else engine_start(); return TRUE; } else return FALSE; } static gboolean tiemudbus_execute_command(TiEmuDBus *this UNUSED, const char *command) { if (img_loaded) { gboolean result; char *utf8, *ti; unsigned short *utf16; utf8=g_strconcat("\f\r\r", command, "\n", NULL); utf16=ticonv_utf8_to_utf16(utf8); g_free(utf8); ti=ticonv_charset_utf16_to_ti(CALC_TI92, utf16); g_free(utf16); result=ti68k_kbd_push_chars(ti); g_free(ti); return result; } else return FALSE; } static gboolean tiemudbus_turn_calc_on(TiEmuDBus *this UNUSED) { if (img_loaded && !engine_is_stopped()) { engine_stop(); hw_m68k_irq(6); while (ti68k_debug_is_supervisor()) hw_m68k_run(1,0); engine_start(); return TRUE; } else return FALSE; } static gboolean tiemudbus_enter_debugger(TiEmuDBus *this UNUSED) { if (img_loaded && !engine_is_stopped()) { engine_stop(); ti68k_debug_break(); engine_start(); return TRUE; } else return FALSE; } static TiEmuDBus *dbus_interface; void dbus_init(void) { dbus_interface = g_object_new(TIEMUDBUS_TYPE, NULL); } void dbus_finish(void) { g_object_unref(dbus_interface); } tiemu-3.03-nogdb+dfsg/src/ipc/dbus/dbus_ipc.h000066400000000000000000000016651220314353500210360ustar00rootroot00000000000000#ifndef DBUS_IPC_H #define DBUS_IPC_H /* D-Bus interface for TiEmu * * Copyright (c) 2006 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include G_BEGIN_DECLS void dbus_init (void); void dbus_finish (void); G_END_DECLS #endif tiemu-3.03-nogdb+dfsg/src/ipc/dbus/dbus_ipc.xml000066400000000000000000000050131220314353500213760ustar00rootroot00000000000000 tiemu-3.03-nogdb+dfsg/src/ipc/dcop/000077500000000000000000000000001220314353500170555ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/ipc/dcop/dcop.cpp000066400000000000000000000073641220314353500205200ustar00rootroot00000000000000/* DCOP interface for TiEmu * * Copyright (c) 2006-2008 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "dcop.h" #include "ti68k_int.h" #include "fs_misc.h" #include "engine.h" #include "dbg_all.h" #include "m68k.h" TiEmuDCOP::TiEmuDCOP() : DCOPObject( "TiEmuDCOP" ) { // Register with DCOP if (!kapp->dcopClient()->isRegistered()) kapp->dcopClient()->attach(); kapp->dcopClient()->setDefaultObject(objId()); } TiEmuDCOP::~TiEmuDCOP() { } bool TiEmuDCOP::image_loaded() { return img_loaded; } int TiEmuDCOP::emulated_calc_type() { if (img_loaded) return img_infos.calc_type; else return 0; } int TiEmuDCOP::emulated_hw_version() { if (img_loaded) return img_infos.hw_type; else return 0; } QString TiEmuDCOP::emulated_os_version() { if (img_loaded) return QString::fromUtf8(img_infos.version); else return QString::null; } bool TiEmuDCOP::ready_for_transfers() { return (img_loaded && !engine_is_stopped() && ti68k_linkport_ready()); } bool TiEmuDCOP::send_file(QString filename) { if (img_loaded && !engine_is_stopped()) { engine_stop(); fs_send_file(filename.local8Bit()); engine_start(); return true; } else return false; } bool TiEmuDCOP::send_files(QStringList filenames) { if (img_loaded && !engine_is_stopped()) { engine_stop(); for (QStringList::Iterator it = filenames.begin(); it != filenames.end(); ++it) fs_send_file((*it).local8Bit()); engine_start(); return true; } else return false; } bool TiEmuDCOP::debug_file(QString filename) { if (img_loaded && !engine_is_stopped()) { engine_stop(); fs_send_file_and_debug_info(filename.local8Bit()); engine_start(); return true; } else return false; } bool TiEmuDCOP::reset_calc(bool clearram) { if (img_loaded) { engine_stop(); if(clearram) std::memset(tihw.ram, 0, tihw.ram_size); ti68k_reset(); if (dbg_on) gtk_debugger_close_async(); else engine_start(); return true; } else return false; } bool TiEmuDCOP::execute_command(QString command) { if (img_loaded) { bool result; command.prepend("\f\r\r"); command+='\n'; #ifdef __GNUC__ char ti[command.length()+1]; ticonv_charset_utf16_to_ti_s(CALC_TI92, command.ucs2(), ti); result=ti68k_kbd_push_chars(ti); #else char *ti=std::malloc(command.length()+1); ticonv_charset_utf16_to_ti_s(CALC_TI92, command.ucs2(), ti); result=ti68k_kbd_push_chars(ti); std::free(ti); #endif return result; } else return false; } bool TiEmuDCOP::turn_calc_on() { if (img_loaded && !engine_is_stopped()) { engine_stop(); hw_m68k_irq(6); while (ti68k_debug_is_supervisor()) hw_m68k_run(1,0); engine_start(); return true; } else return false; } bool TiEmuDCOP::enter_debugger() { if (img_loaded && !engine_is_stopped()) { engine_stop(); ti68k_debug_break(); engine_start(); return true; } else return false; } tiemu-3.03-nogdb+dfsg/src/ipc/dcop/dcop.h000066400000000000000000000026351220314353500201610ustar00rootroot00000000000000/* DCOP interface for TiEmu * * Copyright (c) 2006 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef TIEMU_DCOP_H #define TIEMU_DCOP_H #include #include #include class TiEmuDCOP: public QObject, virtual public DCOPObject { Q_OBJECT K_DCOP public: TiEmuDCOP(); ~TiEmuDCOP(); k_dcop: bool image_loaded(); int emulated_calc_type(); int emulated_hw_version(); QString emulated_os_version(); bool ready_for_transfers(); bool send_file(QString); bool send_files(QStringList); bool debug_file(QString); bool reset_calc(bool); bool execute_command(QString command); bool turn_calc_on(); bool enter_debugger(); }; #endif tiemu-3.03-nogdb+dfsg/src/kde/000077500000000000000000000000001220314353500161205ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/kde/kde-private.h000066400000000000000000000010601220314353500205010ustar00rootroot00000000000000#ifndef __SP_KDE_PRIVATE_H__ #define __SP_KDE_PRIVATE_H__ /* * KDE utilities for Sodipodi - adapted to TiEmu * * Authors: * Lauris Kaplinski * Kevin Kofler * * Copyright (C) 2003-2005 Authors * $Id$ * * Released under GNU GPL, read the file 'COPYING' for more information */ #include class SPKDEBridge : public QObject { Q_OBJECT public: SPKDEBridge (const char *name) : QObject (NULL, name) { /* NOP */ } public slots: void EventHook (void); void TimerHook (void); }; #endif tiemu-3.03-nogdb+dfsg/src/kde/kde.cpp000066400000000000000000000116731220314353500173770ustar00rootroot00000000000000#define __SP_KDE_CPP__ /* * KDE utilities for Sodipodi - adapted to TiEmu * * Authors: * Lauris Kaplinski * Kevin Kofler * * Copyright (C) 2003-2006 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ #include #include #include #include #include #include #include #include #include #include #include #include #include "kde.h" #include "kde-private.h" #include "dcop.h" #define SP_FOREIGN_FREQ 32 #define SP_FOREIGN_MAX_ITER 4 // Prevent infinite loop due to Qt->GTK->Qt calls static bool gtk_event_loop_called_from_qt = false; static bool SPKDEModal = FALSE; void SPKDEBridge::EventHook (void) { if (SPKDEModal) { int cdown = 0; gtk_event_loop_called_from_qt = true; while ((cdown++ < SP_FOREIGN_MAX_ITER) && gdk_events_pending ()) { gtk_main_iteration_do (FALSE); } gtk_main_iteration_do (FALSE); gtk_event_loop_called_from_qt = false; } } void SPKDEBridge::TimerHook (void) { int cdown = 10; gtk_event_loop_called_from_qt = true; while ((cdown++ < SP_FOREIGN_MAX_ITER) && gdk_events_pending ()) { gtk_main_iteration_do (FALSE); } gtk_main_iteration_do (FALSE); gtk_event_loop_called_from_qt = false; } static KApplication *KDESodipodi = NULL; static KAboutData *KDEAbout = NULL; static SPKDEBridge *Bridge = NULL; static TiEmuDCOP *DCOPInterface = NULL; static void sp_kde_gdk_event_handler (GdkEvent *event) { if (SPKDEModal) { // KDE widget is modal, filter events switch (event->type) { case GDK_NOTHING: case GDK_DELETE: case GDK_SCROLL: case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: case GDK_3BUTTON_PRESS: case GDK_BUTTON_RELEASE: case GDK_KEY_PRESS: case GDK_KEY_RELEASE: case GDK_DRAG_STATUS: case GDK_DRAG_ENTER: case GDK_DRAG_LEAVE: case GDK_DRAG_MOTION: case GDK_DROP_START: case GDK_DROP_FINISHED: return; break; default: break; } } gtk_main_do_event (event); } void sp_kde_init (int argc, char **argv, const char *appName, const char *programName, const char *version, const char *shortDescription, const char *copyrightStatement, const char *homePageAddress, const char *bugsEmailAddress) { KDEAbout = new KAboutData(appName, programName, version, shortDescription, KAboutData::License_GPL, copyrightStatement, NULL, homePageAddress, bugsEmailAddress); KCmdLineArgs::init(argc, argv, KDEAbout); KDESodipodi = new KApplication; Bridge = new SPKDEBridge ("KDE Bridge"); DCOPInterface = new TiEmuDCOP (); QObject::connect (KDESodipodi, SIGNAL (guiThreadAwake ()), Bridge, SLOT (EventHook ())); gdk_event_handler_set ((GdkEventFunc) sp_kde_gdk_event_handler, NULL, NULL); } void sp_kde_finish (void) { delete DCOPInterface; delete Bridge; delete KDESodipodi; delete KDEAbout; } char * sp_kde_get_open_filename (gchar *dir, gchar *filter, gchar *title) { QString fileName; QTimer timer; QObject::connect (&timer, SIGNAL (timeout ()), Bridge, SLOT (TimerHook ())); timer.changeInterval (1000 / SP_FOREIGN_FREQ); SPKDEModal = TRUE; fileName = KFileDialog::getOpenFileName (QString::fromLocal8Bit((const char *) dir), QString::fromLocal8Bit((const char *) filter), NULL, QString::fromUtf8((const char *) title)); SPKDEModal = FALSE; if (fileName.isEmpty()) return NULL; return g_strdup (fileName.local8Bit()); } char ** sp_kde_get_open_filenames (gchar *dir, gchar *filter, gchar *title) { QStringList fileNames; char **result, **p; QTimer timer; QObject::connect (&timer, SIGNAL (timeout ()), Bridge, SLOT (TimerHook ())); timer.changeInterval (1000 / SP_FOREIGN_FREQ); SPKDEModal = TRUE; fileNames = KFileDialog::getOpenFileNames (QString::fromLocal8Bit((const char *) dir), QString::fromLocal8Bit((const char *) filter), NULL, QString::fromUtf8((const char *) title)); SPKDEModal = FALSE; if (fileNames.isEmpty()) return NULL; p = result = (char **) g_malloc ((fileNames.count() + 1) * sizeof(char *)); for (QStringList::Iterator it = fileNames.begin(); it != fileNames.end(); ++it) { *(p++) = g_strdup ((*it).local8Bit()); } *p = NULL; return result; } char * sp_kde_get_write_filename (gchar *dir, gchar *filter, gchar *title) { QString fileName; QTimer timer; QObject::connect (&timer, SIGNAL (timeout ()), Bridge, SLOT (TimerHook ())); timer.changeInterval (1000 / SP_FOREIGN_FREQ); SPKDEModal = TRUE; fileName = KFileDialog::getSaveFileName (QString::fromLocal8Bit((const char *) dir), QString::fromLocal8Bit((const char *) filter), NULL, QString::fromUtf8((const char *) title)); SPKDEModal = FALSE; if (fileName.isEmpty()) return NULL; return g_strdup (fileName.local8Bit()); } gint sp_kde_process_qt_events(gpointer data) { if (!gtk_event_loop_called_from_qt) QApplication::eventLoop()->processEvents(QEventLoop::AllEvents, 1); return TRUE; } tiemu-3.03-nogdb+dfsg/src/kde/kde.h000066400000000000000000000017271220314353500170430ustar00rootroot00000000000000#ifndef __SP_KDE_H__ #define __SP_KDE_H__ /* * KDE utilities for Sodipodi - adapted to TiEmu * * Authors: * Lauris Kaplinski * Kevin Kofler * * Copyright (C) 2003-2006 Authors * $Id$ * * Released under GNU GPL, read the file 'COPYING' for more information */ #include G_BEGIN_DECLS void sp_kde_init (int argc, char **argv, const char *appName, const char *programName, const char *version, const char *shortDescription, const char *copyrightStatement, const char *homePageAddress, const char *bugsEmailAddress); void sp_kde_finish (void); char *sp_kde_get_open_filename (gchar *dir, gchar *filter, gchar *title); char **sp_kde_get_open_filenames (gchar *dir, gchar *filter, gchar *title); char *sp_kde_get_write_filename (gchar *dir, gchar *filter, gchar *title); char *sp_kde_get_save_filename (unsigned char *dir, unsigned int *spns); gint sp_kde_process_qt_events(gpointer data); G_END_DECLS #endif tiemu-3.03-nogdb+dfsg/src/misc/000077500000000000000000000000001220314353500163105ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/misc/cmdline.c000066400000000000000000000153451220314353500200770ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: cmdline.c 2630 2007-08-23 14:13:14Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * Copyright (c) 2006-2007, Kevin Kofler and Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "intl.h" #include "struct.h" #include "version.h" #include "ti68k_def.h" #include "ti68k_int.h" #include "tie_error.h" #ifdef __WIN32__ #include "registry.h" #include "oleaut.h" #endif char* file_to_send = NULL; /* Display the program version */ int tiemu_version(void) { fprintf(stdout, "TiEmu 3 - Version %s\n", TIEMU_VERSION); fprintf(stdout, " (C) Romain Lievin & Thomas Corvazier 2000-2001\n"); fprintf(stdout, " (C) Romain Lievin 2001-2003\n"); fprintf(stdout, " (C) Julien Blache 2003\n"); fprintf(stdout, " (C) Romain Lievin 2004-2005\n"); fprintf(stdout, " (C) Romain Lievin & Kevin Kofler 2005-2007\n"); fprintf(stdout, " (C) Peter Fernandes 2007\n"); fprintf(stdout, _("THIS PROGRAM COMES WITH ABSOLUTELY NO WARRANTY\n")); fprintf(stdout, _("PLEASE READ THE DOCUMENTATION FOR DETAILS\n")); return 0; } /* Display a short help */ int help(void) { fprintf(stdout, "\n"); tiemu_version(); fprintf(stdout, "usage: tiemu [-options] [image]\n"); fprintf(stdout, "\n"); fprintf(stdout, "-h, --help display this information page and exit\n"); fprintf(stdout, "-v, --version display the version information and exit\n"); fprintf(stdout, "--import import ROM or TIB into repository without loading\n"); fprintf(stdout, "-rom= ROM dump to convert and load (compat)\n"); fprintf(stdout, "-tib= TIB or FLASH upgrade to convert and load (compat)\n"); fprintf(stdout, "-sav= state image to load (compat)\n"); fprintf(stdout, "-send= send specified file to TiEmu\n"); fprintf(stdout, "\n"); fprintf(stdout, "filename can be ROM, TIB or SAV file to load\n"); fprintf(stdout, "\n"); exit(0); return 0; } #define strexact(p1,p2) (!strcmp((p1),(p2))) /* Scan the command line, extract arguments and init variables */ int scan_cmdline(int argc, char **argv) { int cnt; char *p; char msg[80]; int import = 0; char *rom = NULL; char *tib = NULL; char *sav = NULL; char *fn = NULL; //for(cnt = 0; cnt < argc; cnt++) // fprintf(stdout, "%i: [%s]\n", cnt, argv[cnt]); /* Parses list of arguments */ for(cnt=1; cntlpVtbl->Release(tlb); exit(1); } else { tlb->lpVtbl->Release(tlb); fprintf(stdout, "TiEmu OLE Interface successfully registered."); exit(0); } } } if(!stricmp(p, "/UnregServer") || !stricmp(p, "-UnregServer") || !stricmp(p, "--UnregServer")) { if (UnregisterServer(&CLSID_TiEmuOLE, "TiEmu.TiEmuOLE", "TiEmu.TiEmuOLE.1") || UnRegisterTypeLib(&LIBID_TiEmuOLELib, 1, 0, 0, SYS_WIN32)) exit(1); else { fprintf(stdout, "TiEmu OLE Interface successfully unregistered."); exit(0); } } if(!stricmp(p, "/Embedding") || !stricmp(p, "-Embedding") || !stricmp(p, "--Embedding")) { // VB runs it with this option. continue; } #endif if(*p == '-') { // a long option (like --help) p++; } else { fn = g_strdup(p); // a filename //g_free(params.rom_file); //params.rom_file = g_strdup(p); } strcpy(msg, p); if(strexact(msg, "-import")) import = !0; if(strstr(msg, "rom=")) rom = g_strdup(msg + 4); if(strstr(msg, "tib=")) tib = g_strdup(msg + 4); if(strstr(msg, "sav=")) sav = g_strdup(msg + 4); if(strstr(msg, "send=")) file_to_send = g_strdup(msg + 5); if(strexact(msg, "-help") || strexact(msg, "h")) help(); if(strexact(msg, "-version") || strexact(msg, "v")) exit(0); } /* */ if(fn && ti68k_is_a_rom_file(fn)) rom = fn; else if(fn && ti68k_is_a_tib_file(fn)) tib = fn; else if(fn && ti68k_is_a_sav_file(fn)) sav = fn; /* And process them */ if(rom && ti68k_is_a_rom_file(rom)) { gchar *dstname; int err = ti68k_convert_rom_to_image(rom, inst_paths.img_dir, &dstname); if(err) { tiemu_err(err, NULL); exit(-1); } if(import) exit(0); g_free(params.rom_file); params.rom_file = dstname; g_free(params.sav_file); params.sav_file = g_strdup(""); } if(tib && ti68k_is_a_tib_file(tib)) { gchar *dstname; int err = ti68k_convert_tib_to_image(tib, inst_paths.img_dir, &dstname, -1); if(err) { tiemu_err(err, NULL); exit(-1); } if(import) exit(0); g_free(params.rom_file); params.rom_file = dstname; g_free(params.sav_file); params.sav_file = g_strdup(""); } if(sav && !fn) // for compatibility { g_free(params.sav_file); params.sav_file = g_strdup(sav); } if(sav && ti68k_is_a_sav_file(sav) && fn) { gchar *rf, *tf; ti68k_state_parse(sav, &rf, &tf); if(!ti68k_is_a_img_file(rf)) return 0; g_free(params.rom_file); params.rom_file = rf; g_free(params.tib_file); params.tib_file = tf; g_free(params.sav_file); params.sav_file = g_strdup(sav); } return 0; } tiemu-3.03-nogdb+dfsg/src/misc/cmdline.h000066400000000000000000000022711220314353500200760ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: cmdline.h 1695 2005-08-26 21:05:37Z kevinkofler $ */ /* TiEmu - a TI emulator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __MISC_H__ #define __MISC_H__ int help(void); int tiemu_version(void); int scan_cmdline(int argc, char **argv); #endif tiemu-3.03-nogdb+dfsg/src/misc/extern.h000066400000000000000000000030371220314353500177710ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: extern.h 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef EXTERN_H #define EXTERN_H #include #include "struct.h" /* Some linked-list for breakpoints */ extern GList *bkpt_address_list; extern GList *bkpt_access_list; extern GList *bkpt_vector_list; extern GList *bkpt_trap_list; /* Used widget */ extern GtkWidget *debugger_dbox; extern GtkWidget *code_clist; extern GtkWidget *reg_text; extern GtkWidget *data_bkpt_dbox; extern gint selected_row; extern gint data_bkpt_selected_row; extern gint bkpt_encountered; #endif tiemu-3.03-nogdb+dfsg/src/misc/files.c000066400000000000000000000100101220314353500175460ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: files.c 2385 2007-03-12 21:04:20Z roms $ */ /* TiLP - Ti Linking Program * Copyright (C) 1999-2005 Romain Lievin * Copyright (c) 2005, Romain Liévin (tweaked for TiEmu) * * 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. */ /* This file contains utility functions about files management. */ #include #include #include #include #include #include #include #ifdef __WIN32__ #include #endif #include #include #ifdef _MSC_VER # include "../../build/msvc/dirent.h" // for S_ISDIR use #endif #include "dboxes.h" #define _(x) (x) /* File operations */ #ifndef __WIN32__ int tiemu_file_copy(const char *src, const char *dst) { FILE *in, *out; int c; if ((in = fopen(src, "rb")) == NULL) { return -1; } if ((out = fopen(dst, "wb")) == NULL) { return -2; } while (!feof(in)) { c = fgetc(in); if (feof(in)) break; fputc(c, out); } fclose(in); fclose(out); return 0; } #else int tiemu_file_copy(const char *src, const char *dst) { if (!CopyFile(src, dst, FALSE)) return -1; return 0; } #endif int tiemu_file_delete(const char *f) { if(g_unlink(f) < 0) { msg_box1(_("Information"), _("Unable to remove the file!")); return -1; } return 0; } int tiemu_file_move(const char *src, const char *dst) { if(tiemu_file_copy(src, dst) < 0) //if(g_rename(src, dst) < 0) { msg_box1(_("Information"), _("Unable to move file.\n\n")); return -1; } tiemu_file_delete(src); return 0; } int tiemu_file_mkdir(const char *pathname) { #ifdef __WIN32__ if(g_mkdir(pathname, S_IRWXU) < 0) #else if(g_mkdir(pathname, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) #endif { msg_box1(_("Information"), _("Unable to create the directory.\n\n")); return -1; } return 0; } int tiemu_file_exist(const char* filename) { return !access(filename, F_OK); } /* Check for file existence. If file already exists, ask for an action (skip, overwrite or rename). Return 0 if skipped. */ int tiemu_file_check(const char *src, char **dst) { int ret; char buffer[256]; char *dirname; *dst = NULL; if (1) { if (access(src, F_OK) == 0) { sprintf(buffer, _("The file %s already exists.\nOverwrite?"), src); ret = msg_box3(_("Warning"), buffer, _("Overwrite "), _("Rename "), _("Skip ")); switch (ret) { case BUTTON1: *dst = g_strdup(src); return !0; break; case BUTTON2: dirname = msg_entry(_("Rename the file"), _("New name: "), src); if (dirname == NULL) return 0; *dst = g_strdup(dirname); g_free(dirname); return !0; break; case BUTTON3: return 0; break; default: return 0; break; } } else { *dst = g_strdup(src); return !0; } } else { *dst = g_strdup(src); return !0; } return !0; } /* Try and move a file. If file already exists, ask for an action (skip, overwrite or rename) Return 0 if skipped. */ int tiemu_file_move_with_check(const char *src, const char *dst) { char *dst2; if (tiemu_file_check(dst, &dst2)) { if (tiemu_file_move(src, dst2)) { msg_box1(_("Error"), _("Unable to move the temporary file.\n")); g_free(dst2); return 0; } } else { g_free(dst2); return 0; } g_free(dst2); return !0; } tiemu-3.03-nogdb+dfsg/src/misc/files.h000066400000000000000000000026261220314353500175710ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: files.h 1789 2005-09-20 20:06:46Z roms $ */ /* TiLP - Ti Linking Program * Copyright (C) 1999-2005 Romain Lievin * Copyright (c) 2005, Romain Liévin (tweaked for TiEmu) * * 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. */ #ifndef __TILP_FILES__ #define __TILP_FILES__ int tiemu_file_copy(const char *src, const char *dst); int tiemu_file_move(const char *src, const char *dst); int tiemu_file_delete(const char *f); int tiemu_file_mkdir(const char *pathname); int tiemu_file_exist(const char* filename); int tiemu_file_check(const char *src, char **dst); int tiemu_file_move_with_check(const char *src, const char *dst); int tiemu_file_chdir(const char *path); #define tiemu_chdir tiemu_file_chdir #endif tiemu-3.03-nogdb+dfsg/src/misc/gettimeofday.h000066400000000000000000000020541220314353500211430ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: gettimeofday.h 2559 2007-06-24 17:33:54Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2007 Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef _WIN32 #ifndef _MSC_VER #include /* struct timeval */ #endif int gettimeofday(struct timeval *__p, void *__t); #else #include #endif tiemu-3.03-nogdb+dfsg/src/misc/gettimeofday_win32_impl.h000066400000000000000000000035231220314353500232100ustar00rootroot00000000000000/* Copied from kdewin32 Copyright (C) 2003-2005 Jaroslaw Staniek Copyright (C) 2005 Christian Ehrlicher Copyright (C) 2006 Ralf Habacker Modified for TiEmu Copyright (C) 2007 Kevin Kofler 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include /* struct timeval */ #include /* support ancient M$VC versions -- Kevin Kofler */ #ifdef _MSC_VER #define GETTIMEOFDAY_INT64 __int64 #define KDE_SECONDS_SINCE_1601 11644473600I64 #define KDE_USEC_IN_SEC 1000000I64 #else #define GETTIMEOFDAY_INT64 long long #define KDE_SECONDS_SINCE_1601 11644473600LL #define KDE_USEC_IN_SEC 1000000LL #endif int gettimeofday(struct timeval *__p, void *__t) { union { unsigned GETTIMEOFDAY_INT64 ns100; /*time since 1 Jan 1601 in 100ns units */ FILETIME ft; } now; GetSystemTimeAsFileTime (&now.ft); __p->tv_usec = (long) ((now.ns100 / (GETTIMEOFDAY_INT64)10) % KDE_USEC_IN_SEC); __p->tv_sec = (long)(((now.ns100 / (GETTIMEOFDAY_INT64)10 ) / KDE_USEC_IN_SEC) - KDE_SECONDS_SINCE_1601); return (0); } tiemu-3.03-nogdb+dfsg/src/misc/intl.h000066400000000000000000000042731220314353500174350ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: intl.h 2362 2007-02-25 08:47:35Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Contains the right headers for the internationalization library */ #ifndef __TIEMU_INTL__ #define __TIEMU_INTL__ #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_LOCALE_H # include #endif /* * Standard gettext macros. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif /* Taken from Gimp Win32 */ /* #define INIT_LOCALE( domain ) G_STMT_START{ \ gtk_set_locale (); \ setlocale (LC_NUMERIC, "C"); \ bindtextdomain (domain, LOCALEDIR); \ textdomain (domain); \ }G_STMT_END */ #if defined(__WIN32__) && !defined(__MINGW32__) # undef PACKAGE # define PACKAGE "tiemu3" // name of package # define LOCALEDIR "" // place of the translated file #endif #endif tiemu-3.03-nogdb+dfsg/src/misc/logging.c000066400000000000000000000040521220314353500201030ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: printl.c 667 2004-05-03 11:45:01Z tijl $ */ /* tiemu - Tiemu Is an EMUlator * Copyright (C) 2007 Romain Lievin * * 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. */ /* This unit contains logging functions for internal use. */ #include #include #include "logging.h" void tiemu_debug (const gchar *format, ...) { va_list args; va_start (args, format); g_logv (LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format, args); va_end (args); } void tiemu_info (const gchar *format, ...) { va_list args; va_start (args, format); g_logv (LOG_DOMAIN, G_LOG_LEVEL_INFO, format, args); va_end (args); } void tiemu_message (const gchar *format, ...) { va_list args; va_start (args, format); g_logv (LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, format, args); va_end (args); } void tiemu_warning (const gchar *format, ...) { va_list args; va_start (args, format); g_logv (LOG_DOMAIN, G_LOG_LEVEL_WARNING, format, args); va_end (args); } void tiemu_critical (const gchar *format, ...) { va_list args; va_start (args, format); g_logv (LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, format, args); va_end (args); } void tiemu_error (const gchar *format, ...) { va_list args; va_start (args, format); g_logv (LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args); va_end (args); } tiemu-3.03-nogdb+dfsg/src/misc/logging.h000066400000000000000000000025141220314353500201110ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: print.h 522 2004-04-08 10:12:55Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * Copyright (C) 2007 Romain Lievin * * 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. */ /* Domain name logging. */ #ifndef __TIEMU_LOGGING__ #define __TIEMU_LOGGING__ #include #include "intl.h" #define LOG_DOMAIN "tiemu" void tiemu_debug(const gchar *format, ...); void tiemu_info(const gchar *format, ...); void tiemu_message(const gchar *format, ...); void tiemu_warning(const gchar *format, ...); void tiemu_critical(const gchar *format, ...); void tiemu_error(const gchar *format, ...); #endif tiemu-3.03-nogdb+dfsg/src/misc/paths.c000066400000000000000000000132651220314353500176020ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: paths.c 2268 2006-11-06 17:18:51Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * Copyright (c) 2005, Christian Walther (patches for Mac OS-X port) * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Platform independant paths */ #include #include #include #ifdef __WIN32__ #include #include // _mkdir #endif #include #include "struct.h" #include "paths.h" TiemuInstPaths inst_paths; // installation paths /* Called by TiEmu at startup for initializing platform dependant paths. */ #if defined(__LINUX__) || defined(__BSD__) || defined(__MACOSX__) static void init_linux_paths(void) { gchar *tmp; // set base dir inst_paths.base_dir = g_strconcat(SHARE_DIR, G_DIR_SEPARATOR_S, NULL); // set others inst_paths.pixmap_dir = g_strconcat(inst_paths.base_dir, "pixmaps/", NULL); inst_paths.help_dir = g_strconcat(inst_paths.base_dir, "help/", NULL); inst_paths.manpage_dir = g_strconcat(inst_paths.base_dir, "", NULL); inst_paths.skin_dir = g_strconcat(inst_paths.base_dir, "skins/", NULL); inst_paths.glade_dir = g_strconcat(inst_paths.base_dir, "glade/", NULL); inst_paths.home_dir = g_strconcat(g_get_home_dir(), "/", NULL); inst_paths.img_dir = g_strconcat(inst_paths.home_dir, CONF_DIR, "images/", NULL); inst_paths.rom_dir = g_strconcat(inst_paths.base_dir, "pedrom/", NULL); inst_paths.misc_dir = g_strconcat(inst_paths.base_dir, "misc/", NULL); inst_paths.screen_dir = g_strconcat(inst_paths.home_dir, CONF_DIR, "screenshots/", NULL); // create conf folder (~/.tiemu/) tmp = g_strconcat(inst_paths.home_dir, CONF_DIR, NULL); mkdir(tmp, 0777); g_free(tmp); // create image repository mkdir(inst_paths.img_dir, 0777); // create screen repository mkdir(inst_paths.screen_dir, 0777); /* bintextdomain(PACKAGE, "/usr/share/locale"); -> '/usr/share/locale/ fr/LC_MESSAGES/tilp.mo' */ #ifdef ENABLE_NLS inst_paths.locale_dir = g_strconcat(LOCALEDIR, "/", NULL); #endif /* */ #if 0 /* This breaks Insight's path detection when running TiEmu from a relative path. */ // on LINUX systems, HOME directory by default for security reasons chdir(inst_paths.home_dir); #endif /* 0 */ } #endif /* */ #define MINGW_REL "share\\tiemu" /* Same for Win32 */ #if defined(__WIN32__) static void init_win32_paths(void) { HMODULE hModule; DWORD dWord; char *sBuffer; gchar *dirname; gchar *basename; // Init the path for the Windows version by getting the // executable location. hModule = GetModuleHandle("tiemu.exe"); sBuffer = (char *) malloc(4096 * sizeof(char)); dWord = GetModuleFileName(hModule, sBuffer, 4096); dirname = g_path_get_dirname(sBuffer); basename = g_path_get_basename(dirname); // modify exec path like '/target/bin' into '/target/share/tiemu' if we // are running an Msys path (MinGW). Otherwise, do nothing if we are running from a // local path (MSVC & InnoSetup) if((strlen(basename) == 3) && !g_strcasecmp(basename, "bin")) { gchar *token; dirname = g_realloc(dirname, strlen(dirname) + strlen(MINGW_REL) + 1); token = dirname + strlen(dirname) - 3; strcpy(token, MINGW_REL); } // set base dir inst_paths.base_dir = g_strconcat(dirname, "\\", NULL); free(sBuffer); // malloc -> free g_free(dirname); g_free(basename); // set others inst_paths.pixmap_dir = g_strconcat(inst_paths.base_dir, "pixmaps\\", NULL); inst_paths.help_dir = g_strconcat(inst_paths.base_dir, "help\\", NULL); inst_paths.manpage_dir = g_strconcat(inst_paths.base_dir, "", NULL); inst_paths.skin_dir = g_strconcat(inst_paths.base_dir, "skins\\", NULL); inst_paths.glade_dir = g_strconcat(inst_paths.base_dir, "glade\\", NULL); inst_paths.home_dir = g_strconcat(inst_paths.base_dir, "", NULL); inst_paths.img_dir = g_strconcat(inst_paths.base_dir, "images\\", NULL); inst_paths.rom_dir = g_strconcat(inst_paths.base_dir, "pedrom\\", NULL); inst_paths.misc_dir = g_strconcat(inst_paths.base_dir, "misc\\", NULL); inst_paths.screen_dir = g_strconcat(inst_paths.base_dir, "screenshots\\", NULL); // create image repository _mkdir(inst_paths.img_dir); #ifdef ENABLE_NLS inst_paths.locale_dir = g_strconcat(inst_paths.base_dir, "locale\\", NULL); #endif /* */ #if 0 /* This breaks Insight's path detection when running TiEmu from a relative path, at least it does on *nix. */ // on WIN32 systems, local by default _chdir(inst_paths.home_dir); #endif /* 0 */ } #endif /* */ int initialize_paths(void) { #ifdef __WIN32__ init_win32_paths(); #else init_linux_paths(); #endif return 0; } const char *tilp_paths_build_glade(const char *name) { static char *path = NULL; g_free(path); path = g_strconcat(inst_paths.glade_dir, name, NULL); return path; } tiemu-3.03-nogdb+dfsg/src/misc/paths.h000066400000000000000000000046251220314353500176070ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: paths.h 2178 2006-07-30 21:32:36Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2002, Romain Lievin, Julien Blache * Copyright (c) 2003-2004, Romain Liévin * Copyright (c) 2005, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __PATHS_H__ #define __PATHS_H__ /* Platform independant paths */ #if defined(__LINUX__) || defined(__MACOSX__) # define CONF_DIR ".tiemu/" # define INI_FILE "tiemu.ini" # define CACHE_FILE "img_list.txt" # define LOG_FILE "/tmp/tiemu.log" #elif defined(__WIN32__) # define CONF_DIR "" # define INI_FILE "tiemu.ini" # define CACHE_FILE "img_list.txt" # define LOG_FILE "C:\\tiemu.log" #else # define CONF_DIR ".tiemu/" # define INI_FILE "init" # define CACHE_FILE "img_list.txt" # define LOG_FILE "tiemu.log" #endif #if defined(__WIN32__) #undef SHARE_DIR #define SHARE_DIR "" // local path #endif /* Portable installation paths */ typedef struct { char *base_dir; // Windows directory (determined at startup) char *locale_dir; // locale char *manpage_dir; // manpages char *help_dir; // help files char *pixmap_dir; // pixmaps char *img_dir; // images char *skin_dir; // skins char *glade_dir; // GUI files char *home_dir; // $HOME char *rom_dir; // PedRom tib location char *misc_dir; // resource files char *screen_dir; // screenshots char current_dir[1024]; // current working directory } TiemuInstPaths; extern TiemuInstPaths inst_paths; /* Functions */ //int build_home_path(char **path, char *fileaname); int initialize_paths(void); const char *tilp_paths_build_glade(const char *name); #endif tiemu-3.03-nogdb+dfsg/src/misc/rcfile.c000066400000000000000000000574411220314353500177330ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: rcfile.c 2802 2009-01-03 08:44:48Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005-2007, Romain Liévin, Kevin Kofler * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* This unit manage configurable options and config file */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include "intl.h" #include "tilibs.h" #include "paths.h" #include "struct.h" #include "version.h" #include "paths.h" #include "files.h" #include "ti68k_int.h" #include "screenshot.h" #include "logging.h" static char *rc_file; #define MAXCHARS 256 #define DEFAULT_FONT_NAME "Courier" /* Return the path where the config file is stored */ int rcfile_get_path(char **path) { *path = g_strconcat(inst_paths.home_dir, G_DIR_SEPARATOR_S, CONF_DIR, G_DIR_SEPARATOR_S, INI_FILE, NULL); return 0; } /* Print an error msg */ static void stop (int line) { tiemu_warning(_("Configuration file error at line %i."), line); } /* Find a token in a string and returns pointer after token */ static char *find_str(char *s, const char *t) { char *p = strstr(s, t); if(p==NULL) return NULL; else return p+strlen(t); } /* Chech whether a RC file exists */ int rcfile_exist(void) { int result; rcfile_get_path(&rc_file); result = !access(rc_file, F_OK); g_free(rc_file); return result; } /* Delete the RC file */ int rcfile_delete(void) { int result; rcfile_get_path(&rc_file); result = unlink(rc_file); g_free(rc_file); return result; } /* Return TiLP version number */ int rcfile_get_version(char *version) { FILE *txt; char buffer[256]; int i = 0; char *p; strcpy(version, ""); if (rcfile_exist() == 0) { return -1; } rcfile_get_path(&rc_file); txt = fopen(rc_file, "rt"); g_free(rc_file); if (txt == NULL) return -1; for (i = 0; i < 5; i++) if (!fgets(buffer, 256, txt)) { fclose(txt); return -1; } p = strchr(buffer, '='); if (p == NULL) { fclose(txt); return -1; } strcpy(version, ++p); p = strchr(version, '\r'); if (p) *p = '\0'; p = strchr(version, '\n'); if (p) *p = '\0'; if (fclose(txt)) return -1; return 0; } /* Read the RC file and configure the corresponding variables */ void rcfile_read(void) { FILE *txt; char buffer[256]; char *p; int l=0; rcfile_get_path(&rc_file); txt=fopen(rc_file, "rt"); g_free(rc_file); if(txt == NULL) { tiemu_info(_("Configuration file not found, use default values. You can create one by the 'File|Save config' command menu.")); return; } while(!feof(txt)) { if (!fgets(buffer, 256, txt)) break; l++; buffer[strlen(buffer)-1]='\0'; if(!strcmp(buffer, "RC_END")) { fclose(txt); return; } if(buffer[0]=='#' || !strlen(buffer)) continue; /* Common part with TiLP: hardware section */ if ((p = find_str(buffer, "cable_model="))) { linkp.cable_model = ticables_string_to_model(p); continue; } if ((p = find_str(buffer, "cable_port="))) { linkp.cable_port = ticables_string_to_port(p); continue; } if ((p = find_str(buffer, "cable_timeout="))) { sscanf(p, "%i", &(linkp.cable_timeout)); continue; } if ((p = find_str(buffer, "cable_delay="))) { sscanf(p, "%i", &(linkp.cable_delay)); continue; } if( (p=find_str(buffer, "qs_file=")) ) { g_free(options.qs_file); options.qs_file = g_strdup(p); continue; } if( (p=find_str(buffer, "qs_enabled=")) ) { sscanf(p, "%i", &(options.qs_enabled)); continue; } /* GtkTiEmu specific part: emulator section */ if( (p=find_str(buffer, "rom_file=")) ) { g_free(params.rom_file); params.rom_file = g_strdup(p); continue; } if( (p=find_str(buffer, "img_file=")) ) { g_free(params.rom_file); params.rom_file = g_strdup(p); continue; } if( (p=find_str(buffer, "tib_file=")) ) { g_free(params.tib_file); params.tib_file = g_strdup(p); continue; } if( (p=find_str(buffer, "sav_file=")) ) { g_free(params.sav_file); params.sav_file = g_strdup(p); continue; } if( (p=find_str(buffer, "skin=")) ) { sscanf(p, "%i", &(options.skin)); continue; } if( (p=find_str(buffer, "view_mode=")) ) { if(!strcmp(p, "normal")) options.view = VIEW_NORMAL; else if(!strcmp(p, "large")) options.view = VIEW_LARGE; else if(!strcmp(p, "full")) options.view = VIEW_FULL; else if(!strncmp(p, "custom", strlen("custom"))) { //char *q; options.view = VIEW_CUSTOM; p=find_str(buffer, "view_mode=custom"); /*q = strchr(p, ','); if(q) *q = '.';*/ sscanf(p, " (%f)", &(options.scale)); if(options.scale < 0.01) options.scale = 1.0; } else stop(l); continue; } if( (p=find_str(buffer, "cpu_rate=")) ) { sscanf(p, "%u", &(params.cpu_rate)); continue; } if( (p=find_str(buffer, "hw_rate=")) ) { sscanf(p, "%u", &(params.hw_rate)); continue; } if( (p=find_str(buffer, "lcd_rate=")) ) { sscanf(p, "%i", &(params.lcd_rate)); continue; } if( (p=find_str(buffer, "hw_protect=")) ) { sscanf(p, "%i", &(params.hw_protect)); continue; } if( (p=find_str(buffer, "img_format=")) ) { if(!strcmp(p, "jpg")) options2.format=IMG_JPG; else if(!strcmp(p, "png")) options2.format=IMG_PNG; else if(!strcmp(p, "ico")) options2.format=IMG_ICO; else if(!strcmp(p, "eps")) options2.format=IMG_EPS; else if(!strcmp(p, "pdf")) options2.format=IMG_PDF; else if(!strcmp(p, "bmp")) options2.format=IMG_BMP; else stop(l); continue; } if( (p=find_str(buffer, "img_type=")) ) { if(!strcmp(p, "bw")) options2.type = IMG_BW; else if(!strcmp(p, "color")) options2.type = IMG_COL; else stop(l); continue; } if( (p=find_str(buffer, "img_size=")) ) { if(!strcmp(p, "lcd")) options2.size = IMG_LCD; else if(!strcmp(p, "skin")) options2.size = IMG_SKIN; else stop(l); continue; } if( (p=find_str(buffer, "screen_folder=")) ) { g_free(options2.folder); options2.folder = g_strdup(p); continue; } if( (p=find_str(buffer, "screen_file=")) ) { g_free(options2.file); options2.file = g_strdup(p); continue; } if( (p=find_str(buffer, "screen_counter=")) ) { sscanf(p, "%i", &(options2.counter)); continue; } if( (p=find_str(buffer, "screen_shots=")) ) { sscanf(p, "%i", &(options2.shots)); continue; } if( (p=find_str(buffer, "screen_skips=")) ) { sscanf(p, "%i", &(options2.skips)); continue; } if( (p=find_str(buffer, "clipboard=")) ) { if(!strcmp(p, "no")) options2.clipboard = 0; else if(!strcmp(p, "yes")) options2.clipboard = 1; continue; } if( (p=find_str(buffer, "console=")) ) { if(!strcmp(p, "no")) options.console = 0; else if(!strcmp(p, "yes")) options.console = 1; else if(!strcmp(p, "boot")) options.console = 2; else stop(l); continue; } if( (p=find_str(buffer, "kbd_dbg=")) ) { if(!strcmp(p, "no")) options.kbd_dbg = 0; else if(!strcmp(p, "yes")) options.kbd_dbg = 1; } if( (p=find_str(buffer, "fs_type=")) ) { if(!strcmp(p, "old")) options.fs_type = 0; else if(!strcmp(p, "new")) options.fs_type = 1; else if(!strcmp(p, "native") || !strcmp(p, "win32")) options.fs_type = 2; else if(!strcmp(p, "kde")) options.fs_type = 3; } if( (p=find_str(buffer, "skin_file=")) ) { g_free(options.skin_file); options.skin_file = g_strdup(p); continue; } if( (p=find_str(buffer, "keys_file=")) ) { g_free(options.keys_file); options.keys_file = g_strdup(p); continue; } if( (p=find_str(buffer, "calc_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.calc.rect.x), &(options3.calc.rect.y), &(options3.calc.rect.w), &(options3.calc.rect.h), &(options3.calc.minimized), &(options3.calc.closed) ); continue; } if( (p=find_str(buffer, "bkpts_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.bkpts.rect.x), &(options3.bkpts.rect.y), &(options3.bkpts.rect.w), &(options3.bkpts.rect.h), &(options3.bkpts.minimized), &(options3.bkpts.closed) ); continue; } if( (p=find_str(buffer, "code_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.code.rect.x), &(options3.code.rect.y), &(options3.code.rect.w), &(options3.code.rect.h), &(options3.code.minimized), &(options3.code.closed)); continue; } if( (p=find_str(buffer, "mem_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.mem.rect.x), &(options3.mem.rect.y), &(options3.mem.rect.w), &(options3.mem.rect.h), &(options3.mem.minimized), &(options3.mem.closed)); continue; } if( (p=find_str(buffer, "regs_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.regs.rect.x), &(options3.regs.rect.y), &(options3.regs.rect.w), &(options3.regs.rect.h), &(options3.regs.minimized), &(options3.regs.closed)); continue; } if( (p=find_str(buffer, "pclog_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.pclog.rect.x), &(options3.pclog.rect.y), &(options3.pclog.rect.w), &(options3.pclog.rect.h), &(options3.pclog.minimized), &(options3.pclog.closed)); continue; } if( (p=find_str(buffer, "stack_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.stack.rect.x), &(options3.stack.rect.y), &(options3.stack.rect.w), &(options3.stack.rect.h), &(options3.stack.minimized), &(options3.stack.closed)); continue; } if( (p=find_str(buffer, "heap_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.heap.rect.x), &(options3.heap.rect.y), &(options3.heap.rect.w), &(options3.heap.rect.h), &(options3.heap.minimized), &(options3.heap.closed)); continue; } if( (p=find_str(buffer, "iop_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.iop.rect.x), &(options3.iop.rect.y), &(options3.iop.rect.w), &(options3.iop.rect.h), &(options3.iop.minimized), &(options3.iop.closed)); continue; } if( (p=find_str(buffer, "dock_wnd=")) ) { sscanf(p, "(%i;%i;%i;%i;%i;%i)", &(options3.dock.rect.x), &(options3.dock.rect.y), &(options3.dock.rect.w), &(options3.dock.rect.h), &(options3.dock.minimized), &(options3.dock.closed)); continue; } if( (p=find_str(buffer, "wnd_transient=")) ) { if(!strcmp(p, "no")) options3.transient = 0; else if(!strcmp(p, "yes")) options3.transient = 1; else stop(l); continue; } if( (p=find_str(buffer, "dbg_font_type=")) ) { if(!strcmp(p, "default")) options3.dbg_font_type = 0; else if(!strcmp(p, "custom")) options3.dbg_font_type = 1; else stop(l); continue; } if( (p=find_str(buffer, "dbg_font_name=")) ) { g_free(options3.dbg_font_name); options3.dbg_font_name = g_strdup(p); continue; } if( (p=find_str(buffer, "dbg_dock=")) ) { if(!strcmp(p, "no")) options3.dbg_dock = 0; else if(!strcmp(p, "yes")) options3.dbg_dock = 1; else stop(l); continue; } } fclose(txt); return; } /* Write the contents of some variables to the RC file in a plain text format. */ void rcfile_write(void) { FILE *txt; rcfile_get_path(&rc_file); #ifndef __WIN32__ mkdir(CONF_DIR, 0755); #else _mkdir(CONF_DIR); #endif txt=fopen(rc_file, "wt"); g_free(rc_file); if(txt==NULL) { //gif->msg_box(_("Error"), _("Unable to write the config file (~/.tilp or tilp.ini).\n")); return; } fprintf(txt, "# Config file for TiEmu 3\n"); fprintf(txt, "# (C) Romain Lievin & Thomas Corvazier 2000-2001\n"); fprintf(txt, "# (C) Romain Lievin 2001-2003\n"); fprintf(txt, "# (C) Julien Blache 2003\n"); fprintf(txt, "# (C) Romain Liévin 2004-2005\n"); fprintf(txt, "# Warning: any comments that you add to this file WILL be overwritten\n"); fprintf(txt, "\n"); /* Common part with TiLP */ fprintf(txt, "version=%s\n", TIEMU_VERSION); fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# LINK SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# Link cable type\n"); fprintf(txt, "cable_model=%s\n", ticables_model_to_string(linkp.cable_model)); fprintf(txt, "\n"); fprintf(txt, "# Port to use (serial, parallel, ...\n"); fprintf(txt, "cable_port=%s\n", ticables_port_to_string(linkp.cable_port)); fprintf(txt, "\n"); fprintf(txt, "# Timeout value in 0.1 seconds\n"); fprintf(txt, "cable_timeout=%i\n", linkp.cable_timeout); fprintf(txt, "\n"); fprintf(txt, "# Delay value\n"); fprintf(txt, "cable_delay=%i\n", linkp.cable_delay); fprintf(txt, "\n"); fprintf(txt, "# Quick-send feature\n"); fprintf(txt, "qs_file=%s\n", options.qs_file); fprintf(txt, "qs_enabled=%i\n", options.qs_enabled); fprintf(txt, "\n"); /* Specific part to TiEmu */ fprintf(txt, "#\n"); fprintf(txt, "# EMULATOR SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# SKIN file\n"); fprintf(txt, "skin_file=%s\n", options.skin_file); fprintf(txt, "\n"); fprintf(txt, "# KEYS file\n"); fprintf(txt, "keys_file=%s\n", options.keys_file); fprintf(txt, "\n"); fprintf(txt, "# IMG file\n"); fprintf(txt, "img_file=%s\n", params.rom_file); fprintf(txt, "\n"); fprintf(txt, "# TIB file\n"); fprintf(txt, "tib_file=%s\n", params.tib_file); fprintf(txt, "\n"); fprintf(txt, "# SAV file\n"); fprintf(txt, "sav_file=%s\n", params.sav_file); fprintf(txt, "\n"); fprintf(txt, "# Skin (0 for LCD only, 1 with skin)\n"); fprintf(txt, "skin=%i\n", options.skin); fprintf(txt, "\n"); fprintf(txt, "# View mode (normal/large/full/custom)\n"); fprintf(txt, "view_mode="); switch(options.view) { case VIEW_NORMAL: fprintf(txt, "normal\n"); break; case VIEW_LARGE: fprintf(txt, "large\n"); break; case VIEW_FULL: fprintf(txt, "full\n"); break; case VIEW_CUSTOM: fprintf(txt, "custom (%1.2f)\n", options.scale); break; } fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# HARDWARE SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# CPU cycles rate (360000 per 30ms) = OSC1\n"); fprintf(txt, "cpu_rate=%i\n", params.cpu_rate); fprintf(txt, "\n"); fprintf(txt, "# Hardware update rate (625 (hw1) or 1172 (hw2) = OSC2/OSC3\n"); fprintf(txt, "hw_rate=%i\n", params.hw_rate); fprintf(txt, "\n"); fprintf(txt, "# LCD update rate (100 fps max.) = OSC3\n"); fprintf(txt, "lcd_rate=%i\n", params.lcd_rate); fprintf(txt, "\n"); fprintf(txt, "# HW2 protection\n"); fprintf(txt, "hw_protect=%i\n", params.hw_protect); fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# SCREENSHOT SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# Screenshot: image format (jpg, bmp, ico, eps, pdf, bmp)\n"); fprintf(txt, "img_format="); switch(options2.format) { case IMG_JPG: fprintf(txt, "jpg\n"); break; case IMG_PNG: fprintf(txt, "png\n"); break; case IMG_ICO: fprintf(txt, "ico\n"); break; case IMG_EPS: fprintf(txt, "eps\n"); break; case IMG_PDF: fprintf(txt, "pdf\n"); break; case IMG_BMP: fprintf(txt, "bmp\n"); break; } fprintf(txt, "\n"); fprintf(txt, "# Screenshot: image type (bw, color)\n"); fprintf(txt, "img_type=%s\n", (options2.type == IMG_BW) ? "bw" : "color"); fprintf(txt, "\n"); fprintf(txt, "# Screenshot: image size (lcd, skin)\n"); fprintf(txt, "img_size=%s\n", (options2.size == IMG_LCD) ? "lcd" : "skin"); fprintf(txt, "\n"); fprintf(txt, "# Screenshot folder\n"); fprintf(txt, "screen_folder=%s\n", options2.folder); fprintf(txt, "\n"); fprintf(txt, "# Screenshot base file\n"); fprintf(txt, "screen_file=%s\n", options2.file); fprintf(txt, "\n"); fprintf(txt, "# Screenshot counter\n"); fprintf(txt, "screen_counter=%i\n", options2.counter); fprintf(txt, "\n"); fprintf(txt, "# Screenshot shots\n"); fprintf(txt, "screen_shots=%i\n", options2.shots); fprintf(txt, "\n"); fprintf(txt, "# Screenshot skips\n"); fprintf(txt, "screen_skips=%i\n", options2.skips); fprintf(txt, "\n"); fprintf(txt, "# Screenshot copied to clipboard (no, yes)\n"); fprintf(txt, "clipboard="); switch(options2.clipboard) { case 0: fprintf(txt, "no\n"); break; case 1: fprintf(txt, "yes\n"); break; default: fprintf(txt, "no\n"); break; } fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# MISC SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# Console mode (no, yes, boot)\n"); fprintf(txt, "console="); switch(options.console) { case 0: fprintf(txt, "no\n"); break; case 1: fprintf(txt, "yes\n"); break; case 2: fprintf(txt, "boot\n"); break; default: fprintf(txt, "no\n"); break; } fprintf(txt, "\n"); fprintf(txt, "# Display key bindings (keyboard map files)\n"); fprintf(txt, "kbd_dbg=%s\n", options.kbd_dbg ? "yes" : "no"); fprintf(txt, "\n"); fprintf(txt, "# File selector to use (native or old (GTK1/2) or new (GTK 2.4+) or win32 (Windows) or kde (KDE))\n"); fprintf(txt, "fs_type="); switch(options.fs_type) { case 0: fprintf(txt, "old\n"); break; case 1: fprintf(txt, "new\n"); break; case 2: fprintf(txt, "native\n"); break; case 3: fprintf(txt, "kde\n"); break; default: fprintf(txt, "old\n"); break; } fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# DEBUGGER SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# Geometry hints of debugger windows (x,y,w,h,m,c)\n"); fprintf(txt, "calc_wnd=(%i;%i;%i;%i;%i;%i)", options3.calc.rect.x, options3.calc.rect.y, options3.calc.rect.w, options3.calc.rect.h, options3.calc.minimized, options3.calc.closed); fprintf(txt, "\n"); fprintf(txt, "bkpts_wnd=(%i;%i;%i;%i;%i;%i)", options3.bkpts.rect.x, options3.bkpts.rect.y, options3.bkpts.rect.w, options3.bkpts.rect.h, options3.bkpts.minimized, options3.bkpts.closed); fprintf(txt, "\n"); fprintf(txt, "code_wnd=(%i;%i;%i;%i;%i;%i)", options3.code.rect.x, options3.code.rect.y, options3.code.rect.w, options3.code.rect.h, options3.code.minimized, options3.code.closed); fprintf(txt, "\n"); fprintf(txt, "mem_wnd=(%i;%i;%i;%i;%i;%i)", options3.mem.rect.x, options3.mem.rect.y, options3.mem.rect.w, options3.mem.rect.h, options3.mem.minimized, options3.mem.closed); fprintf(txt, "\n"); fprintf(txt, "regs_wnd=(%i;%i;%i;%i;%i;%i)", options3.regs.rect.x, options3.regs.rect.y, options3.regs.rect.w, options3.regs.rect.h, options3.regs.minimized, options3.regs.closed); fprintf(txt, "\n"); fprintf(txt, "pclog_wnd=(%i;%i;%i;%i;%i;%i)", options3.pclog.rect.x, options3.pclog.rect.y, options3.pclog.rect.w, options3.pclog.rect.h, options3.pclog.minimized, options3.pclog.closed); fprintf(txt, "\n"); fprintf(txt, "stack_wnd=(%i;%i;%i;%i;%i;%i)", options3.stack.rect.x, options3.stack.rect.y, options3.stack.rect.w, options3.stack.rect.h, options3.stack.minimized, options3.stack.closed); fprintf(txt, "\n"); fprintf(txt, "heap_wnd=(%i;%i;%i;%i;%i;%i)", options3.heap.rect.x, options3.heap.rect.y, options3.heap.rect.w, options3.heap.rect.h, options3.heap.minimized, options3.heap.closed); fprintf(txt, "\n"); fprintf(txt, "iop_wnd=(%i;%i;%i;%i;%i;%i)", options3.iop.rect.x, options3.iop.rect.y, options3.iop.rect.w, options3.iop.rect.h, options3.iop.minimized, options3.iop.closed); fprintf(txt, "\n"); fprintf(txt, "dock_wnd=(%i;%i;%i;%i;%i;%i)", options3.dock.rect.x, options3.dock.rect.y, options3.dock.rect.w, options3.dock.rect.h, options3.dock.minimized, options3.dock.closed); fprintf(txt, "\n"); fprintf(txt, "wnd_transient=%s\n", options3.transient ? "yes" : "no"); fprintf(txt, "\n"); fprintf(txt, "# Font type\n"); fprintf(txt, "dbg_font_type="); switch(options3.dbg_font_type) { case 0: fprintf(txt, "default\n"); break; case 1: fprintf(txt, "custom\n"); break; default: fprintf(txt, "default\n"); break; } if(options3.dbg_font_name) { fprintf(txt, "dbg_font_name=%s\n", options3.dbg_font_name); fprintf(txt, "\n"); } fprintf(txt, "# Use dock (yes) or multi-window (no)\n"); fprintf(txt, "dbg_dock="); switch(options3.dbg_dock) { case 0: fprintf(txt, "no\n"); break; case 1: fprintf(txt, "yes\n"); break; default: fprintf(txt, "no\n"); break; } fprintf(txt, "\n"); fprintf(txt, "\n"); fprintf(txt, "RC_END\n"); fflush(txt); fclose(txt); } extern void options3_set_default(void); /* Initialize the options structure with some default values */ int rcfile_default() { ti68k_config_load_default(); // m68k options params.rom_file = g_strconcat(inst_paths.img_dir, "", NULL); params.sav_file = g_strdup(""); params.tib_file = g_strdup(""); // emulator options options.skin_file = g_strconcat(inst_paths.skin_dir, "", NULL); options.keys_file = g_strconcat(inst_paths.skin_dir, "", NULL); #if defined(__WIN32__) && defined(_CONSOLE) options.console = !0; #else options.console = 0; #endif #ifdef __IPAQ__ options.skin = 0; #else options.skin = 1; #endif options.view = VIEW_NORMAL; options.scale = 1.0; options.kbd_dbg = 0; options.fs_type = 2; options.qs_file = g_strdup(""); options.qs_enabled = 0; // screenshot options options2.folder = g_strdup(inst_paths.screen_dir); options2.file = g_strdup("screenshot"); options2.counter = 0; options2.type = IMG_COL; options2.format = IMG_PNG; options2.size = IMG_SKIN; options2.shots = 1; options2.skips = 4; options2.clipboard = 0; // debugger options options3_set_default(); return 0; } void options3_set_default(void) { // Optimized for 1024x768 options3.calc.rect.x = 0; options3.calc.rect.y = 0; options3.calc.rect.w = -1; // unused yet options3.calc.rect.h = -1; // unused yet options3.calc.closed = 0; options3.calc.minimized = 0; options3.bkpts.rect.x = 700; options3.bkpts.rect.y = 560; options3.bkpts.rect.w = 320; options3.bkpts.rect.h = 145; options3.bkpts.closed = !0; options3.bkpts.minimized = 0; options3.code.rect.x = 510; options3.code.rect.y = 10; options3.code.rect.w = 320; options3.code.rect.h = 290; options3.code.closed = 0; options3.code.minimized = 0; options3.mem.rect.x = 0; options3.mem.rect.y = 470; options3.mem.rect.w = 520; options3.mem.rect.h = 240; options3.mem.closed = 0; options3.mem.minimized = 0; options3.regs.rect.x = 840; options3.regs.rect.y = 10; options3.regs.rect.w = 180; options3.regs.rect.h = 540; options3.regs.closed = 0; options3.regs.minimized = 0; options3.pclog.rect.x = 260; options3.pclog.rect.y = 20; options3.pclog.rect.w = 160; options3.pclog.rect.h = 240; options3.pclog.closed = !0; options3.pclog.minimized = 0; options3.stack.rect.x = 300; options3.stack.rect.y = 180; options3.stack.rect.w = 160; options3.stack.rect.h = 250; options3.stack.closed = !0; options3.stack.minimized = 0; options3.heap.rect.x = 530; options3.heap.rect.y = 470; options3.heap.rect.w = 160; options3.heap.rect.h = 240; options3.heap.closed = !0; options3.heap.minimized = 0; options3.iop.rect.x = 530; options3.iop.rect.y = 470; options3.iop.rect.w = 360; options3.iop.rect.h = 240; options3.iop.closed = !0; options3.iop.minimized = 0; options3.dock.rect.x = 0; options3.dock.rect.y = 0; options3.dock.rect.w = -1; // unused yet options3.dock.rect.h = -1; // unused yet options3.dock.closed = 0; options3.dock.minimized = 0; options3.transient = 0; options3.dbg_font_type = 0; options3.dbg_font_name = g_strdup(DEFAULT_FONT_NAME); options3.dbg_dock = 1; } tiemu-3.03-nogdb+dfsg/src/misc/rcfile.h000066400000000000000000000024471220314353500177340ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: rcfile.h 1455 2005-05-31 18:38:03Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __RCFILE_H__ #define __RCFILE_H__ int rcfile_get_path(char **path); int rcfile_get_version(char *version); int rcfile_exist(void); int rcfile_delete(void); void rcfile_read(void); void rcfile_write(void); int rcfile_default(void); #endif tiemu-3.03-nogdb+dfsg/src/misc/screenshot.c000066400000000000000000000214631220314353500206370ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: screenshot.c 2620 2007-08-01 05:17:09Z kevinkofler $ */ /* TiEmu - a TI emulator * Copyright (c) 2005, Julien Blache * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "screenshot.h" #include "version.h" #include "struct.h" #include "../core/ti68k_int.h" #include "intl.h" /* * Utility function for the EPS and PDF output */ static gboolean write_compressed_a85_screen(FILE *fp, GdkPixbuf *pixbuf, GError **error) { guchar *ubuf, *cbuf; int cbuflen; int r, i, j; int h, w; int rlen; int ret; z_stream s; int flush; int outlen; int a85count; unsigned long a85tuple; guchar a85block[6]; ubuf = gdk_pixbuf_get_pixels(pixbuf); rlen = gdk_pixbuf_get_rowstride(pixbuf); w = gdk_pixbuf_get_width(pixbuf); h = gdk_pixbuf_get_height(pixbuf); a85count = 0; a85tuple = 0; a85block[5] = '\0'; /* buffer length = length + 0.1 * length + 12 (mandatory) */ cbuflen = outlen = rlen + rlen / 10 + 12; cbuf = g_malloc(cbuflen); if (cbuf == NULL) { g_set_error(error, 0, 0, _("Couldn't allocate memory!")); return FALSE; } s.zalloc = Z_NULL; s.zfree = Z_NULL; s.opaque = Z_NULL; ret = deflateInit(&s, Z_DEFAULT_COMPRESSION); if (ret != Z_OK) { g_set_error(error, 0, 0, _("zlib init error")); g_free(cbuf); return FALSE; } for (r = 0; r < h; r++) { s.avail_in = w * 3; s.next_in = ubuf; do { s.avail_out = outlen; s.next_out = cbuf; flush = (r == (h - 1)) ? Z_FINISH : Z_NO_FLUSH; ret = deflate(&s, flush); if (ret == Z_STREAM_ERROR) { g_set_error(error, 0, 0, _("zlib deflate error")); g_free(cbuf); return FALSE; } cbuflen = outlen - s.avail_out; /* ASCII85 (base 85) encoding */ for (i = 0; i < cbuflen; i++) { switch (a85count) { case 0: a85tuple |= (cbuf[i] << 24); a85count++; break; case 1: a85tuple |= (cbuf[i] << 16); a85count++; break; case 2: a85tuple |= (cbuf[i] << 8); a85count++; break; case 3: a85tuple |= (cbuf[i] << 0); if (a85tuple == 0) { a85block[0] = 'z'; a85block[1] = '\0'; } else { /* The ASCII chars must be written in reverse order, * hence -> a85block[4-j] */ for (j = 0; j < 5; j++) { a85block[4-j] = (unsigned char)(a85tuple % 85 + '!'); a85tuple /= 85; } } fprintf(fp, "%s", a85block); a85count = 0; a85tuple = 0; break; default: break; } if ((i > 0) && (i % 32 == 0)) { fprintf(fp, "\n"); } } } while (s.avail_out == 0); ubuf += rlen; } if (a85count > 0) { a85count++; for (j = 0; j <= a85count; j++) { a85block[j] = (unsigned char)(a85tuple % 85 + '!'); a85tuple /= 85; } /* Reverse order */ for (j--; j > 0; j--) { fprintf(fp, "%c", a85block[j]); } } /* ASCII85 EOD marker + newline*/ fprintf(fp, "~>\n"); deflateEnd(&s); g_free(cbuf); return TRUE; } /* * Write out an Encapsulated PostScript file. */ gboolean tiemu_screen_write_eps(const gchar *filename, GdkPixbuf *pixbuf, GError **error) { int h, w; FILE *fp; time_t t; gboolean ret; GError *err = NULL; fp = fopen(filename, "wb"); if (fp == NULL) { g_set_error(error, 0, 0, _("Couldn't open destination file for writing!")); return FALSE; } h = gdk_pixbuf_get_height(pixbuf); w = gdk_pixbuf_get_width(pixbuf); time(&t); fprintf(fp, "%%!PS-Adobe-3.0 EPSF-3.0\n"); fprintf(fp, "%%%%Creator: TiEmu %s / PostScript output Copyright (C) 2005 Julien BLACHE\n", TIEMU_VERSION); fprintf(fp, "%%%%Title: TiEmu %s screenshot\n", ti68k_calctype_to_string(tihw.calc_type)); fprintf(fp, "%%%%CreationDate: %s", ctime(&t)); fprintf(fp, "%%%%LanguageLevel: 3\n"); fprintf(fp, "%%%%BoundingBox: 0 0 %d %d\n", w, h); fprintf(fp, "\n"); fprintf(fp, "%d %d scale\n", w, h); fprintf(fp, "%d %d 8 [%d 0 0 -%d 0 %d] currentfile /ASCII85Decode filter /FlateDecode filter false 3 colorimage\n", w, h, w, h, h); ret = write_compressed_a85_screen(fp, pixbuf, &err); if (!ret) { g_propagate_error(error, err); fclose(fp); unlink(filename); return FALSE; } fprintf(fp, "%%%%EOF\n"); fclose(fp); return TRUE; } /* * Write out a PDF file. */ gboolean tiemu_screen_write_pdf(const gchar *filename, GdkPixbuf *pixbuf, GError **error) { int h, w; FILE *fp; long obj5, obj6, obj7, xref, slen, slenp; struct tm *t; time_t tt; gboolean ret; GError *err; fp = fopen(filename, "wb"); if (fp == NULL) { g_set_error(error, 0, 0, _("Couldn't open destination file for writing!")); return FALSE; } h = gdk_pixbuf_get_height(pixbuf); w = gdk_pixbuf_get_width(pixbuf); tt = time(NULL); t = gmtime(&tt); fprintf(fp, "%%PDF-1.5\n"); fprintf(fp, "\n"); fprintf(fp, "1 0 obj\n"); fprintf(fp, " << /Type /Catalog\n"); fprintf(fp, " /Outlines 2 0 R\n"); fprintf(fp, " /Pages 3 0 R\n"); fprintf(fp, " >>\n"); fprintf(fp, "endobj\n"); fprintf(fp, "\n"); fprintf(fp, "2 0 obj\n"); fprintf(fp, " << /Type /Outlines\n"); fprintf(fp, " /Count 0\n"); fprintf(fp, " >>\n"); fprintf(fp, "endobj\n"); fprintf(fp, "\n"); fprintf(fp, "3 0 obj\n"); fprintf(fp, " << /Type /Pages\n"); fprintf(fp, " /Kids [4 0 R]\n"); fprintf(fp, " /Count 1\n"); fprintf(fp, " >>\n"); fprintf(fp, "endobj\n"); fprintf(fp, "\n"); fprintf(fp, "4 0 obj\n"); fprintf(fp, " << /Type /Page\n"); fprintf(fp, " /Parent 3 0 R\n"); fprintf(fp, " /MediaBox [0 0 %d %d]\n", w, h); fprintf(fp, " /Contents 5 0 R\n"); fprintf(fp, " /Resources << /ProcSet 6 0 R >>\n"); fprintf(fp, " >>\n"); fprintf(fp, "endobj\n"); fprintf(fp, "\n"); /* Offset of object 5, for xref */ obj5 = ftell(fp); fprintf(fp, "5 0 obj\n"); fprintf(fp, " << /Length >>\n"); /* Position of the stream length, to be written later on */ slenp = ftell(fp) - 12; fprintf(fp, "stream\n"); /* Start of the stream data */ slen = ftell(fp); fprintf(fp, "q\n"); fprintf(fp, "%d 0 0 %d 0 0 cm\n", w, h); fprintf(fp, "BI\n"); fprintf(fp, " /W %d\n", w); fprintf(fp, " /H %d\n", h); /* RGB, 8 bits per component, ASCIIHex encoding */ fprintf(fp, " /CS /RGB\n"); fprintf(fp, " /BPC 8\n"); fprintf(fp, " /F [/A85 /FlateDecode]\n"); fprintf(fp, "ID\n"); ret = write_compressed_a85_screen(fp, pixbuf, &err); if (!ret) { g_propagate_error(error, err); fclose(fp); unlink(filename); return FALSE; } fprintf(fp, "EI\n"); fprintf(fp, "Q\n"); /* Go back and write the length of the stream */ slen = ftell(fp) - slen - 1; fseek(fp, slenp, SEEK_SET); fprintf(fp, "%lu", slen); fseek(fp, 0L, SEEK_END); fprintf(fp, "endstream\n"); fprintf(fp, "endobj\n"); fprintf(fp, "\n"); /* Offset of object 6, for xref */ obj6 = ftell(fp); fprintf(fp, "6 0 obj\n"); fprintf(fp, " [/PDF]\n"); fprintf(fp, "endobj\n"); fprintf(fp, "\n"); /* Offset of object 7, for xref */ obj7 = ftell(fp); fprintf(fp, "7 0 obj\n"); fprintf(fp, " << /Title (TiEmu %s screenshot)\n", ti68k_calctype_to_string(tihw.calc_type)); fprintf(fp, " /Creator (TiEmu / PDF output Copyright (C) 2005 Julien BLACHE)\n"); fprintf(fp, " /Producer (TiEmu %s)\n", TIEMU_VERSION); fprintf(fp, " /CreationDate (D:%04d%02d%02d%02d%02d%02d+00'00')\n", 1900 + t->tm_year, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec); fprintf(fp, " >>\n"); fprintf(fp, "endobj\n"); fprintf(fp, "\n"); /* Offset of xref, for startxref below */ xref = ftell(fp); fprintf(fp, "xref\n"); fprintf(fp, "0 8\n"); fprintf(fp, "0000000000 65535 f \n"); fprintf(fp, "0000000010 00000 n \n"); fprintf(fp, "0000000094 00000 n \n"); fprintf(fp, "0000000153 00000 n \n"); fprintf(fp, "0000000229 00000 n \n"); fprintf(fp, "%010lu 00000 n \n", obj5); fprintf(fp, "%010lu 00000 n \n", obj6); fprintf(fp, "%010lu 00000 n \n", obj7); fprintf(fp, "\n"); fprintf(fp, "trailer\n"); fprintf(fp, " << /Size 8\n"); fprintf(fp, " /Root 1 0 R\n"); fprintf(fp, " /Info 7 0 R\n"); fprintf(fp, " >>\n"); fprintf(fp, "startxref\n"); fprintf(fp, "%lu\n", xref); fprintf(fp, "%%%%EOF\n"); fclose(fp); return TRUE; } tiemu-3.03-nogdb+dfsg/src/misc/screenshot.h000066400000000000000000000034301220314353500206360ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: screenshot.h 2190 2006-08-03 15:29:55Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __SCREENSHOT__ #define __SCREENSHOT__ #include #define IMG_XPM 1 // unsupported by PixBuf #define IMG_PCX 2 // unsupported #define IMG_JPG 3 // supported by PixBuf #define IMG_PNG 4 // supported #define IMG_BMP 5 // supported #define IMG_ICO 6 // supported #define IMG_EPS 7 // unsupported, custom code #define IMG_PDF 8 // unsupported, custom code #define IMG_TYPE 64 #define IMG_COL (IMG_TYPE+1) #define IMG_BW (IMG_TYPE+2) #define IMG_SIZE 128 #define IMG_LCD (IMG_SIZE+1) #define IMG_SKIN (IMG_SIZE+2) gboolean tiemu_screen_write_eps(const gchar *filename, GdkPixbuf *pixbuf, GError **error); gboolean tiemu_screen_write_pdf(const gchar *filename, GdkPixbuf *pixbuf, GError **error); #endif tiemu-3.03-nogdb+dfsg/src/misc/struct.h000066400000000000000000000045271220314353500200150ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: struct.h 2709 2007-12-13 17:37:31Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef STRUCT_H #define STRUCT_H #ifdef HAVE_CONFIG_H # include #endif #include #include "paths.h" /* Constants */ #define MAXCHARS 256 #define VIEW_NORMAL 1 #define VIEW_LARGE 2 #define VIEW_FULL 3 #define VIEW_CUSTOM 4 /* General options */ typedef struct { gchar* skin_file; gint skin; gint view; gfloat scale; gchar* keys_file; gint kbd_dbg; gint console; gint fs_type; gchar* qs_file; gint qs_enabled; gchar* kp_rec_file; gint kp_rec_enabled; gchar* kp_ply_file; gint kp_ply_enabled; } TieOptions; /* Screen capture options */ typedef struct { int format; int type; int size; char* file; int counter; char* folder; int shots; int skips; int clipboard; } ScrOptions; /* Debugger options for windows size and placement */ typedef struct { int x; int y; int w; int h; } GdkRect; typedef struct { GdkRect rect; gint minimized; gint closed; } WinState; typedef struct { WinState bkpts; WinState code; WinState mem; WinState regs; WinState pclog; WinState stack; WinState heap; WinState iop; WinState dock; gint transient; WinState calc; gint dbg_font_type; gchar* dbg_font_name; gint dbg_dock; } DbgOptions; extern TieOptions options; extern ScrOptions options2; extern DbgOptions options3; #endif tiemu-3.03-nogdb+dfsg/src/misc/tie_error.c000066400000000000000000000036301220314353500204500ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: tie_error.c 2372 2007-02-25 21:43:23Z roms $ */ /* TiEmu - Tiemu Is an EMUlator * * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include "tilibs.h" #include "intl.h" #include "logging.h" #include "dboxes.h" #include "ti68k_int.h" /* This function can take 2 parameters: - an error to translate or 0 - a pure message or NULL */ int tiemu_err(int err_code, char *err_str) { int err = err_code; char *s = NULL; if(!err_code && !err_str) return 0; if(err_code) { /* Retrieve the error message */ err = ticables_error_get(err, &s); if (err) { //free(s); err = tifiles_error_get(err, &s); if (err) { //free(s); err = ticalcs_error_get(err, &s); if (err) { // next level: error for TiEmu //free(s); err = ti68k_error_get(err, &s); } } } } else if(err_str) { s = strdup(err_str); } tiemu_warning("%s", s); msg_box1(_("Error"), s); //free(s); return err_code; } tiemu-3.03-nogdb+dfsg/src/misc/tie_error.h000066400000000000000000000023161220314353500204550ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: tie_error.h 2368 2007-02-25 20:20:38Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __TIEMU_ERROR__ #define __TIEMU_ERROR__ int tiemu_err(int err_code, char *err_str); #define handle_error() { if(err) tiemu_err(err, NULL); } #endif tiemu-3.03-nogdb+dfsg/src/misc/version.h000066400000000000000000000030011220314353500201400ustar00rootroot00000000000000/* Hey EMACS -*- linux-c -*- */ /* $Id: version.h 2820 2009-05-03 14:07:15Z roms $ */ /* TiEmu - a TI emulator * Copyright (c) 2000-2001, Thomas Corvazier, Romain Lievin * Copyright (c) 2001-2003, Romain Lievin * Copyright (c) 2003, Julien Blache * Copyright (c) 2004, Romain Liévin * Copyright (c) 2005, Romain Liévin * * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef VERSION_H #define VERSION_H #ifdef HAVE_CONFIG_H # include #endif /* This file contains version number and library requirements. */ #ifdef __WIN32__ # define TIEMU_VERSION "3.03" // For Win32 #else # define TIEMU_VERSION VERSION #endif #define TIEMU_REQUIRES_LIBCABLES_VERSION "1.3.0" #define TIEMU_REQUIRES_LIBCALCS_VERSION "1.0.7" #define TIEMU_REQUIRES_LIBFILES_VERSION "1.0.7" #define TIEMU_REQUIRES_LIBCONV_VERSION "1.0.4" #endif tiemu-3.03-nogdb+dfsg/src/sound/000077500000000000000000000000001220314353500165055ustar00rootroot00000000000000tiemu-3.03-nogdb+dfsg/src/sound/audio.c000066400000000000000000000037061220314353500177600ustar00rootroot00000000000000/*Sound capability library for TI-Emu Copyright (C) 2007 Peter Fernandes supersonicandtails@gmail.com Copyright (C) 2007 Kevin Kofler 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "audio.h" #include "stream.h" #include "dboxes.h" int audio_isactive; int audioerr; int mix_volume; char *buffer; SDL_AudioSpec format; //sets up everything for use int audio_init(void) { //initialize SDL for Audio if(SDL_Init(SDL_INIT_AUDIO)<0) { msg_box1(_("Unable to initialize sound"),SDL_GetError()); return -1; } atexit(SDL_Quit); atexit(audio_disable); //set up the audio format format.freq=44100; format.format=AUDIO_S8; format.channels=2; format.samples=2048; format.callback=stream_audio; format.userdata=NULL; audio_isactive=0; return 0; } int audio_enable(void) { if(audio_isactive) return 0; buffer=malloc(BUFFER_SIZE); if(!buffer) { msg_box1(_("Sound Error"),_("Not enough memory")); return -1; } memset(buffer,0,BUFFER_SIZE); bufpos=0; //open the audio device if(SDL_OpenAudio(&format,NULL)<0) { msg_box1(_("Unable to open audio device"),SDL_GetError()); return -1; } audio_isactive=1; //begin streaming audio SDL_PauseAudio(0); return 0; } void audio_disable(void) { if(audio_isactive) { //stop streaming audio SDL_CloseAudio(); audio_isactive=0; free(buffer); } } tiemu-3.03-nogdb+dfsg/src/sound/audio.h000066400000000000000000000027611220314353500177650ustar00rootroot00000000000000/*Sound capability library for TI-Emu Copyright (C) 2007 Peter Fernandes supersonicandtails@gmail.com Copyright (C) 2007 Kevin Kofler 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #ifndef TIEMU_AUDIO_H #define TIEMU_AUDIO_H #include #include #include #include #include #include #include #include #include "logging.h" #define AMP_MAX 127 #define BUFFER_SIZE 8192 extern int audio_isactive; extern int audioerr; extern int mix_volume; extern char *buffer; extern SDL_AudioSpec format; //performs all the sound initialization extern int audio_init(void); //allcates buffer space and opens the audio device. Must be called before push_amplitudes. extern int audio_enable(void); //frees the audio device, stops stream. MUST be called before exiting extern void audio_disable(void); #endif tiemu-3.03-nogdb+dfsg/src/sound/stream.c000066400000000000000000000030611220314353500201440ustar00rootroot00000000000000/*Sound capability library for TI-Emu Copyright (C) 2007 Peter Fernandes supersonicandtails@gmail.com Copyright (C) 2007 Kevin Kofler 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.*/ #include "audio.h" #undef BUFFER_FULL_WARNING int bufpos; void stream_audio(void *unused, Uint8 *stream, int len) { int spill=bufpos-len; if (spill < 0) spill = 0; //mix each playing voice into the audio stream len bytes at a time memcpy(stream,buffer,len); memmove(buffer,buffer+len,spill); memset(buffer+spill,0,bufpos-spill); //reset the buffer bufpos=spill; } void stream_push_amplitudes(char left, char right) { #ifdef BUFFER_FULL_WARNING static int warned=0; #endif SDL_LockAudio(); if(bufpos> %{manifest} find . -type f \ | sed 's,^\.,\%attr(-\,root\,root) ,' >> %{manifest} find . -type l \ | sed 's,^\.,\%attr(-\,root\,root) ,' >> %{manifest} #%pre #%post #%preun #%postun %clean rm -f %{manifest} rm -rf $RPM_BUILD_ROOT %files -f %{manifest} %defattr(-,root,root) #%doc README #%docdir #%config %changelog

    q c #48474B", ",q c #656164", "'q c #57545B", ")q c #57575D", "!q c #69656C", "~q c #4C4A50", "{q c #525155", "]q c #605E63", "^q c #727073", "/q c #545257", "(q c #4B494D", "_q c #434245", ":q c #787279", "r c #ADADBA", ",r c #888997", "'r c #464656", ")r c #4A4D52", "!r c #535561", "~r c #4B4C57", "{r c #555364", "]r c #545267", "^r c #5B5967", "/r c #666569", "(r c #716F73", "_r c #89878B", ":r c #7D7A7C", "s c #878895", ",s c #B7B6C3", "'s c #6C6D7A", ")s c #323440", "!s c #252E35", "~s c #3C3D4B", "{s c #535365", "]s c #696874", "^s c #97979D", "/s c #B7B9C0", "(s c #908E95", "_s c #565467", ":s c #646468", "t c #473F3C", ",t c #969984", "'t c #8B9077", ")t c #ACB295", "!t c #B2B698", "~t c #B6B89A", "{t c #B4B99C", "]t c #A3AC93", "^t c #2B2E2D", "/t c #464551", "(t c #454855", "_t c #5B5A68", ":t c #A2A6B5", "u c #4A494A", ",u c #4C4B4C", "'u c #575655", ")u c #666461", "!u c #7D7965", "~u c #5F5D5C", "{u c #545250", "]u c #9B9568", "^u c #8F8A67", "/u c #898564", "(u c #4C494B", "_u c #7C7862", ":u c #958E66", "v c #747075", ",v c #88858B", "'v c #706E6E", ")v c #777570", "!v c #848288", "~v c #434443", "{v c #3A3A3A", "]v c #2B2B2B", "^v c #1C1E1D", "/v c #171A18", "(v c #3D3F3E", "_v c #1A1C1D", ":v c #2E2E30", "w c #979596", ",w c #57565C", "'w c #6E6C6D", ")w c #56545B", "!w c #57575F", "~w c #615F66", "{w c #5D595F", "]w c #A8A6B1", "^w c #A2A0A7", "/w c #AFADB3", "(w c #99989F", "_w c #8B8A91", ":w c #504E56", "x c #515067", ",x c #6D6C74", "'x c #6E6D6E", ")x c #565757", "!x c #555656", "~x c #69686B", "{x c #767678", "]x c #7E7B7E", "^x c #8D8D8F", "/x c #BDBCBD", "(x c #676466", "_x c #535355", ":x c #56555E", "y c #77767E", ",y c #494756", "'y c #3F404B", ")y c #505056", "!y c #85838B", "~y c #424350", "{y c #20212A", "]y c #32333E", "^y c #4F525E", "/y c #565565", "(y c #535360", "_y c #767785", ":y c #5E5E6B", "z c #989783", ",z c #8D8D75", "'z c #8D927A", ")z c #858D7B", "!z c #676C61", "~z c #868983", "{z c #ACAEAC", "]z c #D2D3D2", "^z c #EBEBEA", "/z c #EDEFED", "(z c #D8D8DA", "_z c #EAE9E9", ":z c #CCCDCD", "A c #464747", ",A c #202020", "'A c #323235", ")A c #333436", "!A c #282929", "~A c #2F558E", "{A c #39629E", "]A c #35609A", "^A c #3C6192", "/A c #3E3C3C", "(A c #424141", "_A c #9F9EA3", ":A c #C3C2C9", "B c #68676B", ",B c #5B5961", "'B c #7C797F", ")B c #878482", "!B c #9E9C9D", "~B c #96939A", "{B c #7C7A80", "]B c #747076", "^B c #9E9DA1", "/B c #646367", "(B c #646267", "_B c #5F5D5F", ":B c #1E1F1F", "C c #959398", ",C c #69686E", "'C c #6D6A71", ")C c #47464F", "!C c #908D95", "~C c #9B99A0", "{C c #89878F", "]C c #68636D", "^C c #676469", "/C c #747175", "(C c #807E82", "_C c #89868B", ":C c #75737B", "D c #5E5F6F", ",D c #58566A", "'D c #605E6D", ")D c #5D5E60", "!D c #2F2F2D", "~D c #292726", "{D c #4C4B4B", "]D c #666367", "^D c #AAACAC", "/D c #959599", "(D c #888788", "_D c #757173", ":D c #5C595B", "E c #565465", ",E c #4F4D69", "'E c #454B5A", ")E c #575E6B", "!E c #4D4B62", "~E c #41434E", "{E c #7E7A80", "]E c #85858F", "^E c #3F4052", "/E c #4E4D61", "(E c #2B2C36", "_E c #5D5D67", ":E c #363841", "F c #AEADB4", ",F c #A7A6AD", "'F c #868488", ")F c #D5D4D5", "!F c #C3C4C8", "~F c #ADAEB1", "{F c #7B7F7E", "]F c #626367", "^F c #3F404E", "/F c #4B4D58", "(F c #757788", "_F c #7F7E84", ":F c #5F5E6B", "G c #2B4D83", ",G c #254A84", "'G c #234A83", ")G c #224780", "!G c #908E93", "~G c #B9B7BC", "{G c #C1C0C2", "]G c #B1AFB5", "^G c #6B6A6C", "/G c #A9A8AE", "(G c #B3B2B7", "_G c #636162", ":G c #B4B1B5", "H c #6D696F", ",H c #666369", "'H c #ACAAB2", ")H c #ADACB5", "!H c #98959B", "~H c #5F6D83", "{H c #BBC3D4", "]H c #9EAAC0", "^H c #91A1BD", "/H c #8199B4", "(H c #767F96", "_H c #89858A", ":H c #191C1A", "I c #2B2827", ",I c #292626", "'I c #464644", ")I c #282626", "!I c #4F5253", "~I c #585B63", "{I c #55565C", "]I c #6E706D", "^I c #A8A7AA", "/I c #7A7A7B", "(I c #494751", "_I c #77757B", ":I c #8A888D", "J c #E0E3E0", ",J c #95949A", "'J c #4E4D60", ")J c #5F5F6D", "!J c #494A59", "~J c #454557", "{J c #3F3F4A", "]J c #5C5C69", "^J c #3E3F51", "/J c #504E61", "(J c #272834", "_J c #31333E", ":J c #3D3E4D", "K c #C4C3C3", ",K c #D8DAD8", "'K c #545363", ")K c #2A2C38", "!K c #827E84", "~K c #93929E", "{K c #3B3B4B", "]K c #48485D", "^K c #252630", "/K c #35353C", "(K c #292C35", "_K c #3E3F50", ":K c #545361", "L c #434747", ",L c #4E4D5C", "'L c #3E4046", ")L c #EDF1ED", "!L c #96959D", "~L c #46464F", "{L c #282936", "]L c #49495B", "^L c #504F64", "/L c #4F4C65", "(L c #555266", "_L c #545264", ":L c #444453", "M c #3E3F4E", ",M c #687080", "'M c #7E7F88", ")M c #75747E", "!M c #474B53", "~M c #252934", "{M c #76798B", "]M c #31343E", "^M c #424050", "/M c #555E6E", "(M c #5B6172", "_M c #697174", ":M c #5F616B", "N c #2F3141", ",N c #8C8C93", "'N c #434451", ")N c #333445", "!N c #262936", "~N c #2F3040", "{N c #474956", "]N c #5F646D", "^N c #525361", "/N c #2A2D3B", "(N c #798092", "_N c #5B5D67", ":N c #40414C", "O c #4E4E5D", ",O c #393943", "'O c #232834", ")O c #232732", "!O c #32373E", "~O c #46484F", "{O c #40444E", "]O c #8A90A6", "^O c #9B9FAF", "/O c #504E5C", "(O c #2E2E3B", "_O c #585D70", ":O c #414553", "P c #3E3F4A", ",P c #393D48", "'P c #474552", ")P c #454451", "!P c #454453", "~P c #2B3039", "{P c #202A2E", "]P c #232B2D", "^P c #2E3034", "/P c #30323A", "(P c #2F3138", "_P c #323439", ":P c #434144", "